From 45d1c814c22a6c116968e5ae20fe7ce0b8ef4b83 Mon Sep 17 00:00:00 2001 From: Dhvani Patel Date: Sun, 25 Feb 2024 22:56:39 +0000 Subject: [PATCH 01/32] chore: export types --- packages/noise/build/release.d.ts | 11 + packages/noise/build/release.js | 41 +++ packages/noise/build/release.wasm | Bin 0 -> 3251 bytes packages/noise/build/release.wasm.map | 1 + packages/noise/build/release.wat | 468 ++++++++++++++++++++++++++ packages/noise/dist/index.d.ts | 7 + packages/noise/dist/index.js | 2 + packages/noise/dist/index.js.map | 1 + packages/noise/dist/index.mjs | 2 + packages/noise/dist/index.mjs.map | 1 + 10 files changed, 534 insertions(+) create mode 100644 packages/noise/build/release.d.ts create mode 100644 packages/noise/build/release.js create mode 100644 packages/noise/build/release.wasm create mode 100644 packages/noise/build/release.wasm.map create mode 100644 packages/noise/build/release.wat create mode 100644 packages/noise/dist/index.d.ts create mode 100644 packages/noise/dist/index.js create mode 100644 packages/noise/dist/index.js.map create mode 100644 packages/noise/dist/index.mjs create mode 100644 packages/noise/dist/index.mjs.map diff --git a/packages/noise/build/release.d.ts b/packages/noise/build/release.d.ts new file mode 100644 index 0000000000..5c96ceec81 --- /dev/null +++ b/packages/noise/build/release.d.ts @@ -0,0 +1,11 @@ +/** Exported memory */ +export declare const memory: WebAssembly.Memory; +/** + * assembly/perlin/perlin + * @param _x `i32` + * @param _y `i32` + * @param _z `i32` + * @param denom `i32` + * @returns `f64` + */ +export declare function perlin(_x: number, _y: number, _z: number, denom: number): number; diff --git a/packages/noise/build/release.js b/packages/noise/build/release.js new file mode 100644 index 0000000000..c70e086ca6 --- /dev/null +++ b/packages/noise/build/release.js @@ -0,0 +1,41 @@ +async function instantiate(module, imports = {}) { + const adaptedImports = { + env: Object.assign(Object.create(globalThis), imports.env || {}, { + abort(message, fileName, lineNumber, columnNumber) { + // ~lib/builtins/abort(~lib/string/String | null?, ~lib/string/String | null?, u32?, u32?) => void + message = __liftString(message >>> 0); + fileName = __liftString(fileName >>> 0); + lineNumber = lineNumber >>> 0; + columnNumber = columnNumber >>> 0; + (() => { + // @external.js + throw Error(`${message} in ${fileName}:${lineNumber}:${columnNumber}`); + })(); + }, + }), + }; + const { exports } = await WebAssembly.instantiate(module, adaptedImports); + const memory = exports.memory || imports.env.memory; + function __liftString(pointer) { + if (!pointer) return null; + const + end = pointer + new Uint32Array(memory.buffer)[pointer - 4 >>> 2] >>> 1, + memoryU16 = new Uint16Array(memory.buffer); + let + start = pointer >>> 1, + string = ""; + while (end - start > 1024) string += String.fromCharCode(...memoryU16.subarray(start, start += 1024)); + return string + String.fromCharCode(...memoryU16.subarray(start, end)); + } + return exports; +} +export const { + memory, + perlin +} = await (async url => instantiate( + await (async () => { + try { return await globalThis.WebAssembly.compileStreaming(globalThis.fetch(url)); } + catch { return globalThis.WebAssembly.compile(await (await import("node:fs/promises")).readFile(url)); } + })(), { + } +))(new URL("release.wasm", import.meta.url)); diff --git a/packages/noise/build/release.wasm b/packages/noise/build/release.wasm new file mode 100644 index 0000000000000000000000000000000000000000..90efce1141faca0dd119a0339a938f4d1e28e711 GIT binary patch literal 3251 zcmajicX$(J9KiAS?y{O|)38(Ko3zSq#le!%QxK4iEE!6HfGu>8GPO`pTns@$rL|xi zPyvxGWp6~WPKKb!UW&2=2h;DRY2hCqFZtxXyzlS*z2olkJP}EmsfrLnsb(2q$>tCP zlx!uN^Q^2aC9Akj$x@>f&7U^fnlvyyFj5H3qA99o)fA!F9K;(%If`yCr`j_7f#Jz% zLbIj%Q_}ulE+vcV_XqN9k&p=vD2)lT^*UiiN0PD zYU2OB2#+4&ato$mvD)m82&Wzy<%)LeQjuzYv@TVt6j1OjROE(BshN#hNuw5S43%n0 zW2g(?%tkdgTuP<5XSgwxJ>1wzgbzL6syefj>{ww~hQ$erqL{WU_*jl&%*<5`UgnBp zh0kS(hAi4;Z1tF>D3n^E&obX<&GXrAs>U5&xKc^+YNRdhr4gZq zA}o2nh;W3O;&t7PFq9NC=-ytUxQSauH;ewgR71+NGnwXO|Wk zQQ&j9Rj;+Qqg6VkGZ=bHXLw^giNWw${MP)E)40U^pf5ryBrS=%v?bqXF>||BX)Orm zdu^p@&80GIIE@)-HN(8@Wq1iTI@*JwcWK;z4;(3V86nLrwy-91K%D_u9HZXN=_=lZ z(0cC~+Qz_9r2|Kihzo1(vpIPhWt5r5UK*j5q+$2y>MU*0r9(P`p|^DW-)50Jl09J7 zC4+_1NvAn+yZK=*p=6pZOU{n940WM7KkTce#P{ z@jCjV52EoBqVNTt#Q;2l?f3Sv-YwoW}ELhP`+hXK)zF=!e>9gm_#-EnLMA%s@jJh(SvfK*2$DK|6eh z4w#G$_!dv2EEeH&?8K{h5&TArjd&kDu>gaSiqG%~)yV@z;$Hd1z52M_hS}D zV*>7=8+u?LzQNac6ep1YH=3dh)?gE=q7IIt5R0)NWAHcTKt(;|Vm_Y0&&Yuv@8KiV z#S%nd5-Or5ZlN3oVmQ*!86$8E=dcp%kb&p$BmP7ZPT>Z8xPooCfbTIAk=TM&2;wrj z;vu|=^Y{lYT*NRmz*ZbU4Sb5-NWomJMRycoIWjR0528M@VZl4NjVbsIU!gyaAb`hF z4IZ?`ADE7b*nv)X3_qYb@~|53A|J1#FZv)FFChwF;8_g7BiN2#V8?MxLmY;pI$Glm zI4}tJ;SwsqiAvZE8)oA#jK!~L5A&#uU1))4a1%e_ON>G+bVxM83V6{QzvFE*MlUQy zd5p(v_!tY(3d`^$K0q71f~j}_Rq!D?;w{X>Sv-YwoW}ELhP`+hXK)zF=!e>9gm_#- zEnLMA%s@jJh(SvfK*2$DK|6eh4w#G$_!dv2EEeH&?8K{h5hJk?@1rLcU@%hg89u>! zXh_7vID`|pjx4+YEB4@i%))3)z#Vi$5A4G?_!^JmBog38QB`rsE1t4#}oJ&Iq>5>e1y7Kf(T4PMbyMCl*2#_M;ba~1dibxR$?78@Em@`pGd+f z+<*^PuniaRJ!T>jTd)d2Tt-(sgg0>>|G2Q)_>RtsZ^M_1|zW35N8s8M5H zImvLQ&?Br0<1iu3gmKQJ*EMg>IJ9GH2Xjfr3dzGTikr?XhwvF-Bh&aX@Czd^CX{+% zjP5o2RmKD^OEQ-yfv7+zb{r4KNERLE&P*Q_807Dml#!8~Hnc~#4rSvL0{-Ftq)dPO M82+lnrzU0m3na$VW&i*H literal 0 HcmV?d00001 diff --git a/packages/noise/build/release.wasm.map b/packages/noise/build/release.wasm.map new file mode 100644 index 0000000000..a8a0f6b916 --- /dev/null +++ b/packages/noise/build/release.wasm.map @@ -0,0 +1 @@ +{"version":3,"sources":["~lib/rt/common.ts","~lib/rt/tlsf.ts","~lib/shared/typeinfo.ts","~lib/rt/itcms.ts","assembly/perlin.ts","~lib/util/math.ts","~lib/util/number.ts","~lib/util/string.ts","~lib/math.ts","~lib/shared/runtime.ts","~lib/util/sort.ts","~lib/array.ts","~lib/util/error.ts"],"names":[],"mappings":"yGWiHI,AAAI,EAAc,AAAK,SAAmC,eAO1D,AANoB,MAAkB,EAAgB,6CPvDhD,EAAO,uBAEJ,EAAI,KAEJ,AAAK,EAAJ,KAED,EAAI,KAEJ,AAAC,GAAI,KAEL,EAAI,KAEJ,AAAK,EAAJ,KAED,EAAI,KAEJ,AAAC,GAAI,KAEL,EAAI,KAEJ,AAAK,EAAJ,KAED,EAAI,KAEJ,AAAC,GAAI,KAEL,EAAI,KAEJ,AAAK,EAAJ,KAED,EAAI,KAEJ,AAAC,GAAI,KAhChB,iEAnCiB,AAfF,AAAe,AALjB,GAAU,aAKa,QAed,AAdP,AAAe,AALjB,GAAU,UAKa,WAepB,MAAE,IAAK,AAdR,AAAe,AALjB,GAAU,UAKa,WAepB,MAAE,EAAI,KAAK,OACZ,MAAE,EAAI,KAAK,OACV,MAAE,IAAK,OACP,MAAE,EAAI,KAAK,OAOV,MAAE,IAAK,AAtBxB,EAAK,KAsBsB,AArB3B,EAAK,KAqByB,AApB9B,EAAK,WAoBkC,QAmB5B,AApCI,AAgCR,AAhCa,EAgCT,GAAI,GAAK,EAAK,EAAI,UAAI,WAAM,aAfE,IAAK,EAAI,YAAG,EAAG,IAmBpC,SAlBH,MAAE,IAAK,EAAG,EAAI,YAAG,QAAS,QAkBhC,AAnCI,AA+BR,AA/Ba,EA+BT,GAAI,GAAK,EAAK,EAAI,UAAI,WAAM,eAI5B,EAlBkC,IAAK,EAAO,EAAO,IAkB5C,cAdH,MAAE,EAAK,KAAI,EAAG,EAAG,EAAI,kBAAS,QAcpC,EAdsC,EAAK,KAAI,EAAO,EAAG,IAchD,SAbH,MAAE,EAAK,KAAI,EAAG,EAAO,QAAa,QAaxC,AAJJ,AA9Ba,EA8BT,GAAI,GAAK,EAAK,EAAI,UAAI,WAAM,aAI5B,MAb0C,EAAK,KAAI,EAAO,EAAO,IAaxD,eARR,UAAK","sourceRoot":"./release","sourcesContent":["// Alignment guarantees\n\n// @ts-ignore: decorator\n@inline export const AL_BITS: u32 = 4; // 16 bytes to fit up to v128\n// @ts-ignore: decorator\n@inline export const AL_SIZE: usize = 1 << AL_BITS;\n// @ts-ignore: decorator\n@inline export const AL_MASK: usize = AL_SIZE - 1;\n\n// Extra debugging\n\n// @ts-ignore: decorator\n@inline export const DEBUG = true;\n// @ts-ignore: decorator\n@inline export const TRACE = false;\n// @ts-ignore: decorator\n@inline export const RTRACE = isDefined(ASC_RTRACE);\n// @ts-ignore: decorator\n@inline export const PROFILE = isDefined(ASC_PROFILE);\n\n// Memory manager\n\n// ╒════════════ Memory manager block layout (32-bit) ═════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤\n// │ MM info │ -4\n// ╞>ptr═══════════════════════════════════════════════════════════╡\n// │ ... │\n@unmanaged export class BLOCK {\n /** Memory manager info. */\n mmInfo: usize;\n}\n\n/** Overhead of a memory manager block. */\n// @ts-ignore: decorator\n@inline export const BLOCK_OVERHEAD: usize = offsetof();\n\n/** Maximum size of a memory manager block's payload. */\n// @ts-ignore: decorator\n@inline export const BLOCK_MAXSIZE: usize = (1 << 30) - BLOCK_OVERHEAD;\n\n// Garbage collector\n\n// ╒══════════ Garbage collector object layout (32-bit) ═══════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤\n// │ Memory manager block │ -20\n// ╞═══════════════════════════════════════════════════════════════╡\n// │ GC info │ -16\n// ├───────────────────────────────────────────────────────────────┤\n// │ GC info │ -12\n// ├───────────────────────────────────────────────────────────────┤\n// │ RT id │ -8\n// ├───────────────────────────────────────────────────────────────┤\n// │ RT size │ -4\n// ╞>ptr═══════════════════════════════════════════════════════════╡\n// │ ... │\n@unmanaged export class OBJECT extends BLOCK {\n /** Garbage collector info. */\n gcInfo: u32;\n /** Garbage collector info. */\n gcInfo2: u32;\n /** Runtime class id. */\n rtId: u32;\n /** Runtime object size. */\n rtSize: u32;\n}\n\n/** Overhead of a garbage collector object. Excludes memory manager block overhead. */\n// @ts-ignore: decorator\n@inline export const OBJECT_OVERHEAD: usize = (offsetof() - BLOCK_OVERHEAD + AL_MASK) & ~AL_MASK;\n\n/** Maximum size of a garbage collector object's payload. */\n// @ts-ignore: decorator\n@inline export const OBJECT_MAXSIZE: usize = BLOCK_MAXSIZE - OBJECT_OVERHEAD;\n\n/** Total of memory manager and garbage collector overhead. */\n// @ts-ignore: decorator\n@inline export const TOTAL_OVERHEAD: usize = BLOCK_OVERHEAD + OBJECT_OVERHEAD;\n","import { AL_BITS, AL_SIZE, AL_MASK, DEBUG, BLOCK, BLOCK_OVERHEAD, BLOCK_MAXSIZE } from \"./common\";\nimport { oninit, onalloc, onresize, onmove, onfree } from \"./rtrace\";\nimport { E_ALLOCATION_TOO_LARGE } from \"../util/error\";\n\n// === The TLSF (Two-Level Segregate Fit) memory allocator ===\n// see: http://www.gii.upv.es/tlsf/\n\n// - `ffs(x)` is equivalent to `ctz(x)` with x != 0\n// - `fls(x)` is equivalent to `sizeof(x) * 8 - clz(x) - 1`\n\n// ╒══════════════ Block size interpretation (32-bit) ═════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┼─┴─┴─┴─╫─┴─┴─┴─┤\n// │ | FL │ SB = SL + AL │ ◄─ usize\n// └───────────────────────────────────────────────┴───────╨───────┘\n// FL: first level, SL: second level, AL: alignment, SB: small block\n\n// @ts-ignore: decorator\n@inline const SL_BITS: u32 = 4;\n// @ts-ignore: decorator\n@inline const SL_SIZE: u32 = 1 << SL_BITS;\n\n// @ts-ignore: decorator\n@inline const SB_BITS: u32 = SL_BITS + AL_BITS;\n// @ts-ignore: decorator\n@inline const SB_SIZE: u32 = 1 << SB_BITS;\n\n// @ts-ignore: decorator\n@inline const FL_BITS: u32 = 31 - SB_BITS;\n\n// [00]: < 256B (SB) [12]: < 1M\n// [01]: < 512B [13]: < 2M\n// [02]: < 1K [14]: < 4M\n// [03]: < 2K [15]: < 8M\n// [04]: < 4K [16]: < 16M\n// [05]: < 8K [17]: < 32M\n// [06]: < 16K [18]: < 64M\n// [07]: < 32K [19]: < 128M\n// [08]: < 64K [20]: < 256M\n// [09]: < 128K [21]: < 512M\n// [10]: < 256K [22]: <= 1G - OVERHEAD\n// [11]: < 512K\n// VMs limit to 2GB total (currently), making one 1G block max (or three 512M etc.) due to block overhead\n\n// Tags stored in otherwise unused alignment bits\n\n// @ts-ignore: decorator\n@inline const FREE: usize = 1 << 0;\n// @ts-ignore: decorator\n@inline const LEFTFREE: usize = 1 << 1;\n// @ts-ignore: decorator\n@inline const TAGS_MASK: usize = FREE | LEFTFREE; // <= AL_MASK\n\n// ╒════════════════════ Block layout (32-bit) ════════════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┼─┼─┤ ┐\n// │ size │L│F│ ◄─┐ info overhead\n// ╞>ptr═══════════════════════════════════════════════════════╧═╧═╡ │ ┘\n// │ if free: ◄ prev │ ◄─┤ usize\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ if free: next ► │ ◄─┤\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ ... │ │ >= 0\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ if free: back ▲ │ ◄─┘\n// └───────────────────────────────────────────────────────────────┘ >= MIN SIZE\n// F: FREE, L: LEFTFREE\n@unmanaged export class Block extends BLOCK {\n\n /** Previous free block, if any. Only valid if free, otherwise part of payload. */\n prev: Block | null;\n /** Next free block, if any. Only valid if free, otherwise part of payload. */\n next: Block | null;\n\n // If the block is free, there is a 'back'reference at its end pointing at its start.\n}\n\n// Block constants. A block must have a minimum size of three pointers so it can hold `prev`,\n// `next` and `back` if free.\n\n// @ts-ignore: decorator\n@inline const BLOCK_MINSIZE: usize = ((3 * sizeof() + BLOCK_OVERHEAD + AL_MASK) & ~AL_MASK) - BLOCK_OVERHEAD; // prev + next + back\n// @ts-ignore: decorator\n// @inline const BLOCK_MAXSIZE: usize = 1 << (FL_BITS + SB_BITS - 1); // exclusive, lives in common.ts\n\n/** Gets the left block of a block. Only valid if the left block is free. */\n// @ts-ignore: decorator\n@inline function GETFREELEFT(block: Block): Block {\n return load(changetype(block) - sizeof());\n}\n\n/** Gets the right block of a block by advancing to the right by its size. */\n// @ts-ignore: decorator\n@inline function GETRIGHT(block: Block): Block {\n return changetype(changetype(block) + BLOCK_OVERHEAD + (block.mmInfo & ~TAGS_MASK));\n}\n\n// ╒═════════════════════ Root layout (32-bit) ════════════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤ ┐\n// │ 0 | flMap S│ ◄────┐\n// ╞═══════════════════════════════════════════════════════════════╡ │\n// │ slMap[0] S │ ◄─┐ │\n// ├───────────────────────────────────────────────────────────────┤ │ │\n// │ slMap[1] │ ◄─┤ │\n// ├───────────────────────────────────────────────────────────────┤ u32 │\n// │ slMap[22] │ ◄─┘ │\n// ╞═══════════════════════════════════════════════════════════════╡ usize\n// │ head[0] │ ◄────┤\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ ... │ ◄────┤\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ head[367] │ ◄────┤\n// ╞═══════════════════════════════════════════════════════════════╡ │\n// │ tail │ ◄────┘\n// └───────────────────────────────────────────────────────────────┘ SIZE ┘\n// S: Small blocks map\n@unmanaged class Root {\n /** First level bitmap. */\n flMap: usize;\n}\n\n// Root constants. Where stuff is stored inside of the root structure.\n\n// @ts-ignore: decorator\n@inline const SL_START: usize = sizeof();\n// @ts-ignore: decorator\n@inline const SL_END: usize = SL_START + (FL_BITS << alignof());\n// @ts-ignore: decorator\n@inline const HL_START: usize = (SL_END + AL_MASK) & ~AL_MASK;\n// @ts-ignore: decorator\n@inline const HL_END: usize = HL_START + FL_BITS * SL_SIZE * sizeof();\n// @ts-ignore: decorator\n@inline const ROOT_SIZE: usize = HL_END + sizeof();\n\n// @ts-ignore: decorator\n@lazy export var ROOT: Root;\n\n/** Gets the second level map of the specified first level. */\n// @ts-ignore: decorator\n@inline function GETSL(root: Root, fl: usize): u32 {\n return load(\n changetype(root) + (fl << alignof()),\n SL_START\n );\n}\n\n/** Sets the second level map of the specified first level. */\n// @ts-ignore: decorator\n@inline function SETSL(root: Root, fl: usize, slMap: u32): void {\n store(\n changetype(root) + (fl << alignof()),\n slMap,\n SL_START\n );\n}\n\n/** Gets the head of the free list for the specified combination of first and second level. */\n// @ts-ignore: decorator\n@inline function GETHEAD(root: Root, fl: usize, sl: u32): Block | null {\n return load(\n changetype(root) + (((fl << SL_BITS) + sl) << alignof()),\n HL_START\n );\n}\n\n/** Sets the head of the free list for the specified combination of first and second level. */\n// @ts-ignore: decorator\n@inline function SETHEAD(root: Root, fl: usize, sl: u32, head: Block | null): void {\n store(\n changetype(root) + (((fl << SL_BITS) + sl) << alignof()),\n head,\n HL_START\n );\n}\n\n/** Gets the tail block.. */\n// @ts-ignore: decorator\n@inline function GETTAIL(root: Root): Block {\n return load(\n changetype(root),\n HL_END\n );\n}\n\n/** Sets the tail block. */\n// @ts-ignore: decorator\n@inline function SETTAIL(root: Root, tail: Block): void {\n store(\n changetype(root),\n tail,\n HL_END\n );\n}\n\n/** Inserts a previously used block back into the free list. */\nfunction insertBlock(root: Root, block: Block): void {\n if (DEBUG) assert(block); // cannot be null\n var blockInfo = block.mmInfo;\n if (DEBUG) assert(blockInfo & FREE); // must be free\n\n var right = GETRIGHT(block);\n var rightInfo = right.mmInfo;\n\n // merge with right block if also free\n if (rightInfo & FREE) {\n removeBlock(root, right);\n block.mmInfo = blockInfo = blockInfo + BLOCK_OVERHEAD + (rightInfo & ~TAGS_MASK); // keep block tags\n right = GETRIGHT(block);\n rightInfo = right.mmInfo;\n // 'back' is set below\n }\n\n // merge with left block if also free\n if (blockInfo & LEFTFREE) {\n let left = GETFREELEFT(block);\n let leftInfo = left.mmInfo;\n if (DEBUG) assert(leftInfo & FREE); // must be free according to right tags\n removeBlock(root, left);\n block = left;\n block.mmInfo = blockInfo = leftInfo + BLOCK_OVERHEAD + (blockInfo & ~TAGS_MASK); // keep left tags\n // 'back' is set below\n }\n\n right.mmInfo = rightInfo | LEFTFREE;\n // reference to right is no longer used now, hence rightInfo is not synced\n\n // we now know the size of the block\n var size = blockInfo & ~TAGS_MASK;\n if (DEBUG) assert(size >= BLOCK_MINSIZE); // must be a valid size\n if (DEBUG) assert(changetype(block) + BLOCK_OVERHEAD + size == changetype(right)); // must match\n\n // set 'back' to itself at the end of block\n store(changetype(right) - sizeof(), block);\n\n // mapping_insert\n var fl: usize, sl: u32;\n if (size < SB_SIZE) {\n fl = 0;\n sl = (size >> AL_BITS);\n } else {\n const inv: usize = sizeof() * 8 - 1;\n let boundedSize = min(size, BLOCK_MAXSIZE);\n fl = inv - clz(boundedSize);\n sl = ((boundedSize >> (fl - SL_BITS)) ^ (1 << SL_BITS));\n fl -= SB_BITS - 1;\n }\n if (DEBUG) assert(fl < FL_BITS && sl < SL_SIZE); // fl/sl out of range\n\n // perform insertion\n var head = GETHEAD(root, fl, sl);\n block.prev = null;\n block.next = head;\n if (head) head.prev = block;\n SETHEAD(root, fl, sl, block);\n\n // update first and second level maps\n root.flMap |= (1 << fl);\n SETSL(root, fl, GETSL(root, fl) | (1 << sl));\n}\n\n/** Removes a free block from internal lists. */\nfunction removeBlock(root: Root, block: Block): void {\n var blockInfo = block.mmInfo;\n if (DEBUG) assert(blockInfo & FREE); // must be free\n var size = blockInfo & ~TAGS_MASK;\n if (DEBUG) assert(size >= BLOCK_MINSIZE); // must be valid\n\n // mapping_insert\n var fl: usize, sl: u32;\n if (size < SB_SIZE) {\n fl = 0;\n sl = (size >> AL_BITS);\n } else {\n const inv: usize = sizeof() * 8 - 1;\n let boundedSize = min(size, BLOCK_MAXSIZE);\n fl = inv - clz(boundedSize);\n sl = ((boundedSize >> (fl - SL_BITS)) ^ (1 << SL_BITS));\n fl -= SB_BITS - 1;\n }\n if (DEBUG) assert(fl < FL_BITS && sl < SL_SIZE); // fl/sl out of range\n\n // link previous and next free block\n var prev = block.prev;\n var next = block.next;\n if (prev) prev.next = next;\n if (next) next.prev = prev;\n\n // update head if we are removing it\n if (block == GETHEAD(root, fl, sl)) {\n SETHEAD(root, fl, sl, next);\n\n // clear second level map if head is empty now\n if (!next) {\n let slMap = GETSL(root, fl);\n SETSL(root, fl, slMap &= ~(1 << sl));\n\n // clear first level map if second level is empty now\n if (!slMap) root.flMap &= ~(1 << fl);\n }\n }\n // note: does not alter left/back because it is likely that splitting\n // is performed afterwards, invalidating those changes. so, the caller\n // must perform those updates.\n}\n\n/** Searches for a free block of at least the specified size. */\nfunction searchBlock(root: Root, size: usize): Block | null {\n // size was already asserted by caller\n\n // mapping_search\n var fl: usize, sl: u32;\n if (size < SB_SIZE) {\n fl = 0;\n sl = (size >> AL_BITS);\n } else {\n const halfMaxSize = BLOCK_MAXSIZE >> 1; // don't round last fl\n const inv: usize = sizeof() * 8 - 1;\n const invRound = inv - SL_BITS;\n let requestSize = size < halfMaxSize\n ? size + (1 << (invRound - clz(size))) - 1\n : size;\n fl = inv - clz(requestSize);\n sl = ((requestSize >> (fl - SL_BITS)) ^ (1 << SL_BITS));\n fl -= SB_BITS - 1;\n }\n if (DEBUG) assert(fl < FL_BITS && sl < SL_SIZE); // fl/sl out of range\n\n // search second level\n var slMap = GETSL(root, fl) & (~0 << sl);\n var head: Block | null = null;\n if (!slMap) {\n // search next larger first level\n let flMap = root.flMap & (~0 << (fl + 1));\n if (!flMap) {\n head = null;\n } else {\n fl = ctz(flMap);\n slMap = GETSL(root, fl);\n if (DEBUG) assert(slMap); // can't be zero if fl points here\n head = GETHEAD(root, fl, ctz(slMap));\n }\n } else {\n head = GETHEAD(root, fl, ctz(slMap));\n }\n return head;\n}\n\n/** Prepares the specified block before (re-)use, possibly splitting it. */\nfunction prepareBlock(root: Root, block: Block, size: usize): void {\n // size was already asserted by caller\n\n var blockInfo = block.mmInfo;\n if (DEBUG) assert(!((size + BLOCK_OVERHEAD) & AL_MASK)); // size must be aligned so the new block is\n\n // split if the block can hold another MINSIZE block incl. overhead\n var remaining = (blockInfo & ~TAGS_MASK) - size;\n if (remaining >= BLOCK_OVERHEAD + BLOCK_MINSIZE) {\n block.mmInfo = size | (blockInfo & LEFTFREE); // also discards FREE\n\n let spare = changetype(changetype(block) + BLOCK_OVERHEAD + size);\n spare.mmInfo = (remaining - BLOCK_OVERHEAD) | FREE; // not LEFTFREE\n insertBlock(root, spare); // also sets 'back'\n\n // otherwise tag block as no longer FREE and right as no longer LEFTFREE\n } else {\n block.mmInfo = blockInfo & ~FREE;\n GETRIGHT(block).mmInfo &= ~LEFTFREE;\n }\n}\n\n/** Adds more memory to the pool. */\nfunction addMemory(root: Root, start: usize, end: usize): bool {\n if (DEBUG) assert(start <= end); // must be valid\n start = ((start + BLOCK_OVERHEAD + AL_MASK) & ~AL_MASK) - BLOCK_OVERHEAD;\n end &= ~AL_MASK;\n\n var tail = GETTAIL(root);\n var tailInfo: usize = 0;\n if (tail) { // more memory\n if (DEBUG) assert(start >= changetype(tail) + BLOCK_OVERHEAD);\n\n // merge with current tail if adjacent\n const offsetToTail = AL_SIZE;\n if (start - offsetToTail == changetype(tail)) {\n start -= offsetToTail;\n tailInfo = tail.mmInfo;\n } else {\n // We don't do this, but a user might `memory.grow` manually\n // leading to non-adjacent pages managed by TLSF.\n }\n\n } else if (DEBUG) { // first memory\n assert(start >= changetype(root) + ROOT_SIZE); // starts after root\n }\n\n // check if size is large enough for a free block and the tail block\n var size = end - start;\n if (size < BLOCK_OVERHEAD + BLOCK_MINSIZE + BLOCK_OVERHEAD) {\n return false;\n }\n\n // left size is total minus its own and the zero-length tail's header\n var leftSize = size - 2 * BLOCK_OVERHEAD;\n var left = changetype(start);\n left.mmInfo = leftSize | FREE | (tailInfo & LEFTFREE);\n left.prev = null;\n left.next = null;\n\n // tail is a zero-length used block\n tail = changetype(start + BLOCK_OVERHEAD + leftSize);\n tail.mmInfo = 0 | LEFTFREE;\n SETTAIL(root, tail);\n\n insertBlock(root, left); // also merges with free left before tail / sets 'back'\n\n return true;\n}\n\n/** Grows memory to fit at least another block of the specified size. */\nfunction growMemory(root: Root, size: usize): void {\n if (ASC_LOW_MEMORY_LIMIT) {\n unreachable();\n return;\n }\n // Here, both rounding performed in searchBlock ...\n const halfMaxSize = BLOCK_MAXSIZE >> 1;\n if (size < halfMaxSize) { // don't round last fl\n const invRound = (sizeof() * 8 - 1) - SL_BITS;\n size += (1 << (invRound - clz(size))) - 1;\n }\n // and additional BLOCK_OVERHEAD must be taken into account. If we are going\n // to merge with the tail block, that's one time, otherwise it's two times.\n var pagesBefore = memory.size();\n size += BLOCK_OVERHEAD << usize((pagesBefore << 16) - BLOCK_OVERHEAD != changetype(GETTAIL(root)));\n var pagesNeeded = (((size + 0xffff) & ~0xffff) >>> 16);\n var pagesWanted = max(pagesBefore, pagesNeeded); // double memory\n if (memory.grow(pagesWanted) < 0) {\n if (memory.grow(pagesNeeded) < 0) unreachable();\n }\n var pagesAfter = memory.size();\n addMemory(root, pagesBefore << 16, pagesAfter << 16);\n}\n\n/** Computes the size (excl. header) of a block. */\nfunction computeSize(size: usize): usize {\n // Size must be large enough and aligned minus preceeding overhead\n return size <= BLOCK_MINSIZE\n ? BLOCK_MINSIZE\n : ((size + BLOCK_OVERHEAD + AL_MASK) & ~AL_MASK) - BLOCK_OVERHEAD;\n}\n\n/** Prepares and checks an allocation size. */\nfunction prepareSize(size: usize): usize {\n if (size > BLOCK_MAXSIZE) throw new Error(E_ALLOCATION_TOO_LARGE);\n return computeSize(size);\n}\n\n/** Initializes the root structure. */\nfunction initialize(): void {\n if (isDefined(ASC_RTRACE)) oninit(__heap_base);\n var rootOffset = (__heap_base + AL_MASK) & ~AL_MASK;\n var pagesBefore = memory.size();\n var pagesNeeded = ((((rootOffset + ROOT_SIZE) + 0xffff) & ~0xffff) >>> 16);\n if (pagesNeeded > pagesBefore && memory.grow(pagesNeeded - pagesBefore) < 0) unreachable();\n var root = changetype(rootOffset);\n root.flMap = 0;\n SETTAIL(root, changetype(0));\n for (let fl: usize = 0; fl < FL_BITS; ++fl) {\n SETSL(root, fl, 0);\n for (let sl: u32 = 0; sl < SL_SIZE; ++sl) {\n SETHEAD(root, fl, sl, null);\n }\n }\n var memStart = rootOffset + ROOT_SIZE;\n if (ASC_LOW_MEMORY_LIMIT) {\n const memEnd = ASC_LOW_MEMORY_LIMIT & ~AL_MASK;\n if (memStart <= memEnd) addMemory(root, memStart, memEnd);\n else unreachable(); // low memory limit already exceeded\n } else {\n addMemory(root, memStart, memory.size() << 16);\n }\n ROOT = root;\n}\n\n/** Allocates a block of the specified size. */\nexport function allocateBlock(root: Root, size: usize): Block {\n var payloadSize = prepareSize(size);\n var block = searchBlock(root, payloadSize);\n if (!block) {\n growMemory(root, payloadSize);\n block = changetype(searchBlock(root, payloadSize));\n if (DEBUG) assert(block); // must be found now\n }\n if (DEBUG) assert((block.mmInfo & ~TAGS_MASK) >= payloadSize); // must fit\n removeBlock(root, block);\n prepareBlock(root, block, payloadSize);\n if (isDefined(ASC_RTRACE)) onalloc(block);\n return block;\n}\n\n/** Reallocates a block to the specified size. */\nexport function reallocateBlock(root: Root, block: Block, size: usize): Block {\n var payloadSize = prepareSize(size);\n var blockInfo = block.mmInfo;\n var blockSize = blockInfo & ~TAGS_MASK;\n\n // possibly split and update runtime size if it still fits\n if (payloadSize <= blockSize) {\n prepareBlock(root, block, payloadSize);\n if (isDefined(ASC_RTRACE)) {\n if (payloadSize != blockSize) onresize(block, BLOCK_OVERHEAD + blockSize);\n }\n return block;\n }\n\n // merge with right free block if merger is large enough\n var right = GETRIGHT(block);\n var rightInfo = right.mmInfo;\n if (rightInfo & FREE) {\n let mergeSize = blockSize + BLOCK_OVERHEAD + (rightInfo & ~TAGS_MASK);\n if (mergeSize >= payloadSize) {\n removeBlock(root, right);\n block.mmInfo = (blockInfo & TAGS_MASK) | mergeSize;\n prepareBlock(root, block, payloadSize);\n if (isDefined(ASC_RTRACE)) onresize(block, BLOCK_OVERHEAD + blockSize);\n return block;\n }\n }\n\n // otherwise move the block\n return moveBlock(root, block, size);\n}\n\n/** Moves a block to a new one of the specified size. */\nfunction moveBlock(root: Root, block: Block, newSize: usize): Block {\n var newBlock = allocateBlock(root, newSize);\n memory.copy(changetype(newBlock) + BLOCK_OVERHEAD, changetype(block) + BLOCK_OVERHEAD, block.mmInfo & ~TAGS_MASK);\n if (changetype(block) >= __heap_base) {\n if (isDefined(ASC_RTRACE)) onmove(block, newBlock);\n freeBlock(root, block);\n }\n return newBlock;\n}\n\n/** Frees a block. */\nexport function freeBlock(root: Root, block: Block): void {\n if (isDefined(ASC_RTRACE)) onfree(block);\n block.mmInfo = block.mmInfo | FREE;\n insertBlock(root, block);\n}\n\n/** Checks that a used block is valid to be freed or reallocated. */\nfunction checkUsedBlock(ptr: usize): Block {\n var block = changetype(ptr - BLOCK_OVERHEAD);\n assert(\n ptr != 0 && !(ptr & AL_MASK) && // must exist and be aligned\n !(block.mmInfo & FREE) // must be used\n );\n return block;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __alloc(size: usize): usize {\n if (!ROOT) initialize();\n return changetype(allocateBlock(ROOT, size)) + BLOCK_OVERHEAD;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __realloc(ptr: usize, size: usize): usize {\n if (!ROOT) initialize();\n return (ptr < __heap_base\n ? changetype(moveBlock(ROOT, checkUsedBlock(ptr), size))\n : changetype(reallocateBlock(ROOT, checkUsedBlock(ptr), size))\n ) + BLOCK_OVERHEAD;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __free(ptr: usize): void {\n if (ptr < __heap_base) return;\n if (!ROOT) initialize();\n freeBlock(ROOT, checkUsedBlock(ptr));\n}\n","// This file is shared with the compiler and must remain portable\n\n// ╒═══════════════════ Typeinfo interpretation ═══════════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤ ◄─ __rtti_base\n// │ count │\n// ╞═══════════════════════════════════════════════════════════════╡ ┐\n// │ Typeinfo#flags [id=0] │ id < count\n// ├ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┤\n// │ Typeinfo#base [id=0] │\n// ├───────────────────────────────────────────────────────────────┤\n// │ ... │\n\n/** Runtime type information data structure. */\n@unmanaged\nexport class Typeinfo {\n /** Flags describing the shape of this class type. */\n flags: TypeinfoFlags = TypeinfoFlags.NONE;\n /** Base class id or `0` if none. */\n base: u32 = 0;\n}\n\n/** Runtime type information flags. */\nexport const enum TypeinfoFlags {\n /** No specific flags. */\n NONE = 0,\n /** Type is an `ArrayBufferView`. */\n ARRAYBUFFERVIEW = 1 << 0,\n /** Type is an `Array`. */\n ARRAY = 1 << 1,\n /** Type is a `StaticArray`. */\n STATICARRAY = 1 << 2,\n /** Type is a `Set`. */\n SET = 1 << 3,\n /** Type is a `Map`. */\n MAP = 1 << 4,\n /** Type has no outgoing pointers. */\n POINTERFREE = 1 << 5,\n /** Value alignment of 1 byte. */\n VALUE_ALIGN_0 = 1 << 6,\n /** Value alignment of 2 bytes. */\n VALUE_ALIGN_1 = 1 << 7,\n /** Value alignment of 4 bytes. */\n VALUE_ALIGN_2 = 1 << 8,\n /** Value alignment of 8 bytes. */\n VALUE_ALIGN_3 = 1 << 9,\n /** Value alignment of 16 bytes. */\n VALUE_ALIGN_4 = 1 << 10,\n /** Value is a signed type. */\n VALUE_SIGNED = 1 << 11,\n /** Value is a float type. */\n VALUE_FLOAT = 1 << 12,\n /** Value type is nullable. */\n VALUE_NULLABLE = 1 << 13,\n /** Value type is managed. */\n VALUE_MANAGED = 1 << 14,\n /** Key alignment of 1 byte. */\n KEY_ALIGN_0 = 1 << 15,\n /** Key alignment of 2 bytes. */\n KEY_ALIGN_1 = 1 << 16,\n /** Key alignment of 4 bytes. */\n KEY_ALIGN_2 = 1 << 17,\n /** Key alignment of 8 bytes. */\n KEY_ALIGN_3 = 1 << 18,\n /** Key alignment of 16 bytes. */\n KEY_ALIGN_4 = 1 << 19,\n /** Key is a signed type. */\n KEY_SIGNED = 1 << 20,\n /** Key is a float type. */\n KEY_FLOAT = 1 << 21,\n /** Key type is nullable. */\n KEY_NULLABLE = 1 << 22,\n /** Key type is managed. */\n KEY_MANAGED = 1 << 23\n}\n","import { BLOCK, BLOCK_OVERHEAD, OBJECT_OVERHEAD, OBJECT_MAXSIZE, TOTAL_OVERHEAD, DEBUG, TRACE, RTRACE, PROFILE } from \"./common\";\nimport { onvisit, oncollect, oninterrupt, onyield } from \"./rtrace\";\nimport { TypeinfoFlags } from \"../shared/typeinfo\";\nimport { E_ALLOCATION_TOO_LARGE, E_ALREADY_PINNED, E_NOT_PINNED } from \"../util/error\";\n\n// === ITCMS: An incremental Tri-Color Mark & Sweep garbage collector ===\n// Adapted from Bach Le's μgc, see: https://github.com/bullno1/ugc\n\n// ╒═════════════╤══════════════ Colors ═══════════════════════════╕\n// │ Color │ Meaning │\n// ├─────────────┼─────────────────────────────────────────────────┤\n// │ WHITE* │ Unprocessed │\n// │ BLACK* │ Processed │\n// │ GRAY │ Processed with unprocessed children │\n// │ TRANSPARENT │ Manually pinned (always reachable) │\n// └─────────────┴─────────────────────────────────────────────────┘\n// * flipped between cycles\n\n// @ts-ignore: decorator\n@lazy var white = 0;\n// @ts-ignore: decorator\n@inline const gray = 2;\n// @ts-ignore: decorator\n@inline const transparent = 3;\n// @ts-ignore: decorator\n@inline const COLOR_MASK = 3;\n\n/** Size in memory of all objects currently managed by the GC. */\n// @ts-ignore: decorator\n@lazy var total: usize = 0;\n\n/** Currently transitioning from SWEEP to MARK state. */\n// @ts-ignore: decorator\n@inline const STATE_IDLE = 0;\n/** Currently marking reachable objects. */\n// @ts-ignore: decorator\n@inline const STATE_MARK = 1;\n/** Currently sweeping unreachable objects. */\n// @ts-ignore: decorator\n@inline const STATE_SWEEP = 2;\n/** Current collector state. */\n// @ts-ignore: decorator\n@lazy var state = STATE_IDLE;\n\n// @ts-ignore: decorator\n@lazy var fromSpace = initLazy(changetype(memory.data(offsetof())));\n// @ts-ignore: decorator\n@lazy var toSpace = initLazy(changetype(memory.data(offsetof())));\n// @ts-ignore: decorator\n@lazy var pinSpace = initLazy(changetype(memory.data(offsetof())));\n// @ts-ignore: decorator\n@lazy var iter: Object; // null\n\nfunction initLazy(space: Object): Object {\n space.nextWithColor = changetype(space);\n space.prev = space;\n return space;\n}\n\n/** Visit cookie indicating scanning of an object. */\n// @ts-ignore: decorator\n@inline const VISIT_SCAN = 0;\n\n// ╒═══════════════ Managed object layout (32-bit) ════════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤\n// │ Memory manager block │\n// ╞═══════════════════════════════════════════════════════════╤═══╡\n// │ next │ C │ = nextWithColor\n// ├───────────────────────────────────────────────────────────┴───┤\n// │ prev │\n// ├───────────────────────────────────────────────────────────────┤\n// │ rtId │\n// ├───────────────────────────────────────────────────────────────┤\n// │ rtSize │\n// ╞>ptr═══════════════════════════════════════════════════════════╡\n// │ ... │\n// C: color\n\n/** Represents a managed object in memory, consisting of a header followed by the object's data. */\n@unmanaged class Object extends BLOCK {\n /** Pointer to the next object with color flags stored in the alignment bits. */\n nextWithColor: usize; // *u32\n /** Pointer to the previous object. */\n prev: Object; // *u32\n /** Runtime id. */\n rtId: u32;\n /** Runtime size. */\n rtSize: u32;\n\n /** Gets the pointer to the next object. */\n get next(): Object {\n return changetype(this.nextWithColor & ~COLOR_MASK);\n }\n\n /** Sets the pointer to the next object. */\n set next(obj: Object) {\n this.nextWithColor = changetype(obj) | (this.nextWithColor & COLOR_MASK);\n }\n\n /** Gets this object's color. */\n get color(): i32 {\n return i32(this.nextWithColor & COLOR_MASK);\n }\n\n /** Sets this object's color. */\n set color(color: i32) {\n this.nextWithColor = (this.nextWithColor & ~COLOR_MASK) | color;\n }\n\n /** Gets the size of this object in memory. */\n get size(): usize {\n return BLOCK_OVERHEAD + (this.mmInfo & ~3);\n }\n\n /** Tests if this object is pointerfree. */\n get isPointerfree(): bool {\n var rtId = this.rtId;\n return rtId <= idof() || (__typeinfo(rtId) & TypeinfoFlags.POINTERFREE) != 0;\n }\n\n /** Unlinks this object from its list. */\n unlink(): void {\n var next = this.next;\n if (next == null) {\n if (DEBUG) assert(this.prev == null && changetype(this) < __heap_base);\n return; // static data not yet linked\n }\n var prev = this.prev;\n if (DEBUG) assert(prev);\n next.prev = prev;\n prev.next = next;\n }\n\n /** Links this object to the specified list, with the given color. */\n linkTo(list: Object, withColor: i32): void {\n let prev = list.prev;\n this.nextWithColor = changetype(list) | withColor;\n this.prev = prev;\n prev.next = this;\n list.prev = this;\n }\n\n /** Marks this object as gray, that is reachable with unscanned children. */\n makeGray(): void {\n if (this == iter) iter = assert(this.prev);\n this.unlink();\n this.linkTo(toSpace, this.isPointerfree ? i32(!white) : gray);\n }\n}\n\n/** Visits all objects considered to be program roots. */\nfunction visitRoots(cookie: u32): void {\n __visit_globals(cookie);\n var pn = pinSpace;\n var iter = pn.next;\n while (iter != pn) {\n if (DEBUG) assert(iter.color == transparent);\n __visit_members(changetype(iter) + TOTAL_OVERHEAD, cookie);\n iter = iter.next;\n }\n}\n\n/** Visits all objects on the stack. */\nfunction visitStack(cookie: u32): void {\n var ptr = __stack_pointer;\n while (ptr < __heap_base) {\n __visit(load(ptr), cookie);\n ptr += sizeof();\n }\n}\n\n/** Performs a single step according to the current state. */\nfunction step(): usize {\n // Magic constants responsible for pause times. Obtained experimentally\n // using the compiler compiling itself. 2048 budget pro run by default.\n const MARKCOST = isDefined(ASC_GC_MARKCOST) ? ASC_GC_MARKCOST : 1;\n const SWEEPCOST = isDefined(ASC_GC_SWEEPCOST) ? ASC_GC_SWEEPCOST : 10;\n var obj: Object;\n switch (state) {\n case STATE_IDLE: {\n state = STATE_MARK;\n visitCount = 0;\n visitRoots(VISIT_SCAN);\n iter = toSpace;\n return visitCount * MARKCOST;\n }\n case STATE_MARK: {\n let black = i32(!white);\n obj = iter.next;\n while (obj != toSpace) {\n iter = obj;\n if (obj.color != black) { // skip already-blacks (pointerfree)\n obj.color = black;\n visitCount = 0;\n __visit_members(changetype(obj) + TOTAL_OVERHEAD, VISIT_SCAN);\n return visitCount * MARKCOST;\n }\n obj = obj.next;\n }\n visitCount = 0;\n visitRoots(VISIT_SCAN);\n obj = iter.next;\n if (obj == toSpace) {\n visitStack(VISIT_SCAN);\n obj = iter.next;\n while (obj != toSpace) {\n if (obj.color != black) {\n obj.color = black;\n __visit_members(changetype(obj) + TOTAL_OVERHEAD, VISIT_SCAN);\n }\n obj = obj.next;\n }\n let from = fromSpace;\n fromSpace = toSpace;\n toSpace = from;\n white = black;\n iter = from.next;\n state = STATE_SWEEP;\n }\n return visitCount * MARKCOST;\n }\n case STATE_SWEEP: {\n obj = iter;\n if (obj != toSpace) {\n iter = obj.next;\n if (DEBUG) assert(obj.color == i32(!white)); // old white\n free(obj);\n return SWEEPCOST;\n }\n toSpace.nextWithColor = changetype(toSpace);\n toSpace.prev = toSpace;\n state = STATE_IDLE;\n break;\n }\n }\n return 0;\n}\n\n/** Frees an object. */\nfunction free(obj: Object): void {\n if (changetype(obj) < __heap_base) {\n obj.nextWithColor = 0; // may become linked again\n obj.prev = changetype(0);\n } else {\n total -= obj.size;\n if (isDefined(__finalize)) {\n __finalize(changetype(obj) + TOTAL_OVERHEAD);\n }\n __free(changetype(obj) + BLOCK_OVERHEAD);\n }\n}\n\n// Garbage collector interface\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __new(size: usize, id: i32): usize {\n if (size >= OBJECT_MAXSIZE) throw new Error(E_ALLOCATION_TOO_LARGE);\n if (total >= threshold) interrupt();\n var obj = changetype(__alloc(OBJECT_OVERHEAD + size) - BLOCK_OVERHEAD);\n obj.rtId = id;\n obj.rtSize = size;\n obj.linkTo(fromSpace, white); // inits next/prev\n total += obj.size;\n var ptr = changetype(obj) + TOTAL_OVERHEAD;\n // may be visited before being fully initialized, so must fill\n memory.fill(ptr, 0, size);\n return ptr;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __renew(oldPtr: usize, size: usize): usize {\n var oldObj = changetype(oldPtr - TOTAL_OVERHEAD);\n // Update object size if its block is large enough\n if (size <= (oldObj.mmInfo & ~3) - OBJECT_OVERHEAD) {\n oldObj.rtSize = size;\n return oldPtr;\n }\n // If not the same object anymore, we have to move it move it due to the\n // shadow stack potentially still referencing the old object\n var newPtr = __new(size, oldObj.rtId);\n memory.copy(newPtr, oldPtr, min(size, oldObj.rtSize));\n return newPtr;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __link(parentPtr: usize, childPtr: usize, expectMultiple: bool): void {\n // Write barrier is unnecessary if non-incremental\n if (!childPtr) return;\n if (DEBUG) assert(parentPtr);\n var child = changetype(childPtr - TOTAL_OVERHEAD);\n if (child.color == white) {\n let parent = changetype(parentPtr - TOTAL_OVERHEAD);\n let parentColor = parent.color;\n if (parentColor == i32(!white)) {\n // Maintain the invariant that no black object may point to a white object.\n if (expectMultiple) {\n // Move the barrier \"backward\". Suitable for containers receiving multiple stores.\n // Avoids a barrier for subsequent objects stored into the same container.\n parent.makeGray();\n } else {\n // Move the barrier \"forward\". Suitable for objects receiving isolated stores.\n child.makeGray();\n }\n } else if (parentColor == transparent && state == STATE_MARK) {\n // Pinned objects are considered 'black' during the mark phase.\n child.makeGray();\n }\n }\n}\n\n// @ts-ignore: decorator\n@lazy var visitCount = 0;\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __visit(ptr: usize, cookie: i32): void {\n if (!ptr) return;\n let obj = changetype(ptr - TOTAL_OVERHEAD);\n if (RTRACE) if (!onvisit(obj)) return;\n if (obj.color == white) {\n obj.makeGray();\n ++visitCount;\n }\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __pin(ptr: usize): usize {\n if (ptr) {\n let obj = changetype(ptr - TOTAL_OVERHEAD);\n if (obj.color == transparent) {\n throw new Error(E_ALREADY_PINNED);\n }\n obj.unlink(); // from fromSpace\n obj.linkTo(pinSpace, transparent);\n }\n return ptr;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __unpin(ptr: usize): void {\n if (!ptr) return;\n var obj = changetype(ptr - TOTAL_OVERHEAD);\n if (obj.color != transparent) {\n throw new Error(E_NOT_PINNED);\n }\n if (state == STATE_MARK) {\n // We may be right at the point after marking roots for the second time and\n // entering the sweep phase, in which case the object would be missed if it\n // is not only pinned but also a root. Make sure it isn't missed.\n obj.makeGray();\n } else {\n obj.unlink();\n obj.linkTo(fromSpace, white);\n }\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __collect(): void {\n if (TRACE) trace(\"GC (full) at\", 1, total);\n if (state > STATE_IDLE) {\n // finish current cycle\n while (state != STATE_IDLE) step();\n }\n // perform a full cycle\n step();\n while (state != STATE_IDLE) step();\n threshold = (total * IDLEFACTOR / 100) + GRANULARITY;\n if (TRACE) trace(\"GC (full) done at cur/max\", 2, total, memory.size() << 16);\n if (RTRACE || PROFILE) oncollect(total);\n}\n\n// Garbage collector automation\n\n/** How often to interrupt. The default of 1024 means \"interrupt each 1024 bytes allocated\". */\n// @ts-ignore: decorator\n@inline const GRANULARITY: usize = isDefined(ASC_GC_GRANULARITY) ? ASC_GC_GRANULARITY : 1024;\n/** How long to interrupt. The default of 200% means \"run at double the speed of allocations\". */\n// @ts-ignore: decorator\n@inline const STEPFACTOR: usize = isDefined(ASC_GC_SWEEPFACTOR) ? ASC_GC_SWEEPFACTOR : 200;\n/** How long to idle. The default of 200% means \"wait for memory to double before kicking in again\". */\n// @ts-ignore: decorator\n@inline const IDLEFACTOR: usize = isDefined(ASC_GC_IDLEFACTOR) ? ASC_GC_IDLEFACTOR : 200;\n\n/** Threshold of memory used by objects to exceed before interrupting again. */\n// @ts-ignore: decorator\n@lazy var threshold: usize = ((memory.size() << 16) - __heap_base) >> 1;\n\n/** Performs a reasonable amount of incremental GC steps. */\nfunction interrupt(): void {\n if (PROFILE) oninterrupt(total);\n if (TRACE) trace(\"GC (auto) at\", 1, total);\n var budget: isize = GRANULARITY * STEPFACTOR / 100;\n do {\n budget -= step();\n if (state == STATE_IDLE) {\n if (TRACE) trace(\"└ GC (auto) done at cur/max\", 2, total, memory.size() << 16);\n threshold = (total * IDLEFACTOR / 100) + GRANULARITY;\n if (PROFILE) onyield(total);\n return;\n }\n } while (budget > 0);\n if (TRACE) trace(\"└ GC (auto) ongoing at\", 1, total);\n threshold = total + GRANULARITY * usize(total - threshold < GRANULARITY);\n if (PROFILE) onyield(total);\n}\n","// Ported from perlin reference implementation (https://cs.nyu.edu/~perlin/noise/)\n\nexport function perlin(_x: i32, _y: i32, _z: i32, denom: i32): f64 {\n // Convert fraction into f64\n let x: f64 = f64(_x) / f64(denom);\n let y: f64 = f64(_y) / f64(denom);\n let z: f64 = f64(_z) / f64(denom);\n\n // Find unit cube that contains point\n const X: i32 = i32(Math.floor(x)) & 255;\n const Y: i32 = i32(Math.floor(y)) & 255;\n const Z: i32 = i32(Math.floor(z)) & 255;\n\n // Find relative x,y,z of point in cube\n x -= Math.floor(x);\n y -= Math.floor(y);\n z -= Math.floor(z);\n\n // Compute fade curves for each x,y,z\n const u: f64 = fade(x);\n const v: f64 = fade(y);\n const w: f64 = fade(z);\n\n // Hash coordinates of the 8 cube corners\n const A: i32 = p[X] + Y;\n const AA: i32 = p[A] + Z;\n const AB: i32 = p[A + 1] + Z;\n const B: i32 = p[X + 1] + Y;\n const BA: i32 = p[B] + Z;\n const BB: i32 = p[B + 1] + Z;\n\n // Add blended results from 8 corners of cube\n const r: f64 = lerp(\n w,\n lerp(\n v,\n lerp(u, grad(p[AA], x, y, z), grad(p[BA], x - 1, y, z)),\n lerp(u, grad(p[AB], x, y - 1, z), grad(p[BB], x - 1, y - 1, z)),\n ),\n lerp(\n v,\n lerp(u, grad(p[AA + 1], x, y, z - 1), grad(p[BA + 1], x - 1, y, z - 1)),\n lerp(u, grad(p[AB + 1], x, y - 1, z - 1), grad(p[BB + 1], x - 1, y - 1, z - 1)),\n ),\n );\n\n // Shift to range from 0 to 1\n return (r + 1) / 2;\n}\n\nfunction fade(t: f64): f64 {\n return t * t * t * (t * (t * 6 - 15) + 10);\n}\n\nfunction lerp(t: f64, a: f64, b: f64): f64 {\n return a + t * (b - a);\n}\n\nfunction grad(hash: i32, x: f64, y: f64, z: f64): f64 {\n switch (hash & 0xf) {\n case 0x0:\n return x + y;\n case 0x1:\n return -x + y;\n case 0x2:\n return x - y;\n case 0x3:\n return -x - y;\n case 0x4:\n return x + z;\n case 0x5:\n return -x + z;\n case 0x6:\n return x - z;\n case 0x7:\n return -x - z;\n case 0x8:\n return y + z;\n case 0x9:\n return -y + z;\n case 0xa:\n return y - z;\n case 0xb:\n return -y - z;\n case 0xc:\n return y + x;\n case 0xd:\n return -y + z;\n case 0xe:\n return y - x;\n case 0xf:\n return -y - z;\n default:\n return 0; // never happens\n }\n}\n\nconst p: i32[] = [\n 151, 160, 137, 91, 90, 15, 131, 13, 201, 95, 96, 53, 194, 233, 7, 225, 140, 36, 103, 30, 69, 142, 8, 99, 37, 240, 21,\n 10, 23, 190, 6, 148, 247, 120, 234, 75, 0, 26, 197, 62, 94, 252, 219, 203, 117, 35, 11, 32, 57, 177, 33, 88, 237, 149,\n 56, 87, 174, 20, 125, 136, 171, 168, 68, 175, 74, 165, 71, 134, 139, 48, 27, 166, 77, 146, 158, 231, 83, 111, 229,\n 122, 60, 211, 133, 230, 220, 105, 92, 41, 55, 46, 245, 40, 244, 102, 143, 54, 65, 25, 63, 161, 1, 216, 80, 73, 209,\n 76, 132, 187, 208, 89, 18, 169, 200, 196, 135, 130, 116, 188, 159, 86, 164, 100, 109, 198, 173, 186, 3, 64, 52, 217,\n 226, 250, 124, 123, 5, 202, 38, 147, 118, 126, 255, 82, 85, 212, 207, 206, 59, 227, 47, 16, 58, 17, 182, 189, 28, 42,\n 223, 183, 170, 213, 119, 248, 152, 2, 44, 154, 163, 70, 221, 153, 101, 155, 167, 43, 172, 9, 129, 22, 39, 253, 19, 98,\n 108, 110, 79, 113, 224, 232, 178, 185, 112, 104, 218, 246, 97, 228, 251, 34, 242, 193, 238, 210, 144, 12, 191, 179,\n 162, 241, 81, 51, 145, 235, 249, 14, 239, 107, 49, 192, 214, 31, 181, 199, 106, 157, 184, 84, 204, 176, 115, 121, 50,\n 45, 127, 4, 150, 254, 138, 236, 205, 93, 222, 114, 67, 29, 24, 72, 243, 141, 128, 195, 78, 66, 215, 61, 156, 180, 151,\n 160, 137, 91, 90, 15, 131, 13, 201, 95, 96, 53, 194, 233, 7, 225, 140, 36, 103, 30, 69, 142, 8, 99, 37, 240, 21, 10,\n 23, 190, 6, 148, 247, 120, 234, 75, 0, 26, 197, 62, 94, 252, 219, 203, 117, 35, 11, 32, 57, 177, 33, 88, 237, 149, 56,\n 87, 174, 20, 125, 136, 171, 168, 68, 175, 74, 165, 71, 134, 139, 48, 27, 166, 77, 146, 158, 231, 83, 111, 229, 122,\n 60, 211, 133, 230, 220, 105, 92, 41, 55, 46, 245, 40, 244, 102, 143, 54, 65, 25, 63, 161, 1, 216, 80, 73, 209, 76,\n 132, 187, 208, 89, 18, 169, 200, 196, 135, 130, 116, 188, 159, 86, 164, 100, 109, 198, 173, 186, 3, 64, 52, 217, 226,\n 250, 124, 123, 5, 202, 38, 147, 118, 126, 255, 82, 85, 212, 207, 206, 59, 227, 47, 16, 58, 17, 182, 189, 28, 42, 223,\n 183, 170, 213, 119, 248, 152, 2, 44, 154, 163, 70, 221, 153, 101, 155, 167, 43, 172, 9, 129, 22, 39, 253, 19, 98, 108,\n 110, 79, 113, 224, 232, 178, 185, 112, 104, 218, 246, 97, 228, 251, 34, 242, 193, 238, 210, 144, 12, 191, 179, 162,\n 241, 81, 51, 145, 235, 249, 14, 239, 107, 49, 192, 214, 31, 181, 199, 106, 157, 184, 84, 204, 176, 115, 121, 50, 45,\n 127, 4, 150, 254, 138, 236, 205, 93, 222, 114, 67, 29, 24, 72, 243, 141, 128, 195, 78, 66, 215, 61, 156, 180,\n];\n","//\n// Lookup data for exp2f\n//\n\n// @ts-ignore: decorator\n@inline const EXP2F_TABLE_BITS = 5;\n\n// @ts-ignore: decorator\n@lazy @inline const EXP2F_DATA_TAB = memory.data([\n // exp2f_data_tab[i] = uint(2^(i/N)) - (i << 52-BITS)\n // used for computing 2^(k/N) for an int |k| < 150 N as\n // double(tab[k%N] + (k << 52-BITS))\n 0x3FF0000000000000, 0x3FEFD9B0D3158574, 0x3FEFB5586CF9890F, 0x3FEF9301D0125B51,\n 0x3FEF72B83C7D517B, 0x3FEF54873168B9AA, 0x3FEF387A6E756238, 0x3FEF1E9DF51FDEE1,\n 0x3FEF06FE0A31B715, 0x3FEEF1A7373AA9CB, 0x3FEEDEA64C123422, 0x3FEECE086061892D,\n 0x3FEEBFDAD5362A27, 0x3FEEB42B569D4F82, 0x3FEEAB07DD485429, 0x3FEEA47EB03A5585,\n 0x3FEEA09E667F3BCD, 0x3FEE9F75E8EC5F74, 0x3FEEA11473EB0187, 0x3FEEA589994CCE13,\n 0x3FEEACE5422AA0DB, 0x3FEEB737B0CDC5E5, 0x3FEEC49182A3F090, 0x3FEED503B23E255D,\n 0x3FEEE89F995AD3AD, 0x3FEEFF76F2FB5E47, 0x3FEF199BDD85529C, 0x3FEF3720DCEF9069,\n 0x3FEF5818DCFBA487, 0x3FEF7C97337B9B5F, 0x3FEFA4AFA2A490DA, 0x3FEFD0765B6E4540\n]);\n\n// ULP error: 0.502 (nearest rounding.)\n// Relative error: 1.69 * 2^-34 in [-1/64, 1/64] (before rounding.)\n// Wrong count: 168353 (all nearest rounding wrong results with fma.)\n// @ts-ignore: decorator\n@inline\nexport function exp2f_lut(x: f32): f32 {\n const\n N = 1 << EXP2F_TABLE_BITS,\n N_MASK = N - 1,\n shift = reinterpret(0x4338000000000000) / N, // 0x1.8p+52\n Ox127f = reinterpret(0x7F000000);\n\n const\n C0 = reinterpret(0x3FAC6AF84B912394), // 0x1.c6af84b912394p-5\n C1 = reinterpret(0x3FCEBFCE50FAC4F3), // 0x1.ebfce50fac4f3p-3\n C2 = reinterpret(0x3FE62E42FF0C52D6); // 0x1.62e42ff0c52d6p-1\n\n var xd = x;\n var ix = reinterpret(x);\n var ux = ix >> 20 & 0x7FF;\n if (ux >= 0x430) {\n // |x| >= 128 or x is nan.\n if (ix == 0xFF800000) return 0; // x == -Inf -> 0\n if (ux >= 0x7F8) return x + x; // x == Inf/NaN -> Inf/NaN\n if (x > 0) return x * Ox127f; // x > 0 -> HugeVal (Owerflow)\n if (x <= -150) return 0; // x <= -150 -> 0 (Underflow)\n }\n\n // x = k/N + r with r in [-1/(2N), 1/(2N)] and int k.\n var kd = xd + shift;\n var ki = reinterpret(kd);\n var r = xd - (kd - shift);\n var t: u64, y: f64, s: f64;\n\n // exp2(x) = 2^(k/N) * 2^r ~= s * (C0*r^3 + C1*r^2 + C2*r + 1)\n t = load(EXP2F_DATA_TAB + ((ki & N_MASK) << alignof()));\n t += ki << (52 - EXP2F_TABLE_BITS);\n s = reinterpret(t);\n y = C2 * r + 1;\n y += (C0 * r + C1) * (r * r);\n y *= s;\n\n return y;\n}\n\n// ULP error: 0.502 (nearest rounding.)\n// Relative error: 1.69 * 2^-34 in [-ln2/64, ln2/64] (before rounding.)\n// Wrong count: 170635 (all nearest rounding wrong results with fma.)\n// @ts-ignore: decorator\n@inline\nexport function expf_lut(x: f32): f32 {\n const\n N = 1 << EXP2F_TABLE_BITS,\n N_MASK = N - 1,\n shift = reinterpret(0x4338000000000000), // 0x1.8p+52\n InvLn2N = reinterpret(0x3FF71547652B82FE) * N, // 0x1.71547652b82fep+0\n Ox1p127f = reinterpret(0x7F000000);\n\n const\n C0 = reinterpret(0x3FAC6AF84B912394) / N / N / N, // 0x1.c6af84b912394p-5\n C1 = reinterpret(0x3FCEBFCE50FAC4F3) / N / N, // 0x1.ebfce50fac4f3p-3\n C2 = reinterpret(0x3FE62E42FF0C52D6) / N; // 0x1.62e42ff0c52d6p-1\n\n var xd = x;\n var ix = reinterpret(x);\n var ux = ix >> 20 & 0x7FF;\n if (ux >= 0x42B) {\n // |x| >= 88 or x is nan.\n if (ix == 0xFF800000) return 0; // x == -Inf -> 0\n if (ux >= 0x7F8) return x + x; // x == Inf/NaN -> Inf/NaN\n if (x > reinterpret(0x42B17217)) return x * Ox1p127f; // x > log(0x1p128) ~= 88.72 -> HugeVal (Owerflow)\n if (x < reinterpret(0xC2CFF1B4)) return 0; // x < log(0x1p-150) ~= -103.97 -> 0 (Underflow)\n }\n\n // x*N/Ln2 = k + r with r in [-1/2, 1/2] and int k.\n var z = InvLn2N * xd;\n\n // Round and convert z to int, the result is in [-150*N, 128*N] and\n // ideally ties-to-even rule is used, otherwise the magnitude of r\n // can be bigger which gives larger approximation error.\n var kd = (z + shift);\n var ki = reinterpret(kd);\n var r = z - (kd - shift);\n var s: f64, y: f64, t: u64;\n\n // exp(x) = 2^(k/N) * 2^(r/N) ~= s * (C0*r^3 + C1*r^2 + C2*r + 1)\n t = load(EXP2F_DATA_TAB + ((ki & N_MASK) << alignof()));\n t += ki << (52 - EXP2F_TABLE_BITS);\n s = reinterpret(t);\n z = C0 * r + C1;\n y = C2 * r + 1;\n y += z * (r * r);\n y *= s;\n\n return y;\n}\n\n//\n// Lookup data for log2f\n//\n\n// @ts-ignore: decorator\n@inline const LOG2F_TABLE_BITS = 4;\n\n// @ts-ignore: decorator\n@lazy @inline const LOG2F_DATA_TAB = memory.data([\n reinterpret(0x3FF661EC79F8F3BE), reinterpret(0xBFDEFEC65B963019), // 0x1.661ec79f8f3bep+0, -0x1.efec65b963019p-2,\n reinterpret(0x3FF571ED4AAF883D), reinterpret(0xBFDB0B6832D4FCA4), // 0x1.571ed4aaf883dp+0, -0x1.b0b6832d4fca4p-2,\n reinterpret(0x3FF49539F0F010B0), reinterpret(0xBFD7418B0A1FB77B), // 0x1.49539f0f010bp+0 , -0x1.7418b0a1fb77bp-2,\n reinterpret(0x3FF3C995B0B80385), reinterpret(0xBFD39DE91A6DCF7B), // 0x1.3c995b0b80385p+0, -0x1.39de91a6dcf7bp-2,\n reinterpret(0x3FF30D190C8864A5), reinterpret(0xBFD01D9BF3F2B631), // 0x1.30d190c8864a5p+0, -0x1.01d9bf3f2b631p-2,\n reinterpret(0x3FF25E227B0B8EA0), reinterpret(0xBFC97C1D1B3B7AF0), // 0x1.25e227b0b8eap+0 , -0x1.97c1d1b3b7afp-3 ,\n reinterpret(0x3FF1BB4A4A1A343F), reinterpret(0xBFC2F9E393AF3C9F), // 0x1.1bb4a4a1a343fp+0, -0x1.2f9e393af3c9fp-3,\n reinterpret(0x3FF12358F08AE5BA), reinterpret(0xBFB960CBBF788D5C), // 0x1.12358f08ae5bap+0, -0x1.960cbbf788d5cp-4,\n reinterpret(0x3FF0953F419900A7), reinterpret(0xBFAA6F9DB6475FCE), // 0x1.0953f419900a7p+0, -0x1.a6f9db6475fcep-5,\n reinterpret(0x3FF0000000000000), 0, // 0x1p+0, 0x0,\n reinterpret(0x3FEE608CFD9A47AC), reinterpret(0x3FB338CA9F24F53D), // 0x1.e608cfd9a47acp-1, 0x1.338ca9f24f53dp-4,\n reinterpret(0x3FECA4B31F026AA0), reinterpret(0x3FC476A9543891BA), // 0x1.ca4b31f026aap-1 , 0x1.476a9543891bap-3,\n reinterpret(0x3FEB2036576AFCE6), reinterpret(0x3FCE840B4AC4E4D2), // 0x1.b2036576afce6p-1, 0x1.e840b4ac4e4d2p-3,\n reinterpret(0x3FE9C2D163A1AA2D), reinterpret(0x3FD40645F0C6651C), // 0x1.9c2d163a1aa2dp-1, 0x1.40645f0c6651cp-2,\n reinterpret(0x3FE886E6037841ED), reinterpret(0x3FD88E9C2C1B9FF8), // 0x1.886e6037841edp-1, 0x1.88e9c2c1b9ff8p-2,\n reinterpret(0x3FE767DCF5534862), reinterpret(0x3FDCE0A44EB17BCC) // 0x1.767dcf5534862p-1, 0x1.ce0a44eb17bccp-2\n]);\n\n// ULP error: 0.752 (nearest rounding.)\n// Relative error: 1.9 * 2^-26 (before rounding.)\n// @ts-ignore: decorator\n@inline\nexport function log2f_lut(x: f32): f32 {\n const\n N_MASK = (1 << LOG2F_TABLE_BITS) - 1,\n Ox1p23f = reinterpret(0x4B000000); // 0x1p23f\n\n const\n A0 = reinterpret(0xBFD712B6F70A7E4D), // -0x1.712b6f70a7e4dp-2\n A1 = reinterpret(0x3FDECABF496832E0), // 0x1.ecabf496832ep-2\n A2 = reinterpret(0xBFE715479FFAE3DE), // -0x1.715479ffae3dep-1\n A3 = reinterpret(0x3FF715475F35C8B8); // 0x1.715475f35c8b8p0\n\n var ux = reinterpret(x);\n // Fix sign of zero with downward rounding when x==1.\n // if (WANT_ROUNDING && predict_false(ix == 0x3f800000)) return 0;\n if (ux - 0x00800000 >= 0x7F800000 - 0x00800000) {\n // x < 0x1p-126 or inf or nan.\n if (ux * 2 == 0) return -Infinity;\n if (ux == 0x7F800000) return x; // log2(inf) == inf.\n if ((ux >> 31) || ux * 2 >= 0xFF000000) return (x - x) / (x - x);\n // x is subnormal, normalize it.\n ux = reinterpret(x * Ox1p23f);\n ux -= 23 << 23;\n }\n // x = 2^k z; where z is in range [OFF,2*OFF] and exact.\n // The range is split into N subintervals.\n // The ith subinterval contains z and c is near its center.\n var tmp = ux - 0x3F330000;\n var i = (tmp >> (23 - LOG2F_TABLE_BITS)) & N_MASK;\n var top = tmp & 0xFF800000;\n var iz = ux - top;\n var k = tmp >> 23;\n\n var invc = load(LOG2F_DATA_TAB + (i << (1 + alignof())), 0 << alignof());\n var logc = load(LOG2F_DATA_TAB + (i << (1 + alignof())), 1 << alignof());\n var z = reinterpret(iz);\n\n // log2(x) = log1p(z/c-1)/ln2 + log2(c) + k\n var r = z * invc - 1;\n var y0 = logc + k;\n\n // Pipelined polynomial evaluation to approximate log1p(r)/ln2.\n var y = A1 * r + A2;\n var p = A3 * r + y0;\n var r2 = r * r;\n y += A0 * r2;\n y = y * r2 + p;\n\n return y;\n}\n\n//\n// Lookup data for logf. See: https://git.musl-libc.org/cgit/musl/tree/src/math/logf.c\n//\n\n// @ts-ignore: decorator\n@inline const LOGF_TABLE_BITS = 4;\n\n// @ts-ignore: decorator\n@lazy @inline const LOGF_DATA_TAB = memory.data([\n reinterpret(0x3FF661EC79F8F3BE), reinterpret(0xBFD57BF7808CAADE), // 0x1.661ec79f8f3bep+0, -0x1.57bf7808caadep-2,\n reinterpret(0x3FF571ED4AAF883D), reinterpret(0xBFD2BEF0A7C06DDB), // 0x1.571ed4aaf883dp+0, -0x1.2bef0a7c06ddbp-2,\n reinterpret(0x3FF49539F0F010B0), reinterpret(0xBFD01EAE7F513A67), // 0x1.49539f0f010bp+0 , -0x1.01eae7f513a67p-2,\n reinterpret(0x3FF3C995B0B80385), reinterpret(0xBFCB31D8A68224E9), // 0x1.3c995b0b80385p+0, -0x1.b31d8a68224e9p-3,\n reinterpret(0x3FF30D190C8864A5), reinterpret(0xBFC6574F0AC07758), // 0x1.30d190c8864a5p+0, -0x1.6574f0ac07758p-3,\n reinterpret(0x3FF25E227B0B8EA0), reinterpret(0xBFC1AA2BC79C8100), // 0x1.25e227b0b8eap+0 , -0x1.1aa2bc79c81p-3 ,\n reinterpret(0x3FF1BB4A4A1A343F), reinterpret(0xBFBA4E76CE8C0E5E), // 0x1.1bb4a4a1a343fp+0, -0x1.a4e76ce8c0e5ep-4,\n reinterpret(0x3FF12358F08AE5BA), reinterpret(0xBFB1973C5A611CCC), // 0x1.12358f08ae5bap+0, -0x1.1973c5a611cccp-4,\n reinterpret(0x3FF0953F419900A7), reinterpret(0xBFA252F438E10C1E), // 0x1.0953f419900a7p+0, -0x1.252f438e10c1ep-5,\n reinterpret(0x3FF0000000000000), 0, // 0x1p+0, 0,\n reinterpret(0x3FEE608CFD9A47AC), reinterpret(0x3FAAA5AA5DF25984), // 0x1.e608cfd9a47acp-1, 0x1.aa5aa5df25984p-5,\n reinterpret(0x3FECA4B31F026AA0), reinterpret(0x3FBC5E53AA362EB4), // 0x1.ca4b31f026aap-1 , 0x1.c5e53aa362eb4p-4,\n reinterpret(0x3FEB2036576AFCE6), reinterpret(0x3FC526E57720DB08), // 0x1.b2036576afce6p-1, 0x1.526e57720db08p-3,\n reinterpret(0x3FE9C2D163A1AA2D), reinterpret(0x3FCBC2860D224770), // 0x1.9c2d163a1aa2dp-1, 0x1.bc2860d22477p-3 ,\n reinterpret(0x3FE886E6037841ED), reinterpret(0x3FD1058BC8A07EE1), // 0x1.886e6037841edp-1, 0x1.1058bc8a07ee1p-2,\n reinterpret(0x3FE767DCF5534862), reinterpret(0x3FD4043057B6EE09) // 0x1.767dcf5534862p-1, 0x1.4043057b6ee09p-2\n]);\n\n// ULP error: 0.818 (nearest rounding.)\n// Relative error: 1.957 * 2^-26 (before rounding.)\n// @ts-ignore: decorator\n@inline\nexport function logf_lut(x: f32): f32 {\n const\n N_MASK = (1 << LOGF_TABLE_BITS) - 1,\n Ox1p23f = reinterpret(0x4B000000); // 0x1p23f\n\n const\n Ln2 = reinterpret(0x3FE62E42FEFA39EF), // 0x1.62e42fefa39efp-1;\n A0 = reinterpret(0xBFD00EA348B88334), // -0x1.00ea348b88334p-2\n A1 = reinterpret(0x3FD5575B0BE00B6A), // 0x1.5575b0be00b6ap-2\n A2 = reinterpret(0xBFDFFFFEF20A4123); // -0x1.ffffef20a4123p-2\n\n var ux = reinterpret(x);\n // Fix sign of zero with downward rounding when x==1.\n // if (WANT_ROUNDING && ux == 0x3f800000) return 0;\n if (ux - 0x00800000 >= 0x7F800000 - 0x00800000) {\n // x < 0x1p-126 or inf or nan.\n if ((ux << 1) == 0) return -Infinity;\n if (ux == 0x7F800000) return x; // log(inf) == inf.\n if ((ux >> 31) || (ux << 1) >= 0xFF000000) return (x - x) / (x - x);\n // x is subnormal, normalize it.\n ux = reinterpret(x * Ox1p23f);\n ux -= 23 << 23;\n }\n // x = 2^k z; where z is in range [OFF,2*OFF] and exact.\n // The range is split into N subintervals.\n // The ith subinterval contains z and c is near its center.\n var tmp = ux - 0x3F330000;\n var i = (tmp >> (23 - LOGF_TABLE_BITS)) & N_MASK;\n var k = tmp >> 23;\n var iz = ux - (tmp & 0x1FF << 23);\n\n var invc = load(LOGF_DATA_TAB + (i << (1 + alignof())), 0 << alignof());\n var logc = load(LOGF_DATA_TAB + (i << (1 + alignof())), 1 << alignof());\n\n var z = reinterpret(iz);\n\n // log(x) = log1p(z/c-1) + log(c) + k*Ln2\n var r = z * invc - 1;\n var y0 = logc + k * Ln2;\n\n // Pipelined polynomial evaluation to approximate log1p(r).\n var r2 = r * r;\n var y = A1 * r + A2;\n y += A0 * r2;\n y = y * r2 + (y0 + r);\n\n return y;\n}\n\n//\n// Lookup data for powf. See: https://git.musl-libc.org/cgit/musl/tree/src/math/powf.c\n//\n\n// @ts-ignore: decorator\n@inline\nfunction zeroinfnanf(ux: u32): bool {\n return (ux << 1) - 1 >= (0x7f800000 << 1) - 1;\n}\n\n// Returns 0 if not int, 1 if odd int, 2 if even int. The argument is\n// the bit representation of a non-zero finite floating-point value.\n// @ts-ignore: decorator\n@inline\nfunction checkintf(iy: u32): i32 {\n var e = iy >> 23 & 0xFF;\n if (e < 0x7F ) return 0;\n if (e > 0x7F + 23) return 2;\n e = 1 << (0x7F + 23 - e);\n if (iy & (e - 1)) return 0;\n if (iy & e ) return 1;\n return 2;\n}\n\n// Subnormal input is normalized so ix has negative biased exponent.\n// Output is multiplied by N (POWF_SCALE) if TOINT_INTRINICS is set.\n// @ts-ignore: decorator\n@inline\nfunction log2f_inline(ux: u32): f64 {\n const N_MASK = (1 << LOG2F_TABLE_BITS) - 1;\n\n const\n A0 = reinterpret(0x3FD27616C9496E0B), // 0x1.27616c9496e0bp-2\n A1 = reinterpret(0xBFD71969A075C67A), // -0x1.71969a075c67ap-2\n A2 = reinterpret(0x3FDEC70A6CA7BADD), // 0x1.ec70a6ca7baddp-2\n A3 = reinterpret(0xBFE7154748BEF6C8), // -0x1.7154748bef6c8p-1\n A4 = reinterpret(0x3FF71547652AB82B); // 0x1.71547652ab82bp+0\n\n // x = 2^k z; where z is in range [OFF,2*OFF] and exact.\n // The range is split into N subintervals.\n // The ith subinterval contains z and c is near its center.\n var tmp = ux - 0x3F330000;\n var i = usize((tmp >> (23 - LOG2F_TABLE_BITS)) & N_MASK);\n var top = tmp & 0xFF800000;\n var uz = ux - top;\n var k = top >> 23;\n\n var invc = load(LOG2F_DATA_TAB + (i << (1 + alignof())), 0 << alignof());\n var logc = load(LOG2F_DATA_TAB + (i << (1 + alignof())), 1 << alignof());\n var z = reinterpret(uz);\n\n // log2(x) = log1p(z/c-1)/ln2 + log2(c) + k\n var r = z * invc - 1;\n var y0 = logc + k;\n\n // Pipelined polynomial evaluation to approximate log1p(r)/ln2.\n var y = A0 * r + A1;\n var p = A2 * r + A3;\n var q = A4 * r + y0;\n\n r *= r;\n q += p * r;\n y = y * (r * r) + q;\n\n return y;\n}\n\n// The output of log2 and thus the input of exp2 is either scaled by N\n// (in case of fast toint intrinsics) or not. The unscaled xd must be\n// in [-1021,1023], sign_bias sets the sign of the result.\n// @ts-ignore: decorator\n@inline\nfunction exp2f_inline(xd: f64, signBias: u32): f32 {\n const\n N = 1 << EXP2F_TABLE_BITS,\n N_MASK = N - 1,\n shift = reinterpret(0x4338000000000000) / N; // 0x1.8p+52\n\n const\n C0 = reinterpret(0x3FAC6AF84B912394), // 0x1.c6af84b912394p-5\n C1 = reinterpret(0x3FCEBFCE50FAC4F3), // 0x1.ebfce50fac4f3p-3\n C2 = reinterpret(0x3FE62E42FF0C52D6); // 0x1.62e42ff0c52d6p-1\n\n // x = k/N + r with r in [-1/(2N), 1/(2N)]\n var kd = (xd + shift);\n var ki = reinterpret(kd);\n var r = xd - (kd - shift);\n var t: u64, z: f64, y: f64, s: f64;\n\n // exp2(x) = 2^(k/N) * 2^r ~= s * (C0*r^3 + C1*r^2 + C2*r + 1)\n t = load(EXP2F_DATA_TAB + ((ki & N_MASK) << alignof()));\n t += (ki + signBias) << (52 - EXP2F_TABLE_BITS);\n s = reinterpret(t);\n z = C0 * r + C1;\n y = C2 * r + 1;\n y += z * (r * r);\n y *= s;\n return y;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction xflowf(sign: u32, y: f32): f32 {\n return select(-y, y, sign) * y;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction oflowf(sign: u32): f32 {\n return xflowf(sign, reinterpret(0x70000000)); // 0x1p97f\n}\n\n// @ts-ignore: decorator\n@inline\nfunction uflowf(sign: u32): f32 {\n return xflowf(sign, reinterpret(0x10000000)); // 0x1p-95f\n}\n\n// @ts-ignore: decorator\n@inline\nexport function powf_lut(x: f32, y: f32): f32 {\n const\n Ox1p23f = reinterpret(0x4B000000), // 0x1p23f\n UPPER_LIMIT = reinterpret(0x405FFFFFFFD1D571), // 0x1.fffffffd1d571p+6\n LOWER_LIMIT = -150.0,\n SIGN_BIAS = 1 << (EXP2F_TABLE_BITS + 11);\n\n var signBias: u32 = 0;\n var ix = reinterpret(x);\n var iy = reinterpret(y);\n var ny = 0;\n\n if (i32(ix - 0x00800000 >= 0x7f800000 - 0x00800000) | (ny = i32(zeroinfnanf(iy)))) {\n // Either (x < 0x1p-126 or inf or nan) or (y is 0 or inf or nan).\n if (ny) {\n if ((iy << 1) == 0) return 1.0;\n if (ix == 0x3F800000) return NaN; // original: 1.0\n if ((ix << 1) > (0x7F800000 << 1) || (iy << 1) > (0x7F800000 << 1)) return x + y;\n if ((ix << 1) == (0x3F800000 << 1)) return NaN; // original: 1.0\n if (((ix << 1) < (0x3F800000 << 1)) == !(iy >> 31)) return 0; // |x| < 1 && y==inf or |x| > 1 && y==-inf.\n return y * y;\n }\n if (zeroinfnanf(ix)) {\n let x2 = x * x;\n if ((ix >> 31) && checkintf(iy) == 1) x2 = -x2;\n return iy < 0 ? 1 / x2 : x2;\n }\n // x and y are non-zero finite.\n if (ix < 0) {\n // Finite x < 0.\n let yint = checkintf(iy);\n if (yint == 0) return (x - x) / (x - x);\n if (yint == 1) signBias = SIGN_BIAS;\n ix &= 0x7FFFFFFF;\n }\n if (ix < 0x00800000) {\n // Normalize subnormal x so exponent becomes negative.\n ix = reinterpret(x * Ox1p23f);\n ix &= 0x7FFFFFFF;\n ix -= 23 << 23;\n }\n }\n var logx = log2f_inline(ix);\n var ylogx = y * logx; // cannot overflow, y is single prec.\n if ((reinterpret(ylogx) >> 47 & 0xFFFF) >= 0x80BF) { // reinterpret(126.0) >> 47\n // |y * log(x)| >= 126\n if (ylogx > UPPER_LIMIT) return oflowf(signBias); // overflow\n if (ylogx <= LOWER_LIMIT) return uflowf(signBias); // underflow\n }\n return exp2f_inline(ylogx, signBias);\n}\n\n//\n// Lookup data for exp. See: https://git.musl-libc.org/cgit/musl/tree/src/math/exp.c\n//\n\n// @ts-ignore: decorator\n@inline const EXP_TABLE_BITS = 7;\n\n// @ts-ignore: decorator\n@lazy @inline const EXP_DATA_TAB = memory.data([\n 0x0000000000000000, 0x3FF0000000000000,\n 0x3C9B3B4F1A88BF6E, 0x3FEFF63DA9FB3335,\n 0xBC7160139CD8DC5D, 0x3FEFEC9A3E778061,\n 0xBC905E7A108766D1, 0x3FEFE315E86E7F85,\n 0x3C8CD2523567F613, 0x3FEFD9B0D3158574,\n 0xBC8BCE8023F98EFA, 0x3FEFD06B29DDF6DE,\n 0x3C60F74E61E6C861, 0x3FEFC74518759BC8,\n 0x3C90A3E45B33D399, 0x3FEFBE3ECAC6F383,\n 0x3C979AA65D837B6D, 0x3FEFB5586CF9890F,\n 0x3C8EB51A92FDEFFC, 0x3FEFAC922B7247F7,\n 0x3C3EBE3D702F9CD1, 0x3FEFA3EC32D3D1A2,\n 0xBC6A033489906E0B, 0x3FEF9B66AFFED31B,\n 0xBC9556522A2FBD0E, 0x3FEF9301D0125B51,\n 0xBC5080EF8C4EEA55, 0x3FEF8ABDC06C31CC,\n 0xBC91C923B9D5F416, 0x3FEF829AAEA92DE0,\n 0x3C80D3E3E95C55AF, 0x3FEF7A98C8A58E51,\n 0xBC801B15EAA59348, 0x3FEF72B83C7D517B,\n 0xBC8F1FF055DE323D, 0x3FEF6AF9388C8DEA,\n 0x3C8B898C3F1353BF, 0x3FEF635BEB6FCB75,\n 0xBC96D99C7611EB26, 0x3FEF5BE084045CD4,\n 0x3C9AECF73E3A2F60, 0x3FEF54873168B9AA,\n 0xBC8FE782CB86389D, 0x3FEF4D5022FCD91D,\n 0x3C8A6F4144A6C38D, 0x3FEF463B88628CD6,\n 0x3C807A05B0E4047D, 0x3FEF3F49917DDC96,\n 0x3C968EFDE3A8A894, 0x3FEF387A6E756238,\n 0x3C875E18F274487D, 0x3FEF31CE4FB2A63F,\n 0x3C80472B981FE7F2, 0x3FEF2B4565E27CDD,\n 0xBC96B87B3F71085E, 0x3FEF24DFE1F56381,\n 0x3C82F7E16D09AB31, 0x3FEF1E9DF51FDEE1,\n 0xBC3D219B1A6FBFFA, 0x3FEF187FD0DAD990,\n 0x3C8B3782720C0AB4, 0x3FEF1285A6E4030B,\n 0x3C6E149289CECB8F, 0x3FEF0CAFA93E2F56,\n 0x3C834D754DB0ABB6, 0x3FEF06FE0A31B715,\n 0x3C864201E2AC744C, 0x3FEF0170FC4CD831,\n 0x3C8FDD395DD3F84A, 0x3FEEFC08B26416FF,\n 0xBC86A3803B8E5B04, 0x3FEEF6C55F929FF1,\n 0xBC924AEDCC4B5068, 0x3FEEF1A7373AA9CB,\n 0xBC9907F81B512D8E, 0x3FEEECAE6D05D866,\n 0xBC71D1E83E9436D2, 0x3FEEE7DB34E59FF7,\n 0xBC991919B3CE1B15, 0x3FEEE32DC313A8E5,\n 0x3C859F48A72A4C6D, 0x3FEEDEA64C123422,\n 0xBC9312607A28698A, 0x3FEEDA4504AC801C,\n 0xBC58A78F4817895B, 0x3FEED60A21F72E2A,\n 0xBC7C2C9B67499A1B, 0x3FEED1F5D950A897,\n 0x3C4363ED60C2AC11, 0x3FEECE086061892D,\n 0x3C9666093B0664EF, 0x3FEECA41ED1D0057,\n 0x3C6ECCE1DAA10379, 0x3FEEC6A2B5C13CD0,\n 0x3C93FF8E3F0F1230, 0x3FEEC32AF0D7D3DE,\n 0x3C7690CEBB7AAFB0, 0x3FEEBFDAD5362A27,\n 0x3C931DBDEB54E077, 0x3FEEBCB299FDDD0D,\n 0xBC8F94340071A38E, 0x3FEEB9B2769D2CA7,\n 0xBC87DECCDC93A349, 0x3FEEB6DAA2CF6642,\n 0xBC78DEC6BD0F385F, 0x3FEEB42B569D4F82,\n 0xBC861246EC7B5CF6, 0x3FEEB1A4CA5D920F,\n 0x3C93350518FDD78E, 0x3FEEAF4736B527DA,\n 0x3C7B98B72F8A9B05, 0x3FEEAD12D497C7FD,\n 0x3C9063E1E21C5409, 0x3FEEAB07DD485429,\n 0x3C34C7855019C6EA, 0x3FEEA9268A5946B7,\n 0x3C9432E62B64C035, 0x3FEEA76F15AD2148,\n 0xBC8CE44A6199769F, 0x3FEEA5E1B976DC09,\n 0xBC8C33C53BEF4DA8, 0x3FEEA47EB03A5585,\n 0xBC845378892BE9AE, 0x3FEEA34634CCC320,\n 0xBC93CEDD78565858, 0x3FEEA23882552225,\n 0x3C5710AA807E1964, 0x3FEEA155D44CA973,\n 0xBC93B3EFBF5E2228, 0x3FEEA09E667F3BCD,\n 0xBC6A12AD8734B982, 0x3FEEA012750BDABF,\n 0xBC6367EFB86DA9EE, 0x3FEE9FB23C651A2F,\n 0xBC80DC3D54E08851, 0x3FEE9F7DF9519484,\n 0xBC781F647E5A3ECF, 0x3FEE9F75E8EC5F74,\n 0xBC86EE4AC08B7DB0, 0x3FEE9F9A48A58174,\n 0xBC8619321E55E68A, 0x3FEE9FEB564267C9,\n 0x3C909CCB5E09D4D3, 0x3FEEA0694FDE5D3F,\n 0xBC7B32DCB94DA51D, 0x3FEEA11473EB0187,\n 0x3C94ECFD5467C06B, 0x3FEEA1ED0130C132,\n 0x3C65EBE1ABD66C55, 0x3FEEA2F336CF4E62,\n 0xBC88A1C52FB3CF42, 0x3FEEA427543E1A12,\n 0xBC9369B6F13B3734, 0x3FEEA589994CCE13,\n 0xBC805E843A19FF1E, 0x3FEEA71A4623C7AD,\n 0xBC94D450D872576E, 0x3FEEA8D99B4492ED,\n 0x3C90AD675B0E8A00, 0x3FEEAAC7D98A6699,\n 0x3C8DB72FC1F0EAB4, 0x3FEEACE5422AA0DB,\n 0xBC65B6609CC5E7FF, 0x3FEEAF3216B5448C,\n 0x3C7BF68359F35F44, 0x3FEEB1AE99157736,\n 0xBC93091FA71E3D83, 0x3FEEB45B0B91FFC6,\n 0xBC5DA9B88B6C1E29, 0x3FEEB737B0CDC5E5,\n 0xBC6C23F97C90B959, 0x3FEEBA44CBC8520F,\n 0xBC92434322F4F9AA, 0x3FEEBD829FDE4E50,\n 0xBC85CA6CD7668E4B, 0x3FEEC0F170CA07BA,\n 0x3C71AFFC2B91CE27, 0x3FEEC49182A3F090,\n 0x3C6DD235E10A73BB, 0x3FEEC86319E32323,\n 0xBC87C50422622263, 0x3FEECC667B5DE565,\n 0x3C8B1C86E3E231D5, 0x3FEED09BEC4A2D33,\n 0xBC91BBD1D3BCBB15, 0x3FEED503B23E255D,\n 0x3C90CC319CEE31D2, 0x3FEED99E1330B358,\n 0x3C8469846E735AB3, 0x3FEEDE6B5579FDBF,\n 0xBC82DFCD978E9DB4, 0x3FEEE36BBFD3F37A,\n 0x3C8C1A7792CB3387, 0x3FEEE89F995AD3AD,\n 0xBC907B8F4AD1D9FA, 0x3FEEEE07298DB666,\n 0xBC55C3D956DCAEBA, 0x3FEEF3A2B84F15FB,\n 0xBC90A40E3DA6F640, 0x3FEEF9728DE5593A,\n 0xBC68D6F438AD9334, 0x3FEEFF76F2FB5E47,\n 0xBC91EEE26B588A35, 0x3FEF05B030A1064A,\n 0x3C74FFD70A5FDDCD, 0x3FEF0C1E904BC1D2,\n 0xBC91BDFBFA9298AC, 0x3FEF12C25BD71E09,\n 0x3C736EAE30AF0CB3, 0x3FEF199BDD85529C,\n 0x3C8EE3325C9FFD94, 0x3FEF20AB5FFFD07A,\n 0x3C84E08FD10959AC, 0x3FEF27F12E57D14B,\n 0x3C63CDAF384E1A67, 0x3FEF2F6D9406E7B5,\n 0x3C676B2C6C921968, 0x3FEF3720DCEF9069,\n 0xBC808A1883CCB5D2, 0x3FEF3F0B555DC3FA,\n 0xBC8FAD5D3FFFFA6F, 0x3FEF472D4A07897C,\n 0xBC900DAE3875A949, 0x3FEF4F87080D89F2,\n 0x3C74A385A63D07A7, 0x3FEF5818DCFBA487,\n 0xBC82919E2040220F, 0x3FEF60E316C98398,\n 0x3C8E5A50D5C192AC, 0x3FEF69E603DB3285,\n 0x3C843A59AC016B4B, 0x3FEF7321F301B460,\n 0xBC82D52107B43E1F, 0x3FEF7C97337B9B5F,\n 0xBC892AB93B470DC9, 0x3FEF864614F5A129,\n 0x3C74B604603A88D3, 0x3FEF902EE78B3FF6,\n 0x3C83C5EC519D7271, 0x3FEF9A51FBC74C83,\n 0xBC8FF7128FD391F0, 0x3FEFA4AFA2A490DA,\n 0xBC8DAE98E223747D, 0x3FEFAF482D8E67F1,\n 0x3C8EC3BC41AA2008, 0x3FEFBA1BEE615A27,\n 0x3C842B94C3A9EB32, 0x3FEFC52B376BBA97,\n 0x3C8A64A931D185EE, 0x3FEFD0765B6E4540,\n 0xBC8E37BAE43BE3ED, 0x3FEFDBFDAD9CBE14,\n 0x3C77893B4D91CD9D, 0x3FEFE7C1819E90D8,\n 0x3C5305C14160CC89, 0x3FEFF3C22B8F71F1\n]);\n\n// Handle cases that may overflow or underflow when computing the result that\n// is scale*(1+TMP) without intermediate rounding. The bit representation of\n// scale is in SBITS, however it has a computed exponent that may have\n// overflown into the sign bit so that needs to be adjusted before using it as\n// a double. (int32_t)KI is the k used in the argument reduction and exponent\n// adjustment of scale, positive k here means the result may overflow and\n// negative k means the result may underflow.\n// @ts-ignore: decorator\n@inline\nfunction specialcase(tmp: f64, sbits: u64, ki: u64): f64 {\n const\n Ox1p_1022 = reinterpret(0x0010000000000000), // 0x1p-1022\n Ox1p1009 = reinterpret(0x7F00000000000000); // 0x1p1009\n\n var scale: f64;\n if (!(ki & 0x80000000)) {\n // k > 0, the exponent of scale might have overflowed by <= 460.\n sbits -= u64(1009) << 52;\n scale = reinterpret(sbits);\n return Ox1p1009 * (scale + scale * tmp); // 0x1p1009\n }\n // k < 0, need special care in the subnormal range.\n sbits += u64(1022) << 52;\n // Note: sbits is signed scale.\n scale = reinterpret(sbits);\n var y = scale + scale * tmp;\n if (abs(y) < 1.0) {\n // Round y to the right precision before scaling it into the subnormal\n // range to avoid double rounding that can cause 0.5+E/2 ulp error where\n // E is the worst-case ulp error outside the subnormal range. So this\n // is only useful if the goal is better than 1 ulp worst-case error.\n let one = copysign(1.0, y);\n let lo = scale - y + scale * tmp;\n let hi = one + y;\n lo = one - hi + y + lo;\n y = (hi + lo) - one;\n // Fix the sign of 0.\n if (y == 0.0) y = reinterpret(sbits & 0x8000000000000000);\n }\n return y * Ox1p_1022;\n}\n\n// @ts-ignore: decorator\n@inline\nexport function exp_lut(x: f64): f64 {\n const\n N = 1 << EXP_TABLE_BITS,\n N_MASK = N - 1;\n\n const\n InvLn2N = reinterpret(0x3FF71547652B82FE) * N, // 0x1.71547652b82fep0\n NegLn2hiN = reinterpret(0xBF762E42FEFA0000), // -0x1.62e42fefa0000p-8\n NegLn2loN = reinterpret(0xBD0CF79ABC9E3B3A), // -0x1.cf79abc9e3b3ap-47\n shift = reinterpret(0x4338000000000000); // 0x1.8p52;\n\n const\n C2 = reinterpret(0x3FDFFFFFFFFFFDBD), // __exp_data.poly[0] (0x1.ffffffffffdbdp-2)\n C3 = reinterpret(0x3FC555555555543C), // __exp_data.poly[1] (0x1.555555555543cp-3)\n C4 = reinterpret(0x3FA55555CF172B91), // __exp_data.poly[2] (0x1.55555cf172b91p-5)\n C5 = reinterpret(0x3F81111167A4D017); // __exp_data.poly[3] (0x1.1111167a4d017p-7)\n\n var ux = reinterpret(x);\n var abstop = u32(ux >> 52) & 0x7FF;\n if (abstop - 0x3C9 >= 0x03F) {\n if (abstop - 0x3C9 >= 0x80000000) return 1;\n if (abstop >= 0x409) {\n if (ux == 0xFFF0000000000000) return 0;\n if (abstop >= 0x7FF) {\n return 1.0 + x;\n } else {\n return select(0, Infinity, ux < 0);\n }\n }\n // Large x is special cased below.\n abstop = 0;\n }\n\n // exp(x) = 2^(k/N) * exp(r), with exp(r) in [2^(-1/2N),2^(1/2N)]\n // x = ln2/N*k + r, with int k and r in [-ln2/2N, ln2/2N]\n var z = InvLn2N * x;\n // #if TOINT_INTRINSICS\n // \tkd = roundtoint(z);\n // \tki = converttoint(z);\n // #elif EXP_USE_TOINT_NARROW\n // \t// z - kd is in [-0.5-2^-16, 0.5] in all rounding modes.\n // var kd = z + shift;\n // var ki = reinterpret(kd) >> 16;\n // var kd = ki;\n // #else\n // z - kd is in [-1, 1] in non-nearest rounding modes.\n var kd = z + shift;\n var ki = reinterpret(kd);\n kd -= shift;\n // #endif\n var r = x + kd * NegLn2hiN + kd * NegLn2loN;\n // 2^(k/N) ~= scale * (1 + tail).\n var idx = usize((ki & N_MASK) << 1);\n var top = ki << (52 - EXP_TABLE_BITS);\n\n var tail = reinterpret(load(EXP_DATA_TAB + (idx << alignof()))); // T[idx]\n // This is only a valid scale when -1023*N < k < 1024*N\n var sbits = load(EXP_DATA_TAB + (idx << alignof()), 1 << alignof()) + top; // T[idx + 1]\n // exp(x) = 2^(k/N) * exp(r) ~= scale + scale * (tail + exp(r) - 1).\n // Evaluation is optimized assuming superscalar pipelined execution.\n var r2 = r * r;\n // Without fma the worst case error is 0.25/N ulp larger.\n // Worst case error is less than 0.5+1.11/N+(abs poly error * 2^53) ulp.\n var tmp = tail + r + r2 * (C2 + r * C3) + r2 * r2 * (C4 + r * C5);\n if (abstop == 0) return specialcase(tmp, sbits, ki);\n var scale = reinterpret(sbits);\n // Note: tmp == 0 or |tmp| > 2^-200 and scale > 2^-739, so there\n // is no spurious underflow here even without fma.\n return scale + scale * tmp;\n}\n\n//\n// Lookup data for exp2. See: https://git.musl-libc.org/cgit/musl/tree/src/math/exp2.c\n//\n\n// Handle cases that may overflow or underflow when computing the result that\n// is scale*(1+TMP) without intermediate rounding. The bit representation of\n// scale is in SBITS, however it has a computed exponent that may have\n// overflown into the sign bit so that needs to be adjusted before using it as\n// a double. (int32_t)KI is the k used in the argument reduction and exponent\n// adjustment of scale, positive k here means the result may overflow and\n// negative k means the result may underflow.\n// @ts-ignore: decorator\n@inline\nfunction specialcase2(tmp: f64, sbits: u64, ki: u64): f64 {\n const Ox1p_1022 = reinterpret(0x10000000000000); // 0x1p-1022\n var scale: f64;\n if ((ki & 0x80000000) == 0) {\n // k > 0, the exponent of scale might have overflowed by 1\n sbits -= u64(1) << 52;\n scale = reinterpret(sbits);\n return 2 * (scale * tmp + scale);\n }\n // k < 0, need special care in the subnormal range\n sbits += u64(1022) << 52;\n scale = reinterpret(sbits);\n var y = scale * tmp + scale;\n if (y < 1.0) {\n // Round y to the right precision before scaling it into the subnormal\n // range to avoid double rounding that can cause 0.5+E/2 ulp error where\n // E is the worst-case ulp error outside the subnormal range. So this\n // is only useful if the goal is better than 1 ulp worst-case error.\n let hi: f64, lo: f64;\n lo = scale - y + scale * tmp;\n hi = 1.0 + y;\n lo = 1.0 - hi + y + lo;\n y = (hi + lo) - 1.0;\n }\n return y * Ox1p_1022;\n}\n\n// @ts-ignore: decorator\n@inline\nexport function exp2_lut(x: f64): f64 {\n const\n N = 1 << EXP_TABLE_BITS,\n N_MASK = N - 1,\n shift = reinterpret(0x4338000000000000) / N; // 0x1.8p52\n\n const\n C1 = reinterpret(0x3FE62E42FEFA39EF), // 0x1.62e42fefa39efp-1\n C2 = reinterpret(0x3FCEBFBDFF82C424), // 0x1.ebfbdff82c424p-3\n C3 = reinterpret(0x3FAC6B08D70CF4B5), // 0x1.c6b08d70cf4b5p-5\n C4 = reinterpret(0x3F83B2ABD24650CC), // 0x1.3b2abd24650ccp-7\n C5 = reinterpret(0x3F55D7E09B4E3A84); // 0x1.5d7e09b4e3a84p-10\n\n var ux = reinterpret(x);\n var abstop = u32(ux >> 52) & 0x7ff;\n if (abstop - 0x3C9 >= 0x03F) {\n if (abstop - 0x3C9 >= 0x80000000) return 1.0;\n if (abstop >= 0x409) {\n if (ux == 0xFFF0000000000000) return 0;\n if (abstop >= 0x7FF) return 1.0 + x;\n if (ux >= 0) return Infinity;\n else if (ux >= 0xC090CC0000000000) return 0;\n }\n if ((ux << 1) > 0x811A000000000000) abstop = 0; // Large x is special cased below.\n }\n\n // exp2(x) = 2^(k/N) * 2^r, with 2^r in [2^(-1/2N),2^(1/2N)].\n // x = k/N + r, with int k and r in [-1/2N, 1/2N]\n var kd = x + shift;\n var ki = reinterpret(kd);\n kd -= shift; // k/N for int k\n var r = x - kd;\n // 2^(k/N) ~= scale * (1 + tail)\n var idx = usize((ki & N_MASK) << 1);\n var top = ki << (52 - EXP_TABLE_BITS);\n\n var tail = reinterpret(load(EXP_DATA_TAB + (idx << alignof()), 0 << alignof())); // T[idx])\n // This is only a valid scale when -1023*N < k < 1024*N\n var sbits = load(EXP_DATA_TAB + (idx << alignof()), 1 << alignof()) + top; // T[idx + 1]\n // exp2(x) = 2^(k/N) * 2^r ~= scale + scale * (tail + 2^r - 1).\n // Evaluation is optimized assuming superscalar pipelined execution\n var r2 = r * r;\n // Without fma the worst case error is 0.5/N ulp larger.\n // Worst case error is less than 0.5+0.86/N+(abs poly error * 2^53) ulp.\n var tmp = tail + r * C1 + r2 * (C2 + r * C3) + r2 * r2 * (C4 + r * C5);\n if (abstop == 0) return specialcase2(tmp, sbits, ki);\n var scale = reinterpret(sbits);\n // Note: tmp == 0 or |tmp| > 2^-65 and scale > 2^-928, so there\n // is no spurious underflow here even without fma.\n return scale * tmp + scale;\n}\n\n//\n// Lookup data for log2. See: https://git.musl-libc.org/cgit/musl/tree/src/math/log2.c\n//\n\n// @ts-ignore: decorator\n@inline const LOG2_TABLE_BITS = 6;\n\n/* Algorithm:\n\n x = 2^k z\n log2(x) = k + log2(c) + log2(z/c)\n log2(z/c) = poly(z/c - 1)\n\nwhere z is in [1.6p-1; 1.6p0] which is split into N subintervals and z falls\ninto the ith one, then table entries are computed as\n\n tab[i].invc = 1/c\n tab[i].logc = (double)log2(c)\n tab2[i].chi = (double)c\n tab2[i].clo = (double)(c - (double)c)\n\nwhere c is near the center of the subinterval and is chosen by trying +-2^29\nfloating point invc candidates around 1/center and selecting one for which\n\n 1) the rounding error in 0x1.8p10 + logc is 0,\n 2) the rounding error in z - chi - clo is < 0x1p-64 and\n 3) the rounding error in (double)log2(c) is minimized (< 0x1p-68).\n\nNote: 1) ensures that k + logc can be computed without rounding error, 2)\nensures that z/c - 1 can be computed as (z - chi - clo)*invc with close to a\nsingle rounding error when there is no fast fma for z*invc - 1, 3) ensures\nthat logc + poly(z/c - 1) has small error, however near x == 1 when\n|log2(x)| < 0x1p-4, this is not enough so that is special cased. */\n\n// @ts-ignore: decorator\n@lazy @inline const LOG2_DATA_TAB1 = memory.data([\n // invc , logc\n reinterpret(0x3FF724286BB1ACF8), reinterpret(0xBFE1095FEECDB000),\n reinterpret(0x3FF6E1F766D2CCA1), reinterpret(0xBFE08494BD76D000),\n reinterpret(0x3FF6A13D0E30D48A), reinterpret(0xBFE00143AEE8F800),\n reinterpret(0x3FF661EC32D06C85), reinterpret(0xBFDEFEC5360B4000),\n reinterpret(0x3FF623FA951198F8), reinterpret(0xBFDDFDD91AB7E000),\n reinterpret(0x3FF5E75BA4CF026C), reinterpret(0xBFDCFFAE0CC79000),\n reinterpret(0x3FF5AC055A214FB8), reinterpret(0xBFDC043811FDA000),\n reinterpret(0x3FF571ED0F166E1E), reinterpret(0xBFDB0B67323AE000),\n reinterpret(0x3FF53909590BF835), reinterpret(0xBFDA152F5A2DB000),\n reinterpret(0x3FF5014FED61ADDD), reinterpret(0xBFD9217F5AF86000),\n reinterpret(0x3FF4CAB88E487BD0), reinterpret(0xBFD8304DB0719000),\n reinterpret(0x3FF49539B4334FEE), reinterpret(0xBFD74189F9A9E000),\n reinterpret(0x3FF460CBDFAFD569), reinterpret(0xBFD6552BB5199000),\n reinterpret(0x3FF42D664EE4B953), reinterpret(0xBFD56B23A29B1000),\n reinterpret(0x3FF3FB01111DD8A6), reinterpret(0xBFD483650F5FA000),\n reinterpret(0x3FF3C995B70C5836), reinterpret(0xBFD39DE937F6A000),\n reinterpret(0x3FF3991C4AB6FD4A), reinterpret(0xBFD2BAA1538D6000),\n reinterpret(0x3FF3698E0CE099B5), reinterpret(0xBFD1D98340CA4000),\n reinterpret(0x3FF33AE48213E7B2), reinterpret(0xBFD0FA853A40E000),\n reinterpret(0x3FF30D191985BDB1), reinterpret(0xBFD01D9C32E73000),\n reinterpret(0x3FF2E025CAB271D7), reinterpret(0xBFCE857DA2FA6000),\n reinterpret(0x3FF2B404CF13CD82), reinterpret(0xBFCCD3C8633D8000),\n reinterpret(0x3FF288B02C7CCB50), reinterpret(0xBFCB26034C14A000),\n reinterpret(0x3FF25E2263944DE5), reinterpret(0xBFC97C1C2F4FE000),\n reinterpret(0x3FF234563D8615B1), reinterpret(0xBFC7D6023F800000),\n reinterpret(0x3FF20B46E33EAF38), reinterpret(0xBFC633A71A05E000),\n reinterpret(0x3FF1E2EEFDCDA3DD), reinterpret(0xBFC494F5E9570000),\n reinterpret(0x3FF1BB4A580B3930), reinterpret(0xBFC2F9E424E0A000),\n reinterpret(0x3FF19453847F2200), reinterpret(0xBFC162595AFDC000),\n reinterpret(0x3FF16E06C0D5D73C), reinterpret(0xBFBF9C9A75BD8000),\n reinterpret(0x3FF1485F47B7E4C2), reinterpret(0xBFBC7B575BF9C000),\n reinterpret(0x3FF12358AD0085D1), reinterpret(0xBFB960C60FF48000),\n reinterpret(0x3FF0FEF00F532227), reinterpret(0xBFB64CE247B60000),\n reinterpret(0x3FF0DB2077D03A8F), reinterpret(0xBFB33F78B2014000),\n reinterpret(0x3FF0B7E6D65980D9), reinterpret(0xBFB0387D1A42C000),\n reinterpret(0x3FF0953EFE7B408D), reinterpret(0xBFAA6F9208B50000),\n reinterpret(0x3FF07325CAC53B83), reinterpret(0xBFA47A954F770000),\n reinterpret(0x3FF05197E40D1B5C), reinterpret(0xBF9D23A8C50C0000),\n reinterpret(0x3FF03091C1208EA2), reinterpret(0xBF916A2629780000),\n reinterpret(0x3FF0101025B37E21), reinterpret(0xBF7720F8D8E80000),\n reinterpret(0x3FEFC07EF9CAA76B), reinterpret(0x3F86FE53B1500000),\n reinterpret(0x3FEF4465D3F6F184), reinterpret(0x3FA11CCCE10F8000),\n reinterpret(0x3FEECC079F84107F), reinterpret(0x3FAC4DFC8C8B8000),\n reinterpret(0x3FEE573A99975AE8), reinterpret(0x3FB3AA321E574000),\n reinterpret(0x3FEDE5D6F0BD3DE6), reinterpret(0x3FB918A0D08B8000),\n reinterpret(0x3FED77B681FF38B3), reinterpret(0x3FBE72E9DA044000),\n reinterpret(0x3FED0CB5724DE943), reinterpret(0x3FC1DCD2507F6000),\n reinterpret(0x3FECA4B2DC0E7563), reinterpret(0x3FC476AB03DEA000),\n reinterpret(0x3FEC3F8EE8D6CB51), reinterpret(0x3FC7074377E22000),\n reinterpret(0x3FEBDD2B4F020C4C), reinterpret(0x3FC98EDE8BA94000),\n reinterpret(0x3FEB7D6C006015CA), reinterpret(0x3FCC0DB86AD2E000),\n reinterpret(0x3FEB20366E2E338F), reinterpret(0x3FCE840AAFCEE000),\n reinterpret(0x3FEAC57026295039), reinterpret(0x3FD0790AB4678000),\n reinterpret(0x3FEA6D01BC2731DD), reinterpret(0x3FD1AC056801C000),\n reinterpret(0x3FEA16D3BC3FF18B), reinterpret(0x3FD2DB11D4FEE000),\n reinterpret(0x3FE9C2D14967FEAD), reinterpret(0x3FD406464EC58000),\n reinterpret(0x3FE970E4F47C9902), reinterpret(0x3FD52DBE093AF000),\n reinterpret(0x3FE920FB3982BCF2), reinterpret(0x3FD651902050D000),\n reinterpret(0x3FE8D30187F759F1), reinterpret(0x3FD771D2CDEAF000),\n reinterpret(0x3FE886E5EBB9F66D), reinterpret(0x3FD88E9C857D9000),\n reinterpret(0x3FE83C97B658B994), reinterpret(0x3FD9A80155E16000),\n reinterpret(0x3FE7F405FFC61022), reinterpret(0x3FDABE186ED3D000),\n reinterpret(0x3FE7AD22181415CA), reinterpret(0x3FDBD0F2AEA0E000),\n reinterpret(0x3FE767DCF99EFF8C), reinterpret(0x3FDCE0A43DBF4000)\n]);\n\n// @ts-ignore: decorator\n@lazy @inline const LOG2_DATA_TAB2 = memory.data([\n // chi , clo\n reinterpret(0x3FE6200012B90A8E), reinterpret(0x3C8904AB0644B605),\n reinterpret(0x3FE66000045734A6), reinterpret(0x3C61FF9BEA62F7A9),\n reinterpret(0x3FE69FFFC325F2C5), reinterpret(0x3C827ECFCB3C90BA),\n reinterpret(0x3FE6E00038B95A04), reinterpret(0x3C88FF8856739326),\n reinterpret(0x3FE71FFFE09994E3), reinterpret(0x3C8AFD40275F82B1),\n reinterpret(0x3FE7600015590E10), reinterpret(0xBC72FD75B4238341),\n reinterpret(0x3FE7A00012655BD5), reinterpret(0x3C7808E67C242B76),\n reinterpret(0x3FE7E0003259E9A6), reinterpret(0xBC6208E426F622B7),\n reinterpret(0x3FE81FFFEDB4B2D2), reinterpret(0xBC8402461EA5C92F),\n reinterpret(0x3FE860002DFAFCC3), reinterpret(0x3C6DF7F4A2F29A1F),\n reinterpret(0x3FE89FFFF78C6B50), reinterpret(0xBC8E0453094995FD),\n reinterpret(0x3FE8E00039671566), reinterpret(0xBC8A04F3BEC77B45),\n reinterpret(0x3FE91FFFE2BF1745), reinterpret(0xBC77FA34400E203C),\n reinterpret(0x3FE95FFFCC5C9FD1), reinterpret(0xBC76FF8005A0695D),\n reinterpret(0x3FE9A0003BBA4767), reinterpret(0x3C70F8C4C4EC7E03),\n reinterpret(0x3FE9DFFFE7B92DA5), reinterpret(0x3C8E7FD9478C4602),\n reinterpret(0x3FEA1FFFD72EFDAF), reinterpret(0xBC6A0C554DCDAE7E),\n reinterpret(0x3FEA5FFFDE04FF95), reinterpret(0x3C867DA98CE9B26B),\n reinterpret(0x3FEA9FFFCA5E8D2B), reinterpret(0xBC8284C9B54C13DE),\n reinterpret(0x3FEADFFFDDAD03EA), reinterpret(0x3C5812C8EA602E3C),\n reinterpret(0x3FEB1FFFF10D3D4D), reinterpret(0xBC8EFADDAD27789C),\n reinterpret(0x3FEB5FFFCE21165A), reinterpret(0x3C53CB1719C61237),\n reinterpret(0x3FEB9FFFD950E674), reinterpret(0x3C73F7D94194CE00),\n reinterpret(0x3FEBE000139CA8AF), reinterpret(0x3C750AC4215D9BC0),\n reinterpret(0x3FEC20005B46DF99), reinterpret(0x3C6BEEA653E9C1C9),\n reinterpret(0x3FEC600040B9F7AE), reinterpret(0xBC7C079F274A70D6),\n reinterpret(0x3FECA0006255FD8A), reinterpret(0xBC7A0B4076E84C1F),\n reinterpret(0x3FECDFFFD94C095D), reinterpret(0x3C88F933F99AB5D7),\n reinterpret(0x3FED1FFFF975D6CF), reinterpret(0xBC582C08665FE1BE),\n reinterpret(0x3FED5FFFA2561C93), reinterpret(0xBC7B04289BD295F3),\n reinterpret(0x3FED9FFF9D228B0C), reinterpret(0x3C870251340FA236),\n reinterpret(0x3FEDE00065BC7E16), reinterpret(0xBC75011E16A4D80C),\n reinterpret(0x3FEE200002F64791), reinterpret(0x3C89802F09EF62E0),\n reinterpret(0x3FEE600057D7A6D8), reinterpret(0xBC7E0B75580CF7FA),\n reinterpret(0x3FEEA00027EDC00C), reinterpret(0xBC8C848309459811),\n reinterpret(0x3FEEE0006CF5CB7C), reinterpret(0xBC8F8027951576F4),\n reinterpret(0x3FEF2000782B7DCC), reinterpret(0xBC8F81D97274538F),\n reinterpret(0x3FEF6000260C450A), reinterpret(0xBC4071002727FFDC),\n reinterpret(0x3FEF9FFFE88CD533), reinterpret(0xBC581BDCE1FDA8B0),\n reinterpret(0x3FEFDFFFD50F8689), reinterpret(0x3C87F91ACB918E6E),\n reinterpret(0x3FF0200004292367), reinterpret(0x3C9B7FF365324681),\n reinterpret(0x3FF05FFFE3E3D668), reinterpret(0x3C86FA08DDAE957B),\n reinterpret(0x3FF0A0000A85A757), reinterpret(0xBC57E2DE80D3FB91),\n reinterpret(0x3FF0E0001A5F3FCC), reinterpret(0xBC91823305C5F014),\n reinterpret(0x3FF11FFFF8AFBAF5), reinterpret(0xBC8BFABB6680BAC2),\n reinterpret(0x3FF15FFFE54D91AD), reinterpret(0xBC9D7F121737E7EF),\n reinterpret(0x3FF1A00011AC36E1), reinterpret(0x3C9C000A0516F5FF),\n reinterpret(0x3FF1E00019C84248), reinterpret(0xBC9082FBE4DA5DA0),\n reinterpret(0x3FF220000FFE5E6E), reinterpret(0xBC88FDD04C9CFB43),\n reinterpret(0x3FF26000269FD891), reinterpret(0x3C8CFE2A7994D182),\n reinterpret(0x3FF2A00029A6E6DA), reinterpret(0xBC700273715E8BC5),\n reinterpret(0x3FF2DFFFE0293E39), reinterpret(0x3C9B7C39DAB2A6F9),\n reinterpret(0x3FF31FFFF7DCF082), reinterpret(0x3C7DF1336EDC5254),\n reinterpret(0x3FF35FFFF05A8B60), reinterpret(0xBC9E03564CCD31EB),\n reinterpret(0x3FF3A0002E0EAECC), reinterpret(0x3C75F0E74BD3A477),\n reinterpret(0x3FF3E000043BB236), reinterpret(0x3C9C7DCB149D8833),\n reinterpret(0x3FF4200002D187FF), reinterpret(0x3C7E08AFCF2D3D28),\n reinterpret(0x3FF460000D387CB1), reinterpret(0x3C820837856599A6),\n reinterpret(0x3FF4A00004569F89), reinterpret(0xBC89FA5C904FBCD2),\n reinterpret(0x3FF4E000043543F3), reinterpret(0xBC781125ED175329),\n reinterpret(0x3FF51FFFCC027F0F), reinterpret(0x3C9883D8847754DC),\n reinterpret(0x3FF55FFFFD87B36F), reinterpret(0xBC8709E731D02807),\n reinterpret(0x3FF59FFFF21DF7BA), reinterpret(0x3C87F79F68727B02),\n reinterpret(0x3FF5DFFFEBFC3481), reinterpret(0xBC9180902E30E93E)\n]);\n\n// @ts-ignore: decorator\n@inline\nexport function log2_lut(x: f64): f64 {\n const N_MASK = (1 << LOG2_TABLE_BITS) - 1;\n\n const\n LO: u64 = 0x3FEEA4AF00000000, // reinterpret(1.0 - 0x1.5b51p-5)\n HI: u64 = 0x3FF0B55900000000; // reinterpret(1.0 + 0x1.6ab2p-5)\n\n const\n InvLn2hi = reinterpret(0x3FF7154765200000), // 0x1.7154765200000p+0\n InvLn2lo = reinterpret(0x3DE705FC2EEFA200), // 0x1.705fc2eefa200p-33\n Ox1p52 = reinterpret(0x4330000000000000); // 0x1p52\n\n const\n B0 = reinterpret(0xBFE71547652B82FE), // -0x1.71547652b82fep-1\n B1 = reinterpret(0x3FDEC709DC3A03F7), // 0x1.ec709dc3a03f7p-2\n B2 = reinterpret(0xBFD71547652B7C3F), // -0x1.71547652b7c3fp-2\n B3 = reinterpret(0x3FD2776C50F05BE4), // 0x1.2776c50f05be4p-2\n B4 = reinterpret(0xBFCEC709DD768FE5), // -0x1.ec709dd768fe5p-3\n B5 = reinterpret(0x3FCA61761EC4E736), // 0x1.a61761ec4e736p-3\n B6 = reinterpret(0xBFC7153FBC64A79B), // -0x1.7153fbc64a79bp-3\n B7 = reinterpret(0x3FC484D154F01B4A), // 0x1.484d154f01b4ap-3\n B8 = reinterpret(0xBFC289E4A72C383C), // -0x1.289e4a72c383cp-3\n B9 = reinterpret(0x3FC0B32F285AEE66); // 0x1.0b32f285aee66p-3\n\n const\n A0 = reinterpret(0xBFE71547652B8339), // -0x1.71547652b8339p-1\n A1 = reinterpret(0x3FDEC709DC3A04BE), // 0x1.ec709dc3a04bep-2\n A2 = reinterpret(0xBFD7154764702FFB), // -0x1.7154764702ffbp-2\n A3 = reinterpret(0x3FD2776C50034C48), // 0x1.2776c50034c48p-2\n A4 = reinterpret(0xBFCEC7B328EA92BC), // -0x1.ec7b328ea92bcp-3\n A5 = reinterpret(0x3FCA6225E117F92E); // 0x1.a6225e117f92ep-3\n\n var ix = reinterpret(x);\n if (ix - LO < HI - LO) {\n let r = x - 1.0;\n // #if __FP_FAST_FMA\n // hi = r * InvLn2hi;\n // lo = r * InvLn2lo + __builtin_fma(r, InvLn2hi, -hi);\n // #else\n let rhi = reinterpret(reinterpret(r) & 0xFFFFFFFF00000000);\n let rlo = r - rhi;\n let hi = rhi * InvLn2hi;\n let lo = rlo * InvLn2hi + r * InvLn2lo;\n // #endif\n let r2 = r * r; // rounding error: 0x1p-62\n let r4 = r2 * r2;\n // Worst-case error is less than 0.54 ULP (0.55 ULP without fma)\n let p = r2 * (B0 + r * B1);\n let y = hi + p;\n lo += hi - y + p;\n lo += r4 * (B2 + r * B3 + r2 * (B4 + r * B5) +\n r4 * (B6 + r * B7 + r2 * (B8 + r * B9)));\n return y + lo;\n }\n var top = u32(ix >> 48);\n if (top - 0x0010 >= 0x7ff0 - 0x0010) {\n // x < 0x1p-1022 or inf or nan.\n if ((ix << 1) == 0) return -1.0 / (x * x);\n if (ix == 0x7FF0000000000000) return x; // log(inf) == inf\n if ((top & 0x8000) || (top & 0x7FF0) == 0x7FF0) return (x - x) / (x - x);\n // x is subnormal, normalize it.\n ix = reinterpret(x * Ox1p52);\n ix -= u64(52) << 52;\n }\n\n // x = 2^k z; where z is in range [OFF,2*OFF) and exact.\n // The range is split into N subintervals.\n // The ith subinterval contains z and c is near its center.\n var tmp = ix - 0x3FE6000000000000;\n var i = ((tmp >> (52 - LOG2_TABLE_BITS)) & N_MASK);\n var k = tmp >> 52;\n var iz = ix - (tmp & 0xFFF0000000000000);\n\n var invc = load(LOG2_DATA_TAB1 + (i << (1 + alignof())), 0 << alignof()); // T[i].invc;\n var logc = load(LOG2_DATA_TAB1 + (i << (1 + alignof())), 1 << alignof()); // T[i].logc;\n var z = reinterpret(iz);\n var kd = k;\n\n // log2(x) = log2(z/c) + log2(c) + k.\n // r ~= z/c - 1, |r| < 1/(2*N).\n // #if __FP_FAST_FMA\n // \t// rounding error: 0x1p-55/N.\n // \tr = __builtin_fma(z, invc, -1.0);\n // \tt1 = r * InvLn2hi;\n // \tt2 = r * InvLn2lo + __builtin_fma(r, InvLn2hi, -t1);\n // #else\n // rounding error: 0x1p-55/N + 0x1p-65.\n var chi = load(LOG2_DATA_TAB2 + (i << (1 + alignof())), 0 << alignof()); // T[i].chi;\n var clo = load(LOG2_DATA_TAB2 + (i << (1 + alignof())), 1 << alignof()); // T[i].clo;\n\n var r = (z - chi - clo) * invc;\n var rhi = reinterpret(reinterpret(r) & 0xFFFFFFFF00000000);\n var rlo = r - rhi;\n var t1 = rhi * InvLn2hi;\n var t2 = rlo * InvLn2hi + r * InvLn2lo;\n // #endif\n\n // hi + lo = r/ln2 + log2(c) + k\n var t3 = kd + logc;\n var hi = t3 + t1;\n var lo = t3 - hi + t1 + t2;\n\n // log2(r+1) = r/ln2 + r^2*poly(r)\n // Evaluation is optimized assuming superscalar pipelined execution\n var r2 = r * r; // rounding error: 0x1p-54/N^2\n // Worst-case error if |y| > 0x1p-4: 0.547 ULP (0.550 ULP without fma).\n // ~ 0.5 + 2/N/ln2 + abs-poly-error*0x1p56 ULP (+ 0.003 ULP without fma).\n var p = A0 + r * A1 + r2 * (A2 + r * A3) + (r2 * r2) * (A4 + r * A5);\n return lo + r2 * p + hi;\n}\n\n//\n// Lookup data for log. See: https://git.musl-libc.org/cgit/musl/tree/src/math/log.c\n//\n\n// @ts-ignore: decorator\n@inline const LOG_TABLE_BITS = 7;\n\n/* Algorithm:\n\n x = 2^k z\n log(x) = k ln2 + log(c) + log(z/c)\n log(z/c) = poly(z/c - 1)\n\nwhere z is in [1.6p-1; 1.6p0] which is split into N subintervals and z falls\ninto the ith one, then table entries are computed as\n\n tab[i].invc = 1/c\n tab[i].logc = (double)log(c)\n tab2[i].chi = (double)c\n tab2[i].clo = (double)(c - (double)c)\n\nwhere c is near the center of the subinterval and is chosen by trying +-2^29\nfloating point invc candidates around 1/center and selecting one for which\n\n 1) the rounding error in 0x1.8p9 + logc is 0,\n 2) the rounding error in z - chi - clo is < 0x1p-66 and\n 3) the rounding error in (double)log(c) is minimized (< 0x1p-66).\n\nNote: 1) ensures that k*ln2hi + logc can be computed without rounding error,\n2) ensures that z/c - 1 can be computed as (z - chi - clo)*invc with close to\na single rounding error when there is no fast fma for z*invc - 1, 3) ensures\nthat logc + poly(z/c - 1) has small error, however near x == 1 when\n|log(x)| < 0x1p-4, this is not enough so that is special cased.*/\n\n// @ts-ignore: decorator\n@lazy @inline const LOG_DATA_TAB1 = memory.data([\n // invc , logc\n reinterpret(0x3FF734F0C3E0DE9F), reinterpret(0xBFD7CC7F79E69000),\n reinterpret(0x3FF713786A2CE91F), reinterpret(0xBFD76FEEC20D0000),\n reinterpret(0x3FF6F26008FAB5A0), reinterpret(0xBFD713E31351E000),\n reinterpret(0x3FF6D1A61F138C7D), reinterpret(0xBFD6B85B38287800),\n reinterpret(0x3FF6B1490BC5B4D1), reinterpret(0xBFD65D5590807800),\n reinterpret(0x3FF69147332F0CBA), reinterpret(0xBFD602D076180000),\n reinterpret(0x3FF6719F18224223), reinterpret(0xBFD5A8CA86909000),\n reinterpret(0x3FF6524F99A51ED9), reinterpret(0xBFD54F4356035000),\n reinterpret(0x3FF63356AA8F24C4), reinterpret(0xBFD4F637C36B4000),\n reinterpret(0x3FF614B36B9DDC14), reinterpret(0xBFD49DA7FDA85000),\n reinterpret(0x3FF5F66452C65C4C), reinterpret(0xBFD445923989A800),\n reinterpret(0x3FF5D867B5912C4F), reinterpret(0xBFD3EDF439B0B800),\n reinterpret(0x3FF5BABCCB5B90DE), reinterpret(0xBFD396CE448F7000),\n reinterpret(0x3FF59D61F2D91A78), reinterpret(0xBFD3401E17BDA000),\n reinterpret(0x3FF5805612465687), reinterpret(0xBFD2E9E2EF468000),\n reinterpret(0x3FF56397CEE76BD3), reinterpret(0xBFD2941B3830E000),\n reinterpret(0x3FF54725E2A77F93), reinterpret(0xBFD23EC58CDA8800),\n reinterpret(0x3FF52AFF42064583), reinterpret(0xBFD1E9E129279000),\n reinterpret(0x3FF50F22DBB2BDDF), reinterpret(0xBFD1956D2B48F800),\n reinterpret(0x3FF4F38F4734DED7), reinterpret(0xBFD141679AB9F800),\n reinterpret(0x3FF4D843CFDE2840), reinterpret(0xBFD0EDD094EF9800),\n reinterpret(0x3FF4BD3EC078A3C8), reinterpret(0xBFD09AA518DB1000),\n reinterpret(0x3FF4A27FC3E0258A), reinterpret(0xBFD047E65263B800),\n reinterpret(0x3FF4880524D48434), reinterpret(0xBFCFEB224586F000),\n reinterpret(0x3FF46DCE1B192D0B), reinterpret(0xBFCF474A7517B000),\n reinterpret(0x3FF453D9D3391854), reinterpret(0xBFCEA4443D103000),\n reinterpret(0x3FF43A2744B4845A), reinterpret(0xBFCE020D44E9B000),\n reinterpret(0x3FF420B54115F8FB), reinterpret(0xBFCD60A22977F000),\n reinterpret(0x3FF40782DA3EF4B1), reinterpret(0xBFCCC00104959000),\n reinterpret(0x3FF3EE8F5D57FE8F), reinterpret(0xBFCC202956891000),\n reinterpret(0x3FF3D5D9A00B4CE9), reinterpret(0xBFCB81178D811000),\n reinterpret(0x3FF3BD60C010C12B), reinterpret(0xBFCAE2C9CCD3D000),\n reinterpret(0x3FF3A5242B75DAB8), reinterpret(0xBFCA45402E129000),\n reinterpret(0x3FF38D22CD9FD002), reinterpret(0xBFC9A877681DF000),\n reinterpret(0x3FF3755BC5847A1C), reinterpret(0xBFC90C6D69483000),\n reinterpret(0x3FF35DCE49AD36E2), reinterpret(0xBFC87120A645C000),\n reinterpret(0x3FF34679984DD440), reinterpret(0xBFC7D68FB4143000),\n reinterpret(0x3FF32F5CCEFFCB24), reinterpret(0xBFC73CB83C627000),\n reinterpret(0x3FF3187775A10D49), reinterpret(0xBFC6A39A9B376000),\n reinterpret(0x3FF301C8373E3990), reinterpret(0xBFC60B3154B7A000),\n reinterpret(0x3FF2EB4EBB95F841), reinterpret(0xBFC5737D76243000),\n reinterpret(0x3FF2D50A0219A9D1), reinterpret(0xBFC4DC7B8FC23000),\n reinterpret(0x3FF2BEF9A8B7FD2A), reinterpret(0xBFC4462C51D20000),\n reinterpret(0x3FF2A91C7A0C1BAB), reinterpret(0xBFC3B08ABC830000),\n reinterpret(0x3FF293726014B530), reinterpret(0xBFC31B996B490000),\n reinterpret(0x3FF27DFA5757A1F5), reinterpret(0xBFC2875490A44000),\n reinterpret(0x3FF268B39B1D3BBF), reinterpret(0xBFC1F3B9F879A000),\n reinterpret(0x3FF2539D838FF5BD), reinterpret(0xBFC160C8252CA000),\n reinterpret(0x3FF23EB7AAC9083B), reinterpret(0xBFC0CE7F57F72000),\n reinterpret(0x3FF22A012BA940B6), reinterpret(0xBFC03CDC49FEA000),\n reinterpret(0x3FF2157996CC4132), reinterpret(0xBFBF57BDBC4B8000),\n reinterpret(0x3FF201201DD2FC9B), reinterpret(0xBFBE370896404000),\n reinterpret(0x3FF1ECF4494D480B), reinterpret(0xBFBD17983EF94000),\n reinterpret(0x3FF1D8F5528F6569), reinterpret(0xBFBBF9674ED8A000),\n reinterpret(0x3FF1C52311577E7C), reinterpret(0xBFBADC79202F6000),\n reinterpret(0x3FF1B17C74CB26E9), reinterpret(0xBFB9C0C3E7288000),\n reinterpret(0x3FF19E010C2C1AB6), reinterpret(0xBFB8A646B372C000),\n reinterpret(0x3FF18AB07BB670BD), reinterpret(0xBFB78D01B3AC0000),\n reinterpret(0x3FF1778A25EFBCB6), reinterpret(0xBFB674F145380000),\n reinterpret(0x3FF1648D354C31DA), reinterpret(0xBFB55E0E6D878000),\n reinterpret(0x3FF151B990275FDD), reinterpret(0xBFB4485CDEA1E000),\n reinterpret(0x3FF13F0EA432D24C), reinterpret(0xBFB333D94D6AA000),\n reinterpret(0x3FF12C8B7210F9DA), reinterpret(0xBFB22079F8C56000),\n reinterpret(0x3FF11A3028ECB531), reinterpret(0xBFB10E4698622000),\n reinterpret(0x3FF107FBDA8434AF), reinterpret(0xBFAFFA6C6AD20000),\n reinterpret(0x3FF0F5EE0F4E6BB3), reinterpret(0xBFADDA8D4A774000),\n reinterpret(0x3FF0E4065D2A9FCE), reinterpret(0xBFABBCECE4850000),\n reinterpret(0x3FF0D244632CA521), reinterpret(0xBFA9A1894012C000),\n reinterpret(0x3FF0C0A77CE2981A), reinterpret(0xBFA788583302C000),\n reinterpret(0x3FF0AF2F83C636D1), reinterpret(0xBFA5715E67D68000),\n reinterpret(0x3FF09DDB98A01339), reinterpret(0xBFA35C8A49658000),\n reinterpret(0x3FF08CABAF52E7DF), reinterpret(0xBFA149E364154000),\n reinterpret(0x3FF07B9F2F4E28FB), reinterpret(0xBF9E72C082EB8000),\n reinterpret(0x3FF06AB58C358F19), reinterpret(0xBF9A55F152528000),\n reinterpret(0x3FF059EEA5ECF92C), reinterpret(0xBF963D62CF818000),\n reinterpret(0x3FF04949CDD12C90), reinterpret(0xBF9228FB8CAA0000),\n reinterpret(0x3FF038C6C6F0ADA9), reinterpret(0xBF8C317B20F90000),\n reinterpret(0x3FF02865137932A9), reinterpret(0xBF8419355DAA0000),\n reinterpret(0x3FF0182427EA7348), reinterpret(0xBF781203C2EC0000),\n reinterpret(0x3FF008040614B195), reinterpret(0xBF60040979240000),\n reinterpret(0x3FEFE01FF726FA1A), reinterpret(0x3F6FEFF384900000),\n reinterpret(0x3FEFA11CC261EA74), reinterpret(0x3F87DC41353D0000),\n reinterpret(0x3FEF6310B081992E), reinterpret(0x3F93CEA3C4C28000),\n reinterpret(0x3FEF25F63CEEADCD), reinterpret(0x3F9B9FC114890000),\n reinterpret(0x3FEEE9C8039113E7), reinterpret(0x3FA1B0D8CE110000),\n reinterpret(0x3FEEAE8078CBB1AB), reinterpret(0x3FA58A5BD001C000),\n reinterpret(0x3FEE741AA29D0C9B), reinterpret(0x3FA95C8340D88000),\n reinterpret(0x3FEE3A91830A99B5), reinterpret(0x3FAD276AEF578000),\n reinterpret(0x3FEE01E009609A56), reinterpret(0x3FB07598E598C000),\n reinterpret(0x3FEDCA01E577BB98), reinterpret(0x3FB253F5E30D2000),\n reinterpret(0x3FED92F20B7C9103), reinterpret(0x3FB42EDD8B380000),\n reinterpret(0x3FED5CAC66FB5CCE), reinterpret(0x3FB606598757C000),\n reinterpret(0x3FED272CAA5EDE9D), reinterpret(0x3FB7DA76356A0000),\n reinterpret(0x3FECF26E3E6B2CCD), reinterpret(0x3FB9AB434E1C6000),\n reinterpret(0x3FECBE6DA2A77902), reinterpret(0x3FBB78C7BB0D6000),\n reinterpret(0x3FEC8B266D37086D), reinterpret(0x3FBD431332E72000),\n reinterpret(0x3FEC5894BD5D5804), reinterpret(0x3FBF0A3171DE6000),\n reinterpret(0x3FEC26B533BB9F8C), reinterpret(0x3FC067152B914000),\n reinterpret(0x3FEBF583EEECE73F), reinterpret(0x3FC147858292B000),\n reinterpret(0x3FEBC4FD75DB96C1), reinterpret(0x3FC2266ECDCA3000),\n reinterpret(0x3FEB951E0C864A28), reinterpret(0x3FC303D7A6C55000),\n reinterpret(0x3FEB65E2C5EF3E2C), reinterpret(0x3FC3DFC33C331000),\n reinterpret(0x3FEB374867C9888B), reinterpret(0x3FC4BA366B7A8000),\n reinterpret(0x3FEB094B211D304A), reinterpret(0x3FC5933928D1F000),\n reinterpret(0x3FEADBE885F2EF7E), reinterpret(0x3FC66ACD2418F000),\n reinterpret(0x3FEAAF1D31603DA2), reinterpret(0x3FC740F8EC669000),\n reinterpret(0x3FEA82E63FD358A7), reinterpret(0x3FC815C0F51AF000),\n reinterpret(0x3FEA5740EF09738B), reinterpret(0x3FC8E92954F68000),\n reinterpret(0x3FEA2C2A90AB4B27), reinterpret(0x3FC9BB3602F84000),\n reinterpret(0x3FEA01A01393F2D1), reinterpret(0x3FCA8BED1C2C0000),\n reinterpret(0x3FE9D79F24DB3C1B), reinterpret(0x3FCB5B515C01D000),\n reinterpret(0x3FE9AE2505C7B190), reinterpret(0x3FCC2967CCBCC000),\n reinterpret(0x3FE9852EF297CE2F), reinterpret(0x3FCCF635D5486000),\n reinterpret(0x3FE95CBAEEA44B75), reinterpret(0x3FCDC1BD3446C000),\n reinterpret(0x3FE934C69DE74838), reinterpret(0x3FCE8C01B8CFE000),\n reinterpret(0x3FE90D4F2F6752E6), reinterpret(0x3FCF5509C0179000),\n reinterpret(0x3FE8E6528EFFD79D), reinterpret(0x3FD00E6C121FB800),\n reinterpret(0x3FE8BFCE9FCC007C), reinterpret(0x3FD071B80E93D000),\n reinterpret(0x3FE899C0DABEC30E), reinterpret(0x3FD0D46B9E867000),\n reinterpret(0x3FE87427AA2317FB), reinterpret(0x3FD13687334BD000),\n reinterpret(0x3FE84F00ACB39A08), reinterpret(0x3FD1980D67234800),\n reinterpret(0x3FE82A49E8653E55), reinterpret(0x3FD1F8FFE0CC8000),\n reinterpret(0x3FE8060195F40260), reinterpret(0x3FD2595FD7636800),\n reinterpret(0x3FE7E22563E0A329), reinterpret(0x3FD2B9300914A800),\n reinterpret(0x3FE7BEB377DCB5AD), reinterpret(0x3FD3187210436000),\n reinterpret(0x3FE79BAA679725C2), reinterpret(0x3FD377266DEC1800),\n reinterpret(0x3FE77907F2170657), reinterpret(0x3FD3D54FFBAF3000),\n reinterpret(0x3FE756CADBD6130C), reinterpret(0x3FD432EEE32FE000)\n]);\n\n// @ts-ignore: decorator\n@lazy @inline const LOG_DATA_TAB2 = memory.data([\n // chi , clo\n reinterpret(0x3FE61000014FB66B), reinterpret(0x3C7E026C91425B3C),\n reinterpret(0x3FE63000034DB495), reinterpret(0x3C8DBFEA48005D41),\n reinterpret(0x3FE650000D94D478), reinterpret(0x3C8E7FA786D6A5B7),\n reinterpret(0x3FE67000074E6FAD), reinterpret(0x3C61FCEA6B54254C),\n reinterpret(0x3FE68FFFFEDF0FAE), reinterpret(0xBC7C7E274C590EFD),\n reinterpret(0x3FE6B0000763C5BC), reinterpret(0xBC8AC16848DCDA01),\n reinterpret(0x3FE6D0001E5CC1F6), reinterpret(0x3C833F1C9D499311),\n reinterpret(0x3FE6EFFFEB05F63E), reinterpret(0xBC7E80041AE22D53),\n reinterpret(0x3FE710000E869780), reinterpret(0x3C7BFF6671097952),\n reinterpret(0x3FE72FFFFC67E912), reinterpret(0x3C8C00E226BD8724),\n reinterpret(0x3FE74FFFDF81116A), reinterpret(0xBC6E02916EF101D2),\n reinterpret(0x3FE770000F679C90), reinterpret(0xBC67FC71CD549C74),\n reinterpret(0x3FE78FFFFA7EC835), reinterpret(0x3C81BEC19EF50483),\n reinterpret(0x3FE7AFFFFE20C2E6), reinterpret(0xBC707E1729CC6465),\n reinterpret(0x3FE7CFFFED3FC900), reinterpret(0xBC808072087B8B1C),\n reinterpret(0x3FE7EFFFE9261A76), reinterpret(0x3C8DC0286D9DF9AE),\n reinterpret(0x3FE81000049CA3E8), reinterpret(0x3C897FD251E54C33),\n reinterpret(0x3FE8300017932C8F), reinterpret(0xBC8AFEE9B630F381),\n reinterpret(0x3FE850000633739C), reinterpret(0x3C89BFBF6B6535BC),\n reinterpret(0x3FE87000204289C6), reinterpret(0xBC8BBF65F3117B75),\n reinterpret(0x3FE88FFFEBF57904), reinterpret(0xBC89006EA23DCB57),\n reinterpret(0x3FE8B00022BC04DF), reinterpret(0xBC7D00DF38E04B0A),\n reinterpret(0x3FE8CFFFE50C1B8A), reinterpret(0xBC88007146FF9F05),\n reinterpret(0x3FE8EFFFFC918E43), reinterpret(0x3C83817BD07A7038),\n reinterpret(0x3FE910001EFA5FC7), reinterpret(0x3C893E9176DFB403),\n reinterpret(0x3FE9300013467BB9), reinterpret(0x3C7F804E4B980276),\n reinterpret(0x3FE94FFFE6EE076F), reinterpret(0xBC8F7EF0D9FF622E),\n reinterpret(0x3FE96FFFDE3C12D1), reinterpret(0xBC7082AA962638BA),\n reinterpret(0x3FE98FFFF4458A0D), reinterpret(0xBC87801B9164A8EF),\n reinterpret(0x3FE9AFFFDD982E3E), reinterpret(0xBC8740E08A5A9337),\n reinterpret(0x3FE9CFFFED49FB66), reinterpret(0x3C3FCE08C19BE000),\n reinterpret(0x3FE9F00020F19C51), reinterpret(0xBC8A3FAA27885B0A),\n reinterpret(0x3FEA10001145B006), reinterpret(0x3C74FF489958DA56),\n reinterpret(0x3FEA300007BBF6FA), reinterpret(0x3C8CBEAB8A2B6D18),\n reinterpret(0x3FEA500010971D79), reinterpret(0x3C88FECADD787930),\n reinterpret(0x3FEA70001DF52E48), reinterpret(0xBC8F41763DD8ABDB),\n reinterpret(0x3FEA90001C593352), reinterpret(0xBC8EBF0284C27612),\n reinterpret(0x3FEAB0002A4F3E4B), reinterpret(0xBC69FD043CFF3F5F),\n reinterpret(0x3FEACFFFD7AE1ED1), reinterpret(0xBC823EE7129070B4),\n reinterpret(0x3FEAEFFFEE510478), reinterpret(0x3C6A063EE00EDEA3),\n reinterpret(0x3FEB0FFFDB650D5B), reinterpret(0x3C5A06C8381F0AB9),\n reinterpret(0x3FEB2FFFFEAACA57), reinterpret(0xBC79011E74233C1D),\n reinterpret(0x3FEB4FFFD995BADC), reinterpret(0xBC79FF1068862A9F),\n reinterpret(0x3FEB7000249E659C), reinterpret(0x3C8AFF45D0864F3E),\n reinterpret(0x3FEB8FFFF9871640), reinterpret(0x3C7CFE7796C2C3F9),\n reinterpret(0x3FEBAFFFD204CB4F), reinterpret(0xBC63FF27EEF22BC4),\n reinterpret(0x3FEBCFFFD2415C45), reinterpret(0xBC6CFFB7EE3BEA21),\n reinterpret(0x3FEBEFFFF86309DF), reinterpret(0xBC814103972E0B5C),\n reinterpret(0x3FEC0FFFE1B57653), reinterpret(0x3C8BC16494B76A19),\n reinterpret(0x3FEC2FFFF1FA57E3), reinterpret(0xBC64FEEF8D30C6ED),\n reinterpret(0x3FEC4FFFDCBFE424), reinterpret(0xBC843F68BCEC4775),\n reinterpret(0x3FEC6FFFED54B9F7), reinterpret(0x3C847EA3F053E0EC),\n reinterpret(0x3FEC8FFFEB998FD5), reinterpret(0x3C7383068DF992F1),\n reinterpret(0x3FECB0002125219A), reinterpret(0xBC68FD8E64180E04),\n reinterpret(0x3FECCFFFDD94469C), reinterpret(0x3C8E7EBE1CC7EA72),\n reinterpret(0x3FECEFFFEAFDC476), reinterpret(0x3C8EBE39AD9F88FE),\n reinterpret(0x3FED1000169AF82B), reinterpret(0x3C757D91A8B95A71),\n reinterpret(0x3FED30000D0FF71D), reinterpret(0x3C89C1906970C7DA),\n reinterpret(0x3FED4FFFEA790FC4), reinterpret(0xBC580E37C558FE0C),\n reinterpret(0x3FED70002EDC87E5), reinterpret(0xBC7F80D64DC10F44),\n reinterpret(0x3FED900021DC82AA), reinterpret(0xBC747C8F94FD5C5C),\n reinterpret(0x3FEDAFFFD86B0283), reinterpret(0x3C8C7F1DC521617E),\n reinterpret(0x3FEDD000296C4739), reinterpret(0x3C88019EB2FFB153),\n reinterpret(0x3FEDEFFFE54490F5), reinterpret(0x3C6E00D2C652CC89),\n reinterpret(0x3FEE0FFFCDABF694), reinterpret(0xBC7F8340202D69D2),\n reinterpret(0x3FEE2FFFDB52C8DD), reinterpret(0x3C7B00C1CA1B0864),\n reinterpret(0x3FEE4FFFF24216EF), reinterpret(0x3C72FFA8B094AB51),\n reinterpret(0x3FEE6FFFE88A5E11), reinterpret(0xBC57F673B1EFBE59),\n reinterpret(0x3FEE9000119EFF0D), reinterpret(0xBC84808D5E0BC801),\n reinterpret(0x3FEEAFFFDFA51744), reinterpret(0x3C780006D54320B5),\n reinterpret(0x3FEED0001A127FA1), reinterpret(0xBC5002F860565C92),\n reinterpret(0x3FEEF00007BABCC4), reinterpret(0xBC8540445D35E611),\n reinterpret(0x3FEF0FFFF57A8D02), reinterpret(0xBC4FFB3139EF9105),\n reinterpret(0x3FEF30001EE58AC7), reinterpret(0x3C8A81ACF2731155),\n reinterpret(0x3FEF4FFFF5823494), reinterpret(0x3C8A3F41D4D7C743),\n reinterpret(0x3FEF6FFFFCA94C6B), reinterpret(0xBC6202F41C987875),\n reinterpret(0x3FEF8FFFE1F9C441), reinterpret(0x3C777DD1F477E74B),\n reinterpret(0x3FEFAFFFD2E0E37E), reinterpret(0xBC6F01199A7CA331),\n reinterpret(0x3FEFD0001C77E49E), reinterpret(0x3C7181EE4BCEACB1),\n reinterpret(0x3FEFEFFFF7E0C331), reinterpret(0xBC6E05370170875A),\n reinterpret(0x3FF00FFFF465606E), reinterpret(0xBC8A7EAD491C0ADA),\n reinterpret(0x3FF02FFFF3867A58), reinterpret(0xBC977F69C3FCB2E0),\n reinterpret(0x3FF04FFFFDFC0D17), reinterpret(0x3C97BFFE34CB945B),\n reinterpret(0x3FF0700003CD4D82), reinterpret(0x3C820083C0E456CB),\n reinterpret(0x3FF08FFFF9F2CBE8), reinterpret(0xBC6DFFDFBE37751A),\n reinterpret(0x3FF0B000010CDA65), reinterpret(0xBC913F7FAEE626EB),\n reinterpret(0x3FF0D00001A4D338), reinterpret(0x3C807DFA79489FF7),\n reinterpret(0x3FF0EFFFFADAFDFD), reinterpret(0xBC77040570D66BC0),\n reinterpret(0x3FF110000BBAFD96), reinterpret(0x3C8E80D4846D0B62),\n reinterpret(0x3FF12FFFFAE5F45D), reinterpret(0x3C9DBFFA64FD36EF),\n reinterpret(0x3FF150000DD59AD9), reinterpret(0x3C9A0077701250AE),\n reinterpret(0x3FF170000F21559A), reinterpret(0x3C8DFDF9E2E3DEEE),\n reinterpret(0x3FF18FFFFC275426), reinterpret(0x3C910030DC3B7273),\n reinterpret(0x3FF1B000123D3C59), reinterpret(0x3C997F7980030188),\n reinterpret(0x3FF1CFFFF8299EB7), reinterpret(0xBC65F932AB9F8C67),\n reinterpret(0x3FF1EFFFF48AD400), reinterpret(0x3C937FBF9DA75BEB),\n reinterpret(0x3FF210000C8B86A4), reinterpret(0x3C9F806B91FD5B22),\n reinterpret(0x3FF2300003854303), reinterpret(0x3C93FFC2EB9FBF33),\n reinterpret(0x3FF24FFFFFBCF684), reinterpret(0x3C7601E77E2E2E72),\n reinterpret(0x3FF26FFFF52921D9), reinterpret(0x3C7FFCBB767F0C61),\n reinterpret(0x3FF2900014933A3C), reinterpret(0xBC7202CA3C02412B),\n reinterpret(0x3FF2B00014556313), reinterpret(0xBC92808233F21F02),\n reinterpret(0x3FF2CFFFEBFE523B), reinterpret(0xBC88FF7E384FDCF2),\n reinterpret(0x3FF2F0000BB8AD96), reinterpret(0xBC85FF51503041C5),\n reinterpret(0x3FF30FFFFB7AE2AF), reinterpret(0xBC810071885E289D),\n reinterpret(0x3FF32FFFFEAC5F7F), reinterpret(0xBC91FF5D3FB7B715),\n reinterpret(0x3FF350000CA66756), reinterpret(0x3C957F82228B82BD),\n reinterpret(0x3FF3700011FBF721), reinterpret(0x3C8000BAC40DD5CC),\n reinterpret(0x3FF38FFFF9592FB9), reinterpret(0xBC943F9D2DB2A751),\n reinterpret(0x3FF3B00004DDD242), reinterpret(0x3C857F6B707638E1),\n reinterpret(0x3FF3CFFFF5B2C957), reinterpret(0x3C7A023A10BF1231),\n reinterpret(0x3FF3EFFFEAB0B418), reinterpret(0x3C987F6D66B152B0),\n reinterpret(0x3FF410001532AFF4), reinterpret(0x3C67F8375F198524),\n reinterpret(0x3FF4300017478B29), reinterpret(0x3C8301E672DC5143),\n reinterpret(0x3FF44FFFE795B463), reinterpret(0x3C89FF69B8B2895A),\n reinterpret(0x3FF46FFFE80475E0), reinterpret(0xBC95C0B19BC2F254),\n reinterpret(0x3FF48FFFEF6FC1E7), reinterpret(0x3C9B4009F23A2A72),\n reinterpret(0x3FF4AFFFE5BEA704), reinterpret(0xBC94FFB7BF0D7D45),\n reinterpret(0x3FF4D000171027DE), reinterpret(0xBC99C06471DC6A3D),\n reinterpret(0x3FF4F0000FF03EE2), reinterpret(0x3C977F890B85531C),\n reinterpret(0x3FF5100012DC4BD1), reinterpret(0x3C6004657166A436),\n reinterpret(0x3FF530001605277A), reinterpret(0xBC96BFCECE233209),\n reinterpret(0x3FF54FFFECDB704C), reinterpret(0xBC8902720505A1D7),\n reinterpret(0x3FF56FFFEF5F54A9), reinterpret(0x3C9BBFE60EC96412),\n reinterpret(0x3FF5900017E61012), reinterpret(0x3C887EC581AFEF90),\n reinterpret(0x3FF5B00003C93E92), reinterpret(0xBC9F41080ABF0CC0),\n reinterpret(0x3FF5D0001D4919BC), reinterpret(0xBC98812AFB254729),\n reinterpret(0x3FF5EFFFE7B87A89), reinterpret(0xBC947EB780ED6904)\n]);\n\n// @ts-ignore: decorator\n@inline\nexport function log_lut(x: f64): f64 {\n const N_MASK = (1 << LOG_TABLE_BITS) - 1;\n\n const\n B0 = reinterpret(0xBFE0000000000000), // -0x1p-1\n B1 = reinterpret(0x3FD5555555555577), // 0x1.5555555555577p-2\n B2 = reinterpret(0xBFCFFFFFFFFFFDCB), // -0x1.ffffffffffdcbp-3\n B3 = reinterpret(0x3FC999999995DD0C), // 0x1.999999995dd0cp-3\n B4 = reinterpret(0xBFC55555556745A7), // -0x1.55555556745a7p-3\n B5 = reinterpret(0x3FC24924A344DE30), // 0x1.24924a344de3p-3\n B6 = reinterpret(0xBFBFFFFFA4423D65), // -0x1.fffffa4423d65p-4\n B7 = reinterpret(0x3FBC7184282AD6CA), // 0x1.c7184282ad6cap-4\n B8 = reinterpret(0xBFB999EB43B068FF), // -0x1.999eb43b068ffp-4\n B9 = reinterpret(0x3FB78182F7AFD085), // 0x1.78182f7afd085p-4\n B10 = reinterpret(0xBFB5521375D145CD); // -0x1.5521375d145cdp-4\n\n const\n A0 = reinterpret(0xBFE0000000000001), // -0x1.0000000000001p-1\n A1 = reinterpret(0x3FD555555551305B), // 0x1.555555551305bp-2\n A2 = reinterpret(0xBFCFFFFFFFEB4590), // -0x1.fffffffeb459p-3\n A3 = reinterpret(0x3FC999B324F10111), // 0x1.999b324f10111p-3\n A4 = reinterpret(0xBFC55575E506C89F); // -0x1.55575e506c89fp-3\n\n const\n LO: u64 = 0x3FEE000000000000,\n HI: u64 = 0x3FF1090000000000;\n\n const\n Ln2hi = reinterpret(0x3FE62E42FEFA3800), // 0x1.62e42fefa3800p-1\n Ln2lo = reinterpret(0x3D2EF35793C76730), // 0x1.ef35793c76730p-45\n Ox1p27 = reinterpret(0x41A0000000000000), // 0x1p27\n Ox1p52 = reinterpret(0x4330000000000000); // 0x1p52\n\n var ix = reinterpret(x);\n if (ix - LO < HI - LO) {\n let r = x - 1.0;\n let r2 = r * r;\n let r3 = r2 * r;\n let y =\n r3 * (B1 + r * B2 + r2 * B3 +\n r3 * (B4 + r * B5 + r2 * B6 +\n r3 * (B7 + r * B8 + r2 * B9 + r3 * B10)));\n // Worst-case error is around 0.507 ULP\n let w = r * Ox1p27;\n let rhi = r + w - w;\n let rlo = r - rhi;\n w = rhi * rhi * B0; // B[0] == -0.5\n let hi = r + w;\n let lo = r - hi + w;\n lo += B0 * rlo * (rhi + r);\n return y + lo + hi;\n }\n var top = u32(ix >> 48);\n if (top - 0x0010 >= 0x7FF0 - 0x0010) {\n // x < 0x1p-1022 or inf or nan\n if ((ix << 1) == 0) return -1.0 / (x * x);\n if (ix == reinterpret(Infinity)) return x; // log(inf) == inf\n if ((top & 0x8000) || (top & 0x7FF0) == 0x7FF0) return (x - x) / (x - x);\n // x is subnormal, normalize it\n ix = reinterpret(x * Ox1p52);\n ix -= u64(52) << 52;\n }\n\n // x = 2^k z; where z is in range [OFF,2*OFF) and exact.\n // The range is split into N subintervals.\n // The ith subinterval contains z and c is near its center.\n var tmp = ix - 0x3FE6000000000000;\n var i = ((tmp >> (52 - LOG_TABLE_BITS)) & N_MASK);\n var k = tmp >> 52;\n var iz = ix - (tmp & (u64(0xFFF) << 52));\n\n var invc = load(LOG_DATA_TAB1 + (i << (1 + alignof())), 0 << alignof()); // T[i].invc;\n var logc = load(LOG_DATA_TAB1 + (i << (1 + alignof())), 1 << alignof()); // T[i].logc;\n var z = reinterpret(iz);\n\n // log(x) = log1p(z/c-1) + log(c) + k*Ln2.\n // r ~= z/c - 1, |r| < 1/(2*N)\n // #if __FP_FAST_FMA\n // \t// rounding error: 0x1p-55/N\n // \tr = __builtin_fma(z, invc, -1.0);\n // #else\n // rounding error: 0x1p-55/N + 0x1p-66\n const chi = load(LOG_DATA_TAB2 + (i << (1 + alignof())), 0 << alignof()); // T2[i].chi\n const clo = load(LOG_DATA_TAB2 + (i << (1 + alignof())), 1 << alignof()); // T2[i].clo\n var r = (z - chi - clo) * invc;\n // #endif\n var kd = k;\n\n // hi + lo = r + log(c) + k*Ln2\n var w = kd * Ln2hi + logc;\n var hi = w + r;\n var lo = w - hi + r + kd * Ln2lo;\n\n // log(x) = lo + (log1p(r) - r) + hi\n var r2 = r * r; // rounding error: 0x1p-54/N^2\n // Worst case error if |y| > 0x1p-5:\n // 0.5 + 4.13/N + abs-poly-error*2^57 ULP (+ 0.002 ULP without fma)\n // Worst case error if |y| > 0x1p-4:\n // 0.5 + 2.06/N + abs-poly-error*2^56 ULP (+ 0.001 ULP without fma).\n return lo + r2 * A0 + r * r2 * (A1 + r * A2 + r2 * (A3 + r * A4)) + hi;\n}\n\n//\n// Lookup data for pow. See: https://git.musl-libc.org/cgit/musl/tree/src/math/pow.c\n//\n\n// @ts-ignore: decorator\n@inline const POW_LOG_TABLE_BITS = 7;\n\n/* Algorithm:\n\n x = 2^k z\n log(x) = k ln2 + log(c) + log(z/c)\n log(z/c) = poly(z/c - 1)\n\nwhere z is in [0x1.69555p-1; 0x1.69555p0] which is split into N subintervals\nand z falls into the ith one, then table entries are computed as\n\n tab[i].invc = 1/c\n tab[i].logc = round(0x1p43*log(c))/0x1p43\n tab[i].logctail = (double)(log(c) - logc)\n\nwhere c is chosen near the center of the subinterval such that 1/c has only a\nfew precision bits so z/c - 1 is exactly representible as double:\n\n 1/c = center < 1 ? round(N/center)/N : round(2*N/center)/N/2\n\nNote: |z/c - 1| < 1/N for the chosen c, |log(c) - logc - logctail| < 0x1p-97,\nthe last few bits of logc are rounded away so k*ln2hi + logc has no rounding\nerror and the interval for z is selected such that near x == 1, where log(x)\nis tiny, large cancellation error is avoided in logc + poly(z/c - 1). */\n\n// @ts-ignore: decorator\n@lazy @inline const POW_LOG_DATA_TAB = memory.data([\n // invc ,pad, logc , logctail\n reinterpret(0x3FF6A00000000000), 0, reinterpret(0xBFD62C82F2B9C800), reinterpret(0x3CFAB42428375680),\n reinterpret(0x3FF6800000000000), 0, reinterpret(0xBFD5D1BDBF580800), reinterpret(0xBD1CA508D8E0F720),\n reinterpret(0x3FF6600000000000), 0, reinterpret(0xBFD5767717455800), reinterpret(0xBD2362A4D5B6506D),\n reinterpret(0x3FF6400000000000), 0, reinterpret(0xBFD51AAD872DF800), reinterpret(0xBCE684E49EB067D5),\n reinterpret(0x3FF6200000000000), 0, reinterpret(0xBFD4BE5F95777800), reinterpret(0xBD041B6993293EE0),\n reinterpret(0x3FF6000000000000), 0, reinterpret(0xBFD4618BC21C6000), reinterpret(0x3D13D82F484C84CC),\n reinterpret(0x3FF5E00000000000), 0, reinterpret(0xBFD404308686A800), reinterpret(0x3CDC42F3ED820B3A),\n reinterpret(0x3FF5C00000000000), 0, reinterpret(0xBFD3A64C55694800), reinterpret(0x3D20B1C686519460),\n reinterpret(0x3FF5A00000000000), 0, reinterpret(0xBFD347DD9A988000), reinterpret(0x3D25594DD4C58092),\n reinterpret(0x3FF5800000000000), 0, reinterpret(0xBFD2E8E2BAE12000), reinterpret(0x3D267B1E99B72BD8),\n reinterpret(0x3FF5600000000000), 0, reinterpret(0xBFD2895A13DE8800), reinterpret(0x3D15CA14B6CFB03F),\n reinterpret(0x3FF5600000000000), 0, reinterpret(0xBFD2895A13DE8800), reinterpret(0x3D15CA14B6CFB03F),\n reinterpret(0x3FF5400000000000), 0, reinterpret(0xBFD22941FBCF7800), reinterpret(0xBD165A242853DA76),\n reinterpret(0x3FF5200000000000), 0, reinterpret(0xBFD1C898C1699800), reinterpret(0xBD1FAFBC68E75404),\n reinterpret(0x3FF5000000000000), 0, reinterpret(0xBFD1675CABABA800), reinterpret(0x3D1F1FC63382A8F0),\n reinterpret(0x3FF4E00000000000), 0, reinterpret(0xBFD1058BF9AE4800), reinterpret(0xBD26A8C4FD055A66),\n reinterpret(0x3FF4C00000000000), 0, reinterpret(0xBFD0A324E2739000), reinterpret(0xBD0C6BEE7EF4030E),\n reinterpret(0x3FF4A00000000000), 0, reinterpret(0xBFD0402594B4D000), reinterpret(0xBCF036B89EF42D7F),\n reinterpret(0x3FF4A00000000000), 0, reinterpret(0xBFD0402594B4D000), reinterpret(0xBCF036B89EF42D7F),\n reinterpret(0x3FF4800000000000), 0, reinterpret(0xBFCFB9186D5E4000), reinterpret(0x3D0D572AAB993C87),\n reinterpret(0x3FF4600000000000), 0, reinterpret(0xBFCEF0ADCBDC6000), reinterpret(0x3D2B26B79C86AF24),\n reinterpret(0x3FF4400000000000), 0, reinterpret(0xBFCE27076E2AF000), reinterpret(0xBD172F4F543FFF10),\n reinterpret(0x3FF4200000000000), 0, reinterpret(0xBFCD5C216B4FC000), reinterpret(0x3D21BA91BBCA681B),\n reinterpret(0x3FF4000000000000), 0, reinterpret(0xBFCC8FF7C79AA000), reinterpret(0x3D27794F689F8434),\n reinterpret(0x3FF4000000000000), 0, reinterpret(0xBFCC8FF7C79AA000), reinterpret(0x3D27794F689F8434),\n reinterpret(0x3FF3E00000000000), 0, reinterpret(0xBFCBC286742D9000), reinterpret(0x3D194EB0318BB78F),\n reinterpret(0x3FF3C00000000000), 0, reinterpret(0xBFCAF3C94E80C000), reinterpret(0x3CBA4E633FCD9066),\n reinterpret(0x3FF3A00000000000), 0, reinterpret(0xBFCA23BC1FE2B000), reinterpret(0xBD258C64DC46C1EA),\n reinterpret(0x3FF3A00000000000), 0, reinterpret(0xBFCA23BC1FE2B000), reinterpret(0xBD258C64DC46C1EA),\n reinterpret(0x3FF3800000000000), 0, reinterpret(0xBFC9525A9CF45000), reinterpret(0xBD2AD1D904C1D4E3),\n reinterpret(0x3FF3600000000000), 0, reinterpret(0xBFC87FA06520D000), reinterpret(0x3D2BBDBF7FDBFA09),\n reinterpret(0x3FF3400000000000), 0, reinterpret(0xBFC7AB890210E000), reinterpret(0x3D2BDB9072534A58),\n reinterpret(0x3FF3400000000000), 0, reinterpret(0xBFC7AB890210E000), reinterpret(0x3D2BDB9072534A58),\n reinterpret(0x3FF3200000000000), 0, reinterpret(0xBFC6D60FE719D000), reinterpret(0xBD10E46AA3B2E266),\n reinterpret(0x3FF3000000000000), 0, reinterpret(0xBFC5FF3070A79000), reinterpret(0xBD1E9E439F105039),\n reinterpret(0x3FF3000000000000), 0, reinterpret(0xBFC5FF3070A79000), reinterpret(0xBD1E9E439F105039),\n reinterpret(0x3FF2E00000000000), 0, reinterpret(0xBFC526E5E3A1B000), reinterpret(0xBD20DE8B90075B8F),\n reinterpret(0x3FF2C00000000000), 0, reinterpret(0xBFC44D2B6CCB8000), reinterpret(0x3D170CC16135783C),\n reinterpret(0x3FF2C00000000000), 0, reinterpret(0xBFC44D2B6CCB8000), reinterpret(0x3D170CC16135783C),\n reinterpret(0x3FF2A00000000000), 0, reinterpret(0xBFC371FC201E9000), reinterpret(0x3CF178864D27543A),\n reinterpret(0x3FF2800000000000), 0, reinterpret(0xBFC29552F81FF000), reinterpret(0xBD248D301771C408),\n reinterpret(0x3FF2600000000000), 0, reinterpret(0xBFC1B72AD52F6000), reinterpret(0xBD2E80A41811A396),\n reinterpret(0x3FF2600000000000), 0, reinterpret(0xBFC1B72AD52F6000), reinterpret(0xBD2E80A41811A396),\n reinterpret(0x3FF2400000000000), 0, reinterpret(0xBFC0D77E7CD09000), reinterpret(0x3D0A699688E85BF4),\n reinterpret(0x3FF2400000000000), 0, reinterpret(0xBFC0D77E7CD09000), reinterpret(0x3D0A699688E85BF4),\n reinterpret(0x3FF2200000000000), 0, reinterpret(0xBFBFEC9131DBE000), reinterpret(0xBD2575545CA333F2),\n reinterpret(0x3FF2000000000000), 0, reinterpret(0xBFBE27076E2B0000), reinterpret(0x3D2A342C2AF0003C),\n reinterpret(0x3FF2000000000000), 0, reinterpret(0xBFBE27076E2B0000), reinterpret(0x3D2A342C2AF0003C),\n reinterpret(0x3FF1E00000000000), 0, reinterpret(0xBFBC5E548F5BC000), reinterpret(0xBD1D0C57585FBE06),\n reinterpret(0x3FF1C00000000000), 0, reinterpret(0xBFBA926D3A4AE000), reinterpret(0x3D253935E85BAAC8),\n reinterpret(0x3FF1C00000000000), 0, reinterpret(0xBFBA926D3A4AE000), reinterpret(0x3D253935E85BAAC8),\n reinterpret(0x3FF1A00000000000), 0, reinterpret(0xBFB8C345D631A000), reinterpret(0x3D137C294D2F5668),\n reinterpret(0x3FF1A00000000000), 0, reinterpret(0xBFB8C345D631A000), reinterpret(0x3D137C294D2F5668),\n reinterpret(0x3FF1800000000000), 0, reinterpret(0xBFB6F0D28AE56000), reinterpret(0xBD269737C93373DA),\n reinterpret(0x3FF1600000000000), 0, reinterpret(0xBFB51B073F062000), reinterpret(0x3D1F025B61C65E57),\n reinterpret(0x3FF1600000000000), 0, reinterpret(0xBFB51B073F062000), reinterpret(0x3D1F025B61C65E57),\n reinterpret(0x3FF1400000000000), 0, reinterpret(0xBFB341D7961BE000), reinterpret(0x3D2C5EDACCF913DF),\n reinterpret(0x3FF1400000000000), 0, reinterpret(0xBFB341D7961BE000), reinterpret(0x3D2C5EDACCF913DF),\n reinterpret(0x3FF1200000000000), 0, reinterpret(0xBFB16536EEA38000), reinterpret(0x3D147C5E768FA309),\n reinterpret(0x3FF1000000000000), 0, reinterpret(0xBFAF0A30C0118000), reinterpret(0x3D2D599E83368E91),\n reinterpret(0x3FF1000000000000), 0, reinterpret(0xBFAF0A30C0118000), reinterpret(0x3D2D599E83368E91),\n reinterpret(0x3FF0E00000000000), 0, reinterpret(0xBFAB42DD71198000), reinterpret(0x3D1C827AE5D6704C),\n reinterpret(0x3FF0E00000000000), 0, reinterpret(0xBFAB42DD71198000), reinterpret(0x3D1C827AE5D6704C),\n reinterpret(0x3FF0C00000000000), 0, reinterpret(0xBFA77458F632C000), reinterpret(0xBD2CFC4634F2A1EE),\n reinterpret(0x3FF0C00000000000), 0, reinterpret(0xBFA77458F632C000), reinterpret(0xBD2CFC4634F2A1EE),\n reinterpret(0x3FF0A00000000000), 0, reinterpret(0xBFA39E87B9FEC000), reinterpret(0x3CF502B7F526FEAA),\n reinterpret(0x3FF0A00000000000), 0, reinterpret(0xBFA39E87B9FEC000), reinterpret(0x3CF502B7F526FEAA),\n reinterpret(0x3FF0800000000000), 0, reinterpret(0xBF9F829B0E780000), reinterpret(0xBD2980267C7E09E4),\n reinterpret(0x3FF0800000000000), 0, reinterpret(0xBF9F829B0E780000), reinterpret(0xBD2980267C7E09E4),\n reinterpret(0x3FF0600000000000), 0, reinterpret(0xBF97B91B07D58000), reinterpret(0xBD288D5493FAA639),\n reinterpret(0x3FF0400000000000), 0, reinterpret(0xBF8FC0A8B0FC0000), reinterpret(0xBCDF1E7CF6D3A69C),\n reinterpret(0x3FF0400000000000), 0, reinterpret(0xBF8FC0A8B0FC0000), reinterpret(0xBCDF1E7CF6D3A69C),\n reinterpret(0x3FF0200000000000), 0, reinterpret(0xBF7FE02A6B100000), reinterpret(0xBD19E23F0DDA40E4),\n reinterpret(0x3FF0200000000000), 0, reinterpret(0xBF7FE02A6B100000), reinterpret(0xBD19E23F0DDA40E4),\n reinterpret(0x3FF0000000000000), 0, 0, 0,\n reinterpret(0x3FF0000000000000), 0, 0, 0,\n reinterpret(0x3FEFC00000000000), 0, reinterpret(0x3F80101575890000), reinterpret(0xBD10C76B999D2BE8),\n reinterpret(0x3FEF800000000000), 0, reinterpret(0x3F90205658938000), reinterpret(0xBD23DC5B06E2F7D2),\n reinterpret(0x3FEF400000000000), 0, reinterpret(0x3F98492528C90000), reinterpret(0xBD2AA0BA325A0C34),\n reinterpret(0x3FEF000000000000), 0, reinterpret(0x3FA0415D89E74000), reinterpret(0x3D0111C05CF1D753),\n reinterpret(0x3FEEC00000000000), 0, reinterpret(0x3FA466AED42E0000), reinterpret(0xBD2C167375BDFD28),\n reinterpret(0x3FEE800000000000), 0, reinterpret(0x3FA894AA149FC000), reinterpret(0xBD197995D05A267D),\n reinterpret(0x3FEE400000000000), 0, reinterpret(0x3FACCB73CDDDC000), reinterpret(0xBD1A68F247D82807),\n reinterpret(0x3FEE200000000000), 0, reinterpret(0x3FAEEA31C006C000), reinterpret(0xBD0E113E4FC93B7B),\n reinterpret(0x3FEDE00000000000), 0, reinterpret(0x3FB1973BD1466000), reinterpret(0xBD25325D560D9E9B),\n reinterpret(0x3FEDA00000000000), 0, reinterpret(0x3FB3BDF5A7D1E000), reinterpret(0x3D2CC85EA5DB4ED7),\n reinterpret(0x3FED600000000000), 0, reinterpret(0x3FB5E95A4D97A000), reinterpret(0xBD2C69063C5D1D1E),\n reinterpret(0x3FED400000000000), 0, reinterpret(0x3FB700D30AEAC000), reinterpret(0x3CEC1E8DA99DED32),\n reinterpret(0x3FED000000000000), 0, reinterpret(0x3FB9335E5D594000), reinterpret(0x3D23115C3ABD47DA),\n reinterpret(0x3FECC00000000000), 0, reinterpret(0x3FBB6AC88DAD6000), reinterpret(0xBD1390802BF768E5),\n reinterpret(0x3FECA00000000000), 0, reinterpret(0x3FBC885801BC4000), reinterpret(0x3D2646D1C65AACD3),\n reinterpret(0x3FEC600000000000), 0, reinterpret(0x3FBEC739830A2000), reinterpret(0xBD2DC068AFE645E0),\n reinterpret(0x3FEC400000000000), 0, reinterpret(0x3FBFE89139DBE000), reinterpret(0xBD2534D64FA10AFD),\n reinterpret(0x3FEC000000000000), 0, reinterpret(0x3FC1178E8227E000), reinterpret(0x3D21EF78CE2D07F2),\n reinterpret(0x3FEBE00000000000), 0, reinterpret(0x3FC1AA2B7E23F000), reinterpret(0x3D2CA78E44389934),\n reinterpret(0x3FEBA00000000000), 0, reinterpret(0x3FC2D1610C868000), reinterpret(0x3D039D6CCB81B4A1),\n reinterpret(0x3FEB800000000000), 0, reinterpret(0x3FC365FCB0159000), reinterpret(0x3CC62FA8234B7289),\n reinterpret(0x3FEB400000000000), 0, reinterpret(0x3FC4913D8333B000), reinterpret(0x3D25837954FDB678),\n reinterpret(0x3FEB200000000000), 0, reinterpret(0x3FC527E5E4A1B000), reinterpret(0x3D2633E8E5697DC7),\n reinterpret(0x3FEAE00000000000), 0, reinterpret(0x3FC6574EBE8C1000), reinterpret(0x3D19CF8B2C3C2E78),\n reinterpret(0x3FEAC00000000000), 0, reinterpret(0x3FC6F0128B757000), reinterpret(0xBD25118DE59C21E1),\n reinterpret(0x3FEAA00000000000), 0, reinterpret(0x3FC7898D85445000), reinterpret(0xBD1C661070914305),\n reinterpret(0x3FEA600000000000), 0, reinterpret(0x3FC8BEAFEB390000), reinterpret(0xBD073D54AAE92CD1),\n reinterpret(0x3FEA400000000000), 0, reinterpret(0x3FC95A5ADCF70000), reinterpret(0x3D07F22858A0FF6F),\n reinterpret(0x3FEA000000000000), 0, reinterpret(0x3FCA93ED3C8AE000), reinterpret(0xBD28724350562169),\n reinterpret(0x3FE9E00000000000), 0, reinterpret(0x3FCB31D8575BD000), reinterpret(0xBD0C358D4EACE1AA),\n reinterpret(0x3FE9C00000000000), 0, reinterpret(0x3FCBD087383BE000), reinterpret(0xBD2D4BC4595412B6),\n reinterpret(0x3FE9A00000000000), 0, reinterpret(0x3FCC6FFBC6F01000), reinterpret(0xBCF1EC72C5962BD2),\n reinterpret(0x3FE9600000000000), 0, reinterpret(0x3FCDB13DB0D49000), reinterpret(0xBD2AFF2AF715B035),\n reinterpret(0x3FE9400000000000), 0, reinterpret(0x3FCE530EFFE71000), reinterpret(0x3CC212276041F430),\n reinterpret(0x3FE9200000000000), 0, reinterpret(0x3FCEF5ADE4DD0000), reinterpret(0xBCCA211565BB8E11),\n reinterpret(0x3FE9000000000000), 0, reinterpret(0x3FCF991C6CB3B000), reinterpret(0x3D1BCBECCA0CDF30),\n reinterpret(0x3FE8C00000000000), 0, reinterpret(0x3FD07138604D5800), reinterpret(0x3CF89CDB16ED4E91),\n reinterpret(0x3FE8A00000000000), 0, reinterpret(0x3FD0C42D67616000), reinterpret(0x3D27188B163CEAE9),\n reinterpret(0x3FE8800000000000), 0, reinterpret(0x3FD1178E8227E800), reinterpret(0xBD2C210E63A5F01C),\n reinterpret(0x3FE8600000000000), 0, reinterpret(0x3FD16B5CCBACF800), reinterpret(0x3D2B9ACDF7A51681),\n reinterpret(0x3FE8400000000000), 0, reinterpret(0x3FD1BF99635A6800), reinterpret(0x3D2CA6ED5147BDB7),\n reinterpret(0x3FE8200000000000), 0, reinterpret(0x3FD214456D0EB800), reinterpret(0x3D0A87DEBA46BAEA),\n reinterpret(0x3FE7E00000000000), 0, reinterpret(0x3FD2BEF07CDC9000), reinterpret(0x3D2A9CFA4A5004F4),\n reinterpret(0x3FE7C00000000000), 0, reinterpret(0x3FD314F1E1D36000), reinterpret(0xBD28E27AD3213CB8),\n reinterpret(0x3FE7A00000000000), 0, reinterpret(0x3FD36B6776BE1000), reinterpret(0x3D116ECDB0F177C8),\n reinterpret(0x3FE7800000000000), 0, reinterpret(0x3FD3C25277333000), reinterpret(0x3D183B54B606BD5C),\n reinterpret(0x3FE7600000000000), 0, reinterpret(0x3FD419B423D5E800), reinterpret(0x3D08E436EC90E09D),\n reinterpret(0x3FE7400000000000), 0, reinterpret(0x3FD4718DC271C800), reinterpret(0xBD2F27CE0967D675),\n reinterpret(0x3FE7200000000000), 0, reinterpret(0x3FD4C9E09E173000), reinterpret(0xBD2E20891B0AD8A4),\n reinterpret(0x3FE7000000000000), 0, reinterpret(0x3FD522AE0738A000), reinterpret(0x3D2EBE708164C759),\n reinterpret(0x3FE6E00000000000), 0, reinterpret(0x3FD57BF753C8D000), reinterpret(0x3D1FADEDEE5D40EF),\n reinterpret(0x3FE6C00000000000), 0, reinterpret(0x3FD5D5BDDF596000), reinterpret(0xBD0A0B2A08A465DC)\n]);\n\n// Returns 0 if not int, 1 if odd int, 2 if even int. The argument is\n// the bit representation of a non-zero finite floating-point value.\n// @ts-ignore: decorator\n@inline\nfunction checkint(iy: u64): i32 {\n var e = iy >> 52 & 0x7FF;\n if (e < 0x3FF ) return 0;\n if (e > 0x3FF + 52) return 2;\n e = u64(1) << (0x3FF + 52 - e);\n if (iy & (e - 1)) return 0;\n if (iy & e ) return 1;\n return 2;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction xflow(sign: u32, y: f64): f64 {\n return select(-y, y, sign) * y;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction uflow(sign: u32): f64 {\n return xflow(sign, reinterpret(0x1000000000000000)); // 0x1p-767\n}\n\n// @ts-ignore: decorator\n@inline\nfunction oflow(sign: u32): f64 {\n return xflow(sign, reinterpret(0x7000000000000000)); // 0x1p769\n}\n\n// Returns 1 if input is the bit representation of 0, infinity or nan.\n// @ts-ignore: decorator\n@inline\nfunction zeroinfnan(u: u64): bool {\n return (u << 1) - 1 >= 0xFFE0000000000000 - 1;\n}\n\n// @ts-ignore: decorator\n@lazy var log_tail: f64 = 0;\n\n// Compute y+TAIL = log(x) where the rounded result is y and TAIL has about\n// additional 15 bits precision. IX is the bit representation of x, but\n// normalized in the subnormal range using the sign bit for the exponent.\n// @ts-ignore: decorator\n@inline\nfunction log_inline(ix: u64): f64 {\n const N = 1 << POW_LOG_TABLE_BITS;\n const N_MASK = N - 1;\n\n const\n Ln2hi = reinterpret(0x3FE62E42FEFA3800),\n Ln2lo = reinterpret(0x3D2EF35793C76730);\n\n const\n A0 = reinterpret(0xBFE0000000000000),\n A1 = reinterpret(0xBFE5555555555560),\n A2 = reinterpret(0x3FE0000000000006),\n A3 = reinterpret(0x3FE999999959554E),\n A4 = reinterpret(0xBFE555555529A47A),\n A5 = reinterpret(0xBFF2495B9B4845E9),\n A6 = reinterpret(0x3FF0002B8B263FC3);\n\n // x = 2^k z; where z is in range [OFF,2*OFF) and exact.\n // The range is split into N subintervals.\n // The ith subinterval contains z and c is near its center.\n var tmp = ix - 0x3fE6955500000000;\n var i = usize((tmp >> (52 - POW_LOG_TABLE_BITS)) & N_MASK);\n var k = tmp >> 52;\n var iz = ix - (tmp & u64(0xFFF) << 52);\n var z = reinterpret(iz);\n var kd = k;\n\n // log(x) = k*Ln2 + log(c) + log1p(z/c-1).\n var invc = load(POW_LOG_DATA_TAB + (i << (2 + alignof())), 0 << alignof()); // tab[i].invc\n var logc = load(POW_LOG_DATA_TAB + (i << (2 + alignof())), 2 << alignof()); // tab[i].logc\n var logctail = load(POW_LOG_DATA_TAB + (i << (2 + alignof())), 3 << alignof()); // tab[i].logctail\n\n // Note: 1/c is j/N or j/N/2 where j is an integer in [N,2N) and\n // |z/c - 1| < 1/N, so r = z/c - 1 is exactly representible.\n // Split z such that rhi, rlo and rhi*rhi are exact and |rlo| <= |r|.\n var zhi = reinterpret((iz + u64(0x80000000)) & 0xFFFFFFFF00000000);\n var zlo = z - zhi;\n var rhi = zhi * invc - 1.0;\n var rlo = zlo * invc;\n var r = rhi + rlo;\n\n // k * Ln2 + log(c) + r.\n var t1 = kd * Ln2hi + logc;\n var t2 = t1 + r;\n var lo1 = kd * Ln2lo + logctail;\n var lo2 = t1 - t2 + r;\n\n // Evaluation is optimized assuming superscalar pipelined execution.\n var ar = A0 * r; // A[0] = -0.5\n var ar2 = r * ar;\n var ar3 = r * ar2;\n // k * Ln2 + log(c) + r + A[0] * r * r.\n var arhi = A0 * rhi;\n var arhi2 = rhi * arhi;\n var hi = t2 + arhi2;\n var lo3 = rlo * (ar + arhi);\n var lo4 = t2 - hi + arhi2;\n\n // p = log1p(r) - r - A[0] * r * r.\n var p = ar3 * (A1 + r * A2 + ar2 * (A3 + r * A4 + ar2 * (A5 + r * A6)));\n var lo = lo1 + lo2 + lo3 + lo4 + p;\n var y = hi + lo;\n log_tail = hi - y + lo;\n\n return y;\n}\n\n// @ts-ignore: decorator\n@inline const SIGN_BIAS = 0x800 << EXP_TABLE_BITS;\n\n// Computes sign*exp(x+xtail) where |xtail| < 2^-8/N and |xtail| <= |x|.\n// The sign_bias argument is SIGN_BIAS or 0 and sets the sign to -1 or 1.\n// @ts-ignore: decorator\n@inline\nfunction exp_inline(x: f64, xtail: f64, sign_bias: u32): f64 {\n const N = 1 << EXP_TABLE_BITS;\n const N_MASK = N - 1;\n\n const\n InvLn2N = reinterpret(0x3FF71547652B82FE) * N, // 0x1.71547652b82fep0\n NegLn2hiN = reinterpret(0xBF762E42FEFA0000), // -0x1.62e42fefa0000p-8\n NegLn2loN = reinterpret(0xBD0CF79ABC9E3B3A), // -0x1.cf79abc9e3b3ap-47\n shift = reinterpret(0x4338000000000000); // 0x1.8p52\n\n const\n C2 = reinterpret(0x3FDFFFFFFFFFFDBD), // __exp_data.poly[0] (0x1.ffffffffffdbdp-2)\n C3 = reinterpret(0x3FC555555555543C), // __exp_data.poly[1] (0x1.555555555543cp-3)\n C4 = reinterpret(0x3FA55555CF172B91), // __exp_data.poly[2] (0x1.55555cf172b91p-5)\n C5 = reinterpret(0x3F81111167A4D017); // __exp_data.poly[3] (0x1.1111167a4d017p-7)\n\n var abstop: u32;\n var ki: u64, top: u64, sbits: u64;\n var idx: usize;\n // double_t for better performance on targets with FLT_EVAL_METHOD==2.\n var kd: f64, z: f64, r: f64, r2: f64, scale: f64, tail: f64, tmp: f64;\n\n var ux = reinterpret(x);\n abstop = u32(ux >> 52) & 0x7FF;\n if (abstop - 0x3C9 >= 0x03F) {\n if (abstop - 0x3C9 >= 0x80000000) {\n // Avoid spurious underflow for tiny x.\n // Note: 0 is common input.\n return select(-1.0, 1.0, sign_bias);\n }\n if (abstop >= 0x409) { // top12(1024.0)\n // Note: inf and nan are already handled.\n return ux < 0\n ? uflow(sign_bias)\n : oflow(sign_bias);\n }\n // Large x is special cased below.\n abstop = 0;\n }\n\n // exp(x) = 2^(k/N) * exp(r), with exp(r) in [2^(-1/2N),2^(1/2N)].\n // x = ln2/N*k + r, with int k and r in [-ln2/2N, ln2/2N].\n z = InvLn2N * x;\n\n // #if TOINT_INTRINSICS\n // kd = roundtoint(z);\n // ki = converttoint(z);\n // #elif EXP_USE_TOINT_NARROW\n // // z - kd is in [-0.5-2^-16, 0.5] in all rounding modes.\n // kd = eval_as_double(z + shift);\n // ki = asuint64(kd) >> 16;\n // kd = (double_t)(int32_t)ki;\n // #else\n // z - kd is in [-1, 1] in non-nearest rounding modes\n kd = z + shift;\n ki = reinterpret(kd);\n kd -= shift;\n // #endif\n r = x + kd * NegLn2hiN + kd * NegLn2loN;\n // The code assumes 2^-200 < |xtail| < 2^-8/N\n r += xtail;\n // 2^(k/N) ~= scale * (1 + tail)\n idx = usize((ki & N_MASK) << 1);\n top = (ki + sign_bias) << (52 - EXP_TABLE_BITS);\n\n tail = reinterpret(load(EXP_DATA_TAB + (idx << alignof())));\n // This is only a valid scale when -1023*N < k < 1024*N\n sbits = load(EXP_DATA_TAB + (idx << alignof()), 1 << alignof()) + top;\n // exp(x) = 2^(k/N) * exp(r) ~= scale + scale * (tail + exp(r) - 1).\n // Evaluation is optimized assuming superscalar pipelined execution.\n r2 = r * r;\n // Without fma the worst case error is 0.25/N ulp larger.\n // Worst case error is less than 0.5+1.11/N+(abs poly error * 2^53) ulp\n tmp = tail + r + r2 * (C2 + r * C3) + r2 * r2 * (C4 + r * C5);\n if (abstop == 0) return specialcase(tmp, sbits, ki);\n scale = reinterpret(sbits);\n // Note: tmp == 0 or |tmp| > 2^-200 and scale > 2^-739, so there\n // is no spurious underflow here even without fma.\n return scale + scale * tmp;\n}\n\n// @ts-ignore: decorator\n@inline\nexport function pow_lut(x: f64, y: f64): f64 {\n const Ox1p52 = reinterpret(0x4330000000000000); // 0x1p52\n\n var sign_bias: u32 = 0;\n var ix = reinterpret(x);\n var iy = reinterpret(y);\n var topx = ix >> 52;\n var topy = iy >> 52;\n\n if (topx - 0x001 >= 0x7FF - 0x001 || (topy & 0x7FF) - 0x3BE >= 0x43e - 0x3BE) {\n // Note: if |y| > 1075 * ln2 * 2^53 ~= 0x1.749p62 then pow(x,y) = inf/0\n // and if |y| < 2^-54 / 1075 ~= 0x1.e7b6p-65 then pow(x,y) = +-1.\n // Special cases: (x < 0x1p-126 or inf or nan) or\n // (|y| < 0x1p-65 or |y| >= 0x1p63 or nan).\n if (zeroinfnan(iy)) {\n if ((iy << 1) == 0) return 1.0;\n if (ix == 0x3FF0000000000000) return NaN; // original: 1.0\n if ((ix << 1) > 0xFFE0000000000000 || (iy << 1) > 0xFFE0000000000000) return x + y;\n if ((ix << 1) == 0x7FE0000000000000) return NaN; // original: 1.0\n if (((ix << 1) < 0x7FE0000000000000) == !(iy >> 63)) return 0; // |x|<1 && y==inf or |x|>1 && y==-inf.\n return y * y;\n }\n if (zeroinfnan(ix)) {\n let x2 = x * x;\n if (i32(ix >> 63) && checkint(iy) == 1) x2 = -x2;\n return iy < 0 ? 1 / x2 : x2;\n }\n // Here x and y are non-zero finite\n if (ix < 0) {\n // Finite x < 0\n let yint = checkint(iy);\n if (yint == 0) return (x - x) / (x - x);\n if (yint == 1) sign_bias = SIGN_BIAS;\n ix &= 0x7FFFFFFFFFFFFFFF;\n topx &= 0x7FF;\n }\n if ((topy & 0x7FF) - 0x3BE >= 0x43E - 0x3BE) {\n // Note: sign_bias == 0 here because y is not odd.\n if (ix == 0x3FF0000000000000) return 1;\n if ((topy & 0x7FF) < 0x3BE) return 1; // |y| < 2^-65, x^y ~= 1 + y*log(x).\n return (ix > 0x3FF0000000000000) == (topy < 0x800) ? Infinity : 0;\n }\n if (topx == 0) {\n // Normalize subnormal x so exponent becomes negative.\n ix = reinterpret(x * Ox1p52);\n ix &= 0x7FFFFFFFFFFFFFFF;\n ix -= u64(52) << 52;\n }\n }\n\n var hi = log_inline(ix);\n var lo = log_tail;\n var ehi: f64, elo: f64;\n // #if __FP_FAST_FMA\n // ehi = y * hi;\n // elo = y * lo + __builtin_fma(y, hi, -ehi);\n // #else\n var yhi = reinterpret(iy & 0xFFFFFFFFF8000000);\n var ylo = y - yhi;\n var lhi = reinterpret(reinterpret(hi) & 0xFFFFFFFFF8000000);\n var llo = hi - lhi + lo;\n ehi = yhi * lhi;\n elo = ylo * lhi + y * llo; // |elo| < |ehi| * 2^-25.\n // #endif\n return exp_inline(ehi, elo, sign_bias);\n}\n","/// \n\nimport { idof } from \"../builtins\";\nimport { CharCode } from \"./string\";\n\n// @ts-ignore: decorator\n@inline\nexport const MAX_DOUBLE_LENGTH = 28;\n\n// @ts-ignore: decorator\n@lazy @inline const POWERS10 = memory.data([\n 1,\n 10,\n 100,\n 1000,\n 10000,\n 100000,\n 1000000,\n 10000000,\n 100000000,\n 1000000000\n]);\n\n/*\n Lookup table for pairwise char codes in range [0-99]\n\n \"00\", \"01\", \"02\", \"03\", \"04\", \"05\", \"06\", \"07\", \"08\", \"09\",\n \"10\", \"11\", \"12\", \"13\", \"14\", \"15\", \"16\", \"17\", \"18\", \"19\",\n \"20\", \"21\", \"22\", \"23\", \"24\", \"25\", \"26\", \"27\", \"28\", \"29\",\n \"30\", \"31\", \"32\", \"33\", \"34\", \"35\", \"36\", \"37\", \"38\", \"39\",\n \"40\", \"41\", \"42\", \"43\", \"44\", \"45\", \"46\", \"47\", \"48\", \"49\",\n \"50\", \"51\", \"52\", \"53\", \"54\", \"55\", \"56\", \"57\", \"58\", \"59\",\n \"60\", \"61\", \"62\", \"63\", \"64\", \"65\", \"66\", \"67\", \"68\", \"69\",\n \"70\", \"71\", \"72\", \"73\", \"74\", \"75\", \"76\", \"77\", \"78\", \"79\",\n \"80\", \"81\", \"82\", \"83\", \"84\", \"85\", \"86\", \"87\", \"88\", \"89\",\n \"90\", \"91\", \"92\", \"93\", \"94\", \"95\", \"96\", \"97\", \"98\", \"99\"\n*/\n// @ts-ignore: decorator\n@lazy @inline const DIGITS = memory.data([\n 0x00300030, 0x00310030, 0x00320030, 0x00330030, 0x00340030,\n 0x00350030, 0x00360030, 0x00370030, 0x00380030, 0x00390030,\n 0x00300031, 0x00310031, 0x00320031, 0x00330031, 0x00340031,\n 0x00350031, 0x00360031, 0x00370031, 0x00380031, 0x00390031,\n 0x00300032, 0x00310032, 0x00320032, 0x00330032, 0x00340032,\n 0x00350032, 0x00360032, 0x00370032, 0x00380032, 0x00390032,\n 0x00300033, 0x00310033, 0x00320033, 0x00330033, 0x00340033,\n 0x00350033, 0x00360033, 0x00370033, 0x00380033, 0x00390033,\n 0x00300034, 0x00310034, 0x00320034, 0x00330034, 0x00340034,\n 0x00350034, 0x00360034, 0x00370034, 0x00380034, 0x00390034,\n 0x00300035, 0x00310035, 0x00320035, 0x00330035, 0x00340035,\n 0x00350035, 0x00360035, 0x00370035, 0x00380035, 0x00390035,\n 0x00300036, 0x00310036, 0x00320036, 0x00330036, 0x00340036,\n 0x00350036, 0x00360036, 0x00370036, 0x00380036, 0x00390036,\n 0x00300037, 0x00310037, 0x00320037, 0x00330037, 0x00340037,\n 0x00350037, 0x00360037, 0x00370037, 0x00380037, 0x00390037,\n 0x00300038, 0x00310038, 0x00320038, 0x00330038, 0x00340038,\n 0x00350038, 0x00360038, 0x00370038, 0x00380038, 0x00390038,\n 0x00300039, 0x00310039, 0x00320039, 0x00330039, 0x00340039,\n 0x00350039, 0x00360039, 0x00370039, 0x00380039, 0x00390039\n]);\n\n// Lookup table for pairwise char codes in range [0x00-0xFF]\n// @ts-ignore: decorator\n@lazy @inline const HEX_DIGITS =\n\"000102030405060708090a0b0c0d0e0f\\\n101112131415161718191a1b1c1d1e1f\\\n202122232425262728292a2b2c2d2e2f\\\n303132333435363738393a3b3c3d3e3f\\\n404142434445464748494a4b4c4d4e4f\\\n505152535455565758595a5b5c5d5e5f\\\n606162636465666768696a6b6c6d6e6f\\\n707172737475767778797a7b7c7d7e7f\\\n808182838485868788898a8b8c8d8e8f\\\n909192939495969798999a9b9c9d9e9f\\\na0a1a2a3a4a5a6a7a8a9aaabacadaeaf\\\nb0b1b2b3b4b5b6b7b8b9babbbcbdbebf\\\nc0c1c2c3c4c5c6c7c8c9cacbcccdcecf\\\nd0d1d2d3d4d5d6d7d8d9dadbdcdddedf\\\ne0e1e2e3e4e5e6e7e8e9eaebecedeeef\\\nf0f1f2f3f4f5f6f7f8f9fafbfcfdfeff\";\n\n// @ts-ignore: decorator\n@lazy @inline const ANY_DIGITS = \"0123456789abcdefghijklmnopqrstuvwxyz\";\n\n// @ts-ignore: decorator\n@lazy @inline const EXP_POWERS = memory.data([/* eslint-disable indent */\n -1220, -1193, -1166, -1140, -1113, -1087, -1060, -1034, -1007, -980,\n -954, -927, -901, -874, -847, -821, -794, -768, -741, -715,\n -688, -661, -635, -608, -582, -555, -529, -502, -475, -449,\n -422, -396, -369, -343, -316, -289, -263, -236, -210, -183,\n -157, -130, -103, -77, -50, -24, 3, 30, 56, 83,\n 109, 136, 162, 189, 216, 242, 269, 295, 322, 348,\n 375, 402, 428, 455, 481, 508, 534, 561, 588, 614,\n 641, 667, 694, 720, 747, 774, 800, 827, 853, 880,\n 907, 933, 960, 986, 1013, 1039, 1066\n/* eslint-enable indent */]);\n\n// 1e-348, 1e-340, ..., 1e340\n// @ts-ignore: decorator\n@lazy @inline const FRC_POWERS = memory.data([\n 0xFA8FD5A0081C0288, 0xBAAEE17FA23EBF76, 0x8B16FB203055AC76, 0xCF42894A5DCE35EA,\n 0x9A6BB0AA55653B2D, 0xE61ACF033D1A45DF, 0xAB70FE17C79AC6CA, 0xFF77B1FCBEBCDC4F,\n 0xBE5691EF416BD60C, 0x8DD01FAD907FFC3C, 0xD3515C2831559A83, 0x9D71AC8FADA6C9B5,\n 0xEA9C227723EE8BCB, 0xAECC49914078536D, 0x823C12795DB6CE57, 0xC21094364DFB5637,\n 0x9096EA6F3848984F, 0xD77485CB25823AC7, 0xA086CFCD97BF97F4, 0xEF340A98172AACE5,\n 0xB23867FB2A35B28E, 0x84C8D4DFD2C63F3B, 0xC5DD44271AD3CDBA, 0x936B9FCEBB25C996,\n 0xDBAC6C247D62A584, 0xA3AB66580D5FDAF6, 0xF3E2F893DEC3F126, 0xB5B5ADA8AAFF80B8,\n 0x87625F056C7C4A8B, 0xC9BCFF6034C13053, 0x964E858C91BA2655, 0xDFF9772470297EBD,\n 0xA6DFBD9FB8E5B88F, 0xF8A95FCF88747D94, 0xB94470938FA89BCF, 0x8A08F0F8BF0F156B,\n 0xCDB02555653131B6, 0x993FE2C6D07B7FAC, 0xE45C10C42A2B3B06, 0xAA242499697392D3,\n 0xFD87B5F28300CA0E, 0xBCE5086492111AEB, 0x8CBCCC096F5088CC, 0xD1B71758E219652C,\n 0x9C40000000000000, 0xE8D4A51000000000, 0xAD78EBC5AC620000, 0x813F3978F8940984,\n 0xC097CE7BC90715B3, 0x8F7E32CE7BEA5C70, 0xD5D238A4ABE98068, 0x9F4F2726179A2245,\n 0xED63A231D4C4FB27, 0xB0DE65388CC8ADA8, 0x83C7088E1AAB65DB, 0xC45D1DF942711D9A,\n 0x924D692CA61BE758, 0xDA01EE641A708DEA, 0xA26DA3999AEF774A, 0xF209787BB47D6B85,\n 0xB454E4A179DD1877, 0x865B86925B9BC5C2, 0xC83553C5C8965D3D, 0x952AB45CFA97A0B3,\n 0xDE469FBD99A05FE3, 0xA59BC234DB398C25, 0xF6C69A72A3989F5C, 0xB7DCBF5354E9BECE,\n 0x88FCF317F22241E2, 0xCC20CE9BD35C78A5, 0x98165AF37B2153DF, 0xE2A0B5DC971F303A,\n 0xA8D9D1535CE3B396, 0xFB9B7CD9A4A7443C, 0xBB764C4CA7A44410, 0x8BAB8EEFB6409C1A,\n 0xD01FEF10A657842C, 0x9B10A4E5E9913129, 0xE7109BFBA19C0C9D, 0xAC2820D9623BF429,\n 0x80444B5E7AA7CF85, 0xBF21E44003ACDD2D, 0x8E679C2F5E44FF8F, 0xD433179D9C8CB841,\n 0x9E19DB92B4E31BA9, 0xEB96BF6EBADF77D9, 0xAF87023B9BF0EE6B\n]);\n\n// @ts-ignore: decorator\n@inline\nexport function isPowerOf2(value: T): bool {\n return popcnt(value) == 1;\n}\n\n// Count number of decimals for u32 values\n// In our case input value always non-zero so we can simplify some parts\nexport function decimalCount32(value: u32): u32 {\n if (value < 100000) {\n if (value < 100) {\n return 1 + u32(value >= 10);\n } else {\n return 3 + u32(value >= 10000) + u32(value >= 1000);\n }\n } else {\n if (value < 10000000) {\n return 6 + u32(value >= 1000000);\n } else {\n return 8 + u32(value >= 1000000000) + u32(value >= 100000000);\n }\n }\n}\n\n// Count number of decimals for u64 values\n// In our case input value always greater than 2^32-1 so we can skip some parts\nexport function decimalCount64High(value: u64): u32 {\n if (value < 1000000000000000) {\n if (value < 1000000000000) {\n return 10 + u32(value >= 100000000000) + u32(value >= 10000000000);\n } else {\n return 13 + u32(value >= 100000000000000) + u32(value >= 10000000000000);\n }\n } else {\n if (value < 100000000000000000) {\n return 16 + u32(value >= 10000000000000000);\n } else {\n return 18 + u32(value >= 10000000000000000000) + u32(value >= 1000000000000000000);\n }\n }\n}\n\nfunction ulog_base(num: u64, base: i32): u32 {\n if (isPowerOf2(base)) {\n return (63 - clz(num)) / (31 - clz(base)) + 1;\n }\n var b64 = u64(base), b = b64, e: u32 = 1;\n while (num >= b) {\n num /= b;\n b *= b;\n e <<= 1;\n }\n while (num >= 1) {\n num /= b64;\n e++;\n }\n return e - 1;\n}\n\nfunction utoa32_dec_lut(buffer: usize, num: u32, offset: usize): void {\n while (num >= 10000) {\n // in most VMs i32/u32 div and modulo by constant can be shared and simplificate\n let t = num / 10000;\n let r = num % 10000;\n num = t;\n\n let d1 = r / 100;\n let d2 = r % 100;\n\n let digits1 = load(DIGITS + (d1 << alignof()));\n let digits2 = load(DIGITS + (d2 << alignof()));\n\n offset -= 4;\n store(buffer + (offset << 1), digits1 | (digits2 << 32));\n }\n\n if (num >= 100) {\n let t = num / 100;\n let d1 = num % 100;\n num = t;\n offset -= 2;\n let digits = load(DIGITS + (d1 << alignof()));\n store(buffer + (offset << 1), digits);\n }\n\n if (num >= 10) {\n offset -= 2;\n let digits = load(DIGITS + (num << alignof()));\n store(buffer + (offset << 1), digits);\n } else {\n offset -= 1;\n let digit = CharCode._0 + num;\n store(buffer + (offset << 1), digit);\n }\n}\n\nfunction utoa64_dec_lut(buffer: usize, num: u64, offset: usize): void {\n while (num >= 100000000) {\n let t = num / 100000000;\n let r = (num - t * 100000000);\n num = t;\n\n let b = r / 10000;\n let c = r % 10000;\n\n let b1 = b / 100;\n let b2 = b % 100;\n let c1 = c / 100;\n let c2 = c % 100;\n\n let digits1 = load(DIGITS + (c1 << alignof()));\n let digits2 = load(DIGITS + (c2 << alignof()));\n\n offset -= 4;\n store(buffer + (offset << 1), digits1 | (digits2 << 32));\n\n digits1 = load(DIGITS + (b1 << alignof()));\n digits2 = load(DIGITS + (b2 << alignof()));\n\n offset -= 4;\n store(buffer + (offset << 1), digits1 | (digits2 << 32));\n }\n\n utoa32_dec_lut(buffer, num, offset);\n}\n\nfunction utoa_hex_lut(buffer: usize, num: u64, offset: usize): void {\n const lut = changetype(HEX_DIGITS);\n while (offset >= 2) {\n offset -= 2;\n store(\n buffer + (offset << 1),\n load(lut + ((num & 0xFF) << alignof()))\n );\n num >>= 8;\n }\n if (offset & 1) {\n store(buffer, load(lut + (num << 6)));\n }\n}\n\nfunction utoa_dec_simple(buffer: usize, num: T, offset: usize): void {\n do {\n let t = num / 10;\n let r = (num % 10);\n num = changetype(t);\n offset--;\n store(buffer + (offset << 1), CharCode._0 + r);\n } while (num);\n}\n\nfunction utoa_hex_simple(buffer: usize, num: T, offset: usize): void {\n do {\n let d = num & 0x0F | CharCode._0;\n d += select(0x27, 0, d > CharCode._9);\n offset--;\n store(buffer + (offset << 1), d);\n // @ts-ignore: type\n num >>= 4;\n } while (num);\n}\n\n// @ts-ignore: decorator\n@inline\nexport function utoa32_dec_core(buffer: usize, num: u32, offset: usize): void {\n if (ASC_SHRINK_LEVEL >= 1) {\n utoa_dec_simple(buffer, num, offset);\n } else {\n utoa32_dec_lut(buffer, num, offset);\n }\n}\n\n// @ts-ignore: decorator\n@inline\nfunction utoa32_hex_core(buffer: usize, num: u32, offset: usize): void {\n if (ASC_SHRINK_LEVEL >= 1) {\n utoa_hex_simple(buffer, num, offset);\n } else {\n utoa_hex_lut(buffer, num, offset);\n }\n}\n\n// @ts-ignore: decorator\n@inline\nfunction utoa64_dec_core(buffer: usize, num: u64, offset: usize): void {\n if (ASC_SHRINK_LEVEL >= 1) {\n utoa_dec_simple(buffer, num, offset);\n } else {\n utoa64_dec_lut(buffer, num, offset);\n }\n}\n\n// @ts-ignore: decorator\n@inline\nfunction utoa64_hex_core(buffer: usize, num: u64, offset: usize): void {\n if (ASC_SHRINK_LEVEL >= 1) {\n utoa_hex_simple(buffer, num, offset);\n } else {\n utoa_hex_lut(buffer, num, offset);\n }\n}\n\nfunction utoa64_any_core(buffer: usize, num: u64, offset: usize, radix: i32): void {\n const lut = changetype(ANY_DIGITS);\n var base = u64(radix);\n if ((radix & (radix - 1)) == 0) { // for radix which pow of two\n let shift = u64(ctz(radix) & 7);\n let mask = base - 1;\n do {\n offset--;\n store(buffer + (offset << 1), load(lut + (usize(num & mask) << 1)));\n num >>= shift;\n } while (num);\n } else {\n do {\n offset--;\n let q = num / base;\n store(buffer + (offset << 1), load(lut + (usize(num - q * base) << 1)));\n num = q;\n } while (num);\n }\n}\n\nexport function utoa32(value: u32, radix: i32): String {\n if (radix < 2 || radix > 36) {\n throw new RangeError(\"toString() radix argument must be between 2 and 36\");\n }\n if (!value) return \"0\";\n var out: String;\n\n if (radix == 10) {\n let decimals = decimalCount32(value);\n out = changetype(__new(decimals << 1, idof()));\n utoa32_dec_core(changetype(out), value, decimals);\n } else if (radix == 16) {\n let decimals = (31 - clz(value) >> 2) + 1;\n out = changetype(__new(decimals << 1, idof()));\n utoa32_hex_core(changetype(out), value, decimals);\n } else {\n let decimals = ulog_base(value, radix);\n out = changetype(__new(decimals << 1, idof()));\n utoa64_any_core(changetype(out), value, decimals, radix);\n }\n return out;\n}\n\nexport function itoa32(value: i32, radix: i32): String {\n if (radix < 2 || radix > 36) {\n throw new RangeError(\"toString() radix argument must be between 2 and 36\");\n }\n if (!value) return \"0\";\n\n var sign = (value >>> 31) << 1;\n if (sign) value = -value;\n var out: String;\n\n if (radix == 10) {\n let decimals = decimalCount32(value);\n out = changetype(__new((decimals << 1) + sign, idof()));\n utoa32_dec_core(changetype(out) + sign, value, decimals);\n } else if (radix == 16) {\n let decimals = (31 - clz(value) >> 2) + 1;\n out = changetype(__new((decimals << 1) + sign, idof()));\n utoa32_hex_core(changetype(out) + sign, value, decimals);\n } else {\n let val32 = u32(value);\n let decimals = ulog_base(val32, radix);\n out = changetype(__new((decimals << 1) + sign, idof()));\n utoa64_any_core(changetype(out) + sign, val32, decimals, radix);\n }\n if (sign) store(changetype(out), CharCode.MINUS);\n return out;\n}\n\nexport function utoa64(value: u64, radix: i32): String {\n if (radix < 2 || radix > 36) {\n throw new RangeError(\"toString() radix argument must be between 2 and 36\");\n }\n if (!value) return \"0\";\n var out: String;\n\n if (radix == 10) {\n if (value <= u32.MAX_VALUE) {\n let val32 = value;\n let decimals = decimalCount32(val32);\n out = changetype(__new(decimals << 1, idof()));\n utoa32_dec_core(changetype(out), val32, decimals);\n } else {\n let decimals = decimalCount64High(value);\n out = changetype(__new(decimals << 1, idof()));\n utoa64_dec_core(changetype(out), value, decimals);\n }\n } else if (radix == 16) {\n let decimals = (63 - u32(clz(value)) >> 2) + 1;\n out = changetype(__new(decimals << 1, idof()));\n utoa64_hex_core(changetype(out), value, decimals);\n } else {\n let decimals = ulog_base(value, radix);\n out = changetype(__new(decimals << 1, idof()));\n utoa64_any_core(changetype(out), value, decimals, radix);\n }\n return out;\n}\n\nexport function itoa64(value: i64, radix: i32): String {\n if (radix < 2 || radix > 36) {\n throw new RangeError(\"toString() radix argument must be between 2 and 36\");\n }\n if (!value) return \"0\";\n\n var sign = u32(value >>> 63) << 1;\n if (sign) value = -value;\n var out: String;\n\n if (radix == 10) {\n if (value <= u32.MAX_VALUE) {\n let val32 = value;\n let decimals = decimalCount32(val32);\n out = changetype(__new((decimals << 1) + sign, idof()));\n utoa32_dec_core(changetype(out) + sign, val32, decimals);\n } else {\n let decimals = decimalCount64High(value);\n out = changetype(__new((decimals << 1) + sign, idof()));\n utoa64_dec_core(changetype(out) + sign, value, decimals);\n }\n } else if (radix == 16) {\n let decimals = (63 - u32(clz(value)) >> 2) + 1;\n out = changetype(__new((decimals << 1) + sign, idof()));\n utoa64_hex_core(changetype(out) + sign, value, decimals);\n } else {\n let decimals = ulog_base(value, radix);\n out = changetype(__new((decimals << 1) + sign, idof()));\n utoa64_any_core(changetype(out) + sign, value, decimals, radix);\n }\n if (sign) store(changetype(out), CharCode.MINUS);\n return out;\n}\n\n// @ts-ignore: decorator\n@lazy var _K: i32 = 0;\n\n// // @ts-ignore: decorator\n// @lazy\n// var _frc: u64 = 0;\n\n// @ts-ignore: decorator\n@lazy var _exp: i32 = 0;\n\n// @ts-ignore: decorator\n@lazy var _frc_minus: u64 = 0;\n\n// @ts-ignore: decorator\n@lazy var _frc_plus: u64 = 0;\n\n// @ts-ignore: decorator\n@lazy var _frc_pow: u64 = 0;\n\n// @ts-ignore: decorator\n@lazy var _exp_pow: i32 = 0;\n\n// @ts-ignore: decorator\n@inline\nfunction umul64f(u: u64, v: u64): u64 {\n var u0 = u & 0xFFFFFFFF;\n var v0 = v & 0xFFFFFFFF;\n\n var u1 = u >> 32;\n var v1 = v >> 32;\n\n var l = u0 * v0;\n var t = u1 * v0 + (l >> 32);\n var w = u0 * v1 + (t & 0xFFFFFFFF);\n\n w += 0x7FFFFFFF; // rounding\n\n t >>= 32;\n w >>= 32;\n\n return u1 * v1 + t + w;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction umul64e(e1: i32, e2: i32): i32 {\n return e1 + e2 + 64; // where 64 is significand size\n}\n\n// @ts-ignore: decorator\n@inline\nfunction normalizedBoundaries(f: u64, e: i32): void {\n var frc = (f << 1) + 1;\n var exp = e - 1;\n var off = clz(frc);\n frc <<= off;\n exp -= off;\n\n var m = 1 + i32(f == 0x0010000000000000);\n\n _frc_plus = frc;\n _frc_minus = ((f << m) - 1) << e - m - exp;\n _exp = exp;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction grisuRound(buffer: usize, len: i32, delta: u64, rest: u64, ten_kappa: u64, wp_w: u64): void {\n var lastp = buffer + ((len - 1) << 1);\n var digit = load(lastp);\n while (\n rest < wp_w &&\n delta - rest >= ten_kappa && (\n rest + ten_kappa < wp_w ||\n wp_w - rest > rest + ten_kappa - wp_w\n )\n ) {\n --digit;\n rest += ten_kappa;\n }\n store(lastp, digit);\n}\n\n// @ts-ignore: decorator\n@inline\nfunction getCachedPower(minExp: i32): void {\n const c = reinterpret(0x3FD34413509F79FE); // 1 / lg(10) = 0.30102999566398114\n var dk = (-61 - minExp) * c + 347;\t // dk must be positive, so can do ceiling in positive\n var k = dk;\n k += i32(k != dk); // conversion with ceil\n\n var index = (k >> 3) + 1;\n _K = 348 - (index << 3);\t// decimal exponent no need lookup table\n _frc_pow = load(FRC_POWERS + (index << alignof()));\n _exp_pow = load(EXP_POWERS + (index << alignof()));\n}\n\n// @ts-ignore: decorator\n@inline\nfunction grisu2(value: f64, buffer: usize, sign: i32): i32 {\n\n // frexp routine\n var uv = reinterpret(value);\n var exp = i32((uv & 0x7FF0000000000000) >>> 52);\n var sid = uv & 0x000FFFFFFFFFFFFF;\n var frc = (u64(exp != 0) << 52) + sid;\n exp = select(exp, 1, exp) - (0x3FF + 52);\n\n normalizedBoundaries(frc, exp);\n getCachedPower(_exp);\n\n // normalize\n var off = clz(frc);\n frc <<= off;\n exp -= off;\n\n var frc_pow = _frc_pow;\n var exp_pow = _exp_pow;\n\n var w_frc = umul64f(frc, frc_pow);\n var w_exp = umul64e(exp, exp_pow);\n\n var wp_frc = umul64f(_frc_plus, frc_pow) - 1;\n var wp_exp = umul64e(_exp, exp_pow);\n\n var wm_frc = umul64f(_frc_minus, frc_pow) + 1;\n var delta = wp_frc - wm_frc;\n\n return genDigits(buffer, w_frc, w_exp, wp_frc, wp_exp, delta, sign);\n}\n\nfunction genDigits(buffer: usize, w_frc: u64, w_exp: i32, mp_frc: u64, mp_exp: i32, delta: u64, sign: i32): i32 {\n var one_exp = -mp_exp;\n var one_frc = (1) << one_exp;\n var mask = one_frc - 1;\n\n var wp_w_frc = mp_frc - w_frc;\n\n var p1 = u32(mp_frc >> one_exp);\n var p2 = mp_frc & mask;\n\n var kappa = decimalCount32(p1);\n var len = sign;\n\n while (kappa > 0) {\n let d: u32;\n switch (kappa) {\n case 10: { d = p1 / 1000000000; p1 %= 1000000000; break; }\n case 9: { d = p1 / 100000000; p1 %= 100000000; break; }\n case 8: { d = p1 / 10000000; p1 %= 10000000; break; }\n case 7: { d = p1 / 1000000; p1 %= 1000000; break; }\n case 6: { d = p1 / 100000; p1 %= 100000; break; }\n case 5: { d = p1 / 10000; p1 %= 10000; break; }\n case 4: { d = p1 / 1000; p1 %= 1000; break; }\n case 3: { d = p1 / 100; p1 %= 100; break; }\n case 2: { d = p1 / 10; p1 %= 10; break; }\n case 1: { d = p1; p1 = 0; break; }\n default: { d = 0; break; }\n }\n\n if (d | len) store(buffer + (len++ << 1), CharCode._0 + d);\n\n --kappa;\n let tmp = ((p1) << one_exp) + p2;\n if (tmp <= delta) {\n _K += kappa;\n grisuRound(buffer, len, delta, tmp, load(POWERS10 + (kappa << alignof())) << one_exp, wp_w_frc);\n return len;\n }\n }\n\n while (true) {\n p2 *= 10;\n delta *= 10;\n\n let d = p2 >> one_exp;\n if (d | len) store(buffer + (len++ << 1), CharCode._0 + d);\n\n p2 &= mask;\n --kappa;\n if (p2 < delta) {\n _K += kappa;\n wp_w_frc *= load(POWERS10 + (-kappa << alignof()));\n grisuRound(buffer, len, delta, p2, one_frc, wp_w_frc);\n return len;\n }\n }\n}\n\n// @ts-ignore: decorator\n@inline\nfunction genExponent(buffer: usize, k: i32): i32 {\n var sign = k < 0;\n if (sign) k = -k;\n var decimals = decimalCount32(k) + 1;\n utoa32_dec_core(buffer, k, decimals);\n store(buffer, select(CharCode.MINUS, CharCode.PLUS, sign));\n return decimals;\n}\n\nfunction prettify(buffer: usize, length: i32, k: i32): i32 {\n if (!k) {\n store(buffer + (length << 1), CharCode.DOT | (CharCode._0 << 16));\n return length + 2;\n }\n\n var kk = length + k;\n if (length <= kk && kk <= 21) {\n // 1234e7 -> 12340000000\n for (let i = length; i < kk; ++i) {\n store(buffer + (i << 1), CharCode._0);\n }\n store(buffer + (kk << 1), CharCode.DOT | (CharCode._0 << 16));\n return kk + 2;\n } else if (kk > 0 && kk <= 21) {\n // 1234e-2 -> 12.34\n let ptr = buffer + (kk << 1);\n memory.copy(\n ptr + 2,\n ptr,\n -k << 1\n );\n store(buffer + (kk << 1), CharCode.DOT);\n return length + 1;\n } else if (-6 < kk && kk <= 0) {\n // 1234e-6 -> 0.001234\n let offset = 2 - kk;\n memory.copy(\n buffer + (offset << 1),\n buffer,\n length << 1\n );\n store(buffer, CharCode._0 | (CharCode.DOT << 16));\n for (let i = 2; i < offset; ++i) {\n store(buffer + (i << 1), CharCode._0);\n }\n return length + offset;\n } else if (length == 1) {\n // 1e30\n store(buffer, CharCode.e, 2);\n length = genExponent(buffer + 4, kk - 1);\n return length + 2;\n } else {\n let len = length << 1;\n memory.copy(\n buffer + 4,\n buffer + 2,\n len - 2\n );\n store(buffer, CharCode.DOT, 2);\n store(buffer + len, CharCode.e, 2);\n length += genExponent(buffer + len + 4, kk - 1);\n return length + 2;\n }\n}\n\nfunction dtoa_core(buffer: usize, value: f64): i32 {\n var sign = i32(value < 0);\n if (sign) {\n value = -value;\n store(buffer, CharCode.MINUS);\n }\n // assert(value > 0 && value <= 1.7976931348623157e308);\n var len = grisu2(value, buffer, sign);\n len = prettify(buffer + (sign << 1), len - sign, _K);\n return len + sign;\n}\n\n// @ts-ignore: decorator\n@lazy @inline const dtoa_buf = memory.data(MAX_DOUBLE_LENGTH << 1);\n\nexport function dtoa(value: f64): String {\n if (value == 0) return \"0.0\";\n if (!isFinite(value)) {\n if (isNaN(value)) return \"NaN\";\n return select(\"-Infinity\", \"Infinity\", value < 0);\n }\n var size = dtoa_core(dtoa_buf, value) << 1;\n var result = changetype(__new(size, idof()));\n memory.copy(changetype(result), dtoa_buf, size);\n return result;\n}\n\nexport function itoa_buffered(buffer: usize, value: T): u32 {\n var sign: u32 = 0;\n if (isSigned()) {\n sign = u32(value < 0);\n if (sign) {\n if (sizeof() == 1) {\n if (value == -0x80) {\n // -0x80 -> -128\n store(buffer,\n CharCode.MINUS |\n (CharCode._0 + 1) << 16 |\n (CharCode._0 + 2) << 32 |\n (CharCode._0 + 8) << 48\n );\n return 4;\n }\n }\n if (sizeof() == 2) {\n if (value == -0x8000) {\n // -0x8000 -> -32768\n store(buffer,\n CharCode.MINUS |\n (CharCode._0 + 3) << 16 |\n (CharCode._0 + 2) << 32 |\n (CharCode._0 + 7) << 48\n ); // -327\n store(buffer + 8,\n (CharCode._0 + 6) << 0 |\n (CharCode._0 + 8) << 16\n ); // 68\n return 6;\n }\n }\n store(buffer, CharCode.MINUS);\n // @ts-ignore\n value = -value;\n }\n }\n var dest = buffer + (sign << 1);\n if (ASC_SHRINK_LEVEL <= 1) {\n if (isSigned()) {\n if (sizeof() <= 4) {\n if (value < 10) {\n store(dest, value | CharCode._0);\n return 1 + sign;\n }\n } else {\n if (value < 10) {\n store(dest, value | CharCode._0);\n return 1 + sign;\n }\n }\n } else {\n if (value < 10) {\n store(buffer, value | CharCode._0);\n return 1;\n }\n }\n }\n var decimals: u32 = 0;\n if (sizeof() <= 4) {\n let val32 = value;\n decimals = decimalCount32(val32);\n utoa32_dec_core(dest, val32, decimals);\n } else {\n if (value <= u32.MAX_VALUE) {\n let val32 = value;\n decimals = decimalCount32(val32);\n utoa32_dec_core(dest, val32, decimals);\n } else {\n let val64 = value;\n decimals = decimalCount64High(val64);\n utoa64_dec_core(dest, val64, decimals);\n }\n }\n return sign + decimals;\n}\n\nexport function dtoa_buffered(buffer: usize, value: f64): u32 {\n if (value == 0) {\n store(buffer, CharCode._0);\n store(buffer, CharCode.DOT, 2);\n store(buffer, CharCode._0, 4);\n return 3;\n }\n if (!isFinite(value)) {\n if (isNaN(value)) {\n store(buffer, CharCode.N);\n store(buffer, CharCode.a, 2);\n store(buffer, CharCode.N, 4);\n return 3;\n } else {\n let sign = value < 0;\n if (sign) {\n store(buffer, CharCode.MINUS); // -\n buffer += 2;\n }\n store(buffer, 0x690066006E0049, 0); // ifnI\n store(buffer, 0x7900740069006E, 8); // ytin\n return 8 + u32(sign);\n }\n }\n return dtoa_core(buffer, value);\n}\n","import {\n itoa32,\n utoa32,\n itoa64,\n utoa64,\n dtoa,\n itoa_buffered,\n dtoa_buffered,\n MAX_DOUBLE_LENGTH\n} from \"./number\";\n\nimport {\n ipow32\n} from \"../math\";\n\n// All tables are stored as two staged lookup tables (static tries)\n// because the full range of Unicode symbols can't be efficiently\n// represented as-is in memory (see Unicode spec ch 5, p.196):\n// https://www.unicode.org/versions/Unicode12.0.0/ch05.pdf\n// Tables have been generated using these forked musl tools:\n// https://github.com/MaxGraey/musl-chartable-tools/tree/case-ignorable\n\n// Lookup table to check if a character is alphanumeric or not\n// See: https://git.musl-libc.org/cgit/musl/tree/src/ctype/alpha.h\n// size: 3904 bytes\n// @ts-ignore\n@inline @lazy const ALPHA_TABLE = memory.data([\n 18,17,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,17,34,35,36,17,37,38,39,40,\n 41,42,43,44,17,45,46,47,16,16,48,16,16,16,16,16,16,16,49,50,51,16,52,53,16,16,\n 17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,54,\n 17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,\n 17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,\n 17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,\n 17,17,17,55,17,17,17,17,56,17,57,58,59,60,61,62,17,17,17,17,17,17,17,17,17,17,\n 17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,\n 17,17,17,17,17,17,17,63,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,17,64,65,17,66,67,\n 68,69,70,71,72,73,74,17,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,\n 93,94,16,95,96,97,98,17,17,17,99,100,101,16,16,16,16,16,16,16,16,16,16,17,17,\n 17,17,102,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,17,17,103,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,17,17,104,105,16,16,106,107,17,17,17,17,17,17,17,17,17,17,17,17,17,\n 17,17,17,17,17,17,17,17,17,17,108,17,17,17,17,109,110,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 17,111,112,16,16,16,16,16,16,16,16,16,113,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,114,115,116,117,16,16,16,16,16,16,16,16,118,\n 119,120,16,16,16,16,16,121,122,16,16,16,16,123,16,16,124,16,16,16,16,16,16,16,\n 16,16,125,16,16,16,\n 16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,254,255,255,7,254,\n 255,255,7,0,0,0,0,0,4,32,4,255,255,127,255,255,255,127,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,195,255,3,0,31,80,0,0,0,0,0,0,0,0,0,0,32,0,0,0,0,0,223,188,64,215,255,255,\n 251,255,255,255,255,255,255,255,255,255,191,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,3,252,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,254,255,255,255,127,2,255,255,255,\n 255,255,1,0,0,0,0,255,191,182,0,255,255,255,135,7,0,0,0,255,7,255,255,255,255,\n 255,255,255,254,255,195,255,255,255,255,255,255,255,255,255,255,255,255,239,\n 31,254,225,255,\n 159,0,0,255,255,255,255,255,255,0,224,255,255,255,255,255,255,255,255,255,255,\n 255,255,3,0,255,255,255,255,255,7,48,4,255,255,255,252,255,31,0,0,255,255,255,\n 1,255,7,0,0,0,0,0,0,255,255,223,255,255,0,240,255,248,3,255,255,255,255,255,\n 255,255,255,255,239,255,223,225,255,207,255,254,255,239,159,249,255,255,253,\n 197,227,159,89,128,176,207,255,3,16,238,135,249,255,255,253,109,195,135,25,2,\n 94,192,255,63,0,238,191,251,255,255,253,237,227,191,27,1,0,207,255,0,30,238,\n 159,249,255,255,253,237,227,159,25,192,176,207,255,2,0,236,199,61,214,24,199,\n 255,195,199,29,129,0,192,255,0,0,239,223,253,255,255,253,255,227,223,29,96,7,\n 207,255,0,0,239,223,253,255,255,253,239,227,223,29,96,64,207,255,6,0,255,223,\n 253,255,255,255,255,231,223,93,240,128,207,255,0,252,238,255,127,252,255,255,\n 251,47,127,128,95,255,192,255,12,0,254,255,255,255,255,127,255,7,63,32,255,3,\n 0,0,0,0,214,247,255,255,175,255,255,59,95,32,255,243,0,0,0,\n 0,1,0,0,0,255,3,0,0,255,254,255,255,255,31,254,255,3,255,255,254,255,255,255,\n 31,0,0,0,0,0,0,0,0,255,255,255,255,255,255,127,249,255,3,255,255,255,255,255,\n 255,255,255,255,63,255,255,255,255,191,32,255,255,255,255,255,247,255,255,255,\n 255,255,255,255,255,255,61,127,61,255,255,255,255,255,61,255,255,255,255,61,\n 127,61,255,127,255,255,255,255,255,255,255,61,255,255,255,255,255,255,255,255,\n 7,0,0,0,0,255,255,0,0,255,255,255,255,255,255,255,255,255,255,63,63,254,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,159,255,255,254,255,255,7,255,255,255,255,255,255,255,255,\n 255,199,255,1,255,223,15,0,255,255,15,0,255,255,15,0,255,223,13,0,255,255,255,\n 255,255,255,207,255,255,1,128,16,255,3,0,0,0,0,255,3,255,255,255,255,255,255,\n 255,255,255,255,255,1,255,255,255,255,255,7,255,255,255,255,255,255,255,255,\n 63,\n 0,255,255,255,127,255,15,255,1,192,255,255,255,255,63,31,0,255,255,255,255,\n 255,15,255,255,255,3,255,3,0,0,0,0,255,255,255,15,255,255,255,255,255,255,255,\n 127,254,255,31,0,255,3,255,3,128,0,0,128,1,0,0,0,0,0,0,0,255,255,255,255,255,\n 255,239,255,239,15,255,3,0,0,0,0,255,255,255,255,255,243,255,255,255,255,255,\n 255,191,255,3,0,255,255,255,255,255,255,127,0,255,227,255,255,255,255,255,63,\n 255,1,255,255,255,255,255,231,0,0,0,0,0,222,111,4,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,\n 128,255,31,0,255,255,63,63,255,255,255,255,63,63,255,170,255,255,255,63,255,\n 255,255,255,255,255,223,95,220,31,207,15,255,31,220,31,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,2,128,0,0,255,31,0,0,0,0,0,0,0,0,0,0,0,0,132,252,47,62,80,189,255,243,\n 224,67,0,0,255,255,255,255,255,1,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,255,255,255,255,255,255,3,0,\n 0,255,255,255,255,255,127,255,255,255,255,255,127,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,31,120,12,0,255,255,255,255,191,32,255,\n 255,255,255,255,255,255,128,0,0,255,255,127,0,127,127,127,127,127,127,127,127,\n 255,255,255,255,0,0,0,0,0,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,224,0,0,0,254,3,62,31,254,255,255,255,255,255,255,255,255,255,127,224,254,\n 255,255,255,255,255,255,255,255,255,255,247,224,255,255,255,255,255,254,255,\n 255,255,255,255,255,255,255,255,255,127,0,0,255,255,255,255,0,0,0,0,0,0,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,\n 31,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,31,0,0,\n 0,0,0,0,0,0,255,255,255,255,255,63,255,31,255,255,255,15,0,0,255,255,255,255,\n 255,127,240,143,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,\n 0,128,255,252,255,255,255,255,255,255,255,255,255,255,255,255,249,255,255,255,\n 255,255,255,252,7,0,0,0,0,224,255,191,255,255,255,255,0,0,0,255,255,255,255,\n 255,255,15,0,255,255,255,255,255,255,255,255,47,0,255,3,0,0,252,232,255,255,\n 255,255,255,7,255,255,255,255,7,0,255,255,255,31,255,255,255,255,255,255,247,\n 255,0,128,255,3,255,255,255,127,255,255,255,255,255,255,127,0,255,63,255,3,\n 255,255,127,252,255,255,255,255,255,255,255,127,5,0,0,56,255,255,60,0,126,126,\n 126,0,127,127,255,255,255,255,255,247,255,3,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,7,255,3,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,15,0,255,255,127,248,255,255,255,255,\n 255,\n 15,255,255,255,255,255,255,255,255,255,255,255,255,255,63,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,3,0,0,0,0,127,0,248,224,255,253,127,95,219,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,3,0,0,0,248,255,255,255,\n 255,255,255,255,255,255,255,255,255,63,0,0,255,255,255,255,255,255,255,255,\n 252,255,255,255,255,255,255,0,0,0,0,0,255,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,31,0,0,255,3,\n 254,255,255,7,254,255,255,7,192,255,255,255,255,255,255,255,255,255,255,127,\n 252,252,252,28,0,0,0,0,255,239,255,255,127,255,255,183,255,63,255,63,0,0,0,0,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,7,0,0,0,0,0,0,0,0,\n 255,255,255,255,255,255,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,255,255,255,31,255,255,255,255,255,255,1,0,0,0,0,\n 0,255,255,255,255,0,224,255,255,255,7,255,255,255,255,255,7,255,255,255,63,\n 255,255,255,255,15,255,62,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,63,255,3,255,255,255,255,15,255,255,255,\n 255,15,255,255,255,255,255,0,255,255,255,255,255,255,15,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,255,255,255,255,255,255,127,0,255,255,63,0,255,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,63,253,255,255,255,255,191,145,255,255,63,0,255,255,\n 127,0,255,255,255,127,0,0,0,0,0,0,0,0,255,255,55,0,255,255,63,0,255,255,255,3,\n 0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,192,0,0,0,0,0,0,0,0,111,240,239,\n 254,255,255,63,0,0,0,0,0,255,255,255,31,255,255,255,31,0,0,0,0,255,254,255,\n 255,31,0,0,0,255,255,255,255,255,255,63,0,255,255,63,0,255,255,7,0,255,255,3,\n 0,0,0,0,0,0,0,0,0,0,0,0,\n 0,255,255,255,255,255,255,255,255,255,1,0,0,0,0,0,0,255,255,255,255,255,255,7,\n 0,255,255,255,255,255,255,7,0,255,255,255,255,255,0,255,3,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,\n 255,27,3,0,0,0,0,0,0,0,0,0,255,255,255,31,128,0,255,255,63,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,255,255,31,0,0,0,255,255,127,0,255,255,255,255,255,255,255,255,63,0,0,\n 0,192,255,0,0,252,255,255,255,255,255,255,1,0,0,255,255,255,1,255,3,255,255,\n 255,255,255,255,199,255,240,0,255,255,255,255,71,0,255,255,255,255,255,255,\n 255,255,30,192,255,23,0,0,0,0,255,255,251,255,255,255,159,64,0,0,0,0,0,0,0,0,\n 127,189,255,191,255,1,255,255,255,255,255,255,255,1,255,3,239,159,249,255,255,\n 253,237,227,159,25,129,224,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,255,255,255,255,255,255,255,255,187,7,255,131,3,0,0,0,255,255,255,255,255,\n 255,255,255,179,0,255,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,\n 255,255,255,63,127,0,0,0,63,0,0,0,0,255,255,255,255,255,255,255,127,17,0,255,\n 3,0,0,0,0,255,255,255,255,255,255,63,1,255,3,0,0,0,0,0,0,255,255,255,231,255,\n 7,255,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,\n 255,255,1,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,3,0,128,\n 127,242,111,255,255,255,191,153,7,0,255,3,0,0,0,0,0,0,0,0,255,252,255,255,255,\n 255,255,252,26,0,0,0,255,255,255,255,255,255,231,127,0,0,255,255,255,255,255,\n 255,255,255,255,32,0,0,0,0,255,255,255,255,255,255,255,1,255,253,255,255,255,\n 255,127,127,1,0,255,3,0,0,252,255,255,255,252,255,255,254,127,0,0,0,0,0,0,0,0,\n 0,127,251,255,255,255,255,127,180,203,0,255,3,191,253,255,255,255,127,123,1,\n 255,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,255,255,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,\n 0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,3,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,127,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,255,255,255,255,255,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,255,255,255,255,255,255,255,255,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,\n 0,255,255,255,255,255,255,255,1,255,255,255,127,255,3,0,0,0,0,0,0,0,0,0,0,0,0,\n 255,255,255,63,0,0,255,255,255,255,255,255,0,0,15,0,255,3,248,255,255,224,255,\n 255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,\n 255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,135,\n 255,255,255,255,255,255,255,128,255,255,0,0,0,0,0,0,0,0,11,0,3,0,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,0,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,63,0,0,0,0,0,\n 255,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,\n 127,0,0,0,0,0,0,7,0,240,0,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,15,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,7,255,31,255,1,255,67,0,0,0,0,0,0,0,0,0,0,0,0,\n 255,255,255,255,255,255,255,255,255,255,223,255,255,255,255,255,255,255,255,\n 223,100,222,255,235,239,255,255,255,255,255,255,255,191,231,223,223,255,255,\n 255,123,95,252,253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,63,255,255,255,253,255,255,247,255,255,255,\n 247,255,255,223,255,255,255,223,255,255,127,255,255,255,127,255,255,255,253,\n 255,255,255,253,255,255,247,207,255,255,255,255,255,255,127,255,255,249,219,7,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,31,\n 128,63,255,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,15,255,\n 3,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,31,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,143,8,\n 255,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,255,255,255,150,254,247,10,\n 132,234,150,170,150,247,247,94,255,251,255,15,238,251,255,15,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,255,255,255,3,255,255,255,3,255,255,255,3,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,3\n]);\n\n// size: 1568 bytes (compressed to ~1380 bytes after binaryen)\n// @ts-ignore: decorator\n@lazy @inline const CASED = memory.data([\n 18,19,20,21,22,23,16,16,16,16,16,16,16,16,16,16,\n 24,16,16,25,16,16,16,16,16,16,16,16,26,27,17,28,\n 29,30,16,16,31,16,16,16,16,16,16,16,32,33,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,34,35,16,16,16,36,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,37,16,16,16,38,\n 16,16,16,16,39,16,16,16,16,16,16,16,40,16,16,16,\n 16,16,16,16,16,16,16,16,41,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,42,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,43,44,45,46,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,47,16,16,16,16,16,16,\n 16,48,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 0,0,0,0,0,0,0,0,254,255,255,7,254,255,255,7,0,0,0,0,0,4,32,4,\n 255,255,127,255,255,255,127,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,247,240,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,239,255,255,255,255,1,3,0,0,0,31,0,0,0,\n 0,0,0,0,0,0,0,0,32,0,0,0,0,0,207,188,64,215,255,255,251,255,255,255,\n 255,255,255,255,255,255,191,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 3,252,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,255,\n 255,255,127,0,255,255,255,255,255,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,\n 191,32,255,255,255,255,255,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,255,255,255,255,255,255,255,255,255,255,63,63,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,255,1,255,255,255,255,255,231,0,0,0,0,0,0,0,0,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 0,0,0,0,0,0,0,0,255,255,63,63,255,255,255,255,63,63,255,170,255,255,255,63,\n 255,255,255,255,255,255,223,95,220,31,207,15,255,31,220,31,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,2,128,0,0,255,31,0,0,0,0,0,0,0,0,0,0,0,0,\n 132,252,47,62,80,189,31,242,224,67,0,0,255,255,255,255,24,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,192,255,255,255,255,255,255,3,0,0,255,255,255,255,255,127,255,255,\n 255,255,255,127,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,31,120,12,0,\n 255,255,255,255,191,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,63,0,0,\n 255,255,255,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,255,255,255,\n 255,255,255,255,255,255,255,255,255,120,255,255,255,255,255,255,252,7,0,0,0,0,96,7,\n 0,0,0,0,0,0,255,255,255,255,255,247,255,1,255,255,255,255,255,255,255,255,255,255,\n 0,0,0,0,0,0,0,0,127,0,248,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,255,255,7,\n 254,255,255,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,255,255,\n 255,255,15,255,255,255,255,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 255,255,255,255,255,255,7,0,255,255,255,255,255,255,7,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,0,0,0,0,\n 0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,223,255,255,255,255,255,\n 255,255,255,223,100,222,255,235,239,255,255,255,255,255,255,255,191,231,223,223,255,255,255,123,\n 95,252,253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,63,255,255,255,\n 253,255,255,247,255,255,255,247,255,255,223,255,255,255,223,255,255,127,255,255,255,127,255,255,\n 255,253,255,255,255,253,255,255,247,15,0,0,0,0,0,0,255,255,255,255,255,255,255,255,\n 15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,255,255,255,3,255,255,255,3,255,255,255,3,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0\n]);\n\n// size: 2976 bytes (compressed to ~2050 bytes after binaryen)\n// @ts-ignore: decorator\n@lazy @inline const CASE_IGNORABLES = memory.data([\n 18,16,19,20,21,22,23,24,25,26,27,28,29,30,31,32,\n 33,16,16,34,16,16,16,35,36,37,38,39,40,41,16,42,\n 43,16,16,16,16,16,16,16,16,16,16,16,44,45,46,16,\n 47,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 48,16,16,16,49,16,50,51,52,53,54,55,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,56,16,16,57,58,\n 16,59,60,61,16,16,16,16,16,16,62,16,16,63,64,65,\n 66,67,68,69,70,71,72,73,74,75,76,16,77,78,79,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,80,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,81,82,16,16,16,83,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,84,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,85,86,16,16,16,16,16,16,16,87,16,16,16,16,16,\n 88,89,90,16,16,16,16,16,91,92,16,16,16,16,16,16,\n 16,16,16,93,16,16,16,16,16,16,16,16,16,16,16,16,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 0,0,0,0,128,64,0,4,0,0,0,64,1,0,0,0,0,0,0,0,0,161,144,1,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,48,4,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,3,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,0,0,0,0,\n 0,0,254,255,255,255,255,191,182,0,0,0,0,0,16,0,63,0,255,23,0,0,0,0,\n 1,248,255,255,0,0,1,0,0,0,0,0,0,0,0,0,0,0,192,191,255,61,0,0,\n 0,128,2,0,0,0,255,255,255,7,0,0,0,0,0,0,0,0,0,0,192,255,1,0,\n 0,0,0,0,0,248,63,36,0,0,192,255,255,63,0,0,0,0,0,14,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,248,255,255,255,255,255,7,0,0,0,0,0,0,20,\n 254,33,254,0,12,0,2,0,2,0,0,0,0,0,0,16,30,32,0,0,12,0,0,64,\n 6,0,0,0,0,0,0,16,134,57,2,0,0,0,35,0,6,0,0,0,0,0,0,16,\n 190,33,0,0,12,0,0,252,2,0,0,0,0,0,0,144,30,32,96,0,12,0,0,0,\n 4,0,0,0,0,0,0,0,1,32,0,0,0,0,0,0,17,0,0,0,0,0,0,192,\n 193,61,96,0,12,0,0,0,2,0,0,0,0,0,0,144,64,48,0,0,12,0,0,0,\n 3,0,0,0,0,0,0,24,30,32,0,0,12,0,0,0,2,0,0,0,0,0,0,0,\n 0,4,92,0,0,0,0,0,0,0,0,0,0,0,242,7,192,127,0,0,0,0,0,0,\n 0,0,0,0,0,0,242,31,64,63,0,0,0,0,0,0,0,0,0,3,0,0,160,2,\n 0,0,0,0,0,0,254,127,223,224,255,254,255,255,255,31,64,0,0,0,0,0,0,0,\n 0,0,0,0,0,224,253,102,0,0,0,195,1,0,30,0,100,32,0,32,0,0,0,0,\n 0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,224,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,0,0,28,0,\n 0,0,12,0,0,0,12,0,0,0,0,0,0,0,176,63,64,254,143,32,0,0,0,0,\n 0,120,0,0,0,0,0,0,8,0,0,0,0,0,0,0,96,0,0,0,0,2,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,135,1,4,14,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,9,0,0,0,0,\n 0,0,64,127,229,31,248,159,0,0,0,0,128,0,255,255,1,0,0,0,0,0,0,0,\n 15,0,0,0,0,0,208,23,4,0,0,0,0,248,15,0,3,0,0,0,60,59,0,0,\n 0,0,0,0,64,163,3,0,0,0,0,0,0,240,207,0,0,0,0,0,0,0,0,63,\n 0,0,0,0,0,0,0,0,0,0,247,255,253,33,16,3,0,0,0,0,0,240,255,255,\n 255,255,255,255,255,7,0,1,0,0,0,248,255,255,255,255,255,255,255,255,255,255,255,251,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,\n 3,224,0,224,0,224,0,96,0,248,0,3,144,124,0,0,0,0,0,0,223,255,2,128,\n 0,0,255,31,0,0,0,0,0,0,255,255,255,255,1,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,0,0,0,0,0,0,128,3,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,128,0,128,0,0,0,0,0,0,0,0,\n 0,0,0,0,255,255,255,255,0,0,0,0,0,128,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,0,0,0,60,62,8,\n 0,0,0,0,0,0,0,0,0,0,0,126,0,0,0,0,0,0,0,0,0,0,0,112,\n 0,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,16,0,0,0,0,0,0,\n 0,0,0,0,0,128,247,191,0,0,0,240,0,0,0,0,0,0,0,0,0,0,3,0,\n 255,255,255,255,3,0,0,0,0,0,0,0,0,0,1,0,0,7,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,3,68,8,0,0,96,16,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,48,0,0,0,255,255,3,128,0,0,0,0,192,63,0,0,\n 128,255,3,0,0,0,0,0,7,0,0,0,0,0,200,51,0,128,0,0,96,0,0,0,\n 0,0,0,0,0,126,102,0,8,16,0,0,0,0,1,16,0,0,0,0,0,0,157,193,\n 2,0,0,32,0,48,88,0,0,0,0,0,0,0,0,0,0,0,0,248,0,14,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,32,33,0,0,0,0,0,64,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,255,3,0,0,0,0,0,0,0,\n 255,255,8,0,255,255,0,0,0,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,128,128,64,0,4,0,0,0,64,1,0,0,0,0,0,1,0,\n 0,0,0,192,0,0,0,0,0,0,0,0,8,0,0,14,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,7,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,240,0,0,0,0,0,135,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,0,\n 0,0,0,0,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 192,255,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 2,0,0,0,0,0,0,255,127,0,0,0,0,0,0,128,3,0,0,0,0,0,120,38,\n 0,32,0,0,0,0,0,0,7,0,0,0,128,239,31,0,0,0,0,0,0,0,8,0,\n 3,0,0,0,0,0,192,127,0,158,0,0,0,0,0,0,0,0,0,0,0,128,211,64,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,248,7,0,0,\n 3,0,0,0,0,0,0,24,1,0,0,0,192,31,31,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,92,0,0,64,0,0,0,0,\n 0,0,0,0,0,0,248,133,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,176,1,0,0,48,0,0,0,0,\n 0,0,0,0,0,0,248,167,1,0,0,0,0,0,0,0,0,0,0,0,0,40,191,0,\n 0,0,0,0,0,0,0,0,0,0,0,224,188,15,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,6,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,88,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,240,12,1,0,0,0,254,7,0,0,0,0,248,121,128,0,126,14,0,0,0,0,\n 0,252,127,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,191,\n 0,0,0,0,0,0,0,0,0,0,252,255,255,252,109,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,126,180,191,0,0,0,0,0,0,0,0,0,163,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,255,1,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,31,0,0,0,0,0,0,0,127,0,15,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,128,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,27,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,15,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,3,248,255,\n 231,15,0,0,0,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 255,255,255,255,255,255,127,248,255,255,255,255,255,31,32,0,16,0,0,248,254,255,0,0,\n 0,0,0,0,0,0,0,0,127,255,255,249,219,7,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,63,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 240,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,248\n]);\n\n// @ts-ignore: decorator\n@lazy @inline const LOWER127 = memory.data([\n 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,\n 16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,\n 32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,\n 48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,\n 64,\n 97,98,99,100,101,102,103,104,105,106,107,108,109,\n 110,111,112,113,114,115,116,117,118,119,120,121,122,\n 91,92,93,94,95,96,\n 97,98,99,100,101,102,103,104,105,106,107,108,109,\n 110,111,112,113,114,115,116,117,118,119,120,121,122,\n 123,124,125,126,127\n]);\n\n// @ts-ignore: decorator\n@lazy @inline const UPPER127 = memory.data([\n 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,\n 16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,\n 32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,\n 48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,\n 64,\n 65,66,67,68,69,70,71,72,73,74,75,76,77,\n 78,79,80,81,82,83,84,85,86,87,88,89,90,\n 91,92,93,94,95,96,\n 65,66,67,68,69,70,71,72,73,74,75,76,77,\n 78,79,80,81,82,83,84,85,86,87,88,89,90,\n 123,124,125,126,127\n]);\n\n// 23 * 8 = 184 bytes\n// @ts-ignore: decorator\n@lazy @inline const POWERS10 = memory.data([\n 1e00, 1e01, 1e02, 1e03, 1e04, 1e05, 1e06, 1e07, 1e08, 1e09,\n 1e10, 1e11, 1e12, 1e13, 1e14, 1e15, 1e16, 1e17, 1e18, 1e19,\n 1e20, 1e21, 1e22\n]);\n\n// @ts-ignore: decorator\n@inline\nexport const enum CharCode {\n PERCENT = 0x25,\n PLUS = 0x2B,\n MINUS = 0x2D,\n DOT = 0x2E,\n _0 = 0x30,\n _1 = 0x31,\n _2 = 0x32,\n _3 = 0x33,\n _4 = 0x34,\n _5 = 0x35,\n _6 = 0x36,\n _7 = 0x37,\n _8 = 0x38,\n _9 = 0x39,\n A = 0x41,\n B = 0x42,\n E = 0x45,\n I = 0x49,\n N = 0x4E,\n O = 0x4F,\n X = 0x58,\n Z = 0x5A,\n a = 0x61,\n b = 0x62,\n e = 0x65,\n n = 0x6E,\n o = 0x6F,\n u = 0x75,\n x = 0x78,\n z = 0x7A\n}\n\n// @ts-ignore: decorator\n@inline\nexport function isAscii(c: u32): bool {\n return !(c >> 7);\n}\n\n// @ts-ignore: decorator\n@inline\nexport function isLower8(c: u32): bool {\n return c - CharCode.a < 26;\n}\n\n// @ts-ignore: decorator\n@inline\nexport function isUpper8(c: u32): bool {\n return c - CharCode.A < 26;\n}\n\nexport function isSpace(c: u32): bool {\n if (c < 0x1680) { // < (1)\n // , , , , , and \n // (c == 0x20 || c == 0xA0) was optimized to (c | 0x80) == 0xA0\n return ((c | 0x80) == 0xA0) || (c - 0x09 <= 0x0D - 0x09);\n }\n if (c - 0x2000 <= 0x200A - 0x2000) return true;\n switch (c) {\n case 0x1680: // (1)\n case 0x2028: // (2)\n case 0x2029: // \n case 0x202F: // \n case 0x205F: // \n case 0x3000: // \n case 0xFEFF: return true; // \n }\n return false;\n}\n\nexport function isAlpha(c: u32): bool {\n if (isAscii(c)) return (c | 32) - CharCode.a < 26;\n if (c < 0x20000) {\n // @ts-ignore: cast\n return stagedBinaryLookup(ALPHA_TABLE, c);\n }\n return c < 0x2FFFE;\n}\n\n// @ts-ignore: decorator\n@inline\nexport function isCased(c: u32): bool {\n // @ts-ignore: cast\n return c < 0x1F18A && stagedBinaryLookup(CASED, c);\n}\n\n// @ts-ignore: decorator\n@inline\nexport function isCaseIgnorable(c: u32): bool {\n // @ts-ignore: cast\n return c < 0xE01F0 && stagedBinaryLookup(CASE_IGNORABLES, c);\n}\n\n// @ts-ignore: decorator\n@inline\nexport function isFinalSigma(buffer: usize, index: isize, len: isize): bool {\n const lookaheadLimit = 30; // max lookahead limit\n var found = false;\n var pos = index;\n var minPos = max(0, pos - lookaheadLimit);\n while (pos > minPos) {\n let c = codePointBefore(buffer, pos);\n if (!isCaseIgnorable(c)) {\n if (isCased(c)) {\n found = true;\n } else {\n return false;\n }\n }\n pos -= isize(c >= 0x10000) + 1;\n }\n if (!found) return false;\n pos = index + 1;\n var maxPos = min(pos + lookaheadLimit, len);\n while (pos < maxPos) {\n let c = load(buffer + (pos << 1));\n if (u32((c & 0xFC00) == 0xD800) & u32(pos + 1 != len)) {\n let c1 = load(buffer + (pos << 1), 2);\n if ((c1 & 0xFC00) == 0xDC00) {\n c = (c - 0xD800 << 10) + (c1 - 0xDC00) + 0x10000;\n }\n }\n if (!isCaseIgnorable(c)) {\n return !isCased(c);\n }\n pos += isize(c >= 0x10000) + 1;\n }\n return true;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction codePointBefore(buffer: usize, index: isize): i32 {\n if (index <= 0) return -1;\n var c = load(buffer + (index - 1 << 1));\n if (u32((c & 0xFC00) == 0xDC00) & u32(index - 2 >= 0)) {\n let c1 = load(buffer + (index - 2 << 1));\n if ((c1 & 0xFC00) == 0xD800) {\n return ((c1 & 0x3FF) << 10) + (c & 0x3FF) + 0x10000;\n }\n }\n return (c & 0xF800) == 0xD800 ? 0xFFFD : c;\n}\n\n// Search routine for two-staged lookup tables\nfunction stagedBinaryLookup(table: usize, c: u32): bool {\n return ((load(table + (load(table + (c >>> 8)) << 5) + ((c & 255) >> 3)) >>> (c & 7)) & 1);\n}\n\nexport function compareImpl(str1: string, index1: usize, str2: string, index2: usize, len: usize): i32 {\n var ptr1 = changetype(str1) + (index1 << 1);\n var ptr2 = changetype(str2) + (index2 << 1);\n if (ASC_SHRINK_LEVEL < 2) {\n if (len >= 4 && !((ptr1 & 7) | (ptr2 & 7))) {\n do {\n if (load(ptr1) != load(ptr2)) break;\n ptr1 += 8;\n ptr2 += 8;\n len -= 4;\n } while (len >= 4);\n }\n }\n while (len--) {\n let a = load(ptr1);\n let b = load(ptr2);\n if (a != b) return a - b;\n ptr1 += 2;\n ptr2 += 2;\n }\n return 0;\n}\n\n// @ts-ignore: decorator\n@inline\nexport function toLower8(c: u32): u32 {\n if (ASC_SHRINK_LEVEL > 0) {\n return c | u32(isUpper8(c)) << 5;\n } else {\n return load(LOWER127 + c);\n }\n}\n\n// @ts-ignore: decorator\n@inline\nexport function toUpper8(c: u32): u32 {\n if (ASC_SHRINK_LEVEL > 0) {\n return c & ~(u32(isLower8(c)) << 5);\n } else {\n return load(UPPER127 + c);\n }\n}\n\n/** Parses a string to an integer (usually), using the specified radix. */\nexport function strtol(str: string, radix: i32 = 0): T {\n var len = str.length;\n if (!len) {\n if (isFloat()) {\n // @ts-ignore: cast\n return NaN;\n } else {\n // @ts-ignore: cast\n return 0;\n }\n }\n\n var ptr = changetype(str) /* + HEAD -> offset */;\n var code = load(ptr);\n\n // trim white spaces\n while (isSpace(code)) {\n code = load(ptr += 2);\n --len;\n }\n // determine sign\n // @ts-ignore\n var sign: T = 1;\n if (code == CharCode.MINUS || code == CharCode.PLUS) {\n if (!--len) {\n if (isFloat()) {\n // @ts-ignore: cast\n return NaN;\n } else {\n // @ts-ignore: cast\n return 0;\n }\n }\n if (code == CharCode.MINUS) {\n // @ts-ignore: type\n sign = -1;\n }\n code = load(ptr += 2);\n }\n\n // See https://tc39.es/ecma262/#sec-parseint-string-radix\n if (radix) {\n if (radix < 2 || radix > 36) {\n if (isFloat()) {\n // @ts-ignore: cast\n return NaN;\n } else {\n // @ts-ignore: cast\n return 0;\n }\n }\n // handle case as parseInt(\"0xFF\", 16) by spec\n if (radix == 16) {\n if (\n len > 2 &&\n code == CharCode._0 &&\n (load(ptr, 2) | 32) == CharCode.x\n ) {\n ptr += 4; len -= 2;\n }\n }\n } else {\n // determine radix by literal prefix\n if (code == CharCode._0 && len > 2) {\n switch (load(ptr, 2) | 32) {\n case CharCode.b: {\n ptr += 4; len -= 2;\n radix = 2;\n break;\n }\n case CharCode.o: {\n ptr += 4; len -= 2;\n radix = 8;\n break;\n }\n case CharCode.x: {\n ptr += 4; len -= 2;\n radix = 16;\n break;\n }\n }\n }\n if (!radix) radix = 10;\n }\n\n // calculate value\n // @ts-ignore: type\n var num: T = 0;\n var initial = len - 1;\n while (len--) {\n code = load(ptr);\n if (code - CharCode._0 < 10) {\n code -= CharCode._0;\n } else if (code - CharCode.A <= (CharCode.Z - CharCode.A)) {\n code -= CharCode.A - 10;\n } else if (code - CharCode.a <= (CharCode.z - CharCode.a)) {\n code -= CharCode.a - 10;\n }\n if (code >= radix) {\n if (initial == len) {\n if (isFloat()) {\n // @ts-ignore: cast\n return NaN;\n } else {\n // @ts-ignore: cast\n return 0;\n }\n }\n break;\n }\n // @ts-ignore: type\n num = num * radix + code;\n ptr += 2;\n }\n // @ts-ignore: type\n return sign * num;\n}\n\nexport function strtod(str: string): f64 {\n var len = str.length;\n if (!len) return NaN;\n\n var ptr = changetype(str);\n var code = load(ptr);\n\n var sign = 1.0;\n // skip white spaces\n while (len && isSpace(code)) {\n code = load(ptr += 2);\n --len;\n }\n if (!len) return NaN;\n\n // try parse '-' or '+'\n if (code == CharCode.MINUS) {\n if (!--len) return NaN;\n code = load(ptr += 2);\n sign = -1;\n } else if (code == CharCode.PLUS) {\n if (!--len) return NaN;\n code = load(ptr += 2);\n }\n\n // try parse Infinity\n if (len >= 8 && code == CharCode.I) {\n if (\n load(ptr, 0) == 0x690066006E0049 && // ifnI\n load(ptr, 8) == 0x7900740069006E // ytin\n ) {\n return Infinity * sign;\n }\n return NaN;\n }\n // validate next symbol\n if (code != CharCode.DOT && (code - CharCode._0) >= 10) {\n return NaN;\n }\n var savedPtr = ptr;\n // skip zeros\n while (code == CharCode._0) {\n code = load(ptr += 2);\n --len;\n }\n if (len <= 0) return 0.0 * sign;\n const capacity = 19; // int(64 * 0.3010)\n var pointed = false;\n var consumed = 0;\n var position = 0;\n var x: u64 = 0;\n if (code == CharCode.DOT) {\n let noDigits = !(savedPtr - ptr);\n ptr += 2; --len;\n if (!len && noDigits) return NaN;\n for (pointed = true; (code = load(ptr)) == CharCode._0; --position, ptr += 2) --len;\n if (len <= 0) return 0.0 * sign;\n if (!position && noDigits && code - CharCode._0 >= 10) return NaN;\n }\n for (let digit = code - CharCode._0; digit < 10 || (code == CharCode.DOT && !pointed); digit = code - CharCode._0) {\n if (digit < 10) {\n x = consumed < capacity ? 10 * x + digit : x | u64(!!digit);\n ++consumed;\n } else {\n position = consumed;\n pointed = true;\n }\n if (!--len) break;\n code = load(ptr += 2);\n }\n\n if (!pointed) position = consumed;\n return copysign(scientific(x, position - min(capacity, consumed) + parseExp(ptr, len)), sign);\n}\n\nexport function strtob(str: string): bool {\n var size: usize = str.length << 1;\n var offset: usize = 0;\n if (size > 8) {\n // try trim end whitespaces first\n while (size && isSpace(load(changetype(str) + size - 2))) size -= 2;\n if (size > 8) {\n // trim start whitespaces\n while (offset < size && isSpace(load(changetype(str) + offset))) offset += 2;\n size -= offset;\n }\n }\n if (size != 8) return false;\n // \"true\" represents as \\00\\e\\00\\u\\00\\e\\00\\t (00 65 00 75 00 72 00 74)\n return load(changetype(str) + offset) == 0x0065_0075_0072_0074;\n}\n\nexport function joinBooleanArray(dataStart: usize, length: i32, separator: string): string {\n var lastIndex = length - 1;\n if (lastIndex < 0) return \"\";\n if (!lastIndex) return select(\"true\", \"false\", load(dataStart));\n\n var sepLen = separator.length;\n var valueLen = 5; // max possible length of element len(\"false\")\n var estLen = (valueLen + sepLen) * lastIndex + valueLen;\n var result = changetype(__new(estLen << 1, idof()));\n var offset = 0;\n var value: bool;\n for (let i = 0; i < lastIndex; ++i) {\n value = load(dataStart + i);\n valueLen = 4 + i32(!value);\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(select(\"true\", \"false\", value)),\n valueLen << 1\n );\n offset += valueLen;\n if (sepLen) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(separator),\n sepLen << 1\n );\n offset += sepLen;\n }\n }\n value = load(dataStart + lastIndex);\n valueLen = 4 + i32(!value);\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(select(\"true\", \"false\", value)),\n valueLen << 1\n );\n offset += valueLen;\n\n if (estLen > offset) return result.substring(0, offset);\n return result;\n}\n\nexport function joinIntegerArray(dataStart: usize, length: i32, separator: string): string {\n var lastIndex = length - 1;\n if (lastIndex < 0) return \"\";\n if (!lastIndex) {\n let value = load(dataStart);\n if (isSigned()) {\n if (sizeof() <= 4) {\n // @ts-ignore: type\n return changetype(itoa32(value, 10));\n } else {\n // @ts-ignore: type\n return changetype(itoa64(value, 10));\n }\n } else {\n if (sizeof() <= 4) {\n // @ts-ignore: type\n return changetype(utoa32(value, 10));\n } else {\n // @ts-ignore: type\n return changetype(utoa64(value, 10));\n }\n }\n }\n\n var sepLen = separator.length;\n const valueLen = (sizeof() <= 4 ? 10 : 20) + i32(isSigned());\n var estLen = (valueLen + sepLen) * lastIndex + valueLen;\n var result = changetype(__new(estLen << 1, idof()));\n var offset = 0;\n var value: T;\n for (let i = 0; i < lastIndex; ++i) {\n value = load(dataStart + (i << alignof()));\n // @ts-ignore: type\n offset += itoa_buffered(changetype(result) + (offset << 1), value);\n if (sepLen) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(separator),\n sepLen << 1\n );\n offset += sepLen;\n }\n }\n value = load(dataStart + (lastIndex << alignof()));\n // @ts-ignore: type\n offset += itoa_buffered(changetype(result) + (offset << 1), value);\n if (estLen > offset) return result.substring(0, offset);\n return result;\n}\n\nexport function joinFloatArray(dataStart: usize, length: i32, separator: string): string {\n var lastIndex = length - 1;\n if (lastIndex < 0) return \"\";\n if (!lastIndex) {\n return changetype(dtoa(\n // @ts-ignore: type\n load(dataStart))\n );\n }\n\n const valueLen = MAX_DOUBLE_LENGTH;\n var sepLen = separator.length;\n var estLen = (valueLen + sepLen) * lastIndex + valueLen;\n var result = changetype(__new(estLen << 1, idof()));\n var offset = 0;\n var value: T;\n for (let i = 0; i < lastIndex; ++i) {\n value = load(dataStart + (i << alignof()));\n // @ts-ignore: type\n offset += dtoa_buffered(changetype(result) + (offset << 1), value);\n if (sepLen) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(separator),\n sepLen << 1\n );\n offset += sepLen;\n }\n }\n value = load(dataStart + (lastIndex << alignof()));\n // @ts-ignore: type\n offset += dtoa_buffered(changetype(result) + (offset << 1), value);\n if (estLen > offset) return result.substring(0, offset);\n return result;\n}\n\nexport function joinStringArray(dataStart: usize, length: i32, separator: string): string {\n var lastIndex = length - 1;\n if (lastIndex < 0) return \"\";\n if (!lastIndex) {\n // @ts-ignore: type\n return load(dataStart) || \"\";\n }\n var estLen = 0;\n var value: string;\n for (let i = 0; i < length; ++i) {\n value = load(dataStart + (i << alignof()));\n if (changetype(value) != 0) estLen += value.length;\n }\n var offset = 0;\n var sepLen = separator.length;\n var result = changetype(__new((estLen + sepLen * lastIndex) << 1, idof()));\n for (let i = 0; i < lastIndex; ++i) {\n value = load(dataStart + (i << alignof()));\n if (changetype(value) != 0) {\n let valueLen = value.length;\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(value),\n valueLen << 1\n );\n offset += valueLen;\n }\n if (sepLen) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(separator),\n sepLen << 1\n );\n offset += sepLen;\n }\n }\n value = load(dataStart + (lastIndex << alignof()));\n if (changetype(value) != 0) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(value),\n value.length << 1\n );\n }\n return result;\n}\n\nexport function joinReferenceArray(dataStart: usize, length: i32, separator: string): string {\n var lastIndex = length - 1;\n if (lastIndex < 0) return \"\";\n var value: T;\n if (!lastIndex) {\n value = load(dataStart);\n // @ts-ignore: type\n return value != null ? value.toString() : \"\";\n }\n var result = \"\";\n var sepLen = separator.length;\n for (let i = 0; i < lastIndex; ++i) {\n value = load(dataStart + (i << alignof()));\n // @ts-ignore: type\n if (value != null) result += value.toString();\n if (sepLen) result += separator;\n }\n value = load(dataStart + (lastIndex << alignof()));\n // @ts-ignore: type\n if (value != null) result += value.toString();\n return result;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction scientific(significand: u64, exp: i32): f64 {\n if (!significand || exp < -342) return 0;\n if (exp > 308) return Infinity;\n // Try use fast path\n // Use fast path for string-to-double conversion if possible\n // see http://www.exploringbinary.com/fast-path-decimal-to-floating-point-conversion\n // Simple integer\n var significandf = significand;\n if (!exp) return significandf;\n if (exp > 22 && exp <= 22 + 15) {\n significandf *= pow10(exp - 22);\n exp = 22;\n }\n if (significand <= 9007199254740991 && abs(exp) <= 22) {\n if (exp > 0) return significandf * pow10(exp);\n return significandf / pow10(-exp);\n } else if (exp < 0) {\n return scaledown(significand, exp);\n } else {\n return scaleup(significand, exp);\n }\n}\n\n// Adopted from metallic lib:\n// https://github.com/jdh8/metallic/blob/master/src/stdlib/parse/scientific.h\n// @ts-ignore: decorator\n@inline\nfunction scaledown(significand: u64, exp: i32): f64 {\n const denom: u64 = 6103515625; // 1e14 * 0x1p-14\n const scale = reinterpret(0x3F06849B86A12B9B); // 1e-14 * 0x1p32\n\n var shift = clz(significand);\n significand <<= shift;\n shift = exp - shift;\n\n for (; exp <= -14; exp += 14) {\n let q = significand / denom;\n let r = significand % denom;\n let s = clz(q);\n significand = (q << s) + nearest(scale * (r << (s - 18)));\n shift -= s;\n }\n var b = ipow32(5, -exp);\n var q = significand / b;\n var r = significand % b;\n var s = clz(q);\n significand = (q << s) + (reinterpret(reinterpret(r) + (s << 52)) / b);\n shift -= s;\n\n return NativeMath.scalbn(significand, shift);\n}\n\n// Adopted from metallic lib:\n// https://github.com/jdh8/metallic/blob/master/src/stdlib/parse/scientific.h\n// @ts-ignore: decorator\n@inline\nfunction scaleup(significand: u64, exp: i32): f64 {\n const coeff: u32 = 1220703125; // 1e13 * 0x1p-13;\n var shift = ctz(significand);\n significand >>= shift;\n shift += exp;\n\n __fixmulShift = shift;\n for (; exp >= 13; exp -= 13) {\n significand = fixmul(significand, coeff);\n }\n significand = fixmul(significand, ipow32(5, exp));\n shift = __fixmulShift;\n return NativeMath.scalbn(significand, shift);\n}\n\n// Adopted from metallic lib:\n// https://github.com/jdh8/metallic/blob/master/src/stdlib/parse/scientific.h\n// @ts-ignore: decorator\n@inline\nfunction parseExp(ptr: usize, len: i32): i32 {\n var sign = 1, magnitude = 0;\n var code = load(ptr);\n // check code is 'e' or 'E'\n if ((code | 32) != CharCode.e) return 0;\n\n if (!--len) return 0;\n code = load(ptr += 2);\n if (code == CharCode.MINUS) {\n if (!--len) return 0;\n code = load(ptr += 2);\n sign = -1;\n } else if (code == CharCode.PLUS) {\n if (!--len) return 0;\n code = load(ptr += 2);\n }\n // skip zeros\n while (code == CharCode._0) {\n if (!--len) return 0;\n code = load(ptr += 2);\n }\n for (let digit: u32 = code - CharCode._0; len && digit < 10; digit = code - CharCode._0) {\n if (magnitude >= 3200) return sign * 3200;\n magnitude = 10 * magnitude + digit;\n code = load(ptr += 2);\n --len;\n }\n return sign * magnitude;\n}\n\n// @ts-ignore: decorator\n@lazy var __fixmulShift: u64 = 0;\n\n// Adopted from metallic lib:\n// https://github.com/jdh8/metallic/blob/master/src/stdlib/parse/scientific.h\n// @ts-ignore: decorator\n@inline\nfunction fixmul(a: u64, b: u32): u64 {\n var low = (a & 0xFFFFFFFF) * b;\n var high = (a >> 32) * b + (low >> 32);\n var overflow = (high >> 32);\n var space = clz(overflow);\n var revspace: u64 = 32 - space;\n __fixmulShift += revspace;\n return (high << space | (low & 0xFFFFFFFF) >> revspace) + (low << space >> 31 & 1);\n}\n\n// @ts-ignore: decorator\n@inline\nfunction pow10(n: i32): f64 {\n // argument `n` should bounds in [0, 22] range\n return load(POWERS10 + (n << alignof()));\n}\n","import { Math as JSMath } from \"./bindings/dom\";\nexport { JSMath };\n\nimport {\n pow_lut, exp_lut, exp2_lut, log_lut, log2_lut,\n powf_lut, expf_lut, exp2f_lut, logf_lut, log2f_lut\n} from \"./util/math\";\n\nimport {\n abs as builtin_abs,\n ceil as builtin_ceil,\n clz as builtin_clz,\n copysign as builtin_copysign,\n floor as builtin_floor,\n max as builtin_max,\n min as builtin_min,\n sqrt as builtin_sqrt,\n trunc as builtin_trunc\n} from \"./builtins\";\n\n// SUN COPYRIGHT NOTICE\n//\n// Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.\n// Developed at SunPro, a Sun Microsystems, Inc. business.\n// Permission to use, copy, modify, and distribute this software\n// is freely granted, provided that this notice is preserved.\n//\n// Applies to all functions marked with a comment referring here.\n\n/** @internal */\n// @ts-ignore: decorator\n@lazy var rempio2_y0: f64, rempio2_y1: f64, res128_hi: u64;\n\n/** @internal */\n// @ts-ignore: decorator\n@lazy @inline const PIO2_TABLE = memory.data([\n 0x00000000A2F9836E, 0x4E441529FC2757D1, 0xF534DDC0DB629599, 0x3C439041FE5163AB,\n 0xDEBBC561B7246E3A, 0x424DD2E006492EEA, 0x09D1921CFE1DEB1C, 0xB129A73EE88235F5,\n 0x2EBB4484E99C7026, 0xB45F7E413991D639, 0x835339F49C845F8B, 0xBDF9283B1FF897FF,\n 0xDE05980FEF2F118B, 0x5A0A6D1F6D367ECF, 0x27CB09B74F463F66, 0x9E5FEA2D7527BAC7,\n 0xEBE5F17B3D0739F7, 0x8A5292EA6BFB5FB1, 0x1F8D5D0856033046, 0xFC7B6BABF0CFBC20,\n 0x9AF4361DA9E39161, 0x5EE61B086599855F, 0x14A068408DFFD880, 0x4D73273106061557\n]);\n\n/** @internal */\nfunction R(z: f64): f64 { // Rational approximation of (asin(x)-x)/x^3\n const // see: musl/src/math/asin.c and SUN COPYRIGHT NOTICE above\n pS0 = reinterpret(0x3FC5555555555555), // 1.66666666666666657415e-01\n pS1 = reinterpret(0xBFD4D61203EB6F7D), // -3.25565818622400915405e-01\n pS2 = reinterpret(0x3FC9C1550E884455), // 2.01212532134862925881e-01\n pS3 = reinterpret(0xBFA48228B5688F3B), // -4.00555345006794114027e-02\n pS4 = reinterpret(0x3F49EFE07501B288), // 7.91534994289814532176e-04\n pS5 = reinterpret(0x3F023DE10DFDF709), // 3.47933107596021167570e-05\n qS1 = reinterpret(0xC0033A271C8A2D4B), // -2.40339491173441421878e+00\n qS2 = reinterpret(0x40002AE59C598AC8), // 2.02094576023350569471e+00\n qS3 = reinterpret(0xBFE6066C1B8D0159), // -6.88283971605453293030e-01\n qS4 = reinterpret(0x3FB3B8C5B12E9282); // 7.70381505559019352791e-02\n\n var p = z * (pS0 + z * (pS1 + z * (pS2 + z * (pS3 + z * (pS4 + z * pS5)))));\n var q = 1.0 + z * (qS1 + z * (qS2 + z * (qS3 + z * qS4)));\n return p / q;\n}\n\n/** @internal */\n// @ts-ignore: decorator\n@inline\nfunction expo2(x: f64, sign: f64): f64 { // exp(x)/2 for x >= log(DBL_MAX)\n const // see: musl/src/math/__expo2.c\n k = 2043,\n kln2 = reinterpret(0x40962066151ADD8B); // 0x1.62066151add8bp+10\n var scale = reinterpret(((0x3FF + k / 2) << 20) << 32);\n // in directed rounding correct sign before rounding or overflow is important\n return NativeMath.exp(x - kln2) * (sign * scale) * scale;\n}\n\n/** @internal */\n/* Helper function to eventually get bits of π/2 * |x|\n *\n * y = π/4 * (frac << clz(frac) >> 11)\n * return clz(frac)\n *\n * Right shift 11 bits to make upper half fit in `double`\n */\n// @ts-ignore: decorator\n@inline\nfunction pio2_right(q0: u64, q1: u64): u64 { // see: jdh8/metallic/blob/master/src/math/double/rem_pio2.c\n // Bits of π/4\n const p0: u64 = 0xC4C6628B80DC1CD1;\n const p1: u64 = 0xC90FDAA22168C234;\n\n const Ox1p_64 = reinterpret(0x3BF0000000000000); // 0x1p-64\n const Ox1p_75 = reinterpret(0x3B40000000000000); // 0x1p-75\n\n var shift = clz(q1);\n\n q1 = q1 << shift | q0 >> (64 - shift);\n q0 <<= shift;\n\n var lo = umuldi(p1, q1);\n var hi = res128_hi;\n\n var ahi = hi >> 11;\n var alo = lo >> 11 | hi << 53;\n var blo = (Ox1p_75 * p0 * q1 + Ox1p_75 * p1 * q0);\n\n rempio2_y0 = (ahi + u64(lo < blo));\n rempio2_y1 = Ox1p_64 * (alo + blo);\n\n return shift;\n}\n\n/** @internal */\n// @ts-ignore: decorator\n@inline\nfunction umuldi(u: u64, v: u64): u64 {\n var u1: u64 , v1: u64, w0: u64, w1: u64, t: u64;\n\n u1 = u & 0xFFFFFFFF;\n v1 = v & 0xFFFFFFFF;\n\n u >>= 32;\n v >>= 32;\n\n t = u1 * v1;\n w0 = t & 0xFFFFFFFF;\n t = u * v1 + (t >> 32);\n w1 = t >> 32;\n t = u1 * v + (t & 0xFFFFFFFF);\n\n res128_hi = u * v + w1 + (t >> 32);\n return (t << 32) + w0;\n}\n\n/** @internal */\nfunction pio2_large_quot(x: f64, u: i64): i32 { // see: jdh8/metallic/blob/master/src/math/double/rem_pio2.c\n var magnitude = u & 0x7FFFFFFFFFFFFFFF;\n var offset = (magnitude >> 52) - 1045;\n var shift = offset & 63;\n var tblPtr = PIO2_TABLE + ((offset >> 6) << 3);\n var s0: u64, s1: u64, s2: u64;\n\n var b0 = load(tblPtr, 0 << 3);\n var b1 = load(tblPtr, 1 << 3);\n var b2 = load(tblPtr, 2 << 3);\n\n // Get 192 bits of 0x1p-31 / π with `offset` bits skipped\n if (shift) {\n let rshift = 64 - shift;\n let b3 = load(tblPtr, 3 << 3);\n s0 = b1 >> rshift | b0 << shift;\n s1 = b2 >> rshift | b1 << shift;\n s2 = b3 >> rshift | b2 << shift;\n } else {\n s0 = b0;\n s1 = b1;\n s2 = b2;\n }\n\n var significand = (u & 0x000FFFFFFFFFFFFF) | 0x0010000000000000;\n\n // First 128 bits of fractional part of x/(2π)\n var blo = umuldi(s1, significand);\n var bhi = res128_hi;\n\n var ahi = s0 * significand;\n var clo = (s2 >> 32) * (significand >> 32);\n var plo = blo + clo;\n var phi = ahi + bhi + u64(plo < clo);\n\n // r: u128 = p << 2\n var rlo = plo << 2;\n var rhi = phi << 2 | plo >> 62;\n\n // s: i128 = r >> 127\n var slo = rhi >> 63;\n var shi = slo >> 1;\n var q = (phi >> 62) - slo;\n\n var shifter = 0x3CB0000000000000 - (pio2_right(rlo ^ slo, rhi ^ shi) << 52);\n var signbit = (u ^ rhi) & 0x8000000000000000;\n var coeff = reinterpret(shifter | signbit);\n\n rempio2_y0 *= coeff;\n rempio2_y1 *= coeff;\n\n return q;\n}\n\n/** @internal */\n// @ts-ignore: decorator\n@inline\nfunction rempio2(x: f64, u: u64, sign: i32): i32 {\n const\n pio2_1 = reinterpret(0x3FF921FB54400000), // 1.57079632673412561417e+00\n pio2_1t = reinterpret(0x3DD0B4611A626331), // 6.07710050650619224932e-11\n pio2_2 = reinterpret(0x3DD0B4611A600000), // 6.07710050630396597660e-11\n pio2_2t = reinterpret(0x3BA3198A2E037073), // 2.02226624879595063154e-21\n pio2_3 = reinterpret(0x3BA3198A2E000000), // 2.02226624871116645580e-21\n pio2_3t = reinterpret(0x397B839A252049C1), // 8.47842766036889956997e-32\n invpio2 = reinterpret(0x3FE45F306DC9C883); // 0.63661977236758134308\n\n var ix = (u >> 32) & 0x7FFFFFFF;\n\n if (ASC_SHRINK_LEVEL < 1) {\n if (ix < 0x4002D97C) { // |x| < 3pi/4, special case with n=+-1\n let q = 1, z: f64, y0: f64, y1: f64;\n if (!sign) {\n z = x - pio2_1;\n if (ix != 0x3FF921FB) { // 33+53 bit pi is good enough\n y0 = z - pio2_1t;\n y1 = (z - y0) - pio2_1t;\n } else { // near pi/2, use 33+33+53 bit pi\n z -= pio2_2;\n y0 = z - pio2_2t;\n y1 = (z - y0) - pio2_2t;\n }\n } else { // negative x\n z = x + pio2_1;\n if (ix != 0x3FF921FB) { // 33+53 bit pi is good enough\n y0 = z + pio2_1t;\n y1 = (z - y0) + pio2_1t;\n } else { // near pi/2, use 33+33+53 bit pi\n z += pio2_2;\n y0 = z + pio2_2t;\n y1 = (z - y0) + pio2_2t;\n }\n q = -1;\n }\n rempio2_y0 = y0;\n rempio2_y1 = y1;\n return q;\n }\n }\n\n if (ix < 0x413921FB) { // |x| ~< 2^20*pi/2 (1647099)\n // Use precise Cody Waite scheme\n let q = nearest(x * invpio2);\n let r = x - q * pio2_1;\n let w = q * pio2_1t; // 1st round good to 85 bit\n let j = ix >> 20;\n let y0 = r - w;\n let hi = (reinterpret(y0) >> 32);\n let i = j - ((hi >> 20) & 0x7FF);\n\n if (i > 16) { // 2nd iteration needed, good to 118\n let t = r;\n w = q * pio2_2;\n r = t - w;\n w = q * pio2_2t - ((t - r) - w);\n y0 = r - w;\n hi = (reinterpret(y0) >> 32);\n i = j - ((hi >> 20) & 0x7FF);\n if (i > 49) { // 3rd iteration need, 151 bits acc\n let t = r;\n w = q * pio2_3;\n r = t - w;\n w = q * pio2_3t - ((t - r) - w);\n y0 = r - w;\n }\n }\n let y1 = (r - y0) - w;\n rempio2_y0 = y0;\n rempio2_y1 = y1;\n return q;\n }\n var q = pio2_large_quot(x, u);\n return select(-q, q, sign);\n}\n\n/** @internal */\n// @ts-ignore: decorator\n@inline\nfunction sin_kern(x: f64, y: f64, iy: i32): f64 { // see: musl/tree/src/math/__sin.c\n const\n S1 = reinterpret(0xBFC5555555555549), // -1.66666666666666324348e-01\n S2 = reinterpret(0x3F8111111110F8A6), // 8.33333333332248946124e-03\n S3 = reinterpret(0xBF2A01A019C161D5), // -1.98412698298579493134e-04\n S4 = reinterpret(0x3EC71DE357B1FE7D), // 2.75573137070700676789e-06\n S5 = reinterpret(0xBE5AE5E68A2B9CEB), // -2.50507602534068634195e-08\n S6 = reinterpret(0x3DE5D93A5ACFD57C); // 1.58969099521155010221e-10\n\n var z = x * x;\n var w = z * z;\n var r = S2 + z * (S3 + z * S4) + z * w * (S5 + z * S6);\n var v = z * x;\n if (!iy) {\n return x + v * (S1 + z * r);\n } else {\n return x - ((z * (0.5 * y - v * r) - y) - v * S1);\n }\n}\n\n/** @internal */\n// @ts-ignore: decorator\n@inline\nfunction cos_kern(x: f64, y: f64): f64 { // see: musl/tree/src/math/__cos.c\n const\n C1 = reinterpret(0x3FA555555555554C), // 4.16666666666666019037e-02\n C2 = reinterpret(0xBF56C16C16C15177), // -1.38888888888741095749e-03\n C3 = reinterpret(0x3EFA01A019CB1590), // 2.48015872894767294178e-05\n C4 = reinterpret(0xBE927E4F809C52AD), // -2.75573143513906633035e-07\n C5 = reinterpret(0x3E21EE9EBDB4B1C4), // 2.08757232129817482790e-09\n C6 = reinterpret(0xBDA8FAE9BE8838D4); // -1.13596475577881948265e-11\n\n var z = x * x;\n var w = z * z;\n var r = z * (C1 + z * (C2 + z * C3)) + w * w * (C4 + z * (C5 + z * C6));\n var hz = 0.5 * z;\n w = 1.0 - hz;\n return w + (((1.0 - w) - hz) + (z * r - x * y));\n}\n\n/** @internal */\nfunction tan_kern(x: f64, y: f64, iy: i32): f64 { // see: src/lib/msun/src/k_tan.c\n const\n T0 = reinterpret(0x3FD5555555555563), // 3.33333333333334091986e-01\n T1 = reinterpret(0x3FC111111110FE7A), // 1.33333333333201242699e-01\n T2 = reinterpret(0x3FABA1BA1BB341FE), // 5.39682539762260521377e-02\n T3 = reinterpret(0x3F9664F48406D637), // 2.18694882948595424599e-02\n T4 = reinterpret(0x3F8226E3E96E8493), // 8.86323982359930005737e-03\n T5 = reinterpret(0x3F6D6D22C9560328), // 3.59207910759131235356e-03\n T6 = reinterpret(0x3F57DBC8FEE08315), // 1.45620945432529025516e-03\n T7 = reinterpret(0x3F4344D8F2F26501), // 5.88041240820264096874e-04\n T8 = reinterpret(0x3F3026F71A8D1068), // 2.46463134818469906812e-04\n T9 = reinterpret(0x3F147E88A03792A6), // 7.81794442939557092300e-05\n T10 = reinterpret(0x3F12B80F32F0A7E9), // 7.14072491382608190305e-05\n T11 = reinterpret(0xBEF375CBDB605373), // -1.85586374855275456654e-05\n T12 = reinterpret(0x3EFB2A7074BF7AD4); // 2.59073051863633712884e-05\n\n const\n one = reinterpret(0x3FF0000000000000), // 1.00000000000000000000e+00\n pio4 = reinterpret(0x3FE921FB54442D18), // 7.85398163397448278999e-01\n pio4lo = reinterpret(0x3C81A62633145C07); // 3.06161699786838301793e-17\n\n var z: f64, r: f64, v: f64, w: f64, s: f64;\n var hx = (reinterpret(x) >> 32); // high word of x\n var ix = hx & 0x7FFFFFFF; // high word of |x|\n var big = ix >= 0x3FE59428;\n if (big) { // |x| >= 0.6744\n if (hx < 0) { x = -x, y = -y; }\n z = pio4 - x;\n w = pio4lo - y;\n x = z + w;\n y = 0.0;\n }\n z = x * x;\n w = z * z;\n r = T1 + w * (T3 + w * (T5 + w * (T7 + w * (T9 + w * T11))));\n v = z * (T2 + w * (T4 + w * (T6 + w * (T8 + w * (T10 + w * T12)))));\n s = z * x;\n r = y + z * (s * (r + v) + y);\n r += T0 * s;\n w = x + r;\n if (big) {\n v = iy;\n return (1 - ((hx >> 30) & 2)) * (v - 2.0 * (x - (w * w / (w + v) - r)));\n }\n if (iy == 1) return w;\n var a: f64, t: f64;\n z = w;\n z = reinterpret(reinterpret(z) & 0xFFFFFFFF00000000);\n v = r - (z - x); // z + v = r + x\n t = a = -one / w; // a = -1.0 / w\n t = reinterpret(reinterpret(t) & 0xFFFFFFFF00000000);\n s = one + t * z;\n return t + a * (s + t * v);\n}\n\n/** @internal */\nfunction dtoi32(x: f64): i32 {\n if (ASC_SHRINK_LEVEL > 0) {\n const inv32 = 1.0 / 4294967296;\n return (x - 4294967296 * floor(x * inv32));\n } else {\n let result = 0;\n let u = reinterpret(x);\n let e = (u >> 52) & 0x7FF;\n if (e <= 1023 + 30) {\n result = x;\n } else if (e <= 1023 + 30 + 53) {\n let v = (u & ((1 << 52) - 1)) | (1 << 52);\n v = v << e - 1023 - 52 + 32;\n result = (v >> 32);\n result = select(-result, result, u < 0);\n }\n return result;\n }\n}\n\n// @ts-ignore: decorator\n@lazy var random_seeded = false;\n\n// @ts-ignore: decorator\n@lazy var random_state0_64: u64, random_state1_64: u64;\n\n// @ts-ignore: decorator\n@lazy var random_state0_32: u32, random_state1_32: u32;\n\nfunction murmurHash3(h: u64): u64 { // Force all bits of a hash block to avalanche\n h ^= h >> 33; // see: https://github.com/aappleby/smhasher\n h *= 0xFF51AFD7ED558CCD;\n h ^= h >> 33;\n h *= 0xC4CEB9FE1A85EC53;\n h ^= h >> 33;\n return h;\n}\n\nfunction splitMix32(h: u32): u32 {\n h += 0x6D2B79F5;\n h = (h ^ (h >> 15)) * (h | 1);\n h ^= h + (h ^ (h >> 7)) * (h | 61);\n return h ^ (h >> 14);\n}\n\nexport namespace NativeMath {\n\n // @ts-ignore: decorator\n @lazy\n export const E = reinterpret(0x4005BF0A8B145769); // 2.7182818284590452354\n\n // @ts-ignore: decorator\n @lazy\n export const LN2 = reinterpret(0x3FE62E42FEFA39EF); // 0.69314718055994530942\n\n // @ts-ignore: decorator\n @lazy\n export const LN10 = reinterpret(0x40026BB1BBB55516); // 2.30258509299404568402\n\n // @ts-ignore: decorator\n @lazy\n export const LOG2E = reinterpret(0x3FF71547652B82FE); // 1.4426950408889634074\n\n // @ts-ignore: decorator\n @lazy\n export const LOG10E = reinterpret(0x3FDBCB7B1526E50E); // 0.43429448190325182765\n\n // @ts-ignore: decorator\n @lazy\n export const PI = reinterpret(0x400921FB54442D18); // 3.14159265358979323846\n\n // @ts-ignore: decorator\n @lazy\n export const SQRT1_2 = reinterpret(0x3FE6A09E667F3BCD); // 0.70710678118654752440\n\n // @ts-ignore: decorator\n @lazy\n export const SQRT2 = reinterpret(0x3FF6A09E667F3BCD); // 1.41421356237309504880\n\n // @ts-ignore: decorator\n @lazy\n export var sincos_sin: f64 = 0;\n\n // @ts-ignore: decorator\n @lazy\n export var sincos_cos: f64 = 0;\n\n // @ts-ignore: decorator\n @inline export function abs(x: f64): f64 {\n return builtin_abs(x);\n }\n\n export function acos(x: f64): f64 { // see: musl/src/math/acos.c and SUN COPYRIGHT NOTICE above\n const\n pio2_hi = reinterpret(0x3FF921FB54442D18), // 1.57079632679489655800e+00\n pio2_lo = reinterpret(0x3C91A62633145C07), // 6.12323399573676603587e-17\n Ox1p_120f = reinterpret(0x03800000);\n\n var hx = (reinterpret(x) >> 32);\n var ix = hx & 0x7FFFFFFF;\n if (ix >= 0x3FF00000) {\n let lx = reinterpret(x);\n if ((ix - 0x3FF00000 | lx) == 0) {\n if (hx < 0) return 2 * pio2_hi + Ox1p_120f;\n return 0;\n }\n return 0 / (x - x);\n }\n if (ix < 0x3FE00000) {\n if (ix <= 0x3C600000) return pio2_hi + Ox1p_120f;\n return pio2_hi - (x - (pio2_lo - x * R(x * x)));\n }\n var s: f64, w: f64, z: f64;\n if (hx < 0) {\n // z = (1.0 + x) * 0.5;\n z = 0.5 + x * 0.5;\n s = builtin_sqrt(z);\n w = R(z) * s - pio2_lo;\n return 2 * (pio2_hi - (s + w));\n }\n // z = (1.0 - x) * 0.5;\n z = 0.5 - x * 0.5;\n s = builtin_sqrt(z);\n var df = reinterpret(reinterpret(s) & 0xFFFFFFFF00000000);\n var c = (z - df * df) / (s + df);\n w = R(z) * s + c;\n return 2 * (df + w);\n }\n\n export function acosh(x: f64): f64 { // see: musl/src/math/acosh.c\n const s = reinterpret(0x3FE62E42FEFA39EF);\n var u = reinterpret(x);\n // Prevent propagation for all input values less than 1.0.\n // Note musl lib didn't fix this yet.\n if (u < 0x3FF0000000000000) return (x - x) / 0.0;\n var e = u >> 52 & 0x7FF;\n if (e < 0x3FF + 1) return log1p(x - 1 + builtin_sqrt((x - 1) * (x - 1) + 2 * (x - 1)));\n if (e < 0x3FF + 26) return log(2 * x - 1 / (x + builtin_sqrt(x * x - 1)));\n return log(x) + s;\n }\n\n export function asin(x: f64): f64 { // see: musl/src/math/asin.c and SUN COPYRIGHT NOTICE above\n const\n pio2_hi = reinterpret(0x3FF921FB54442D18), // 1.57079632679489655800e+00\n pio2_lo = reinterpret(0x3C91A62633145C07), // 6.12323399573676603587e-17\n Ox1p_120f = reinterpret(0x03800000);\n\n var hx = (reinterpret(x) >> 32);\n var ix = hx & 0x7FFFFFFF;\n if (ix >= 0x3FF00000) {\n let lx = reinterpret(x);\n if ((ix - 0x3FF00000 | lx) == 0) return x * pio2_hi + Ox1p_120f;\n return 0 / (x - x);\n }\n if (ix < 0x3FE00000) {\n if (ix < 0x3E500000 && ix >= 0x00100000) return x;\n return x + x * R(x * x);\n }\n // var z = (1.0 - builtin_abs(x)) * 0.5;\n var z = 0.5 - builtin_abs(x) * 0.5;\n var s = builtin_sqrt(z);\n var r = R(z);\n if (ix >= 0x3FEF3333) x = pio2_hi - (2 * (s + s * r) - pio2_lo);\n else {\n let f = reinterpret(reinterpret(s) & 0xFFFFFFFF00000000);\n let c = (z - f * f) / (s + f);\n x = 0.5 * pio2_hi - (2 * s * r - (pio2_lo - 2 * c) - (0.5 * pio2_hi - 2 * f));\n }\n return select(-x, x, hx < 0);\n }\n\n export function asinh(x: f64): f64 { // see: musl/src/math/asinh.c\n const c = reinterpret(0x3FE62E42FEFA39EF); // 0.693147180559945309417232121458176568\n var u = reinterpret(x);\n var e = u >> 52 & 0x7FF;\n var y = reinterpret(u & 0x7FFFFFFFFFFFFFFF);\n if (e >= 0x3FF + 26) y = log(y) + c;\n else if (e >= 0x3FF + 1) y = log(2 * y + 1 / (builtin_sqrt(y * y + 1) + y));\n else if (e >= 0x3FF - 26) y = log1p(y + y * y / (builtin_sqrt(y * y + 1) + 1));\n return builtin_copysign(y, x);\n }\n\n export function atan(x: f64): f64 { // see musl/src/math/atan.c and SUN COPYRIGHT NOTICE above\n const\n atanhi0 = reinterpret(0x3FDDAC670561BB4F), // 4.63647609000806093515e-01\n atanhi1 = reinterpret(0x3FE921FB54442D18), // 7.85398163397448278999e-01\n atanhi2 = reinterpret(0x3FEF730BD281F69B), // 9.82793723247329054082e-01\n atanhi3 = reinterpret(0x3FF921FB54442D18), // 1.57079632679489655800e+00\n atanlo0 = reinterpret(0x3C7A2B7F222F65E2), // 2.26987774529616870924e-17\n atanlo1 = reinterpret(0x3C81A62633145C07), // 3.06161699786838301793e-17\n atanlo2 = reinterpret(0x3C7007887AF0CBBD), // 1.39033110312309984516e-17\n atanlo3 = reinterpret(0x3C91A62633145C07), // 6.12323399573676603587e-17\n aT0 = reinterpret(0x3FD555555555550D), // 3.33333333333329318027e-01\n aT1 = reinterpret(0xBFC999999998EBC4), // -1.99999999998764832476e-01\n aT2 = reinterpret(0x3FC24924920083FF), // 1.42857142725034663711e-01\n aT3 = reinterpret(0xBFBC71C6FE231671), // -1.11111104054623557880e-01,\n aT4 = reinterpret(0x3FB745CDC54C206E), // 9.09088713343650656196e-02\n aT5 = reinterpret(0xBFB3B0F2AF749A6D), // -7.69187620504482999495e-02\n aT6 = reinterpret(0x3FB10D66A0D03D51), // 6.66107313738753120669e-02\n aT7 = reinterpret(0xBFADDE2D52DEFD9A), // -5.83357013379057348645e-02\n aT8 = reinterpret(0x3FA97B4B24760DEB), // 4.97687799461593236017e-02\n aT9 = reinterpret(0xBFA2B4442C6A6C2F), // -3.65315727442169155270e-02\n aT10 = reinterpret(0x3F90AD3AE322DA11), // 1.62858201153657823623e-02\n Ox1p_120f = reinterpret(0x03800000);\n\n var ix = (reinterpret(x) >> 32);\n var sx = x;\n ix &= 0x7FFFFFFF;\n var z: f64;\n if (ix >= 0x44100000) {\n if (isNaN(x)) return x;\n z = atanhi3 + Ox1p_120f;\n return builtin_copysign(z, sx);\n }\n var id: i32;\n if (ix < 0x3FDC0000) {\n if (ix < 0x3E400000) return x;\n id = -1;\n } else {\n x = builtin_abs(x);\n if (ix < 0x3FF30000) {\n if (ix < 0x3FE60000) {\n id = 0;\n x = (2.0 * x - 1.0) / (2.0 + x);\n } else {\n id = 1;\n x = (x - 1.0) / (x + 1.0);\n }\n } else {\n if (ix < 0x40038000) {\n id = 2;\n x = (x - 1.5) / (1.0 + 1.5 * x);\n } else {\n id = 3;\n x = -1.0 / x;\n }\n }\n }\n z = x * x;\n var w = z * z;\n var s1 = z * (aT0 + w * (aT2 + w * (aT4 + w * (aT6 + w * (aT8 + w * aT10)))));\n var s2 = w * (aT1 + w * (aT3 + w * (aT5 + w * (aT7 + w * aT9))));\n var s3 = x * (s1 + s2);\n if (id < 0) return x - s3;\n switch (id) {\n case 0: { z = atanhi0 - ((s3 - atanlo0) - x); break; }\n case 1: { z = atanhi1 - ((s3 - atanlo1) - x); break; }\n case 2: { z = atanhi2 - ((s3 - atanlo2) - x); break; }\n case 3: { z = atanhi3 - ((s3 - atanlo3) - x); break; }\n default: unreachable();\n }\n return builtin_copysign(z, sx);\n }\n\n export function atanh(x: f64): f64 { // see: musl/src/math/atanh.c\n var u = reinterpret(x);\n var e = u >> 52 & 0x7FF;\n var y = builtin_abs(x);\n if (e < 0x3FF - 1) {\n if (e >= 0x3FF - 32) y = 0.5 * log1p(2 * y + 2 * y * y / (1 - y));\n } else {\n y = 0.5 * log1p(2 * (y / (1 - y)));\n }\n return builtin_copysign(y, x);\n }\n\n export function atan2(y: f64, x: f64): f64 { // see: musl/src/math/atan2.c and SUN COPYRIGHT NOTICE above\n const pi_lo = reinterpret(0x3CA1A62633145C07); // 1.2246467991473531772E-16\n if (isNaN(x) || isNaN(y)) return x + y;\n var u = reinterpret(x);\n var ix = (u >> 32);\n var lx = u;\n u = reinterpret(y);\n var iy = (u >> 32);\n var ly = u;\n if ((ix - 0x3FF00000 | lx) == 0) return atan(y);\n var m = ((iy >> 31) & 1) | ((ix >> 30) & 2);\n ix = ix & 0x7FFFFFFF;\n iy = iy & 0x7FFFFFFF;\n if ((iy | ly) == 0) {\n switch (m) {\n case 0:\n case 1: return y;\n case 2: return PI;\n case 3: return -PI;\n }\n }\n if ((ix | lx) == 0) return m & 1 ? -PI / 2 : PI / 2;\n if (ix == 0x7FF00000) {\n if (iy == 0x7FF00000) {\n let t = m & 2 ? 3 * PI / 4 : PI / 4;\n return m & 1 ? -t : t;\n } else {\n let t = m & 2 ? PI : 0;\n return m & 1 ? -t : t;\n }\n }\n var z: f64;\n if (ix + (64 << 20) < iy || iy == 0x7FF00000) return m & 1 ? -PI / 2 : PI / 2;\n if ((m & 2) && iy + (64 << 20) < ix) z = 0;\n else z = atan(builtin_abs(y / x));\n switch (m) {\n case 0: return z;\n case 1: return -z;\n case 2: return PI - (z - pi_lo);\n case 3: return (z - pi_lo) - PI;\n }\n unreachable();\n return 0;\n }\n\n export function cbrt(x: f64): f64 { // see: musl/src/math/cbrt.c and SUN COPYRIGHT NOTICE above\n const\n B1 = 715094163,\n B2 = 696219795,\n P0 = reinterpret(0x3FFE03E60F61E692), // 1.87595182427177009643\n P1 = reinterpret(0xBFFE28E092F02420), // -1.88497979543377169875\n P2 = reinterpret(0x3FF9F1604A49D6C2), // 1.621429720105354466140\n P3 = reinterpret(0xBFE844CBBEE751D9), // -0.758397934778766047437\n P4 = reinterpret(0x3FC2B000D4E4EDD7), // 0.145996192886612446982\n Ox1p54 = reinterpret(0x4350000000000000); // 0x1p54\n\n var u = reinterpret(x);\n var hx = (u >> 32) & 0x7FFFFFFF;\n if (hx >= 0x7FF00000) return x + x;\n if (hx < 0x00100000) {\n u = reinterpret(x * Ox1p54);\n hx = (u >> 32) & 0x7FFFFFFF;\n if (hx == 0) return x;\n hx = hx / 3 + B2;\n } else {\n hx = hx / 3 + B1;\n }\n u &= 1 << 63;\n u |= hx << 32;\n var t = reinterpret(u);\n var r = (t * t) * (t / x);\n t = t * ((P0 + r * (P1 + r * P2)) + ((r * r) * r) * (P3 + r * P4));\n t = reinterpret((reinterpret(t) + 0x80000000) & 0xFFFFFFFFC0000000);\n var s = t * t;\n r = x / s;\n r = (r - t) / (2 * t + r);\n t = t + t * r;\n return t;\n }\n\n // @ts-ignore: decorator\n @inline\n export function ceil(x: f64): f64 {\n return builtin_ceil(x);\n }\n\n export function clz32(x: f64): f64 {\n if (!isFinite(x)) return 32;\n /*\n * Wasm (MVP) and JS have different approaches for double->int conversions.\n *\n * For emulate JS conversion behavior and avoid trapping from wasm we should modulate by MAX_INT\n * our float-point arguments before actual convertion to integers.\n */\n return builtin_clz(dtoi32(x));\n }\n\n export function cos(x: f64): f64 { // see: musl/src/math/cos.c\n var u = reinterpret(x);\n var ux = u32(u >> 32);\n var sign = ux >> 31;\n\n ux &= 0x7FFFFFFF;\n\n // |x| ~< pi/4\n if (ux <= 0x3FE921FB) {\n if (ux < 0x3E46A09E) { // |x| < 2**-27 * sqrt(2)\n return 1.0;\n }\n return cos_kern(x, 0);\n }\n\n // sin(Inf or NaN) is NaN\n if (ux >= 0x7FF00000) return x - x;\n\n // argument reduction needed\n var n = rempio2(x, u, sign);\n var y0 = rempio2_y0;\n var y1 = rempio2_y1;\n\n x = n & 1 ? sin_kern(y0, y1, 1) : cos_kern(y0, y1);\n return (n + 1) & 2 ? -x : x;\n }\n\n export function cosh(x: f64): f64 { // see: musl/src/math/cosh.c\n var u = reinterpret(x);\n u &= 0x7FFFFFFFFFFFFFFF;\n x = reinterpret(u);\n var w = (u >> 32);\n var t: f64;\n if (w < 0x3FE62E42) {\n if (w < 0x3FF00000 - (26 << 20)) return 1;\n t = expm1(x);\n // return 1 + t * t / (2 * (1 + t));\n return 1 + t * t / (2 + 2 * t);\n }\n if (w < 0x40862E42) {\n t = exp(x);\n return 0.5 * (t + 1 / t);\n }\n t = expo2(x, 1);\n return t;\n }\n\n export function exp(x: f64): f64 { // see: musl/src/math/exp.c and SUN COPYRIGHT NOTICE above\n if (ASC_SHRINK_LEVEL < 1) {\n return exp_lut(x);\n } else {\n const\n ln2hi = reinterpret(0x3FE62E42FEE00000), // 6.93147180369123816490e-01\n ln2lo = reinterpret(0x3DEA39EF35793C76), // 1.90821492927058770002e-10\n invln2 = reinterpret(0x3FF71547652B82FE), // 1.44269504088896338700e+00\n P1 = reinterpret(0x3FC555555555553E), // 1.66666666666666019037e-01\n P2 = reinterpret(0xBF66C16C16BEBD93), // -2.77777777770155933842e-03\n P3 = reinterpret(0x3F11566AAF25DE2C), // 6.61375632143793436117e-05\n P4 = reinterpret(0xBEBBBD41C5D26BF1), // -1.65339022054652515390e-06\n P5 = reinterpret(0x3E66376972BEA4D0), // 4.13813679705723846039e-08\n overflow = reinterpret(0x40862E42FEFA39EF), // 709.782712893383973096\n underflow = reinterpret(0xC0874910D52D3051), // -745.13321910194110842\n Ox1p1023 = reinterpret(0x7FE0000000000000); // 0x1p1023\n\n let hx = u32(reinterpret(x) >> 32);\n let sign = hx >> 31;\n hx &= 0x7FFFFFFF;\n if (hx >= 0x4086232B) {\n if (isNaN(x)) return x;\n if (x > overflow) return x * Ox1p1023;\n if (x < underflow) return 0;\n }\n let hi: f64, lo: f64 = 0;\n let k = 0;\n if (hx > 0x3FD62E42) {\n if (hx >= 0x3FF0A2B2) {\n k = i32(invln2 * x + builtin_copysign(0.5, x));\n } else {\n k = 1 - (sign << 1);\n }\n hi = x - k * ln2hi;\n lo = k * ln2lo;\n x = hi - lo;\n } else if (hx > 0x3E300000) {\n hi = x;\n } else return 1.0 + x;\n let xs = x * x;\n // var c = x - xp2 * (P1 + xp2 * (P2 + xp2 * (P3 + xp2 * (P4 + xp2 * P5))));\n let xq = xs * xs;\n let c = x - (xs * P1 + xq * ((P2 + xs * P3) + xq * (P4 + xs * P5)));\n let y = 1.0 + (x * c / (2 - c) - lo + hi);\n return k == 0 ? y : scalbn(y, k);\n }\n }\n\n export function exp2(x: f64): f64 {\n return exp2_lut(x);\n }\n\n export function expm1(x: f64): f64 { // see: musl/src/math/expm1.c and SUN COPYRIGHT NOTICE above\n const\n o_threshold = reinterpret(0x40862E42FEFA39EF), // 7.09782712893383973096e+02\n ln2_hi = reinterpret(0x3FE62E42FEE00000), // 6.93147180369123816490e-01\n ln2_lo = reinterpret(0x3DEA39EF35793C76), // 1.90821492927058770002e-10\n invln2 = reinterpret(0x3FF71547652B82FE), // 1.44269504088896338700e+00\n Q1 = reinterpret(0xBFA11111111110F4), // -3.33333333333331316428e-02\n Q2 = reinterpret(0x3F5A01A019FE5585), // 1.58730158725481460165e-03\n Q3 = reinterpret(0xBF14CE199EAADBB7), // -7.93650757867487942473e-05\n Q4 = reinterpret(0x3ED0CFCA86E65239), // 4.00821782732936239552e-06\n Q5 = reinterpret(0xBE8AFDB76E09C32D), // -2.01099218183624371326e-07\n Ox1p1023 = reinterpret(0x7FE0000000000000); // 0x1p1023\n\n var u = reinterpret(x);\n var hx = u32(u >> 32) & 0x7FFFFFFF;\n var sign = u32(u >> 63);\n var k = 0;\n if (hx >= 0x4043687A) {\n if (isNaN(x)) return x;\n if (sign) return -1;\n if (x > o_threshold) return x * Ox1p1023;\n }\n var c = 0.0, t: f64;\n if (hx > 0x3FD62E42) {\n k = select(\n 1 - (sign << 1),\n i32(invln2 * x + builtin_copysign(0.5, x)),\n hx < 0x3FF0A2B2\n );\n t = k;\n let hi = x - t * ln2_hi;\n let lo = t * ln2_lo;\n x = hi - lo;\n c = (hi - x) - lo;\n } else if (hx < 0x3C900000) return x;\n var hfx = 0.5 * x;\n var hxs = x * hfx;\n // var r1 = 1.0 + hxs * (Q1 + hxs * (Q2 + hxs * (Q3 + hxs * (Q4 + hxs * Q5))));\n var hxq = hxs * hxs;\n var r1 = (1.0 + hxs * Q1) + hxq * ((Q2 + hxs * Q3) + hxq * (Q4 + hxs * Q5));\n t = 3.0 - r1 * hfx;\n var e = hxs * ((r1 - t) / (6.0 - x * t));\n if (k == 0) return x - (x * e - hxs);\n e = x * (e - c) - c;\n e -= hxs;\n if (k == -1) return 0.5 * (x - e) - 0.5;\n if (k == 1) {\n if (x < -0.25) return -2.0 * (e - (x + 0.5));\n return 1.0 + 2.0 * (x - e);\n }\n u = (0x3FF + k) << 52;\n var twopk = reinterpret(u);\n var y: f64;\n if (k < 0 || k > 56) {\n y = x - e + 1.0;\n if (k == 1024) y = y * 2.0 * Ox1p1023;\n else y = y * twopk;\n return y - 1.0;\n }\n u = (0x3FF - k) << 52;\n y = reinterpret(u);\n if (k < 20) y = (1 - y) - e;\n else y = 1 - (e + y);\n return (x + y) * twopk;\n }\n\n // @ts-ignore: decorator\n @inline\n export function floor(x: f64): f64 {\n return builtin_floor(x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function fround(x: f64): f64 {\n return x;\n }\n\n export function hypot(x: f64, y: f64): f64 { // see: musl/src/math/hypot.c\n const\n SPLIT = reinterpret(0x41A0000000000000) + 1, // 0x1p27 + 1\n Ox1p700 = reinterpret(0x6BB0000000000000),\n Ox1p_700 = reinterpret(0x1430000000000000);\n\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n ux &= 0x7FFFFFFFFFFFFFFF;\n uy &= 0x7FFFFFFFFFFFFFFF;\n if (ux < uy) {\n let ut = ux;\n ux = uy;\n uy = ut;\n }\n var ex = i32(ux >> 52);\n var ey = i32(uy >> 52);\n y = reinterpret(uy);\n if (ey == 0x7FF) return y;\n x = reinterpret(ux);\n if (ex == 0x7FF || uy == 0) return x;\n if (ex - ey > 64) return x + y;\n var z = 1.0;\n if (ex > 0x3FF + 510) {\n z = Ox1p700;\n x *= Ox1p_700;\n y *= Ox1p_700;\n } else if (ey < 0x3FF - 450) {\n z = Ox1p_700;\n x *= Ox1p700;\n y *= Ox1p700;\n }\n var c = x * SPLIT;\n var h = x - c + c;\n var l = x - h;\n var hx = x * x;\n var lx = h * h - hx + (2 * h + l) * l;\n c = y * SPLIT;\n h = y - c + c;\n l = y - h;\n var hy = y * y;\n var ly = h * h - hy + (2 * h + l) * l;\n return z * builtin_sqrt(ly + lx + hy + hx);\n }\n\n export function imul(x: f64, y: f64): f64 {\n /*\n * Wasm (MVP) and JS have different approaches for double->int conversions.\n *\n * For emulate JS conversion behavior and avoid trapping from wasm we should modulate by MAX_INT\n * our float-point arguments before actual convertion to integers.\n */\n if (!isFinite(x + y)) return 0;\n return dtoi32(x) * dtoi32(y);\n }\n\n export function log(x: f64): f64 { // see: musl/src/math/log.c and SUN COPYRIGHT NOTICE above\n if (ASC_SHRINK_LEVEL < 1) {\n return log_lut(x);\n } else {\n const\n ln2_hi = reinterpret(0x3FE62E42FEE00000), // 6.93147180369123816490e-01\n ln2_lo = reinterpret(0x3DEA39EF35793C76), // 1.90821492927058770002e-10\n Lg1 = reinterpret(0x3FE5555555555593), // 6.666666666666735130e-01\n Lg2 = reinterpret(0x3FD999999997FA04), // 3.999999999940941908e-01\n Lg3 = reinterpret(0x3FD2492494229359), // 2.857142874366239149e-01\n Lg4 = reinterpret(0x3FCC71C51D8E78AF), // 2.222219843214978396e-01\n Lg5 = reinterpret(0x3FC7466496CB03DE), // 1.818357216161805012e-01\n Lg6 = reinterpret(0x3FC39A09D078C69F), // 1.531383769920937332e-01\n Lg7 = reinterpret(0x3FC2F112DF3E5244), // 1.479819860511658591e-01\n Ox1p54 = reinterpret(0x4350000000000000); // 0x1p54\n\n let u = reinterpret(x);\n let hx = u32(u >> 32);\n let k = 0;\n let sign = hx >> 31;\n if (sign || hx < 0x00100000) {\n if (u << 1 == 0) return -1 / (x * x);\n if (sign) return (x - x) / 0.0;\n k -= 54;\n x *= Ox1p54;\n u = reinterpret(x);\n hx = u32(u >> 32);\n } else if (hx >= 0x7FF00000) {\n return x;\n } else if (hx == 0x3FF00000 && u << 32 == 0) {\n return 0;\n }\n hx += 0x3FF00000 - 0x3FE6A09E;\n k += (hx >> 20) - 0x3FF;\n hx = (hx & 0x000FFFFF) + 0x3FE6A09E;\n u = hx << 32 | (u & 0xFFFFFFFF);\n x = reinterpret(u);\n let f = x - 1.0;\n let hfsq = 0.5 * f * f;\n let s = f / (2.0 + f);\n let z = s * s;\n let w = z * z;\n let t1 = w * (Lg2 + w * (Lg4 + w * Lg6));\n let t2 = z * (Lg1 + w * (Lg3 + w * (Lg5 + w * Lg7)));\n let r = t2 + t1;\n let dk = k;\n return s * (hfsq + r) + dk * ln2_lo - hfsq + f + dk * ln2_hi;\n }\n }\n\n export function log10(x: f64): f64 { // see: musl/src/math/log10.c and SUN COPYRIGHT NOTICE above\n const\n ivln10hi = reinterpret(0x3FDBCB7B15200000), // 4.34294481878168880939e-01\n ivln10lo = reinterpret(0x3DBB9438CA9AADD5), // 2.50829467116452752298e-11\n log10_2hi = reinterpret(0x3FD34413509F6000), // 3.01029995663611771306e-01\n log10_2lo = reinterpret(0x3D59FEF311F12B36), // 3.69423907715893078616e-13\n Lg1 = reinterpret(0x3FE5555555555593), // 6.666666666666735130e-01\n Lg2 = reinterpret(0x3FD999999997FA04), // 3.999999999940941908e-01\n Lg3 = reinterpret(0x3FD2492494229359), // 2.857142874366239149e-01\n Lg4 = reinterpret(0x3FCC71C51D8E78AF), // 2.222219843214978396e-01\n Lg5 = reinterpret(0x3FC7466496CB03DE), // 1.818357216161805012e-01\n Lg6 = reinterpret(0x3FC39A09D078C69F), // 1.531383769920937332e-01\n Lg7 = reinterpret(0x3FC2F112DF3E5244), // 1.479819860511658591e-01\n Ox1p54 = reinterpret(0x4350000000000000); // 0x1p54\n\n var u = reinterpret(x);\n var hx = u32(u >> 32);\n var k = 0;\n var sign = hx >> 31;\n if (sign || hx < 0x00100000) {\n if (u << 1 == 0) return -1 / (x * x);\n if (sign) return (x - x) / 0.0;\n k -= 54;\n x *= Ox1p54;\n u = reinterpret(x);\n hx = u32(u >> 32);\n } else if (hx >= 0x7FF00000) {\n return x;\n } else if (hx == 0x3FF00000 && u << 32 == 0) {\n return 0;\n }\n hx += 0x3FF00000 - 0x3FE6A09E;\n k += i32(hx >> 20) - 0x3FF;\n hx = (hx & 0x000FFFFF) + 0x3FE6A09E;\n u = hx << 32 | (u & 0xFFFFFFFF);\n x = reinterpret(u);\n var f = x - 1.0;\n var hfsq = 0.5 * f * f;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * (Lg4 + w * Lg6));\n var t2 = z * (Lg1 + w * (Lg3 + w * (Lg5 + w * Lg7)));\n var r = t2 + t1;\n var hi = f - hfsq;\n u = reinterpret(hi);\n u &= 0xFFFFFFFF00000000;\n hi = reinterpret(u);\n var lo = f - hi - hfsq + s * (hfsq + r);\n var val_hi = hi * ivln10hi;\n var dk = k;\n var y = dk * log10_2hi;\n var val_lo = dk * log10_2lo + (lo + hi) * ivln10lo + lo * ivln10hi;\n w = y + val_hi;\n val_lo += (y - w) + val_hi;\n return val_lo + w;\n }\n\n export function log1p(x: f64): f64 { // see: musl/src/math/log1p.c and SUN COPYRIGHT NOTICE above\n const\n ln2_hi = reinterpret(0x3FE62E42FEE00000), // 6.93147180369123816490e-01\n ln2_lo = reinterpret(0x3DEA39EF35793C76), // 1.90821492927058770002e-10\n Lg1 = reinterpret(0x3FE5555555555593), // 6.666666666666735130e-01\n Lg2 = reinterpret(0x3FD999999997FA04), // 3.999999999940941908e-01\n Lg3 = reinterpret(0x3FD2492494229359), // 2.857142874366239149e-01\n Lg4 = reinterpret(0x3FCC71C51D8E78AF), // 2.222219843214978396e-01\n Lg5 = reinterpret(0x3FC7466496CB03DE), // 1.818357216161805012e-01\n Lg6 = reinterpret(0x3FC39A09D078C69F), // 1.531383769920937332e-01\n Lg7 = reinterpret(0x3FC2F112DF3E5244); // 1.479819860511658591e-01\n\n var u = reinterpret(x);\n var hx = u32(u >> 32);\n var k = 1;\n var c = 0.0, f = 0.0;\n if (hx < 0x3FDA827A || bool(hx >> 31)) {\n if (hx >= 0xBFF00000) {\n if (x == -1) return x / 0.0;\n return (x - x) / 0.0;\n }\n if (hx << 1 < 0x3CA00000 << 1) return x;\n if (hx <= 0xBFD2BEC4) {\n k = 0;\n c = 0;\n f = x;\n }\n } else if (hx >= 0x7FF00000) return x;\n if (k) {\n u = reinterpret(1 + x);\n let hu = u32(u >> 32);\n hu += 0x3FF00000 - 0x3FE6A09E;\n k = i32(hu >> 20) - 0x3FF;\n if (k < 54) {\n let uf = reinterpret(u);\n c = k >= 2 ? 1 - (uf - x) : x - (uf - 1);\n c /= uf;\n } else c = 0;\n hu = (hu & 0x000FFFFF) + 0x3FE6A09E;\n u = hu << 32 | (u & 0xFFFFFFFF);\n f = reinterpret(u) - 1;\n }\n var hfsq = 0.5 * f * f;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * (Lg4 + w * Lg6));\n var t2 = z * (Lg1 + w * (Lg3 + w * (Lg5 + w * Lg7)));\n var r = t2 + t1;\n var dk = k;\n return s * (hfsq + r) + (dk * ln2_lo + c) - hfsq + f + dk * ln2_hi;\n }\n\n export function log2(x: f64): f64 { // see: musl/src/math/log2.c and SUN COPYRIGHT NOTICE above\n if (ASC_SHRINK_LEVEL < 1) {\n return log2_lut(x);\n } else {\n const\n ivln2hi = reinterpret(0x3FF7154765200000), // 1.44269504072144627571e+00\n ivln2lo = reinterpret(0x3DE705FC2EEFA200), // 1.67517131648865118353e-10\n Lg1 = reinterpret(0x3FE5555555555593), // 6.666666666666735130e-01\n Lg2 = reinterpret(0x3FD999999997FA04), // 3.999999999940941908e-01\n Lg3 = reinterpret(0x3FD2492494229359), // 2.857142874366239149e-01\n Lg4 = reinterpret(0x3FCC71C51D8E78AF), // 2.222219843214978396e-01\n Lg5 = reinterpret(0x3FC7466496CB03DE), // 1.818357216161805012e-01\n Lg6 = reinterpret(0x3FC39A09D078C69F), // 1.531383769920937332e-01\n Lg7 = reinterpret(0x3FC2F112DF3E5244), // 1.479819860511658591e-01\n Ox1p54 = reinterpret(0x4350000000000000); // 1p54\n\n let u = reinterpret(x);\n let hx = u32(u >> 32);\n let k = 0;\n let sign = hx >> 31;\n if (sign || hx < 0x00100000) {\n if (u << 1 == 0) return -1 / (x * x);\n if (sign) return (x - x) / 0.0;\n k -= 54;\n x *= Ox1p54;\n u = reinterpret(x);\n hx = u32(u >> 32);\n } else if (hx >= 0x7FF00000) {\n return x;\n } else if (hx == 0x3FF00000 && u << 32 == 0) {\n return 0;\n }\n hx += 0x3FF00000 - 0x3FE6A09E;\n k += i32(hx >> 20) - 0x3FF;\n hx = (hx & 0x000FFFFF) + 0x3FE6A09E;\n u = hx << 32 | (u & 0xFFFFFFFF);\n x = reinterpret(u);\n let f = x - 1.0;\n let hfsq = 0.5 * f * f;\n let s = f / (2.0 + f);\n let z = s * s;\n let w = z * z;\n let t1 = w * (Lg2 + w * (Lg4 + w * Lg6));\n let t2 = z * (Lg1 + w * (Lg3 + w * (Lg5 + w * Lg7)));\n let r = t2 + t1;\n let hi = f - hfsq;\n u = reinterpret(hi);\n u &= 0xFFFFFFFF00000000;\n hi = reinterpret(u);\n let lo = f - hi - hfsq + s * (hfsq + r);\n let val_hi = hi * ivln2hi;\n let val_lo = (lo + hi) * ivln2lo + lo * ivln2hi;\n let y = k;\n w = y + val_hi;\n val_lo += (y - w) + val_hi;\n val_hi = w;\n return val_lo + val_hi;\n }\n }\n\n // @ts-ignore: decorator\n @inline\n export function max(value1: f64, value2: f64): f64 {\n return builtin_max(value1, value2);\n }\n\n // @ts-ignore: decorator\n @inline\n export function min(value1: f64, value2: f64): f64 {\n return builtin_min(value1, value2);\n }\n\n export function pow(x: f64, y: f64): f64 { // see: musl/src/math/pow.c and SUN COPYRIGHT NOTICE above\n // TODO: remove this fast pathes after introduced own mid-end IR with \"stdlib call simplify\" transforms\n if (builtin_abs(y) <= 2) {\n if (y == 2.0) return x * x;\n if (y == 0.5) {\n return select(\n builtin_abs(builtin_sqrt(x)),\n Infinity,\n x != -Infinity\n );\n }\n if (y == -1.0) return 1 / x;\n if (y == 1.0) return x;\n if (y == 0.0) return 1.0;\n }\n if (ASC_SHRINK_LEVEL < 1) {\n return pow_lut(x, y);\n } else {\n const\n dp_h1 = reinterpret(0x3FE2B80340000000), // 5.84962487220764160156e-01\n dp_l1 = reinterpret(0x3E4CFDEB43CFD006), // 1.35003920212974897128e-08\n two53 = reinterpret(0x4340000000000000), // 9007199254740992.0\n huge = reinterpret(0x7E37E43C8800759C), // 1e+300\n tiny = reinterpret(0x01A56E1FC2F8F359), // 1e-300\n L1 = reinterpret(0x3FE3333333333303), // 5.99999999999994648725e-01\n L2 = reinterpret(0x3FDB6DB6DB6FABFF), // 4.28571428578550184252e-01\n L3 = reinterpret(0x3FD55555518F264D), // 3.33333329818377432918e-01\n L4 = reinterpret(0x3FD17460A91D4101), // 2.72728123808534006489e-01\n L5 = reinterpret(0x3FCD864A93C9DB65), // 2.30660745775561754067e-01\n L6 = reinterpret(0x3FCA7E284A454EEF), // 2.06975017800338417784e-01\n P1 = reinterpret(0x3FC555555555553E), // 1.66666666666666019037e-01\n P2 = reinterpret(0xBF66C16C16BEBD93), // -2.77777777770155933842e-03\n P3 = reinterpret(0x3F11566AAF25DE2C), // 6.61375632143793436117e-05\n P4 = reinterpret(0xBEBBBD41C5D26BF1), // -1.65339022054652515390e-06\n P5 = reinterpret(0x3E66376972BEA4D0), // 4.13813679705723846039e-08\n lg2 = reinterpret(0x3FE62E42FEFA39EF), // 6.93147180559945286227e-01\n lg2_h = reinterpret(0x3FE62E4300000000), // 6.93147182464599609375e-01\n lg2_l = reinterpret(0xBE205C610CA86C39), // -1.90465429995776804525e-09\n ovt = reinterpret(0x3C971547652B82FE), // 8.0085662595372944372e-017\n cp = reinterpret(0x3FEEC709DC3A03FD), // 9.61796693925975554329e-01\n cp_h = reinterpret(0x3FEEC709E0000000), // 9.61796700954437255859e-01\n cp_l = reinterpret(0xBE3E2FE0145B01F5), // -7.02846165095275826516e-09\n ivln2 = reinterpret(0x3FF71547652B82FE), // 1.44269504088896338700e+00\n ivln2_h = reinterpret(0x3FF7154760000000), // 1.44269502162933349609e+00\n ivln2_l = reinterpret(0x3E54AE0BF85DDF44), // 1.92596299112661746887e-08\n inv3 = reinterpret(0x3FD5555555555555); // 0.3333333333333333333333\n\n let u_ = reinterpret(x);\n let hx = i32(u_ >> 32);\n let lx = u_;\n u_ = reinterpret(y);\n let hy = i32(u_ >> 32);\n let ly = u_;\n let ix = hx & 0x7FFFFFFF;\n let iy = hy & 0x7FFFFFFF;\n if ((iy | ly) == 0) return 1.0; // x**0 = 1, even if x is NaN\n // if (hx == 0x3FF00000 && lx == 0) return 1.0; // C: 1**y = 1, even if y is NaN, JS: NaN\n if ( // NaN if either arg is NaN\n ix > 0x7FF00000 || (ix == 0x7FF00000 && lx != 0) ||\n iy > 0x7FF00000 || (iy == 0x7FF00000 && ly != 0)\n ) return x + y;\n let yisint = 0, k: i32;\n if (hx < 0) {\n if (iy >= 0x43400000) yisint = 2;\n else if (iy >= 0x3FF00000) {\n k = (iy >> 20) - 0x3FF;\n let offset = select(52, 20, k > 20) - k;\n let Ly = select(ly, iy, k > 20);\n let jj = Ly >> offset;\n if ((jj << offset) == Ly) yisint = 2 - (jj & 1);\n }\n }\n if (ly == 0) {\n if (iy == 0x7FF00000) { // y is +-inf\n if (((ix - 0x3FF00000) | lx) == 0) return NaN; // C: (-1)**+-inf is 1, JS: NaN\n else if (ix >= 0x3FF00000) return hy >= 0 ? y : 0.0; // (|x|>1)**+-inf = inf,0\n else return hy >= 0 ? 0.0 : -y; // (|x|<1)**+-inf = 0,inf\n }\n if (iy == 0x3FF00000) {\n if (hy >= 0) return x;\n return 1 / x;\n }\n if (hy == 0x40000000) return x * x;\n if (hy == 0x3FE00000) {\n if (hx >= 0) return builtin_sqrt(x);\n }\n }\n let ax = builtin_abs(x), z: f64;\n if (lx == 0) {\n if (ix == 0 || ix == 0x7FF00000 || ix == 0x3FF00000) {\n z = ax;\n if (hy < 0) z = 1.0 / z;\n if (hx < 0) {\n if (((ix - 0x3FF00000) | yisint) == 0) {\n let d = z - z;\n z = d / d;\n } else if (yisint == 1) z = -z;\n }\n return z;\n }\n }\n let s = 1.0;\n if (hx < 0) {\n if (yisint == 0) {\n let d = x - x;\n return d / d;\n }\n if (yisint == 1) s = -1.0;\n }\n let t1: f64, t2: f64, p_h: f64, p_l: f64, r: f64, t: f64, u: f64, v: f64, w: f64;\n let j: i32, n: i32;\n if (iy > 0x41E00000) {\n if (iy > 0x43F00000) {\n if (ix <= 0x3FEFFFFF) return hy < 0 ? huge * huge : tiny * tiny;\n if (ix >= 0x3FF00000) return hy > 0 ? huge * huge : tiny * tiny;\n }\n if (ix < 0x3FEFFFFF) return hy < 0 ? s * huge * huge : s * tiny * tiny;\n if (ix > 0x3FF00000) return hy > 0 ? s * huge * huge : s * tiny * tiny;\n t = ax - 1.0;\n w = (t * t) * (0.5 - t * (inv3 - t * 0.25));\n u = ivln2_h * t;\n v = t * ivln2_l - w * ivln2;\n t1 = u + v;\n t1 = reinterpret(reinterpret(t1) & 0xFFFFFFFF00000000);\n t2 = v - (t1 - u);\n } else {\n let ss: f64, s2: f64, s_h: f64, s_l: f64, t_h: f64, t_l: f64;\n n = 0;\n if (ix < 0x00100000) {\n ax *= two53;\n n -= 53;\n ix = (reinterpret(ax) >> 32);\n }\n n += (ix >> 20) - 0x3FF;\n j = ix & 0x000FFFFF;\n ix = j | 0x3FF00000;\n if (j <= 0x3988E) k = 0;\n else if (j < 0xBB67A) k = 1;\n else {\n k = 0;\n n += 1;\n ix -= 0x00100000;\n }\n ax = reinterpret(reinterpret(ax) & 0xFFFFFFFF | (ix << 32));\n let bp = select(1.5, 1.0, k); // k ? 1.5 : 1.0\n u = ax - bp;\n v = 1.0 / (ax + bp);\n ss = u * v;\n s_h = ss;\n s_h = reinterpret(reinterpret(s_h) & 0xFFFFFFFF00000000);\n t_h = reinterpret(u64(((ix >> 1) | 0x20000000) + 0x00080000 + (k << 18)) << 32);\n t_l = ax - (t_h - bp);\n s_l = v * ((u - s_h * t_h) - s_h * t_l);\n s2 = ss * ss;\n r = s2 * s2 * (L1 + s2 * (L2 + s2 * (L3 + s2 * (L4 + s2 * (L5 + s2 * L6)))));\n r += s_l * (s_h + ss);\n s2 = s_h * s_h;\n t_h = 3.0 + s2 + r;\n t_h = reinterpret(reinterpret(t_h) & 0xFFFFFFFF00000000);\n t_l = r - ((t_h - 3.0) - s2);\n u = s_h * t_h;\n v = s_l * t_h + t_l * ss;\n p_h = u + v;\n p_h = reinterpret(reinterpret(p_h) & 0xFFFFFFFF00000000);\n p_l = v - (p_h - u);\n let z_h = cp_h * p_h;\n let dp_l = select(dp_l1, 0.0, k);\n let z_l = cp_l * p_h + p_l * cp + dp_l;\n t = n;\n let dp_h = select(dp_h1, 0.0, k);\n t1 = ((z_h + z_l) + dp_h) + t;\n t1 = reinterpret(reinterpret(t1) & 0xFFFFFFFF00000000);\n t2 = z_l - (((t1 - t) - dp_h) - z_h);\n }\n let y1 = y;\n y1 = reinterpret(reinterpret(y1) & 0xFFFFFFFF00000000);\n p_l = (y - y1) * t1 + y * t2;\n p_h = y1 * t1;\n z = p_l + p_h;\n u_ = reinterpret(z);\n j = u32(u_ >> 32);\n let i = u_;\n if (j >= 0x40900000) {\n if (((j - 0x40900000) | i) != 0) return s * huge * huge;\n if (p_l + ovt > z - p_h) return s * huge * huge;\n } else if ((j & 0x7FFFFFFF) >= 0x4090CC00) {\n if (((j - 0xC090CC00) | i) != 0) return s * tiny * tiny;\n if (p_l <= z - p_h) return s * tiny * tiny;\n }\n i = j & 0x7FFFFFFF;\n k = (i >> 20) - 0x3FF;\n n = 0;\n if (i > 0x3FE00000) {\n n = j + (0x00100000 >> (k + 1));\n k = ((n & 0x7FFFFFFF) >> 20) - 0x3FF;\n t = 0.0;\n t = reinterpret(u64(n & ~(0x000FFFFF >> k)) << 32);\n n = ((n & 0x000FFFFF) | 0x00100000) >> (20 - k);\n if (j < 0) n = -n;\n p_h -= t;\n }\n t = p_l + p_h;\n t = reinterpret(reinterpret(t) & 0xFFFFFFFF00000000);\n u = t * lg2_h;\n v = (p_l - (t - p_h)) * lg2 + t * lg2_l;\n z = u + v;\n w = v - (z - u);\n t = z * z;\n t1 = z - t * (P1 + t * (P2 + t * (P3 + t * (P4 + t * P5))));\n r = (z * t1) / (t1 - 2.0) - (w + z * w);\n z = 1.0 - (r - z);\n j = u32(reinterpret(z) >> 32);\n j += n << 20;\n if ((j >> 20) <= 0) z = scalbn(z, n);\n else z = reinterpret(reinterpret(z) & 0xFFFFFFFF | (j << 32));\n return s * z;\n }\n }\n\n export function seedRandom(value: i64): void {\n // Instead zero seed use golden ratio:\n // phi = (1 + sqrt(5)) / 2\n // trunc(2^64 / phi) = 0x9e3779b97f4a7c15\n if (value == 0) value = 0x9e3779b97f4a7c15;\n random_state0_64 = murmurHash3(value);\n random_state1_64 = murmurHash3(~random_state0_64);\n random_state0_32 = splitMix32(value);\n random_state1_32 = splitMix32(random_state0_32);\n random_seeded = true;\n }\n\n export function random(): f64 { // see: v8/src/base/utils/random-number-generator.cc\n if (!random_seeded) seedRandom(reinterpret(seed()));\n var s1 = random_state0_64;\n var s0 = random_state1_64;\n random_state0_64 = s0;\n s1 ^= s1 << 23;\n s1 ^= s1 >> 17;\n s1 ^= s0;\n s1 ^= s0 >> 26;\n random_state1_64 = s1;\n var r = (s0 >> 12) | 0x3FF0000000000000;\n return reinterpret(r) - 1;\n }\n\n export function round(x: f64): f64 {\n if (ASC_SHRINK_LEVEL > 0) {\n return builtin_ceil(x) - f64(builtin_ceil(x) - 0.5 > x);\n } else {\n let roundUp = builtin_ceil(x);\n return select(roundUp, roundUp - 1.0, roundUp - 0.5 <= x);\n }\n }\n\n export function sign(x: f64): f64 {\n if (ASC_SHRINK_LEVEL > 0) {\n return select(builtin_copysign(1, x), x, builtin_abs(x) > 0);\n } else {\n return select(1, select(-1, x, x < 0), x > 0);\n }\n }\n\n // @ts-ignore: decorator\n @inline\n export function signbit(x: f64): bool {\n return bool(reinterpret(x) >>> 63);\n }\n\n export function sin(x: f64): f64 { // see: musl/src/math/sin.c\n var u = reinterpret(x);\n var ux = u32(u >> 32);\n var sign = ux >> 31;\n\n ux &= 0x7FFFFFFF;\n\n // |x| ~< pi/4\n if (ux <= 0x3FE921FB) {\n if (ux < 0x3E500000) { // |x| < 2**-26\n return x;\n }\n return sin_kern(x, 0.0, 0);\n }\n\n // sin(Inf or NaN) is NaN\n if (ux >= 0x7FF00000) return x - x;\n\n // argument reduction needed\n var n = rempio2(x, u, sign);\n var y0 = rempio2_y0;\n var y1 = rempio2_y1;\n\n x = n & 1 ? cos_kern(y0, y1) : sin_kern(y0, y1, 1);\n return n & 2 ? -x : x;\n }\n\n export function sinh(x: f64): f64 { // see: musl/src/math/sinh.c\n var u = reinterpret(x) & 0x7FFFFFFFFFFFFFFF;\n var a = reinterpret(u);\n var w = u32(u >> 32);\n var h = builtin_copysign(0.5, x);\n if (w < 0x40862E42) {\n let t = expm1(a);\n if (w < 0x3FF00000) {\n if (w < 0x3FF00000 - (26 << 20)) return x;\n return h * (2 * t - t * t / (t + 1));\n }\n return h * (t + t / (t + 1));\n }\n return expo2(a, 2 * h);\n }\n\n // @ts-ignore: decorator\n @inline\n export function sqrt(x: f64): f64 {\n return builtin_sqrt(x);\n }\n\n export function tan(x: f64): f64 { // see: musl/src/math/tan.c\n var u = reinterpret(x);\n var ux = u32(u >> 32);\n var sign = ux >>> 31;\n\n ux &= 0x7FFFFFFF;\n\n // |x| ~< pi/4\n if (ux <= 0x3FE921FB) {\n if (ux < 0x3E400000) { // |x| < 2**-27\n return x;\n }\n return tan_kern(x, 0.0, 1);\n }\n\n // tan(Inf or NaN) is NaN\n if (ux >= 0x7FF00000) return x - x;\n\n var n = rempio2(x, u, sign);\n return tan_kern(rempio2_y0, rempio2_y1, 1 - ((n & 1) << 1));\n }\n\n export function tanh(x: f64): f64 { // see: musl/src/math/tanh.c\n var u = reinterpret(x);\n u &= 0x7FFFFFFFFFFFFFFF;\n var y = reinterpret(u);\n var w = u32(u >> 32);\n var t: f64;\n if (w > 0x3FE193EA) {\n if (w > 0x40340000) {\n t = 1 - 0 / y;\n } else {\n t = expm1(2 * y);\n t = 1 - 2 / (t + 2);\n }\n } else if (w > 0x3FD058AE) {\n t = expm1(2 * y);\n t = t / (t + 2);\n } else if (w >= 0x00100000) {\n t = expm1(-2 * y);\n t = -t / (t + 2);\n } else t = y;\n return builtin_copysign(t, x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function trunc(x: f64): f64 {\n return builtin_trunc(x);\n }\n\n export function scalbn(x: f64, n: i32): f64 { // see: https://git.musl-libc.org/cgit/musl/tree/src/math/scalbn.c\n const\n Ox1p53 = reinterpret(0x4340000000000000),\n Ox1p1023 = reinterpret(0x7FE0000000000000),\n Ox1p_1022 = reinterpret(0x0010000000000000);\n\n var y = x;\n if (n > 1023) {\n y *= Ox1p1023;\n n -= 1023;\n if (n > 1023) {\n y *= Ox1p1023;\n n = builtin_min(n - 1023, 1023);\n }\n } else if (n < -1022) {\n // make sure final n < -53 to avoid double\n // rounding in the subnormal range\n y *= Ox1p_1022 * Ox1p53;\n n += 1022 - 53;\n if (n < -1022) {\n y *= Ox1p_1022 * Ox1p53;\n n = builtin_max(n + 1022 - 53, -1022);\n }\n }\n return y * reinterpret((0x3FF + n) << 52);\n }\n\n export function mod(x: f64, y: f64): f64 { // see: musl/src/math/fmod.c\n if (builtin_abs(y) == 1.0) {\n // x % 1, x % -1 ==> sign(x) * abs(x - 1.0 * trunc(x / 1.0))\n // TODO: move this rule to compiler's optimization pass.\n // It could be apply for any x % C_pot, where \"C_pot\" is pow of two const.\n return builtin_copysign(x - builtin_trunc(x), x);\n }\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n var ex = i64(ux >> 52 & 0x7FF);\n var ey = i64(uy >> 52 & 0x7FF);\n var sx = ux >> 63;\n var uy1 = uy << 1;\n if (uy1 == 0 || ex == 0x7FF || isNaN(y)) {\n let m = x * y;\n return m / m;\n }\n var ux1 = ux << 1;\n if (ux1 <= uy1) {\n return x * f64(ux1 != uy1);\n }\n if (!ex) {\n ex -= builtin_clz(ux << 12);\n ux <<= 1 - ex;\n } else {\n ux &= u64(-1) >> 12;\n ux |= 1 << 52;\n }\n if (!ey) {\n ey -= builtin_clz(uy << 12);\n uy <<= 1 - ey;\n } else {\n uy &= u64(-1) >> 12;\n uy |= 1 << 52;\n }\n while (ex > ey) {\n if (ux >= uy) {\n if (ux == uy) return 0 * x;\n ux -= uy;\n }\n ux <<= 1;\n --ex;\n }\n if (ux >= uy) {\n if (ux == uy) return 0 * x;\n ux -= uy;\n }\n // for (; !(ux >> 52); ux <<= 1) --ex;\n var shift = builtin_clz(ux << 11);\n ex -= shift;\n ux <<= shift;\n if (ex > 0) {\n ux -= 1 << 52;\n ux |= ex << 52;\n } else {\n ux >>= -ex + 1;\n }\n return reinterpret(ux | (sx << 63));\n }\n\n export function rem(x: f64, y: f64): f64 { // see: musl/src/math/remquo.c\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n var ex = i64(ux >> 52 & 0x7FF);\n var ey = i64(uy >> 52 & 0x7FF);\n if (uy << 1 == 0 || ex == 0x7FF || isNaN(y)) {\n let m = x * y;\n return m / m;\n }\n if (ux << 1 == 0) return x;\n var uxi = ux;\n if (!ex) {\n ex -= builtin_clz(uxi << 12);\n uxi <<= 1 - ex;\n } else {\n uxi &= u64(-1) >> 12;\n uxi |= 1 << 52;\n }\n if (!ey) {\n ey -= builtin_clz(uy << 12);\n uy <<= 1 - ey;\n } else {\n uy &= u64(-1) >> 12;\n uy |= 1 << 52;\n }\n var q: u32 = 0;\n do {\n if (ex < ey) {\n if (ex + 1 == ey) break; // goto end\n return x;\n }\n while (ex > ey) {\n if (uxi >= uy) {\n uxi -= uy;\n ++q;\n }\n uxi <<= 1;\n q <<= 1;\n --ex;\n }\n if (uxi >= uy) {\n uxi -= uy;\n ++q;\n }\n if (uxi == 0) ex = -60;\n else {\n let shift = builtin_clz(uxi << 11);\n ex -= shift;\n uxi <<= shift;\n }\n break;\n } while (false);\n // end:\n if (ex > 0) {\n uxi -= 1 << 52;\n uxi |= ex << 52;\n } else {\n uxi >>= -ex + 1;\n }\n x = reinterpret(uxi);\n y = builtin_abs(y);\n var x2 = x + x;\n if (ex == ey || (ex + 1 == ey && (x2 > y || (x2 == y && (q & 1))))) {\n x -= y;\n // ++q;\n }\n return ux < 0 ? -x : x;\n }\n\n export function sincos(x: f64): void { // see: musl/tree/src/math/sincos.c\n var u = reinterpret(x);\n var ux = u32(u >> 32);\n var sign = ux >> 31;\n ux &= 0x7FFFFFFF;\n\n if (ux <= 0x3FE921FB) { // |x| ~<= π/4\n if (ux < 0x3E46A09E) { // if |x| < 2**-27 * sqrt(2)\n sincos_sin = x;\n sincos_cos = 1;\n return;\n }\n sincos_sin = sin_kern(x, 0, 0);\n sincos_cos = cos_kern(x, 0);\n return;\n }\n // sin(Inf or NaN) is NaN\n if (ux >= 0x7F800000) {\n let xx = x - x;\n sincos_sin = xx;\n sincos_cos = xx;\n return;\n }\n // general argument reduction needed\n var n = rempio2(x, u, sign);\n var y0 = rempio2_y0;\n var y1 = rempio2_y1;\n var s = sin_kern(y0, y1, 1);\n var c = cos_kern(y0, y1);\n var sin = s, cos = c;\n if (n & 1) {\n sin = c;\n cos = -s;\n }\n if (n & 2) {\n sin = -sin;\n cos = -cos;\n }\n sincos_sin = sin;\n sincos_cos = cos;\n }\n}\n\n// @ts-ignore: decorator\n@lazy var rempio2f_y: f64;\n\n// @ts-ignore: decorator\n@lazy @inline const PIO2F_TABLE = memory.data([\n 0xA2F9836E4E441529,\n 0xFC2757D1F534DDC0,\n 0xDB6295993C439041,\n 0xFE5163ABDEBBC561\n]);\n\nfunction Rf(z: f32): f32 { // Rational approximation of (asin(x)-x)/x^3\n const // see: musl/src/math/asinf.c and SUN COPYRIGHT NOTICE above\n pS0 = reinterpret(0x3E2AAA75), // 1.6666586697e-01f\n pS1 = reinterpret(0xBD2F13BA), // -4.2743422091e-02f\n pS2 = reinterpret(0xBC0DD36B), // -8.6563630030e-03f\n qS1 = reinterpret(0xBF34E5AE); // -7.0662963390e-01f\n\n var p = z * (pS0 + z * (pS1 + z * pS2));\n var q: f32 = 1 + z * qS1;\n return p / q;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction expo2f(x: f32, sign: f32): f32 { // exp(x)/2 for x >= log(DBL_MAX)\n const // see: musl/src/math/__expo2f.c\n k = 235,\n kln2 = reinterpret(0x4322E3BC); // 0x1.45c778p+7f\n var scale = reinterpret(u32(0x7F + (k >> 1)) << 23);\n // in directed rounding correct sign before rounding or overflow is important\n return NativeMathf.exp(x - kln2) * (sign * scale) * scale;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction pio2f_large_quot(x: f32, u: i32): i32 { // see: jdh8/metallic/blob/master/src/math/float/rem_pio2f.c\n const coeff = reinterpret(0x3BF921FB54442D18); // π * 0x1p-65 = 8.51530395021638647334e-20\n\n var offset = (u >> 23) - 152;\n var shift = u64(offset & 63);\n var tblPtr = PIO2F_TABLE + (offset >> 6 << 3);\n\n var b0 = load(tblPtr, 0 << 3);\n var b1 = load(tblPtr, 1 << 3);\n var lo: u64;\n\n if (shift > 32) {\n let b2 = load(tblPtr, 2 << 3);\n lo = b2 >> (96 - shift);\n lo |= b1 << (shift - 32);\n } else {\n lo = b1 >> (32 - shift);\n }\n\n var hi = (b1 >> (64 - shift)) | (b0 << shift);\n var mantissa: u64 = (u & 0x007FFFFF) | 0x00800000;\n var product = mantissa * hi + (mantissa * lo >> 32);\n var r: i64 = product << 2;\n var q = i32((product >> 62) + (r >>> 63));\n rempio2f_y = copysign(coeff, x) * r;\n return q;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction rempio2f(x: f32, u: u32, sign: i32): i32 { // see: jdh8/metallic/blob/master/src/math/float/rem_pio2f.c\n const\n pi2hi = reinterpret(0x3FF921FB50000000), // 1.57079631090164184570\n pi2lo = reinterpret(0x3E5110B4611A6263), // 1.58932547735281966916e-8\n _2_pi = reinterpret(0x3FE45F306DC9C883); // 0.63661977236758134308\n\n if (u < 0x4DC90FDB) { // π * 0x1p28\n let q = nearest(x * _2_pi);\n rempio2f_y = x - q * pi2hi - q * pi2lo;\n return q;\n }\n\n var q = pio2f_large_quot(x, u);\n return select(-q, q, sign);\n}\n\n// |sin(x)/x - s(x)| < 2**-37.5 (~[-4.89e-12, 4.824e-12]).\n// @ts-ignore: decorator\n@inline\nfunction sin_kernf(x: f64): f32 { // see: musl/tree/src/math/__sindf.c\n const\n S1 = reinterpret(0xBFC5555554CBAC77), // -0x15555554cbac77.0p-55\n S2 = reinterpret(0x3F811110896EFBB2), // 0x111110896efbb2.0p-59\n S3 = reinterpret(0xBF2A00F9E2CAE774), // -0x1a00f9e2cae774.0p-65\n S4 = reinterpret(0x3EC6CD878C3B46A7); // 0x16cd878c3b46a7.0p-71\n\n var z = x * x;\n var w = z * z;\n var r = S3 + z * S4;\n var s = z * x;\n return f32((x + s * (S1 + z * S2)) + s * w * r);\n}\n\n// |cos(x) - c(x)| < 2**-34.1 (~[-5.37e-11, 5.295e-11]).\n// @ts-ignore: decorator\n@inline\nfunction cos_kernf(x: f64): f32 { // see: musl/tree/src/math/__cosdf.c\n const\n C0 = reinterpret(0xBFDFFFFFFD0C5E81), // -0x1ffffffd0c5e81.0p-54\n C1 = reinterpret(0x3FA55553E1053A42), // 0x155553e1053a42.0p-57\n C2 = reinterpret(0xBF56C087E80F1E27), // -0x16c087e80f1e27.0p-62\n C3 = reinterpret(0x3EF99342E0EE5069); // 0x199342e0ee5069.0p-68\n\n var z = x * x;\n var w = z * z;\n var r = C2 + z * C3;\n return f32(((1 + z * C0) + w * C1) + (w * z) * r);\n}\n\n// |tan(x)/x - t(x)| < 2**-25.5 (~[-2e-08, 2e-08]).\n// @ts-ignore: decorator\n@inline\nfunction tan_kernf(x: f64, odd: i32): f32 { // see: musl/tree/src/math/__tandf.c\n const\n T0 = reinterpret(0x3FD5554D3418C99F), // 0x15554d3418c99f.0p-54\n T1 = reinterpret(0x3FC112FD38999F72), // 0x1112fd38999f72.0p-55\n T2 = reinterpret(0x3FAB54C91D865AFE), // 0x1b54c91d865afe.0p-57\n T3 = reinterpret(0x3F991DF3908C33CE), // 0x191df3908c33ce.0p-58\n T4 = reinterpret(0x3F685DADFCECF44E), // 0x185dadfcecf44e.0p-61\n T5 = reinterpret(0x3F8362B9BF971BCD); // 0x1362b9bf971bcd.0p-59\n\n var z = x * x;\n var r = T4 + z * T5;\n var t = T2 + z * T3;\n var w = z * z;\n var s = z * x;\n var u = T0 + z * T1;\n\n r = (x + s * u) + (s * w) * (t + w * r);\n return f32(odd ? -1 / r : r);\n}\n\n// See: jdh8/metallic/src/math/float/log2f.c and jdh8/metallic/src/math/float/kernel/atanh.h\n// @ts-ignore: decorator\n@inline\nfunction log2f(x: f64): f64 {\n const\n log2e = reinterpret(0x3FF71547652B82FE), // 1.44269504088896340736\n c0 = reinterpret(0x3FD555554FD9CAEF), // 0.33333332822728226129\n c1 = reinterpret(0x3FC999A7A8AF4132), // 0.20000167595436263505\n c2 = reinterpret(0x3FC2438D79437030), // 0.14268654271188685375\n c3 = reinterpret(0x3FBE2F663B001C97); // 0.11791075649681414150\n\n var i = reinterpret(x);\n var exponent = (i - 0x3FE6A09E667F3BCD) >> 52;\n x = reinterpret(i - (exponent << 52));\n x = (x - 1) / (x + 1);\n var xx = x * x;\n var y = x + x * xx * (c0 + c1 * xx + (c2 + c3 * xx) * (xx * xx));\n return (2 * log2e) * y + exponent;\n}\n\n// See: jdh8/metallic/src/math/float/exp2f.h and jdh8/metallic/blob/master/src/math/float/kernel/exp2f.h\n// @ts-ignore: decorator\n@inline\nfunction exp2f(x: f64): f64 {\n const\n c0 = reinterpret(0x3FE62E4302FCC24A), // 6.931471880289532425e-1\n c1 = reinterpret(0x3FCEBFBE07D97B91), // 2.402265108421173406e-1\n c2 = reinterpret(0x3FAC6AF6CCFC1A65), // 5.550357105498874537e-2\n c3 = reinterpret(0x3F83B29E3CE9AEF6), // 9.618030771171497658e-3\n c4 = reinterpret(0x3F55F0896145A89F), // 1.339086685300950937e-3\n c5 = reinterpret(0x3F2446C81E384864); // 1.546973499989028719e-4\n\n if (x < -1022) return 0;\n if (x >= 1024) return Infinity;\n\n var n = nearest(x);\n x -= n;\n var xx = x * x;\n var y = 1 + x * (c0 + c1 * x + (c2 + c3 * x) * xx + (c4 + c5 * x) * (xx * xx));\n return reinterpret(reinterpret(y) + (n << 52));\n}\n\nexport namespace NativeMathf {\n\n // @ts-ignore: decorator\n @lazy\n export const E = NativeMath.E;\n\n // @ts-ignore: decorator\n @lazy\n export const LN2 = NativeMath.LN2;\n\n // @ts-ignore: decorator\n @lazy\n export const LN10 = NativeMath.LN10;\n\n // @ts-ignore: decorator\n @lazy\n export const LOG2E = NativeMath.LOG2E;\n\n // @ts-ignore: decorator\n @lazy\n export const LOG10E = NativeMath.LOG10E;\n\n // @ts-ignore: decorator\n @lazy\n export const PI = NativeMath.PI;\n\n // @ts-ignore: decorator\n @lazy\n export const SQRT1_2 = NativeMath.SQRT1_2;\n\n // @ts-ignore: decorator\n @lazy\n export const SQRT2 = NativeMath.SQRT2;\n\n // @ts-ignore: decorator\n @lazy\n export var sincos_sin: f32 = 0;\n\n // @ts-ignore: decorator\n @lazy\n export var sincos_cos: f32 = 0;\n\n // @ts-ignore: decorator\n @inline\n export function abs(x: f32): f32 {\n return builtin_abs(x);\n }\n\n export function acos(x: f32): f32 { // see: musl/src/math/acosf.c and SUN COPYRIGHT NOTICE above\n const\n pio2_hi = reinterpret(0x3FC90FDA), // 1.5707962513e+00f\n pio2_lo = reinterpret(0x33A22168), // 7.5497894159e-08f\n Ox1p_120f = reinterpret(0x03800000); // 0x1p-120f\n\n var hx = reinterpret(x);\n var ix = hx & 0x7FFFFFFF;\n if (ix >= 0x3F800000) {\n if (ix == 0x3F800000) {\n return select(2 * pio2_hi + Ox1p_120f, 0, hx < 0);\n }\n return 0 / (x - x);\n }\n if (ix < 0x3F000000) {\n if (ix <= 0x32800000) return pio2_hi + Ox1p_120f;\n return pio2_hi - (x - (pio2_lo - x * Rf(x * x)));\n }\n var z: f32, w: f32, s: f32;\n if (hx < 0) {\n // z = (1 + x) * 0.5;\n z = 0.5 + x * 0.5;\n s = builtin_sqrt(z);\n w = Rf(z) * s - pio2_lo;\n return 2 * (pio2_hi - (s + w));\n }\n // z = (1 - x) * 0.5;\n z = 0.5 - x * 0.5;\n s = builtin_sqrt(z);\n hx = reinterpret(s);\n var df = reinterpret(hx & 0xFFFFF000);\n var c = (z - df * df) / (s + df);\n w = Rf(z) * s + c;\n return 2 * (df + w);\n }\n\n export function acosh(x: f32): f32 { // see: musl/src/math/acoshf.c\n const s = reinterpret(0x3F317218); // 0.693147180559945309417232121458176568f\n var u = reinterpret(x);\n var a = u & 0x7FFFFFFF;\n if (a < 0x3F800000 + (1 << 23)) { // |x| < 2, invalid if x < 1\n let xm1 = x - 1;\n return log1p(xm1 + builtin_sqrt(xm1 * (xm1 + 2)));\n }\n if (u < 0x3F800000 + (12 << 23)) { // 2 <= x < 0x1p12\n return log(2 * x - 1 / (x + builtin_sqrt(x * x - 1)));\n }\n // x >= 0x1p12 or x <= -2 or NaN\n return log(x) + s;\n }\n\n export function asin(x: f32): f32 { // see: musl/src/math/asinf.c and SUN COPYRIGHT NOTICE above\n const\n pio2 = reinterpret(0x3FC90FDB), // 1.570796326794896558e+00f\n Ox1p_120f = reinterpret(0x03800000); // 0x1p-120f\n\n var sx = x;\n var hx = reinterpret(x) & 0x7FFFFFFF;\n if (hx >= 0x3F800000) {\n if (hx == 0x3F800000) return x * pio2 + Ox1p_120f;\n return 0 / (x - x);\n }\n if (hx < 0x3F000000) {\n if (hx < 0x39800000 && hx >= 0x00800000) return x;\n return x + x * Rf(x * x);\n }\n // var z: f32 = (1 - builtin_abs(x)) * 0.5;\n var z: f32 = 0.5 - builtin_abs(x) * 0.5;\n var s = builtin_sqrt(z); // sic\n x = f32(pio2 - 2 * (s + s * Rf(z)));\n return builtin_copysign(x, sx);\n }\n\n export function asinh(x: f32): f32 { // see: musl/src/math/asinhf.c\n const c = reinterpret(0x3F317218); // 0.693147180559945309417232121458176568f\n var u = reinterpret(x) & 0x7FFFFFFF;\n var y = reinterpret(u);\n if (u >= 0x3F800000 + (12 << 23)) y = log(y) + c;\n else if (u >= 0x3F800000 + (1 << 23)) y = log(2 * y + 1 / (builtin_sqrt(y * y + 1) + y));\n else if (u >= 0x3F800000 - (12 << 23)) y = log1p(y + y * y / (builtin_sqrt(y * y + 1) + 1));\n return builtin_copysign(y, x);\n }\n\n export function atan(x: f32): f32 { // see: musl/src/math/atanf.c and SUN COPYRIGHT NOTICE above\n const\n atanhi0 = reinterpret(0x3EED6338), // 4.6364760399e-01f\n atanhi1 = reinterpret(0x3F490FDA), // 7.8539812565e-01f\n atanhi2 = reinterpret(0x3F7B985E), // 9.8279368877e-01f\n atanhi3 = reinterpret(0x3FC90FDA), // 1.5707962513e+00f\n atanlo0 = reinterpret(0x31AC3769), // 5.0121582440e-09f\n atanlo1 = reinterpret(0x33222168), // 3.7748947079e-08f\n atanlo2 = reinterpret(0x33140FB4), // 3.4473217170e-08f\n atanlo3 = reinterpret(0x33A22168), // 7.5497894159e-08f\n aT0 = reinterpret(0x3EAAAAA9), // 3.3333328366e-01f\n aT1 = reinterpret(0xBE4CCA98), // -1.9999158382e-01f\n aT2 = reinterpret(0x3E11F50D), // 1.4253635705e-01f\n aT3 = reinterpret(0xBDDA1247), // -1.0648017377e-01f\n aT4 = reinterpret(0x3D7CAC25), // 6.1687607318e-02f\n Ox1p_120f = reinterpret(0x03800000); // 0x1p-120f\n\n var ix = reinterpret(x);\n var sx = x;\n ix &= 0x7FFFFFFF;\n var z: f32;\n if (ix >= 0x4C800000) {\n if (isNaN(x)) return x;\n z = atanhi3 + Ox1p_120f;\n return builtin_copysign(z, sx);\n }\n var id: i32;\n if (ix < 0x3EE00000) {\n if (ix < 0x39800000) return x;\n id = -1;\n } else {\n x = builtin_abs(x);\n if (ix < 0x3F980000) {\n if (ix < 0x3F300000) {\n id = 0;\n x = (2.0 * x - 1.0) / (2.0 + x);\n } else {\n id = 1;\n x = (x - 1.0) / (x + 1.0);\n }\n } else {\n if (ix < 0x401C0000) {\n id = 2;\n x = (x - 1.5) / (1.0 + 1.5 * x);\n } else {\n id = 3;\n x = -1.0 / x;\n }\n }\n }\n z = x * x;\n var w = z * z;\n var s1 = z * (aT0 + w * (aT2 + w * aT4));\n var s2 = w * (aT1 + w * aT3);\n var s3 = x * (s1 + s2);\n if (id < 0) return x - s3;\n switch (id) {\n case 0: { z = atanhi0 - ((s3 - atanlo0) - x); break; }\n case 1: { z = atanhi1 - ((s3 - atanlo1) - x); break; }\n case 2: { z = atanhi2 - ((s3 - atanlo2) - x); break; }\n case 3: { z = atanhi3 - ((s3 - atanlo3) - x); break; }\n default: unreachable();\n }\n return builtin_copysign(z, sx);\n }\n\n export function atanh(x: f32): f32 { // see: musl/src/math/atanhf.c\n var u = reinterpret(x);\n var y = builtin_abs(x);\n if (u < 0x3F800000 - (1 << 23)) {\n if (u >= 0x3F800000 - (32 << 23)) y = 0.5 * log1p(2 * y * (1.0 + y / (1 - y)));\n } else y = 0.5 * log1p(2 * (y / (1 - y)));\n return builtin_copysign(y, x);\n }\n\n export function atan2(y: f32, x: f32): f32 { // see: musl/src/math/atan2f.c and SUN COPYRIGHT NOTICE above\n const\n pi = reinterpret(0x40490FDB), // 3.1415927410e+00f\n pi_lo = reinterpret(0xB3BBBD2E); // -8.7422776573e-08f\n\n if (isNaN(x) || isNaN(y)) return x + y;\n var ix = reinterpret(x);\n var iy = reinterpret(y);\n if (ix == 0x3F800000) return atan(y);\n var m = u32(((iy >> 31) & 1) | ((ix >> 30) & 2));\n ix &= 0x7FFFFFFF;\n iy &= 0x7FFFFFFF;\n if (iy == 0) {\n switch (m) {\n case 0:\n case 1: return y;\n case 2: return pi;\n case 3: return -pi;\n }\n }\n if (ix == 0) return m & 1 ? -pi / 2 : pi / 2;\n if (ix == 0x7F800000) {\n if (iy == 0x7F800000) {\n let t: f32 = m & 2 ? 3 * pi / 4 : pi / 4;\n return m & 1 ? -t : t;\n } else {\n let t: f32 = m & 2 ? pi : 0.0;\n return m & 1 ? -t : t;\n }\n }\n if (ix + (26 << 23) < iy || iy == 0x7F800000) return m & 1 ? -pi / 2 : pi / 2;\n var z: f32;\n if ((m & 2) && iy + (26 << 23) < ix) z = 0.0;\n else z = atan(builtin_abs(y / x));\n switch (m) {\n case 0: return z;\n case 1: return -z;\n case 2: return pi - (z - pi_lo);\n case 3: return (z - pi_lo) - pi;\n }\n unreachable();\n return 0;\n }\n\n export function cbrt(x: f32): f32 { // see: musl/src/math/cbrtf.c and SUN COPYRIGHT NOTICE above\n const\n B1 = 709958130,\n B2 = 642849266,\n Ox1p24f = reinterpret(0x4B800000);\n\n var u = reinterpret(x);\n var hx = u & 0x7FFFFFFF;\n if (hx >= 0x7F800000) return x + x;\n if (hx < 0x00800000) {\n if (hx == 0) return x;\n u = reinterpret(x * Ox1p24f);\n hx = u & 0x7FFFFFFF;\n hx = hx / 3 + B2;\n } else {\n hx = hx / 3 + B1;\n }\n u &= 0x80000000;\n u |= hx;\n var t = reinterpret(u);\n var r = t * t * t;\n t = t * (x + x + r) / (x + r + r);\n r = t * t * t;\n t = t * (x + x + r) / (x + r + r);\n return t;\n }\n\n // @ts-ignore: decorator\n @inline\n export function ceil(x: f32): f32 {\n return builtin_ceil(x);\n }\n\n export function clz32(x: f32): f32 {\n if (!isFinite(x)) return 32;\n return builtin_clz(dtoi32(x));\n }\n\n export function cos(x: f32): f32 { // see: musl/src/math/cosf.c\n const\n c1pio2 = reinterpret(0x3FF921FB54442D18), // M_PI_2 * 1\n c2pio2 = reinterpret(0x400921FB54442D18), // M_PI_2 * 2\n c3pio2 = reinterpret(0x4012D97C7F3321D2), // M_PI_2 * 3\n c4pio2 = reinterpret(0x401921FB54442D18); // M_PI_2 * 4\n\n var ux = reinterpret(x);\n var sign = ux >> 31;\n ux &= 0x7FFFFFFF;\n\n if (ux <= 0x3F490FDA) { // |x| ~<= π/4\n if (ux < 0x39800000) { // |x| < 2**-12\n // raise inexact if x != 0\n return 1;\n }\n return cos_kernf(x);\n }\n\n if (ASC_SHRINK_LEVEL < 1) {\n if (ux <= 0x407B53D1) { // |x| ~<= 5π/4\n if (ux > 0x4016CBE3) { // |x| ~> 3π/4\n return -cos_kernf(sign ? x + c2pio2 : x - c2pio2);\n } else {\n return sign ? sin_kernf(x + c1pio2) : sin_kernf(c1pio2 - x);\n }\n }\n if (ux <= 0x40E231D5) { // |x| ~<= 9π/4\n if (ux > 0x40AFEDDF) { // |x| ~> 7π/4\n return cos_kernf(sign ? x + c4pio2 : x - c4pio2);\n } else {\n return sign ? sin_kernf(-x - c3pio2) : sin_kernf(x - c3pio2);\n }\n }\n }\n\n // cos(Inf or NaN) is NaN\n if (ux >= 0x7F800000) return x - x;\n\n // general argument reduction needed\n var n = rempio2f(x, ux, sign);\n var y = rempio2f_y;\n\n var t = n & 1 ? sin_kernf(y) : cos_kernf(y);\n return (n + 1) & 2 ? -t : t;\n }\n\n export function cosh(x: f32): f32 { // see: musl/src/math/coshf.c\n var u = reinterpret(x);\n u &= 0x7FFFFFFF;\n x = reinterpret(u);\n if (u < 0x3F317217) {\n if (u < 0x3F800000 - (12 << 23)) return 1;\n let t = expm1(x);\n // return 1 + t * t / (2 * (1 + t));\n return 1 + t * t / (2 + 2 * t);\n }\n if (u < 0x42B17217) {\n let t = exp(x);\n // return 0.5 * (t + 1 / t);\n return 0.5 * t + 0.5 / t;\n }\n return expo2f(x, 1);\n }\n\n // @ts-ignore: decorator\n @inline\n export function floor(x: f32): f32 {\n return builtin_floor(x);\n }\n\n export function exp(x: f32): f32 { // see: musl/src/math/expf.c and SUN COPYRIGHT NOTICE above\n if (ASC_SHRINK_LEVEL < 1) {\n return expf_lut(x);\n } else {\n const\n ln2hi = reinterpret(0x3F317200), // 6.9314575195e-1f\n ln2lo = reinterpret(0x35BFBE8E), // 1.4286067653e-6f\n invln2 = reinterpret(0x3FB8AA3B), // 1.4426950216e+0f\n P1 = reinterpret(0x3E2AAA8F), // 1.6666625440e-1f\n P2 = reinterpret(0xBB355215), // -2.7667332906e-3f\n Ox1p127f = reinterpret(0x7F000000); // 0x1p+127f\n\n let hx = reinterpret(x);\n let sign = hx >> 31;\n hx &= 0x7FFFFFFF;\n if (hx >= 0x42AEAC50) {\n if (hx > 0x7F800000) return x; // NaN\n if (hx >= 0x42B17218) {\n if (!sign) return x * Ox1p127f;\n else if (hx >= 0x42CFF1B5) return 0;\n }\n }\n let hi: f32, lo: f32;\n let k: i32;\n if (hx > 0x3EB17218) {\n if (hx > 0x3F851592) {\n k = i32(invln2 * x + builtin_copysign(0.5, x));\n } else {\n k = 1 - (sign << 1);\n }\n hi = x - k * ln2hi;\n lo = k * ln2lo;\n x = hi - lo;\n } else if (hx > 0x39000000) {\n k = 0;\n hi = x;\n lo = 0;\n } else {\n return 1 + x;\n }\n let xx = x * x;\n let c = x - xx * (P1 + xx * P2);\n let y: f32 = 1 + (x * c / (2 - c) - lo + hi);\n return k == 0 ? y : scalbn(y, k);\n }\n }\n\n export function exp2(x: f32): f32 {\n return exp2f_lut(x);\n }\n\n export function expm1(x: f32): f32 { // see: musl/src/math/expm1f.c and SUN COPYRIGHT NOTICE above\n const\n ln2_hi = reinterpret(0x3F317180), // 6.9313812256e-01f\n ln2_lo = reinterpret(0x3717F7D1), // 9.0580006145e-06f\n invln2 = reinterpret(0x3FB8AA3B), // 1.4426950216e+00f\n Q1 = reinterpret(0xBD088868), // -3.3333212137e-02f\n Q2 = reinterpret(0x3ACF3010), // 1.5807170421e-03f\n Ox1p127f = reinterpret(0x7F000000); // 0x1p+127f\n\n var u = reinterpret(x);\n var hx = u & 0x7FFFFFFF;\n var sign = u >> 31;\n if (hx >= 0x4195B844) {\n if (hx > 0x7F800000) return x;\n if (sign) return -1;\n if (hx > 0x42B17217) { // x > log(FLT_MAX)\n x *= Ox1p127f;\n return x;\n }\n }\n var c: f32 = 0.0, t: f32, k: i32;\n if (hx > 0x3EB17218) {\n k = select(\n 1 - (sign << 1),\n i32(invln2 * x + builtin_copysign(0.5, x)),\n hx < 0x3F851592\n );\n t = k;\n let hi = x - t * ln2_hi;\n let lo = t * ln2_lo;\n x = hi - lo;\n c = (hi - x) - lo;\n } else if (hx < 0x33000000) {\n return x;\n } else k = 0;\n var hfx: f32 = 0.5 * x;\n var hxs: f32 = x * hfx;\n var r1: f32 = 1.0 + hxs * (Q1 + hxs * Q2);\n t = 3.0 - r1 * hfx;\n var e = hxs * ((r1 - t) / (6.0 - x * t));\n if (k == 0) return x - (x * e - hxs);\n e = x * (e - c) - c;\n e -= hxs;\n if (k == -1) return 0.5 * (x - e) - 0.5;\n if (k == 1) {\n if (x < -0.25) return -2.0 * (e - (x + 0.5));\n return 1.0 + 2.0 * (x - e);\n }\n u = (0x7F + k) << 23;\n var twopk = reinterpret(u);\n var y: f32;\n if (k < 0 || k > 56) {\n y = x - e + 1.0;\n if (k == 128) y = y * 2.0 * Ox1p127f;\n else y = y * twopk;\n return y - 1.0;\n }\n u = (0x7F - k) << 23;\n y = reinterpret(u);\n if (k < 20) y = (1 - y) - e;\n else y = 1 - (e + y);\n return (x + y) * twopk;\n }\n\n // @ts-ignore: decorator\n @inline\n export function fround(x: f32): f32 {\n return x;\n }\n\n export function hypot(x: f32, y: f32): f32 { // see: musl/src/math/hypotf.c\n const\n Ox1p90f = reinterpret(0x6C800000),\n Ox1p_90f = reinterpret(0x12800000);\n\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n ux &= 0x7FFFFFFF;\n uy &= 0x7FFFFFFF;\n if (ux < uy) {\n let ut = ux;\n ux = uy;\n uy = ut;\n }\n x = reinterpret(ux);\n y = reinterpret(uy);\n if (uy == 0xFF << 23) return y;\n if (ux >= 0xFF << 23 || uy == 0 || ux - uy >= 25 << 23) return x + y;\n var z: f32 = 1;\n if (ux >= (0x7F + 60) << 23) {\n z = Ox1p90f;\n x *= Ox1p_90f;\n y *= Ox1p_90f;\n } else if (uy < (0x7F - 60) << 23) {\n z = Ox1p_90f;\n x *= Ox1p90f;\n y *= Ox1p90f;\n }\n return z * builtin_sqrt(f32(x * x + y * y));\n }\n\n // @ts-ignore: decorator\n @inline\n export function imul(x: f32, y: f32): f32 {\n /*\n * Wasm (MVP) and JS have different approaches for double->int conversions.\n *\n * For emulate JS conversion behavior and avoid trapping from wasm we should modulate by MAX_INT\n * our float-point arguments before actual convertion to integers.\n */\n if (!isFinite(x + y)) return 0;\n return (dtoi32(x) * dtoi32(y));\n }\n\n export function log(x: f32): f32 { // see: musl/src/math/logf.c and SUN COPYRIGHT NOTICE above\n if (ASC_SHRINK_LEVEL < 1) {\n return logf_lut(x);\n } else {\n const\n ln2_hi = reinterpret(0x3F317180), // 6.9313812256e-01f\n ln2_lo = reinterpret(0x3717F7D1), // 9.0580006145e-06f\n Lg1 = reinterpret(0x3F2AAAAA), // 0xaaaaaa.0p-24f\n Lg2 = reinterpret(0x3ECCCE13), // 0xccce13.0p-25f\n Lg3 = reinterpret(0x3E91E9EE), // 0x91e9ee.0p-25f\n Lg4 = reinterpret(0x3E789E26), // 0xf89e26.0p-26f\n Ox1p25f = reinterpret(0x4C000000);\n\n let u = reinterpret(x);\n let k = 0;\n let sign = u >> 31;\n if (sign || u < 0x00800000) {\n if (u << 1 == 0) return -1 / (x * x);\n if (sign) return (x - x) / 0;\n k -= 25;\n x *= Ox1p25f;\n u = reinterpret(x);\n } else if (u >= 0x7F800000) {\n return x;\n } else if (u == 0x3F800000) {\n return 0;\n }\n u += 0x3F800000 - 0x3F3504F3;\n k += i32(u >> 23) - 0x7F;\n u = (u & 0x007FFFFF) + 0x3F3504F3;\n x = reinterpret(u);\n let f = x - 1.0;\n let s = f / (2.0 + f);\n let z = s * s;\n let w = z * z;\n let t1 = w * (Lg2 + w * Lg4);\n let t2 = z * (Lg1 + w * Lg3);\n let r = t2 + t1;\n let hfsq = 0.5 * f * f;\n let dk = k;\n return s * (hfsq + r) + dk * ln2_lo - hfsq + f + dk * ln2_hi;\n }\n }\n\n export function log10(x: f32): f32 { // see: musl/src/math/log10f.c and SUN COPYRIGHT NOTICE above\n const\n ivln10hi = reinterpret(0x3EDE6000), // 4.3432617188e-01f\n ivln10lo = reinterpret(0xB804EAD9), // -3.1689971365e-05f\n log10_2hi = reinterpret(0x3E9A2080), // 3.0102920532e-01f\n log10_2lo = reinterpret(0x355427DB), // 7.9034151668e-07f\n Lg1 = reinterpret(0x3F2AAAAA), // 0xaaaaaa.0p-24f, 0.66666662693f\n Lg2 = reinterpret(0x3ECCCE13), // 0xccce13.0p-25f, 0.40000972152f\n Lg3 = reinterpret(0x3E91E9EE), // 0x91e9ee.0p-25f, 0.28498786688f\n Lg4 = reinterpret(0x3E789E26), // 0xf89e26.0p-26f, 0.24279078841f\n Ox1p25f = reinterpret(0x4C000000); // 0x1p25f\n\n var ux = reinterpret(x);\n var k = 0;\n var sign = ux >> 31;\n if (sign || ux < 0x00800000) {\n if (ux << 1 == 0) return -1 / (x * x);\n if (sign) return (x - x) / 0.0;\n k -= 25;\n x *= Ox1p25f;\n ux = reinterpret(x);\n } else if (ux >= 0x7F800000) {\n return x;\n } else if (ux == 0x3F800000) {\n return 0;\n }\n ux += 0x3F800000 - 0x3F3504F3;\n k += i32(ux >> 23) - 0x7F;\n ux = (ux & 0x007FFFFF) + 0x3F3504F3;\n x = reinterpret(ux);\n var f = x - 1.0;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * Lg4);\n var t2 = z * (Lg1 + w * Lg3);\n var r = t2 + t1;\n var hfsq: f32 = 0.5 * f * f;\n var hi = f - hfsq;\n ux = reinterpret(hi);\n ux &= 0xFFFFF000;\n hi = reinterpret(ux);\n var lo = f - hi - hfsq + s * (hfsq + r);\n var dk = k;\n return dk * log10_2lo + (lo + hi) * ivln10lo + lo * ivln10hi + hi * ivln10hi + dk * log10_2hi;\n }\n\n export function log1p(x: f32): f32 { // see: musl/src/math/log1pf.c and SUN COPYRIGHT NOTICE above\n const\n ln2_hi = reinterpret(0x3F317180), // 6.9313812256e-01\n ln2_lo = reinterpret(0x3717F7D1), // 9.0580006145e-06\n Lg1 = reinterpret(0x3F2AAAAA), // 0xaaaaaa.0p-24f, 0.66666662693f\n Lg2 = reinterpret(0x3ECCCE13), // 0xccce13.0p-25f, 0.40000972152f\n Lg3 = reinterpret(0x3E91E9EE), // 0x91e9ee.0p-25f, 0.28498786688f\n Lg4 = reinterpret(0x3E789E26); // 0xf89e26.0p-26f, 0.24279078841f\n\n var ix = reinterpret(x);\n var c: f32 = 0;\n var f: f32 = 0;\n var k = 1;\n if (ix < 0x3ED413D0 || bool(ix >> 31)) {\n if (ix >= 0xBF800000) {\n if (x == -1) return x / 0.0;\n return (x - x) / 0.0;\n }\n if (ix << 1 < 0x33800000 << 1) return x;\n if (ix <= 0xBE95F619) {\n k = 0;\n c = 0;\n f = x;\n }\n } else if (ix >= 0x7F800000) return x;\n if (k) {\n let uf: f32 = 1 + x;\n let iu = reinterpret(uf);\n iu += 0x3F800000 - 0x3F3504F3;\n k = i32(iu >> 23) - 0x7F;\n if (k < 25) {\n c = k >= 2 ? 1 - (uf - x) : x - (uf - 1);\n c /= uf;\n } else c = 0;\n iu = (iu & 0x007FFFFF) + 0x3F3504F3;\n f = reinterpret(iu) - 1;\n }\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * Lg4);\n var t2 = z * (Lg1 + w * Lg3);\n var r = t2 + t1;\n var hfsq: f32 = 0.5 * f * f;\n var dk = k;\n return s * (hfsq + r) + (dk * ln2_lo + c) - hfsq + f + dk * ln2_hi;\n }\n\n export function log2(x: f32): f32 { // see: musl/src/math/log2f.c and SUN COPYRIGHT NOTICE above\n if (ASC_SHRINK_LEVEL < 1) {\n return log2f_lut(x);\n } else {\n const\n ivln2hi = reinterpret(0x3FB8B000), // 1.4428710938e+00f\n ivln2lo = reinterpret(0xB9389AD4), // -1.7605285393e-04\n Lg1 = reinterpret(0x3F2AAAAA), // 0xaaaaaa.0p-24f, 0.66666662693f\n Lg2 = reinterpret(0x3ECCCE13), // 0xccce13.0p-25f, 0.40000972152f\n Lg3 = reinterpret(0x3E91E9EE), // 0x91e9ee.0p-25f, 0.28498786688f\n Lg4 = reinterpret(0x3E789E26), // 0xf89e26.0p-26f, 0.24279078841f\n Ox1p25f = reinterpret(0x4C000000); // 0x1p25f\n\n let ux = reinterpret(x);\n let k = 0;\n let sign = ux >> 31;\n if (sign || ux < 0x00800000) {\n if (ux << 1 == 0) return -1 / (x * x);\n if (sign) return (x - x) / 0.0;\n k -= 25;\n x *= Ox1p25f;\n ux = reinterpret(x);\n } else if (ux >= 0x7F800000) {\n return x;\n } else if (ux == 0x3F800000) {\n return 0;\n }\n ux += 0x3F800000 - 0x3F3504F3;\n k += i32(ux >> 23) - 0x7F;\n ux = (ux & 0x007FFFFF) + 0x3F3504F3;\n x = reinterpret(ux);\n let f = x - 1.0;\n let s = f / (2.0 + f);\n let z = s * s;\n let w = z * z;\n let t1 = w * (Lg2 + w * Lg4);\n let t2 = z * (Lg1 + w * Lg3);\n let r = t2 + t1;\n let hfsq: f32 = 0.5 * f * f;\n let hi = f - hfsq;\n let u = reinterpret(hi);\n u &= 0xFFFFF000;\n hi = reinterpret(u);\n let lo: f32 = f - hi - hfsq + s * (hfsq + r);\n let dk = k;\n return (lo + hi) * ivln2lo + lo * ivln2hi + hi * ivln2hi + dk;\n }\n }\n\n // @ts-ignore: decorator\n @inline\n export function max(value1: f32, value2: f32): f32 {\n return builtin_max(value1, value2);\n }\n\n // @ts-ignore: decorator\n @inline\n export function min(value1: f32, value2: f32): f32 {\n return builtin_min(value1, value2);\n }\n\n export function pow(x: f32, y: f32): f32 {\n // TODO: remove this fast pathes after introduced own mid-end IR with \"stdlib call simplify\" transforms\n if (builtin_abs(y) <= 2) {\n if (y == 2.0) return x * x;\n if (y == 0.5) {\n return select(\n builtin_abs(builtin_sqrt(x)),\n Infinity,\n x != -Infinity\n );\n }\n if (y == -1.0) return 1 / x;\n if (y == 1.0) return x;\n if (y == 0.0) return 1.0;\n }\n if (ASC_SHRINK_LEVEL < 1) {\n // see: musl/src/math/powf.c\n return powf_lut(x, y);\n } else {\n // based on: jdh8/metallic/src/math/float/powf.c\n if (y == 0) return 1;\n // @ts-ignore: cast\n if (isNaN(x) | isNaN(y)) {\n return NaN;\n }\n let sign: u32 = 0;\n let uy = reinterpret(y);\n let ux = reinterpret(x);\n let sx = ux >> 31;\n ux &= 0x7FFFFFFF;\n if (sx && nearest(y) == y) {\n x = -x;\n sx = 0;\n sign = u32(nearest(y * 0.5) != y * 0.5) << 31;\n }\n let m: u32;\n if (ux == 0x3F800000) { // x == 1\n m = sx | u32((uy & 0x7FFFFFFF) == 0x7F800000) ? 0x7FC00000 : 0x3F800000;\n } else if (ux == 0) {\n m = uy < 0 ? 0x7F800000 : 0;\n } else if (ux == 0x7F800000) {\n m = uy < 0 ? 0 : 0x7F800000;\n } else if (sx) {\n m = 0x7FC00000;\n } else {\n m = reinterpret(exp2f(y * log2f(x)));\n }\n return reinterpret(m | sign);\n }\n }\n\n // @ts-ignore: decorator\n @inline\n export function seedRandom(value: i64): void {\n NativeMath.seedRandom(value);\n }\n\n // Using xoroshiro64starstar from http://xoshiro.di.unimi.it/xoroshiro64starstar.c\n export function random(): f32 {\n if (!random_seeded) seedRandom(reinterpret(seed()));\n\n var s0 = random_state0_32;\n var s1 = random_state1_32;\n var r = rotl(s0 * 0x9E3779BB, 5) * 5;\n\n s1 ^= s0;\n random_state0_32 = rotl(s0, 26) ^ s1 ^ (s1 << 9);\n random_state1_32 = rotl(s1, 13);\n\n return reinterpret((r >> 9) | (127 << 23)) - 1.0;\n }\n\n export function round(x: f32): f32 {\n if (ASC_SHRINK_LEVEL > 0) {\n return builtin_ceil(x) - f32(builtin_ceil(x) - 0.5 > x);\n } else {\n let roundUp = builtin_ceil(x);\n return select(roundUp, roundUp - 1.0, roundUp - 0.5 <= x);\n }\n }\n\n export function sign(x: f32): f32 {\n if (ASC_SHRINK_LEVEL > 0) {\n return select(builtin_copysign(1, x), x, builtin_abs(x) > 0);\n } else {\n return select(1, select(-1, x, x < 0), x > 0);\n }\n }\n\n // @ts-ignore: decorator\n @inline\n export function signbit(x: f32): bool {\n return (reinterpret(x) >>> 31);\n }\n\n export function sin(x: f32): f32 { // see: musl/src/math/sinf.c\n const\n s1pio2 = reinterpret(0x3FF921FB54442D18), // M_PI_2 * 1\n s2pio2 = reinterpret(0x400921FB54442D18), // M_PI_2 * 2\n s3pio2 = reinterpret(0x4012D97C7F3321D2), // M_PI_2 * 3\n s4pio2 = reinterpret(0x401921FB54442D18); // M_PI_2 * 4\n\n var ux = reinterpret(x);\n var sign = ux >> 31;\n ux &= 0x7FFFFFFF;\n\n if (ux <= 0x3F490FDA) { // |x| ~<= π/4\n if (ux < 0x39800000) { // |x| < 2**-12\n return x;\n }\n return sin_kernf(x);\n }\n\n if (ASC_SHRINK_LEVEL < 1) {\n if (ux <= 0x407B53D1) { // |x| ~<= 5π/4\n if (ux <= 0x4016CBE3) { // |x| ~<= 3π/4\n return sign ? -cos_kernf(x + s1pio2) : cos_kernf(x - s1pio2);\n }\n return sin_kernf(-(sign ? x + s2pio2 : x - s2pio2));\n }\n\n if (ux <= 0x40E231D5) { // |x| ~<= 9π/4\n if (ux <= 0x40AFEDDF) { // |x| ~<= 7π/4\n return sign ? cos_kernf(x + s3pio2) : -cos_kernf(x - s3pio2);\n }\n return sin_kernf(sign ? x + s4pio2 : x - s4pio2);\n }\n }\n\n // sin(Inf or NaN) is NaN\n if (ux >= 0x7F800000) return x - x;\n\n var n = rempio2f(x, ux, sign);\n var y = rempio2f_y;\n\n var t = n & 1 ? cos_kernf(y) : sin_kernf(y);\n return n & 2 ? -t : t;\n }\n\n export function sinh(x: f32): f32 { // see: musl/src/math/sinhf.c\n var u = reinterpret(x) & 0x7FFFFFFF;\n var a = reinterpret(u);\n var h = builtin_copysign(0.5, x);\n if (u < 0x42B17217) {\n let t = expm1(a);\n if (u < 0x3F800000) {\n if (u < 0x3F800000 - (12 << 23)) return x;\n return h * (2 * t - t * t / (t + 1));\n }\n return h * (t + t / (t + 1));\n }\n return expo2f(a, 2 * h);\n }\n\n // @ts-ignore: decorator\n @inline\n export function sqrt(x: f32): f32 {\n return builtin_sqrt(x);\n }\n\n export function tan(x: f32): f32 { // see: musl/src/math/tanf.c\n const\n t1pio2 = reinterpret(0x3FF921FB54442D18), // 1 * M_PI_2\n t2pio2 = reinterpret(0x400921FB54442D18), // 2 * M_PI_2\n t3pio2 = reinterpret(0x4012D97C7F3321D2), // 3 * M_PI_2\n t4pio2 = reinterpret(0x401921FB54442D18); // 4 * M_PI_2\n\n var ux = reinterpret(x);\n var sign = ux >> 31;\n ux &= 0x7FFFFFFF;\n\n if (ux <= 0x3F490FDA) { // |x| ~<= π/4\n if (ux < 0x39800000) { // |x| < 2**-12\n return x;\n }\n return tan_kernf(x, 0);\n }\n\n if (ASC_SHRINK_LEVEL < 1) {\n if (ux <= 0x407B53D1) { // |x| ~<= 5π/4\n if (ux <= 0x4016CBE3) { // |x| ~<= 3π/4\n return tan_kernf((sign ? x + t1pio2 : x - t1pio2), 1);\n } else {\n return tan_kernf((sign ? x + t2pio2 : x - t2pio2), 0);\n }\n }\n if (ux <= 0x40E231D5) { // |x| ~<= 9π/4\n if (ux <= 0x40AFEDDF) { // |x| ~<= 7π/4\n return tan_kernf((sign ? x + t3pio2 : x - t3pio2), 1);\n } else {\n return tan_kernf((sign ? x + t4pio2 : x - t4pio2), 0);\n }\n }\n }\n\n // tan(Inf or NaN) is NaN\n if (ux >= 0x7F800000) return x - x;\n\n // argument reduction\n var n = rempio2f(x, ux, sign);\n var y = rempio2f_y;\n return tan_kernf(y, n & 1);\n }\n\n export function tanh(x: f32): f32 { // see: musl/src/math/tanhf.c\n var u = reinterpret(x);\n u &= 0x7FFFFFFF;\n var y = reinterpret(u);\n var t: f32;\n if (u > 0x3F0C9F54) {\n if (u > 0x41200000) t = 1 + 0 / y;\n else {\n t = expm1(2 * y);\n t = 1 - 2 / (t + 2);\n }\n } else if (u > 0x3E82C578) {\n t = expm1(2 * y);\n t = t / (t + 2);\n } else if (u >= 0x00800000) {\n t = expm1(-2 * y);\n t = -t / (t + 2);\n } else t = y;\n return builtin_copysign(t, x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function trunc(x: f32): f32 {\n return builtin_trunc(x);\n }\n\n export function scalbn(x: f32, n: i32): f32 { // see: https://git.musl-libc.org/cgit/musl/tree/src/math/scalbnf.c\n const\n Ox1p24f = reinterpret(0x4B800000),\n Ox1p127f = reinterpret(0x7F000000),\n Ox1p_126f = reinterpret(0x00800000);\n\n var y = x;\n if (n > 127) {\n y *= Ox1p127f;\n n -= 127;\n if (n > 127) {\n y *= Ox1p127f;\n n = builtin_min(n - 127, 127);\n }\n } else if (n < -126) {\n y *= Ox1p_126f * Ox1p24f;\n n += 126 - 24;\n if (n < -126) {\n y *= Ox1p_126f * Ox1p24f;\n n = builtin_max(n + 126 - 24, -126);\n }\n }\n return y * reinterpret((0x7F + n) << 23);\n }\n\n export function mod(x: f32, y: f32): f32 { // see: musl/src/math/fmodf.c\n if (builtin_abs(y) == 1.0) {\n // x % 1, x % -1 ==> sign(x) * abs(x - 1.0 * trunc(x / 1.0))\n // TODO: move this rule to compiler's optimization pass.\n // It could be apply for any x % C_pot, where \"C_pot\" is pow of two const.\n return builtin_copysign(x - builtin_trunc(x), x);\n }\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n var ex = i32(ux >> 23 & 0xFF);\n var ey = i32(uy >> 23 & 0xFF);\n var sm = ux & 0x80000000;\n var uy1 = uy << 1;\n if (uy1 == 0 || ex == 0xFF || isNaN(y)) {\n let m = x * y;\n return m / m;\n }\n var ux1 = ux << 1;\n if (ux1 <= uy1) {\n return x * f32(ux1 != uy1);\n }\n if (!ex) {\n ex -= builtin_clz(ux << 9);\n ux <<= 1 - ex;\n } else {\n ux &= -1 >> 9;\n ux |= 1 << 23;\n }\n if (!ey) {\n ey -= builtin_clz(uy << 9);\n uy <<= 1 - ey;\n } else {\n uy &= u32(-1) >> 9;\n uy |= 1 << 23;\n }\n while (ex > ey) {\n if (ux >= uy) {\n if (ux == uy) return 0 * x;\n ux -= uy;\n }\n ux <<= 1;\n --ex;\n }\n if (ux >= uy) {\n if (ux == uy) return 0 * x;\n ux -= uy;\n }\n // for (; !(ux >> 23); ux <<= 1) --ex;\n var shift = builtin_clz(ux << 8);\n ex -= shift;\n ux <<= shift;\n if (ex > 0) {\n ux -= 1 << 23;\n ux |= ex << 23;\n } else {\n ux >>= -ex + 1;\n }\n return reinterpret(ux | sm);\n }\n\n export function rem(x: f32, y: f32): f32 { // see: musl/src/math/remquof.c\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n var ex = i32(ux >> 23 & 0xFF);\n var ey = i32(uy >> 23 & 0xFF);\n var uxi = ux;\n if (uy << 1 == 0 || ex == 0xFF || isNaN(y)) return (x * y) / (x * y);\n if (ux << 1 == 0) return x;\n if (!ex) {\n ex -= builtin_clz(uxi << 9);\n uxi <<= 1 - ex;\n } else {\n uxi &= u32(-1) >> 9;\n uxi |= 1 << 23;\n }\n if (!ey) {\n ey -= builtin_clz(uy << 9);\n uy <<= 1 - ey;\n } else {\n uy &= u32(-1) >> 9;\n uy |= 1 << 23;\n }\n var q = 0;\n do {\n if (ex < ey) {\n if (ex + 1 == ey) break; // goto end\n return x;\n }\n while (ex > ey) {\n if (uxi >= uy) {\n uxi -= uy;\n ++q;\n }\n uxi <<= 1;\n q <<= 1;\n --ex;\n }\n if (uxi >= uy) {\n uxi -= uy;\n ++q;\n }\n if (uxi == 0) ex = -30;\n else {\n let shift = builtin_clz(uxi << 8);\n ex -= shift;\n uxi <<= shift;\n }\n break;\n } while (false);\n // end:\n if (ex > 0) {\n uxi -= 1 << 23;\n uxi |= ex << 23;\n } else {\n uxi >>= -ex + 1;\n }\n x = reinterpret(uxi);\n y = builtin_abs(y);\n var x2 = x + x;\n if (ex == ey || (ex + 1 == ey && (x2 > y || (x2 == y && bool(q & 1))))) {\n x -= y;\n // q++;\n }\n return ux < 0 ? -x : x;\n }\n\n export function sincos(x: f32): void { // see: musl/tree/src/math/sincosf.c\n const\n s1pio2 = reinterpret(0x3FF921FB54442D18), // 1 * M_PI_2\n s2pio2 = reinterpret(0x400921FB54442D18), // 2 * M_PI_2\n s3pio2 = reinterpret(0x4012D97C7F3321D2), // 3 * M_PI_2\n s4pio2 = reinterpret(0x401921FB54442D18); // 4 * M_PI_2\n\n var ux = reinterpret(x);\n var sign = ux >> 31;\n ux &= 0x7FFFFFFF;\n\n if (ux <= 0x3F490FDA) { // |x| ~<= π/4\n if (ux < 0x39800000) { // |x| < 2**-12\n sincos_sin = x;\n sincos_cos = 1;\n return;\n }\n sincos_sin = sin_kernf(x);\n sincos_cos = cos_kernf(x);\n return;\n }\n if (ASC_SHRINK_LEVEL < 1) {\n if (ux <= 0x407B53D1) { // |x| ~<= 5π/4\n if (ux <= 0x4016CBE3) { // |x| ~<= 3π/4\n if (sign) {\n sincos_sin = -cos_kernf(x + s1pio2);\n sincos_cos = sin_kernf(x + s1pio2);\n } else {\n sincos_sin = cos_kernf(s1pio2 - x);\n sincos_cos = sin_kernf(s1pio2 - x);\n }\n return;\n }\n // -sin(x + c) is not correct if x+c could be 0: -0 vs +0\n sincos_sin = -sin_kernf(sign ? x + s2pio2 : x - s2pio2);\n sincos_cos = -cos_kernf(sign ? x + s2pio2 : x - s2pio2);\n return;\n }\n if (ux <= 0x40E231D5) { // |x| ~<= 9π/4\n if (ux <= 0x40AFEDDF) { // |x| ~<= 7π/4\n if (sign) {\n sincos_sin = cos_kernf(x + s3pio2);\n sincos_cos = -sin_kernf(x + s3pio2);\n } else {\n sincos_sin = -cos_kernf(x - s3pio2);\n sincos_cos = sin_kernf(x - s3pio2);\n }\n return;\n }\n sincos_sin = sin_kernf(sign ? x + s4pio2 : x - s4pio2);\n sincos_cos = cos_kernf(sign ? x + s4pio2 : x - s4pio2);\n return;\n }\n }\n // sin(Inf or NaN) is NaN\n if (ux >= 0x7F800000) {\n let xx = x - x;\n sincos_sin = xx;\n sincos_cos = xx;\n return;\n }\n // general argument reduction needed\n var n = rempio2f(x, ux, sign);\n var y = rempio2f_y;\n var s = sin_kernf(y);\n var c = cos_kernf(y);\n var sin = s, cos = c;\n if (n & 1) {\n sin = c;\n cos = -s;\n }\n if (n & 2) {\n sin = -sin;\n cos = -cos;\n }\n sincos_sin = sin;\n sincos_cos = cos;\n }\n}\n\nexport function ipow32(x: i32, e: i32): i32 {\n var out = 1;\n if (ASC_SHRINK_LEVEL < 1) {\n if (x == 2) {\n return select(1 << e, 0, e < 32);\n }\n if (e <= 0) {\n if (x == -1) return select(-1, 1, e & 1);\n return i32(e == 0) | i32(x == 1);\n }\n else if (e == 1) return x;\n else if (e == 2) return x * x;\n else if (e < 32) {\n let log = 32 - clz(e);\n // 32 = 2 ^ 5, so need only five cases.\n // But some extra cases needs for properly overflowing\n switch (log) {\n case 5: {\n if (e & 1) out *= x;\n e >>>= 1;\n x *= x;\n }\n case 4: {\n if (e & 1) out *= x;\n e >>>= 1;\n x *= x;\n }\n case 3: {\n if (e & 1) out *= x;\n e >>>= 1;\n x *= x;\n }\n case 2: {\n if (e & 1) out *= x;\n e >>>= 1;\n x *= x;\n }\n case 1: {\n if (e & 1) out *= x;\n }\n }\n return out;\n }\n }\n while (e) {\n if (e & 1) out *= x;\n e >>>= 1;\n x *= x;\n }\n return out;\n}\n\nexport function ipow64(x: i64, e: i64): i64 {\n var out: i64 = 1;\n if (ASC_SHRINK_LEVEL < 1) {\n if (x == 2) {\n return select(1 << e, 0, e < 64);\n }\n if (e <= 0) {\n if (x == -1) return select(-1, 1, e & 1);\n return i64(e == 0) | i64(x == 1);\n }\n else if (e == 1) return x;\n else if (e == 2) return x * x;\n else if (e < 64) {\n let log = 64 - clz(e);\n // 64 = 2 ^ 6, so need only six cases.\n // But some extra cases needs for properly overflowing\n switch (log) {\n case 6: {\n if (e & 1) out *= x;\n e >>>= 1;\n x *= x;\n }\n case 5: {\n if (e & 1) out *= x;\n e >>>= 1;\n x *= x;\n }\n case 4: {\n if (e & 1) out *= x;\n e >>>= 1;\n x *= x;\n }\n case 3: {\n if (e & 1) out *= x;\n e >>>= 1;\n x *= x;\n }\n case 2: {\n if (e & 1) out *= x;\n e >>>= 1;\n x *= x;\n }\n case 1: {\n if (e & 1) out *= x;\n }\n }\n return out;\n }\n }\n while (e) {\n if (e & 1) out *= x;\n e >>>= 1;\n x *= x;\n }\n return out;\n}\n\n/*\nTODO:\nIn compile time if only exponent is constant we could replace ipow32/ipow64 by shortest addition chains\nwhich usually faster than exponentiation by squaring\n\nfor ipow32 and e < 32:\n\nlet b: i32, c: i32, d: i32, h: i32, k: i32, g: i32;\nswitch (e) {\n case 1: return x;\n case 2: return x * x;\n case 3: return x * x * x;\n case 4: return (b = x * x) * b;\n case 5: return (b = x * x) * b * x;\n case 6: return (b = x * x) * b * b;\n case 7: return (b = x * x) * b * b * x;\n case 8: return (d = (b = x * x) * b) * d;\n case 9: return (c = x * x * x) * c * c;\n case 10: return (d = (b = x * x) * b) * d * b;\n case 11: return (d = (b = x * x) * b) * d * b * x;\n case 12: return (d = (b = x * x) * b) * d * d;\n case 13: return (d = (b = x * x) * b) * d * d * x;\n case 14: return (d = (b = x * x) * b) * d * d * b;\n case 15: return (k = (b = x * x) * b * x) * k * k;\n case 16: return (h = (d = (b = x * x) * b) * d) * h;\n case 17: return (h = (d = (b = x * x) * b) * d) * h * x;\n case 18: return (h = (d = (b = x * x) * b) * d * x) * h;\n case 19: return (h = (d = (b = x * x) * b) * d * x) * h * x;\n case 20: return (h = (k = (b = x * x) * b * x) * k) * h;\n case 21: return (h = (k = (b = x * x) * b * x) * k) * h * x;\n case 22: return (g = (h = (k = (b = x * x) * b * x) * k) * x) * g;\n case 23: return (h = (d = (c = (b = x * x) * x) * b) * d) * h * c;\n case 24: return (h = (d = (c = x * x * x) * c) * d) * h;\n case 25: return (h = (d = (c = x * x * x) * c) * d) * h * x;\n case 26: return (g = (h = (d = (c = x * x * x) * c) * d) * x) * g;\n case 27: return (h = (d = (c = x * x * x) * c) * d) * h * c;\n case 28: return (h = (d = (c = x * x * x) * c * x) * d) * h;\n case 29: return (h = (d = (c = x * x * x) * c * x) * d) * h * x;\n case 30: return (h = (d = (c = x * x * x) * c) * d * c) * h;\n case 31: return (h = (d = (c = x * x * x) * c) * d * c) * h * x;\n}\n\nfor ipow64: TODO\nswitch (e) {\n case 32:\n ...\n case 63:\n}\n*/\n","// This file is shared with the compiler and must remain portable\n\n/** Runtime types. */\nexport enum Runtime {\n /** Simple bump allocator without GC. */\n Stub = 0,\n /** Stop the world semi-automatic GC. */\n Minimal = 1,\n /** incremental GC. */\n Incremental = 2,\n}\n","import { compareImpl } from \"./string\";\n\ntype Comparator = (a: T, b: T) => i32;\n\n// @ts-ignore: decorator\n@lazy @inline const EMPTY = u32.MAX_VALUE;\n// @ts-ignore: decorator\n@inline const INSERTION_SORT_THRESHOLD = 48;\n// @ts-ignore: decorator\n@inline const MIN_RUN_LENGTH = 32;\n\n// @ts-ignore: decorator\n@inline\nfunction log2u(n: u32): u32 {\n return 31 - clz(n);\n}\n\n// @ts-ignore: decorator\n@inline\nexport function COMPARATOR(): Comparator {\n if (isInteger()) {\n if (isSigned() && sizeof() <= 4) {\n return (a, b) => i32(a) - i32(b);\n } else {\n return (a, b) => i32(a > b) - i32(a < b);\n }\n } else if (isFloat()) {\n if (sizeof() == 4) {\n return (a, b) => {\n var ia = reinterpret(f32(a));\n var ib = reinterpret(f32(b));\n ia ^= ia >> 31 >>> 1;\n ib ^= ib >> 31 >>> 1;\n return i32(ia > ib) - i32(ia < ib);\n };\n } else {\n return (a, b) => {\n var ia = reinterpret(f64(a));\n var ib = reinterpret(f64(b));\n ia ^= ia >> 63 >>> 1;\n ib ^= ib >> 63 >>> 1;\n return i32(ia > ib) - i32(ia < ib);\n };\n }\n } else if (isString()) {\n return (a, b) => {\n if (\n changetype(a) == changetype(b) ||\n changetype(a) == 0 ||\n changetype(b) == 0\n ) return 0;\n var alen = changetype(a).length;\n var blen = changetype(b).length;\n if (!(alen | blen)) return 0;\n if (!alen) return -1;\n if (!blen) return 1;\n let res = compareImpl(\n changetype(a), 0,\n changetype(b), 0,\n min(alen, blen)\n );\n return res ? res : alen - blen;\n };\n } else {\n return (a, b) => i32(a > b) - i32(a < b);\n }\n}\n\n// Power Sort implementation (stable) from paper \"Nearly-Optimal Mergesorts\"\n// https://arxiv.org/pdf/1805.04154.pdf\n// This method usually outperform TimSort.\n// TODO: refactor c >>> 31 to c < 0 when binaryen will support this opt\nexport function SORT(\n ptr: usize,\n len: i32,\n comparator: Comparator\n): void {\n if (len <= INSERTION_SORT_THRESHOLD) {\n if (len <= 1) return;\n if (ASC_SHRINK_LEVEL < 1) {\n switch (len) {\n case 3: {\n let a = load(ptr, 0);\n let b = load(ptr, 1 << alignof());\n let c = comparator(a, b) > 0;\n store(ptr, select(b, a, c), 0);\n a = select(a, b, c);\n b = load(ptr, 2 << alignof());\n c = comparator(a, b) > 0;\n store(ptr, select(b, a, c), 1 << alignof());\n store(ptr, select(a, b, c), 2 << alignof());\n }\n case 2: {\n let a = load(ptr, 0);\n let b = load(ptr, 1 << alignof());\n let c = comparator(a, b) > 0;\n store(ptr, select(b, a, c), 0);\n store(ptr, select(a, b, c), 1 << alignof());\n return;\n }\n }\n }\n insertionSort(ptr, 0, len - 1, 0, comparator);\n return;\n }\n\n var lgPlus2 = log2u(len) + 2;\n var lgPlus2Size = lgPlus2 << alignof();\n var leftRunStartBuf = __alloc(lgPlus2Size << 1);\n var leftRunEndBuf = leftRunStartBuf + lgPlus2Size;\n\n for (let i: u32 = 0; i < lgPlus2; ++i) {\n store(leftRunStartBuf + (i << alignof()), EMPTY);\n }\n\n var buffer = __alloc(len << alignof());\n\n var hi = len - 1;\n var endA = extendRunRight(ptr, 0, hi, comparator);\n var lenA = endA + 1;\n\n if (lenA < MIN_RUN_LENGTH) {\n endA = min(hi, MIN_RUN_LENGTH - 1);\n insertionSort(ptr, 0, endA, lenA, comparator);\n }\n\n var top: u32 = 0, startA = 0;\n while (endA < hi) {\n let startB = endA + 1;\n let endB = extendRunRight(ptr, startB, hi, comparator);\n let lenB = endB - startB + 1;\n\n if (lenB < MIN_RUN_LENGTH) {\n endB = min(hi, startB + MIN_RUN_LENGTH - 1);\n insertionSort(ptr, startB, endB, lenB, comparator);\n }\n\n let k = nodePower(0, hi, startA, startB, endB);\n\n for (let i = top; i > k; --i) {\n let start = load(leftRunStartBuf + (i << alignof()));\n if (start != EMPTY) {\n mergeRuns(\n ptr,\n start,\n load(leftRunEndBuf + (i << alignof())) + 1,\n endA,\n buffer,\n comparator\n );\n startA = start;\n store(leftRunStartBuf + (i << alignof()), EMPTY);\n }\n }\n\n store(leftRunStartBuf + (k << alignof()), startA);\n store(leftRunEndBuf + (k << alignof()), endA);\n startA = startB;\n endA = endB;\n top = k;\n }\n\n for (let i = top; i != 0; --i) {\n let start = load(leftRunStartBuf + (i << alignof()));\n if (start != EMPTY) {\n mergeRuns(\n ptr,\n start,\n load(leftRunEndBuf + (i << alignof())) + 1,\n hi,\n buffer,\n comparator\n );\n }\n }\n // dealloc aux buffers\n __free(buffer);\n __free(leftRunStartBuf);\n}\n\nfunction insertionSort(\n ptr: usize,\n left: i32,\n right: i32,\n presorted: i32,\n comparator: Comparator\n): void {\n if (ASC_SHRINK_LEVEL >= 1) {\n // slightly improved original insertion sort\n for (let i = left + presorted; i <= right; ++i) {\n let j = i - 1;\n let a = load(ptr + (i << alignof()));\n while (j >= left) {\n let b = load(ptr + (j << alignof()));\n if (comparator(a, b) < 0) {\n store(ptr + (j << alignof()), b, 1 << alignof()); --j;\n } else break;\n }\n store(ptr + (j << alignof()), a, 1 << alignof());\n }\n } else {\n // even-odd two-way insertion sort which allow increase minRunLen\n let range = right - left + 1;\n let i = left + select(range & 1, presorted - ((range - presorted) & 1), presorted == 0);\n for (; i <= right; i += 2) {\n let a = load(ptr + (i << alignof()), 0);\n let b = load(ptr + (i << alignof()), 1 << alignof());\n let min = b, max = a;\n if (comparator(a, b) <= 0) {\n min = a, max = b;\n }\n let j = i - 1;\n while (j >= left) {\n a = load(ptr + (j << alignof()));\n if (comparator(a, max) > 0) {\n store(ptr + (j << alignof()), a, 2 << alignof()); --j;\n } else break;\n }\n store(ptr + (j << alignof()), max, 2 << alignof());\n while (j >= left) {\n a = load(ptr + (j << alignof()));\n if (comparator(a, min) > 0) {\n store(ptr + (j << alignof()), a, 1 << alignof()); --j;\n } else break;\n }\n store(ptr + (j << alignof()), min, 1 << alignof());\n }\n }\n}\n\nfunction nodePower(left: u32, right: u32, startA: u32, startB: u32, endB: u32): u32 {\n var n: u64 = right - left + 1;\n var s = startB - (left << 1);\n var l = startA + s;\n var r = endB + s + 1;\n var a = (l << 30) / n;\n var b = (r << 30) / n;\n return clz((a ^ b));\n}\n\nfunction extendRunRight(\n ptr: usize,\n i: i32,\n right: i32,\n comparator: Comparator\n): i32 {\n if (i == right) return i;\n var j = i;\n if (comparator(\n load(ptr + ( j << alignof())),\n load(ptr + (++j << alignof()))\n ) > 0) {\n while (\n j < right &&\n (comparator(\n load(ptr + (j << alignof()), 1 << alignof()),\n load(ptr + (j << alignof()))\n ) >>> 31) // < 0\n ) ++j;\n // reverse\n let k = j;\n while (i < k) {\n let tmp = load(ptr + (i << alignof()));\n store(ptr + (i << alignof()), load(ptr + (k << alignof()))); ++i;\n store(ptr + (k << alignof()), tmp); --k;\n }\n } else {\n while (\n j < right &&\n comparator(\n load(ptr + (j << alignof()), 1 << alignof()),\n load(ptr + (j << alignof()))\n ) >= 0\n ) ++j;\n }\n return j;\n}\n\n// Merges arr[l..m - 1] and arr[m..r]\nfunction mergeRuns(\n ptr: usize,\n l: i32,\n m: i32,\n r: i32,\n buffer: usize,\n comparator: Comparator\n): void {\n --m;\n var i: i32, j: i32, t = r + m;\n for (i = m + 1; i > l; --i) {\n store(\n buffer + ((i - 1) << alignof()),\n load(ptr + ((i - 1) << alignof()))\n );\n }\n for (j = m; j < r; ++j) {\n store(\n buffer + ((t - j) << alignof()),\n load(ptr + (j << alignof()), 1 << alignof())\n );\n }\n for (let k = l; k <= r; ++k) {\n let a = load(buffer + (j << alignof()));\n let b = load(buffer + (i << alignof()));\n if (comparator(a, b) < 0) {\n store(ptr + (k << alignof()), a);\n --j;\n } else {\n store(ptr + (k << alignof()), b);\n ++i;\n }\n }\n}\n","/// \n\nimport { BLOCK_MAXSIZE } from \"./rt/common\";\nimport { Runtime } from \"shared/runtime\";\nimport { COMPARATOR, SORT } from \"./util/sort\";\nimport { REVERSE, FILL } from \"./util/bytes\";\nimport { joinBooleanArray, joinIntegerArray, joinFloatArray, joinStringArray, joinReferenceArray } from \"./util/string\";\nimport { idof, isArray as builtin_isArray } from \"./builtins\";\nimport { E_INDEXOUTOFRANGE, E_INVALIDLENGTH, E_EMPTYARRAY, E_HOLEYARRAY } from \"./util/error\";\n\n// @ts-ignore: decorator\n@inline @lazy const MIN_SIZE: usize = 8;\n\n/** Ensures that the given array has _at least_ the specified backing size. */\nfunction ensureCapacity(array: usize, newSize: usize, alignLog2: u32, canGrow: bool = true): void {\n // Depends on the fact that Arrays mimic ArrayBufferView\n var oldCapacity = changetype(array).byteLength;\n if (newSize > oldCapacity >>> alignLog2) {\n if (newSize > BLOCK_MAXSIZE >>> alignLog2) throw new RangeError(E_INVALIDLENGTH);\n let oldData = changetype(changetype(array).buffer);\n // Grows old capacity by factor of two.\n // Make sure we don't reach BLOCK_MAXSIZE for new growed capacity.\n let newCapacity = max(newSize, MIN_SIZE) << alignLog2;\n if (canGrow) newCapacity = max(min(oldCapacity << 1, BLOCK_MAXSIZE), newCapacity);\n let newData = __renew(oldData, newCapacity);\n // __new / __renew already init memory range as zeros in Incremental runtime.\n // So try to avoid this.\n if (ASC_RUNTIME != Runtime.Incremental) {\n memory.fill(newData + oldCapacity, 0, newCapacity - oldCapacity);\n }\n if (newData != oldData) { // oldData has been free'd\n store(array, newData, offsetof(\"buffer\"));\n store(array, newData, offsetof(\"dataStart\"));\n __link(array, changetype(newData), false);\n }\n store(array, newCapacity, offsetof(\"byteLength\"));\n }\n}\n\nexport class Array {\n [key: number]: T;\n\n // Mimicking ArrayBufferView isn't strictly necessary here but is done to allow glue code\n // to work with typed and normal arrays interchangeably. Technically, normal arrays do not need\n // `dataStart` (equals `buffer`) and `byteLength` (equals computed `buffer.byteLength`), but the\n // block is 16 bytes anyway so it's fine to have a couple extra fields in there.\n\n private buffer: ArrayBuffer;\n @unsafe readonly dataStart: usize;\n private byteLength: i32; // Uses here as capacity\n\n // Also note that Array with non-nullable T must guard against uninitialized null values\n // whenever an element is accessed. Otherwise, the compiler wouldn't be able to guarantee\n // type-safety anymore. For lack of a better word, such an array is \"holey\".\n\n private length_: i32;\n\n static isArray(value: U): bool {\n return isReference() ? changetype(value) != 0 && builtin_isArray(value) : false;\n }\n\n static create(capacity: i32 = 0): Array {\n WARNING(\"'Array.create' is deprecated. Use 'new Array' instead, making sure initial elements are initialized.\");\n var array = new Array(capacity);\n array.length = 0;\n return array;\n }\n\n constructor(length: i32 = 0) {\n if (length > BLOCK_MAXSIZE >>> alignof()) throw new RangeError(E_INVALIDLENGTH);\n // reserve capacity for at least MIN_SIZE elements\n var bufferSize = max(length, MIN_SIZE) << alignof();\n var buffer = changetype(__new(bufferSize, idof()));\n if (ASC_RUNTIME != Runtime.Incremental) {\n memory.fill(changetype(buffer), 0, bufferSize);\n }\n this.buffer = buffer; // links\n this.dataStart = changetype(buffer);\n this.byteLength = bufferSize;\n this.length_ = length;\n }\n\n get length(): i32 {\n return this.length_;\n }\n\n set length(newLength: i32) {\n ensureCapacity(changetype(this), newLength, alignof(), false);\n this.length_ = newLength;\n }\n\n every(fn: (value: T, index: i32, array: Array) => bool): bool {\n for (let i = 0, len = this.length_; i < min(len, this.length_); ++i) {\n if (!fn(load(this.dataStart + (i << alignof())), i, this)) return false;\n }\n return true;\n }\n\n findIndex(fn: (value: T, index: i32, array: Array) => bool): i32 {\n for (let i = 0, len = this.length_; i < min(len, this.length_); ++i) {\n if (fn(load(this.dataStart + (i << alignof())), i, this)) return i;\n }\n return -1;\n }\n\n findLastIndex(fn: (value: T, index: i32, array: Array) => bool): i32 {\n for (let i = this.length_ - 1; i >= 0; --i) {\n if (fn(load(this.dataStart + (i << alignof())), i, this)) return i;\n }\n return -1;\n }\n\n @operator(\"[]\") private __get(index: i32): T {\n if (index >= this.length_) throw new RangeError(E_INDEXOUTOFRANGE);\n var value = load(this.dataStart + (index << alignof()));\n if (isReference()) {\n if (!isNullable()) {\n if (!changetype(value)) throw new Error(E_HOLEYARRAY);\n }\n }\n return value;\n }\n\n @unsafe @operator(\"{}\") private __uget(index: i32): T {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator(\"[]=\") private __set(index: i32, value: T): void {\n if (index >= this.length_) {\n if (index < 0) throw new RangeError(E_INDEXOUTOFRANGE);\n ensureCapacity(changetype(this), index + 1, alignof());\n this.length_ = index + 1;\n }\n this.__uset(index, value);\n }\n\n @unsafe @operator(\"{}=\") private __uset(index: i32, value: T): void {\n store(this.dataStart + (index << alignof()), value);\n if (isManaged()) {\n __link(changetype(this), changetype(value), true);\n }\n }\n\n at(index: i32): T {\n var len = this.length_;\n index += select(0, len, index >= 0);\n if (index >= len) throw new RangeError(E_INDEXOUTOFRANGE);\n var value = load(this.dataStart + (index << alignof()));\n if (isReference()) {\n if (!isNullable()) {\n if (!changetype(value)) throw new Error(E_HOLEYARRAY);\n }\n }\n return value;\n }\n\n fill(value: T, start: i32 = 0, end: i32 = i32.MAX_VALUE): Array {\n if (isManaged()) {\n FILL(this.dataStart, this.length_, changetype(value), start, end);\n __link(changetype(this), changetype(value), false);\n } else {\n FILL(this.dataStart, this.length_, value, start, end);\n }\n return this;\n }\n\n includes(value: T, fromIndex: i32 = 0): bool {\n if (isFloat()) {\n let len = this.length_;\n if (len == 0 || fromIndex >= len) return false;\n if (fromIndex < 0) fromIndex = max(len + fromIndex, 0);\n let ptr = this.dataStart;\n while (fromIndex < len) {\n let elem = load(ptr + (fromIndex << alignof()));\n // @ts-ignore\n if (elem == value || isNaN(elem) & isNaN(value)) return true;\n ++fromIndex;\n }\n return false;\n } else {\n return this.indexOf(value, fromIndex) >= 0;\n }\n }\n\n indexOf(value: T, fromIndex: i32 = 0): i32 {\n var len = this.length_;\n if (len == 0 || fromIndex >= len) return -1;\n if (fromIndex < 0) fromIndex = max(len + fromIndex, 0);\n var ptr = this.dataStart;\n while (fromIndex < len) {\n if (load(ptr + (fromIndex << alignof())) == value) return fromIndex;\n ++fromIndex;\n }\n return -1;\n }\n\n lastIndexOf(value: T, fromIndex: i32 = this.length_): i32 {\n var len = this.length_;\n if (len == 0) return -1;\n if (fromIndex < 0) fromIndex = len + fromIndex;\n else if (fromIndex >= len) fromIndex = len - 1;\n var ptr = this.dataStart;\n while (fromIndex >= 0) {\n if (load(ptr + (fromIndex << alignof())) == value) return fromIndex;\n --fromIndex;\n }\n return -1;\n }\n\n push(value: T): i32 {\n var oldLen = this.length_;\n var len = oldLen + 1;\n ensureCapacity(changetype(this), len, alignof());\n if (isManaged()) {\n store(this.dataStart + (oldLen << alignof()), changetype(value));\n __link(changetype(this), changetype(value), true);\n } else {\n store(this.dataStart + (oldLen << alignof()), value);\n }\n this.length_ = len;\n return len;\n }\n\n concat(other: Array): Array {\n var thisLen = this.length_;\n var otherLen = other.length_;\n var outLen = thisLen + otherLen;\n if (outLen > BLOCK_MAXSIZE >>> alignof()) throw new Error(E_INVALIDLENGTH);\n var out = changetype>(__newArray(outLen, alignof(), idof>()));\n var outStart = out.dataStart;\n var thisSize = thisLen << alignof();\n if (isManaged()) {\n let thisStart = this.dataStart;\n for (let offset: usize = 0; offset < thisSize; offset += sizeof()) {\n let ref = load(thisStart + offset);\n store(outStart + offset, ref);\n __link(changetype(out), ref, true);\n }\n outStart += thisSize;\n let otherStart = other.dataStart;\n let otherSize = otherLen << alignof();\n for (let offset: usize = 0; offset < otherSize; offset += sizeof()) {\n let ref = load(otherStart + offset);\n store(outStart + offset, ref);\n __link(changetype(out), ref, true);\n }\n } else {\n memory.copy(outStart, this.dataStart, thisSize);\n memory.copy(outStart + thisSize, other.dataStart, otherLen << alignof());\n }\n return out;\n }\n\n copyWithin(target: i32, start: i32, end: i32 = i32.MAX_VALUE): Array {\n var ptr = this.dataStart;\n var len = this.length_;\n\n end = min(end, len);\n\n var to = target < 0 ? max(len + target, 0) : min(target, len);\n var from = start < 0 ? max(len + start, 0) : min(start, len);\n var last = end < 0 ? max(len + end, 0) : min(end, len);\n var count = min(last - from, len - to);\n\n memory.copy( // is memmove\n ptr + (to << alignof()),\n ptr + (from << alignof()),\n count << alignof()\n );\n return this;\n }\n\n pop(): T {\n var len = this.length_;\n if (len < 1) throw new RangeError(E_EMPTYARRAY);\n var val = load(this.dataStart + ((--len) << alignof()));\n this.length_ = len;\n return val;\n }\n\n forEach(fn: (value: T, index: i32, array: Array) => void): void {\n for (let i = 0, len = this.length_; i < min(len, this.length_); ++i) {\n fn(load(this.dataStart + (i << alignof())), i, this);\n }\n }\n\n map(fn: (value: T, index: i32, array: Array) => U): Array {\n var len = this.length_;\n var out = changetype>(__newArray(len, alignof(), idof>()));\n var outStart = out.dataStart;\n for (let i = 0; i < min(len, this.length_); ++i) {\n let result = fn(load(this.dataStart + (i << alignof())), i, this);\n store(outStart + (i << alignof()), result);\n if (isManaged()) {\n __link(changetype(out), changetype(result), true);\n }\n }\n return out;\n }\n\n filter(fn: (value: T, index: i32, array: Array) => bool): Array {\n var result = changetype>(__newArray(0, alignof(), idof>()));\n for (let i = 0, len = this.length_; i < min(len, this.length_); ++i) {\n let value = load(this.dataStart + (i << alignof()));\n if (fn(value, i, this)) result.push(value);\n }\n return result;\n }\n\n reduce(\n fn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U,\n initialValue: U\n ): U {\n var acc = initialValue;\n for (let i = 0, len = this.length_; i < min(len, this.length_); ++i) {\n acc = fn(acc, load(this.dataStart + (i << alignof())), i, this);\n }\n return acc;\n }\n\n reduceRight(\n fn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U,\n initialValue: U\n ): U {\n var acc = initialValue;\n for (let i = this.length_ - 1; i >= 0; --i) {\n acc = fn(acc, load(this.dataStart + (i << alignof())), i, this);\n }\n return acc;\n }\n\n shift(): T {\n var len = this.length_;\n if (len < 1) throw new RangeError(E_EMPTYARRAY);\n var base = this.dataStart;\n var element = load(base);\n var lastIndex = len - 1;\n memory.copy(\n base,\n base + sizeof(),\n lastIndex << alignof()\n );\n if (isReference()) {\n store(base + (lastIndex << alignof()), 0);\n } else {\n // @ts-ignore\n store(base + (lastIndex << alignof()), 0);\n }\n this.length_ = lastIndex;\n return element;\n }\n\n some(fn: (value: T, index: i32, array: Array) => bool): bool {\n for (let i = 0, len = this.length_; i < min(len, this.length_); ++i) {\n if (fn(load(this.dataStart + (i << alignof())), i, this)) return true;\n }\n return false;\n }\n\n unshift(value: T): i32 {\n var len = this.length_ + 1;\n ensureCapacity(changetype(this), len, alignof());\n var ptr = this.dataStart;\n memory.copy(\n ptr + sizeof(),\n ptr,\n (len - 1) << alignof()\n );\n store(ptr, value);\n if (isManaged()) {\n __link(changetype(this), changetype(value), true);\n }\n this.length_ = len;\n return len;\n }\n\n slice(start: i32 = 0, end: i32 = i32.MAX_VALUE): Array {\n var len = this.length_;\n start = start < 0 ? max(start + len, 0) : min(start, len);\n end = end < 0 ? max(end + len, 0) : min(end , len);\n len = max(end - start, 0);\n var slice = changetype>(__newArray(len, alignof(), idof>()));\n var sliceBase = slice.dataStart;\n var thisBase = this.dataStart + (start << alignof());\n if (isManaged()) {\n let off = 0;\n let end = len << alignof();\n while (off < end) {\n let ref = load(thisBase + off);\n store(sliceBase + off, ref);\n __link(changetype(slice), ref, true);\n off += sizeof();\n }\n } else {\n memory.copy(sliceBase, thisBase, len << alignof());\n }\n return slice;\n }\n\n splice(start: i32, deleteCount: i32 = i32.MAX_VALUE): Array {\n var len = this.length_;\n start = start < 0 ? max(len + start, 0) : min(start, len);\n deleteCount = max(min(deleteCount, len - start), 0);\n var result = changetype>(__newArray(deleteCount, alignof(), idof>()));\n var resultStart = result.dataStart;\n var thisStart = this.dataStart;\n var thisBase = thisStart + (start << alignof());\n memory.copy(\n resultStart,\n thisBase,\n deleteCount << alignof()\n );\n var offset = start + deleteCount;\n if (len != offset) {\n memory.copy(\n thisBase,\n thisStart + (offset << alignof()),\n (len - offset) << alignof()\n );\n }\n this.length_ = len - deleteCount;\n return result;\n }\n\n reverse(): Array {\n REVERSE(this.dataStart, this.length_);\n return this;\n }\n\n sort(comparator: (a: T, b: T) => i32 = COMPARATOR()): Array {\n SORT(this.dataStart, this.length_, comparator);\n return this;\n }\n\n join(separator: string = \",\"): string {\n var ptr = this.dataStart;\n var len = this.length_;\n if (isBoolean()) return joinBooleanArray(ptr, len, separator);\n if (isInteger()) return joinIntegerArray(ptr, len, separator);\n if (isFloat()) return joinFloatArray(ptr, len, separator);\n\n if (ASC_SHRINK_LEVEL < 1) {\n if (isString()) return joinStringArray(ptr, len, separator);\n }\n // For rest objects and arrays use general join routine\n if (isReference()) return joinReferenceArray(ptr, len, separator);\n ERROR(\"unspported element type\");\n return unreachable();\n }\n\n flat(): T {\n if (!isArray()) {\n ERROR(\"Cannot call flat() on Array where T is not an Array.\");\n }\n // Get the length and data start values\n var ptr = this.dataStart;\n var len = this.length_;\n\n // calculate the end size with an initial pass\n var size = 0;\n for (let i = 0; i < len; ++i) {\n let child = load(ptr + (i << alignof()));\n size += child == 0 ? 0 : load(child, offsetof(\"length_\"));\n }\n\n // calculate the byteLength of the resulting backing ArrayBuffer\n const align = alignof>();\n var byteLength = size << align;\n var outBuffer = changetype(__new(byteLength, idof()));\n\n // create the return value and initialize it\n var outArray = changetype(__new(offsetof(), idof()));\n store(changetype(outArray), size, offsetof(\"length_\"));\n\n // byteLength, dataStart, and buffer are all readonly\n store(changetype(outArray), byteLength, offsetof(\"byteLength\"));\n store(changetype(outArray), changetype(outBuffer), offsetof(\"dataStart\"));\n store(changetype(outArray), changetype(outBuffer), offsetof(\"buffer\"));\n __link(changetype(outArray), changetype(outBuffer), false);\n\n // set the elements\n var resultOffset: usize = 0;\n for (let i = 0; i < len; ++i) { // for each child\n let child = load(ptr + (i << alignof()));\n\n // ignore null arrays\n if (!child) continue;\n\n // copy the underlying buffer data to the result buffer\n let childDataLength = load(child, offsetof(\"length_\")) << align;\n memory.copy(\n changetype(outBuffer) + resultOffset,\n load(child, offsetof(\"dataStart\")),\n childDataLength\n );\n\n // advance the result length\n resultOffset += childDataLength;\n }\n\n // if the `valueof` type is managed, we must link each reference\n if (isManaged>()) {\n for (let i = 0; i < size; ++i) {\n let ref = load(changetype(outBuffer) + (i << usize(alignof>())));\n __link(changetype(outBuffer), ref, true);\n }\n }\n\n return outArray;\n }\n\n toString(): string {\n return this.join();\n }\n\n // RT integration\n\n @unsafe private __visit(cookie: u32): void {\n if (isManaged()) {\n let cur = this.dataStart;\n let end = cur + (this.length_ << alignof());\n while (cur < end) {\n let val = load(cur);\n if (val) __visit(val, cookie);\n cur += sizeof();\n }\n }\n __visit(changetype(this.buffer), cookie);\n }\n}\n","// Common error messages for use across the standard library. Keeping error messages compact\n// and reusing them where possible ensures minimal static data in binaries.\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_INDEXOUTOFRANGE: string = \"Index out of range\";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_VALUEOUTOFRANGE: string = \"Value out of range\";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_INVALIDLENGTH: string = \"Invalid length\";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_EMPTYARRAY: string = \"Array is empty\";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_HOLEYARRAY: string = \"Element type must be nullable if array is holey\";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_NOTIMPLEMENTED: string = \"Not implemented\";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_KEYNOTFOUND: string = \"Key does not exist\";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_ALLOCATION_TOO_LARGE: string = \"Allocation too large\";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_ALREADY_PINNED: string = \"Object already pinned\";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_NOT_PINNED: string = \"Object is not pinned\";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_URI_MALFORMED: string = \"URI malformed\";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_INVALIDDATE: string = \"Invalid Date\";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_UNPAIRED_SURROGATE: string = \"Unpaired surrogate\";\n"]} \ No newline at end of file diff --git a/packages/noise/build/release.wat b/packages/noise/build/release.wat new file mode 100644 index 0000000000..b5e4b15e78 --- /dev/null +++ b/packages/noise/build/release.wat @@ -0,0 +1,468 @@ +(module + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_f64_f64_f64_=>_f64 (func (param i32 f64 f64 f64) (result f64))) + (type $i32_i32_i32_i32_=>_f64 (func (param i32 i32 i32 i32) (result f64))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 19660)) + (memory $0 1) + (data (i32.const 1036) "\1c\08") + (data (i32.const 1053) "\08\00\00\97\00\00\00\a0\00\00\00\89\00\00\00[\00\00\00Z\00\00\00\0f\00\00\00\83\00\00\00\r\00\00\00\c9\00\00\00_\00\00\00`\00\00\005\00\00\00\c2\00\00\00\e9\00\00\00\07\00\00\00\e1\00\00\00\8c\00\00\00$\00\00\00g\00\00\00\1e\00\00\00E\00\00\00\8e\00\00\00\08\00\00\00c\00\00\00%\00\00\00\f0\00\00\00\15\00\00\00\n\00\00\00\17\00\00\00\be\00\00\00\06\00\00\00\94\00\00\00\f7\00\00\00x\00\00\00\ea\00\00\00K\00\00\00\00\00\00\00\1a\00\00\00\c5\00\00\00>\00\00\00^\00\00\00\fc\00\00\00\db\00\00\00\cb\00\00\00u\00\00\00#\00\00\00\0b\00\00\00 \00\00\009\00\00\00\b1\00\00\00!\00\00\00X\00\00\00\ed\00\00\00\95\00\00\008\00\00\00W\00\00\00\ae\00\00\00\14\00\00\00}\00\00\00\88\00\00\00\ab\00\00\00\a8\00\00\00D\00\00\00\af\00\00\00J\00\00\00\a5\00\00\00G\00\00\00\86\00\00\00\8b\00\00\000\00\00\00\1b\00\00\00\a6\00\00\00M\00\00\00\92\00\00\00\9e\00\00\00\e7\00\00\00S\00\00\00o\00\00\00\e5\00\00\00z\00\00\00<\00\00\00\d3\00\00\00\85\00\00\00\e6\00\00\00\dc\00\00\00i\00\00\00\\\00\00\00)\00\00\007\00\00\00.\00\00\00\f5\00\00\00(\00\00\00\f4\00\00\00f\00\00\00\8f\00\00\006\00\00\00A\00\00\00\19\00\00\00?\00\00\00\a1\00\00\00\01\00\00\00\d8\00\00\00P\00\00\00I\00\00\00\d1\00\00\00L\00\00\00\84\00\00\00\bb\00\00\00\d0\00\00\00Y\00\00\00\12\00\00\00\a9\00\00\00\c8\00\00\00\c4\00\00\00\87\00\00\00\82\00\00\00t\00\00\00\bc\00\00\00\9f\00\00\00V\00\00\00\a4\00\00\00d\00\00\00m\00\00\00\c6\00\00\00\ad\00\00\00\ba\00\00\00\03\00\00\00@\00\00\004\00\00\00\d9\00\00\00\e2\00\00\00\fa\00\00\00|\00\00\00{\00\00\00\05\00\00\00\ca\00\00\00&\00\00\00\93\00\00\00v\00\00\00~\00\00\00\ff\00\00\00R\00\00\00U\00\00\00\d4\00\00\00\cf\00\00\00\ce\00\00\00;\00\00\00\e3\00\00\00/\00\00\00\10\00\00\00:\00\00\00\11\00\00\00\b6\00\00\00\bd\00\00\00\1c\00\00\00*\00\00\00\df\00\00\00\b7\00\00\00\aa\00\00\00\d5\00\00\00w\00\00\00\f8\00\00\00\98\00\00\00\02\00\00\00,\00\00\00\9a\00\00\00\a3\00\00\00F\00\00\00\dd\00\00\00\99\00\00\00e\00\00\00\9b\00\00\00\a7\00\00\00+\00\00\00\ac\00\00\00\t\00\00\00\81\00\00\00\16\00\00\00\'\00\00\00\fd\00\00\00\13\00\00\00b\00\00\00l\00\00\00n\00\00\00O\00\00\00q\00\00\00\e0\00\00\00\e8\00\00\00\b2\00\00\00\b9\00\00\00p\00\00\00h\00\00\00\da\00\00\00\f6\00\00\00a\00\00\00\e4\00\00\00\fb\00\00\00\"\00\00\00\f2\00\00\00\c1\00\00\00\ee\00\00\00\d2\00\00\00\90\00\00\00\0c\00\00\00\bf\00\00\00\b3\00\00\00\a2\00\00\00\f1\00\00\00Q\00\00\003\00\00\00\91\00\00\00\eb\00\00\00\f9\00\00\00\0e\00\00\00\ef\00\00\00k\00\00\001\00\00\00\c0\00\00\00\d6\00\00\00\1f\00\00\00\b5\00\00\00\c7\00\00\00j\00\00\00\9d\00\00\00\b8\00\00\00T\00\00\00\cc\00\00\00\b0\00\00\00s\00\00\00y\00\00\002\00\00\00-\00\00\00\7f\00\00\00\04\00\00\00\96\00\00\00\fe\00\00\00\8a\00\00\00\ec\00\00\00\cd\00\00\00]\00\00\00\de\00\00\00r\00\00\00C\00\00\00\1d\00\00\00\18\00\00\00H\00\00\00\f3\00\00\00\8d\00\00\00\80\00\00\00\c3\00\00\00N\00\00\00B\00\00\00\d7\00\00\00=\00\00\00\9c\00\00\00\b4\00\00\00\97\00\00\00\a0\00\00\00\89\00\00\00[\00\00\00Z\00\00\00\0f\00\00\00\83\00\00\00\r\00\00\00\c9\00\00\00_\00\00\00`\00\00\005\00\00\00\c2\00\00\00\e9\00\00\00\07\00\00\00\e1\00\00\00\8c\00\00\00$\00\00\00g\00\00\00\1e\00\00\00E\00\00\00\8e\00\00\00\08\00\00\00c\00\00\00%\00\00\00\f0\00\00\00\15\00\00\00\n\00\00\00\17\00\00\00\be\00\00\00\06\00\00\00\94\00\00\00\f7\00\00\00x\00\00\00\ea\00\00\00K\00\00\00\00\00\00\00\1a\00\00\00\c5\00\00\00>\00\00\00^\00\00\00\fc\00\00\00\db\00\00\00\cb\00\00\00u\00\00\00#\00\00\00\0b\00\00\00 \00\00\009\00\00\00\b1\00\00\00!\00\00\00X\00\00\00\ed\00\00\00\95\00\00\008\00\00\00W\00\00\00\ae\00\00\00\14\00\00\00}\00\00\00\88\00\00\00\ab\00\00\00\a8\00\00\00D\00\00\00\af\00\00\00J\00\00\00\a5\00\00\00G\00\00\00\86\00\00\00\8b\00\00\000\00\00\00\1b\00\00\00\a6\00\00\00M\00\00\00\92\00\00\00\9e\00\00\00\e7\00\00\00S\00\00\00o\00\00\00\e5\00\00\00z\00\00\00<\00\00\00\d3\00\00\00\85\00\00\00\e6\00\00\00\dc\00\00\00i\00\00\00\\\00\00\00)\00\00\007\00\00\00.\00\00\00\f5\00\00\00(\00\00\00\f4\00\00\00f\00\00\00\8f\00\00\006\00\00\00A\00\00\00\19\00\00\00?\00\00\00\a1\00\00\00\01\00\00\00\d8\00\00\00P\00\00\00I\00\00\00\d1\00\00\00L\00\00\00\84\00\00\00\bb\00\00\00\d0\00\00\00Y\00\00\00\12\00\00\00\a9\00\00\00\c8\00\00\00\c4\00\00\00\87\00\00\00\82\00\00\00t\00\00\00\bc\00\00\00\9f\00\00\00V\00\00\00\a4\00\00\00d\00\00\00m\00\00\00\c6\00\00\00\ad\00\00\00\ba\00\00\00\03\00\00\00@\00\00\004\00\00\00\d9\00\00\00\e2\00\00\00\fa\00\00\00|\00\00\00{\00\00\00\05\00\00\00\ca\00\00\00&\00\00\00\93\00\00\00v\00\00\00~\00\00\00\ff\00\00\00R\00\00\00U\00\00\00\d4\00\00\00\cf\00\00\00\ce\00\00\00;\00\00\00\e3\00\00\00/\00\00\00\10\00\00\00:\00\00\00\11\00\00\00\b6\00\00\00\bd\00\00\00\1c\00\00\00*\00\00\00\df\00\00\00\b7\00\00\00\aa\00\00\00\d5\00\00\00w\00\00\00\f8\00\00\00\98\00\00\00\02\00\00\00,\00\00\00\9a\00\00\00\a3\00\00\00F\00\00\00\dd\00\00\00\99\00\00\00e\00\00\00\9b\00\00\00\a7\00\00\00+\00\00\00\ac\00\00\00\t\00\00\00\81\00\00\00\16\00\00\00\'\00\00\00\fd\00\00\00\13\00\00\00b\00\00\00l\00\00\00n\00\00\00O\00\00\00q\00\00\00\e0\00\00\00\e8\00\00\00\b2\00\00\00\b9\00\00\00p\00\00\00h\00\00\00\da\00\00\00\f6\00\00\00a\00\00\00\e4\00\00\00\fb\00\00\00\"\00\00\00\f2\00\00\00\c1\00\00\00\ee\00\00\00\d2\00\00\00\90\00\00\00\0c\00\00\00\bf\00\00\00\b3\00\00\00\a2\00\00\00\f1\00\00\00Q\00\00\003\00\00\00\91\00\00\00\eb\00\00\00\f9\00\00\00\0e\00\00\00\ef\00\00\00k\00\00\001\00\00\00\c0\00\00\00\d6\00\00\00\1f\00\00\00\b5\00\00\00\c7\00\00\00j\00\00\00\9d\00\00\00\b8\00\00\00T\00\00\00\cc\00\00\00\b0\00\00\00s\00\00\00y\00\00\002\00\00\00-\00\00\00\7f\00\00\00\04\00\00\00\96\00\00\00\fe\00\00\00\8a\00\00\00\ec\00\00\00\cd\00\00\00]\00\00\00\de\00\00\00r\00\00\00C\00\00\00\1d\00\00\00\18\00\00\00H\00\00\00\f3\00\00\00\8d\00\00\00\80\00\00\00\c3\00\00\00N\00\00\00B\00\00\00\d7\00\00\00=\00\00\00\9c\00\00\00\b4") + (data (i32.const 3116) ",") + (data (i32.const 3128) "\03\00\00\00\10\00\00\00 \04\00\00 \04\00\00\00\08\00\00\00\02") + (data (i32.const 3164) "<") + (data (i32.const 3176) "\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data (i32.const 3228) ",") + (data (i32.const 3240) "\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (export "perlin" (func $assembly/perlin/perlin)) + (export "memory" (memory $0)) + (func $~lib/array/Array#__get (param $0 i32) (result i32) + local.get $0 + i32.const 3148 + i32.load $0 + i32.ge_u + if + i32.const 3184 + i32.const 3248 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + i32.const 3140 + i32.load $0 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load $0 + ) + (func $assembly/perlin/grad (param $0 i32) (param $1 f64) (param $2 f64) (param $3 f64) (result f64) + block $case16|0 + block $case15|0 + block $case14|0 + block $case13|0 + block $case12|0 + block $case11|0 + block $case10|0 + block $case9|0 + block $case8|0 + block $case7|0 + block $case6|0 + block $case5|0 + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $0 + i32.const 15 + i32.and + br_table $case0|0 $case1|0 $case2|0 $case3|0 $case4|0 $case5|0 $case6|0 $case7|0 $case8|0 $case9|0 $case10|0 $case11|0 $case12|0 $case13|0 $case14|0 $case15|0 $case16|0 + end + local.get $1 + local.get $2 + f64.add + return + end + local.get $2 + local.get $1 + f64.sub + return + end + local.get $1 + local.get $2 + f64.sub + return + end + local.get $1 + f64.neg + local.get $2 + f64.sub + return + end + local.get $1 + local.get $3 + f64.add + return + end + local.get $3 + local.get $1 + f64.sub + return + end + local.get $1 + local.get $3 + f64.sub + return + end + local.get $1 + f64.neg + local.get $3 + f64.sub + return + end + local.get $2 + local.get $3 + f64.add + return + end + local.get $3 + local.get $2 + f64.sub + return + end + local.get $2 + local.get $3 + f64.sub + return + end + local.get $2 + f64.neg + local.get $3 + f64.sub + return + end + local.get $2 + local.get $1 + f64.add + return + end + local.get $3 + local.get $2 + f64.sub + return + end + local.get $2 + local.get $1 + f64.sub + return + end + local.get $2 + f64.neg + local.get $3 + f64.sub + return + end + f64.const 0 + ) + (func $assembly/perlin/perlin (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result f64) + (local $4 f64) + (local $5 f64) + (local $6 f64) + (local $7 i32) + (local $8 f64) + (local $9 f64) + (local $10 f64) + (local $11 f64) + (local $12 f64) + (local $13 f64) + (local $14 f64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3276 + i32.lt_s + if + i32.const 19680 + i32.const 19728 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $7 + i32.const 0 + i32.store $0 + local.get $7 + i32.const 3136 + i32.store $0 + local.get $0 + f64.convert_i32_s + local.get $3 + f64.convert_i32_s + local.tee $4 + f64.div + local.tee $5 + f64.floor + local.tee $6 + i32.trunc_sat_f64_s + i32.const 255 + i32.and + local.tee $0 + call $~lib/array/Array#__get + local.get $1 + f64.convert_i32_s + local.get $4 + f64.div + local.tee $8 + f64.floor + local.tee $9 + i32.trunc_sat_f64_s + i32.const 255 + i32.and + local.tee $1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 3136 + i32.store $0 + local.get $3 + call $~lib/array/Array#__get + local.get $2 + f64.convert_i32_s + local.get $4 + f64.div + local.tee $4 + f64.floor + local.tee $10 + i32.trunc_sat_f64_s + i32.const 255 + i32.and + local.tee $2 + i32.add + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 3136 + i32.store $0 + local.get $3 + i32.const 1 + i32.add + call $~lib/array/Array#__get + local.get $2 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 3136 + i32.store $0 + local.get $0 + i32.const 1 + i32.add + call $~lib/array/Array#__get + local.get $1 + i32.add + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 3136 + i32.store $0 + local.get $0 + call $~lib/array/Array#__get + local.get $2 + i32.add + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 3136 + i32.store $0 + local.get $0 + i32.const 1 + i32.add + call $~lib/array/Array#__get + local.get $2 + i32.add + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 3136 + i32.store $0 + local.get $7 + call $~lib/array/Array#__get + local.get $5 + local.get $6 + f64.sub + local.tee $11 + local.get $8 + local.get $9 + f64.sub + local.tee $8 + local.get $4 + local.get $10 + f64.sub + local.tee $9 + call $assembly/perlin/grad + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 3136 + i32.store $0 + local.get $5 + local.get $11 + local.get $11 + f64.mul + local.get $11 + f64.mul + local.get $11 + local.get $11 + f64.const 6 + f64.mul + f64.const -15 + f64.add + f64.mul + f64.const 10 + f64.add + f64.mul + local.tee $10 + local.get $1 + call $~lib/array/Array#__get + local.get $11 + f64.const -1 + f64.add + local.tee $4 + local.get $8 + local.get $9 + call $assembly/perlin/grad + local.get $5 + f64.sub + f64.mul + f64.add + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 3136 + i32.store $0 + local.get $3 + call $~lib/array/Array#__get + local.get $11 + local.get $8 + f64.const -1 + f64.add + local.tee $5 + local.get $9 + call $assembly/perlin/grad + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 3136 + i32.store $0 + local.get $6 + local.get $8 + local.get $8 + f64.mul + local.get $8 + f64.mul + local.get $8 + local.get $8 + f64.const 6 + f64.mul + f64.const -15 + f64.add + f64.mul + f64.const 10 + f64.add + f64.mul + local.tee $13 + local.get $12 + local.get $10 + local.get $0 + call $~lib/array/Array#__get + local.get $4 + local.get $5 + local.get $9 + call $assembly/perlin/grad + local.get $12 + f64.sub + f64.mul + f64.add + local.get $6 + f64.sub + f64.mul + f64.add + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 3136 + i32.store $0 + local.get $7 + i32.const 1 + i32.add + call $~lib/array/Array#__get + local.get $11 + local.get $8 + local.get $9 + f64.const -1 + f64.add + local.tee $6 + call $assembly/perlin/grad + local.set $14 + global.get $~lib/memory/__stack_pointer + i32.const 3136 + i32.store $0 + local.get $14 + local.get $10 + local.get $1 + i32.const 1 + i32.add + call $~lib/array/Array#__get + local.get $4 + local.get $8 + local.get $6 + call $assembly/perlin/grad + local.get $14 + f64.sub + f64.mul + f64.add + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 3136 + i32.store $0 + local.get $3 + i32.const 1 + i32.add + call $~lib/array/Array#__get + local.get $11 + local.get $5 + local.get $6 + call $assembly/perlin/grad + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 3136 + i32.store $0 + local.get $12 + local.get $9 + local.get $9 + f64.mul + local.get $9 + f64.mul + local.get $9 + local.get $9 + f64.const 6 + f64.mul + f64.const -15 + f64.add + f64.mul + f64.const 10 + f64.add + f64.mul + local.get $8 + local.get $13 + local.get $11 + local.get $10 + local.get $0 + i32.const 1 + i32.add + call $~lib/array/Array#__get + local.get $4 + local.get $5 + local.get $6 + call $assembly/perlin/grad + local.get $11 + f64.sub + f64.mul + f64.add + local.get $8 + f64.sub + f64.mul + f64.add + local.get $12 + f64.sub + f64.mul + f64.add + f64.const 1 + f64.add + f64.const 0.5 + f64.mul + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) +) diff --git a/packages/noise/dist/index.d.ts b/packages/noise/dist/index.d.ts new file mode 100644 index 0000000000..9d9f52dff5 --- /dev/null +++ b/packages/noise/dist/index.d.ts @@ -0,0 +1,7 @@ +declare function fetchAndCompileWasmModule(url: URL | string): Promise; +declare function lerp(t: number, a: number, b: number): number; +declare function createSplines(splines: [number, number][]): (x: number) => number; +type Perlin = (_x: number, _y: number, _z: number, denom: number) => number; +declare function createPerlin(): Promise; + +export { createPerlin, createSplines, fetchAndCompileWasmModule, lerp }; diff --git a/packages/noise/dist/index.js b/packages/noise/dist/index.js new file mode 100644 index 0000000000..99b85b3570 --- /dev/null +++ b/packages/noise/dist/index.js @@ -0,0 +1,2 @@ +"use strict";var p=Object.create;var i=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var w=Object.getPrototypeOf,h=Object.prototype.hasOwnProperty;var y=(e,r)=>{for(var n in r)i(e,n,{get:r[n],enumerable:!0})},o=(e,r,n,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let m of d(r))!h.call(e,m)&&m!==n&&i(e,m,{get:()=>r[m],enumerable:!(t=f(r,m))||t.enumerable});return e};var u=(e,r,n)=>(n=e!=null?p(w(e)):{},o(r||!e||!e.__esModule?i(n,"default",{value:e,enumerable:!0}):n,e)),g=e=>o(i({},"__esModule",{value:!0}),e);var A={};y(A,{createPerlin:()=>_,createSplines:()=>P,fetchAndCompileWasmModule:()=>c,lerp:()=>l});module.exports=g(A);var s=u(require("fs")),b=u(require("path")),a={};async function c(e){try{return await WebAssembly.compileStreaming(fetch(e))}catch{return WebAssembly.compile(s.default.readFileSync(e))}}function l(e,r,n){return r+e*(n-r)}function x(e,r){let n=e.findIndex(t=>t[0]>=r);if(n>0)return[e[n-1],e[n]];console.warn("out of reach",r,e)}function P(e){return r=>{let n=x(e,r);if(!n)return r;let t=(r-n[0][0])/(n[1][0]-n[0][0]);return l(t,n[0][1],n[1][1])}}async function _(){let e=await c(a.url?new URL("../build/release.wasm",a.url):b.default.resolve(__dirname,"../build/release.wasm"));return(await WebAssembly.instantiate(e,{env:{abort:n=>{throw new Error("abort called in wasm perlin: "+n)}}})).exports.perlin}0&&(module.exports={createPerlin,createSplines,fetchAndCompileWasmModule,lerp}); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/packages/noise/dist/index.js.map b/packages/noise/dist/index.js.map new file mode 100644 index 0000000000..3e9780b970 --- /dev/null +++ b/packages/noise/dist/index.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../ts/index.ts"],"sourcesContent":["import fs from \"fs\";\nimport path from \"path\";\n// import * as buffer from \"buffer\";\n// const { Buffer } = buffer;\n\n// export function encodePackedU32(inputs: number[]): Buffer {\n// const buffer = Buffer.from(inputs.map((i) => i.toString(16).padStart(8, \"0\")).join(\"\"), \"hex\");\n// return buffer;\n// }\n\nexport async function fetchAndCompileWasmModule(url: URL | string) {\n try {\n return await WebAssembly.compileStreaming(fetch(url));\n } catch {\n return WebAssembly.compile(fs.readFileSync(url));\n }\n}\n\nexport function lerp(t: number, a: number, b: number): number {\n return a + t * (b - a);\n}\n\nfunction getSplinePoints(splines: [number, number][], x: number) {\n const index = splines.findIndex((s) => s[0] >= x);\n if (index > 0) return [splines[index - 1], splines[index]];\n console.warn(\"out of reach\", x, splines);\n return undefined;\n}\n\nexport function createSplines(splines: [number, number][]): (x: number) => number {\n return (x: number) => {\n const points = getSplinePoints(splines, x);\n if (!points) return x;\n\n const t = (x - points[0][0]) / (points[1][0] - points[0][0]);\n const height = lerp(t, points[0][1], points[1][1]);\n\n return height;\n };\n}\n\ntype Perlin = (_x: number, _y: number, _z: number, denom: number) => number;\n\nexport async function createPerlin(): Promise {\n const wasmModule = await fetchAndCompileWasmModule(\n import.meta.url\n ? new URL(\"../build/release.wasm\", import.meta.url)\n : path.resolve(__dirname, \"../build/release.wasm\"),\n );\n const wasmInstance = await WebAssembly.instantiate(wasmModule, {\n env: {\n abort: (e: string) => {\n throw new Error(\"abort called in wasm perlin: \" + e);\n },\n },\n });\n\n return wasmInstance.exports.perlin as Perlin;\n}\n"],"mappings":"0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,kBAAAE,EAAA,kBAAAC,EAAA,8BAAAC,EAAA,SAAAC,IAAA,eAAAC,EAAAN,GAAA,IAAAO,EAAe,iBACfC,EAAiB,mBADjBC,EAAA,GAUA,eAAsBL,EAA0BM,EAAmB,CACjE,GAAI,CACF,OAAO,MAAM,YAAY,iBAAiB,MAAMA,CAAG,CAAC,CACtD,MAAE,CACA,OAAO,YAAY,QAAQ,EAAAC,QAAG,aAAaD,CAAG,CAAC,CACjD,CACF,CAEO,SAASL,EAAKO,EAAWC,EAAWC,EAAmB,CAC5D,OAAOD,EAAID,GAAKE,EAAID,EACtB,CAEA,SAASE,EAAgBC,EAA6BC,EAAW,CAC/D,IAAMC,EAAQF,EAAQ,UAAWG,GAAMA,EAAE,CAAC,GAAKF,CAAC,EAChD,GAAIC,EAAQ,EAAG,MAAO,CAACF,EAAQE,EAAQ,CAAC,EAAGF,EAAQE,CAAK,CAAC,EACzD,QAAQ,KAAK,eAAgBD,EAAGD,CAAO,CAEzC,CAEO,SAASb,EAAca,EAAoD,CAChF,OAAQC,GAAc,CACpB,IAAMG,EAASL,EAAgBC,EAASC,CAAC,EACzC,GAAI,CAACG,EAAQ,OAAOH,EAEpB,IAAM,GAAKA,EAAIG,EAAO,CAAC,EAAE,CAAC,IAAMA,EAAO,CAAC,EAAE,CAAC,EAAIA,EAAO,CAAC,EAAE,CAAC,GAG1D,OAFef,EAAK,EAAGe,EAAO,CAAC,EAAE,CAAC,EAAGA,EAAO,CAAC,EAAE,CAAC,CAAC,CAGnD,CACF,CAIA,eAAsBlB,GAAgC,CACpD,IAAMmB,EAAa,MAAMjB,EACvBK,EAAY,IACR,IAAI,IAAI,wBAAyBA,EAAY,GAAG,EAChD,EAAAa,QAAK,QAAQ,UAAW,uBAAuB,CACrD,EASA,OARqB,MAAM,YAAY,YAAYD,EAAY,CAC7D,IAAK,CACH,MAAQE,GAAc,CACpB,MAAM,IAAI,MAAM,gCAAkCA,CAAC,CACrD,CACF,CACF,CAAC,GAEmB,QAAQ,MAC9B","names":["ts_exports","__export","createPerlin","createSplines","fetchAndCompileWasmModule","lerp","__toCommonJS","import_fs","import_path","import_meta","url","fs","t","a","b","getSplinePoints","splines","x","index","s","points","wasmModule","path","e"]} \ No newline at end of file diff --git a/packages/noise/dist/index.mjs b/packages/noise/dist/index.mjs new file mode 100644 index 0000000000..9d1d659493 --- /dev/null +++ b/packages/noise/dist/index.mjs @@ -0,0 +1,2 @@ +import m from"fs";import i from"path";async function o(n){try{return await WebAssembly.compileStreaming(fetch(n))}catch{return WebAssembly.compile(m.readFileSync(n))}}function u(n,r,e){return r+n*(e-r)}function a(n,r){let e=n.findIndex(t=>t[0]>=r);if(e>0)return[n[e-1],n[e]];console.warn("out of reach",r,n)}function l(n){return r=>{let e=a(n,r);if(!e)return r;let t=(r-e[0][0])/(e[1][0]-e[0][0]);return u(t,e[0][1],e[1][1])}}async function p(){let n=await o(import.meta.url?new URL("../build/release.wasm",import.meta.url):i.resolve(__dirname,"../build/release.wasm"));return(await WebAssembly.instantiate(n,{env:{abort:e=>{throw new Error("abort called in wasm perlin: "+e)}}})).exports.perlin}export{p as createPerlin,l as createSplines,o as fetchAndCompileWasmModule,u as lerp}; +//# sourceMappingURL=index.mjs.map \ No newline at end of file diff --git a/packages/noise/dist/index.mjs.map b/packages/noise/dist/index.mjs.map new file mode 100644 index 0000000000..b87cd98c49 --- /dev/null +++ b/packages/noise/dist/index.mjs.map @@ -0,0 +1 @@ +{"version":3,"sources":["../ts/index.ts"],"sourcesContent":["import fs from \"fs\";\nimport path from \"path\";\n// import * as buffer from \"buffer\";\n// const { Buffer } = buffer;\n\n// export function encodePackedU32(inputs: number[]): Buffer {\n// const buffer = Buffer.from(inputs.map((i) => i.toString(16).padStart(8, \"0\")).join(\"\"), \"hex\");\n// return buffer;\n// }\n\nexport async function fetchAndCompileWasmModule(url: URL | string) {\n try {\n return await WebAssembly.compileStreaming(fetch(url));\n } catch {\n return WebAssembly.compile(fs.readFileSync(url));\n }\n}\n\nexport function lerp(t: number, a: number, b: number): number {\n return a + t * (b - a);\n}\n\nfunction getSplinePoints(splines: [number, number][], x: number) {\n const index = splines.findIndex((s) => s[0] >= x);\n if (index > 0) return [splines[index - 1], splines[index]];\n console.warn(\"out of reach\", x, splines);\n return undefined;\n}\n\nexport function createSplines(splines: [number, number][]): (x: number) => number {\n return (x: number) => {\n const points = getSplinePoints(splines, x);\n if (!points) return x;\n\n const t = (x - points[0][0]) / (points[1][0] - points[0][0]);\n const height = lerp(t, points[0][1], points[1][1]);\n\n return height;\n };\n}\n\ntype Perlin = (_x: number, _y: number, _z: number, denom: number) => number;\n\nexport async function createPerlin(): Promise {\n const wasmModule = await fetchAndCompileWasmModule(\n import.meta.url\n ? new URL(\"../build/release.wasm\", import.meta.url)\n : path.resolve(__dirname, \"../build/release.wasm\"),\n );\n const wasmInstance = await WebAssembly.instantiate(wasmModule, {\n env: {\n abort: (e: string) => {\n throw new Error(\"abort called in wasm perlin: \" + e);\n },\n },\n });\n\n return wasmInstance.exports.perlin as Perlin;\n}\n"],"mappings":"AAAA,OAAOA,MAAQ,KACf,OAAOC,MAAU,OASjB,eAAsBC,EAA0BC,EAAmB,CACjE,GAAI,CACF,OAAO,MAAM,YAAY,iBAAiB,MAAMA,CAAG,CAAC,CACtD,MAAE,CACA,OAAO,YAAY,QAAQH,EAAG,aAAaG,CAAG,CAAC,CACjD,CACF,CAEO,SAASC,EAAKC,EAAWC,EAAWC,EAAmB,CAC5D,OAAOD,EAAID,GAAKE,EAAID,EACtB,CAEA,SAASE,EAAgBC,EAA6BC,EAAW,CAC/D,IAAMC,EAAQF,EAAQ,UAAWG,GAAMA,EAAE,CAAC,GAAKF,CAAC,EAChD,GAAIC,EAAQ,EAAG,MAAO,CAACF,EAAQE,EAAQ,CAAC,EAAGF,EAAQE,CAAK,CAAC,EACzD,QAAQ,KAAK,eAAgBD,EAAGD,CAAO,CAEzC,CAEO,SAASI,EAAcJ,EAAoD,CAChF,OAAQC,GAAc,CACpB,IAAMI,EAASN,EAAgBC,EAASC,CAAC,EACzC,GAAI,CAACI,EAAQ,OAAOJ,EAEpB,IAAM,GAAKA,EAAII,EAAO,CAAC,EAAE,CAAC,IAAMA,EAAO,CAAC,EAAE,CAAC,EAAIA,EAAO,CAAC,EAAE,CAAC,GAG1D,OAFeV,EAAK,EAAGU,EAAO,CAAC,EAAE,CAAC,EAAGA,EAAO,CAAC,EAAE,CAAC,CAAC,CAGnD,CACF,CAIA,eAAsBC,GAAgC,CACpD,IAAMC,EAAa,MAAMd,EACvB,YAAY,IACR,IAAI,IAAI,wBAAyB,YAAY,GAAG,EAChDD,EAAK,QAAQ,UAAW,uBAAuB,CACrD,EASA,OARqB,MAAM,YAAY,YAAYe,EAAY,CAC7D,IAAK,CACH,MAAQ,GAAc,CACpB,MAAM,IAAI,MAAM,gCAAkC,CAAC,CACrD,CACF,CACF,CAAC,GAEmB,QAAQ,MAC9B","names":["fs","path","fetchAndCompileWasmModule","url","lerp","t","a","b","getSplinePoints","splines","x","index","s","createSplines","points","createPerlin","wasmModule"]} \ No newline at end of file From 2c74cf740512d3878c730f2c0f954f626ea193d6 Mon Sep 17 00:00:00 2001 From: Dhvani Patel Date: Sun, 25 Feb 2024 22:56:39 +0000 Subject: [PATCH 02/32] chore: export types --- packages/common/src/getBurnerPrivateKey.ts | 6 ++- packages/noise/dist/index.d.ts | 4 ++ packages/noise/dist/index.js | 4 ++ packages/noise/dist/index.js.map | 6 ++- packages/noise/dist/index.mjs | 4 ++ packages/noise/dist/index.mjs.map | 6 ++- packages/noise/ts/index.ts | 54 ++++++++++++++++++++++ packages/store-sync/src/recs/index.ts | 1 + 8 files changed, 81 insertions(+), 4 deletions(-) create mode 100644 packages/noise/ts/index.ts diff --git a/packages/common/src/getBurnerPrivateKey.ts b/packages/common/src/getBurnerPrivateKey.ts index c11aebb49d..1a08e0c2a2 100644 --- a/packages/common/src/getBurnerPrivateKey.ts +++ b/packages/common/src/getBurnerPrivateKey.ts @@ -1,7 +1,7 @@ import { generatePrivateKey, privateKeyToAccount } from "viem/accounts"; import { isHex, Hex } from "viem"; -function assertPrivateKey(privateKey: string, cacheKey: string): asserts privateKey is Hex { +export function assertPrivateKey(privateKey: string, cacheKey: string): asserts privateKey is Hex { if (!isHex(privateKey)) { console.error("Private key found in cache is not valid hex", { privateKey, cacheKey }); throw new Error(`Private key found in cache (${cacheKey}) is not valid hex`); @@ -11,7 +11,9 @@ function assertPrivateKey(privateKey: string, cacheKey: string): asserts private privateKeyToAccount(privateKey); } -export function getBurnerPrivateKey(cacheKey = "mud:burnerWallet"): Hex { +export const DEFAULT_BURNER_CACHE_KEY = "mud:burnerWallet"; + +export function getBurnerPrivateKey(cacheKey = DEFAULT_BURNER_CACHE_KEY): Hex { const cachedPrivateKey = localStorage.getItem(cacheKey); if (cachedPrivateKey != null) { diff --git a/packages/noise/dist/index.d.ts b/packages/noise/dist/index.d.ts index 9d9f52dff5..18d583726e 100644 --- a/packages/noise/dist/index.d.ts +++ b/packages/noise/dist/index.d.ts @@ -4,4 +4,8 @@ declare function createSplines(splines: [number, number][]): (x: number) => numb type Perlin = (_x: number, _y: number, _z: number, denom: number) => number; declare function createPerlin(): Promise; +<<<<<<< HEAD export { createPerlin, createSplines, fetchAndCompileWasmModule, lerp }; +======= +export { Perlin, createPerlin, createSplines, fetchAndCompileWasmModule, lerp }; +>>>>>>> a4f03cd4 (chore: export types) diff --git a/packages/noise/dist/index.js b/packages/noise/dist/index.js index 99b85b3570..2f13e1a1f5 100644 --- a/packages/noise/dist/index.js +++ b/packages/noise/dist/index.js @@ -1,2 +1,6 @@ +<<<<<<< HEAD "use strict";var p=Object.create;var i=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var w=Object.getPrototypeOf,h=Object.prototype.hasOwnProperty;var y=(e,r)=>{for(var n in r)i(e,n,{get:r[n],enumerable:!0})},o=(e,r,n,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let m of d(r))!h.call(e,m)&&m!==n&&i(e,m,{get:()=>r[m],enumerable:!(t=f(r,m))||t.enumerable});return e};var u=(e,r,n)=>(n=e!=null?p(w(e)):{},o(r||!e||!e.__esModule?i(n,"default",{value:e,enumerable:!0}):n,e)),g=e=>o(i({},"__esModule",{value:!0}),e);var A={};y(A,{createPerlin:()=>_,createSplines:()=>P,fetchAndCompileWasmModule:()=>c,lerp:()=>l});module.exports=g(A);var s=u(require("fs")),b=u(require("path")),a={};async function c(e){try{return await WebAssembly.compileStreaming(fetch(e))}catch{return WebAssembly.compile(s.default.readFileSync(e))}}function l(e,r,n){return r+e*(n-r)}function x(e,r){let n=e.findIndex(t=>t[0]>=r);if(n>0)return[e[n-1],e[n]];console.warn("out of reach",r,e)}function P(e){return r=>{let n=x(e,r);if(!n)return r;let t=(r-n[0][0])/(n[1][0]-n[0][0]);return l(t,n[0][1],n[1][1])}}async function _(){let e=await c(a.url?new URL("../build/release.wasm",a.url):b.default.resolve(__dirname,"../build/release.wasm"));return(await WebAssembly.instantiate(e,{env:{abort:n=>{throw new Error("abort called in wasm perlin: "+n)}}})).exports.perlin}0&&(module.exports={createPerlin,createSplines,fetchAndCompileWasmModule,lerp}); +======= +"use strict";var p=Object.create;var o=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var w=Object.getPrototypeOf,h=Object.prototype.hasOwnProperty;var y=(e,r)=>{for(var n in r)o(e,n,{get:r[n],enumerable:!0})},i=(e,r,n,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let m of d(r))!h.call(e,m)&&m!==n&&o(e,m,{get:()=>r[m],enumerable:!(t=f(r,m))||t.enumerable});return e};var u=(e,r,n)=>(n=e!=null?p(w(e)):{},i(r||!e||!e.__esModule?o(n,"default",{value:e,enumerable:!0}):n,e)),x=e=>i(o({},"__esModule",{value:!0}),e);var A={};y(A,{createPerlin:()=>_,createSplines:()=>P,fetchAndCompileWasmModule:()=>c,lerp:()=>l});module.exports=x(A);var s=u(require("fs")),b=u(require("path")),a={};async function c(e){try{return await WebAssembly.compileStreaming(fetch(e))}catch{return WebAssembly.compile(s.default.readFileSync(e))}}function l(e,r,n){return r+e*(n-r)}function g(e,r){let n=e.findIndex(t=>t[0]>=r);if(n>0)return[e[n-1],e[n]];console.warn("out of reach",r,e)}function P(e){return r=>{let n=g(e,r);if(!n)return r;let t=(r-n[0][0])/(n[1][0]-n[0][0]);return l(t,n[0][1],n[1][1])}}async function _(){let e=await c(a.url?new URL("../build/release.wasm",a.url):b.default.resolve(__dirname,"../build/release.wasm"));return(await WebAssembly.instantiate(e,{env:{abort:n=>{throw new Error("abort called in wasm perlin: "+n)}}})).exports.perlin}0&&(module.exports={createPerlin,createSplines,fetchAndCompileWasmModule,lerp}); +>>>>>>> a4f03cd4 (chore: export types) //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/packages/noise/dist/index.js.map b/packages/noise/dist/index.js.map index 3e9780b970..3308c1340f 100644 --- a/packages/noise/dist/index.js.map +++ b/packages/noise/dist/index.js.map @@ -1 +1,5 @@ -{"version":3,"sources":["../ts/index.ts"],"sourcesContent":["import fs from \"fs\";\nimport path from \"path\";\n// import * as buffer from \"buffer\";\n// const { Buffer } = buffer;\n\n// export function encodePackedU32(inputs: number[]): Buffer {\n// const buffer = Buffer.from(inputs.map((i) => i.toString(16).padStart(8, \"0\")).join(\"\"), \"hex\");\n// return buffer;\n// }\n\nexport async function fetchAndCompileWasmModule(url: URL | string) {\n try {\n return await WebAssembly.compileStreaming(fetch(url));\n } catch {\n return WebAssembly.compile(fs.readFileSync(url));\n }\n}\n\nexport function lerp(t: number, a: number, b: number): number {\n return a + t * (b - a);\n}\n\nfunction getSplinePoints(splines: [number, number][], x: number) {\n const index = splines.findIndex((s) => s[0] >= x);\n if (index > 0) return [splines[index - 1], splines[index]];\n console.warn(\"out of reach\", x, splines);\n return undefined;\n}\n\nexport function createSplines(splines: [number, number][]): (x: number) => number {\n return (x: number) => {\n const points = getSplinePoints(splines, x);\n if (!points) return x;\n\n const t = (x - points[0][0]) / (points[1][0] - points[0][0]);\n const height = lerp(t, points[0][1], points[1][1]);\n\n return height;\n };\n}\n\ntype Perlin = (_x: number, _y: number, _z: number, denom: number) => number;\n\nexport async function createPerlin(): Promise {\n const wasmModule = await fetchAndCompileWasmModule(\n import.meta.url\n ? new URL(\"../build/release.wasm\", import.meta.url)\n : path.resolve(__dirname, \"../build/release.wasm\"),\n );\n const wasmInstance = await WebAssembly.instantiate(wasmModule, {\n env: {\n abort: (e: string) => {\n throw new Error(\"abort called in wasm perlin: \" + e);\n },\n },\n });\n\n return wasmInstance.exports.perlin as Perlin;\n}\n"],"mappings":"0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,kBAAAE,EAAA,kBAAAC,EAAA,8BAAAC,EAAA,SAAAC,IAAA,eAAAC,EAAAN,GAAA,IAAAO,EAAe,iBACfC,EAAiB,mBADjBC,EAAA,GAUA,eAAsBL,EAA0BM,EAAmB,CACjE,GAAI,CACF,OAAO,MAAM,YAAY,iBAAiB,MAAMA,CAAG,CAAC,CACtD,MAAE,CACA,OAAO,YAAY,QAAQ,EAAAC,QAAG,aAAaD,CAAG,CAAC,CACjD,CACF,CAEO,SAASL,EAAKO,EAAWC,EAAWC,EAAmB,CAC5D,OAAOD,EAAID,GAAKE,EAAID,EACtB,CAEA,SAASE,EAAgBC,EAA6BC,EAAW,CAC/D,IAAMC,EAAQF,EAAQ,UAAWG,GAAMA,EAAE,CAAC,GAAKF,CAAC,EAChD,GAAIC,EAAQ,EAAG,MAAO,CAACF,EAAQE,EAAQ,CAAC,EAAGF,EAAQE,CAAK,CAAC,EACzD,QAAQ,KAAK,eAAgBD,EAAGD,CAAO,CAEzC,CAEO,SAASb,EAAca,EAAoD,CAChF,OAAQC,GAAc,CACpB,IAAMG,EAASL,EAAgBC,EAASC,CAAC,EACzC,GAAI,CAACG,EAAQ,OAAOH,EAEpB,IAAM,GAAKA,EAAIG,EAAO,CAAC,EAAE,CAAC,IAAMA,EAAO,CAAC,EAAE,CAAC,EAAIA,EAAO,CAAC,EAAE,CAAC,GAG1D,OAFef,EAAK,EAAGe,EAAO,CAAC,EAAE,CAAC,EAAGA,EAAO,CAAC,EAAE,CAAC,CAAC,CAGnD,CACF,CAIA,eAAsBlB,GAAgC,CACpD,IAAMmB,EAAa,MAAMjB,EACvBK,EAAY,IACR,IAAI,IAAI,wBAAyBA,EAAY,GAAG,EAChD,EAAAa,QAAK,QAAQ,UAAW,uBAAuB,CACrD,EASA,OARqB,MAAM,YAAY,YAAYD,EAAY,CAC7D,IAAK,CACH,MAAQE,GAAc,CACpB,MAAM,IAAI,MAAM,gCAAkCA,CAAC,CACrD,CACF,CACF,CAAC,GAEmB,QAAQ,MAC9B","names":["ts_exports","__export","createPerlin","createSplines","fetchAndCompileWasmModule","lerp","__toCommonJS","import_fs","import_path","import_meta","url","fs","t","a","b","getSplinePoints","splines","x","index","s","points","wasmModule","path","e"]} \ No newline at end of file +<<<<<<< HEAD +{"version":3,"sources":["../ts/index.ts"],"sourcesContent":["import fs from \"fs\";\nimport path from \"path\";\n// import * as buffer from \"buffer\";\n// const { Buffer } = buffer;\n\n// export function encodePackedU32(inputs: number[]): Buffer {\n// const buffer = Buffer.from(inputs.map((i) => i.toString(16).padStart(8, \"0\")).join(\"\"), \"hex\");\n// return buffer;\n// }\n\nexport async function fetchAndCompileWasmModule(url: URL | string) {\n try {\n return await WebAssembly.compileStreaming(fetch(url));\n } catch {\n return WebAssembly.compile(fs.readFileSync(url));\n }\n}\n\nexport function lerp(t: number, a: number, b: number): number {\n return a + t * (b - a);\n}\n\nfunction getSplinePoints(splines: [number, number][], x: number) {\n const index = splines.findIndex((s) => s[0] >= x);\n if (index > 0) return [splines[index - 1], splines[index]];\n console.warn(\"out of reach\", x, splines);\n return undefined;\n}\n\nexport function createSplines(splines: [number, number][]): (x: number) => number {\n return (x: number) => {\n const points = getSplinePoints(splines, x);\n if (!points) return x;\n\n const t = (x - points[0][0]) / (points[1][0] - points[0][0]);\n const height = lerp(t, points[0][1], points[1][1]);\n\n return height;\n };\n}\n\ntype Perlin = (_x: number, _y: number, _z: number, denom: number) => number;\n\nexport async function createPerlin(): Promise {\n const wasmModule = await fetchAndCompileWasmModule(\n import.meta.url\n ? new URL(\"../build/release.wasm\", import.meta.url)\n : path.resolve(__dirname, \"../build/release.wasm\"),\n );\n const wasmInstance = await WebAssembly.instantiate(wasmModule, {\n env: {\n abort: (e: string) => {\n throw new Error(\"abort called in wasm perlin: \" + e);\n },\n },\n });\n\n return wasmInstance.exports.perlin as Perlin;\n}\n"],"mappings":"0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,kBAAAE,EAAA,kBAAAC,EAAA,8BAAAC,EAAA,SAAAC,IAAA,eAAAC,EAAAN,GAAA,IAAAO,EAAe,iBACfC,EAAiB,mBADjBC,EAAA,GAUA,eAAsBL,EAA0BM,EAAmB,CACjE,GAAI,CACF,OAAO,MAAM,YAAY,iBAAiB,MAAMA,CAAG,CAAC,CACtD,MAAE,CACA,OAAO,YAAY,QAAQ,EAAAC,QAAG,aAAaD,CAAG,CAAC,CACjD,CACF,CAEO,SAASL,EAAKO,EAAWC,EAAWC,EAAmB,CAC5D,OAAOD,EAAID,GAAKE,EAAID,EACtB,CAEA,SAASE,EAAgBC,EAA6BC,EAAW,CAC/D,IAAMC,EAAQF,EAAQ,UAAWG,GAAMA,EAAE,CAAC,GAAKF,CAAC,EAChD,GAAIC,EAAQ,EAAG,MAAO,CAACF,EAAQE,EAAQ,CAAC,EAAGF,EAAQE,CAAK,CAAC,EACzD,QAAQ,KAAK,eAAgBD,EAAGD,CAAO,CAEzC,CAEO,SAASb,EAAca,EAAoD,CAChF,OAAQC,GAAc,CACpB,IAAMG,EAASL,EAAgBC,EAASC,CAAC,EACzC,GAAI,CAACG,EAAQ,OAAOH,EAEpB,IAAM,GAAKA,EAAIG,EAAO,CAAC,EAAE,CAAC,IAAMA,EAAO,CAAC,EAAE,CAAC,EAAIA,EAAO,CAAC,EAAE,CAAC,GAG1D,OAFef,EAAK,EAAGe,EAAO,CAAC,EAAE,CAAC,EAAGA,EAAO,CAAC,EAAE,CAAC,CAAC,CAGnD,CACF,CAIA,eAAsBlB,GAAgC,CACpD,IAAMmB,EAAa,MAAMjB,EACvBK,EAAY,IACR,IAAI,IAAI,wBAAyBA,EAAY,GAAG,EAChD,EAAAa,QAAK,QAAQ,UAAW,uBAAuB,CACrD,EASA,OARqB,MAAM,YAAY,YAAYD,EAAY,CAC7D,IAAK,CACH,MAAQE,GAAc,CACpB,MAAM,IAAI,MAAM,gCAAkCA,CAAC,CACrD,CACF,CACF,CAAC,GAEmB,QAAQ,MAC9B","names":["ts_exports","__export","createPerlin","createSplines","fetchAndCompileWasmModule","lerp","__toCommonJS","import_fs","import_path","import_meta","url","fs","t","a","b","getSplinePoints","splines","x","index","s","points","wasmModule","path","e"]} +======= +{"version":3,"sources":["../ts/index.ts"],"sourcesContent":["import fs from \"fs\";\nimport path from \"path\";\n// import * as buffer from \"buffer\";\n// const { Buffer } = buffer;\n\n// export function encodePackedU32(inputs: number[]): Buffer {\n// const buffer = Buffer.from(inputs.map((i) => i.toString(16).padStart(8, \"0\")).join(\"\"), \"hex\");\n// return buffer;\n// }\n\nexport async function fetchAndCompileWasmModule(url: URL | string) {\n try {\n return await WebAssembly.compileStreaming(fetch(url));\n } catch {\n return WebAssembly.compile(fs.readFileSync(url));\n }\n}\n\nexport function lerp(t: number, a: number, b: number): number {\n return a + t * (b - a);\n}\n\nfunction getSplinePoints(splines: [number, number][], x: number) {\n const index = splines.findIndex((s) => s[0] >= x);\n if (index > 0) return [splines[index - 1], splines[index]];\n console.warn(\"out of reach\", x, splines);\n return undefined;\n}\n\nexport function createSplines(splines: [number, number][]): (x: number) => number {\n return (x: number) => {\n const points = getSplinePoints(splines, x);\n if (!points) return x;\n\n const t = (x - points[0][0]) / (points[1][0] - points[0][0]);\n const height = lerp(t, points[0][1], points[1][1]);\n\n return height;\n };\n}\n\nexport type Perlin = (_x: number, _y: number, _z: number, denom: number) => number;\n\nexport async function createPerlin(): Promise {\n const wasmModule = await fetchAndCompileWasmModule(\n import.meta.url\n ? new URL(\"../build/release.wasm\", import.meta.url)\n : path.resolve(__dirname, \"../build/release.wasm\")\n );\n const wasmInstance = await WebAssembly.instantiate(wasmModule, {\n env: {\n abort: (e: string) => {\n throw new Error(\"abort called in wasm perlin: \" + e);\n },\n },\n });\n\n return wasmInstance.exports.perlin as Perlin;\n}\n"],"mappings":"0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,kBAAAE,EAAA,kBAAAC,EAAA,8BAAAC,EAAA,SAAAC,IAAA,eAAAC,EAAAN,GAAA,IAAAO,EAAe,iBACfC,EAAiB,mBADjBC,EAAA,GAUA,eAAsBL,EAA0BM,EAAmB,CACjE,GAAI,CACF,OAAO,MAAM,YAAY,iBAAiB,MAAMA,CAAG,CAAC,CACtD,MAAE,CACA,OAAO,YAAY,QAAQ,EAAAC,QAAG,aAAaD,CAAG,CAAC,CACjD,CACF,CAEO,SAASL,EAAKO,EAAWC,EAAWC,EAAmB,CAC5D,OAAOD,EAAID,GAAKE,EAAID,EACtB,CAEA,SAASE,EAAgBC,EAA6BC,EAAW,CAC/D,IAAMC,EAAQF,EAAQ,UAAWG,GAAMA,EAAE,CAAC,GAAKF,CAAC,EAChD,GAAIC,EAAQ,EAAG,MAAO,CAACF,EAAQE,EAAQ,CAAC,EAAGF,EAAQE,CAAK,CAAC,EACzD,QAAQ,KAAK,eAAgBD,EAAGD,CAAO,CAEzC,CAEO,SAASb,EAAca,EAAoD,CAChF,OAAQC,GAAc,CACpB,IAAMG,EAASL,EAAgBC,EAASC,CAAC,EACzC,GAAI,CAACG,EAAQ,OAAOH,EAEpB,IAAM,GAAKA,EAAIG,EAAO,CAAC,EAAE,CAAC,IAAMA,EAAO,CAAC,EAAE,CAAC,EAAIA,EAAO,CAAC,EAAE,CAAC,GAG1D,OAFef,EAAK,EAAGe,EAAO,CAAC,EAAE,CAAC,EAAGA,EAAO,CAAC,EAAE,CAAC,CAAC,CAGnD,CACF,CAIA,eAAsBlB,GAAgC,CACpD,IAAMmB,EAAa,MAAMjB,EACvBK,EAAY,IACR,IAAI,IAAI,wBAAyBA,EAAY,GAAG,EAChD,EAAAa,QAAK,QAAQ,UAAW,uBAAuB,CACrD,EASA,OARqB,MAAM,YAAY,YAAYD,EAAY,CAC7D,IAAK,CACH,MAAQE,GAAc,CACpB,MAAM,IAAI,MAAM,gCAAkCA,CAAC,CACrD,CACF,CACF,CAAC,GAEmB,QAAQ,MAC9B","names":["ts_exports","__export","createPerlin","createSplines","fetchAndCompileWasmModule","lerp","__toCommonJS","import_fs","import_path","import_meta","url","fs","t","a","b","getSplinePoints","splines","x","index","s","points","wasmModule","path","e"]} +>>>>>>> a4f03cd4 (chore: export types) diff --git a/packages/noise/dist/index.mjs b/packages/noise/dist/index.mjs index 9d1d659493..f41ab31244 100644 --- a/packages/noise/dist/index.mjs +++ b/packages/noise/dist/index.mjs @@ -1,2 +1,6 @@ +<<<<<<< HEAD import m from"fs";import i from"path";async function o(n){try{return await WebAssembly.compileStreaming(fetch(n))}catch{return WebAssembly.compile(m.readFileSync(n))}}function u(n,r,e){return r+n*(e-r)}function a(n,r){let e=n.findIndex(t=>t[0]>=r);if(e>0)return[n[e-1],n[e]];console.warn("out of reach",r,n)}function l(n){return r=>{let e=a(n,r);if(!e)return r;let t=(r-e[0][0])/(e[1][0]-e[0][0]);return u(t,e[0][1],e[1][1])}}async function p(){let n=await o(import.meta.url?new URL("../build/release.wasm",import.meta.url):i.resolve(__dirname,"../build/release.wasm"));return(await WebAssembly.instantiate(n,{env:{abort:e=>{throw new Error("abort called in wasm perlin: "+e)}}})).exports.perlin}export{p as createPerlin,l as createSplines,o as fetchAndCompileWasmModule,u as lerp}; +======= +import m from"fs";import o from"path";async function i(n){try{return await WebAssembly.compileStreaming(fetch(n))}catch{return WebAssembly.compile(m.readFileSync(n))}}function u(n,r,e){return r+n*(e-r)}function a(n,r){let e=n.findIndex(t=>t[0]>=r);if(e>0)return[n[e-1],n[e]];console.warn("out of reach",r,n)}function l(n){return r=>{let e=a(n,r);if(!e)return r;let t=(r-e[0][0])/(e[1][0]-e[0][0]);return u(t,e[0][1],e[1][1])}}async function p(){let n=await i(import.meta.url?new URL("../build/release.wasm",import.meta.url):o.resolve(__dirname,"../build/release.wasm"));return(await WebAssembly.instantiate(n,{env:{abort:e=>{throw new Error("abort called in wasm perlin: "+e)}}})).exports.perlin}export{p as createPerlin,l as createSplines,i as fetchAndCompileWasmModule,u as lerp}; +>>>>>>> a4f03cd4 (chore: export types) //# sourceMappingURL=index.mjs.map \ No newline at end of file diff --git a/packages/noise/dist/index.mjs.map b/packages/noise/dist/index.mjs.map index b87cd98c49..e812c5e5b7 100644 --- a/packages/noise/dist/index.mjs.map +++ b/packages/noise/dist/index.mjs.map @@ -1 +1,5 @@ -{"version":3,"sources":["../ts/index.ts"],"sourcesContent":["import fs from \"fs\";\nimport path from \"path\";\n// import * as buffer from \"buffer\";\n// const { Buffer } = buffer;\n\n// export function encodePackedU32(inputs: number[]): Buffer {\n// const buffer = Buffer.from(inputs.map((i) => i.toString(16).padStart(8, \"0\")).join(\"\"), \"hex\");\n// return buffer;\n// }\n\nexport async function fetchAndCompileWasmModule(url: URL | string) {\n try {\n return await WebAssembly.compileStreaming(fetch(url));\n } catch {\n return WebAssembly.compile(fs.readFileSync(url));\n }\n}\n\nexport function lerp(t: number, a: number, b: number): number {\n return a + t * (b - a);\n}\n\nfunction getSplinePoints(splines: [number, number][], x: number) {\n const index = splines.findIndex((s) => s[0] >= x);\n if (index > 0) return [splines[index - 1], splines[index]];\n console.warn(\"out of reach\", x, splines);\n return undefined;\n}\n\nexport function createSplines(splines: [number, number][]): (x: number) => number {\n return (x: number) => {\n const points = getSplinePoints(splines, x);\n if (!points) return x;\n\n const t = (x - points[0][0]) / (points[1][0] - points[0][0]);\n const height = lerp(t, points[0][1], points[1][1]);\n\n return height;\n };\n}\n\ntype Perlin = (_x: number, _y: number, _z: number, denom: number) => number;\n\nexport async function createPerlin(): Promise {\n const wasmModule = await fetchAndCompileWasmModule(\n import.meta.url\n ? new URL(\"../build/release.wasm\", import.meta.url)\n : path.resolve(__dirname, \"../build/release.wasm\"),\n );\n const wasmInstance = await WebAssembly.instantiate(wasmModule, {\n env: {\n abort: (e: string) => {\n throw new Error(\"abort called in wasm perlin: \" + e);\n },\n },\n });\n\n return wasmInstance.exports.perlin as Perlin;\n}\n"],"mappings":"AAAA,OAAOA,MAAQ,KACf,OAAOC,MAAU,OASjB,eAAsBC,EAA0BC,EAAmB,CACjE,GAAI,CACF,OAAO,MAAM,YAAY,iBAAiB,MAAMA,CAAG,CAAC,CACtD,MAAE,CACA,OAAO,YAAY,QAAQH,EAAG,aAAaG,CAAG,CAAC,CACjD,CACF,CAEO,SAASC,EAAKC,EAAWC,EAAWC,EAAmB,CAC5D,OAAOD,EAAID,GAAKE,EAAID,EACtB,CAEA,SAASE,EAAgBC,EAA6BC,EAAW,CAC/D,IAAMC,EAAQF,EAAQ,UAAWG,GAAMA,EAAE,CAAC,GAAKF,CAAC,EAChD,GAAIC,EAAQ,EAAG,MAAO,CAACF,EAAQE,EAAQ,CAAC,EAAGF,EAAQE,CAAK,CAAC,EACzD,QAAQ,KAAK,eAAgBD,EAAGD,CAAO,CAEzC,CAEO,SAASI,EAAcJ,EAAoD,CAChF,OAAQC,GAAc,CACpB,IAAMI,EAASN,EAAgBC,EAASC,CAAC,EACzC,GAAI,CAACI,EAAQ,OAAOJ,EAEpB,IAAM,GAAKA,EAAII,EAAO,CAAC,EAAE,CAAC,IAAMA,EAAO,CAAC,EAAE,CAAC,EAAIA,EAAO,CAAC,EAAE,CAAC,GAG1D,OAFeV,EAAK,EAAGU,EAAO,CAAC,EAAE,CAAC,EAAGA,EAAO,CAAC,EAAE,CAAC,CAAC,CAGnD,CACF,CAIA,eAAsBC,GAAgC,CACpD,IAAMC,EAAa,MAAMd,EACvB,YAAY,IACR,IAAI,IAAI,wBAAyB,YAAY,GAAG,EAChDD,EAAK,QAAQ,UAAW,uBAAuB,CACrD,EASA,OARqB,MAAM,YAAY,YAAYe,EAAY,CAC7D,IAAK,CACH,MAAQ,GAAc,CACpB,MAAM,IAAI,MAAM,gCAAkC,CAAC,CACrD,CACF,CACF,CAAC,GAEmB,QAAQ,MAC9B","names":["fs","path","fetchAndCompileWasmModule","url","lerp","t","a","b","getSplinePoints","splines","x","index","s","createSplines","points","createPerlin","wasmModule"]} \ No newline at end of file +<<<<<<< HEAD +{"version":3,"sources":["../ts/index.ts"],"sourcesContent":["import fs from \"fs\";\nimport path from \"path\";\n// import * as buffer from \"buffer\";\n// const { Buffer } = buffer;\n\n// export function encodePackedU32(inputs: number[]): Buffer {\n// const buffer = Buffer.from(inputs.map((i) => i.toString(16).padStart(8, \"0\")).join(\"\"), \"hex\");\n// return buffer;\n// }\n\nexport async function fetchAndCompileWasmModule(url: URL | string) {\n try {\n return await WebAssembly.compileStreaming(fetch(url));\n } catch {\n return WebAssembly.compile(fs.readFileSync(url));\n }\n}\n\nexport function lerp(t: number, a: number, b: number): number {\n return a + t * (b - a);\n}\n\nfunction getSplinePoints(splines: [number, number][], x: number) {\n const index = splines.findIndex((s) => s[0] >= x);\n if (index > 0) return [splines[index - 1], splines[index]];\n console.warn(\"out of reach\", x, splines);\n return undefined;\n}\n\nexport function createSplines(splines: [number, number][]): (x: number) => number {\n return (x: number) => {\n const points = getSplinePoints(splines, x);\n if (!points) return x;\n\n const t = (x - points[0][0]) / (points[1][0] - points[0][0]);\n const height = lerp(t, points[0][1], points[1][1]);\n\n return height;\n };\n}\n\ntype Perlin = (_x: number, _y: number, _z: number, denom: number) => number;\n\nexport async function createPerlin(): Promise {\n const wasmModule = await fetchAndCompileWasmModule(\n import.meta.url\n ? new URL(\"../build/release.wasm\", import.meta.url)\n : path.resolve(__dirname, \"../build/release.wasm\"),\n );\n const wasmInstance = await WebAssembly.instantiate(wasmModule, {\n env: {\n abort: (e: string) => {\n throw new Error(\"abort called in wasm perlin: \" + e);\n },\n },\n });\n\n return wasmInstance.exports.perlin as Perlin;\n}\n"],"mappings":"AAAA,OAAOA,MAAQ,KACf,OAAOC,MAAU,OASjB,eAAsBC,EAA0BC,EAAmB,CACjE,GAAI,CACF,OAAO,MAAM,YAAY,iBAAiB,MAAMA,CAAG,CAAC,CACtD,MAAE,CACA,OAAO,YAAY,QAAQH,EAAG,aAAaG,CAAG,CAAC,CACjD,CACF,CAEO,SAASC,EAAKC,EAAWC,EAAWC,EAAmB,CAC5D,OAAOD,EAAID,GAAKE,EAAID,EACtB,CAEA,SAASE,EAAgBC,EAA6BC,EAAW,CAC/D,IAAMC,EAAQF,EAAQ,UAAWG,GAAMA,EAAE,CAAC,GAAKF,CAAC,EAChD,GAAIC,EAAQ,EAAG,MAAO,CAACF,EAAQE,EAAQ,CAAC,EAAGF,EAAQE,CAAK,CAAC,EACzD,QAAQ,KAAK,eAAgBD,EAAGD,CAAO,CAEzC,CAEO,SAASI,EAAcJ,EAAoD,CAChF,OAAQC,GAAc,CACpB,IAAMI,EAASN,EAAgBC,EAASC,CAAC,EACzC,GAAI,CAACI,EAAQ,OAAOJ,EAEpB,IAAM,GAAKA,EAAII,EAAO,CAAC,EAAE,CAAC,IAAMA,EAAO,CAAC,EAAE,CAAC,EAAIA,EAAO,CAAC,EAAE,CAAC,GAG1D,OAFeV,EAAK,EAAGU,EAAO,CAAC,EAAE,CAAC,EAAGA,EAAO,CAAC,EAAE,CAAC,CAAC,CAGnD,CACF,CAIA,eAAsBC,GAAgC,CACpD,IAAMC,EAAa,MAAMd,EACvB,YAAY,IACR,IAAI,IAAI,wBAAyB,YAAY,GAAG,EAChDD,EAAK,QAAQ,UAAW,uBAAuB,CACrD,EASA,OARqB,MAAM,YAAY,YAAYe,EAAY,CAC7D,IAAK,CACH,MAAQ,GAAc,CACpB,MAAM,IAAI,MAAM,gCAAkC,CAAC,CACrD,CACF,CACF,CAAC,GAEmB,QAAQ,MAC9B","names":["fs","path","fetchAndCompileWasmModule","url","lerp","t","a","b","getSplinePoints","splines","x","index","s","createSplines","points","createPerlin","wasmModule"]} +======= +{"version":3,"sources":["../ts/index.ts"],"sourcesContent":["import fs from \"fs\";\nimport path from \"path\";\n// import * as buffer from \"buffer\";\n// const { Buffer } = buffer;\n\n// export function encodePackedU32(inputs: number[]): Buffer {\n// const buffer = Buffer.from(inputs.map((i) => i.toString(16).padStart(8, \"0\")).join(\"\"), \"hex\");\n// return buffer;\n// }\n\nexport async function fetchAndCompileWasmModule(url: URL | string) {\n try {\n return await WebAssembly.compileStreaming(fetch(url));\n } catch {\n return WebAssembly.compile(fs.readFileSync(url));\n }\n}\n\nexport function lerp(t: number, a: number, b: number): number {\n return a + t * (b - a);\n}\n\nfunction getSplinePoints(splines: [number, number][], x: number) {\n const index = splines.findIndex((s) => s[0] >= x);\n if (index > 0) return [splines[index - 1], splines[index]];\n console.warn(\"out of reach\", x, splines);\n return undefined;\n}\n\nexport function createSplines(splines: [number, number][]): (x: number) => number {\n return (x: number) => {\n const points = getSplinePoints(splines, x);\n if (!points) return x;\n\n const t = (x - points[0][0]) / (points[1][0] - points[0][0]);\n const height = lerp(t, points[0][1], points[1][1]);\n\n return height;\n };\n}\n\nexport type Perlin = (_x: number, _y: number, _z: number, denom: number) => number;\n\nexport async function createPerlin(): Promise {\n const wasmModule = await fetchAndCompileWasmModule(\n import.meta.url\n ? new URL(\"../build/release.wasm\", import.meta.url)\n : path.resolve(__dirname, \"../build/release.wasm\")\n );\n const wasmInstance = await WebAssembly.instantiate(wasmModule, {\n env: {\n abort: (e: string) => {\n throw new Error(\"abort called in wasm perlin: \" + e);\n },\n },\n });\n\n return wasmInstance.exports.perlin as Perlin;\n}\n"],"mappings":"AAAA,OAAOA,MAAQ,KACf,OAAOC,MAAU,OASjB,eAAsBC,EAA0BC,EAAmB,CACjE,GAAI,CACF,OAAO,MAAM,YAAY,iBAAiB,MAAMA,CAAG,CAAC,CACtD,MAAE,CACA,OAAO,YAAY,QAAQH,EAAG,aAAaG,CAAG,CAAC,CACjD,CACF,CAEO,SAASC,EAAKC,EAAWC,EAAWC,EAAmB,CAC5D,OAAOD,EAAID,GAAKE,EAAID,EACtB,CAEA,SAASE,EAAgBC,EAA6BC,EAAW,CAC/D,IAAMC,EAAQF,EAAQ,UAAWG,GAAMA,EAAE,CAAC,GAAKF,CAAC,EAChD,GAAIC,EAAQ,EAAG,MAAO,CAACF,EAAQE,EAAQ,CAAC,EAAGF,EAAQE,CAAK,CAAC,EACzD,QAAQ,KAAK,eAAgBD,EAAGD,CAAO,CAEzC,CAEO,SAASI,EAAcJ,EAAoD,CAChF,OAAQC,GAAc,CACpB,IAAMI,EAASN,EAAgBC,EAASC,CAAC,EACzC,GAAI,CAACI,EAAQ,OAAOJ,EAEpB,IAAM,GAAKA,EAAII,EAAO,CAAC,EAAE,CAAC,IAAMA,EAAO,CAAC,EAAE,CAAC,EAAIA,EAAO,CAAC,EAAE,CAAC,GAG1D,OAFeV,EAAK,EAAGU,EAAO,CAAC,EAAE,CAAC,EAAGA,EAAO,CAAC,EAAE,CAAC,CAAC,CAGnD,CACF,CAIA,eAAsBC,GAAgC,CACpD,IAAMC,EAAa,MAAMd,EACvB,YAAY,IACR,IAAI,IAAI,wBAAyB,YAAY,GAAG,EAChDD,EAAK,QAAQ,UAAW,uBAAuB,CACrD,EASA,OARqB,MAAM,YAAY,YAAYe,EAAY,CAC7D,IAAK,CACH,MAAQ,GAAc,CACpB,MAAM,IAAI,MAAM,gCAAkC,CAAC,CACrD,CACF,CACF,CAAC,GAEmB,QAAQ,MAC9B","names":["fs","path","fetchAndCompileWasmModule","url","lerp","t","a","b","getSplinePoints","splines","x","index","s","createSplines","points","createPerlin","wasmModule"]} +>>>>>>> a4f03cd4 (chore: export types) diff --git a/packages/noise/ts/index.ts b/packages/noise/ts/index.ts new file mode 100644 index 0000000000..3c8e2632a1 --- /dev/null +++ b/packages/noise/ts/index.ts @@ -0,0 +1,54 @@ +import fs from "fs"; +// import * as buffer from "buffer"; +// const { Buffer } = buffer; + +// export function encodePackedU32(inputs: number[]): Buffer { +// const buffer = Buffer.from(inputs.map((i) => i.toString(16).padStart(8, "0")).join(""), "hex"); +// return buffer; +// } + +export async function fetchAndCompileWasmModule(url: URL) { + try { + return await WebAssembly.compileStreaming(fetch(url)); + } catch { + return WebAssembly.compile(fs.readFileSync(url)); + } +} + +export function lerp(t: number, a: number, b: number): number { + return a + t * (b - a); +} + +function getSplinePoints(splines: [number, number][], x: number) { + const index = splines.findIndex((s) => s[0] >= x); + if (index > 0) return [splines[index - 1], splines[index]]; + console.warn("out of reach", x, splines); + return undefined; +} + +export function createSplines(splines: [number, number][]): (x: number) => number { + return (x: number) => { + const points = getSplinePoints(splines, x); + if (!points) return x; + + const t = (x - points[0][0]) / (points[1][0] - points[0][0]); + const height = lerp(t, points[0][1], points[1][1]); + + return height; + }; +} + +export type Perlin = (_x: number, _y: number, _z: number, denom: number) => number; + +export async function createPerlin(): Promise { + const wasmModule = await fetchAndCompileWasmModule(new URL("../build/release.wasm", import.meta.url)); + const wasmInstance = await WebAssembly.instantiate(wasmModule, { + env: { + abort: (e: string) => { + throw new Error("abort called in wasm perlin: " + e); + }, + }, + }); + + return wasmInstance.exports.perlin as Perlin; +} diff --git a/packages/store-sync/src/recs/index.ts b/packages/store-sync/src/recs/index.ts index d7df9e00b3..2181fc9eb2 100644 --- a/packages/store-sync/src/recs/index.ts +++ b/packages/store-sync/src/recs/index.ts @@ -7,3 +7,4 @@ export * from "./isStoreComponent"; export * from "./recsStorage"; export * from "./singletonEntity"; export * from "./syncToRecs"; +export * from "./getTableEntity"; From de849b27fc91a777aa861202378a4f98d966fc4c Mon Sep 17 00:00:00 2001 From: Dhvani Patel Date: Sun, 25 Feb 2024 23:09:13 +0000 Subject: [PATCH 03/32] feat(world-modules): add haskeys module --- .../cli/src/utils/defaultModuleContracts.ts | 7 + packages/world-modules/mud.config.ts | 15 + packages/world-modules/src/index.sol | 1 + .../src/modules/haskeys/HasKeysHook.sol | 63 ++++ .../src/modules/haskeys/HasKeysModule.sol | 87 +++++ .../src/modules/haskeys/constants.sol | 7 + .../src/modules/haskeys/hasKey.sol | 28 ++ .../src/modules/haskeys/tables/HasKeys.sol | 321 ++++++++++++++++++ 8 files changed, 529 insertions(+) create mode 100644 packages/world-modules/src/modules/haskeys/HasKeysHook.sol create mode 100644 packages/world-modules/src/modules/haskeys/HasKeysModule.sol create mode 100644 packages/world-modules/src/modules/haskeys/constants.sol create mode 100644 packages/world-modules/src/modules/haskeys/hasKey.sol create mode 100644 packages/world-modules/src/modules/haskeys/tables/HasKeys.sol diff --git a/packages/cli/src/utils/defaultModuleContracts.ts b/packages/cli/src/utils/defaultModuleContracts.ts index 9356a51b5b..c23809831e 100644 --- a/packages/cli/src/utils/defaultModuleContracts.ts +++ b/packages/cli/src/utils/defaultModuleContracts.ts @@ -1,5 +1,6 @@ import KeysWithValueModuleData from "@latticexyz/world-modules/out/KeysWithValueModule.sol/KeysWithValueModule.json" assert { type: "json" }; import KeysInTableModuleData from "@latticexyz/world-modules/out/KeysInTableModule.sol/KeysInTableModule.json" assert { type: "json" }; +import HasKeysModuleData from "@latticexyz/world-modules/out/HasKeysModule.sol/HasKeysModule.json" assert { type: "json" }; import UniqueEntityModuleData from "@latticexyz/world-modules/out/UniqueEntityModule.sol/UniqueEntityModule.json" assert { type: "json" }; // eslint-disable-next-line max-len import Unstable_CallWithSignatureModuleData from "@latticexyz/world-modules/out/Unstable_CallWithSignatureModule.sol/Unstable_CallWithSignatureModule.json" assert { type: "json" }; @@ -22,6 +23,12 @@ export const defaultModuleContracts = [ placeholders: findPlaceholders(KeysInTableModuleData.bytecode.linkReferences), deployedBytecodeSize: size(KeysInTableModuleData.deployedBytecode.object as Hex), }, + { + name: "HasKeysModule", + abi: HasKeysModuleData.abi as Abi, + bytecode: HasKeysModuleData.bytecode.object as Hex, + deployedBytecodeSize: size(HasKeysModuleData.deployedBytecode.object as Hex), + }, { name: "UniqueEntityModule", abi: UniqueEntityModuleData.abi as Abi, diff --git a/packages/world-modules/mud.config.ts b/packages/world-modules/mud.config.ts index c9813db299..875ca1656a 100644 --- a/packages/world-modules/mud.config.ts +++ b/packages/world-modules/mud.config.ts @@ -61,6 +61,21 @@ export default defineWorld({ storeArgument: true, }, }, + /************************************************************************ + * + * HAS KEYS MODULE + * + ************************************************************************/ + HasKeys: { + directory: "modules/haskeys/tables", + keySchema: { + sourceTable: "ResourceId", + keysHash: "bytes32", + }, + valueSchema: { has: "bool" }, + dataStruct: false, + storeArgument: true, + }, /************************************************************************ * * UNIQUE ENTITY MODULE diff --git a/packages/world-modules/src/index.sol b/packages/world-modules/src/index.sol index 5fa265ec1f..59ecd8a60d 100644 --- a/packages/world-modules/src/index.sol +++ b/packages/world-modules/src/index.sol @@ -7,6 +7,7 @@ import { KeysWithValue } from "./modules/keyswithvalue/tables/KeysWithValue.sol" import { KeysInTable, KeysInTableData } from "./modules/keysintable/tables/KeysInTable.sol"; import { UsedKeysIndex } from "./modules/keysintable/tables/UsedKeysIndex.sol"; import { UniqueEntity } from "./modules/uniqueentity/tables/UniqueEntity.sol"; +import { HasKeys } from "./modules/haskeys/tables/HasKeys.sol"; import { CallboundDelegations } from "./modules/std-delegations/tables/CallboundDelegations.sol"; import { SystemboundDelegations } from "./modules/std-delegations/tables/SystemboundDelegations.sol"; import { TimeboundDelegations } from "./modules/std-delegations/tables/TimeboundDelegations.sol"; diff --git a/packages/world-modules/src/modules/haskeys/HasKeysHook.sol b/packages/world-modules/src/modules/haskeys/HasKeysHook.sol new file mode 100644 index 0000000000..6e9b01ad80 --- /dev/null +++ b/packages/world-modules/src/modules/haskeys/HasKeysHook.sol @@ -0,0 +1,63 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.8.24; + +import { PackedCounter } from "@latticexyz/store/src/PackedCounter.sol"; +import { FieldLayout } from "@latticexyz/store/src/FieldLayout.sol"; +import { StoreHook } from "@latticexyz/store/src/StoreHook.sol"; +import { ResourceId } from "@latticexyz/store/src/ResourceId.sol"; + +import { HasKeys } from "./tables/HasKeys.sol"; + +/** + * Note: if a table with composite keys is used, only the first five keys of the tuple are indexed + */ +contract HasKeysHook is StoreHook { + function handleSet(ResourceId tableId, bytes32[] memory keyTuple) internal { + bytes32 keysHash = keccak256(abi.encode(keyTuple)); + + // If the key has not yet been set in the table... + if (!HasKeys.get(tableId, keysHash)) { + HasKeys.set(tableId, keysHash, true); + } + } + + function onBeforeSetRecord( + ResourceId tableId, + bytes32[] memory keyTuple, + bytes memory, + PackedCounter, + bytes memory, + FieldLayout + ) public override { + handleSet(tableId, keyTuple); + } + + function onAfterSpliceStaticData( + ResourceId tableId, + bytes32[] memory keyTuple, + uint48, + bytes memory + ) public override { + handleSet(tableId, keyTuple); + } + + function onAfterSpliceDynamicData( + ResourceId tableId, + bytes32[] memory keyTuple, + uint8, + uint40, + uint40, + PackedCounter, + bytes memory + ) public override { + handleSet(tableId, keyTuple); + } + + function onBeforeDeleteRecord(ResourceId tableId, bytes32[] memory keyTuple, FieldLayout) public override { + bytes32 keysHash = keccak256(abi.encode(keyTuple)); + + if (HasKeys.get(tableId, keysHash)) { + HasKeys.deleteRecord(tableId, keysHash); + } + } +} diff --git a/packages/world-modules/src/modules/haskeys/HasKeysModule.sol b/packages/world-modules/src/modules/haskeys/HasKeysModule.sol new file mode 100644 index 0000000000..b48712ad9f --- /dev/null +++ b/packages/world-modules/src/modules/haskeys/HasKeysModule.sol @@ -0,0 +1,87 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.8.24; + +import { BEFORE_SET_RECORD, AFTER_SPLICE_STATIC_DATA, AFTER_SPLICE_DYNAMIC_DATA, BEFORE_DELETE_RECORD } from "@latticexyz/store/src/storeHookTypes.sol"; +import { ResourceIds } from "@latticexyz/store/src/codegen/tables/ResourceIds.sol"; + +import { Module } from "@latticexyz/world/src/Module.sol"; + +import { IBaseWorld } from "@latticexyz/world/src/codegen/interfaces/IBaseWorld.sol"; +import { InstalledModules } from "@latticexyz/world/src/codegen/index.sol"; + +import { ResourceId, WorldResourceIdInstance } from "@latticexyz/world/src/WorldResourceId.sol"; +import { revertWithBytes } from "@latticexyz/world/src/revertWithBytes.sol"; + +import { HasKeysHook } from "./HasKeysHook.sol"; +import { HasKeys, HasKeysTableId } from "./tables/HasKeys.sol"; + +/** + * This module deploys a hook that is called when a value is set in the `sourceTableId` + * provided in the install methods arguments. The hook keeps track of the keys that are in a given table. + * This mapping is stored in a global table that is registered when the module is first installed. + * + * Note: this module currently only supports `installRoot` (via `World.installRootModule`). + * TODO: add support for `install` (via `World.installModule`) by using `callFrom` with the `msgSender()` + */ +contract HasKeysModule is Module { + using WorldResourceIdInstance for ResourceId; + + // The HasKeysHook is deployed once and infers the target table id + // from the source table id (passed as argument to the hook methods) + HasKeysHook private immutable hook = new HasKeysHook(); + + function installRoot(bytes memory encodedArgs) public override { + // Naive check to ensure this is only installed once + // TODO: only revert if there's nothing to do + requireNotInstalled(__self, encodedArgs); + + // Extract source table id from args + ResourceId sourceTableId = ResourceId.wrap(abi.decode(encodedArgs, (bytes32))); + + IBaseWorld world = IBaseWorld(_world()); + + // Initialize variable to reuse in low level calls + bool success; + bytes memory returnData; + + if (!ResourceIds._getExists(HasKeysTableId)) { + // Register the tables + (success, returnData) = address(world).delegatecall( + abi.encodeCall( + world.registerTable, + ( + HasKeysTableId, + HasKeys.getFieldLayout(), + HasKeys.getKeySchema(), + HasKeys.getValueSchema(), + HasKeys.getKeyNames(), + HasKeys.getFieldNames() + ) + ) + ); + if (!success) revertWithBytes(returnData); + + // Grant the hook access to the tables + (success, returnData) = address(world).delegatecall( + abi.encodeCall(world.grantAccess, (HasKeysTableId, address(hook))) + ); + if (!success) revertWithBytes(returnData); + } + + // Register a hook that is called when a value is set in the source table + (success, returnData) = address(world).delegatecall( + abi.encodeCall( + world.registerStoreHook, + ( + sourceTableId, + hook, + BEFORE_SET_RECORD | AFTER_SPLICE_STATIC_DATA | AFTER_SPLICE_DYNAMIC_DATA | BEFORE_DELETE_RECORD + ) + ) + ); + } + + function install(bytes memory) public pure { + revert Module_NonRootInstallNotSupported(); + } +} diff --git a/packages/world-modules/src/modules/haskeys/constants.sol b/packages/world-modules/src/modules/haskeys/constants.sol new file mode 100644 index 0000000000..8ec3d34edf --- /dev/null +++ b/packages/world-modules/src/modules/haskeys/constants.sol @@ -0,0 +1,7 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.8.24; + +// Limiting the module namespace to 8 bytes so the last 8 bytes +// can be used for an identifier of the source table namespace to avoid +// collisions between tables with the same name in different namespaces +bytes8 constant MODULE_NAMESPACE = "haskeys"; diff --git a/packages/world-modules/src/modules/haskeys/hasKey.sol b/packages/world-modules/src/modules/haskeys/hasKey.sol new file mode 100644 index 0000000000..3e9055440f --- /dev/null +++ b/packages/world-modules/src/modules/haskeys/hasKey.sol @@ -0,0 +1,28 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.8.24; + +import { IStore } from "@latticexyz/store/src/IStore.sol"; +import { ResourceId } from "@latticexyz/store/src/ResourceId.sol"; + +import { HasKeys } from "./tables/HasKeys.sol"; + +/** + * Get whether the keyTuple is in the given table. + * + * Note: this util can only be called within the context of a Store (e.g. from a System or Module). + * For usage outside of a Store, use the overload that takes an explicit store argument. + */ +function hasKey(ResourceId tableId, bytes32[] memory keyTuple) view returns (bool) { + bytes32 keysHash = keccak256(abi.encode(keyTuple)); + + return HasKeys.get(tableId, keysHash); +} + +/** + * Get whether the keyTuple is in the given table for the given store. + */ +function hasKey(IStore store, ResourceId tableId, bytes32[] memory keyTuple) view returns (bool) { + bytes32 keysHash = keccak256(abi.encode(keyTuple)); + + return HasKeys.get(store, tableId, keysHash); +} diff --git a/packages/world-modules/src/modules/haskeys/tables/HasKeys.sol b/packages/world-modules/src/modules/haskeys/tables/HasKeys.sol new file mode 100644 index 0000000000..9bffb7f14f --- /dev/null +++ b/packages/world-modules/src/modules/haskeys/tables/HasKeys.sol @@ -0,0 +1,321 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.8.24; + +/* Autogenerated file. Do not edit manually. */ + +// Import schema type +import { SchemaType } from "@latticexyz/schema-type/src/solidity/SchemaType.sol"; + +// Import store internals +import { IStore } from "@latticexyz/store/src/IStore.sol"; +import { StoreSwitch } from "@latticexyz/store/src/StoreSwitch.sol"; +import { StoreCore } from "@latticexyz/store/src/StoreCore.sol"; +import { Bytes } from "@latticexyz/store/src/Bytes.sol"; +import { Memory } from "@latticexyz/store/src/Memory.sol"; +import { SliceLib } from "@latticexyz/store/src/Slice.sol"; +import { EncodeArray } from "@latticexyz/store/src/tightcoder/EncodeArray.sol"; +import { FieldLayout, FieldLayoutLib } from "@latticexyz/store/src/FieldLayout.sol"; +import { Schema, SchemaLib } from "@latticexyz/store/src/Schema.sol"; +import { PackedCounter, PackedCounterLib } from "@latticexyz/store/src/PackedCounter.sol"; +import { ResourceId } from "@latticexyz/store/src/ResourceId.sol"; + +// Import user types +import { ResourceId } from "@latticexyz/store/src/ResourceId.sol"; + +// Hex below is the result of `WorldResourceIdLib.encode({ namespace: "", name: "HasKeys", typeId: RESOURCE_TABLE });` +ResourceId constant _tableId = ResourceId.wrap(0x746200000000000000000000000000004861734b657973000000000000000000); +ResourceId constant HasKeysTableId = _tableId; + +FieldLayout constant _fieldLayout = FieldLayout.wrap( + 0x0001010001000000000000000000000000000000000000000000000000000000 +); + +library HasKeys { + /** + * @notice Get the table values' field layout. + * @return _fieldLayout The field layout for the table. + */ + function getFieldLayout() internal pure returns (FieldLayout) { + return _fieldLayout; + } + + /** + * @notice Get the table's key schema. + * @return _keySchema The key schema for the table. + */ + function getKeySchema() internal pure returns (Schema) { + SchemaType[] memory _keySchema = new SchemaType[](2); + _keySchema[0] = SchemaType.BYTES32; + _keySchema[1] = SchemaType.BYTES32; + + return SchemaLib.encode(_keySchema); + } + + /** + * @notice Get the table's value schema. + * @return _valueSchema The value schema for the table. + */ + function getValueSchema() internal pure returns (Schema) { + SchemaType[] memory _valueSchema = new SchemaType[](1); + _valueSchema[0] = SchemaType.BOOL; + + return SchemaLib.encode(_valueSchema); + } + + /** + * @notice Get the table's key field names. + * @return keyNames An array of strings with the names of key fields. + */ + function getKeyNames() internal pure returns (string[] memory keyNames) { + keyNames = new string[](2); + keyNames[0] = "sourceTable"; + keyNames[1] = "keysHash"; + } + + /** + * @notice Get the table's value field names. + * @return fieldNames An array of strings with the names of value fields. + */ + function getFieldNames() internal pure returns (string[] memory fieldNames) { + fieldNames = new string[](1); + fieldNames[0] = "has"; + } + + /** + * @notice Register the table with its config. + */ + function register() internal { + StoreSwitch.registerTable(_tableId, _fieldLayout, getKeySchema(), getValueSchema(), getKeyNames(), getFieldNames()); + } + + /** + * @notice Register the table with its config. + */ + function _register() internal { + StoreCore.registerTable(_tableId, _fieldLayout, getKeySchema(), getValueSchema(), getKeyNames(), getFieldNames()); + } + + /** + * @notice Register the table with its config (using the specified store). + */ + function register(IStore _store) internal { + _store.registerTable(_tableId, _fieldLayout, getKeySchema(), getValueSchema(), getKeyNames(), getFieldNames()); + } + + /** + * @notice Get has. + */ + function getHas(ResourceId sourceTable, bytes32 keysHash) internal view returns (bool has) { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = ResourceId.unwrap(sourceTable); + _keyTuple[1] = keysHash; + + bytes32 _blob = StoreSwitch.getStaticField(_tableId, _keyTuple, 0, _fieldLayout); + return (_toBool(uint8(bytes1(_blob)))); + } + + /** + * @notice Get has. + */ + function _getHas(ResourceId sourceTable, bytes32 keysHash) internal view returns (bool has) { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = ResourceId.unwrap(sourceTable); + _keyTuple[1] = keysHash; + + bytes32 _blob = StoreCore.getStaticField(_tableId, _keyTuple, 0, _fieldLayout); + return (_toBool(uint8(bytes1(_blob)))); + } + + /** + * @notice Get has (using the specified store). + */ + function getHas(IStore _store, ResourceId sourceTable, bytes32 keysHash) internal view returns (bool has) { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = ResourceId.unwrap(sourceTable); + _keyTuple[1] = keysHash; + + bytes32 _blob = _store.getStaticField(_tableId, _keyTuple, 0, _fieldLayout); + return (_toBool(uint8(bytes1(_blob)))); + } + + /** + * @notice Get has. + */ + function get(ResourceId sourceTable, bytes32 keysHash) internal view returns (bool has) { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = ResourceId.unwrap(sourceTable); + _keyTuple[1] = keysHash; + + bytes32 _blob = StoreSwitch.getStaticField(_tableId, _keyTuple, 0, _fieldLayout); + return (_toBool(uint8(bytes1(_blob)))); + } + + /** + * @notice Get has. + */ + function _get(ResourceId sourceTable, bytes32 keysHash) internal view returns (bool has) { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = ResourceId.unwrap(sourceTable); + _keyTuple[1] = keysHash; + + bytes32 _blob = StoreCore.getStaticField(_tableId, _keyTuple, 0, _fieldLayout); + return (_toBool(uint8(bytes1(_blob)))); + } + + /** + * @notice Get has (using the specified store). + */ + function get(IStore _store, ResourceId sourceTable, bytes32 keysHash) internal view returns (bool has) { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = ResourceId.unwrap(sourceTable); + _keyTuple[1] = keysHash; + + bytes32 _blob = _store.getStaticField(_tableId, _keyTuple, 0, _fieldLayout); + return (_toBool(uint8(bytes1(_blob)))); + } + + /** + * @notice Set has. + */ + function setHas(ResourceId sourceTable, bytes32 keysHash, bool has) internal { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = ResourceId.unwrap(sourceTable); + _keyTuple[1] = keysHash; + + StoreSwitch.setStaticField(_tableId, _keyTuple, 0, abi.encodePacked((has)), _fieldLayout); + } + + /** + * @notice Set has. + */ + function _setHas(ResourceId sourceTable, bytes32 keysHash, bool has) internal { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = ResourceId.unwrap(sourceTable); + _keyTuple[1] = keysHash; + + StoreCore.setStaticField(_tableId, _keyTuple, 0, abi.encodePacked((has)), _fieldLayout); + } + + /** + * @notice Set has (using the specified store). + */ + function setHas(IStore _store, ResourceId sourceTable, bytes32 keysHash, bool has) internal { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = ResourceId.unwrap(sourceTable); + _keyTuple[1] = keysHash; + + _store.setStaticField(_tableId, _keyTuple, 0, abi.encodePacked((has)), _fieldLayout); + } + + /** + * @notice Set has. + */ + function set(ResourceId sourceTable, bytes32 keysHash, bool has) internal { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = ResourceId.unwrap(sourceTable); + _keyTuple[1] = keysHash; + + StoreSwitch.setStaticField(_tableId, _keyTuple, 0, abi.encodePacked((has)), _fieldLayout); + } + + /** + * @notice Set has. + */ + function _set(ResourceId sourceTable, bytes32 keysHash, bool has) internal { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = ResourceId.unwrap(sourceTable); + _keyTuple[1] = keysHash; + + StoreCore.setStaticField(_tableId, _keyTuple, 0, abi.encodePacked((has)), _fieldLayout); + } + + /** + * @notice Set has (using the specified store). + */ + function set(IStore _store, ResourceId sourceTable, bytes32 keysHash, bool has) internal { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = ResourceId.unwrap(sourceTable); + _keyTuple[1] = keysHash; + + _store.setStaticField(_tableId, _keyTuple, 0, abi.encodePacked((has)), _fieldLayout); + } + + /** + * @notice Delete all data for given keys. + */ + function deleteRecord(ResourceId sourceTable, bytes32 keysHash) internal { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = ResourceId.unwrap(sourceTable); + _keyTuple[1] = keysHash; + + StoreSwitch.deleteRecord(_tableId, _keyTuple); + } + + /** + * @notice Delete all data for given keys. + */ + function _deleteRecord(ResourceId sourceTable, bytes32 keysHash) internal { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = ResourceId.unwrap(sourceTable); + _keyTuple[1] = keysHash; + + StoreCore.deleteRecord(_tableId, _keyTuple, _fieldLayout); + } + + /** + * @notice Delete all data for given keys (using the specified store). + */ + function deleteRecord(IStore _store, ResourceId sourceTable, bytes32 keysHash) internal { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = ResourceId.unwrap(sourceTable); + _keyTuple[1] = keysHash; + + _store.deleteRecord(_tableId, _keyTuple); + } + + /** + * @notice Tightly pack static (fixed length) data using this table's schema. + * @return The static data, encoded into a sequence of bytes. + */ + function encodeStatic(bool has) internal pure returns (bytes memory) { + return abi.encodePacked(has); + } + + /** + * @notice Encode all of a record's fields. + * @return The static (fixed length) data, encoded into a sequence of bytes. + * @return The lengths of the dynamic fields (packed into a single bytes32 value). + * @return The dynamic (variable length) data, encoded into a sequence of bytes. + */ + function encode(bool has) internal pure returns (bytes memory, PackedCounter, bytes memory) { + bytes memory _staticData = encodeStatic(has); + + PackedCounter _encodedLengths; + bytes memory _dynamicData; + + return (_staticData, _encodedLengths, _dynamicData); + } + + /** + * @notice Encode keys as a bytes32 array using this table's field layout. + */ + function encodeKeyTuple(ResourceId sourceTable, bytes32 keysHash) internal pure returns (bytes32[] memory) { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = ResourceId.unwrap(sourceTable); + _keyTuple[1] = keysHash; + + return _keyTuple; + } +} + +/** + * @notice Cast a value to a bool. + * @dev Boolean values are encoded as uint8 (1 = true, 0 = false), but Solidity doesn't allow casting between uint8 and bool. + * @param value The uint8 value to convert. + * @return result The boolean value. + */ +function _toBool(uint8 value) pure returns (bool result) { + assembly { + result := value + } +} From 3c917f4b33ad1f721ac5866b2d0b023071401133 Mon Sep 17 00:00:00 2001 From: Dhvani Patel Date: Mon, 26 Feb 2024 12:15:17 +0000 Subject: [PATCH 04/32] fix: turn off turbo daemon --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index bb068ea10a..a4f61877fa 100644 --- a/package.json +++ b/package.json @@ -12,8 +12,8 @@ "all-install": "for dir in . docs e2e examples/* templates/*; do (cd \"$dir\" && pwd && pnpm install); done", "bench": "pnpm run --recursive bench", "build": "turbo run build", - "changelog:generate": "bun scripts/changelog.ts", "clean": "turbo run clean", + "changelog:generate": "bun scripts/changelog.ts", "dev": "TSUP_SKIP_DTS=true turbo run dev --concurrency 100", "dist-tag-rm": "pnpm recursive exec -- sh -c 'npm dist-tag rm $(cat package.json | jq -r \".name\") $TAG || true'", "docs:generate:api": "bun scripts/render-api-docs.ts", From b8ed8eff930d83dc51ad06509385149656ed2b12 Mon Sep 17 00:00:00 2001 From: Dhvani Patel Date: Thu, 29 Feb 2024 21:51:20 +0000 Subject: [PATCH 05/32] feat(cli): increase default anvil gas limit --- packages/cli/src/commands/dev-contracts.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/cli/src/commands/dev-contracts.ts b/packages/cli/src/commands/dev-contracts.ts index a0b65ce1f7..8069ea93f3 100644 --- a/packages/cli/src/commands/dev-contracts.ts +++ b/packages/cli/src/commands/dev-contracts.ts @@ -47,7 +47,7 @@ const commandModule: CommandModule Date: Fri, 1 Mar 2024 11:15:28 +0000 Subject: [PATCH 06/32] feat: compile to cjs --- docs/package.json | 1 - e2e/packages/client-vanilla/package.json | 1 - e2e/packages/sync-test/package.json | 4 +- .../sync-test/setup/deployContracts.ts | 2 +- e2e/packages/sync-test/setup/startIndexer.ts | 2 +- e2e/packages/test-data/generateLogs.ts | 2 +- e2e/packages/test-data/package.json | 3 +- examples/faucet-client/package.json | 1 - examples/indexer-client/package.json | 1 - .../packages/client-phaser/package.json | 1 - .../packages/client-react/package.json | 1 - .../packages/client-vanilla/package.json | 1 - .../packages/plugin-example/package.json | 40 + .../packages/plugin-example/tsup.config.ts | 11 + .../packages/client/package.json | 1 - package.json | 4 +- packages/abi-ts/package.json | 5 +- packages/abi-ts/tsup.config.ts | 2 +- packages/block-logs-stream/package.json | 1 - packages/block-logs-stream/tsup.config.ts | 2 +- packages/cli/package.json | 7 +- packages/cli/scripts/generate-test-tables.ts | 8 +- packages/cli/src/build.ts | 3 +- packages/cli/src/commands/devnode.ts | 2 +- packages/cli/tsup.config.ts | 2 +- packages/common/package.json | 9 +- packages/common/src/foundry/index.ts | 2 +- packages/common/tsup.config.ts | 2 +- packages/config/package.json | 3 +- .../config/src/deprecated/node/loadConfig.ts | 2 +- packages/config/tsup.config.ts | 2 +- packages/dev-tools/package.json | 1 - packages/dev-tools/tsup.config.ts | 2 +- packages/faucet/bin/faucet-server.ts | 46 +- packages/faucet/package.json | 1 - packages/faucet/tsup.config.ts | 2 +- packages/gas-report/package.json | 7 +- packages/gas-report/ts/index.ts | 2 +- packages/gas-report/tsup.config.ts | 2 +- packages/noise/build/release.wasm.map | 2 +- packages/noise/dist/index.d.ts | 4 - packages/noise/package.json | 40 + packages/noise/tsup.config.ts | 11 + packages/phaserx/dist/index.d.ts | 414 +++++ packages/phaserx/dist/index.js | 111 ++ packages/phaserx/dist/index.js.map | 1 + packages/phaserx/dist/index.mjs | 111 ++ packages/phaserx/dist/index.mjs.map | 1 + packages/phaserx/package.json | 5 + packages/protocol-parser/package.json | 1 - packages/protocol-parser/tsup.config.ts | 2 +- packages/query/tsup.config.ts | 2 +- packages/react/package.json | 1 - packages/react/tsup.config.ts | 2 +- packages/recs/package.json | 1 - packages/recs/tsup.config.ts | 2 +- packages/schema-type/package.json | 1 - packages/schema-type/tsup.config.ts | 2 +- packages/services/package.json | 1 - packages/services/tsup.config.ts | 2 +- .../bin/postgres-decoded-indexer.ts | 71 +- .../store-indexer/bin/postgres-indexer.ts | 222 +-- packages/store-indexer/bin/sqlite-indexer.ts | 72 +- packages/store-indexer/package.json | 1 - packages/store-indexer/tsup.config.ts | 2 +- packages/store-sync/package.json | 1 - packages/store-sync/tsup.config.ts | 2 +- packages/store/package.json | 1 - .../store/ts/scripts/generate-test-tables.ts | 8 +- .../store/ts/scripts/generate-tightcoder.ts | 16 +- packages/store/ts/scripts/tablegen.ts | 10 +- packages/store/tsup.config.ts | 2 +- packages/utils/package.json | 1 - packages/utils/tsup.config.ts | 2 +- packages/world-modules/package.json | 1 - packages/world-modules/ts/scripts/tablegen.ts | 10 +- packages/world-modules/ts/scripts/worldgen.ts | 38 +- packages/world-modules/tsup.config.ts | 2 +- packages/world/package.json | 1 - .../world/ts/scripts/generate-test-tables.ts | 9 +- packages/world/ts/scripts/tablegen.ts | 10 +- packages/world/ts/scripts/worldgen.ts | 42 +- packages/world/tsup.config.ts | 2 +- pnpm-lock.yaml | 1564 ++++++++++++++--- scripts/changelog.ts | 2 +- scripts/render-api-docs.ts | 2 +- templates/phaser/packages/client/package.json | 1 - .../react-ecs/packages/client/package.json | 1 - templates/react/packages/client/package.json | 1 - .../threejs/packages/client/package.json | 1 - .../vanilla/packages/client/package.json | 1 - 91 files changed, 2478 insertions(+), 529 deletions(-) create mode 100644 examples/minimal/packages/plugin-example/package.json create mode 100644 examples/minimal/packages/plugin-example/tsup.config.ts create mode 100644 packages/noise/package.json create mode 100644 packages/noise/tsup.config.ts create mode 100644 packages/phaserx/dist/index.d.ts create mode 100644 packages/phaserx/dist/index.js create mode 100644 packages/phaserx/dist/index.js.map create mode 100644 packages/phaserx/dist/index.mjs create mode 100644 packages/phaserx/dist/index.mjs.map create mode 100644 packages/phaserx/package.json diff --git a/docs/package.json b/docs/package.json index a1b0a4430a..b5c5f64d71 100644 --- a/docs/package.json +++ b/docs/package.json @@ -4,7 +4,6 @@ "private": true, "description": "mud.dev docs", "license": "", - "type": "module", "main": "index.js", "scripts": { "build": "next build", diff --git a/e2e/packages/client-vanilla/package.json b/e2e/packages/client-vanilla/package.json index d7f2a77d3d..2a7afe4bc2 100644 --- a/e2e/packages/client-vanilla/package.json +++ b/e2e/packages/client-vanilla/package.json @@ -3,7 +3,6 @@ "version": "0.0.0", "private": true, "license": "MIT", - "type": "module", "scripts": { "build": "vite build", "clean": "rimraf dist", diff --git a/e2e/packages/sync-test/package.json b/e2e/packages/sync-test/package.json index 5b5b09cb0d..fbfb8c963d 100644 --- a/e2e/packages/sync-test/package.json +++ b/e2e/packages/sync-test/package.json @@ -23,10 +23,10 @@ "@latticexyz/world-modules": "link:../../../packages/world-modules", "@viem/anvil": "^0.0.6", "abitype": "1.0.0", - "chalk": "^5.2.0", + "chalk": "4.1.2", "dotenv": "^16.0.3", "drizzle-orm": "^0.28.5", - "execa": "^7.1.1", + "execa": "^5.1.1", "happy-dom": "^12.10.3", "postgres": "3.3.5", "typescript": "5.4.2", diff --git a/e2e/packages/sync-test/setup/deployContracts.ts b/e2e/packages/sync-test/setup/deployContracts.ts index 929dfb1d61..688cdc4fc6 100644 --- a/e2e/packages/sync-test/setup/deployContracts.ts +++ b/e2e/packages/sync-test/setup/deployContracts.ts @@ -1,5 +1,5 @@ import chalk from "chalk"; -import { execa } from "execa"; +import execa from "execa"; export function deployContracts(rpc: string) { const deploymentProcess = execa("pnpm", ["mud", "deploy", "--rpc", rpc], { diff --git a/e2e/packages/sync-test/setup/startIndexer.ts b/e2e/packages/sync-test/setup/startIndexer.ts index ac0d3f9a55..b8954b9ec2 100644 --- a/e2e/packages/sync-test/setup/startIndexer.ts +++ b/e2e/packages/sync-test/setup/startIndexer.ts @@ -1,5 +1,5 @@ import chalk from "chalk"; -import { execa } from "execa"; +import execa from "execa"; import { rmSync } from "node:fs"; import { cleanDatabase } from "@latticexyz/store-sync/postgres"; import { drizzle } from "drizzle-orm/postgres-js"; diff --git a/e2e/packages/test-data/generateLogs.ts b/e2e/packages/test-data/generateLogs.ts index c884066e17..dbdf2673b6 100644 --- a/e2e/packages/test-data/generateLogs.ts +++ b/e2e/packages/test-data/generateLogs.ts @@ -1,4 +1,4 @@ -import { execa } from "execa"; +import execa from "execa"; import { ClientConfig, GetContractReturnType, diff --git a/e2e/packages/test-data/package.json b/e2e/packages/test-data/package.json index bf0d6d3bb9..e39c4353f3 100644 --- a/e2e/packages/test-data/package.json +++ b/e2e/packages/test-data/package.json @@ -3,7 +3,6 @@ "version": "0.0.0", "private": true, "license": "MIT", - "type": "module", "scripts": { "generate-bench-data-bulk": "tsx generate-bench-data-bulk.ts", "generate-bench-data-query": "tsx generate-bench-data-query.ts", @@ -15,7 +14,7 @@ "@latticexyz/common": "link:../../../packages/common", "@latticexyz/store": "link:../../../packages/store", "@viem/anvil": "^0.0.6", - "execa": "^7.1.1", + "execa": "^5.1.1", "tsx": "^3.12.6", "typescript": "5.4.2", "viem": "2.9.20" diff --git a/examples/faucet-client/package.json b/examples/faucet-client/package.json index e64f808787..47dcf058a4 100644 --- a/examples/faucet-client/package.json +++ b/examples/faucet-client/package.json @@ -3,7 +3,6 @@ "version": "0.0.0", "private": true, "license": "MIT", - "type": "module", "scripts": { "drip": "tsx index.ts" }, diff --git a/examples/indexer-client/package.json b/examples/indexer-client/package.json index 3ad7366071..4c592cfac0 100644 --- a/examples/indexer-client/package.json +++ b/examples/indexer-client/package.json @@ -3,7 +3,6 @@ "version": "0.0.0", "private": true, "license": "MIT", - "type": "module", "scripts": { "read-indexer": "tsx index.ts" }, diff --git a/examples/minimal/packages/client-phaser/package.json b/examples/minimal/packages/client-phaser/package.json index 58c4e8d370..70ea425c13 100644 --- a/examples/minimal/packages/client-phaser/package.json +++ b/examples/minimal/packages/client-phaser/package.json @@ -3,7 +3,6 @@ "version": "0.0.0", "private": true, "license": "MIT", - "type": "module", "scripts": { "build": "vite build", "dev": "vite", diff --git a/examples/minimal/packages/client-react/package.json b/examples/minimal/packages/client-react/package.json index 82db6ad521..10e25149f0 100644 --- a/examples/minimal/packages/client-react/package.json +++ b/examples/minimal/packages/client-react/package.json @@ -3,7 +3,6 @@ "version": "0.0.0", "private": true, "license": "MIT", - "type": "module", "scripts": { "build": "vite build", "dev": "wait-port localhost:8545 && vite", diff --git a/examples/minimal/packages/client-vanilla/package.json b/examples/minimal/packages/client-vanilla/package.json index 589c0b538d..fb34f1c49f 100644 --- a/examples/minimal/packages/client-vanilla/package.json +++ b/examples/minimal/packages/client-vanilla/package.json @@ -3,7 +3,6 @@ "version": "0.0.0", "private": true, "license": "MIT", - "type": "module", "scripts": { "build": "vite build", "dev": "wait-port localhost:8545 && vite", diff --git a/examples/minimal/packages/plugin-example/package.json b/examples/minimal/packages/plugin-example/package.json new file mode 100644 index 0000000000..58aba3402a --- /dev/null +++ b/examples/minimal/packages/plugin-example/package.json @@ -0,0 +1,40 @@ +{ + "name": "plugin-example", + "version": "0.0.0", + "private": true, + "license": "MIT", + "exports": { + ".": "./dist/ts/library/index.js", + "./register": "./dist/ts/register/index.js" + }, + "typesVersions": { + "*": { + "index": [ + "./ts/library/index.ts" + ], + "register": [ + "./ts/register/index.ts" + ] + } + }, + "scripts": { + "build": "pnpm run build:js", + "build:js": "tsup", + "clean": "pnpm run clean:js", + "clean:js": "rimraf dist", + "test": "tsc --noEmit" + }, + "dependencies": { + "@latticexyz/common": "link:../../../../packages/common", + "@latticexyz/config": "link:../../../../packages/config", + "@latticexyz/store": "link:../../../../packages/store", + "@latticexyz/world": "link:../../../../packages/world", + "zod": "^3.21.4" + }, + "devDependencies": { + "@types/node": "^18.15.11", + "rimraf": "^3.0.2", + "tsup": "^6.7.0", + "typescript": "5.4.2" + } +} diff --git a/examples/minimal/packages/plugin-example/tsup.config.ts b/examples/minimal/packages/plugin-example/tsup.config.ts new file mode 100644 index 0000000000..2a36085c5b --- /dev/null +++ b/examples/minimal/packages/plugin-example/tsup.config.ts @@ -0,0 +1,11 @@ +import { defineConfig } from "tsup"; + +export default defineConfig({ + entry: ["ts/library/index.ts", "ts/register/index.ts"], + target: "esnext", + format: ["esm", "cjs"], + dts: false, + sourcemap: true, + clean: true, + minify: true, +}); diff --git a/examples/multiple-accounts/packages/client/package.json b/examples/multiple-accounts/packages/client/package.json index 66cefb659d..56a1c37abb 100644 --- a/examples/multiple-accounts/packages/client/package.json +++ b/examples/multiple-accounts/packages/client/package.json @@ -3,7 +3,6 @@ "version": "0.0.0", "private": true, "license": "MIT", - "type": "module", "scripts": { "build": "vite build", "dev": "wait-port localhost:8545 && vite", diff --git a/package.json b/package.json index a4f61877fa..1ee9112164 100644 --- a/package.json +++ b/package.json @@ -44,9 +44,9 @@ "@typescript-eslint/eslint-plugin": "7.1.1", "@typescript-eslint/parser": "7.1.1", "bun": "^1.0.11", - "chalk": "^5.2.0", + "chalk": "4.1.2", "eslint": "8.57.0", - "execa": "^7.0.0", + "execa": "^5.1.1", "glob": "^8.0.3", "husky": ">=6", "lint-staged": ">=10", diff --git a/packages/abi-ts/package.json b/packages/abi-ts/package.json index 54f61b87b6..d9589d68ba 100644 --- a/packages/abi-ts/package.json +++ b/packages/abi-ts/package.json @@ -8,7 +8,6 @@ "directory": "packages/abi-ts" }, "license": "MIT", - "type": "module", "exports": { ".": "./dist/index.js" }, @@ -31,9 +30,9 @@ "test:ci": "pnpm run test" }, "dependencies": { - "chalk": "^5.3.0", + "chalk": "4.1.2", "debug": "^4.3.4", - "execa": "^7.0.0", + "execa": "^5.1.1", "glob": "^8.0.3", "yargs": "^17.7.1" }, diff --git a/packages/abi-ts/tsup.config.ts b/packages/abi-ts/tsup.config.ts index 17e4b13a46..c0b194943c 100644 --- a/packages/abi-ts/tsup.config.ts +++ b/packages/abi-ts/tsup.config.ts @@ -3,7 +3,7 @@ import { defineConfig } from "tsup"; export default defineConfig({ entry: ["src/index.ts", "src/abi-ts.ts"], target: "esnext", - format: ["esm"], + format: ["esm", "cjs"], dts: !process.env.TSUP_SKIP_DTS, sourcemap: true, clean: true, diff --git a/packages/block-logs-stream/package.json b/packages/block-logs-stream/package.json index 812b62611a..9e9114c8e8 100644 --- a/packages/block-logs-stream/package.json +++ b/packages/block-logs-stream/package.json @@ -8,7 +8,6 @@ "directory": "packages/block-logs-stream" }, "license": "MIT", - "type": "module", "exports": { ".": "./dist/index.js" }, diff --git a/packages/block-logs-stream/tsup.config.ts b/packages/block-logs-stream/tsup.config.ts index 86fe9a5339..af92ad0d25 100644 --- a/packages/block-logs-stream/tsup.config.ts +++ b/packages/block-logs-stream/tsup.config.ts @@ -3,7 +3,7 @@ import { defineConfig } from "tsup"; export default defineConfig({ entry: ["src/index.ts"], target: "esnext", - format: ["esm"], + format: ["esm", "cjs"], dts: !process.env.TSUP_SKIP_DTS, sourcemap: true, clean: true, diff --git a/packages/cli/package.json b/packages/cli/package.json index 1aca9b97b7..ea0ed54105 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -8,7 +8,6 @@ "directory": "packages/cli" }, "license": "MIT", - "type": "module", "exports": { ".": "./dist/index.js" }, @@ -47,18 +46,18 @@ "@latticexyz/world": "workspace:*", "@latticexyz/world-modules": "workspace:*", "asn1.js": "^5.4.1", - "chalk": "^5.0.1", + "chalk": "4.1.2", "chokidar": "^3.5.3", "debug": "^4.3.4", "dotenv": "^16.0.3", "ejs": "^3.1.8", "ethers": "^5.7.2", - "execa": "^7.0.0", + "execa": "^5.1.1", "glob": "^8.0.3", "nice-grpc-web": "^2.0.1", "openurl": "^1.1.1", "p-queue": "^7.4.1", - "p-retry": "^5.1.2", + "p-retry": "4.6.2", "path": "^0.12.7", "rxjs": "7.5.5", "throttle-debounce": "^5.0.0", diff --git a/packages/cli/scripts/generate-test-tables.ts b/packages/cli/scripts/generate-test-tables.ts index 7c541ae54c..e1cf9b2658 100644 --- a/packages/cli/scripts/generate-test-tables.ts +++ b/packages/cli/scripts/generate-test-tables.ts @@ -92,7 +92,9 @@ const config = defineStore({ }, }); -const srcDirectory = await getSrcDirectory(); -const remappings = await getRemappings(); +(async () => { + const srcDirectory = await getSrcDirectory(); + const remappings = await getRemappings(); -await tablegen(config, path.join(srcDirectory, config.codegen.outputDirectory), remappings); + await tablegen(config, path.join(srcDirectory, config.codegen.outputDirectory), remappings); +})(); \ No newline at end of file diff --git a/packages/cli/src/build.ts b/packages/cli/src/build.ts index 77a010ebaf..bc1355b478 100644 --- a/packages/cli/src/build.ts +++ b/packages/cli/src/build.ts @@ -5,7 +5,8 @@ import { World as WorldConfig } from "@latticexyz/world"; import { worldToV1 } from "@latticexyz/world/config/v2"; import { forge, getRemappings } from "@latticexyz/common/foundry"; import { getExistingContracts } from "./utils/getExistingContracts"; -import { execa } from "execa"; +import { debug as parentDebug } from "./debug"; +import execa from "execa"; type BuildOptions = { foundryProfile?: string; diff --git a/packages/cli/src/commands/devnode.ts b/packages/cli/src/commands/devnode.ts index 84378c75af..6452010c73 100644 --- a/packages/cli/src/commands/devnode.ts +++ b/packages/cli/src/commands/devnode.ts @@ -2,7 +2,7 @@ import { rmSync } from "fs"; import { homedir } from "os"; import path from "path"; import type { CommandModule } from "yargs"; -import { execa } from "execa"; +import execa from "execa"; type Options = { blocktime: number; diff --git a/packages/cli/tsup.config.ts b/packages/cli/tsup.config.ts index 1034d999ad..30d4197f00 100644 --- a/packages/cli/tsup.config.ts +++ b/packages/cli/tsup.config.ts @@ -20,7 +20,7 @@ const mudPackages: MudPackages = Object.fromEntries( export default defineConfig({ entry: ["src/index.ts", "src/mud.ts"], target: "esnext", - format: ["esm"], + format: ["esm", "cjs"], dts: !process.env.TSUP_SKIP_DTS, sourcemap: true, clean: true, diff --git a/packages/common/package.json b/packages/common/package.json index fd8fcfec84..c1a3fcbe4a 100644 --- a/packages/common/package.json +++ b/packages/common/package.json @@ -8,7 +8,6 @@ "directory": "packages/common" }, "license": "MIT", - "type": "module", "exports": { ".": "./dist/index.js", "./actions": "./dist/actions.js", @@ -64,10 +63,10 @@ "@latticexyz/schema-type": "workspace:*", "@solidity-parser/parser": "^0.16.0", "debug": "^4.3.4", - "execa": "^7.0.0", - "p-queue": "^7.4.1", - "p-retry": "^5.1.2", - "prettier": "3.2.5", + "execa": "^5.1.1", + "p-queue": "6.6.2", + "p-retry": "4.6.2", + "prettier": "^3.2.5", "prettier-plugin-solidity": "1.3.1", "viem": "2.9.20" }, diff --git a/packages/common/src/foundry/index.ts b/packages/common/src/foundry/index.ts index 628a98deea..c99ffe0e65 100644 --- a/packages/common/src/foundry/index.ts +++ b/packages/common/src/foundry/index.ts @@ -1,4 +1,4 @@ -import { execa, Options } from "execa"; +import execa, { Options } from "execa"; export interface ForgeConfig { // project diff --git a/packages/common/tsup.config.ts b/packages/common/tsup.config.ts index 04177d900b..451f521577 100644 --- a/packages/common/tsup.config.ts +++ b/packages/common/tsup.config.ts @@ -13,7 +13,7 @@ export default defineConfig({ kms: "src/exports/kms.ts", }, target: "esnext", - format: ["esm"], + format: ["esm", "cjs"], dts: !process.env.TSUP_SKIP_DTS, sourcemap: true, clean: true, diff --git a/packages/config/package.json b/packages/config/package.json index 44fb6b0926..9455e3cbaa 100644 --- a/packages/config/package.json +++ b/packages/config/package.json @@ -8,7 +8,6 @@ "directory": "packages/config" }, "license": "MIT", - "type": "module", "exports": { ".": "./dist/index.js", "./internal": "./dist/internal.js", @@ -48,7 +47,7 @@ "@latticexyz/common": "workspace:*", "@latticexyz/schema-type": "workspace:*", "esbuild": "^0.17.15", - "find-up": "^6.3.0", + "find-up": "5.0.0", "viem": "2.9.20", "zod": "^3.21.4", "zod-validation-error": "^1.3.0" diff --git a/packages/config/src/deprecated/node/loadConfig.ts b/packages/config/src/deprecated/node/loadConfig.ts index 9d4a52f338..447b8d7e69 100644 --- a/packages/config/src/deprecated/node/loadConfig.ts +++ b/packages/config/src/deprecated/node/loadConfig.ts @@ -1,4 +1,4 @@ -import { findUp } from "find-up"; +import findUp from "find-up"; import path from "path"; import { NotInsideProjectError } from "../library/errors"; import esbuild from "esbuild"; diff --git a/packages/config/tsup.config.ts b/packages/config/tsup.config.ts index 8204f00f19..b0575ecac2 100644 --- a/packages/config/tsup.config.ts +++ b/packages/config/tsup.config.ts @@ -9,7 +9,7 @@ export default defineConfig({ "deprecated/node": "src/deprecated/node/index.ts", }, target: "esnext", - format: ["esm"], + format: ["esm", "cjs"], dts: !process.env.TSUP_SKIP_DTS, sourcemap: true, clean: true, diff --git a/packages/dev-tools/package.json b/packages/dev-tools/package.json index 4cdf705120..55e1e700e2 100644 --- a/packages/dev-tools/package.json +++ b/packages/dev-tools/package.json @@ -8,7 +8,6 @@ "directory": "packages/dev-tools" }, "license": "MIT", - "type": "module", "exports": { ".": "./dist/index.js" }, diff --git a/packages/dev-tools/tsup.config.ts b/packages/dev-tools/tsup.config.ts index 315c0c9fb7..6030b90e79 100644 --- a/packages/dev-tools/tsup.config.ts +++ b/packages/dev-tools/tsup.config.ts @@ -15,7 +15,7 @@ const bundledDeps = Object.keys(packageJson.dependencies).filter((dep) => !peerD export default defineConfig({ entry: ["src/index.ts"], target: "esnext", - format: ["esm"], + format: ["esm", "cjs"], dts: !process.env.TSUP_SKIP_DTS, sourcemap: true, clean: true, diff --git a/packages/faucet/bin/faucet-server.ts b/packages/faucet/bin/faucet-server.ts index dbbd0ac73a..602004f212 100644 --- a/packages/faucet/bin/faucet-server.ts +++ b/packages/faucet/bin/faucet-server.ts @@ -21,25 +21,27 @@ const server = fastify({ logger: true, }); -await server.register(import("@fastify/compress")); -await server.register(import("@fastify/cors")); - -// k8s healthchecks -server.get("/healthz", (req, res) => res.code(200).send()); -server.get("/readyz", (req, res) => res.code(200).send()); - -// @see https://trpc.io/docs/server/adapters/fastify -server.register(fastifyTRPCPlugin, { - prefix: "/trpc", - trpcOptions: { - router: createAppRouter(), - createContext: async () => ({ - client, - faucetAccount, - dripAmount: env.DRIP_AMOUNT_ETHER, - }), - }, -}); - -await server.listen({ host: env.HOST, port: env.PORT }); -console.log(`faucet server listening on http://${env.HOST}:${env.PORT}`); +(async (): Promise => { + await server.register(import("@fastify/compress")); + await server.register(import("@fastify/cors")); + + // k8s healthchecks + server.get("/healthz", (req, res) => res.code(200).send()); + server.get("/readyz", (req, res) => res.code(200).send()); + + // @see https://trpc.io/docs/server/adapters/fastify + server.register(fastifyTRPCPlugin, { + prefix: "/trpc", + trpcOptions: { + router: createAppRouter(), + createContext: async () => ({ + client, + faucetAccount, + dripAmount: env.DRIP_AMOUNT_ETHER, + }), + }, + }); + + await server.listen({ host: env.HOST, port: env.PORT }); + console.log(`faucet server listening on http://${env.HOST}:${env.PORT}`); +})(); diff --git a/packages/faucet/package.json b/packages/faucet/package.json index ea2e129700..522b26cf5d 100644 --- a/packages/faucet/package.json +++ b/packages/faucet/package.json @@ -8,7 +8,6 @@ "directory": "packages/faucet" }, "license": "MIT", - "type": "module", "exports": { ".": "./dist/src/index.js" }, diff --git a/packages/faucet/tsup.config.ts b/packages/faucet/tsup.config.ts index 9fd1990d5f..47a75c433f 100644 --- a/packages/faucet/tsup.config.ts +++ b/packages/faucet/tsup.config.ts @@ -3,7 +3,7 @@ import { defineConfig } from "tsup"; export default defineConfig({ entry: ["src/index.ts", "bin/faucet-server.ts"], target: "esnext", - format: ["esm"], + format: ["esm", "cjs"], dts: !process.env.TSUP_SKIP_DTS, sourcemap: true, clean: true, diff --git a/packages/gas-report/package.json b/packages/gas-report/package.json index 34a2bce82a..753ee912ea 100644 --- a/packages/gas-report/package.json +++ b/packages/gas-report/package.json @@ -8,7 +8,6 @@ "directory": "packages/gas-report" }, "license": "MIT", - "type": "module", "exports": { ".": "./dist/index.js" }, @@ -31,11 +30,11 @@ "test:ci": "pnpm run test" }, "dependencies": { - "chalk": "^5.3.0", + "chalk": "4.1.2", "dotenv": "^16.0.3", - "execa": "^7.0.0", + "execa": "^5.1.1", "stream-to-array": "^2.3.0", - "strip-ansi": "^7.1.0", + "strip-ansi": "6.0.1", "table": "^6.8.1", "yargs": "^17.7.1" }, diff --git a/packages/gas-report/ts/index.ts b/packages/gas-report/ts/index.ts index e8d41f731b..36ce4480bb 100644 --- a/packages/gas-report/ts/index.ts +++ b/packages/gas-report/ts/index.ts @@ -1,6 +1,6 @@ import type { CommandModule } from "yargs"; import { readFileSync, writeFileSync } from "fs"; -import { execa } from "execa"; +import execa from "execa"; import chalk from "chalk"; import { table, getBorderCharacters } from "table"; import stripAnsi from "strip-ansi"; diff --git a/packages/gas-report/tsup.config.ts b/packages/gas-report/tsup.config.ts index 9249f040b1..4a1ce585e5 100644 --- a/packages/gas-report/tsup.config.ts +++ b/packages/gas-report/tsup.config.ts @@ -3,7 +3,7 @@ import { defineConfig } from "tsup"; export default defineConfig({ entry: ["ts/index.ts", "ts/gas-report.ts"], target: "esnext", - format: ["esm"], + format: ["esm", "cjs"], dts: !process.env.TSUP_SKIP_DTS, sourcemap: true, clean: true, diff --git a/packages/noise/build/release.wasm.map b/packages/noise/build/release.wasm.map index a8a0f6b916..e8ffd88f7a 100644 --- a/packages/noise/build/release.wasm.map +++ b/packages/noise/build/release.wasm.map @@ -1 +1 @@ -{"version":3,"sources":["~lib/rt/common.ts","~lib/rt/tlsf.ts","~lib/shared/typeinfo.ts","~lib/rt/itcms.ts","assembly/perlin.ts","~lib/util/math.ts","~lib/util/number.ts","~lib/util/string.ts","~lib/math.ts","~lib/shared/runtime.ts","~lib/util/sort.ts","~lib/array.ts","~lib/util/error.ts"],"names":[],"mappings":"yGWiHI,AAAI,EAAc,AAAK,SAAmC,eAO1D,AANoB,MAAkB,EAAgB,6CPvDhD,EAAO,uBAEJ,EAAI,KAEJ,AAAK,EAAJ,KAED,EAAI,KAEJ,AAAC,GAAI,KAEL,EAAI,KAEJ,AAAK,EAAJ,KAED,EAAI,KAEJ,AAAC,GAAI,KAEL,EAAI,KAEJ,AAAK,EAAJ,KAED,EAAI,KAEJ,AAAC,GAAI,KAEL,EAAI,KAEJ,AAAK,EAAJ,KAED,EAAI,KAEJ,AAAC,GAAI,KAhChB,iEAnCiB,AAfF,AAAe,AALjB,GAAU,aAKa,QAed,AAdP,AAAe,AALjB,GAAU,UAKa,WAepB,MAAE,IAAK,AAdR,AAAe,AALjB,GAAU,UAKa,WAepB,MAAE,EAAI,KAAK,OACZ,MAAE,EAAI,KAAK,OACV,MAAE,IAAK,OACP,MAAE,EAAI,KAAK,OAOV,MAAE,IAAK,AAtBxB,EAAK,KAsBsB,AArB3B,EAAK,KAqByB,AApB9B,EAAK,WAoBkC,QAmB5B,AApCI,AAgCR,AAhCa,EAgCT,GAAI,GAAK,EAAK,EAAI,UAAI,WAAM,aAfE,IAAK,EAAI,YAAG,EAAG,IAmBpC,SAlBH,MAAE,IAAK,EAAG,EAAI,YAAG,QAAS,QAkBhC,AAnCI,AA+BR,AA/Ba,EA+BT,GAAI,GAAK,EAAK,EAAI,UAAI,WAAM,eAI5B,EAlBkC,IAAK,EAAO,EAAO,IAkB5C,cAdH,MAAE,EAAK,KAAI,EAAG,EAAG,EAAI,kBAAS,QAcpC,EAdsC,EAAK,KAAI,EAAO,EAAG,IAchD,SAbH,MAAE,EAAK,KAAI,EAAG,EAAO,QAAa,QAaxC,AAJJ,AA9Ba,EA8BT,GAAI,GAAK,EAAK,EAAI,UAAI,WAAM,aAI5B,MAb0C,EAAK,KAAI,EAAO,EAAO,IAaxD,eARR,UAAK","sourceRoot":"./release","sourcesContent":["// Alignment guarantees\n\n// @ts-ignore: decorator\n@inline export const AL_BITS: u32 = 4; // 16 bytes to fit up to v128\n// @ts-ignore: decorator\n@inline export const AL_SIZE: usize = 1 << AL_BITS;\n// @ts-ignore: decorator\n@inline export const AL_MASK: usize = AL_SIZE - 1;\n\n// Extra debugging\n\n// @ts-ignore: decorator\n@inline export const DEBUG = true;\n// @ts-ignore: decorator\n@inline export const TRACE = false;\n// @ts-ignore: decorator\n@inline export const RTRACE = isDefined(ASC_RTRACE);\n// @ts-ignore: decorator\n@inline export const PROFILE = isDefined(ASC_PROFILE);\n\n// Memory manager\n\n// ╒════════════ Memory manager block layout (32-bit) ═════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤\n// │ MM info │ -4\n// ╞>ptr═══════════════════════════════════════════════════════════╡\n// │ ... │\n@unmanaged export class BLOCK {\n /** Memory manager info. */\n mmInfo: usize;\n}\n\n/** Overhead of a memory manager block. */\n// @ts-ignore: decorator\n@inline export const BLOCK_OVERHEAD: usize = offsetof();\n\n/** Maximum size of a memory manager block's payload. */\n// @ts-ignore: decorator\n@inline export const BLOCK_MAXSIZE: usize = (1 << 30) - BLOCK_OVERHEAD;\n\n// Garbage collector\n\n// ╒══════════ Garbage collector object layout (32-bit) ═══════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤\n// │ Memory manager block │ -20\n// ╞═══════════════════════════════════════════════════════════════╡\n// │ GC info │ -16\n// ├───────────────────────────────────────────────────────────────┤\n// │ GC info │ -12\n// ├───────────────────────────────────────────────────────────────┤\n// │ RT id │ -8\n// ├───────────────────────────────────────────────────────────────┤\n// │ RT size │ -4\n// ╞>ptr═══════════════════════════════════════════════════════════╡\n// │ ... │\n@unmanaged export class OBJECT extends BLOCK {\n /** Garbage collector info. */\n gcInfo: u32;\n /** Garbage collector info. */\n gcInfo2: u32;\n /** Runtime class id. */\n rtId: u32;\n /** Runtime object size. */\n rtSize: u32;\n}\n\n/** Overhead of a garbage collector object. Excludes memory manager block overhead. */\n// @ts-ignore: decorator\n@inline export const OBJECT_OVERHEAD: usize = (offsetof() - BLOCK_OVERHEAD + AL_MASK) & ~AL_MASK;\n\n/** Maximum size of a garbage collector object's payload. */\n// @ts-ignore: decorator\n@inline export const OBJECT_MAXSIZE: usize = BLOCK_MAXSIZE - OBJECT_OVERHEAD;\n\n/** Total of memory manager and garbage collector overhead. */\n// @ts-ignore: decorator\n@inline export const TOTAL_OVERHEAD: usize = BLOCK_OVERHEAD + OBJECT_OVERHEAD;\n","import { AL_BITS, AL_SIZE, AL_MASK, DEBUG, BLOCK, BLOCK_OVERHEAD, BLOCK_MAXSIZE } from \"./common\";\nimport { oninit, onalloc, onresize, onmove, onfree } from \"./rtrace\";\nimport { E_ALLOCATION_TOO_LARGE } from \"../util/error\";\n\n// === The TLSF (Two-Level Segregate Fit) memory allocator ===\n// see: http://www.gii.upv.es/tlsf/\n\n// - `ffs(x)` is equivalent to `ctz(x)` with x != 0\n// - `fls(x)` is equivalent to `sizeof(x) * 8 - clz(x) - 1`\n\n// ╒══════════════ Block size interpretation (32-bit) ═════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┼─┴─┴─┴─╫─┴─┴─┴─┤\n// │ | FL │ SB = SL + AL │ ◄─ usize\n// └───────────────────────────────────────────────┴───────╨───────┘\n// FL: first level, SL: second level, AL: alignment, SB: small block\n\n// @ts-ignore: decorator\n@inline const SL_BITS: u32 = 4;\n// @ts-ignore: decorator\n@inline const SL_SIZE: u32 = 1 << SL_BITS;\n\n// @ts-ignore: decorator\n@inline const SB_BITS: u32 = SL_BITS + AL_BITS;\n// @ts-ignore: decorator\n@inline const SB_SIZE: u32 = 1 << SB_BITS;\n\n// @ts-ignore: decorator\n@inline const FL_BITS: u32 = 31 - SB_BITS;\n\n// [00]: < 256B (SB) [12]: < 1M\n// [01]: < 512B [13]: < 2M\n// [02]: < 1K [14]: < 4M\n// [03]: < 2K [15]: < 8M\n// [04]: < 4K [16]: < 16M\n// [05]: < 8K [17]: < 32M\n// [06]: < 16K [18]: < 64M\n// [07]: < 32K [19]: < 128M\n// [08]: < 64K [20]: < 256M\n// [09]: < 128K [21]: < 512M\n// [10]: < 256K [22]: <= 1G - OVERHEAD\n// [11]: < 512K\n// VMs limit to 2GB total (currently), making one 1G block max (or three 512M etc.) due to block overhead\n\n// Tags stored in otherwise unused alignment bits\n\n// @ts-ignore: decorator\n@inline const FREE: usize = 1 << 0;\n// @ts-ignore: decorator\n@inline const LEFTFREE: usize = 1 << 1;\n// @ts-ignore: decorator\n@inline const TAGS_MASK: usize = FREE | LEFTFREE; // <= AL_MASK\n\n// ╒════════════════════ Block layout (32-bit) ════════════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┼─┼─┤ ┐\n// │ size │L│F│ ◄─┐ info overhead\n// ╞>ptr═══════════════════════════════════════════════════════╧═╧═╡ │ ┘\n// │ if free: ◄ prev │ ◄─┤ usize\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ if free: next ► │ ◄─┤\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ ... │ │ >= 0\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ if free: back ▲ │ ◄─┘\n// └───────────────────────────────────────────────────────────────┘ >= MIN SIZE\n// F: FREE, L: LEFTFREE\n@unmanaged export class Block extends BLOCK {\n\n /** Previous free block, if any. Only valid if free, otherwise part of payload. */\n prev: Block | null;\n /** Next free block, if any. Only valid if free, otherwise part of payload. */\n next: Block | null;\n\n // If the block is free, there is a 'back'reference at its end pointing at its start.\n}\n\n// Block constants. A block must have a minimum size of three pointers so it can hold `prev`,\n// `next` and `back` if free.\n\n// @ts-ignore: decorator\n@inline const BLOCK_MINSIZE: usize = ((3 * sizeof() + BLOCK_OVERHEAD + AL_MASK) & ~AL_MASK) - BLOCK_OVERHEAD; // prev + next + back\n// @ts-ignore: decorator\n// @inline const BLOCK_MAXSIZE: usize = 1 << (FL_BITS + SB_BITS - 1); // exclusive, lives in common.ts\n\n/** Gets the left block of a block. Only valid if the left block is free. */\n// @ts-ignore: decorator\n@inline function GETFREELEFT(block: Block): Block {\n return load(changetype(block) - sizeof());\n}\n\n/** Gets the right block of a block by advancing to the right by its size. */\n// @ts-ignore: decorator\n@inline function GETRIGHT(block: Block): Block {\n return changetype(changetype(block) + BLOCK_OVERHEAD + (block.mmInfo & ~TAGS_MASK));\n}\n\n// ╒═════════════════════ Root layout (32-bit) ════════════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤ ┐\n// │ 0 | flMap S│ ◄────┐\n// ╞═══════════════════════════════════════════════════════════════╡ │\n// │ slMap[0] S │ ◄─┐ │\n// ├───────────────────────────────────────────────────────────────┤ │ │\n// │ slMap[1] │ ◄─┤ │\n// ├───────────────────────────────────────────────────────────────┤ u32 │\n// │ slMap[22] │ ◄─┘ │\n// ╞═══════════════════════════════════════════════════════════════╡ usize\n// │ head[0] │ ◄────┤\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ ... │ ◄────┤\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ head[367] │ ◄────┤\n// ╞═══════════════════════════════════════════════════════════════╡ │\n// │ tail │ ◄────┘\n// └───────────────────────────────────────────────────────────────┘ SIZE ┘\n// S: Small blocks map\n@unmanaged class Root {\n /** First level bitmap. */\n flMap: usize;\n}\n\n// Root constants. Where stuff is stored inside of the root structure.\n\n// @ts-ignore: decorator\n@inline const SL_START: usize = sizeof();\n// @ts-ignore: decorator\n@inline const SL_END: usize = SL_START + (FL_BITS << alignof());\n// @ts-ignore: decorator\n@inline const HL_START: usize = (SL_END + AL_MASK) & ~AL_MASK;\n// @ts-ignore: decorator\n@inline const HL_END: usize = HL_START + FL_BITS * SL_SIZE * sizeof();\n// @ts-ignore: decorator\n@inline const ROOT_SIZE: usize = HL_END + sizeof();\n\n// @ts-ignore: decorator\n@lazy export var ROOT: Root;\n\n/** Gets the second level map of the specified first level. */\n// @ts-ignore: decorator\n@inline function GETSL(root: Root, fl: usize): u32 {\n return load(\n changetype(root) + (fl << alignof()),\n SL_START\n );\n}\n\n/** Sets the second level map of the specified first level. */\n// @ts-ignore: decorator\n@inline function SETSL(root: Root, fl: usize, slMap: u32): void {\n store(\n changetype(root) + (fl << alignof()),\n slMap,\n SL_START\n );\n}\n\n/** Gets the head of the free list for the specified combination of first and second level. */\n// @ts-ignore: decorator\n@inline function GETHEAD(root: Root, fl: usize, sl: u32): Block | null {\n return load(\n changetype(root) + (((fl << SL_BITS) + sl) << alignof()),\n HL_START\n );\n}\n\n/** Sets the head of the free list for the specified combination of first and second level. */\n// @ts-ignore: decorator\n@inline function SETHEAD(root: Root, fl: usize, sl: u32, head: Block | null): void {\n store(\n changetype(root) + (((fl << SL_BITS) + sl) << alignof()),\n head,\n HL_START\n );\n}\n\n/** Gets the tail block.. */\n// @ts-ignore: decorator\n@inline function GETTAIL(root: Root): Block {\n return load(\n changetype(root),\n HL_END\n );\n}\n\n/** Sets the tail block. */\n// @ts-ignore: decorator\n@inline function SETTAIL(root: Root, tail: Block): void {\n store(\n changetype(root),\n tail,\n HL_END\n );\n}\n\n/** Inserts a previously used block back into the free list. */\nfunction insertBlock(root: Root, block: Block): void {\n if (DEBUG) assert(block); // cannot be null\n var blockInfo = block.mmInfo;\n if (DEBUG) assert(blockInfo & FREE); // must be free\n\n var right = GETRIGHT(block);\n var rightInfo = right.mmInfo;\n\n // merge with right block if also free\n if (rightInfo & FREE) {\n removeBlock(root, right);\n block.mmInfo = blockInfo = blockInfo + BLOCK_OVERHEAD + (rightInfo & ~TAGS_MASK); // keep block tags\n right = GETRIGHT(block);\n rightInfo = right.mmInfo;\n // 'back' is set below\n }\n\n // merge with left block if also free\n if (blockInfo & LEFTFREE) {\n let left = GETFREELEFT(block);\n let leftInfo = left.mmInfo;\n if (DEBUG) assert(leftInfo & FREE); // must be free according to right tags\n removeBlock(root, left);\n block = left;\n block.mmInfo = blockInfo = leftInfo + BLOCK_OVERHEAD + (blockInfo & ~TAGS_MASK); // keep left tags\n // 'back' is set below\n }\n\n right.mmInfo = rightInfo | LEFTFREE;\n // reference to right is no longer used now, hence rightInfo is not synced\n\n // we now know the size of the block\n var size = blockInfo & ~TAGS_MASK;\n if (DEBUG) assert(size >= BLOCK_MINSIZE); // must be a valid size\n if (DEBUG) assert(changetype(block) + BLOCK_OVERHEAD + size == changetype(right)); // must match\n\n // set 'back' to itself at the end of block\n store(changetype(right) - sizeof(), block);\n\n // mapping_insert\n var fl: usize, sl: u32;\n if (size < SB_SIZE) {\n fl = 0;\n sl = (size >> AL_BITS);\n } else {\n const inv: usize = sizeof() * 8 - 1;\n let boundedSize = min(size, BLOCK_MAXSIZE);\n fl = inv - clz(boundedSize);\n sl = ((boundedSize >> (fl - SL_BITS)) ^ (1 << SL_BITS));\n fl -= SB_BITS - 1;\n }\n if (DEBUG) assert(fl < FL_BITS && sl < SL_SIZE); // fl/sl out of range\n\n // perform insertion\n var head = GETHEAD(root, fl, sl);\n block.prev = null;\n block.next = head;\n if (head) head.prev = block;\n SETHEAD(root, fl, sl, block);\n\n // update first and second level maps\n root.flMap |= (1 << fl);\n SETSL(root, fl, GETSL(root, fl) | (1 << sl));\n}\n\n/** Removes a free block from internal lists. */\nfunction removeBlock(root: Root, block: Block): void {\n var blockInfo = block.mmInfo;\n if (DEBUG) assert(blockInfo & FREE); // must be free\n var size = blockInfo & ~TAGS_MASK;\n if (DEBUG) assert(size >= BLOCK_MINSIZE); // must be valid\n\n // mapping_insert\n var fl: usize, sl: u32;\n if (size < SB_SIZE) {\n fl = 0;\n sl = (size >> AL_BITS);\n } else {\n const inv: usize = sizeof() * 8 - 1;\n let boundedSize = min(size, BLOCK_MAXSIZE);\n fl = inv - clz(boundedSize);\n sl = ((boundedSize >> (fl - SL_BITS)) ^ (1 << SL_BITS));\n fl -= SB_BITS - 1;\n }\n if (DEBUG) assert(fl < FL_BITS && sl < SL_SIZE); // fl/sl out of range\n\n // link previous and next free block\n var prev = block.prev;\n var next = block.next;\n if (prev) prev.next = next;\n if (next) next.prev = prev;\n\n // update head if we are removing it\n if (block == GETHEAD(root, fl, sl)) {\n SETHEAD(root, fl, sl, next);\n\n // clear second level map if head is empty now\n if (!next) {\n let slMap = GETSL(root, fl);\n SETSL(root, fl, slMap &= ~(1 << sl));\n\n // clear first level map if second level is empty now\n if (!slMap) root.flMap &= ~(1 << fl);\n }\n }\n // note: does not alter left/back because it is likely that splitting\n // is performed afterwards, invalidating those changes. so, the caller\n // must perform those updates.\n}\n\n/** Searches for a free block of at least the specified size. */\nfunction searchBlock(root: Root, size: usize): Block | null {\n // size was already asserted by caller\n\n // mapping_search\n var fl: usize, sl: u32;\n if (size < SB_SIZE) {\n fl = 0;\n sl = (size >> AL_BITS);\n } else {\n const halfMaxSize = BLOCK_MAXSIZE >> 1; // don't round last fl\n const inv: usize = sizeof() * 8 - 1;\n const invRound = inv - SL_BITS;\n let requestSize = size < halfMaxSize\n ? size + (1 << (invRound - clz(size))) - 1\n : size;\n fl = inv - clz(requestSize);\n sl = ((requestSize >> (fl - SL_BITS)) ^ (1 << SL_BITS));\n fl -= SB_BITS - 1;\n }\n if (DEBUG) assert(fl < FL_BITS && sl < SL_SIZE); // fl/sl out of range\n\n // search second level\n var slMap = GETSL(root, fl) & (~0 << sl);\n var head: Block | null = null;\n if (!slMap) {\n // search next larger first level\n let flMap = root.flMap & (~0 << (fl + 1));\n if (!flMap) {\n head = null;\n } else {\n fl = ctz(flMap);\n slMap = GETSL(root, fl);\n if (DEBUG) assert(slMap); // can't be zero if fl points here\n head = GETHEAD(root, fl, ctz(slMap));\n }\n } else {\n head = GETHEAD(root, fl, ctz(slMap));\n }\n return head;\n}\n\n/** Prepares the specified block before (re-)use, possibly splitting it. */\nfunction prepareBlock(root: Root, block: Block, size: usize): void {\n // size was already asserted by caller\n\n var blockInfo = block.mmInfo;\n if (DEBUG) assert(!((size + BLOCK_OVERHEAD) & AL_MASK)); // size must be aligned so the new block is\n\n // split if the block can hold another MINSIZE block incl. overhead\n var remaining = (blockInfo & ~TAGS_MASK) - size;\n if (remaining >= BLOCK_OVERHEAD + BLOCK_MINSIZE) {\n block.mmInfo = size | (blockInfo & LEFTFREE); // also discards FREE\n\n let spare = changetype(changetype(block) + BLOCK_OVERHEAD + size);\n spare.mmInfo = (remaining - BLOCK_OVERHEAD) | FREE; // not LEFTFREE\n insertBlock(root, spare); // also sets 'back'\n\n // otherwise tag block as no longer FREE and right as no longer LEFTFREE\n } else {\n block.mmInfo = blockInfo & ~FREE;\n GETRIGHT(block).mmInfo &= ~LEFTFREE;\n }\n}\n\n/** Adds more memory to the pool. */\nfunction addMemory(root: Root, start: usize, end: usize): bool {\n if (DEBUG) assert(start <= end); // must be valid\n start = ((start + BLOCK_OVERHEAD + AL_MASK) & ~AL_MASK) - BLOCK_OVERHEAD;\n end &= ~AL_MASK;\n\n var tail = GETTAIL(root);\n var tailInfo: usize = 0;\n if (tail) { // more memory\n if (DEBUG) assert(start >= changetype(tail) + BLOCK_OVERHEAD);\n\n // merge with current tail if adjacent\n const offsetToTail = AL_SIZE;\n if (start - offsetToTail == changetype(tail)) {\n start -= offsetToTail;\n tailInfo = tail.mmInfo;\n } else {\n // We don't do this, but a user might `memory.grow` manually\n // leading to non-adjacent pages managed by TLSF.\n }\n\n } else if (DEBUG) { // first memory\n assert(start >= changetype(root) + ROOT_SIZE); // starts after root\n }\n\n // check if size is large enough for a free block and the tail block\n var size = end - start;\n if (size < BLOCK_OVERHEAD + BLOCK_MINSIZE + BLOCK_OVERHEAD) {\n return false;\n }\n\n // left size is total minus its own and the zero-length tail's header\n var leftSize = size - 2 * BLOCK_OVERHEAD;\n var left = changetype(start);\n left.mmInfo = leftSize | FREE | (tailInfo & LEFTFREE);\n left.prev = null;\n left.next = null;\n\n // tail is a zero-length used block\n tail = changetype(start + BLOCK_OVERHEAD + leftSize);\n tail.mmInfo = 0 | LEFTFREE;\n SETTAIL(root, tail);\n\n insertBlock(root, left); // also merges with free left before tail / sets 'back'\n\n return true;\n}\n\n/** Grows memory to fit at least another block of the specified size. */\nfunction growMemory(root: Root, size: usize): void {\n if (ASC_LOW_MEMORY_LIMIT) {\n unreachable();\n return;\n }\n // Here, both rounding performed in searchBlock ...\n const halfMaxSize = BLOCK_MAXSIZE >> 1;\n if (size < halfMaxSize) { // don't round last fl\n const invRound = (sizeof() * 8 - 1) - SL_BITS;\n size += (1 << (invRound - clz(size))) - 1;\n }\n // and additional BLOCK_OVERHEAD must be taken into account. If we are going\n // to merge with the tail block, that's one time, otherwise it's two times.\n var pagesBefore = memory.size();\n size += BLOCK_OVERHEAD << usize((pagesBefore << 16) - BLOCK_OVERHEAD != changetype(GETTAIL(root)));\n var pagesNeeded = (((size + 0xffff) & ~0xffff) >>> 16);\n var pagesWanted = max(pagesBefore, pagesNeeded); // double memory\n if (memory.grow(pagesWanted) < 0) {\n if (memory.grow(pagesNeeded) < 0) unreachable();\n }\n var pagesAfter = memory.size();\n addMemory(root, pagesBefore << 16, pagesAfter << 16);\n}\n\n/** Computes the size (excl. header) of a block. */\nfunction computeSize(size: usize): usize {\n // Size must be large enough and aligned minus preceeding overhead\n return size <= BLOCK_MINSIZE\n ? BLOCK_MINSIZE\n : ((size + BLOCK_OVERHEAD + AL_MASK) & ~AL_MASK) - BLOCK_OVERHEAD;\n}\n\n/** Prepares and checks an allocation size. */\nfunction prepareSize(size: usize): usize {\n if (size > BLOCK_MAXSIZE) throw new Error(E_ALLOCATION_TOO_LARGE);\n return computeSize(size);\n}\n\n/** Initializes the root structure. */\nfunction initialize(): void {\n if (isDefined(ASC_RTRACE)) oninit(__heap_base);\n var rootOffset = (__heap_base + AL_MASK) & ~AL_MASK;\n var pagesBefore = memory.size();\n var pagesNeeded = ((((rootOffset + ROOT_SIZE) + 0xffff) & ~0xffff) >>> 16);\n if (pagesNeeded > pagesBefore && memory.grow(pagesNeeded - pagesBefore) < 0) unreachable();\n var root = changetype(rootOffset);\n root.flMap = 0;\n SETTAIL(root, changetype(0));\n for (let fl: usize = 0; fl < FL_BITS; ++fl) {\n SETSL(root, fl, 0);\n for (let sl: u32 = 0; sl < SL_SIZE; ++sl) {\n SETHEAD(root, fl, sl, null);\n }\n }\n var memStart = rootOffset + ROOT_SIZE;\n if (ASC_LOW_MEMORY_LIMIT) {\n const memEnd = ASC_LOW_MEMORY_LIMIT & ~AL_MASK;\n if (memStart <= memEnd) addMemory(root, memStart, memEnd);\n else unreachable(); // low memory limit already exceeded\n } else {\n addMemory(root, memStart, memory.size() << 16);\n }\n ROOT = root;\n}\n\n/** Allocates a block of the specified size. */\nexport function allocateBlock(root: Root, size: usize): Block {\n var payloadSize = prepareSize(size);\n var block = searchBlock(root, payloadSize);\n if (!block) {\n growMemory(root, payloadSize);\n block = changetype(searchBlock(root, payloadSize));\n if (DEBUG) assert(block); // must be found now\n }\n if (DEBUG) assert((block.mmInfo & ~TAGS_MASK) >= payloadSize); // must fit\n removeBlock(root, block);\n prepareBlock(root, block, payloadSize);\n if (isDefined(ASC_RTRACE)) onalloc(block);\n return block;\n}\n\n/** Reallocates a block to the specified size. */\nexport function reallocateBlock(root: Root, block: Block, size: usize): Block {\n var payloadSize = prepareSize(size);\n var blockInfo = block.mmInfo;\n var blockSize = blockInfo & ~TAGS_MASK;\n\n // possibly split and update runtime size if it still fits\n if (payloadSize <= blockSize) {\n prepareBlock(root, block, payloadSize);\n if (isDefined(ASC_RTRACE)) {\n if (payloadSize != blockSize) onresize(block, BLOCK_OVERHEAD + blockSize);\n }\n return block;\n }\n\n // merge with right free block if merger is large enough\n var right = GETRIGHT(block);\n var rightInfo = right.mmInfo;\n if (rightInfo & FREE) {\n let mergeSize = blockSize + BLOCK_OVERHEAD + (rightInfo & ~TAGS_MASK);\n if (mergeSize >= payloadSize) {\n removeBlock(root, right);\n block.mmInfo = (blockInfo & TAGS_MASK) | mergeSize;\n prepareBlock(root, block, payloadSize);\n if (isDefined(ASC_RTRACE)) onresize(block, BLOCK_OVERHEAD + blockSize);\n return block;\n }\n }\n\n // otherwise move the block\n return moveBlock(root, block, size);\n}\n\n/** Moves a block to a new one of the specified size. */\nfunction moveBlock(root: Root, block: Block, newSize: usize): Block {\n var newBlock = allocateBlock(root, newSize);\n memory.copy(changetype(newBlock) + BLOCK_OVERHEAD, changetype(block) + BLOCK_OVERHEAD, block.mmInfo & ~TAGS_MASK);\n if (changetype(block) >= __heap_base) {\n if (isDefined(ASC_RTRACE)) onmove(block, newBlock);\n freeBlock(root, block);\n }\n return newBlock;\n}\n\n/** Frees a block. */\nexport function freeBlock(root: Root, block: Block): void {\n if (isDefined(ASC_RTRACE)) onfree(block);\n block.mmInfo = block.mmInfo | FREE;\n insertBlock(root, block);\n}\n\n/** Checks that a used block is valid to be freed or reallocated. */\nfunction checkUsedBlock(ptr: usize): Block {\n var block = changetype(ptr - BLOCK_OVERHEAD);\n assert(\n ptr != 0 && !(ptr & AL_MASK) && // must exist and be aligned\n !(block.mmInfo & FREE) // must be used\n );\n return block;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __alloc(size: usize): usize {\n if (!ROOT) initialize();\n return changetype(allocateBlock(ROOT, size)) + BLOCK_OVERHEAD;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __realloc(ptr: usize, size: usize): usize {\n if (!ROOT) initialize();\n return (ptr < __heap_base\n ? changetype(moveBlock(ROOT, checkUsedBlock(ptr), size))\n : changetype(reallocateBlock(ROOT, checkUsedBlock(ptr), size))\n ) + BLOCK_OVERHEAD;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __free(ptr: usize): void {\n if (ptr < __heap_base) return;\n if (!ROOT) initialize();\n freeBlock(ROOT, checkUsedBlock(ptr));\n}\n","// This file is shared with the compiler and must remain portable\n\n// ╒═══════════════════ Typeinfo interpretation ═══════════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤ ◄─ __rtti_base\n// │ count │\n// ╞═══════════════════════════════════════════════════════════════╡ ┐\n// │ Typeinfo#flags [id=0] │ id < count\n// ├ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┤\n// │ Typeinfo#base [id=0] │\n// ├───────────────────────────────────────────────────────────────┤\n// │ ... │\n\n/** Runtime type information data structure. */\n@unmanaged\nexport class Typeinfo {\n /** Flags describing the shape of this class type. */\n flags: TypeinfoFlags = TypeinfoFlags.NONE;\n /** Base class id or `0` if none. */\n base: u32 = 0;\n}\n\n/** Runtime type information flags. */\nexport const enum TypeinfoFlags {\n /** No specific flags. */\n NONE = 0,\n /** Type is an `ArrayBufferView`. */\n ARRAYBUFFERVIEW = 1 << 0,\n /** Type is an `Array`. */\n ARRAY = 1 << 1,\n /** Type is a `StaticArray`. */\n STATICARRAY = 1 << 2,\n /** Type is a `Set`. */\n SET = 1 << 3,\n /** Type is a `Map`. */\n MAP = 1 << 4,\n /** Type has no outgoing pointers. */\n POINTERFREE = 1 << 5,\n /** Value alignment of 1 byte. */\n VALUE_ALIGN_0 = 1 << 6,\n /** Value alignment of 2 bytes. */\n VALUE_ALIGN_1 = 1 << 7,\n /** Value alignment of 4 bytes. */\n VALUE_ALIGN_2 = 1 << 8,\n /** Value alignment of 8 bytes. */\n VALUE_ALIGN_3 = 1 << 9,\n /** Value alignment of 16 bytes. */\n VALUE_ALIGN_4 = 1 << 10,\n /** Value is a signed type. */\n VALUE_SIGNED = 1 << 11,\n /** Value is a float type. */\n VALUE_FLOAT = 1 << 12,\n /** Value type is nullable. */\n VALUE_NULLABLE = 1 << 13,\n /** Value type is managed. */\n VALUE_MANAGED = 1 << 14,\n /** Key alignment of 1 byte. */\n KEY_ALIGN_0 = 1 << 15,\n /** Key alignment of 2 bytes. */\n KEY_ALIGN_1 = 1 << 16,\n /** Key alignment of 4 bytes. */\n KEY_ALIGN_2 = 1 << 17,\n /** Key alignment of 8 bytes. */\n KEY_ALIGN_3 = 1 << 18,\n /** Key alignment of 16 bytes. */\n KEY_ALIGN_4 = 1 << 19,\n /** Key is a signed type. */\n KEY_SIGNED = 1 << 20,\n /** Key is a float type. */\n KEY_FLOAT = 1 << 21,\n /** Key type is nullable. */\n KEY_NULLABLE = 1 << 22,\n /** Key type is managed. */\n KEY_MANAGED = 1 << 23\n}\n","import { BLOCK, BLOCK_OVERHEAD, OBJECT_OVERHEAD, OBJECT_MAXSIZE, TOTAL_OVERHEAD, DEBUG, TRACE, RTRACE, PROFILE } from \"./common\";\nimport { onvisit, oncollect, oninterrupt, onyield } from \"./rtrace\";\nimport { TypeinfoFlags } from \"../shared/typeinfo\";\nimport { E_ALLOCATION_TOO_LARGE, E_ALREADY_PINNED, E_NOT_PINNED } from \"../util/error\";\n\n// === ITCMS: An incremental Tri-Color Mark & Sweep garbage collector ===\n// Adapted from Bach Le's μgc, see: https://github.com/bullno1/ugc\n\n// ╒═════════════╤══════════════ Colors ═══════════════════════════╕\n// │ Color │ Meaning │\n// ├─────────────┼─────────────────────────────────────────────────┤\n// │ WHITE* │ Unprocessed │\n// │ BLACK* │ Processed │\n// │ GRAY │ Processed with unprocessed children │\n// │ TRANSPARENT │ Manually pinned (always reachable) │\n// └─────────────┴─────────────────────────────────────────────────┘\n// * flipped between cycles\n\n// @ts-ignore: decorator\n@lazy var white = 0;\n// @ts-ignore: decorator\n@inline const gray = 2;\n// @ts-ignore: decorator\n@inline const transparent = 3;\n// @ts-ignore: decorator\n@inline const COLOR_MASK = 3;\n\n/** Size in memory of all objects currently managed by the GC. */\n// @ts-ignore: decorator\n@lazy var total: usize = 0;\n\n/** Currently transitioning from SWEEP to MARK state. */\n// @ts-ignore: decorator\n@inline const STATE_IDLE = 0;\n/** Currently marking reachable objects. */\n// @ts-ignore: decorator\n@inline const STATE_MARK = 1;\n/** Currently sweeping unreachable objects. */\n// @ts-ignore: decorator\n@inline const STATE_SWEEP = 2;\n/** Current collector state. */\n// @ts-ignore: decorator\n@lazy var state = STATE_IDLE;\n\n// @ts-ignore: decorator\n@lazy var fromSpace = initLazy(changetype(memory.data(offsetof())));\n// @ts-ignore: decorator\n@lazy var toSpace = initLazy(changetype(memory.data(offsetof())));\n// @ts-ignore: decorator\n@lazy var pinSpace = initLazy(changetype(memory.data(offsetof())));\n// @ts-ignore: decorator\n@lazy var iter: Object; // null\n\nfunction initLazy(space: Object): Object {\n space.nextWithColor = changetype(space);\n space.prev = space;\n return space;\n}\n\n/** Visit cookie indicating scanning of an object. */\n// @ts-ignore: decorator\n@inline const VISIT_SCAN = 0;\n\n// ╒═══════════════ Managed object layout (32-bit) ════════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤\n// │ Memory manager block │\n// ╞═══════════════════════════════════════════════════════════╤═══╡\n// │ next │ C │ = nextWithColor\n// ├───────────────────────────────────────────────────────────┴───┤\n// │ prev │\n// ├───────────────────────────────────────────────────────────────┤\n// │ rtId │\n// ├───────────────────────────────────────────────────────────────┤\n// │ rtSize │\n// ╞>ptr═══════════════════════════════════════════════════════════╡\n// │ ... │\n// C: color\n\n/** Represents a managed object in memory, consisting of a header followed by the object's data. */\n@unmanaged class Object extends BLOCK {\n /** Pointer to the next object with color flags stored in the alignment bits. */\n nextWithColor: usize; // *u32\n /** Pointer to the previous object. */\n prev: Object; // *u32\n /** Runtime id. */\n rtId: u32;\n /** Runtime size. */\n rtSize: u32;\n\n /** Gets the pointer to the next object. */\n get next(): Object {\n return changetype(this.nextWithColor & ~COLOR_MASK);\n }\n\n /** Sets the pointer to the next object. */\n set next(obj: Object) {\n this.nextWithColor = changetype(obj) | (this.nextWithColor & COLOR_MASK);\n }\n\n /** Gets this object's color. */\n get color(): i32 {\n return i32(this.nextWithColor & COLOR_MASK);\n }\n\n /** Sets this object's color. */\n set color(color: i32) {\n this.nextWithColor = (this.nextWithColor & ~COLOR_MASK) | color;\n }\n\n /** Gets the size of this object in memory. */\n get size(): usize {\n return BLOCK_OVERHEAD + (this.mmInfo & ~3);\n }\n\n /** Tests if this object is pointerfree. */\n get isPointerfree(): bool {\n var rtId = this.rtId;\n return rtId <= idof() || (__typeinfo(rtId) & TypeinfoFlags.POINTERFREE) != 0;\n }\n\n /** Unlinks this object from its list. */\n unlink(): void {\n var next = this.next;\n if (next == null) {\n if (DEBUG) assert(this.prev == null && changetype(this) < __heap_base);\n return; // static data not yet linked\n }\n var prev = this.prev;\n if (DEBUG) assert(prev);\n next.prev = prev;\n prev.next = next;\n }\n\n /** Links this object to the specified list, with the given color. */\n linkTo(list: Object, withColor: i32): void {\n let prev = list.prev;\n this.nextWithColor = changetype(list) | withColor;\n this.prev = prev;\n prev.next = this;\n list.prev = this;\n }\n\n /** Marks this object as gray, that is reachable with unscanned children. */\n makeGray(): void {\n if (this == iter) iter = assert(this.prev);\n this.unlink();\n this.linkTo(toSpace, this.isPointerfree ? i32(!white) : gray);\n }\n}\n\n/** Visits all objects considered to be program roots. */\nfunction visitRoots(cookie: u32): void {\n __visit_globals(cookie);\n var pn = pinSpace;\n var iter = pn.next;\n while (iter != pn) {\n if (DEBUG) assert(iter.color == transparent);\n __visit_members(changetype(iter) + TOTAL_OVERHEAD, cookie);\n iter = iter.next;\n }\n}\n\n/** Visits all objects on the stack. */\nfunction visitStack(cookie: u32): void {\n var ptr = __stack_pointer;\n while (ptr < __heap_base) {\n __visit(load(ptr), cookie);\n ptr += sizeof();\n }\n}\n\n/** Performs a single step according to the current state. */\nfunction step(): usize {\n // Magic constants responsible for pause times. Obtained experimentally\n // using the compiler compiling itself. 2048 budget pro run by default.\n const MARKCOST = isDefined(ASC_GC_MARKCOST) ? ASC_GC_MARKCOST : 1;\n const SWEEPCOST = isDefined(ASC_GC_SWEEPCOST) ? ASC_GC_SWEEPCOST : 10;\n var obj: Object;\n switch (state) {\n case STATE_IDLE: {\n state = STATE_MARK;\n visitCount = 0;\n visitRoots(VISIT_SCAN);\n iter = toSpace;\n return visitCount * MARKCOST;\n }\n case STATE_MARK: {\n let black = i32(!white);\n obj = iter.next;\n while (obj != toSpace) {\n iter = obj;\n if (obj.color != black) { // skip already-blacks (pointerfree)\n obj.color = black;\n visitCount = 0;\n __visit_members(changetype(obj) + TOTAL_OVERHEAD, VISIT_SCAN);\n return visitCount * MARKCOST;\n }\n obj = obj.next;\n }\n visitCount = 0;\n visitRoots(VISIT_SCAN);\n obj = iter.next;\n if (obj == toSpace) {\n visitStack(VISIT_SCAN);\n obj = iter.next;\n while (obj != toSpace) {\n if (obj.color != black) {\n obj.color = black;\n __visit_members(changetype(obj) + TOTAL_OVERHEAD, VISIT_SCAN);\n }\n obj = obj.next;\n }\n let from = fromSpace;\n fromSpace = toSpace;\n toSpace = from;\n white = black;\n iter = from.next;\n state = STATE_SWEEP;\n }\n return visitCount * MARKCOST;\n }\n case STATE_SWEEP: {\n obj = iter;\n if (obj != toSpace) {\n iter = obj.next;\n if (DEBUG) assert(obj.color == i32(!white)); // old white\n free(obj);\n return SWEEPCOST;\n }\n toSpace.nextWithColor = changetype(toSpace);\n toSpace.prev = toSpace;\n state = STATE_IDLE;\n break;\n }\n }\n return 0;\n}\n\n/** Frees an object. */\nfunction free(obj: Object): void {\n if (changetype(obj) < __heap_base) {\n obj.nextWithColor = 0; // may become linked again\n obj.prev = changetype(0);\n } else {\n total -= obj.size;\n if (isDefined(__finalize)) {\n __finalize(changetype(obj) + TOTAL_OVERHEAD);\n }\n __free(changetype(obj) + BLOCK_OVERHEAD);\n }\n}\n\n// Garbage collector interface\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __new(size: usize, id: i32): usize {\n if (size >= OBJECT_MAXSIZE) throw new Error(E_ALLOCATION_TOO_LARGE);\n if (total >= threshold) interrupt();\n var obj = changetype(__alloc(OBJECT_OVERHEAD + size) - BLOCK_OVERHEAD);\n obj.rtId = id;\n obj.rtSize = size;\n obj.linkTo(fromSpace, white); // inits next/prev\n total += obj.size;\n var ptr = changetype(obj) + TOTAL_OVERHEAD;\n // may be visited before being fully initialized, so must fill\n memory.fill(ptr, 0, size);\n return ptr;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __renew(oldPtr: usize, size: usize): usize {\n var oldObj = changetype(oldPtr - TOTAL_OVERHEAD);\n // Update object size if its block is large enough\n if (size <= (oldObj.mmInfo & ~3) - OBJECT_OVERHEAD) {\n oldObj.rtSize = size;\n return oldPtr;\n }\n // If not the same object anymore, we have to move it move it due to the\n // shadow stack potentially still referencing the old object\n var newPtr = __new(size, oldObj.rtId);\n memory.copy(newPtr, oldPtr, min(size, oldObj.rtSize));\n return newPtr;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __link(parentPtr: usize, childPtr: usize, expectMultiple: bool): void {\n // Write barrier is unnecessary if non-incremental\n if (!childPtr) return;\n if (DEBUG) assert(parentPtr);\n var child = changetype(childPtr - TOTAL_OVERHEAD);\n if (child.color == white) {\n let parent = changetype(parentPtr - TOTAL_OVERHEAD);\n let parentColor = parent.color;\n if (parentColor == i32(!white)) {\n // Maintain the invariant that no black object may point to a white object.\n if (expectMultiple) {\n // Move the barrier \"backward\". Suitable for containers receiving multiple stores.\n // Avoids a barrier for subsequent objects stored into the same container.\n parent.makeGray();\n } else {\n // Move the barrier \"forward\". Suitable for objects receiving isolated stores.\n child.makeGray();\n }\n } else if (parentColor == transparent && state == STATE_MARK) {\n // Pinned objects are considered 'black' during the mark phase.\n child.makeGray();\n }\n }\n}\n\n// @ts-ignore: decorator\n@lazy var visitCount = 0;\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __visit(ptr: usize, cookie: i32): void {\n if (!ptr) return;\n let obj = changetype(ptr - TOTAL_OVERHEAD);\n if (RTRACE) if (!onvisit(obj)) return;\n if (obj.color == white) {\n obj.makeGray();\n ++visitCount;\n }\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __pin(ptr: usize): usize {\n if (ptr) {\n let obj = changetype(ptr - TOTAL_OVERHEAD);\n if (obj.color == transparent) {\n throw new Error(E_ALREADY_PINNED);\n }\n obj.unlink(); // from fromSpace\n obj.linkTo(pinSpace, transparent);\n }\n return ptr;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __unpin(ptr: usize): void {\n if (!ptr) return;\n var obj = changetype(ptr - TOTAL_OVERHEAD);\n if (obj.color != transparent) {\n throw new Error(E_NOT_PINNED);\n }\n if (state == STATE_MARK) {\n // We may be right at the point after marking roots for the second time and\n // entering the sweep phase, in which case the object would be missed if it\n // is not only pinned but also a root. Make sure it isn't missed.\n obj.makeGray();\n } else {\n obj.unlink();\n obj.linkTo(fromSpace, white);\n }\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __collect(): void {\n if (TRACE) trace(\"GC (full) at\", 1, total);\n if (state > STATE_IDLE) {\n // finish current cycle\n while (state != STATE_IDLE) step();\n }\n // perform a full cycle\n step();\n while (state != STATE_IDLE) step();\n threshold = (total * IDLEFACTOR / 100) + GRANULARITY;\n if (TRACE) trace(\"GC (full) done at cur/max\", 2, total, memory.size() << 16);\n if (RTRACE || PROFILE) oncollect(total);\n}\n\n// Garbage collector automation\n\n/** How often to interrupt. The default of 1024 means \"interrupt each 1024 bytes allocated\". */\n// @ts-ignore: decorator\n@inline const GRANULARITY: usize = isDefined(ASC_GC_GRANULARITY) ? ASC_GC_GRANULARITY : 1024;\n/** How long to interrupt. The default of 200% means \"run at double the speed of allocations\". */\n// @ts-ignore: decorator\n@inline const STEPFACTOR: usize = isDefined(ASC_GC_SWEEPFACTOR) ? ASC_GC_SWEEPFACTOR : 200;\n/** How long to idle. The default of 200% means \"wait for memory to double before kicking in again\". */\n// @ts-ignore: decorator\n@inline const IDLEFACTOR: usize = isDefined(ASC_GC_IDLEFACTOR) ? ASC_GC_IDLEFACTOR : 200;\n\n/** Threshold of memory used by objects to exceed before interrupting again. */\n// @ts-ignore: decorator\n@lazy var threshold: usize = ((memory.size() << 16) - __heap_base) >> 1;\n\n/** Performs a reasonable amount of incremental GC steps. */\nfunction interrupt(): void {\n if (PROFILE) oninterrupt(total);\n if (TRACE) trace(\"GC (auto) at\", 1, total);\n var budget: isize = GRANULARITY * STEPFACTOR / 100;\n do {\n budget -= step();\n if (state == STATE_IDLE) {\n if (TRACE) trace(\"└ GC (auto) done at cur/max\", 2, total, memory.size() << 16);\n threshold = (total * IDLEFACTOR / 100) + GRANULARITY;\n if (PROFILE) onyield(total);\n return;\n }\n } while (budget > 0);\n if (TRACE) trace(\"└ GC (auto) ongoing at\", 1, total);\n threshold = total + GRANULARITY * usize(total - threshold < GRANULARITY);\n if (PROFILE) onyield(total);\n}\n","// Ported from perlin reference implementation (https://cs.nyu.edu/~perlin/noise/)\n\nexport function perlin(_x: i32, _y: i32, _z: i32, denom: i32): f64 {\n // Convert fraction into f64\n let x: f64 = f64(_x) / f64(denom);\n let y: f64 = f64(_y) / f64(denom);\n let z: f64 = f64(_z) / f64(denom);\n\n // Find unit cube that contains point\n const X: i32 = i32(Math.floor(x)) & 255;\n const Y: i32 = i32(Math.floor(y)) & 255;\n const Z: i32 = i32(Math.floor(z)) & 255;\n\n // Find relative x,y,z of point in cube\n x -= Math.floor(x);\n y -= Math.floor(y);\n z -= Math.floor(z);\n\n // Compute fade curves for each x,y,z\n const u: f64 = fade(x);\n const v: f64 = fade(y);\n const w: f64 = fade(z);\n\n // Hash coordinates of the 8 cube corners\n const A: i32 = p[X] + Y;\n const AA: i32 = p[A] + Z;\n const AB: i32 = p[A + 1] + Z;\n const B: i32 = p[X + 1] + Y;\n const BA: i32 = p[B] + Z;\n const BB: i32 = p[B + 1] + Z;\n\n // Add blended results from 8 corners of cube\n const r: f64 = lerp(\n w,\n lerp(\n v,\n lerp(u, grad(p[AA], x, y, z), grad(p[BA], x - 1, y, z)),\n lerp(u, grad(p[AB], x, y - 1, z), grad(p[BB], x - 1, y - 1, z)),\n ),\n lerp(\n v,\n lerp(u, grad(p[AA + 1], x, y, z - 1), grad(p[BA + 1], x - 1, y, z - 1)),\n lerp(u, grad(p[AB + 1], x, y - 1, z - 1), grad(p[BB + 1], x - 1, y - 1, z - 1)),\n ),\n );\n\n // Shift to range from 0 to 1\n return (r + 1) / 2;\n}\n\nfunction fade(t: f64): f64 {\n return t * t * t * (t * (t * 6 - 15) + 10);\n}\n\nfunction lerp(t: f64, a: f64, b: f64): f64 {\n return a + t * (b - a);\n}\n\nfunction grad(hash: i32, x: f64, y: f64, z: f64): f64 {\n switch (hash & 0xf) {\n case 0x0:\n return x + y;\n case 0x1:\n return -x + y;\n case 0x2:\n return x - y;\n case 0x3:\n return -x - y;\n case 0x4:\n return x + z;\n case 0x5:\n return -x + z;\n case 0x6:\n return x - z;\n case 0x7:\n return -x - z;\n case 0x8:\n return y + z;\n case 0x9:\n return -y + z;\n case 0xa:\n return y - z;\n case 0xb:\n return -y - z;\n case 0xc:\n return y + x;\n case 0xd:\n return -y + z;\n case 0xe:\n return y - x;\n case 0xf:\n return -y - z;\n default:\n return 0; // never happens\n }\n}\n\nconst p: i32[] = [\n 151, 160, 137, 91, 90, 15, 131, 13, 201, 95, 96, 53, 194, 233, 7, 225, 140, 36, 103, 30, 69, 142, 8, 99, 37, 240, 21,\n 10, 23, 190, 6, 148, 247, 120, 234, 75, 0, 26, 197, 62, 94, 252, 219, 203, 117, 35, 11, 32, 57, 177, 33, 88, 237, 149,\n 56, 87, 174, 20, 125, 136, 171, 168, 68, 175, 74, 165, 71, 134, 139, 48, 27, 166, 77, 146, 158, 231, 83, 111, 229,\n 122, 60, 211, 133, 230, 220, 105, 92, 41, 55, 46, 245, 40, 244, 102, 143, 54, 65, 25, 63, 161, 1, 216, 80, 73, 209,\n 76, 132, 187, 208, 89, 18, 169, 200, 196, 135, 130, 116, 188, 159, 86, 164, 100, 109, 198, 173, 186, 3, 64, 52, 217,\n 226, 250, 124, 123, 5, 202, 38, 147, 118, 126, 255, 82, 85, 212, 207, 206, 59, 227, 47, 16, 58, 17, 182, 189, 28, 42,\n 223, 183, 170, 213, 119, 248, 152, 2, 44, 154, 163, 70, 221, 153, 101, 155, 167, 43, 172, 9, 129, 22, 39, 253, 19, 98,\n 108, 110, 79, 113, 224, 232, 178, 185, 112, 104, 218, 246, 97, 228, 251, 34, 242, 193, 238, 210, 144, 12, 191, 179,\n 162, 241, 81, 51, 145, 235, 249, 14, 239, 107, 49, 192, 214, 31, 181, 199, 106, 157, 184, 84, 204, 176, 115, 121, 50,\n 45, 127, 4, 150, 254, 138, 236, 205, 93, 222, 114, 67, 29, 24, 72, 243, 141, 128, 195, 78, 66, 215, 61, 156, 180, 151,\n 160, 137, 91, 90, 15, 131, 13, 201, 95, 96, 53, 194, 233, 7, 225, 140, 36, 103, 30, 69, 142, 8, 99, 37, 240, 21, 10,\n 23, 190, 6, 148, 247, 120, 234, 75, 0, 26, 197, 62, 94, 252, 219, 203, 117, 35, 11, 32, 57, 177, 33, 88, 237, 149, 56,\n 87, 174, 20, 125, 136, 171, 168, 68, 175, 74, 165, 71, 134, 139, 48, 27, 166, 77, 146, 158, 231, 83, 111, 229, 122,\n 60, 211, 133, 230, 220, 105, 92, 41, 55, 46, 245, 40, 244, 102, 143, 54, 65, 25, 63, 161, 1, 216, 80, 73, 209, 76,\n 132, 187, 208, 89, 18, 169, 200, 196, 135, 130, 116, 188, 159, 86, 164, 100, 109, 198, 173, 186, 3, 64, 52, 217, 226,\n 250, 124, 123, 5, 202, 38, 147, 118, 126, 255, 82, 85, 212, 207, 206, 59, 227, 47, 16, 58, 17, 182, 189, 28, 42, 223,\n 183, 170, 213, 119, 248, 152, 2, 44, 154, 163, 70, 221, 153, 101, 155, 167, 43, 172, 9, 129, 22, 39, 253, 19, 98, 108,\n 110, 79, 113, 224, 232, 178, 185, 112, 104, 218, 246, 97, 228, 251, 34, 242, 193, 238, 210, 144, 12, 191, 179, 162,\n 241, 81, 51, 145, 235, 249, 14, 239, 107, 49, 192, 214, 31, 181, 199, 106, 157, 184, 84, 204, 176, 115, 121, 50, 45,\n 127, 4, 150, 254, 138, 236, 205, 93, 222, 114, 67, 29, 24, 72, 243, 141, 128, 195, 78, 66, 215, 61, 156, 180,\n];\n","//\n// Lookup data for exp2f\n//\n\n// @ts-ignore: decorator\n@inline const EXP2F_TABLE_BITS = 5;\n\n// @ts-ignore: decorator\n@lazy @inline const EXP2F_DATA_TAB = memory.data([\n // exp2f_data_tab[i] = uint(2^(i/N)) - (i << 52-BITS)\n // used for computing 2^(k/N) for an int |k| < 150 N as\n // double(tab[k%N] + (k << 52-BITS))\n 0x3FF0000000000000, 0x3FEFD9B0D3158574, 0x3FEFB5586CF9890F, 0x3FEF9301D0125B51,\n 0x3FEF72B83C7D517B, 0x3FEF54873168B9AA, 0x3FEF387A6E756238, 0x3FEF1E9DF51FDEE1,\n 0x3FEF06FE0A31B715, 0x3FEEF1A7373AA9CB, 0x3FEEDEA64C123422, 0x3FEECE086061892D,\n 0x3FEEBFDAD5362A27, 0x3FEEB42B569D4F82, 0x3FEEAB07DD485429, 0x3FEEA47EB03A5585,\n 0x3FEEA09E667F3BCD, 0x3FEE9F75E8EC5F74, 0x3FEEA11473EB0187, 0x3FEEA589994CCE13,\n 0x3FEEACE5422AA0DB, 0x3FEEB737B0CDC5E5, 0x3FEEC49182A3F090, 0x3FEED503B23E255D,\n 0x3FEEE89F995AD3AD, 0x3FEEFF76F2FB5E47, 0x3FEF199BDD85529C, 0x3FEF3720DCEF9069,\n 0x3FEF5818DCFBA487, 0x3FEF7C97337B9B5F, 0x3FEFA4AFA2A490DA, 0x3FEFD0765B6E4540\n]);\n\n// ULP error: 0.502 (nearest rounding.)\n// Relative error: 1.69 * 2^-34 in [-1/64, 1/64] (before rounding.)\n// Wrong count: 168353 (all nearest rounding wrong results with fma.)\n// @ts-ignore: decorator\n@inline\nexport function exp2f_lut(x: f32): f32 {\n const\n N = 1 << EXP2F_TABLE_BITS,\n N_MASK = N - 1,\n shift = reinterpret(0x4338000000000000) / N, // 0x1.8p+52\n Ox127f = reinterpret(0x7F000000);\n\n const\n C0 = reinterpret(0x3FAC6AF84B912394), // 0x1.c6af84b912394p-5\n C1 = reinterpret(0x3FCEBFCE50FAC4F3), // 0x1.ebfce50fac4f3p-3\n C2 = reinterpret(0x3FE62E42FF0C52D6); // 0x1.62e42ff0c52d6p-1\n\n var xd = x;\n var ix = reinterpret(x);\n var ux = ix >> 20 & 0x7FF;\n if (ux >= 0x430) {\n // |x| >= 128 or x is nan.\n if (ix == 0xFF800000) return 0; // x == -Inf -> 0\n if (ux >= 0x7F8) return x + x; // x == Inf/NaN -> Inf/NaN\n if (x > 0) return x * Ox127f; // x > 0 -> HugeVal (Owerflow)\n if (x <= -150) return 0; // x <= -150 -> 0 (Underflow)\n }\n\n // x = k/N + r with r in [-1/(2N), 1/(2N)] and int k.\n var kd = xd + shift;\n var ki = reinterpret(kd);\n var r = xd - (kd - shift);\n var t: u64, y: f64, s: f64;\n\n // exp2(x) = 2^(k/N) * 2^r ~= s * (C0*r^3 + C1*r^2 + C2*r + 1)\n t = load(EXP2F_DATA_TAB + ((ki & N_MASK) << alignof()));\n t += ki << (52 - EXP2F_TABLE_BITS);\n s = reinterpret(t);\n y = C2 * r + 1;\n y += (C0 * r + C1) * (r * r);\n y *= s;\n\n return y;\n}\n\n// ULP error: 0.502 (nearest rounding.)\n// Relative error: 1.69 * 2^-34 in [-ln2/64, ln2/64] (before rounding.)\n// Wrong count: 170635 (all nearest rounding wrong results with fma.)\n// @ts-ignore: decorator\n@inline\nexport function expf_lut(x: f32): f32 {\n const\n N = 1 << EXP2F_TABLE_BITS,\n N_MASK = N - 1,\n shift = reinterpret(0x4338000000000000), // 0x1.8p+52\n InvLn2N = reinterpret(0x3FF71547652B82FE) * N, // 0x1.71547652b82fep+0\n Ox1p127f = reinterpret(0x7F000000);\n\n const\n C0 = reinterpret(0x3FAC6AF84B912394) / N / N / N, // 0x1.c6af84b912394p-5\n C1 = reinterpret(0x3FCEBFCE50FAC4F3) / N / N, // 0x1.ebfce50fac4f3p-3\n C2 = reinterpret(0x3FE62E42FF0C52D6) / N; // 0x1.62e42ff0c52d6p-1\n\n var xd = x;\n var ix = reinterpret(x);\n var ux = ix >> 20 & 0x7FF;\n if (ux >= 0x42B) {\n // |x| >= 88 or x is nan.\n if (ix == 0xFF800000) return 0; // x == -Inf -> 0\n if (ux >= 0x7F8) return x + x; // x == Inf/NaN -> Inf/NaN\n if (x > reinterpret(0x42B17217)) return x * Ox1p127f; // x > log(0x1p128) ~= 88.72 -> HugeVal (Owerflow)\n if (x < reinterpret(0xC2CFF1B4)) return 0; // x < log(0x1p-150) ~= -103.97 -> 0 (Underflow)\n }\n\n // x*N/Ln2 = k + r with r in [-1/2, 1/2] and int k.\n var z = InvLn2N * xd;\n\n // Round and convert z to int, the result is in [-150*N, 128*N] and\n // ideally ties-to-even rule is used, otherwise the magnitude of r\n // can be bigger which gives larger approximation error.\n var kd = (z + shift);\n var ki = reinterpret(kd);\n var r = z - (kd - shift);\n var s: f64, y: f64, t: u64;\n\n // exp(x) = 2^(k/N) * 2^(r/N) ~= s * (C0*r^3 + C1*r^2 + C2*r + 1)\n t = load(EXP2F_DATA_TAB + ((ki & N_MASK) << alignof()));\n t += ki << (52 - EXP2F_TABLE_BITS);\n s = reinterpret(t);\n z = C0 * r + C1;\n y = C2 * r + 1;\n y += z * (r * r);\n y *= s;\n\n return y;\n}\n\n//\n// Lookup data for log2f\n//\n\n// @ts-ignore: decorator\n@inline const LOG2F_TABLE_BITS = 4;\n\n// @ts-ignore: decorator\n@lazy @inline const LOG2F_DATA_TAB = memory.data([\n reinterpret(0x3FF661EC79F8F3BE), reinterpret(0xBFDEFEC65B963019), // 0x1.661ec79f8f3bep+0, -0x1.efec65b963019p-2,\n reinterpret(0x3FF571ED4AAF883D), reinterpret(0xBFDB0B6832D4FCA4), // 0x1.571ed4aaf883dp+0, -0x1.b0b6832d4fca4p-2,\n reinterpret(0x3FF49539F0F010B0), reinterpret(0xBFD7418B0A1FB77B), // 0x1.49539f0f010bp+0 , -0x1.7418b0a1fb77bp-2,\n reinterpret(0x3FF3C995B0B80385), reinterpret(0xBFD39DE91A6DCF7B), // 0x1.3c995b0b80385p+0, -0x1.39de91a6dcf7bp-2,\n reinterpret(0x3FF30D190C8864A5), reinterpret(0xBFD01D9BF3F2B631), // 0x1.30d190c8864a5p+0, -0x1.01d9bf3f2b631p-2,\n reinterpret(0x3FF25E227B0B8EA0), reinterpret(0xBFC97C1D1B3B7AF0), // 0x1.25e227b0b8eap+0 , -0x1.97c1d1b3b7afp-3 ,\n reinterpret(0x3FF1BB4A4A1A343F), reinterpret(0xBFC2F9E393AF3C9F), // 0x1.1bb4a4a1a343fp+0, -0x1.2f9e393af3c9fp-3,\n reinterpret(0x3FF12358F08AE5BA), reinterpret(0xBFB960CBBF788D5C), // 0x1.12358f08ae5bap+0, -0x1.960cbbf788d5cp-4,\n reinterpret(0x3FF0953F419900A7), reinterpret(0xBFAA6F9DB6475FCE), // 0x1.0953f419900a7p+0, -0x1.a6f9db6475fcep-5,\n reinterpret(0x3FF0000000000000), 0, // 0x1p+0, 0x0,\n reinterpret(0x3FEE608CFD9A47AC), reinterpret(0x3FB338CA9F24F53D), // 0x1.e608cfd9a47acp-1, 0x1.338ca9f24f53dp-4,\n reinterpret(0x3FECA4B31F026AA0), reinterpret(0x3FC476A9543891BA), // 0x1.ca4b31f026aap-1 , 0x1.476a9543891bap-3,\n reinterpret(0x3FEB2036576AFCE6), reinterpret(0x3FCE840B4AC4E4D2), // 0x1.b2036576afce6p-1, 0x1.e840b4ac4e4d2p-3,\n reinterpret(0x3FE9C2D163A1AA2D), reinterpret(0x3FD40645F0C6651C), // 0x1.9c2d163a1aa2dp-1, 0x1.40645f0c6651cp-2,\n reinterpret(0x3FE886E6037841ED), reinterpret(0x3FD88E9C2C1B9FF8), // 0x1.886e6037841edp-1, 0x1.88e9c2c1b9ff8p-2,\n reinterpret(0x3FE767DCF5534862), reinterpret(0x3FDCE0A44EB17BCC) // 0x1.767dcf5534862p-1, 0x1.ce0a44eb17bccp-2\n]);\n\n// ULP error: 0.752 (nearest rounding.)\n// Relative error: 1.9 * 2^-26 (before rounding.)\n// @ts-ignore: decorator\n@inline\nexport function log2f_lut(x: f32): f32 {\n const\n N_MASK = (1 << LOG2F_TABLE_BITS) - 1,\n Ox1p23f = reinterpret(0x4B000000); // 0x1p23f\n\n const\n A0 = reinterpret(0xBFD712B6F70A7E4D), // -0x1.712b6f70a7e4dp-2\n A1 = reinterpret(0x3FDECABF496832E0), // 0x1.ecabf496832ep-2\n A2 = reinterpret(0xBFE715479FFAE3DE), // -0x1.715479ffae3dep-1\n A3 = reinterpret(0x3FF715475F35C8B8); // 0x1.715475f35c8b8p0\n\n var ux = reinterpret(x);\n // Fix sign of zero with downward rounding when x==1.\n // if (WANT_ROUNDING && predict_false(ix == 0x3f800000)) return 0;\n if (ux - 0x00800000 >= 0x7F800000 - 0x00800000) {\n // x < 0x1p-126 or inf or nan.\n if (ux * 2 == 0) return -Infinity;\n if (ux == 0x7F800000) return x; // log2(inf) == inf.\n if ((ux >> 31) || ux * 2 >= 0xFF000000) return (x - x) / (x - x);\n // x is subnormal, normalize it.\n ux = reinterpret(x * Ox1p23f);\n ux -= 23 << 23;\n }\n // x = 2^k z; where z is in range [OFF,2*OFF] and exact.\n // The range is split into N subintervals.\n // The ith subinterval contains z and c is near its center.\n var tmp = ux - 0x3F330000;\n var i = (tmp >> (23 - LOG2F_TABLE_BITS)) & N_MASK;\n var top = tmp & 0xFF800000;\n var iz = ux - top;\n var k = tmp >> 23;\n\n var invc = load(LOG2F_DATA_TAB + (i << (1 + alignof())), 0 << alignof());\n var logc = load(LOG2F_DATA_TAB + (i << (1 + alignof())), 1 << alignof());\n var z = reinterpret(iz);\n\n // log2(x) = log1p(z/c-1)/ln2 + log2(c) + k\n var r = z * invc - 1;\n var y0 = logc + k;\n\n // Pipelined polynomial evaluation to approximate log1p(r)/ln2.\n var y = A1 * r + A2;\n var p = A3 * r + y0;\n var r2 = r * r;\n y += A0 * r2;\n y = y * r2 + p;\n\n return y;\n}\n\n//\n// Lookup data for logf. See: https://git.musl-libc.org/cgit/musl/tree/src/math/logf.c\n//\n\n// @ts-ignore: decorator\n@inline const LOGF_TABLE_BITS = 4;\n\n// @ts-ignore: decorator\n@lazy @inline const LOGF_DATA_TAB = memory.data([\n reinterpret(0x3FF661EC79F8F3BE), reinterpret(0xBFD57BF7808CAADE), // 0x1.661ec79f8f3bep+0, -0x1.57bf7808caadep-2,\n reinterpret(0x3FF571ED4AAF883D), reinterpret(0xBFD2BEF0A7C06DDB), // 0x1.571ed4aaf883dp+0, -0x1.2bef0a7c06ddbp-2,\n reinterpret(0x3FF49539F0F010B0), reinterpret(0xBFD01EAE7F513A67), // 0x1.49539f0f010bp+0 , -0x1.01eae7f513a67p-2,\n reinterpret(0x3FF3C995B0B80385), reinterpret(0xBFCB31D8A68224E9), // 0x1.3c995b0b80385p+0, -0x1.b31d8a68224e9p-3,\n reinterpret(0x3FF30D190C8864A5), reinterpret(0xBFC6574F0AC07758), // 0x1.30d190c8864a5p+0, -0x1.6574f0ac07758p-3,\n reinterpret(0x3FF25E227B0B8EA0), reinterpret(0xBFC1AA2BC79C8100), // 0x1.25e227b0b8eap+0 , -0x1.1aa2bc79c81p-3 ,\n reinterpret(0x3FF1BB4A4A1A343F), reinterpret(0xBFBA4E76CE8C0E5E), // 0x1.1bb4a4a1a343fp+0, -0x1.a4e76ce8c0e5ep-4,\n reinterpret(0x3FF12358F08AE5BA), reinterpret(0xBFB1973C5A611CCC), // 0x1.12358f08ae5bap+0, -0x1.1973c5a611cccp-4,\n reinterpret(0x3FF0953F419900A7), reinterpret(0xBFA252F438E10C1E), // 0x1.0953f419900a7p+0, -0x1.252f438e10c1ep-5,\n reinterpret(0x3FF0000000000000), 0, // 0x1p+0, 0,\n reinterpret(0x3FEE608CFD9A47AC), reinterpret(0x3FAAA5AA5DF25984), // 0x1.e608cfd9a47acp-1, 0x1.aa5aa5df25984p-5,\n reinterpret(0x3FECA4B31F026AA0), reinterpret(0x3FBC5E53AA362EB4), // 0x1.ca4b31f026aap-1 , 0x1.c5e53aa362eb4p-4,\n reinterpret(0x3FEB2036576AFCE6), reinterpret(0x3FC526E57720DB08), // 0x1.b2036576afce6p-1, 0x1.526e57720db08p-3,\n reinterpret(0x3FE9C2D163A1AA2D), reinterpret(0x3FCBC2860D224770), // 0x1.9c2d163a1aa2dp-1, 0x1.bc2860d22477p-3 ,\n reinterpret(0x3FE886E6037841ED), reinterpret(0x3FD1058BC8A07EE1), // 0x1.886e6037841edp-1, 0x1.1058bc8a07ee1p-2,\n reinterpret(0x3FE767DCF5534862), reinterpret(0x3FD4043057B6EE09) // 0x1.767dcf5534862p-1, 0x1.4043057b6ee09p-2\n]);\n\n// ULP error: 0.818 (nearest rounding.)\n// Relative error: 1.957 * 2^-26 (before rounding.)\n// @ts-ignore: decorator\n@inline\nexport function logf_lut(x: f32): f32 {\n const\n N_MASK = (1 << LOGF_TABLE_BITS) - 1,\n Ox1p23f = reinterpret(0x4B000000); // 0x1p23f\n\n const\n Ln2 = reinterpret(0x3FE62E42FEFA39EF), // 0x1.62e42fefa39efp-1;\n A0 = reinterpret(0xBFD00EA348B88334), // -0x1.00ea348b88334p-2\n A1 = reinterpret(0x3FD5575B0BE00B6A), // 0x1.5575b0be00b6ap-2\n A2 = reinterpret(0xBFDFFFFEF20A4123); // -0x1.ffffef20a4123p-2\n\n var ux = reinterpret(x);\n // Fix sign of zero with downward rounding when x==1.\n // if (WANT_ROUNDING && ux == 0x3f800000) return 0;\n if (ux - 0x00800000 >= 0x7F800000 - 0x00800000) {\n // x < 0x1p-126 or inf or nan.\n if ((ux << 1) == 0) return -Infinity;\n if (ux == 0x7F800000) return x; // log(inf) == inf.\n if ((ux >> 31) || (ux << 1) >= 0xFF000000) return (x - x) / (x - x);\n // x is subnormal, normalize it.\n ux = reinterpret(x * Ox1p23f);\n ux -= 23 << 23;\n }\n // x = 2^k z; where z is in range [OFF,2*OFF] and exact.\n // The range is split into N subintervals.\n // The ith subinterval contains z and c is near its center.\n var tmp = ux - 0x3F330000;\n var i = (tmp >> (23 - LOGF_TABLE_BITS)) & N_MASK;\n var k = tmp >> 23;\n var iz = ux - (tmp & 0x1FF << 23);\n\n var invc = load(LOGF_DATA_TAB + (i << (1 + alignof())), 0 << alignof());\n var logc = load(LOGF_DATA_TAB + (i << (1 + alignof())), 1 << alignof());\n\n var z = reinterpret(iz);\n\n // log(x) = log1p(z/c-1) + log(c) + k*Ln2\n var r = z * invc - 1;\n var y0 = logc + k * Ln2;\n\n // Pipelined polynomial evaluation to approximate log1p(r).\n var r2 = r * r;\n var y = A1 * r + A2;\n y += A0 * r2;\n y = y * r2 + (y0 + r);\n\n return y;\n}\n\n//\n// Lookup data for powf. See: https://git.musl-libc.org/cgit/musl/tree/src/math/powf.c\n//\n\n// @ts-ignore: decorator\n@inline\nfunction zeroinfnanf(ux: u32): bool {\n return (ux << 1) - 1 >= (0x7f800000 << 1) - 1;\n}\n\n// Returns 0 if not int, 1 if odd int, 2 if even int. The argument is\n// the bit representation of a non-zero finite floating-point value.\n// @ts-ignore: decorator\n@inline\nfunction checkintf(iy: u32): i32 {\n var e = iy >> 23 & 0xFF;\n if (e < 0x7F ) return 0;\n if (e > 0x7F + 23) return 2;\n e = 1 << (0x7F + 23 - e);\n if (iy & (e - 1)) return 0;\n if (iy & e ) return 1;\n return 2;\n}\n\n// Subnormal input is normalized so ix has negative biased exponent.\n// Output is multiplied by N (POWF_SCALE) if TOINT_INTRINICS is set.\n// @ts-ignore: decorator\n@inline\nfunction log2f_inline(ux: u32): f64 {\n const N_MASK = (1 << LOG2F_TABLE_BITS) - 1;\n\n const\n A0 = reinterpret(0x3FD27616C9496E0B), // 0x1.27616c9496e0bp-2\n A1 = reinterpret(0xBFD71969A075C67A), // -0x1.71969a075c67ap-2\n A2 = reinterpret(0x3FDEC70A6CA7BADD), // 0x1.ec70a6ca7baddp-2\n A3 = reinterpret(0xBFE7154748BEF6C8), // -0x1.7154748bef6c8p-1\n A4 = reinterpret(0x3FF71547652AB82B); // 0x1.71547652ab82bp+0\n\n // x = 2^k z; where z is in range [OFF,2*OFF] and exact.\n // The range is split into N subintervals.\n // The ith subinterval contains z and c is near its center.\n var tmp = ux - 0x3F330000;\n var i = usize((tmp >> (23 - LOG2F_TABLE_BITS)) & N_MASK);\n var top = tmp & 0xFF800000;\n var uz = ux - top;\n var k = top >> 23;\n\n var invc = load(LOG2F_DATA_TAB + (i << (1 + alignof())), 0 << alignof());\n var logc = load(LOG2F_DATA_TAB + (i << (1 + alignof())), 1 << alignof());\n var z = reinterpret(uz);\n\n // log2(x) = log1p(z/c-1)/ln2 + log2(c) + k\n var r = z * invc - 1;\n var y0 = logc + k;\n\n // Pipelined polynomial evaluation to approximate log1p(r)/ln2.\n var y = A0 * r + A1;\n var p = A2 * r + A3;\n var q = A4 * r + y0;\n\n r *= r;\n q += p * r;\n y = y * (r * r) + q;\n\n return y;\n}\n\n// The output of log2 and thus the input of exp2 is either scaled by N\n// (in case of fast toint intrinsics) or not. The unscaled xd must be\n// in [-1021,1023], sign_bias sets the sign of the result.\n// @ts-ignore: decorator\n@inline\nfunction exp2f_inline(xd: f64, signBias: u32): f32 {\n const\n N = 1 << EXP2F_TABLE_BITS,\n N_MASK = N - 1,\n shift = reinterpret(0x4338000000000000) / N; // 0x1.8p+52\n\n const\n C0 = reinterpret(0x3FAC6AF84B912394), // 0x1.c6af84b912394p-5\n C1 = reinterpret(0x3FCEBFCE50FAC4F3), // 0x1.ebfce50fac4f3p-3\n C2 = reinterpret(0x3FE62E42FF0C52D6); // 0x1.62e42ff0c52d6p-1\n\n // x = k/N + r with r in [-1/(2N), 1/(2N)]\n var kd = (xd + shift);\n var ki = reinterpret(kd);\n var r = xd - (kd - shift);\n var t: u64, z: f64, y: f64, s: f64;\n\n // exp2(x) = 2^(k/N) * 2^r ~= s * (C0*r^3 + C1*r^2 + C2*r + 1)\n t = load(EXP2F_DATA_TAB + ((ki & N_MASK) << alignof()));\n t += (ki + signBias) << (52 - EXP2F_TABLE_BITS);\n s = reinterpret(t);\n z = C0 * r + C1;\n y = C2 * r + 1;\n y += z * (r * r);\n y *= s;\n return y;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction xflowf(sign: u32, y: f32): f32 {\n return select(-y, y, sign) * y;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction oflowf(sign: u32): f32 {\n return xflowf(sign, reinterpret(0x70000000)); // 0x1p97f\n}\n\n// @ts-ignore: decorator\n@inline\nfunction uflowf(sign: u32): f32 {\n return xflowf(sign, reinterpret(0x10000000)); // 0x1p-95f\n}\n\n// @ts-ignore: decorator\n@inline\nexport function powf_lut(x: f32, y: f32): f32 {\n const\n Ox1p23f = reinterpret(0x4B000000), // 0x1p23f\n UPPER_LIMIT = reinterpret(0x405FFFFFFFD1D571), // 0x1.fffffffd1d571p+6\n LOWER_LIMIT = -150.0,\n SIGN_BIAS = 1 << (EXP2F_TABLE_BITS + 11);\n\n var signBias: u32 = 0;\n var ix = reinterpret(x);\n var iy = reinterpret(y);\n var ny = 0;\n\n if (i32(ix - 0x00800000 >= 0x7f800000 - 0x00800000) | (ny = i32(zeroinfnanf(iy)))) {\n // Either (x < 0x1p-126 or inf or nan) or (y is 0 or inf or nan).\n if (ny) {\n if ((iy << 1) == 0) return 1.0;\n if (ix == 0x3F800000) return NaN; // original: 1.0\n if ((ix << 1) > (0x7F800000 << 1) || (iy << 1) > (0x7F800000 << 1)) return x + y;\n if ((ix << 1) == (0x3F800000 << 1)) return NaN; // original: 1.0\n if (((ix << 1) < (0x3F800000 << 1)) == !(iy >> 31)) return 0; // |x| < 1 && y==inf or |x| > 1 && y==-inf.\n return y * y;\n }\n if (zeroinfnanf(ix)) {\n let x2 = x * x;\n if ((ix >> 31) && checkintf(iy) == 1) x2 = -x2;\n return iy < 0 ? 1 / x2 : x2;\n }\n // x and y are non-zero finite.\n if (ix < 0) {\n // Finite x < 0.\n let yint = checkintf(iy);\n if (yint == 0) return (x - x) / (x - x);\n if (yint == 1) signBias = SIGN_BIAS;\n ix &= 0x7FFFFFFF;\n }\n if (ix < 0x00800000) {\n // Normalize subnormal x so exponent becomes negative.\n ix = reinterpret(x * Ox1p23f);\n ix &= 0x7FFFFFFF;\n ix -= 23 << 23;\n }\n }\n var logx = log2f_inline(ix);\n var ylogx = y * logx; // cannot overflow, y is single prec.\n if ((reinterpret(ylogx) >> 47 & 0xFFFF) >= 0x80BF) { // reinterpret(126.0) >> 47\n // |y * log(x)| >= 126\n if (ylogx > UPPER_LIMIT) return oflowf(signBias); // overflow\n if (ylogx <= LOWER_LIMIT) return uflowf(signBias); // underflow\n }\n return exp2f_inline(ylogx, signBias);\n}\n\n//\n// Lookup data for exp. See: https://git.musl-libc.org/cgit/musl/tree/src/math/exp.c\n//\n\n// @ts-ignore: decorator\n@inline const EXP_TABLE_BITS = 7;\n\n// @ts-ignore: decorator\n@lazy @inline const EXP_DATA_TAB = memory.data([\n 0x0000000000000000, 0x3FF0000000000000,\n 0x3C9B3B4F1A88BF6E, 0x3FEFF63DA9FB3335,\n 0xBC7160139CD8DC5D, 0x3FEFEC9A3E778061,\n 0xBC905E7A108766D1, 0x3FEFE315E86E7F85,\n 0x3C8CD2523567F613, 0x3FEFD9B0D3158574,\n 0xBC8BCE8023F98EFA, 0x3FEFD06B29DDF6DE,\n 0x3C60F74E61E6C861, 0x3FEFC74518759BC8,\n 0x3C90A3E45B33D399, 0x3FEFBE3ECAC6F383,\n 0x3C979AA65D837B6D, 0x3FEFB5586CF9890F,\n 0x3C8EB51A92FDEFFC, 0x3FEFAC922B7247F7,\n 0x3C3EBE3D702F9CD1, 0x3FEFA3EC32D3D1A2,\n 0xBC6A033489906E0B, 0x3FEF9B66AFFED31B,\n 0xBC9556522A2FBD0E, 0x3FEF9301D0125B51,\n 0xBC5080EF8C4EEA55, 0x3FEF8ABDC06C31CC,\n 0xBC91C923B9D5F416, 0x3FEF829AAEA92DE0,\n 0x3C80D3E3E95C55AF, 0x3FEF7A98C8A58E51,\n 0xBC801B15EAA59348, 0x3FEF72B83C7D517B,\n 0xBC8F1FF055DE323D, 0x3FEF6AF9388C8DEA,\n 0x3C8B898C3F1353BF, 0x3FEF635BEB6FCB75,\n 0xBC96D99C7611EB26, 0x3FEF5BE084045CD4,\n 0x3C9AECF73E3A2F60, 0x3FEF54873168B9AA,\n 0xBC8FE782CB86389D, 0x3FEF4D5022FCD91D,\n 0x3C8A6F4144A6C38D, 0x3FEF463B88628CD6,\n 0x3C807A05B0E4047D, 0x3FEF3F49917DDC96,\n 0x3C968EFDE3A8A894, 0x3FEF387A6E756238,\n 0x3C875E18F274487D, 0x3FEF31CE4FB2A63F,\n 0x3C80472B981FE7F2, 0x3FEF2B4565E27CDD,\n 0xBC96B87B3F71085E, 0x3FEF24DFE1F56381,\n 0x3C82F7E16D09AB31, 0x3FEF1E9DF51FDEE1,\n 0xBC3D219B1A6FBFFA, 0x3FEF187FD0DAD990,\n 0x3C8B3782720C0AB4, 0x3FEF1285A6E4030B,\n 0x3C6E149289CECB8F, 0x3FEF0CAFA93E2F56,\n 0x3C834D754DB0ABB6, 0x3FEF06FE0A31B715,\n 0x3C864201E2AC744C, 0x3FEF0170FC4CD831,\n 0x3C8FDD395DD3F84A, 0x3FEEFC08B26416FF,\n 0xBC86A3803B8E5B04, 0x3FEEF6C55F929FF1,\n 0xBC924AEDCC4B5068, 0x3FEEF1A7373AA9CB,\n 0xBC9907F81B512D8E, 0x3FEEECAE6D05D866,\n 0xBC71D1E83E9436D2, 0x3FEEE7DB34E59FF7,\n 0xBC991919B3CE1B15, 0x3FEEE32DC313A8E5,\n 0x3C859F48A72A4C6D, 0x3FEEDEA64C123422,\n 0xBC9312607A28698A, 0x3FEEDA4504AC801C,\n 0xBC58A78F4817895B, 0x3FEED60A21F72E2A,\n 0xBC7C2C9B67499A1B, 0x3FEED1F5D950A897,\n 0x3C4363ED60C2AC11, 0x3FEECE086061892D,\n 0x3C9666093B0664EF, 0x3FEECA41ED1D0057,\n 0x3C6ECCE1DAA10379, 0x3FEEC6A2B5C13CD0,\n 0x3C93FF8E3F0F1230, 0x3FEEC32AF0D7D3DE,\n 0x3C7690CEBB7AAFB0, 0x3FEEBFDAD5362A27,\n 0x3C931DBDEB54E077, 0x3FEEBCB299FDDD0D,\n 0xBC8F94340071A38E, 0x3FEEB9B2769D2CA7,\n 0xBC87DECCDC93A349, 0x3FEEB6DAA2CF6642,\n 0xBC78DEC6BD0F385F, 0x3FEEB42B569D4F82,\n 0xBC861246EC7B5CF6, 0x3FEEB1A4CA5D920F,\n 0x3C93350518FDD78E, 0x3FEEAF4736B527DA,\n 0x3C7B98B72F8A9B05, 0x3FEEAD12D497C7FD,\n 0x3C9063E1E21C5409, 0x3FEEAB07DD485429,\n 0x3C34C7855019C6EA, 0x3FEEA9268A5946B7,\n 0x3C9432E62B64C035, 0x3FEEA76F15AD2148,\n 0xBC8CE44A6199769F, 0x3FEEA5E1B976DC09,\n 0xBC8C33C53BEF4DA8, 0x3FEEA47EB03A5585,\n 0xBC845378892BE9AE, 0x3FEEA34634CCC320,\n 0xBC93CEDD78565858, 0x3FEEA23882552225,\n 0x3C5710AA807E1964, 0x3FEEA155D44CA973,\n 0xBC93B3EFBF5E2228, 0x3FEEA09E667F3BCD,\n 0xBC6A12AD8734B982, 0x3FEEA012750BDABF,\n 0xBC6367EFB86DA9EE, 0x3FEE9FB23C651A2F,\n 0xBC80DC3D54E08851, 0x3FEE9F7DF9519484,\n 0xBC781F647E5A3ECF, 0x3FEE9F75E8EC5F74,\n 0xBC86EE4AC08B7DB0, 0x3FEE9F9A48A58174,\n 0xBC8619321E55E68A, 0x3FEE9FEB564267C9,\n 0x3C909CCB5E09D4D3, 0x3FEEA0694FDE5D3F,\n 0xBC7B32DCB94DA51D, 0x3FEEA11473EB0187,\n 0x3C94ECFD5467C06B, 0x3FEEA1ED0130C132,\n 0x3C65EBE1ABD66C55, 0x3FEEA2F336CF4E62,\n 0xBC88A1C52FB3CF42, 0x3FEEA427543E1A12,\n 0xBC9369B6F13B3734, 0x3FEEA589994CCE13,\n 0xBC805E843A19FF1E, 0x3FEEA71A4623C7AD,\n 0xBC94D450D872576E, 0x3FEEA8D99B4492ED,\n 0x3C90AD675B0E8A00, 0x3FEEAAC7D98A6699,\n 0x3C8DB72FC1F0EAB4, 0x3FEEACE5422AA0DB,\n 0xBC65B6609CC5E7FF, 0x3FEEAF3216B5448C,\n 0x3C7BF68359F35F44, 0x3FEEB1AE99157736,\n 0xBC93091FA71E3D83, 0x3FEEB45B0B91FFC6,\n 0xBC5DA9B88B6C1E29, 0x3FEEB737B0CDC5E5,\n 0xBC6C23F97C90B959, 0x3FEEBA44CBC8520F,\n 0xBC92434322F4F9AA, 0x3FEEBD829FDE4E50,\n 0xBC85CA6CD7668E4B, 0x3FEEC0F170CA07BA,\n 0x3C71AFFC2B91CE27, 0x3FEEC49182A3F090,\n 0x3C6DD235E10A73BB, 0x3FEEC86319E32323,\n 0xBC87C50422622263, 0x3FEECC667B5DE565,\n 0x3C8B1C86E3E231D5, 0x3FEED09BEC4A2D33,\n 0xBC91BBD1D3BCBB15, 0x3FEED503B23E255D,\n 0x3C90CC319CEE31D2, 0x3FEED99E1330B358,\n 0x3C8469846E735AB3, 0x3FEEDE6B5579FDBF,\n 0xBC82DFCD978E9DB4, 0x3FEEE36BBFD3F37A,\n 0x3C8C1A7792CB3387, 0x3FEEE89F995AD3AD,\n 0xBC907B8F4AD1D9FA, 0x3FEEEE07298DB666,\n 0xBC55C3D956DCAEBA, 0x3FEEF3A2B84F15FB,\n 0xBC90A40E3DA6F640, 0x3FEEF9728DE5593A,\n 0xBC68D6F438AD9334, 0x3FEEFF76F2FB5E47,\n 0xBC91EEE26B588A35, 0x3FEF05B030A1064A,\n 0x3C74FFD70A5FDDCD, 0x3FEF0C1E904BC1D2,\n 0xBC91BDFBFA9298AC, 0x3FEF12C25BD71E09,\n 0x3C736EAE30AF0CB3, 0x3FEF199BDD85529C,\n 0x3C8EE3325C9FFD94, 0x3FEF20AB5FFFD07A,\n 0x3C84E08FD10959AC, 0x3FEF27F12E57D14B,\n 0x3C63CDAF384E1A67, 0x3FEF2F6D9406E7B5,\n 0x3C676B2C6C921968, 0x3FEF3720DCEF9069,\n 0xBC808A1883CCB5D2, 0x3FEF3F0B555DC3FA,\n 0xBC8FAD5D3FFFFA6F, 0x3FEF472D4A07897C,\n 0xBC900DAE3875A949, 0x3FEF4F87080D89F2,\n 0x3C74A385A63D07A7, 0x3FEF5818DCFBA487,\n 0xBC82919E2040220F, 0x3FEF60E316C98398,\n 0x3C8E5A50D5C192AC, 0x3FEF69E603DB3285,\n 0x3C843A59AC016B4B, 0x3FEF7321F301B460,\n 0xBC82D52107B43E1F, 0x3FEF7C97337B9B5F,\n 0xBC892AB93B470DC9, 0x3FEF864614F5A129,\n 0x3C74B604603A88D3, 0x3FEF902EE78B3FF6,\n 0x3C83C5EC519D7271, 0x3FEF9A51FBC74C83,\n 0xBC8FF7128FD391F0, 0x3FEFA4AFA2A490DA,\n 0xBC8DAE98E223747D, 0x3FEFAF482D8E67F1,\n 0x3C8EC3BC41AA2008, 0x3FEFBA1BEE615A27,\n 0x3C842B94C3A9EB32, 0x3FEFC52B376BBA97,\n 0x3C8A64A931D185EE, 0x3FEFD0765B6E4540,\n 0xBC8E37BAE43BE3ED, 0x3FEFDBFDAD9CBE14,\n 0x3C77893B4D91CD9D, 0x3FEFE7C1819E90D8,\n 0x3C5305C14160CC89, 0x3FEFF3C22B8F71F1\n]);\n\n// Handle cases that may overflow or underflow when computing the result that\n// is scale*(1+TMP) without intermediate rounding. The bit representation of\n// scale is in SBITS, however it has a computed exponent that may have\n// overflown into the sign bit so that needs to be adjusted before using it as\n// a double. (int32_t)KI is the k used in the argument reduction and exponent\n// adjustment of scale, positive k here means the result may overflow and\n// negative k means the result may underflow.\n// @ts-ignore: decorator\n@inline\nfunction specialcase(tmp: f64, sbits: u64, ki: u64): f64 {\n const\n Ox1p_1022 = reinterpret(0x0010000000000000), // 0x1p-1022\n Ox1p1009 = reinterpret(0x7F00000000000000); // 0x1p1009\n\n var scale: f64;\n if (!(ki & 0x80000000)) {\n // k > 0, the exponent of scale might have overflowed by <= 460.\n sbits -= u64(1009) << 52;\n scale = reinterpret(sbits);\n return Ox1p1009 * (scale + scale * tmp); // 0x1p1009\n }\n // k < 0, need special care in the subnormal range.\n sbits += u64(1022) << 52;\n // Note: sbits is signed scale.\n scale = reinterpret(sbits);\n var y = scale + scale * tmp;\n if (abs(y) < 1.0) {\n // Round y to the right precision before scaling it into the subnormal\n // range to avoid double rounding that can cause 0.5+E/2 ulp error where\n // E is the worst-case ulp error outside the subnormal range. So this\n // is only useful if the goal is better than 1 ulp worst-case error.\n let one = copysign(1.0, y);\n let lo = scale - y + scale * tmp;\n let hi = one + y;\n lo = one - hi + y + lo;\n y = (hi + lo) - one;\n // Fix the sign of 0.\n if (y == 0.0) y = reinterpret(sbits & 0x8000000000000000);\n }\n return y * Ox1p_1022;\n}\n\n// @ts-ignore: decorator\n@inline\nexport function exp_lut(x: f64): f64 {\n const\n N = 1 << EXP_TABLE_BITS,\n N_MASK = N - 1;\n\n const\n InvLn2N = reinterpret(0x3FF71547652B82FE) * N, // 0x1.71547652b82fep0\n NegLn2hiN = reinterpret(0xBF762E42FEFA0000), // -0x1.62e42fefa0000p-8\n NegLn2loN = reinterpret(0xBD0CF79ABC9E3B3A), // -0x1.cf79abc9e3b3ap-47\n shift = reinterpret(0x4338000000000000); // 0x1.8p52;\n\n const\n C2 = reinterpret(0x3FDFFFFFFFFFFDBD), // __exp_data.poly[0] (0x1.ffffffffffdbdp-2)\n C3 = reinterpret(0x3FC555555555543C), // __exp_data.poly[1] (0x1.555555555543cp-3)\n C4 = reinterpret(0x3FA55555CF172B91), // __exp_data.poly[2] (0x1.55555cf172b91p-5)\n C5 = reinterpret(0x3F81111167A4D017); // __exp_data.poly[3] (0x1.1111167a4d017p-7)\n\n var ux = reinterpret(x);\n var abstop = u32(ux >> 52) & 0x7FF;\n if (abstop - 0x3C9 >= 0x03F) {\n if (abstop - 0x3C9 >= 0x80000000) return 1;\n if (abstop >= 0x409) {\n if (ux == 0xFFF0000000000000) return 0;\n if (abstop >= 0x7FF) {\n return 1.0 + x;\n } else {\n return select(0, Infinity, ux < 0);\n }\n }\n // Large x is special cased below.\n abstop = 0;\n }\n\n // exp(x) = 2^(k/N) * exp(r), with exp(r) in [2^(-1/2N),2^(1/2N)]\n // x = ln2/N*k + r, with int k and r in [-ln2/2N, ln2/2N]\n var z = InvLn2N * x;\n // #if TOINT_INTRINSICS\n // \tkd = roundtoint(z);\n // \tki = converttoint(z);\n // #elif EXP_USE_TOINT_NARROW\n // \t// z - kd is in [-0.5-2^-16, 0.5] in all rounding modes.\n // var kd = z + shift;\n // var ki = reinterpret(kd) >> 16;\n // var kd = ki;\n // #else\n // z - kd is in [-1, 1] in non-nearest rounding modes.\n var kd = z + shift;\n var ki = reinterpret(kd);\n kd -= shift;\n // #endif\n var r = x + kd * NegLn2hiN + kd * NegLn2loN;\n // 2^(k/N) ~= scale * (1 + tail).\n var idx = usize((ki & N_MASK) << 1);\n var top = ki << (52 - EXP_TABLE_BITS);\n\n var tail = reinterpret(load(EXP_DATA_TAB + (idx << alignof()))); // T[idx]\n // This is only a valid scale when -1023*N < k < 1024*N\n var sbits = load(EXP_DATA_TAB + (idx << alignof()), 1 << alignof()) + top; // T[idx + 1]\n // exp(x) = 2^(k/N) * exp(r) ~= scale + scale * (tail + exp(r) - 1).\n // Evaluation is optimized assuming superscalar pipelined execution.\n var r2 = r * r;\n // Without fma the worst case error is 0.25/N ulp larger.\n // Worst case error is less than 0.5+1.11/N+(abs poly error * 2^53) ulp.\n var tmp = tail + r + r2 * (C2 + r * C3) + r2 * r2 * (C4 + r * C5);\n if (abstop == 0) return specialcase(tmp, sbits, ki);\n var scale = reinterpret(sbits);\n // Note: tmp == 0 or |tmp| > 2^-200 and scale > 2^-739, so there\n // is no spurious underflow here even without fma.\n return scale + scale * tmp;\n}\n\n//\n// Lookup data for exp2. See: https://git.musl-libc.org/cgit/musl/tree/src/math/exp2.c\n//\n\n// Handle cases that may overflow or underflow when computing the result that\n// is scale*(1+TMP) without intermediate rounding. The bit representation of\n// scale is in SBITS, however it has a computed exponent that may have\n// overflown into the sign bit so that needs to be adjusted before using it as\n// a double. (int32_t)KI is the k used in the argument reduction and exponent\n// adjustment of scale, positive k here means the result may overflow and\n// negative k means the result may underflow.\n// @ts-ignore: decorator\n@inline\nfunction specialcase2(tmp: f64, sbits: u64, ki: u64): f64 {\n const Ox1p_1022 = reinterpret(0x10000000000000); // 0x1p-1022\n var scale: f64;\n if ((ki & 0x80000000) == 0) {\n // k > 0, the exponent of scale might have overflowed by 1\n sbits -= u64(1) << 52;\n scale = reinterpret(sbits);\n return 2 * (scale * tmp + scale);\n }\n // k < 0, need special care in the subnormal range\n sbits += u64(1022) << 52;\n scale = reinterpret(sbits);\n var y = scale * tmp + scale;\n if (y < 1.0) {\n // Round y to the right precision before scaling it into the subnormal\n // range to avoid double rounding that can cause 0.5+E/2 ulp error where\n // E is the worst-case ulp error outside the subnormal range. So this\n // is only useful if the goal is better than 1 ulp worst-case error.\n let hi: f64, lo: f64;\n lo = scale - y + scale * tmp;\n hi = 1.0 + y;\n lo = 1.0 - hi + y + lo;\n y = (hi + lo) - 1.0;\n }\n return y * Ox1p_1022;\n}\n\n// @ts-ignore: decorator\n@inline\nexport function exp2_lut(x: f64): f64 {\n const\n N = 1 << EXP_TABLE_BITS,\n N_MASK = N - 1,\n shift = reinterpret(0x4338000000000000) / N; // 0x1.8p52\n\n const\n C1 = reinterpret(0x3FE62E42FEFA39EF), // 0x1.62e42fefa39efp-1\n C2 = reinterpret(0x3FCEBFBDFF82C424), // 0x1.ebfbdff82c424p-3\n C3 = reinterpret(0x3FAC6B08D70CF4B5), // 0x1.c6b08d70cf4b5p-5\n C4 = reinterpret(0x3F83B2ABD24650CC), // 0x1.3b2abd24650ccp-7\n C5 = reinterpret(0x3F55D7E09B4E3A84); // 0x1.5d7e09b4e3a84p-10\n\n var ux = reinterpret(x);\n var abstop = u32(ux >> 52) & 0x7ff;\n if (abstop - 0x3C9 >= 0x03F) {\n if (abstop - 0x3C9 >= 0x80000000) return 1.0;\n if (abstop >= 0x409) {\n if (ux == 0xFFF0000000000000) return 0;\n if (abstop >= 0x7FF) return 1.0 + x;\n if (ux >= 0) return Infinity;\n else if (ux >= 0xC090CC0000000000) return 0;\n }\n if ((ux << 1) > 0x811A000000000000) abstop = 0; // Large x is special cased below.\n }\n\n // exp2(x) = 2^(k/N) * 2^r, with 2^r in [2^(-1/2N),2^(1/2N)].\n // x = k/N + r, with int k and r in [-1/2N, 1/2N]\n var kd = x + shift;\n var ki = reinterpret(kd);\n kd -= shift; // k/N for int k\n var r = x - kd;\n // 2^(k/N) ~= scale * (1 + tail)\n var idx = usize((ki & N_MASK) << 1);\n var top = ki << (52 - EXP_TABLE_BITS);\n\n var tail = reinterpret(load(EXP_DATA_TAB + (idx << alignof()), 0 << alignof())); // T[idx])\n // This is only a valid scale when -1023*N < k < 1024*N\n var sbits = load(EXP_DATA_TAB + (idx << alignof()), 1 << alignof()) + top; // T[idx + 1]\n // exp2(x) = 2^(k/N) * 2^r ~= scale + scale * (tail + 2^r - 1).\n // Evaluation is optimized assuming superscalar pipelined execution\n var r2 = r * r;\n // Without fma the worst case error is 0.5/N ulp larger.\n // Worst case error is less than 0.5+0.86/N+(abs poly error * 2^53) ulp.\n var tmp = tail + r * C1 + r2 * (C2 + r * C3) + r2 * r2 * (C4 + r * C5);\n if (abstop == 0) return specialcase2(tmp, sbits, ki);\n var scale = reinterpret(sbits);\n // Note: tmp == 0 or |tmp| > 2^-65 and scale > 2^-928, so there\n // is no spurious underflow here even without fma.\n return scale * tmp + scale;\n}\n\n//\n// Lookup data for log2. See: https://git.musl-libc.org/cgit/musl/tree/src/math/log2.c\n//\n\n// @ts-ignore: decorator\n@inline const LOG2_TABLE_BITS = 6;\n\n/* Algorithm:\n\n x = 2^k z\n log2(x) = k + log2(c) + log2(z/c)\n log2(z/c) = poly(z/c - 1)\n\nwhere z is in [1.6p-1; 1.6p0] which is split into N subintervals and z falls\ninto the ith one, then table entries are computed as\n\n tab[i].invc = 1/c\n tab[i].logc = (double)log2(c)\n tab2[i].chi = (double)c\n tab2[i].clo = (double)(c - (double)c)\n\nwhere c is near the center of the subinterval and is chosen by trying +-2^29\nfloating point invc candidates around 1/center and selecting one for which\n\n 1) the rounding error in 0x1.8p10 + logc is 0,\n 2) the rounding error in z - chi - clo is < 0x1p-64 and\n 3) the rounding error in (double)log2(c) is minimized (< 0x1p-68).\n\nNote: 1) ensures that k + logc can be computed without rounding error, 2)\nensures that z/c - 1 can be computed as (z - chi - clo)*invc with close to a\nsingle rounding error when there is no fast fma for z*invc - 1, 3) ensures\nthat logc + poly(z/c - 1) has small error, however near x == 1 when\n|log2(x)| < 0x1p-4, this is not enough so that is special cased. */\n\n// @ts-ignore: decorator\n@lazy @inline const LOG2_DATA_TAB1 = memory.data([\n // invc , logc\n reinterpret(0x3FF724286BB1ACF8), reinterpret(0xBFE1095FEECDB000),\n reinterpret(0x3FF6E1F766D2CCA1), reinterpret(0xBFE08494BD76D000),\n reinterpret(0x3FF6A13D0E30D48A), reinterpret(0xBFE00143AEE8F800),\n reinterpret(0x3FF661EC32D06C85), reinterpret(0xBFDEFEC5360B4000),\n reinterpret(0x3FF623FA951198F8), reinterpret(0xBFDDFDD91AB7E000),\n reinterpret(0x3FF5E75BA4CF026C), reinterpret(0xBFDCFFAE0CC79000),\n reinterpret(0x3FF5AC055A214FB8), reinterpret(0xBFDC043811FDA000),\n reinterpret(0x3FF571ED0F166E1E), reinterpret(0xBFDB0B67323AE000),\n reinterpret(0x3FF53909590BF835), reinterpret(0xBFDA152F5A2DB000),\n reinterpret(0x3FF5014FED61ADDD), reinterpret(0xBFD9217F5AF86000),\n reinterpret(0x3FF4CAB88E487BD0), reinterpret(0xBFD8304DB0719000),\n reinterpret(0x3FF49539B4334FEE), reinterpret(0xBFD74189F9A9E000),\n reinterpret(0x3FF460CBDFAFD569), reinterpret(0xBFD6552BB5199000),\n reinterpret(0x3FF42D664EE4B953), reinterpret(0xBFD56B23A29B1000),\n reinterpret(0x3FF3FB01111DD8A6), reinterpret(0xBFD483650F5FA000),\n reinterpret(0x3FF3C995B70C5836), reinterpret(0xBFD39DE937F6A000),\n reinterpret(0x3FF3991C4AB6FD4A), reinterpret(0xBFD2BAA1538D6000),\n reinterpret(0x3FF3698E0CE099B5), reinterpret(0xBFD1D98340CA4000),\n reinterpret(0x3FF33AE48213E7B2), reinterpret(0xBFD0FA853A40E000),\n reinterpret(0x3FF30D191985BDB1), reinterpret(0xBFD01D9C32E73000),\n reinterpret(0x3FF2E025CAB271D7), reinterpret(0xBFCE857DA2FA6000),\n reinterpret(0x3FF2B404CF13CD82), reinterpret(0xBFCCD3C8633D8000),\n reinterpret(0x3FF288B02C7CCB50), reinterpret(0xBFCB26034C14A000),\n reinterpret(0x3FF25E2263944DE5), reinterpret(0xBFC97C1C2F4FE000),\n reinterpret(0x3FF234563D8615B1), reinterpret(0xBFC7D6023F800000),\n reinterpret(0x3FF20B46E33EAF38), reinterpret(0xBFC633A71A05E000),\n reinterpret(0x3FF1E2EEFDCDA3DD), reinterpret(0xBFC494F5E9570000),\n reinterpret(0x3FF1BB4A580B3930), reinterpret(0xBFC2F9E424E0A000),\n reinterpret(0x3FF19453847F2200), reinterpret(0xBFC162595AFDC000),\n reinterpret(0x3FF16E06C0D5D73C), reinterpret(0xBFBF9C9A75BD8000),\n reinterpret(0x3FF1485F47B7E4C2), reinterpret(0xBFBC7B575BF9C000),\n reinterpret(0x3FF12358AD0085D1), reinterpret(0xBFB960C60FF48000),\n reinterpret(0x3FF0FEF00F532227), reinterpret(0xBFB64CE247B60000),\n reinterpret(0x3FF0DB2077D03A8F), reinterpret(0xBFB33F78B2014000),\n reinterpret(0x3FF0B7E6D65980D9), reinterpret(0xBFB0387D1A42C000),\n reinterpret(0x3FF0953EFE7B408D), reinterpret(0xBFAA6F9208B50000),\n reinterpret(0x3FF07325CAC53B83), reinterpret(0xBFA47A954F770000),\n reinterpret(0x3FF05197E40D1B5C), reinterpret(0xBF9D23A8C50C0000),\n reinterpret(0x3FF03091C1208EA2), reinterpret(0xBF916A2629780000),\n reinterpret(0x3FF0101025B37E21), reinterpret(0xBF7720F8D8E80000),\n reinterpret(0x3FEFC07EF9CAA76B), reinterpret(0x3F86FE53B1500000),\n reinterpret(0x3FEF4465D3F6F184), reinterpret(0x3FA11CCCE10F8000),\n reinterpret(0x3FEECC079F84107F), reinterpret(0x3FAC4DFC8C8B8000),\n reinterpret(0x3FEE573A99975AE8), reinterpret(0x3FB3AA321E574000),\n reinterpret(0x3FEDE5D6F0BD3DE6), reinterpret(0x3FB918A0D08B8000),\n reinterpret(0x3FED77B681FF38B3), reinterpret(0x3FBE72E9DA044000),\n reinterpret(0x3FED0CB5724DE943), reinterpret(0x3FC1DCD2507F6000),\n reinterpret(0x3FECA4B2DC0E7563), reinterpret(0x3FC476AB03DEA000),\n reinterpret(0x3FEC3F8EE8D6CB51), reinterpret(0x3FC7074377E22000),\n reinterpret(0x3FEBDD2B4F020C4C), reinterpret(0x3FC98EDE8BA94000),\n reinterpret(0x3FEB7D6C006015CA), reinterpret(0x3FCC0DB86AD2E000),\n reinterpret(0x3FEB20366E2E338F), reinterpret(0x3FCE840AAFCEE000),\n reinterpret(0x3FEAC57026295039), reinterpret(0x3FD0790AB4678000),\n reinterpret(0x3FEA6D01BC2731DD), reinterpret(0x3FD1AC056801C000),\n reinterpret(0x3FEA16D3BC3FF18B), reinterpret(0x3FD2DB11D4FEE000),\n reinterpret(0x3FE9C2D14967FEAD), reinterpret(0x3FD406464EC58000),\n reinterpret(0x3FE970E4F47C9902), reinterpret(0x3FD52DBE093AF000),\n reinterpret(0x3FE920FB3982BCF2), reinterpret(0x3FD651902050D000),\n reinterpret(0x3FE8D30187F759F1), reinterpret(0x3FD771D2CDEAF000),\n reinterpret(0x3FE886E5EBB9F66D), reinterpret(0x3FD88E9C857D9000),\n reinterpret(0x3FE83C97B658B994), reinterpret(0x3FD9A80155E16000),\n reinterpret(0x3FE7F405FFC61022), reinterpret(0x3FDABE186ED3D000),\n reinterpret(0x3FE7AD22181415CA), reinterpret(0x3FDBD0F2AEA0E000),\n reinterpret(0x3FE767DCF99EFF8C), reinterpret(0x3FDCE0A43DBF4000)\n]);\n\n// @ts-ignore: decorator\n@lazy @inline const LOG2_DATA_TAB2 = memory.data([\n // chi , clo\n reinterpret(0x3FE6200012B90A8E), reinterpret(0x3C8904AB0644B605),\n reinterpret(0x3FE66000045734A6), reinterpret(0x3C61FF9BEA62F7A9),\n reinterpret(0x3FE69FFFC325F2C5), reinterpret(0x3C827ECFCB3C90BA),\n reinterpret(0x3FE6E00038B95A04), reinterpret(0x3C88FF8856739326),\n reinterpret(0x3FE71FFFE09994E3), reinterpret(0x3C8AFD40275F82B1),\n reinterpret(0x3FE7600015590E10), reinterpret(0xBC72FD75B4238341),\n reinterpret(0x3FE7A00012655BD5), reinterpret(0x3C7808E67C242B76),\n reinterpret(0x3FE7E0003259E9A6), reinterpret(0xBC6208E426F622B7),\n reinterpret(0x3FE81FFFEDB4B2D2), reinterpret(0xBC8402461EA5C92F),\n reinterpret(0x3FE860002DFAFCC3), reinterpret(0x3C6DF7F4A2F29A1F),\n reinterpret(0x3FE89FFFF78C6B50), reinterpret(0xBC8E0453094995FD),\n reinterpret(0x3FE8E00039671566), reinterpret(0xBC8A04F3BEC77B45),\n reinterpret(0x3FE91FFFE2BF1745), reinterpret(0xBC77FA34400E203C),\n reinterpret(0x3FE95FFFCC5C9FD1), reinterpret(0xBC76FF8005A0695D),\n reinterpret(0x3FE9A0003BBA4767), reinterpret(0x3C70F8C4C4EC7E03),\n reinterpret(0x3FE9DFFFE7B92DA5), reinterpret(0x3C8E7FD9478C4602),\n reinterpret(0x3FEA1FFFD72EFDAF), reinterpret(0xBC6A0C554DCDAE7E),\n reinterpret(0x3FEA5FFFDE04FF95), reinterpret(0x3C867DA98CE9B26B),\n reinterpret(0x3FEA9FFFCA5E8D2B), reinterpret(0xBC8284C9B54C13DE),\n reinterpret(0x3FEADFFFDDAD03EA), reinterpret(0x3C5812C8EA602E3C),\n reinterpret(0x3FEB1FFFF10D3D4D), reinterpret(0xBC8EFADDAD27789C),\n reinterpret(0x3FEB5FFFCE21165A), reinterpret(0x3C53CB1719C61237),\n reinterpret(0x3FEB9FFFD950E674), reinterpret(0x3C73F7D94194CE00),\n reinterpret(0x3FEBE000139CA8AF), reinterpret(0x3C750AC4215D9BC0),\n reinterpret(0x3FEC20005B46DF99), reinterpret(0x3C6BEEA653E9C1C9),\n reinterpret(0x3FEC600040B9F7AE), reinterpret(0xBC7C079F274A70D6),\n reinterpret(0x3FECA0006255FD8A), reinterpret(0xBC7A0B4076E84C1F),\n reinterpret(0x3FECDFFFD94C095D), reinterpret(0x3C88F933F99AB5D7),\n reinterpret(0x3FED1FFFF975D6CF), reinterpret(0xBC582C08665FE1BE),\n reinterpret(0x3FED5FFFA2561C93), reinterpret(0xBC7B04289BD295F3),\n reinterpret(0x3FED9FFF9D228B0C), reinterpret(0x3C870251340FA236),\n reinterpret(0x3FEDE00065BC7E16), reinterpret(0xBC75011E16A4D80C),\n reinterpret(0x3FEE200002F64791), reinterpret(0x3C89802F09EF62E0),\n reinterpret(0x3FEE600057D7A6D8), reinterpret(0xBC7E0B75580CF7FA),\n reinterpret(0x3FEEA00027EDC00C), reinterpret(0xBC8C848309459811),\n reinterpret(0x3FEEE0006CF5CB7C), reinterpret(0xBC8F8027951576F4),\n reinterpret(0x3FEF2000782B7DCC), reinterpret(0xBC8F81D97274538F),\n reinterpret(0x3FEF6000260C450A), reinterpret(0xBC4071002727FFDC),\n reinterpret(0x3FEF9FFFE88CD533), reinterpret(0xBC581BDCE1FDA8B0),\n reinterpret(0x3FEFDFFFD50F8689), reinterpret(0x3C87F91ACB918E6E),\n reinterpret(0x3FF0200004292367), reinterpret(0x3C9B7FF365324681),\n reinterpret(0x3FF05FFFE3E3D668), reinterpret(0x3C86FA08DDAE957B),\n reinterpret(0x3FF0A0000A85A757), reinterpret(0xBC57E2DE80D3FB91),\n reinterpret(0x3FF0E0001A5F3FCC), reinterpret(0xBC91823305C5F014),\n reinterpret(0x3FF11FFFF8AFBAF5), reinterpret(0xBC8BFABB6680BAC2),\n reinterpret(0x3FF15FFFE54D91AD), reinterpret(0xBC9D7F121737E7EF),\n reinterpret(0x3FF1A00011AC36E1), reinterpret(0x3C9C000A0516F5FF),\n reinterpret(0x3FF1E00019C84248), reinterpret(0xBC9082FBE4DA5DA0),\n reinterpret(0x3FF220000FFE5E6E), reinterpret(0xBC88FDD04C9CFB43),\n reinterpret(0x3FF26000269FD891), reinterpret(0x3C8CFE2A7994D182),\n reinterpret(0x3FF2A00029A6E6DA), reinterpret(0xBC700273715E8BC5),\n reinterpret(0x3FF2DFFFE0293E39), reinterpret(0x3C9B7C39DAB2A6F9),\n reinterpret(0x3FF31FFFF7DCF082), reinterpret(0x3C7DF1336EDC5254),\n reinterpret(0x3FF35FFFF05A8B60), reinterpret(0xBC9E03564CCD31EB),\n reinterpret(0x3FF3A0002E0EAECC), reinterpret(0x3C75F0E74BD3A477),\n reinterpret(0x3FF3E000043BB236), reinterpret(0x3C9C7DCB149D8833),\n reinterpret(0x3FF4200002D187FF), reinterpret(0x3C7E08AFCF2D3D28),\n reinterpret(0x3FF460000D387CB1), reinterpret(0x3C820837856599A6),\n reinterpret(0x3FF4A00004569F89), reinterpret(0xBC89FA5C904FBCD2),\n reinterpret(0x3FF4E000043543F3), reinterpret(0xBC781125ED175329),\n reinterpret(0x3FF51FFFCC027F0F), reinterpret(0x3C9883D8847754DC),\n reinterpret(0x3FF55FFFFD87B36F), reinterpret(0xBC8709E731D02807),\n reinterpret(0x3FF59FFFF21DF7BA), reinterpret(0x3C87F79F68727B02),\n reinterpret(0x3FF5DFFFEBFC3481), reinterpret(0xBC9180902E30E93E)\n]);\n\n// @ts-ignore: decorator\n@inline\nexport function log2_lut(x: f64): f64 {\n const N_MASK = (1 << LOG2_TABLE_BITS) - 1;\n\n const\n LO: u64 = 0x3FEEA4AF00000000, // reinterpret(1.0 - 0x1.5b51p-5)\n HI: u64 = 0x3FF0B55900000000; // reinterpret(1.0 + 0x1.6ab2p-5)\n\n const\n InvLn2hi = reinterpret(0x3FF7154765200000), // 0x1.7154765200000p+0\n InvLn2lo = reinterpret(0x3DE705FC2EEFA200), // 0x1.705fc2eefa200p-33\n Ox1p52 = reinterpret(0x4330000000000000); // 0x1p52\n\n const\n B0 = reinterpret(0xBFE71547652B82FE), // -0x1.71547652b82fep-1\n B1 = reinterpret(0x3FDEC709DC3A03F7), // 0x1.ec709dc3a03f7p-2\n B2 = reinterpret(0xBFD71547652B7C3F), // -0x1.71547652b7c3fp-2\n B3 = reinterpret(0x3FD2776C50F05BE4), // 0x1.2776c50f05be4p-2\n B4 = reinterpret(0xBFCEC709DD768FE5), // -0x1.ec709dd768fe5p-3\n B5 = reinterpret(0x3FCA61761EC4E736), // 0x1.a61761ec4e736p-3\n B6 = reinterpret(0xBFC7153FBC64A79B), // -0x1.7153fbc64a79bp-3\n B7 = reinterpret(0x3FC484D154F01B4A), // 0x1.484d154f01b4ap-3\n B8 = reinterpret(0xBFC289E4A72C383C), // -0x1.289e4a72c383cp-3\n B9 = reinterpret(0x3FC0B32F285AEE66); // 0x1.0b32f285aee66p-3\n\n const\n A0 = reinterpret(0xBFE71547652B8339), // -0x1.71547652b8339p-1\n A1 = reinterpret(0x3FDEC709DC3A04BE), // 0x1.ec709dc3a04bep-2\n A2 = reinterpret(0xBFD7154764702FFB), // -0x1.7154764702ffbp-2\n A3 = reinterpret(0x3FD2776C50034C48), // 0x1.2776c50034c48p-2\n A4 = reinterpret(0xBFCEC7B328EA92BC), // -0x1.ec7b328ea92bcp-3\n A5 = reinterpret(0x3FCA6225E117F92E); // 0x1.a6225e117f92ep-3\n\n var ix = reinterpret(x);\n if (ix - LO < HI - LO) {\n let r = x - 1.0;\n // #if __FP_FAST_FMA\n // hi = r * InvLn2hi;\n // lo = r * InvLn2lo + __builtin_fma(r, InvLn2hi, -hi);\n // #else\n let rhi = reinterpret(reinterpret(r) & 0xFFFFFFFF00000000);\n let rlo = r - rhi;\n let hi = rhi * InvLn2hi;\n let lo = rlo * InvLn2hi + r * InvLn2lo;\n // #endif\n let r2 = r * r; // rounding error: 0x1p-62\n let r4 = r2 * r2;\n // Worst-case error is less than 0.54 ULP (0.55 ULP without fma)\n let p = r2 * (B0 + r * B1);\n let y = hi + p;\n lo += hi - y + p;\n lo += r4 * (B2 + r * B3 + r2 * (B4 + r * B5) +\n r4 * (B6 + r * B7 + r2 * (B8 + r * B9)));\n return y + lo;\n }\n var top = u32(ix >> 48);\n if (top - 0x0010 >= 0x7ff0 - 0x0010) {\n // x < 0x1p-1022 or inf or nan.\n if ((ix << 1) == 0) return -1.0 / (x * x);\n if (ix == 0x7FF0000000000000) return x; // log(inf) == inf\n if ((top & 0x8000) || (top & 0x7FF0) == 0x7FF0) return (x - x) / (x - x);\n // x is subnormal, normalize it.\n ix = reinterpret(x * Ox1p52);\n ix -= u64(52) << 52;\n }\n\n // x = 2^k z; where z is in range [OFF,2*OFF) and exact.\n // The range is split into N subintervals.\n // The ith subinterval contains z and c is near its center.\n var tmp = ix - 0x3FE6000000000000;\n var i = ((tmp >> (52 - LOG2_TABLE_BITS)) & N_MASK);\n var k = tmp >> 52;\n var iz = ix - (tmp & 0xFFF0000000000000);\n\n var invc = load(LOG2_DATA_TAB1 + (i << (1 + alignof())), 0 << alignof()); // T[i].invc;\n var logc = load(LOG2_DATA_TAB1 + (i << (1 + alignof())), 1 << alignof()); // T[i].logc;\n var z = reinterpret(iz);\n var kd = k;\n\n // log2(x) = log2(z/c) + log2(c) + k.\n // r ~= z/c - 1, |r| < 1/(2*N).\n // #if __FP_FAST_FMA\n // \t// rounding error: 0x1p-55/N.\n // \tr = __builtin_fma(z, invc, -1.0);\n // \tt1 = r * InvLn2hi;\n // \tt2 = r * InvLn2lo + __builtin_fma(r, InvLn2hi, -t1);\n // #else\n // rounding error: 0x1p-55/N + 0x1p-65.\n var chi = load(LOG2_DATA_TAB2 + (i << (1 + alignof())), 0 << alignof()); // T[i].chi;\n var clo = load(LOG2_DATA_TAB2 + (i << (1 + alignof())), 1 << alignof()); // T[i].clo;\n\n var r = (z - chi - clo) * invc;\n var rhi = reinterpret(reinterpret(r) & 0xFFFFFFFF00000000);\n var rlo = r - rhi;\n var t1 = rhi * InvLn2hi;\n var t2 = rlo * InvLn2hi + r * InvLn2lo;\n // #endif\n\n // hi + lo = r/ln2 + log2(c) + k\n var t3 = kd + logc;\n var hi = t3 + t1;\n var lo = t3 - hi + t1 + t2;\n\n // log2(r+1) = r/ln2 + r^2*poly(r)\n // Evaluation is optimized assuming superscalar pipelined execution\n var r2 = r * r; // rounding error: 0x1p-54/N^2\n // Worst-case error if |y| > 0x1p-4: 0.547 ULP (0.550 ULP without fma).\n // ~ 0.5 + 2/N/ln2 + abs-poly-error*0x1p56 ULP (+ 0.003 ULP without fma).\n var p = A0 + r * A1 + r2 * (A2 + r * A3) + (r2 * r2) * (A4 + r * A5);\n return lo + r2 * p + hi;\n}\n\n//\n// Lookup data for log. See: https://git.musl-libc.org/cgit/musl/tree/src/math/log.c\n//\n\n// @ts-ignore: decorator\n@inline const LOG_TABLE_BITS = 7;\n\n/* Algorithm:\n\n x = 2^k z\n log(x) = k ln2 + log(c) + log(z/c)\n log(z/c) = poly(z/c - 1)\n\nwhere z is in [1.6p-1; 1.6p0] which is split into N subintervals and z falls\ninto the ith one, then table entries are computed as\n\n tab[i].invc = 1/c\n tab[i].logc = (double)log(c)\n tab2[i].chi = (double)c\n tab2[i].clo = (double)(c - (double)c)\n\nwhere c is near the center of the subinterval and is chosen by trying +-2^29\nfloating point invc candidates around 1/center and selecting one for which\n\n 1) the rounding error in 0x1.8p9 + logc is 0,\n 2) the rounding error in z - chi - clo is < 0x1p-66 and\n 3) the rounding error in (double)log(c) is minimized (< 0x1p-66).\n\nNote: 1) ensures that k*ln2hi + logc can be computed without rounding error,\n2) ensures that z/c - 1 can be computed as (z - chi - clo)*invc with close to\na single rounding error when there is no fast fma for z*invc - 1, 3) ensures\nthat logc + poly(z/c - 1) has small error, however near x == 1 when\n|log(x)| < 0x1p-4, this is not enough so that is special cased.*/\n\n// @ts-ignore: decorator\n@lazy @inline const LOG_DATA_TAB1 = memory.data([\n // invc , logc\n reinterpret(0x3FF734F0C3E0DE9F), reinterpret(0xBFD7CC7F79E69000),\n reinterpret(0x3FF713786A2CE91F), reinterpret(0xBFD76FEEC20D0000),\n reinterpret(0x3FF6F26008FAB5A0), reinterpret(0xBFD713E31351E000),\n reinterpret(0x3FF6D1A61F138C7D), reinterpret(0xBFD6B85B38287800),\n reinterpret(0x3FF6B1490BC5B4D1), reinterpret(0xBFD65D5590807800),\n reinterpret(0x3FF69147332F0CBA), reinterpret(0xBFD602D076180000),\n reinterpret(0x3FF6719F18224223), reinterpret(0xBFD5A8CA86909000),\n reinterpret(0x3FF6524F99A51ED9), reinterpret(0xBFD54F4356035000),\n reinterpret(0x3FF63356AA8F24C4), reinterpret(0xBFD4F637C36B4000),\n reinterpret(0x3FF614B36B9DDC14), reinterpret(0xBFD49DA7FDA85000),\n reinterpret(0x3FF5F66452C65C4C), reinterpret(0xBFD445923989A800),\n reinterpret(0x3FF5D867B5912C4F), reinterpret(0xBFD3EDF439B0B800),\n reinterpret(0x3FF5BABCCB5B90DE), reinterpret(0xBFD396CE448F7000),\n reinterpret(0x3FF59D61F2D91A78), reinterpret(0xBFD3401E17BDA000),\n reinterpret(0x3FF5805612465687), reinterpret(0xBFD2E9E2EF468000),\n reinterpret(0x3FF56397CEE76BD3), reinterpret(0xBFD2941B3830E000),\n reinterpret(0x3FF54725E2A77F93), reinterpret(0xBFD23EC58CDA8800),\n reinterpret(0x3FF52AFF42064583), reinterpret(0xBFD1E9E129279000),\n reinterpret(0x3FF50F22DBB2BDDF), reinterpret(0xBFD1956D2B48F800),\n reinterpret(0x3FF4F38F4734DED7), reinterpret(0xBFD141679AB9F800),\n reinterpret(0x3FF4D843CFDE2840), reinterpret(0xBFD0EDD094EF9800),\n reinterpret(0x3FF4BD3EC078A3C8), reinterpret(0xBFD09AA518DB1000),\n reinterpret(0x3FF4A27FC3E0258A), reinterpret(0xBFD047E65263B800),\n reinterpret(0x3FF4880524D48434), reinterpret(0xBFCFEB224586F000),\n reinterpret(0x3FF46DCE1B192D0B), reinterpret(0xBFCF474A7517B000),\n reinterpret(0x3FF453D9D3391854), reinterpret(0xBFCEA4443D103000),\n reinterpret(0x3FF43A2744B4845A), reinterpret(0xBFCE020D44E9B000),\n reinterpret(0x3FF420B54115F8FB), reinterpret(0xBFCD60A22977F000),\n reinterpret(0x3FF40782DA3EF4B1), reinterpret(0xBFCCC00104959000),\n reinterpret(0x3FF3EE8F5D57FE8F), reinterpret(0xBFCC202956891000),\n reinterpret(0x3FF3D5D9A00B4CE9), reinterpret(0xBFCB81178D811000),\n reinterpret(0x3FF3BD60C010C12B), reinterpret(0xBFCAE2C9CCD3D000),\n reinterpret(0x3FF3A5242B75DAB8), reinterpret(0xBFCA45402E129000),\n reinterpret(0x3FF38D22CD9FD002), reinterpret(0xBFC9A877681DF000),\n reinterpret(0x3FF3755BC5847A1C), reinterpret(0xBFC90C6D69483000),\n reinterpret(0x3FF35DCE49AD36E2), reinterpret(0xBFC87120A645C000),\n reinterpret(0x3FF34679984DD440), reinterpret(0xBFC7D68FB4143000),\n reinterpret(0x3FF32F5CCEFFCB24), reinterpret(0xBFC73CB83C627000),\n reinterpret(0x3FF3187775A10D49), reinterpret(0xBFC6A39A9B376000),\n reinterpret(0x3FF301C8373E3990), reinterpret(0xBFC60B3154B7A000),\n reinterpret(0x3FF2EB4EBB95F841), reinterpret(0xBFC5737D76243000),\n reinterpret(0x3FF2D50A0219A9D1), reinterpret(0xBFC4DC7B8FC23000),\n reinterpret(0x3FF2BEF9A8B7FD2A), reinterpret(0xBFC4462C51D20000),\n reinterpret(0x3FF2A91C7A0C1BAB), reinterpret(0xBFC3B08ABC830000),\n reinterpret(0x3FF293726014B530), reinterpret(0xBFC31B996B490000),\n reinterpret(0x3FF27DFA5757A1F5), reinterpret(0xBFC2875490A44000),\n reinterpret(0x3FF268B39B1D3BBF), reinterpret(0xBFC1F3B9F879A000),\n reinterpret(0x3FF2539D838FF5BD), reinterpret(0xBFC160C8252CA000),\n reinterpret(0x3FF23EB7AAC9083B), reinterpret(0xBFC0CE7F57F72000),\n reinterpret(0x3FF22A012BA940B6), reinterpret(0xBFC03CDC49FEA000),\n reinterpret(0x3FF2157996CC4132), reinterpret(0xBFBF57BDBC4B8000),\n reinterpret(0x3FF201201DD2FC9B), reinterpret(0xBFBE370896404000),\n reinterpret(0x3FF1ECF4494D480B), reinterpret(0xBFBD17983EF94000),\n reinterpret(0x3FF1D8F5528F6569), reinterpret(0xBFBBF9674ED8A000),\n reinterpret(0x3FF1C52311577E7C), reinterpret(0xBFBADC79202F6000),\n reinterpret(0x3FF1B17C74CB26E9), reinterpret(0xBFB9C0C3E7288000),\n reinterpret(0x3FF19E010C2C1AB6), reinterpret(0xBFB8A646B372C000),\n reinterpret(0x3FF18AB07BB670BD), reinterpret(0xBFB78D01B3AC0000),\n reinterpret(0x3FF1778A25EFBCB6), reinterpret(0xBFB674F145380000),\n reinterpret(0x3FF1648D354C31DA), reinterpret(0xBFB55E0E6D878000),\n reinterpret(0x3FF151B990275FDD), reinterpret(0xBFB4485CDEA1E000),\n reinterpret(0x3FF13F0EA432D24C), reinterpret(0xBFB333D94D6AA000),\n reinterpret(0x3FF12C8B7210F9DA), reinterpret(0xBFB22079F8C56000),\n reinterpret(0x3FF11A3028ECB531), reinterpret(0xBFB10E4698622000),\n reinterpret(0x3FF107FBDA8434AF), reinterpret(0xBFAFFA6C6AD20000),\n reinterpret(0x3FF0F5EE0F4E6BB3), reinterpret(0xBFADDA8D4A774000),\n reinterpret(0x3FF0E4065D2A9FCE), reinterpret(0xBFABBCECE4850000),\n reinterpret(0x3FF0D244632CA521), reinterpret(0xBFA9A1894012C000),\n reinterpret(0x3FF0C0A77CE2981A), reinterpret(0xBFA788583302C000),\n reinterpret(0x3FF0AF2F83C636D1), reinterpret(0xBFA5715E67D68000),\n reinterpret(0x3FF09DDB98A01339), reinterpret(0xBFA35C8A49658000),\n reinterpret(0x3FF08CABAF52E7DF), reinterpret(0xBFA149E364154000),\n reinterpret(0x3FF07B9F2F4E28FB), reinterpret(0xBF9E72C082EB8000),\n reinterpret(0x3FF06AB58C358F19), reinterpret(0xBF9A55F152528000),\n reinterpret(0x3FF059EEA5ECF92C), reinterpret(0xBF963D62CF818000),\n reinterpret(0x3FF04949CDD12C90), reinterpret(0xBF9228FB8CAA0000),\n reinterpret(0x3FF038C6C6F0ADA9), reinterpret(0xBF8C317B20F90000),\n reinterpret(0x3FF02865137932A9), reinterpret(0xBF8419355DAA0000),\n reinterpret(0x3FF0182427EA7348), reinterpret(0xBF781203C2EC0000),\n reinterpret(0x3FF008040614B195), reinterpret(0xBF60040979240000),\n reinterpret(0x3FEFE01FF726FA1A), reinterpret(0x3F6FEFF384900000),\n reinterpret(0x3FEFA11CC261EA74), reinterpret(0x3F87DC41353D0000),\n reinterpret(0x3FEF6310B081992E), reinterpret(0x3F93CEA3C4C28000),\n reinterpret(0x3FEF25F63CEEADCD), reinterpret(0x3F9B9FC114890000),\n reinterpret(0x3FEEE9C8039113E7), reinterpret(0x3FA1B0D8CE110000),\n reinterpret(0x3FEEAE8078CBB1AB), reinterpret(0x3FA58A5BD001C000),\n reinterpret(0x3FEE741AA29D0C9B), reinterpret(0x3FA95C8340D88000),\n reinterpret(0x3FEE3A91830A99B5), reinterpret(0x3FAD276AEF578000),\n reinterpret(0x3FEE01E009609A56), reinterpret(0x3FB07598E598C000),\n reinterpret(0x3FEDCA01E577BB98), reinterpret(0x3FB253F5E30D2000),\n reinterpret(0x3FED92F20B7C9103), reinterpret(0x3FB42EDD8B380000),\n reinterpret(0x3FED5CAC66FB5CCE), reinterpret(0x3FB606598757C000),\n reinterpret(0x3FED272CAA5EDE9D), reinterpret(0x3FB7DA76356A0000),\n reinterpret(0x3FECF26E3E6B2CCD), reinterpret(0x3FB9AB434E1C6000),\n reinterpret(0x3FECBE6DA2A77902), reinterpret(0x3FBB78C7BB0D6000),\n reinterpret(0x3FEC8B266D37086D), reinterpret(0x3FBD431332E72000),\n reinterpret(0x3FEC5894BD5D5804), reinterpret(0x3FBF0A3171DE6000),\n reinterpret(0x3FEC26B533BB9F8C), reinterpret(0x3FC067152B914000),\n reinterpret(0x3FEBF583EEECE73F), reinterpret(0x3FC147858292B000),\n reinterpret(0x3FEBC4FD75DB96C1), reinterpret(0x3FC2266ECDCA3000),\n reinterpret(0x3FEB951E0C864A28), reinterpret(0x3FC303D7A6C55000),\n reinterpret(0x3FEB65E2C5EF3E2C), reinterpret(0x3FC3DFC33C331000),\n reinterpret(0x3FEB374867C9888B), reinterpret(0x3FC4BA366B7A8000),\n reinterpret(0x3FEB094B211D304A), reinterpret(0x3FC5933928D1F000),\n reinterpret(0x3FEADBE885F2EF7E), reinterpret(0x3FC66ACD2418F000),\n reinterpret(0x3FEAAF1D31603DA2), reinterpret(0x3FC740F8EC669000),\n reinterpret(0x3FEA82E63FD358A7), reinterpret(0x3FC815C0F51AF000),\n reinterpret(0x3FEA5740EF09738B), reinterpret(0x3FC8E92954F68000),\n reinterpret(0x3FEA2C2A90AB4B27), reinterpret(0x3FC9BB3602F84000),\n reinterpret(0x3FEA01A01393F2D1), reinterpret(0x3FCA8BED1C2C0000),\n reinterpret(0x3FE9D79F24DB3C1B), reinterpret(0x3FCB5B515C01D000),\n reinterpret(0x3FE9AE2505C7B190), reinterpret(0x3FCC2967CCBCC000),\n reinterpret(0x3FE9852EF297CE2F), reinterpret(0x3FCCF635D5486000),\n reinterpret(0x3FE95CBAEEA44B75), reinterpret(0x3FCDC1BD3446C000),\n reinterpret(0x3FE934C69DE74838), reinterpret(0x3FCE8C01B8CFE000),\n reinterpret(0x3FE90D4F2F6752E6), reinterpret(0x3FCF5509C0179000),\n reinterpret(0x3FE8E6528EFFD79D), reinterpret(0x3FD00E6C121FB800),\n reinterpret(0x3FE8BFCE9FCC007C), reinterpret(0x3FD071B80E93D000),\n reinterpret(0x3FE899C0DABEC30E), reinterpret(0x3FD0D46B9E867000),\n reinterpret(0x3FE87427AA2317FB), reinterpret(0x3FD13687334BD000),\n reinterpret(0x3FE84F00ACB39A08), reinterpret(0x3FD1980D67234800),\n reinterpret(0x3FE82A49E8653E55), reinterpret(0x3FD1F8FFE0CC8000),\n reinterpret(0x3FE8060195F40260), reinterpret(0x3FD2595FD7636800),\n reinterpret(0x3FE7E22563E0A329), reinterpret(0x3FD2B9300914A800),\n reinterpret(0x3FE7BEB377DCB5AD), reinterpret(0x3FD3187210436000),\n reinterpret(0x3FE79BAA679725C2), reinterpret(0x3FD377266DEC1800),\n reinterpret(0x3FE77907F2170657), reinterpret(0x3FD3D54FFBAF3000),\n reinterpret(0x3FE756CADBD6130C), reinterpret(0x3FD432EEE32FE000)\n]);\n\n// @ts-ignore: decorator\n@lazy @inline const LOG_DATA_TAB2 = memory.data([\n // chi , clo\n reinterpret(0x3FE61000014FB66B), reinterpret(0x3C7E026C91425B3C),\n reinterpret(0x3FE63000034DB495), reinterpret(0x3C8DBFEA48005D41),\n reinterpret(0x3FE650000D94D478), reinterpret(0x3C8E7FA786D6A5B7),\n reinterpret(0x3FE67000074E6FAD), reinterpret(0x3C61FCEA6B54254C),\n reinterpret(0x3FE68FFFFEDF0FAE), reinterpret(0xBC7C7E274C590EFD),\n reinterpret(0x3FE6B0000763C5BC), reinterpret(0xBC8AC16848DCDA01),\n reinterpret(0x3FE6D0001E5CC1F6), reinterpret(0x3C833F1C9D499311),\n reinterpret(0x3FE6EFFFEB05F63E), reinterpret(0xBC7E80041AE22D53),\n reinterpret(0x3FE710000E869780), reinterpret(0x3C7BFF6671097952),\n reinterpret(0x3FE72FFFFC67E912), reinterpret(0x3C8C00E226BD8724),\n reinterpret(0x3FE74FFFDF81116A), reinterpret(0xBC6E02916EF101D2),\n reinterpret(0x3FE770000F679C90), reinterpret(0xBC67FC71CD549C74),\n reinterpret(0x3FE78FFFFA7EC835), reinterpret(0x3C81BEC19EF50483),\n reinterpret(0x3FE7AFFFFE20C2E6), reinterpret(0xBC707E1729CC6465),\n reinterpret(0x3FE7CFFFED3FC900), reinterpret(0xBC808072087B8B1C),\n reinterpret(0x3FE7EFFFE9261A76), reinterpret(0x3C8DC0286D9DF9AE),\n reinterpret(0x3FE81000049CA3E8), reinterpret(0x3C897FD251E54C33),\n reinterpret(0x3FE8300017932C8F), reinterpret(0xBC8AFEE9B630F381),\n reinterpret(0x3FE850000633739C), reinterpret(0x3C89BFBF6B6535BC),\n reinterpret(0x3FE87000204289C6), reinterpret(0xBC8BBF65F3117B75),\n reinterpret(0x3FE88FFFEBF57904), reinterpret(0xBC89006EA23DCB57),\n reinterpret(0x3FE8B00022BC04DF), reinterpret(0xBC7D00DF38E04B0A),\n reinterpret(0x3FE8CFFFE50C1B8A), reinterpret(0xBC88007146FF9F05),\n reinterpret(0x3FE8EFFFFC918E43), reinterpret(0x3C83817BD07A7038),\n reinterpret(0x3FE910001EFA5FC7), reinterpret(0x3C893E9176DFB403),\n reinterpret(0x3FE9300013467BB9), reinterpret(0x3C7F804E4B980276),\n reinterpret(0x3FE94FFFE6EE076F), reinterpret(0xBC8F7EF0D9FF622E),\n reinterpret(0x3FE96FFFDE3C12D1), reinterpret(0xBC7082AA962638BA),\n reinterpret(0x3FE98FFFF4458A0D), reinterpret(0xBC87801B9164A8EF),\n reinterpret(0x3FE9AFFFDD982E3E), reinterpret(0xBC8740E08A5A9337),\n reinterpret(0x3FE9CFFFED49FB66), reinterpret(0x3C3FCE08C19BE000),\n reinterpret(0x3FE9F00020F19C51), reinterpret(0xBC8A3FAA27885B0A),\n reinterpret(0x3FEA10001145B006), reinterpret(0x3C74FF489958DA56),\n reinterpret(0x3FEA300007BBF6FA), reinterpret(0x3C8CBEAB8A2B6D18),\n reinterpret(0x3FEA500010971D79), reinterpret(0x3C88FECADD787930),\n reinterpret(0x3FEA70001DF52E48), reinterpret(0xBC8F41763DD8ABDB),\n reinterpret(0x3FEA90001C593352), reinterpret(0xBC8EBF0284C27612),\n reinterpret(0x3FEAB0002A4F3E4B), reinterpret(0xBC69FD043CFF3F5F),\n reinterpret(0x3FEACFFFD7AE1ED1), reinterpret(0xBC823EE7129070B4),\n reinterpret(0x3FEAEFFFEE510478), reinterpret(0x3C6A063EE00EDEA3),\n reinterpret(0x3FEB0FFFDB650D5B), reinterpret(0x3C5A06C8381F0AB9),\n reinterpret(0x3FEB2FFFFEAACA57), reinterpret(0xBC79011E74233C1D),\n reinterpret(0x3FEB4FFFD995BADC), reinterpret(0xBC79FF1068862A9F),\n reinterpret(0x3FEB7000249E659C), reinterpret(0x3C8AFF45D0864F3E),\n reinterpret(0x3FEB8FFFF9871640), reinterpret(0x3C7CFE7796C2C3F9),\n reinterpret(0x3FEBAFFFD204CB4F), reinterpret(0xBC63FF27EEF22BC4),\n reinterpret(0x3FEBCFFFD2415C45), reinterpret(0xBC6CFFB7EE3BEA21),\n reinterpret(0x3FEBEFFFF86309DF), reinterpret(0xBC814103972E0B5C),\n reinterpret(0x3FEC0FFFE1B57653), reinterpret(0x3C8BC16494B76A19),\n reinterpret(0x3FEC2FFFF1FA57E3), reinterpret(0xBC64FEEF8D30C6ED),\n reinterpret(0x3FEC4FFFDCBFE424), reinterpret(0xBC843F68BCEC4775),\n reinterpret(0x3FEC6FFFED54B9F7), reinterpret(0x3C847EA3F053E0EC),\n reinterpret(0x3FEC8FFFEB998FD5), reinterpret(0x3C7383068DF992F1),\n reinterpret(0x3FECB0002125219A), reinterpret(0xBC68FD8E64180E04),\n reinterpret(0x3FECCFFFDD94469C), reinterpret(0x3C8E7EBE1CC7EA72),\n reinterpret(0x3FECEFFFEAFDC476), reinterpret(0x3C8EBE39AD9F88FE),\n reinterpret(0x3FED1000169AF82B), reinterpret(0x3C757D91A8B95A71),\n reinterpret(0x3FED30000D0FF71D), reinterpret(0x3C89C1906970C7DA),\n reinterpret(0x3FED4FFFEA790FC4), reinterpret(0xBC580E37C558FE0C),\n reinterpret(0x3FED70002EDC87E5), reinterpret(0xBC7F80D64DC10F44),\n reinterpret(0x3FED900021DC82AA), reinterpret(0xBC747C8F94FD5C5C),\n reinterpret(0x3FEDAFFFD86B0283), reinterpret(0x3C8C7F1DC521617E),\n reinterpret(0x3FEDD000296C4739), reinterpret(0x3C88019EB2FFB153),\n reinterpret(0x3FEDEFFFE54490F5), reinterpret(0x3C6E00D2C652CC89),\n reinterpret(0x3FEE0FFFCDABF694), reinterpret(0xBC7F8340202D69D2),\n reinterpret(0x3FEE2FFFDB52C8DD), reinterpret(0x3C7B00C1CA1B0864),\n reinterpret(0x3FEE4FFFF24216EF), reinterpret(0x3C72FFA8B094AB51),\n reinterpret(0x3FEE6FFFE88A5E11), reinterpret(0xBC57F673B1EFBE59),\n reinterpret(0x3FEE9000119EFF0D), reinterpret(0xBC84808D5E0BC801),\n reinterpret(0x3FEEAFFFDFA51744), reinterpret(0x3C780006D54320B5),\n reinterpret(0x3FEED0001A127FA1), reinterpret(0xBC5002F860565C92),\n reinterpret(0x3FEEF00007BABCC4), reinterpret(0xBC8540445D35E611),\n reinterpret(0x3FEF0FFFF57A8D02), reinterpret(0xBC4FFB3139EF9105),\n reinterpret(0x3FEF30001EE58AC7), reinterpret(0x3C8A81ACF2731155),\n reinterpret(0x3FEF4FFFF5823494), reinterpret(0x3C8A3F41D4D7C743),\n reinterpret(0x3FEF6FFFFCA94C6B), reinterpret(0xBC6202F41C987875),\n reinterpret(0x3FEF8FFFE1F9C441), reinterpret(0x3C777DD1F477E74B),\n reinterpret(0x3FEFAFFFD2E0E37E), reinterpret(0xBC6F01199A7CA331),\n reinterpret(0x3FEFD0001C77E49E), reinterpret(0x3C7181EE4BCEACB1),\n reinterpret(0x3FEFEFFFF7E0C331), reinterpret(0xBC6E05370170875A),\n reinterpret(0x3FF00FFFF465606E), reinterpret(0xBC8A7EAD491C0ADA),\n reinterpret(0x3FF02FFFF3867A58), reinterpret(0xBC977F69C3FCB2E0),\n reinterpret(0x3FF04FFFFDFC0D17), reinterpret(0x3C97BFFE34CB945B),\n reinterpret(0x3FF0700003CD4D82), reinterpret(0x3C820083C0E456CB),\n reinterpret(0x3FF08FFFF9F2CBE8), reinterpret(0xBC6DFFDFBE37751A),\n reinterpret(0x3FF0B000010CDA65), reinterpret(0xBC913F7FAEE626EB),\n reinterpret(0x3FF0D00001A4D338), reinterpret(0x3C807DFA79489FF7),\n reinterpret(0x3FF0EFFFFADAFDFD), reinterpret(0xBC77040570D66BC0),\n reinterpret(0x3FF110000BBAFD96), reinterpret(0x3C8E80D4846D0B62),\n reinterpret(0x3FF12FFFFAE5F45D), reinterpret(0x3C9DBFFA64FD36EF),\n reinterpret(0x3FF150000DD59AD9), reinterpret(0x3C9A0077701250AE),\n reinterpret(0x3FF170000F21559A), reinterpret(0x3C8DFDF9E2E3DEEE),\n reinterpret(0x3FF18FFFFC275426), reinterpret(0x3C910030DC3B7273),\n reinterpret(0x3FF1B000123D3C59), reinterpret(0x3C997F7980030188),\n reinterpret(0x3FF1CFFFF8299EB7), reinterpret(0xBC65F932AB9F8C67),\n reinterpret(0x3FF1EFFFF48AD400), reinterpret(0x3C937FBF9DA75BEB),\n reinterpret(0x3FF210000C8B86A4), reinterpret(0x3C9F806B91FD5B22),\n reinterpret(0x3FF2300003854303), reinterpret(0x3C93FFC2EB9FBF33),\n reinterpret(0x3FF24FFFFFBCF684), reinterpret(0x3C7601E77E2E2E72),\n reinterpret(0x3FF26FFFF52921D9), reinterpret(0x3C7FFCBB767F0C61),\n reinterpret(0x3FF2900014933A3C), reinterpret(0xBC7202CA3C02412B),\n reinterpret(0x3FF2B00014556313), reinterpret(0xBC92808233F21F02),\n reinterpret(0x3FF2CFFFEBFE523B), reinterpret(0xBC88FF7E384FDCF2),\n reinterpret(0x3FF2F0000BB8AD96), reinterpret(0xBC85FF51503041C5),\n reinterpret(0x3FF30FFFFB7AE2AF), reinterpret(0xBC810071885E289D),\n reinterpret(0x3FF32FFFFEAC5F7F), reinterpret(0xBC91FF5D3FB7B715),\n reinterpret(0x3FF350000CA66756), reinterpret(0x3C957F82228B82BD),\n reinterpret(0x3FF3700011FBF721), reinterpret(0x3C8000BAC40DD5CC),\n reinterpret(0x3FF38FFFF9592FB9), reinterpret(0xBC943F9D2DB2A751),\n reinterpret(0x3FF3B00004DDD242), reinterpret(0x3C857F6B707638E1),\n reinterpret(0x3FF3CFFFF5B2C957), reinterpret(0x3C7A023A10BF1231),\n reinterpret(0x3FF3EFFFEAB0B418), reinterpret(0x3C987F6D66B152B0),\n reinterpret(0x3FF410001532AFF4), reinterpret(0x3C67F8375F198524),\n reinterpret(0x3FF4300017478B29), reinterpret(0x3C8301E672DC5143),\n reinterpret(0x3FF44FFFE795B463), reinterpret(0x3C89FF69B8B2895A),\n reinterpret(0x3FF46FFFE80475E0), reinterpret(0xBC95C0B19BC2F254),\n reinterpret(0x3FF48FFFEF6FC1E7), reinterpret(0x3C9B4009F23A2A72),\n reinterpret(0x3FF4AFFFE5BEA704), reinterpret(0xBC94FFB7BF0D7D45),\n reinterpret(0x3FF4D000171027DE), reinterpret(0xBC99C06471DC6A3D),\n reinterpret(0x3FF4F0000FF03EE2), reinterpret(0x3C977F890B85531C),\n reinterpret(0x3FF5100012DC4BD1), reinterpret(0x3C6004657166A436),\n reinterpret(0x3FF530001605277A), reinterpret(0xBC96BFCECE233209),\n reinterpret(0x3FF54FFFECDB704C), reinterpret(0xBC8902720505A1D7),\n reinterpret(0x3FF56FFFEF5F54A9), reinterpret(0x3C9BBFE60EC96412),\n reinterpret(0x3FF5900017E61012), reinterpret(0x3C887EC581AFEF90),\n reinterpret(0x3FF5B00003C93E92), reinterpret(0xBC9F41080ABF0CC0),\n reinterpret(0x3FF5D0001D4919BC), reinterpret(0xBC98812AFB254729),\n reinterpret(0x3FF5EFFFE7B87A89), reinterpret(0xBC947EB780ED6904)\n]);\n\n// @ts-ignore: decorator\n@inline\nexport function log_lut(x: f64): f64 {\n const N_MASK = (1 << LOG_TABLE_BITS) - 1;\n\n const\n B0 = reinterpret(0xBFE0000000000000), // -0x1p-1\n B1 = reinterpret(0x3FD5555555555577), // 0x1.5555555555577p-2\n B2 = reinterpret(0xBFCFFFFFFFFFFDCB), // -0x1.ffffffffffdcbp-3\n B3 = reinterpret(0x3FC999999995DD0C), // 0x1.999999995dd0cp-3\n B4 = reinterpret(0xBFC55555556745A7), // -0x1.55555556745a7p-3\n B5 = reinterpret(0x3FC24924A344DE30), // 0x1.24924a344de3p-3\n B6 = reinterpret(0xBFBFFFFFA4423D65), // -0x1.fffffa4423d65p-4\n B7 = reinterpret(0x3FBC7184282AD6CA), // 0x1.c7184282ad6cap-4\n B8 = reinterpret(0xBFB999EB43B068FF), // -0x1.999eb43b068ffp-4\n B9 = reinterpret(0x3FB78182F7AFD085), // 0x1.78182f7afd085p-4\n B10 = reinterpret(0xBFB5521375D145CD); // -0x1.5521375d145cdp-4\n\n const\n A0 = reinterpret(0xBFE0000000000001), // -0x1.0000000000001p-1\n A1 = reinterpret(0x3FD555555551305B), // 0x1.555555551305bp-2\n A2 = reinterpret(0xBFCFFFFFFFEB4590), // -0x1.fffffffeb459p-3\n A3 = reinterpret(0x3FC999B324F10111), // 0x1.999b324f10111p-3\n A4 = reinterpret(0xBFC55575E506C89F); // -0x1.55575e506c89fp-3\n\n const\n LO: u64 = 0x3FEE000000000000,\n HI: u64 = 0x3FF1090000000000;\n\n const\n Ln2hi = reinterpret(0x3FE62E42FEFA3800), // 0x1.62e42fefa3800p-1\n Ln2lo = reinterpret(0x3D2EF35793C76730), // 0x1.ef35793c76730p-45\n Ox1p27 = reinterpret(0x41A0000000000000), // 0x1p27\n Ox1p52 = reinterpret(0x4330000000000000); // 0x1p52\n\n var ix = reinterpret(x);\n if (ix - LO < HI - LO) {\n let r = x - 1.0;\n let r2 = r * r;\n let r3 = r2 * r;\n let y =\n r3 * (B1 + r * B2 + r2 * B3 +\n r3 * (B4 + r * B5 + r2 * B6 +\n r3 * (B7 + r * B8 + r2 * B9 + r3 * B10)));\n // Worst-case error is around 0.507 ULP\n let w = r * Ox1p27;\n let rhi = r + w - w;\n let rlo = r - rhi;\n w = rhi * rhi * B0; // B[0] == -0.5\n let hi = r + w;\n let lo = r - hi + w;\n lo += B0 * rlo * (rhi + r);\n return y + lo + hi;\n }\n var top = u32(ix >> 48);\n if (top - 0x0010 >= 0x7FF0 - 0x0010) {\n // x < 0x1p-1022 or inf or nan\n if ((ix << 1) == 0) return -1.0 / (x * x);\n if (ix == reinterpret(Infinity)) return x; // log(inf) == inf\n if ((top & 0x8000) || (top & 0x7FF0) == 0x7FF0) return (x - x) / (x - x);\n // x is subnormal, normalize it\n ix = reinterpret(x * Ox1p52);\n ix -= u64(52) << 52;\n }\n\n // x = 2^k z; where z is in range [OFF,2*OFF) and exact.\n // The range is split into N subintervals.\n // The ith subinterval contains z and c is near its center.\n var tmp = ix - 0x3FE6000000000000;\n var i = ((tmp >> (52 - LOG_TABLE_BITS)) & N_MASK);\n var k = tmp >> 52;\n var iz = ix - (tmp & (u64(0xFFF) << 52));\n\n var invc = load(LOG_DATA_TAB1 + (i << (1 + alignof())), 0 << alignof()); // T[i].invc;\n var logc = load(LOG_DATA_TAB1 + (i << (1 + alignof())), 1 << alignof()); // T[i].logc;\n var z = reinterpret(iz);\n\n // log(x) = log1p(z/c-1) + log(c) + k*Ln2.\n // r ~= z/c - 1, |r| < 1/(2*N)\n // #if __FP_FAST_FMA\n // \t// rounding error: 0x1p-55/N\n // \tr = __builtin_fma(z, invc, -1.0);\n // #else\n // rounding error: 0x1p-55/N + 0x1p-66\n const chi = load(LOG_DATA_TAB2 + (i << (1 + alignof())), 0 << alignof()); // T2[i].chi\n const clo = load(LOG_DATA_TAB2 + (i << (1 + alignof())), 1 << alignof()); // T2[i].clo\n var r = (z - chi - clo) * invc;\n // #endif\n var kd = k;\n\n // hi + lo = r + log(c) + k*Ln2\n var w = kd * Ln2hi + logc;\n var hi = w + r;\n var lo = w - hi + r + kd * Ln2lo;\n\n // log(x) = lo + (log1p(r) - r) + hi\n var r2 = r * r; // rounding error: 0x1p-54/N^2\n // Worst case error if |y| > 0x1p-5:\n // 0.5 + 4.13/N + abs-poly-error*2^57 ULP (+ 0.002 ULP without fma)\n // Worst case error if |y| > 0x1p-4:\n // 0.5 + 2.06/N + abs-poly-error*2^56 ULP (+ 0.001 ULP without fma).\n return lo + r2 * A0 + r * r2 * (A1 + r * A2 + r2 * (A3 + r * A4)) + hi;\n}\n\n//\n// Lookup data for pow. See: https://git.musl-libc.org/cgit/musl/tree/src/math/pow.c\n//\n\n// @ts-ignore: decorator\n@inline const POW_LOG_TABLE_BITS = 7;\n\n/* Algorithm:\n\n x = 2^k z\n log(x) = k ln2 + log(c) + log(z/c)\n log(z/c) = poly(z/c - 1)\n\nwhere z is in [0x1.69555p-1; 0x1.69555p0] which is split into N subintervals\nand z falls into the ith one, then table entries are computed as\n\n tab[i].invc = 1/c\n tab[i].logc = round(0x1p43*log(c))/0x1p43\n tab[i].logctail = (double)(log(c) - logc)\n\nwhere c is chosen near the center of the subinterval such that 1/c has only a\nfew precision bits so z/c - 1 is exactly representible as double:\n\n 1/c = center < 1 ? round(N/center)/N : round(2*N/center)/N/2\n\nNote: |z/c - 1| < 1/N for the chosen c, |log(c) - logc - logctail| < 0x1p-97,\nthe last few bits of logc are rounded away so k*ln2hi + logc has no rounding\nerror and the interval for z is selected such that near x == 1, where log(x)\nis tiny, large cancellation error is avoided in logc + poly(z/c - 1). */\n\n// @ts-ignore: decorator\n@lazy @inline const POW_LOG_DATA_TAB = memory.data([\n // invc ,pad, logc , logctail\n reinterpret(0x3FF6A00000000000), 0, reinterpret(0xBFD62C82F2B9C800), reinterpret(0x3CFAB42428375680),\n reinterpret(0x3FF6800000000000), 0, reinterpret(0xBFD5D1BDBF580800), reinterpret(0xBD1CA508D8E0F720),\n reinterpret(0x3FF6600000000000), 0, reinterpret(0xBFD5767717455800), reinterpret(0xBD2362A4D5B6506D),\n reinterpret(0x3FF6400000000000), 0, reinterpret(0xBFD51AAD872DF800), reinterpret(0xBCE684E49EB067D5),\n reinterpret(0x3FF6200000000000), 0, reinterpret(0xBFD4BE5F95777800), reinterpret(0xBD041B6993293EE0),\n reinterpret(0x3FF6000000000000), 0, reinterpret(0xBFD4618BC21C6000), reinterpret(0x3D13D82F484C84CC),\n reinterpret(0x3FF5E00000000000), 0, reinterpret(0xBFD404308686A800), reinterpret(0x3CDC42F3ED820B3A),\n reinterpret(0x3FF5C00000000000), 0, reinterpret(0xBFD3A64C55694800), reinterpret(0x3D20B1C686519460),\n reinterpret(0x3FF5A00000000000), 0, reinterpret(0xBFD347DD9A988000), reinterpret(0x3D25594DD4C58092),\n reinterpret(0x3FF5800000000000), 0, reinterpret(0xBFD2E8E2BAE12000), reinterpret(0x3D267B1E99B72BD8),\n reinterpret(0x3FF5600000000000), 0, reinterpret(0xBFD2895A13DE8800), reinterpret(0x3D15CA14B6CFB03F),\n reinterpret(0x3FF5600000000000), 0, reinterpret(0xBFD2895A13DE8800), reinterpret(0x3D15CA14B6CFB03F),\n reinterpret(0x3FF5400000000000), 0, reinterpret(0xBFD22941FBCF7800), reinterpret(0xBD165A242853DA76),\n reinterpret(0x3FF5200000000000), 0, reinterpret(0xBFD1C898C1699800), reinterpret(0xBD1FAFBC68E75404),\n reinterpret(0x3FF5000000000000), 0, reinterpret(0xBFD1675CABABA800), reinterpret(0x3D1F1FC63382A8F0),\n reinterpret(0x3FF4E00000000000), 0, reinterpret(0xBFD1058BF9AE4800), reinterpret(0xBD26A8C4FD055A66),\n reinterpret(0x3FF4C00000000000), 0, reinterpret(0xBFD0A324E2739000), reinterpret(0xBD0C6BEE7EF4030E),\n reinterpret(0x3FF4A00000000000), 0, reinterpret(0xBFD0402594B4D000), reinterpret(0xBCF036B89EF42D7F),\n reinterpret(0x3FF4A00000000000), 0, reinterpret(0xBFD0402594B4D000), reinterpret(0xBCF036B89EF42D7F),\n reinterpret(0x3FF4800000000000), 0, reinterpret(0xBFCFB9186D5E4000), reinterpret(0x3D0D572AAB993C87),\n reinterpret(0x3FF4600000000000), 0, reinterpret(0xBFCEF0ADCBDC6000), reinterpret(0x3D2B26B79C86AF24),\n reinterpret(0x3FF4400000000000), 0, reinterpret(0xBFCE27076E2AF000), reinterpret(0xBD172F4F543FFF10),\n reinterpret(0x3FF4200000000000), 0, reinterpret(0xBFCD5C216B4FC000), reinterpret(0x3D21BA91BBCA681B),\n reinterpret(0x3FF4000000000000), 0, reinterpret(0xBFCC8FF7C79AA000), reinterpret(0x3D27794F689F8434),\n reinterpret(0x3FF4000000000000), 0, reinterpret(0xBFCC8FF7C79AA000), reinterpret(0x3D27794F689F8434),\n reinterpret(0x3FF3E00000000000), 0, reinterpret(0xBFCBC286742D9000), reinterpret(0x3D194EB0318BB78F),\n reinterpret(0x3FF3C00000000000), 0, reinterpret(0xBFCAF3C94E80C000), reinterpret(0x3CBA4E633FCD9066),\n reinterpret(0x3FF3A00000000000), 0, reinterpret(0xBFCA23BC1FE2B000), reinterpret(0xBD258C64DC46C1EA),\n reinterpret(0x3FF3A00000000000), 0, reinterpret(0xBFCA23BC1FE2B000), reinterpret(0xBD258C64DC46C1EA),\n reinterpret(0x3FF3800000000000), 0, reinterpret(0xBFC9525A9CF45000), reinterpret(0xBD2AD1D904C1D4E3),\n reinterpret(0x3FF3600000000000), 0, reinterpret(0xBFC87FA06520D000), reinterpret(0x3D2BBDBF7FDBFA09),\n reinterpret(0x3FF3400000000000), 0, reinterpret(0xBFC7AB890210E000), reinterpret(0x3D2BDB9072534A58),\n reinterpret(0x3FF3400000000000), 0, reinterpret(0xBFC7AB890210E000), reinterpret(0x3D2BDB9072534A58),\n reinterpret(0x3FF3200000000000), 0, reinterpret(0xBFC6D60FE719D000), reinterpret(0xBD10E46AA3B2E266),\n reinterpret(0x3FF3000000000000), 0, reinterpret(0xBFC5FF3070A79000), reinterpret(0xBD1E9E439F105039),\n reinterpret(0x3FF3000000000000), 0, reinterpret(0xBFC5FF3070A79000), reinterpret(0xBD1E9E439F105039),\n reinterpret(0x3FF2E00000000000), 0, reinterpret(0xBFC526E5E3A1B000), reinterpret(0xBD20DE8B90075B8F),\n reinterpret(0x3FF2C00000000000), 0, reinterpret(0xBFC44D2B6CCB8000), reinterpret(0x3D170CC16135783C),\n reinterpret(0x3FF2C00000000000), 0, reinterpret(0xBFC44D2B6CCB8000), reinterpret(0x3D170CC16135783C),\n reinterpret(0x3FF2A00000000000), 0, reinterpret(0xBFC371FC201E9000), reinterpret(0x3CF178864D27543A),\n reinterpret(0x3FF2800000000000), 0, reinterpret(0xBFC29552F81FF000), reinterpret(0xBD248D301771C408),\n reinterpret(0x3FF2600000000000), 0, reinterpret(0xBFC1B72AD52F6000), reinterpret(0xBD2E80A41811A396),\n reinterpret(0x3FF2600000000000), 0, reinterpret(0xBFC1B72AD52F6000), reinterpret(0xBD2E80A41811A396),\n reinterpret(0x3FF2400000000000), 0, reinterpret(0xBFC0D77E7CD09000), reinterpret(0x3D0A699688E85BF4),\n reinterpret(0x3FF2400000000000), 0, reinterpret(0xBFC0D77E7CD09000), reinterpret(0x3D0A699688E85BF4),\n reinterpret(0x3FF2200000000000), 0, reinterpret(0xBFBFEC9131DBE000), reinterpret(0xBD2575545CA333F2),\n reinterpret(0x3FF2000000000000), 0, reinterpret(0xBFBE27076E2B0000), reinterpret(0x3D2A342C2AF0003C),\n reinterpret(0x3FF2000000000000), 0, reinterpret(0xBFBE27076E2B0000), reinterpret(0x3D2A342C2AF0003C),\n reinterpret(0x3FF1E00000000000), 0, reinterpret(0xBFBC5E548F5BC000), reinterpret(0xBD1D0C57585FBE06),\n reinterpret(0x3FF1C00000000000), 0, reinterpret(0xBFBA926D3A4AE000), reinterpret(0x3D253935E85BAAC8),\n reinterpret(0x3FF1C00000000000), 0, reinterpret(0xBFBA926D3A4AE000), reinterpret(0x3D253935E85BAAC8),\n reinterpret(0x3FF1A00000000000), 0, reinterpret(0xBFB8C345D631A000), reinterpret(0x3D137C294D2F5668),\n reinterpret(0x3FF1A00000000000), 0, reinterpret(0xBFB8C345D631A000), reinterpret(0x3D137C294D2F5668),\n reinterpret(0x3FF1800000000000), 0, reinterpret(0xBFB6F0D28AE56000), reinterpret(0xBD269737C93373DA),\n reinterpret(0x3FF1600000000000), 0, reinterpret(0xBFB51B073F062000), reinterpret(0x3D1F025B61C65E57),\n reinterpret(0x3FF1600000000000), 0, reinterpret(0xBFB51B073F062000), reinterpret(0x3D1F025B61C65E57),\n reinterpret(0x3FF1400000000000), 0, reinterpret(0xBFB341D7961BE000), reinterpret(0x3D2C5EDACCF913DF),\n reinterpret(0x3FF1400000000000), 0, reinterpret(0xBFB341D7961BE000), reinterpret(0x3D2C5EDACCF913DF),\n reinterpret(0x3FF1200000000000), 0, reinterpret(0xBFB16536EEA38000), reinterpret(0x3D147C5E768FA309),\n reinterpret(0x3FF1000000000000), 0, reinterpret(0xBFAF0A30C0118000), reinterpret(0x3D2D599E83368E91),\n reinterpret(0x3FF1000000000000), 0, reinterpret(0xBFAF0A30C0118000), reinterpret(0x3D2D599E83368E91),\n reinterpret(0x3FF0E00000000000), 0, reinterpret(0xBFAB42DD71198000), reinterpret(0x3D1C827AE5D6704C),\n reinterpret(0x3FF0E00000000000), 0, reinterpret(0xBFAB42DD71198000), reinterpret(0x3D1C827AE5D6704C),\n reinterpret(0x3FF0C00000000000), 0, reinterpret(0xBFA77458F632C000), reinterpret(0xBD2CFC4634F2A1EE),\n reinterpret(0x3FF0C00000000000), 0, reinterpret(0xBFA77458F632C000), reinterpret(0xBD2CFC4634F2A1EE),\n reinterpret(0x3FF0A00000000000), 0, reinterpret(0xBFA39E87B9FEC000), reinterpret(0x3CF502B7F526FEAA),\n reinterpret(0x3FF0A00000000000), 0, reinterpret(0xBFA39E87B9FEC000), reinterpret(0x3CF502B7F526FEAA),\n reinterpret(0x3FF0800000000000), 0, reinterpret(0xBF9F829B0E780000), reinterpret(0xBD2980267C7E09E4),\n reinterpret(0x3FF0800000000000), 0, reinterpret(0xBF9F829B0E780000), reinterpret(0xBD2980267C7E09E4),\n reinterpret(0x3FF0600000000000), 0, reinterpret(0xBF97B91B07D58000), reinterpret(0xBD288D5493FAA639),\n reinterpret(0x3FF0400000000000), 0, reinterpret(0xBF8FC0A8B0FC0000), reinterpret(0xBCDF1E7CF6D3A69C),\n reinterpret(0x3FF0400000000000), 0, reinterpret(0xBF8FC0A8B0FC0000), reinterpret(0xBCDF1E7CF6D3A69C),\n reinterpret(0x3FF0200000000000), 0, reinterpret(0xBF7FE02A6B100000), reinterpret(0xBD19E23F0DDA40E4),\n reinterpret(0x3FF0200000000000), 0, reinterpret(0xBF7FE02A6B100000), reinterpret(0xBD19E23F0DDA40E4),\n reinterpret(0x3FF0000000000000), 0, 0, 0,\n reinterpret(0x3FF0000000000000), 0, 0, 0,\n reinterpret(0x3FEFC00000000000), 0, reinterpret(0x3F80101575890000), reinterpret(0xBD10C76B999D2BE8),\n reinterpret(0x3FEF800000000000), 0, reinterpret(0x3F90205658938000), reinterpret(0xBD23DC5B06E2F7D2),\n reinterpret(0x3FEF400000000000), 0, reinterpret(0x3F98492528C90000), reinterpret(0xBD2AA0BA325A0C34),\n reinterpret(0x3FEF000000000000), 0, reinterpret(0x3FA0415D89E74000), reinterpret(0x3D0111C05CF1D753),\n reinterpret(0x3FEEC00000000000), 0, reinterpret(0x3FA466AED42E0000), reinterpret(0xBD2C167375BDFD28),\n reinterpret(0x3FEE800000000000), 0, reinterpret(0x3FA894AA149FC000), reinterpret(0xBD197995D05A267D),\n reinterpret(0x3FEE400000000000), 0, reinterpret(0x3FACCB73CDDDC000), reinterpret(0xBD1A68F247D82807),\n reinterpret(0x3FEE200000000000), 0, reinterpret(0x3FAEEA31C006C000), reinterpret(0xBD0E113E4FC93B7B),\n reinterpret(0x3FEDE00000000000), 0, reinterpret(0x3FB1973BD1466000), reinterpret(0xBD25325D560D9E9B),\n reinterpret(0x3FEDA00000000000), 0, reinterpret(0x3FB3BDF5A7D1E000), reinterpret(0x3D2CC85EA5DB4ED7),\n reinterpret(0x3FED600000000000), 0, reinterpret(0x3FB5E95A4D97A000), reinterpret(0xBD2C69063C5D1D1E),\n reinterpret(0x3FED400000000000), 0, reinterpret(0x3FB700D30AEAC000), reinterpret(0x3CEC1E8DA99DED32),\n reinterpret(0x3FED000000000000), 0, reinterpret(0x3FB9335E5D594000), reinterpret(0x3D23115C3ABD47DA),\n reinterpret(0x3FECC00000000000), 0, reinterpret(0x3FBB6AC88DAD6000), reinterpret(0xBD1390802BF768E5),\n reinterpret(0x3FECA00000000000), 0, reinterpret(0x3FBC885801BC4000), reinterpret(0x3D2646D1C65AACD3),\n reinterpret(0x3FEC600000000000), 0, reinterpret(0x3FBEC739830A2000), reinterpret(0xBD2DC068AFE645E0),\n reinterpret(0x3FEC400000000000), 0, reinterpret(0x3FBFE89139DBE000), reinterpret(0xBD2534D64FA10AFD),\n reinterpret(0x3FEC000000000000), 0, reinterpret(0x3FC1178E8227E000), reinterpret(0x3D21EF78CE2D07F2),\n reinterpret(0x3FEBE00000000000), 0, reinterpret(0x3FC1AA2B7E23F000), reinterpret(0x3D2CA78E44389934),\n reinterpret(0x3FEBA00000000000), 0, reinterpret(0x3FC2D1610C868000), reinterpret(0x3D039D6CCB81B4A1),\n reinterpret(0x3FEB800000000000), 0, reinterpret(0x3FC365FCB0159000), reinterpret(0x3CC62FA8234B7289),\n reinterpret(0x3FEB400000000000), 0, reinterpret(0x3FC4913D8333B000), reinterpret(0x3D25837954FDB678),\n reinterpret(0x3FEB200000000000), 0, reinterpret(0x3FC527E5E4A1B000), reinterpret(0x3D2633E8E5697DC7),\n reinterpret(0x3FEAE00000000000), 0, reinterpret(0x3FC6574EBE8C1000), reinterpret(0x3D19CF8B2C3C2E78),\n reinterpret(0x3FEAC00000000000), 0, reinterpret(0x3FC6F0128B757000), reinterpret(0xBD25118DE59C21E1),\n reinterpret(0x3FEAA00000000000), 0, reinterpret(0x3FC7898D85445000), reinterpret(0xBD1C661070914305),\n reinterpret(0x3FEA600000000000), 0, reinterpret(0x3FC8BEAFEB390000), reinterpret(0xBD073D54AAE92CD1),\n reinterpret(0x3FEA400000000000), 0, reinterpret(0x3FC95A5ADCF70000), reinterpret(0x3D07F22858A0FF6F),\n reinterpret(0x3FEA000000000000), 0, reinterpret(0x3FCA93ED3C8AE000), reinterpret(0xBD28724350562169),\n reinterpret(0x3FE9E00000000000), 0, reinterpret(0x3FCB31D8575BD000), reinterpret(0xBD0C358D4EACE1AA),\n reinterpret(0x3FE9C00000000000), 0, reinterpret(0x3FCBD087383BE000), reinterpret(0xBD2D4BC4595412B6),\n reinterpret(0x3FE9A00000000000), 0, reinterpret(0x3FCC6FFBC6F01000), reinterpret(0xBCF1EC72C5962BD2),\n reinterpret(0x3FE9600000000000), 0, reinterpret(0x3FCDB13DB0D49000), reinterpret(0xBD2AFF2AF715B035),\n reinterpret(0x3FE9400000000000), 0, reinterpret(0x3FCE530EFFE71000), reinterpret(0x3CC212276041F430),\n reinterpret(0x3FE9200000000000), 0, reinterpret(0x3FCEF5ADE4DD0000), reinterpret(0xBCCA211565BB8E11),\n reinterpret(0x3FE9000000000000), 0, reinterpret(0x3FCF991C6CB3B000), reinterpret(0x3D1BCBECCA0CDF30),\n reinterpret(0x3FE8C00000000000), 0, reinterpret(0x3FD07138604D5800), reinterpret(0x3CF89CDB16ED4E91),\n reinterpret(0x3FE8A00000000000), 0, reinterpret(0x3FD0C42D67616000), reinterpret(0x3D27188B163CEAE9),\n reinterpret(0x3FE8800000000000), 0, reinterpret(0x3FD1178E8227E800), reinterpret(0xBD2C210E63A5F01C),\n reinterpret(0x3FE8600000000000), 0, reinterpret(0x3FD16B5CCBACF800), reinterpret(0x3D2B9ACDF7A51681),\n reinterpret(0x3FE8400000000000), 0, reinterpret(0x3FD1BF99635A6800), reinterpret(0x3D2CA6ED5147BDB7),\n reinterpret(0x3FE8200000000000), 0, reinterpret(0x3FD214456D0EB800), reinterpret(0x3D0A87DEBA46BAEA),\n reinterpret(0x3FE7E00000000000), 0, reinterpret(0x3FD2BEF07CDC9000), reinterpret(0x3D2A9CFA4A5004F4),\n reinterpret(0x3FE7C00000000000), 0, reinterpret(0x3FD314F1E1D36000), reinterpret(0xBD28E27AD3213CB8),\n reinterpret(0x3FE7A00000000000), 0, reinterpret(0x3FD36B6776BE1000), reinterpret(0x3D116ECDB0F177C8),\n reinterpret(0x3FE7800000000000), 0, reinterpret(0x3FD3C25277333000), reinterpret(0x3D183B54B606BD5C),\n reinterpret(0x3FE7600000000000), 0, reinterpret(0x3FD419B423D5E800), reinterpret(0x3D08E436EC90E09D),\n reinterpret(0x3FE7400000000000), 0, reinterpret(0x3FD4718DC271C800), reinterpret(0xBD2F27CE0967D675),\n reinterpret(0x3FE7200000000000), 0, reinterpret(0x3FD4C9E09E173000), reinterpret(0xBD2E20891B0AD8A4),\n reinterpret(0x3FE7000000000000), 0, reinterpret(0x3FD522AE0738A000), reinterpret(0x3D2EBE708164C759),\n reinterpret(0x3FE6E00000000000), 0, reinterpret(0x3FD57BF753C8D000), reinterpret(0x3D1FADEDEE5D40EF),\n reinterpret(0x3FE6C00000000000), 0, reinterpret(0x3FD5D5BDDF596000), reinterpret(0xBD0A0B2A08A465DC)\n]);\n\n// Returns 0 if not int, 1 if odd int, 2 if even int. The argument is\n// the bit representation of a non-zero finite floating-point value.\n// @ts-ignore: decorator\n@inline\nfunction checkint(iy: u64): i32 {\n var e = iy >> 52 & 0x7FF;\n if (e < 0x3FF ) return 0;\n if (e > 0x3FF + 52) return 2;\n e = u64(1) << (0x3FF + 52 - e);\n if (iy & (e - 1)) return 0;\n if (iy & e ) return 1;\n return 2;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction xflow(sign: u32, y: f64): f64 {\n return select(-y, y, sign) * y;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction uflow(sign: u32): f64 {\n return xflow(sign, reinterpret(0x1000000000000000)); // 0x1p-767\n}\n\n// @ts-ignore: decorator\n@inline\nfunction oflow(sign: u32): f64 {\n return xflow(sign, reinterpret(0x7000000000000000)); // 0x1p769\n}\n\n// Returns 1 if input is the bit representation of 0, infinity or nan.\n// @ts-ignore: decorator\n@inline\nfunction zeroinfnan(u: u64): bool {\n return (u << 1) - 1 >= 0xFFE0000000000000 - 1;\n}\n\n// @ts-ignore: decorator\n@lazy var log_tail: f64 = 0;\n\n// Compute y+TAIL = log(x) where the rounded result is y and TAIL has about\n// additional 15 bits precision. IX is the bit representation of x, but\n// normalized in the subnormal range using the sign bit for the exponent.\n// @ts-ignore: decorator\n@inline\nfunction log_inline(ix: u64): f64 {\n const N = 1 << POW_LOG_TABLE_BITS;\n const N_MASK = N - 1;\n\n const\n Ln2hi = reinterpret(0x3FE62E42FEFA3800),\n Ln2lo = reinterpret(0x3D2EF35793C76730);\n\n const\n A0 = reinterpret(0xBFE0000000000000),\n A1 = reinterpret(0xBFE5555555555560),\n A2 = reinterpret(0x3FE0000000000006),\n A3 = reinterpret(0x3FE999999959554E),\n A4 = reinterpret(0xBFE555555529A47A),\n A5 = reinterpret(0xBFF2495B9B4845E9),\n A6 = reinterpret(0x3FF0002B8B263FC3);\n\n // x = 2^k z; where z is in range [OFF,2*OFF) and exact.\n // The range is split into N subintervals.\n // The ith subinterval contains z and c is near its center.\n var tmp = ix - 0x3fE6955500000000;\n var i = usize((tmp >> (52 - POW_LOG_TABLE_BITS)) & N_MASK);\n var k = tmp >> 52;\n var iz = ix - (tmp & u64(0xFFF) << 52);\n var z = reinterpret(iz);\n var kd = k;\n\n // log(x) = k*Ln2 + log(c) + log1p(z/c-1).\n var invc = load(POW_LOG_DATA_TAB + (i << (2 + alignof())), 0 << alignof()); // tab[i].invc\n var logc = load(POW_LOG_DATA_TAB + (i << (2 + alignof())), 2 << alignof()); // tab[i].logc\n var logctail = load(POW_LOG_DATA_TAB + (i << (2 + alignof())), 3 << alignof()); // tab[i].logctail\n\n // Note: 1/c is j/N or j/N/2 where j is an integer in [N,2N) and\n // |z/c - 1| < 1/N, so r = z/c - 1 is exactly representible.\n // Split z such that rhi, rlo and rhi*rhi are exact and |rlo| <= |r|.\n var zhi = reinterpret((iz + u64(0x80000000)) & 0xFFFFFFFF00000000);\n var zlo = z - zhi;\n var rhi = zhi * invc - 1.0;\n var rlo = zlo * invc;\n var r = rhi + rlo;\n\n // k * Ln2 + log(c) + r.\n var t1 = kd * Ln2hi + logc;\n var t2 = t1 + r;\n var lo1 = kd * Ln2lo + logctail;\n var lo2 = t1 - t2 + r;\n\n // Evaluation is optimized assuming superscalar pipelined execution.\n var ar = A0 * r; // A[0] = -0.5\n var ar2 = r * ar;\n var ar3 = r * ar2;\n // k * Ln2 + log(c) + r + A[0] * r * r.\n var arhi = A0 * rhi;\n var arhi2 = rhi * arhi;\n var hi = t2 + arhi2;\n var lo3 = rlo * (ar + arhi);\n var lo4 = t2 - hi + arhi2;\n\n // p = log1p(r) - r - A[0] * r * r.\n var p = ar3 * (A1 + r * A2 + ar2 * (A3 + r * A4 + ar2 * (A5 + r * A6)));\n var lo = lo1 + lo2 + lo3 + lo4 + p;\n var y = hi + lo;\n log_tail = hi - y + lo;\n\n return y;\n}\n\n// @ts-ignore: decorator\n@inline const SIGN_BIAS = 0x800 << EXP_TABLE_BITS;\n\n// Computes sign*exp(x+xtail) where |xtail| < 2^-8/N and |xtail| <= |x|.\n// The sign_bias argument is SIGN_BIAS or 0 and sets the sign to -1 or 1.\n// @ts-ignore: decorator\n@inline\nfunction exp_inline(x: f64, xtail: f64, sign_bias: u32): f64 {\n const N = 1 << EXP_TABLE_BITS;\n const N_MASK = N - 1;\n\n const\n InvLn2N = reinterpret(0x3FF71547652B82FE) * N, // 0x1.71547652b82fep0\n NegLn2hiN = reinterpret(0xBF762E42FEFA0000), // -0x1.62e42fefa0000p-8\n NegLn2loN = reinterpret(0xBD0CF79ABC9E3B3A), // -0x1.cf79abc9e3b3ap-47\n shift = reinterpret(0x4338000000000000); // 0x1.8p52\n\n const\n C2 = reinterpret(0x3FDFFFFFFFFFFDBD), // __exp_data.poly[0] (0x1.ffffffffffdbdp-2)\n C3 = reinterpret(0x3FC555555555543C), // __exp_data.poly[1] (0x1.555555555543cp-3)\n C4 = reinterpret(0x3FA55555CF172B91), // __exp_data.poly[2] (0x1.55555cf172b91p-5)\n C5 = reinterpret(0x3F81111167A4D017); // __exp_data.poly[3] (0x1.1111167a4d017p-7)\n\n var abstop: u32;\n var ki: u64, top: u64, sbits: u64;\n var idx: usize;\n // double_t for better performance on targets with FLT_EVAL_METHOD==2.\n var kd: f64, z: f64, r: f64, r2: f64, scale: f64, tail: f64, tmp: f64;\n\n var ux = reinterpret(x);\n abstop = u32(ux >> 52) & 0x7FF;\n if (abstop - 0x3C9 >= 0x03F) {\n if (abstop - 0x3C9 >= 0x80000000) {\n // Avoid spurious underflow for tiny x.\n // Note: 0 is common input.\n return select(-1.0, 1.0, sign_bias);\n }\n if (abstop >= 0x409) { // top12(1024.0)\n // Note: inf and nan are already handled.\n return ux < 0\n ? uflow(sign_bias)\n : oflow(sign_bias);\n }\n // Large x is special cased below.\n abstop = 0;\n }\n\n // exp(x) = 2^(k/N) * exp(r), with exp(r) in [2^(-1/2N),2^(1/2N)].\n // x = ln2/N*k + r, with int k and r in [-ln2/2N, ln2/2N].\n z = InvLn2N * x;\n\n // #if TOINT_INTRINSICS\n // kd = roundtoint(z);\n // ki = converttoint(z);\n // #elif EXP_USE_TOINT_NARROW\n // // z - kd is in [-0.5-2^-16, 0.5] in all rounding modes.\n // kd = eval_as_double(z + shift);\n // ki = asuint64(kd) >> 16;\n // kd = (double_t)(int32_t)ki;\n // #else\n // z - kd is in [-1, 1] in non-nearest rounding modes\n kd = z + shift;\n ki = reinterpret(kd);\n kd -= shift;\n // #endif\n r = x + kd * NegLn2hiN + kd * NegLn2loN;\n // The code assumes 2^-200 < |xtail| < 2^-8/N\n r += xtail;\n // 2^(k/N) ~= scale * (1 + tail)\n idx = usize((ki & N_MASK) << 1);\n top = (ki + sign_bias) << (52 - EXP_TABLE_BITS);\n\n tail = reinterpret(load(EXP_DATA_TAB + (idx << alignof())));\n // This is only a valid scale when -1023*N < k < 1024*N\n sbits = load(EXP_DATA_TAB + (idx << alignof()), 1 << alignof()) + top;\n // exp(x) = 2^(k/N) * exp(r) ~= scale + scale * (tail + exp(r) - 1).\n // Evaluation is optimized assuming superscalar pipelined execution.\n r2 = r * r;\n // Without fma the worst case error is 0.25/N ulp larger.\n // Worst case error is less than 0.5+1.11/N+(abs poly error * 2^53) ulp\n tmp = tail + r + r2 * (C2 + r * C3) + r2 * r2 * (C4 + r * C5);\n if (abstop == 0) return specialcase(tmp, sbits, ki);\n scale = reinterpret(sbits);\n // Note: tmp == 0 or |tmp| > 2^-200 and scale > 2^-739, so there\n // is no spurious underflow here even without fma.\n return scale + scale * tmp;\n}\n\n// @ts-ignore: decorator\n@inline\nexport function pow_lut(x: f64, y: f64): f64 {\n const Ox1p52 = reinterpret(0x4330000000000000); // 0x1p52\n\n var sign_bias: u32 = 0;\n var ix = reinterpret(x);\n var iy = reinterpret(y);\n var topx = ix >> 52;\n var topy = iy >> 52;\n\n if (topx - 0x001 >= 0x7FF - 0x001 || (topy & 0x7FF) - 0x3BE >= 0x43e - 0x3BE) {\n // Note: if |y| > 1075 * ln2 * 2^53 ~= 0x1.749p62 then pow(x,y) = inf/0\n // and if |y| < 2^-54 / 1075 ~= 0x1.e7b6p-65 then pow(x,y) = +-1.\n // Special cases: (x < 0x1p-126 or inf or nan) or\n // (|y| < 0x1p-65 or |y| >= 0x1p63 or nan).\n if (zeroinfnan(iy)) {\n if ((iy << 1) == 0) return 1.0;\n if (ix == 0x3FF0000000000000) return NaN; // original: 1.0\n if ((ix << 1) > 0xFFE0000000000000 || (iy << 1) > 0xFFE0000000000000) return x + y;\n if ((ix << 1) == 0x7FE0000000000000) return NaN; // original: 1.0\n if (((ix << 1) < 0x7FE0000000000000) == !(iy >> 63)) return 0; // |x|<1 && y==inf or |x|>1 && y==-inf.\n return y * y;\n }\n if (zeroinfnan(ix)) {\n let x2 = x * x;\n if (i32(ix >> 63) && checkint(iy) == 1) x2 = -x2;\n return iy < 0 ? 1 / x2 : x2;\n }\n // Here x and y are non-zero finite\n if (ix < 0) {\n // Finite x < 0\n let yint = checkint(iy);\n if (yint == 0) return (x - x) / (x - x);\n if (yint == 1) sign_bias = SIGN_BIAS;\n ix &= 0x7FFFFFFFFFFFFFFF;\n topx &= 0x7FF;\n }\n if ((topy & 0x7FF) - 0x3BE >= 0x43E - 0x3BE) {\n // Note: sign_bias == 0 here because y is not odd.\n if (ix == 0x3FF0000000000000) return 1;\n if ((topy & 0x7FF) < 0x3BE) return 1; // |y| < 2^-65, x^y ~= 1 + y*log(x).\n return (ix > 0x3FF0000000000000) == (topy < 0x800) ? Infinity : 0;\n }\n if (topx == 0) {\n // Normalize subnormal x so exponent becomes negative.\n ix = reinterpret(x * Ox1p52);\n ix &= 0x7FFFFFFFFFFFFFFF;\n ix -= u64(52) << 52;\n }\n }\n\n var hi = log_inline(ix);\n var lo = log_tail;\n var ehi: f64, elo: f64;\n // #if __FP_FAST_FMA\n // ehi = y * hi;\n // elo = y * lo + __builtin_fma(y, hi, -ehi);\n // #else\n var yhi = reinterpret(iy & 0xFFFFFFFFF8000000);\n var ylo = y - yhi;\n var lhi = reinterpret(reinterpret(hi) & 0xFFFFFFFFF8000000);\n var llo = hi - lhi + lo;\n ehi = yhi * lhi;\n elo = ylo * lhi + y * llo; // |elo| < |ehi| * 2^-25.\n // #endif\n return exp_inline(ehi, elo, sign_bias);\n}\n","/// \n\nimport { idof } from \"../builtins\";\nimport { CharCode } from \"./string\";\n\n// @ts-ignore: decorator\n@inline\nexport const MAX_DOUBLE_LENGTH = 28;\n\n// @ts-ignore: decorator\n@lazy @inline const POWERS10 = memory.data([\n 1,\n 10,\n 100,\n 1000,\n 10000,\n 100000,\n 1000000,\n 10000000,\n 100000000,\n 1000000000\n]);\n\n/*\n Lookup table for pairwise char codes in range [0-99]\n\n \"00\", \"01\", \"02\", \"03\", \"04\", \"05\", \"06\", \"07\", \"08\", \"09\",\n \"10\", \"11\", \"12\", \"13\", \"14\", \"15\", \"16\", \"17\", \"18\", \"19\",\n \"20\", \"21\", \"22\", \"23\", \"24\", \"25\", \"26\", \"27\", \"28\", \"29\",\n \"30\", \"31\", \"32\", \"33\", \"34\", \"35\", \"36\", \"37\", \"38\", \"39\",\n \"40\", \"41\", \"42\", \"43\", \"44\", \"45\", \"46\", \"47\", \"48\", \"49\",\n \"50\", \"51\", \"52\", \"53\", \"54\", \"55\", \"56\", \"57\", \"58\", \"59\",\n \"60\", \"61\", \"62\", \"63\", \"64\", \"65\", \"66\", \"67\", \"68\", \"69\",\n \"70\", \"71\", \"72\", \"73\", \"74\", \"75\", \"76\", \"77\", \"78\", \"79\",\n \"80\", \"81\", \"82\", \"83\", \"84\", \"85\", \"86\", \"87\", \"88\", \"89\",\n \"90\", \"91\", \"92\", \"93\", \"94\", \"95\", \"96\", \"97\", \"98\", \"99\"\n*/\n// @ts-ignore: decorator\n@lazy @inline const DIGITS = memory.data([\n 0x00300030, 0x00310030, 0x00320030, 0x00330030, 0x00340030,\n 0x00350030, 0x00360030, 0x00370030, 0x00380030, 0x00390030,\n 0x00300031, 0x00310031, 0x00320031, 0x00330031, 0x00340031,\n 0x00350031, 0x00360031, 0x00370031, 0x00380031, 0x00390031,\n 0x00300032, 0x00310032, 0x00320032, 0x00330032, 0x00340032,\n 0x00350032, 0x00360032, 0x00370032, 0x00380032, 0x00390032,\n 0x00300033, 0x00310033, 0x00320033, 0x00330033, 0x00340033,\n 0x00350033, 0x00360033, 0x00370033, 0x00380033, 0x00390033,\n 0x00300034, 0x00310034, 0x00320034, 0x00330034, 0x00340034,\n 0x00350034, 0x00360034, 0x00370034, 0x00380034, 0x00390034,\n 0x00300035, 0x00310035, 0x00320035, 0x00330035, 0x00340035,\n 0x00350035, 0x00360035, 0x00370035, 0x00380035, 0x00390035,\n 0x00300036, 0x00310036, 0x00320036, 0x00330036, 0x00340036,\n 0x00350036, 0x00360036, 0x00370036, 0x00380036, 0x00390036,\n 0x00300037, 0x00310037, 0x00320037, 0x00330037, 0x00340037,\n 0x00350037, 0x00360037, 0x00370037, 0x00380037, 0x00390037,\n 0x00300038, 0x00310038, 0x00320038, 0x00330038, 0x00340038,\n 0x00350038, 0x00360038, 0x00370038, 0x00380038, 0x00390038,\n 0x00300039, 0x00310039, 0x00320039, 0x00330039, 0x00340039,\n 0x00350039, 0x00360039, 0x00370039, 0x00380039, 0x00390039\n]);\n\n// Lookup table for pairwise char codes in range [0x00-0xFF]\n// @ts-ignore: decorator\n@lazy @inline const HEX_DIGITS =\n\"000102030405060708090a0b0c0d0e0f\\\n101112131415161718191a1b1c1d1e1f\\\n202122232425262728292a2b2c2d2e2f\\\n303132333435363738393a3b3c3d3e3f\\\n404142434445464748494a4b4c4d4e4f\\\n505152535455565758595a5b5c5d5e5f\\\n606162636465666768696a6b6c6d6e6f\\\n707172737475767778797a7b7c7d7e7f\\\n808182838485868788898a8b8c8d8e8f\\\n909192939495969798999a9b9c9d9e9f\\\na0a1a2a3a4a5a6a7a8a9aaabacadaeaf\\\nb0b1b2b3b4b5b6b7b8b9babbbcbdbebf\\\nc0c1c2c3c4c5c6c7c8c9cacbcccdcecf\\\nd0d1d2d3d4d5d6d7d8d9dadbdcdddedf\\\ne0e1e2e3e4e5e6e7e8e9eaebecedeeef\\\nf0f1f2f3f4f5f6f7f8f9fafbfcfdfeff\";\n\n// @ts-ignore: decorator\n@lazy @inline const ANY_DIGITS = \"0123456789abcdefghijklmnopqrstuvwxyz\";\n\n// @ts-ignore: decorator\n@lazy @inline const EXP_POWERS = memory.data([/* eslint-disable indent */\n -1220, -1193, -1166, -1140, -1113, -1087, -1060, -1034, -1007, -980,\n -954, -927, -901, -874, -847, -821, -794, -768, -741, -715,\n -688, -661, -635, -608, -582, -555, -529, -502, -475, -449,\n -422, -396, -369, -343, -316, -289, -263, -236, -210, -183,\n -157, -130, -103, -77, -50, -24, 3, 30, 56, 83,\n 109, 136, 162, 189, 216, 242, 269, 295, 322, 348,\n 375, 402, 428, 455, 481, 508, 534, 561, 588, 614,\n 641, 667, 694, 720, 747, 774, 800, 827, 853, 880,\n 907, 933, 960, 986, 1013, 1039, 1066\n/* eslint-enable indent */]);\n\n// 1e-348, 1e-340, ..., 1e340\n// @ts-ignore: decorator\n@lazy @inline const FRC_POWERS = memory.data([\n 0xFA8FD5A0081C0288, 0xBAAEE17FA23EBF76, 0x8B16FB203055AC76, 0xCF42894A5DCE35EA,\n 0x9A6BB0AA55653B2D, 0xE61ACF033D1A45DF, 0xAB70FE17C79AC6CA, 0xFF77B1FCBEBCDC4F,\n 0xBE5691EF416BD60C, 0x8DD01FAD907FFC3C, 0xD3515C2831559A83, 0x9D71AC8FADA6C9B5,\n 0xEA9C227723EE8BCB, 0xAECC49914078536D, 0x823C12795DB6CE57, 0xC21094364DFB5637,\n 0x9096EA6F3848984F, 0xD77485CB25823AC7, 0xA086CFCD97BF97F4, 0xEF340A98172AACE5,\n 0xB23867FB2A35B28E, 0x84C8D4DFD2C63F3B, 0xC5DD44271AD3CDBA, 0x936B9FCEBB25C996,\n 0xDBAC6C247D62A584, 0xA3AB66580D5FDAF6, 0xF3E2F893DEC3F126, 0xB5B5ADA8AAFF80B8,\n 0x87625F056C7C4A8B, 0xC9BCFF6034C13053, 0x964E858C91BA2655, 0xDFF9772470297EBD,\n 0xA6DFBD9FB8E5B88F, 0xF8A95FCF88747D94, 0xB94470938FA89BCF, 0x8A08F0F8BF0F156B,\n 0xCDB02555653131B6, 0x993FE2C6D07B7FAC, 0xE45C10C42A2B3B06, 0xAA242499697392D3,\n 0xFD87B5F28300CA0E, 0xBCE5086492111AEB, 0x8CBCCC096F5088CC, 0xD1B71758E219652C,\n 0x9C40000000000000, 0xE8D4A51000000000, 0xAD78EBC5AC620000, 0x813F3978F8940984,\n 0xC097CE7BC90715B3, 0x8F7E32CE7BEA5C70, 0xD5D238A4ABE98068, 0x9F4F2726179A2245,\n 0xED63A231D4C4FB27, 0xB0DE65388CC8ADA8, 0x83C7088E1AAB65DB, 0xC45D1DF942711D9A,\n 0x924D692CA61BE758, 0xDA01EE641A708DEA, 0xA26DA3999AEF774A, 0xF209787BB47D6B85,\n 0xB454E4A179DD1877, 0x865B86925B9BC5C2, 0xC83553C5C8965D3D, 0x952AB45CFA97A0B3,\n 0xDE469FBD99A05FE3, 0xA59BC234DB398C25, 0xF6C69A72A3989F5C, 0xB7DCBF5354E9BECE,\n 0x88FCF317F22241E2, 0xCC20CE9BD35C78A5, 0x98165AF37B2153DF, 0xE2A0B5DC971F303A,\n 0xA8D9D1535CE3B396, 0xFB9B7CD9A4A7443C, 0xBB764C4CA7A44410, 0x8BAB8EEFB6409C1A,\n 0xD01FEF10A657842C, 0x9B10A4E5E9913129, 0xE7109BFBA19C0C9D, 0xAC2820D9623BF429,\n 0x80444B5E7AA7CF85, 0xBF21E44003ACDD2D, 0x8E679C2F5E44FF8F, 0xD433179D9C8CB841,\n 0x9E19DB92B4E31BA9, 0xEB96BF6EBADF77D9, 0xAF87023B9BF0EE6B\n]);\n\n// @ts-ignore: decorator\n@inline\nexport function isPowerOf2(value: T): bool {\n return popcnt(value) == 1;\n}\n\n// Count number of decimals for u32 values\n// In our case input value always non-zero so we can simplify some parts\nexport function decimalCount32(value: u32): u32 {\n if (value < 100000) {\n if (value < 100) {\n return 1 + u32(value >= 10);\n } else {\n return 3 + u32(value >= 10000) + u32(value >= 1000);\n }\n } else {\n if (value < 10000000) {\n return 6 + u32(value >= 1000000);\n } else {\n return 8 + u32(value >= 1000000000) + u32(value >= 100000000);\n }\n }\n}\n\n// Count number of decimals for u64 values\n// In our case input value always greater than 2^32-1 so we can skip some parts\nexport function decimalCount64High(value: u64): u32 {\n if (value < 1000000000000000) {\n if (value < 1000000000000) {\n return 10 + u32(value >= 100000000000) + u32(value >= 10000000000);\n } else {\n return 13 + u32(value >= 100000000000000) + u32(value >= 10000000000000);\n }\n } else {\n if (value < 100000000000000000) {\n return 16 + u32(value >= 10000000000000000);\n } else {\n return 18 + u32(value >= 10000000000000000000) + u32(value >= 1000000000000000000);\n }\n }\n}\n\nfunction ulog_base(num: u64, base: i32): u32 {\n if (isPowerOf2(base)) {\n return (63 - clz(num)) / (31 - clz(base)) + 1;\n }\n var b64 = u64(base), b = b64, e: u32 = 1;\n while (num >= b) {\n num /= b;\n b *= b;\n e <<= 1;\n }\n while (num >= 1) {\n num /= b64;\n e++;\n }\n return e - 1;\n}\n\nfunction utoa32_dec_lut(buffer: usize, num: u32, offset: usize): void {\n while (num >= 10000) {\n // in most VMs i32/u32 div and modulo by constant can be shared and simplificate\n let t = num / 10000;\n let r = num % 10000;\n num = t;\n\n let d1 = r / 100;\n let d2 = r % 100;\n\n let digits1 = load(DIGITS + (d1 << alignof()));\n let digits2 = load(DIGITS + (d2 << alignof()));\n\n offset -= 4;\n store(buffer + (offset << 1), digits1 | (digits2 << 32));\n }\n\n if (num >= 100) {\n let t = num / 100;\n let d1 = num % 100;\n num = t;\n offset -= 2;\n let digits = load(DIGITS + (d1 << alignof()));\n store(buffer + (offset << 1), digits);\n }\n\n if (num >= 10) {\n offset -= 2;\n let digits = load(DIGITS + (num << alignof()));\n store(buffer + (offset << 1), digits);\n } else {\n offset -= 1;\n let digit = CharCode._0 + num;\n store(buffer + (offset << 1), digit);\n }\n}\n\nfunction utoa64_dec_lut(buffer: usize, num: u64, offset: usize): void {\n while (num >= 100000000) {\n let t = num / 100000000;\n let r = (num - t * 100000000);\n num = t;\n\n let b = r / 10000;\n let c = r % 10000;\n\n let b1 = b / 100;\n let b2 = b % 100;\n let c1 = c / 100;\n let c2 = c % 100;\n\n let digits1 = load(DIGITS + (c1 << alignof()));\n let digits2 = load(DIGITS + (c2 << alignof()));\n\n offset -= 4;\n store(buffer + (offset << 1), digits1 | (digits2 << 32));\n\n digits1 = load(DIGITS + (b1 << alignof()));\n digits2 = load(DIGITS + (b2 << alignof()));\n\n offset -= 4;\n store(buffer + (offset << 1), digits1 | (digits2 << 32));\n }\n\n utoa32_dec_lut(buffer, num, offset);\n}\n\nfunction utoa_hex_lut(buffer: usize, num: u64, offset: usize): void {\n const lut = changetype(HEX_DIGITS);\n while (offset >= 2) {\n offset -= 2;\n store(\n buffer + (offset << 1),\n load(lut + ((num & 0xFF) << alignof()))\n );\n num >>= 8;\n }\n if (offset & 1) {\n store(buffer, load(lut + (num << 6)));\n }\n}\n\nfunction utoa_dec_simple(buffer: usize, num: T, offset: usize): void {\n do {\n let t = num / 10;\n let r = (num % 10);\n num = changetype(t);\n offset--;\n store(buffer + (offset << 1), CharCode._0 + r);\n } while (num);\n}\n\nfunction utoa_hex_simple(buffer: usize, num: T, offset: usize): void {\n do {\n let d = num & 0x0F | CharCode._0;\n d += select(0x27, 0, d > CharCode._9);\n offset--;\n store(buffer + (offset << 1), d);\n // @ts-ignore: type\n num >>= 4;\n } while (num);\n}\n\n// @ts-ignore: decorator\n@inline\nexport function utoa32_dec_core(buffer: usize, num: u32, offset: usize): void {\n if (ASC_SHRINK_LEVEL >= 1) {\n utoa_dec_simple(buffer, num, offset);\n } else {\n utoa32_dec_lut(buffer, num, offset);\n }\n}\n\n// @ts-ignore: decorator\n@inline\nfunction utoa32_hex_core(buffer: usize, num: u32, offset: usize): void {\n if (ASC_SHRINK_LEVEL >= 1) {\n utoa_hex_simple(buffer, num, offset);\n } else {\n utoa_hex_lut(buffer, num, offset);\n }\n}\n\n// @ts-ignore: decorator\n@inline\nfunction utoa64_dec_core(buffer: usize, num: u64, offset: usize): void {\n if (ASC_SHRINK_LEVEL >= 1) {\n utoa_dec_simple(buffer, num, offset);\n } else {\n utoa64_dec_lut(buffer, num, offset);\n }\n}\n\n// @ts-ignore: decorator\n@inline\nfunction utoa64_hex_core(buffer: usize, num: u64, offset: usize): void {\n if (ASC_SHRINK_LEVEL >= 1) {\n utoa_hex_simple(buffer, num, offset);\n } else {\n utoa_hex_lut(buffer, num, offset);\n }\n}\n\nfunction utoa64_any_core(buffer: usize, num: u64, offset: usize, radix: i32): void {\n const lut = changetype(ANY_DIGITS);\n var base = u64(radix);\n if ((radix & (radix - 1)) == 0) { // for radix which pow of two\n let shift = u64(ctz(radix) & 7);\n let mask = base - 1;\n do {\n offset--;\n store(buffer + (offset << 1), load(lut + (usize(num & mask) << 1)));\n num >>= shift;\n } while (num);\n } else {\n do {\n offset--;\n let q = num / base;\n store(buffer + (offset << 1), load(lut + (usize(num - q * base) << 1)));\n num = q;\n } while (num);\n }\n}\n\nexport function utoa32(value: u32, radix: i32): String {\n if (radix < 2 || radix > 36) {\n throw new RangeError(\"toString() radix argument must be between 2 and 36\");\n }\n if (!value) return \"0\";\n var out: String;\n\n if (radix == 10) {\n let decimals = decimalCount32(value);\n out = changetype(__new(decimals << 1, idof()));\n utoa32_dec_core(changetype(out), value, decimals);\n } else if (radix == 16) {\n let decimals = (31 - clz(value) >> 2) + 1;\n out = changetype(__new(decimals << 1, idof()));\n utoa32_hex_core(changetype(out), value, decimals);\n } else {\n let decimals = ulog_base(value, radix);\n out = changetype(__new(decimals << 1, idof()));\n utoa64_any_core(changetype(out), value, decimals, radix);\n }\n return out;\n}\n\nexport function itoa32(value: i32, radix: i32): String {\n if (radix < 2 || radix > 36) {\n throw new RangeError(\"toString() radix argument must be between 2 and 36\");\n }\n if (!value) return \"0\";\n\n var sign = (value >>> 31) << 1;\n if (sign) value = -value;\n var out: String;\n\n if (radix == 10) {\n let decimals = decimalCount32(value);\n out = changetype(__new((decimals << 1) + sign, idof()));\n utoa32_dec_core(changetype(out) + sign, value, decimals);\n } else if (radix == 16) {\n let decimals = (31 - clz(value) >> 2) + 1;\n out = changetype(__new((decimals << 1) + sign, idof()));\n utoa32_hex_core(changetype(out) + sign, value, decimals);\n } else {\n let val32 = u32(value);\n let decimals = ulog_base(val32, radix);\n out = changetype(__new((decimals << 1) + sign, idof()));\n utoa64_any_core(changetype(out) + sign, val32, decimals, radix);\n }\n if (sign) store(changetype(out), CharCode.MINUS);\n return out;\n}\n\nexport function utoa64(value: u64, radix: i32): String {\n if (radix < 2 || radix > 36) {\n throw new RangeError(\"toString() radix argument must be between 2 and 36\");\n }\n if (!value) return \"0\";\n var out: String;\n\n if (radix == 10) {\n if (value <= u32.MAX_VALUE) {\n let val32 = value;\n let decimals = decimalCount32(val32);\n out = changetype(__new(decimals << 1, idof()));\n utoa32_dec_core(changetype(out), val32, decimals);\n } else {\n let decimals = decimalCount64High(value);\n out = changetype(__new(decimals << 1, idof()));\n utoa64_dec_core(changetype(out), value, decimals);\n }\n } else if (radix == 16) {\n let decimals = (63 - u32(clz(value)) >> 2) + 1;\n out = changetype(__new(decimals << 1, idof()));\n utoa64_hex_core(changetype(out), value, decimals);\n } else {\n let decimals = ulog_base(value, radix);\n out = changetype(__new(decimals << 1, idof()));\n utoa64_any_core(changetype(out), value, decimals, radix);\n }\n return out;\n}\n\nexport function itoa64(value: i64, radix: i32): String {\n if (radix < 2 || radix > 36) {\n throw new RangeError(\"toString() radix argument must be between 2 and 36\");\n }\n if (!value) return \"0\";\n\n var sign = u32(value >>> 63) << 1;\n if (sign) value = -value;\n var out: String;\n\n if (radix == 10) {\n if (value <= u32.MAX_VALUE) {\n let val32 = value;\n let decimals = decimalCount32(val32);\n out = changetype(__new((decimals << 1) + sign, idof()));\n utoa32_dec_core(changetype(out) + sign, val32, decimals);\n } else {\n let decimals = decimalCount64High(value);\n out = changetype(__new((decimals << 1) + sign, idof()));\n utoa64_dec_core(changetype(out) + sign, value, decimals);\n }\n } else if (radix == 16) {\n let decimals = (63 - u32(clz(value)) >> 2) + 1;\n out = changetype(__new((decimals << 1) + sign, idof()));\n utoa64_hex_core(changetype(out) + sign, value, decimals);\n } else {\n let decimals = ulog_base(value, radix);\n out = changetype(__new((decimals << 1) + sign, idof()));\n utoa64_any_core(changetype(out) + sign, value, decimals, radix);\n }\n if (sign) store(changetype(out), CharCode.MINUS);\n return out;\n}\n\n// @ts-ignore: decorator\n@lazy var _K: i32 = 0;\n\n// // @ts-ignore: decorator\n// @lazy\n// var _frc: u64 = 0;\n\n// @ts-ignore: decorator\n@lazy var _exp: i32 = 0;\n\n// @ts-ignore: decorator\n@lazy var _frc_minus: u64 = 0;\n\n// @ts-ignore: decorator\n@lazy var _frc_plus: u64 = 0;\n\n// @ts-ignore: decorator\n@lazy var _frc_pow: u64 = 0;\n\n// @ts-ignore: decorator\n@lazy var _exp_pow: i32 = 0;\n\n// @ts-ignore: decorator\n@inline\nfunction umul64f(u: u64, v: u64): u64 {\n var u0 = u & 0xFFFFFFFF;\n var v0 = v & 0xFFFFFFFF;\n\n var u1 = u >> 32;\n var v1 = v >> 32;\n\n var l = u0 * v0;\n var t = u1 * v0 + (l >> 32);\n var w = u0 * v1 + (t & 0xFFFFFFFF);\n\n w += 0x7FFFFFFF; // rounding\n\n t >>= 32;\n w >>= 32;\n\n return u1 * v1 + t + w;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction umul64e(e1: i32, e2: i32): i32 {\n return e1 + e2 + 64; // where 64 is significand size\n}\n\n// @ts-ignore: decorator\n@inline\nfunction normalizedBoundaries(f: u64, e: i32): void {\n var frc = (f << 1) + 1;\n var exp = e - 1;\n var off = clz(frc);\n frc <<= off;\n exp -= off;\n\n var m = 1 + i32(f == 0x0010000000000000);\n\n _frc_plus = frc;\n _frc_minus = ((f << m) - 1) << e - m - exp;\n _exp = exp;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction grisuRound(buffer: usize, len: i32, delta: u64, rest: u64, ten_kappa: u64, wp_w: u64): void {\n var lastp = buffer + ((len - 1) << 1);\n var digit = load(lastp);\n while (\n rest < wp_w &&\n delta - rest >= ten_kappa && (\n rest + ten_kappa < wp_w ||\n wp_w - rest > rest + ten_kappa - wp_w\n )\n ) {\n --digit;\n rest += ten_kappa;\n }\n store(lastp, digit);\n}\n\n// @ts-ignore: decorator\n@inline\nfunction getCachedPower(minExp: i32): void {\n const c = reinterpret(0x3FD34413509F79FE); // 1 / lg(10) = 0.30102999566398114\n var dk = (-61 - minExp) * c + 347;\t // dk must be positive, so can do ceiling in positive\n var k = dk;\n k += i32(k != dk); // conversion with ceil\n\n var index = (k >> 3) + 1;\n _K = 348 - (index << 3);\t// decimal exponent no need lookup table\n _frc_pow = load(FRC_POWERS + (index << alignof()));\n _exp_pow = load(EXP_POWERS + (index << alignof()));\n}\n\n// @ts-ignore: decorator\n@inline\nfunction grisu2(value: f64, buffer: usize, sign: i32): i32 {\n\n // frexp routine\n var uv = reinterpret(value);\n var exp = i32((uv & 0x7FF0000000000000) >>> 52);\n var sid = uv & 0x000FFFFFFFFFFFFF;\n var frc = (u64(exp != 0) << 52) + sid;\n exp = select(exp, 1, exp) - (0x3FF + 52);\n\n normalizedBoundaries(frc, exp);\n getCachedPower(_exp);\n\n // normalize\n var off = clz(frc);\n frc <<= off;\n exp -= off;\n\n var frc_pow = _frc_pow;\n var exp_pow = _exp_pow;\n\n var w_frc = umul64f(frc, frc_pow);\n var w_exp = umul64e(exp, exp_pow);\n\n var wp_frc = umul64f(_frc_plus, frc_pow) - 1;\n var wp_exp = umul64e(_exp, exp_pow);\n\n var wm_frc = umul64f(_frc_minus, frc_pow) + 1;\n var delta = wp_frc - wm_frc;\n\n return genDigits(buffer, w_frc, w_exp, wp_frc, wp_exp, delta, sign);\n}\n\nfunction genDigits(buffer: usize, w_frc: u64, w_exp: i32, mp_frc: u64, mp_exp: i32, delta: u64, sign: i32): i32 {\n var one_exp = -mp_exp;\n var one_frc = (1) << one_exp;\n var mask = one_frc - 1;\n\n var wp_w_frc = mp_frc - w_frc;\n\n var p1 = u32(mp_frc >> one_exp);\n var p2 = mp_frc & mask;\n\n var kappa = decimalCount32(p1);\n var len = sign;\n\n while (kappa > 0) {\n let d: u32;\n switch (kappa) {\n case 10: { d = p1 / 1000000000; p1 %= 1000000000; break; }\n case 9: { d = p1 / 100000000; p1 %= 100000000; break; }\n case 8: { d = p1 / 10000000; p1 %= 10000000; break; }\n case 7: { d = p1 / 1000000; p1 %= 1000000; break; }\n case 6: { d = p1 / 100000; p1 %= 100000; break; }\n case 5: { d = p1 / 10000; p1 %= 10000; break; }\n case 4: { d = p1 / 1000; p1 %= 1000; break; }\n case 3: { d = p1 / 100; p1 %= 100; break; }\n case 2: { d = p1 / 10; p1 %= 10; break; }\n case 1: { d = p1; p1 = 0; break; }\n default: { d = 0; break; }\n }\n\n if (d | len) store(buffer + (len++ << 1), CharCode._0 + d);\n\n --kappa;\n let tmp = ((p1) << one_exp) + p2;\n if (tmp <= delta) {\n _K += kappa;\n grisuRound(buffer, len, delta, tmp, load(POWERS10 + (kappa << alignof())) << one_exp, wp_w_frc);\n return len;\n }\n }\n\n while (true) {\n p2 *= 10;\n delta *= 10;\n\n let d = p2 >> one_exp;\n if (d | len) store(buffer + (len++ << 1), CharCode._0 + d);\n\n p2 &= mask;\n --kappa;\n if (p2 < delta) {\n _K += kappa;\n wp_w_frc *= load(POWERS10 + (-kappa << alignof()));\n grisuRound(buffer, len, delta, p2, one_frc, wp_w_frc);\n return len;\n }\n }\n}\n\n// @ts-ignore: decorator\n@inline\nfunction genExponent(buffer: usize, k: i32): i32 {\n var sign = k < 0;\n if (sign) k = -k;\n var decimals = decimalCount32(k) + 1;\n utoa32_dec_core(buffer, k, decimals);\n store(buffer, select(CharCode.MINUS, CharCode.PLUS, sign));\n return decimals;\n}\n\nfunction prettify(buffer: usize, length: i32, k: i32): i32 {\n if (!k) {\n store(buffer + (length << 1), CharCode.DOT | (CharCode._0 << 16));\n return length + 2;\n }\n\n var kk = length + k;\n if (length <= kk && kk <= 21) {\n // 1234e7 -> 12340000000\n for (let i = length; i < kk; ++i) {\n store(buffer + (i << 1), CharCode._0);\n }\n store(buffer + (kk << 1), CharCode.DOT | (CharCode._0 << 16));\n return kk + 2;\n } else if (kk > 0 && kk <= 21) {\n // 1234e-2 -> 12.34\n let ptr = buffer + (kk << 1);\n memory.copy(\n ptr + 2,\n ptr,\n -k << 1\n );\n store(buffer + (kk << 1), CharCode.DOT);\n return length + 1;\n } else if (-6 < kk && kk <= 0) {\n // 1234e-6 -> 0.001234\n let offset = 2 - kk;\n memory.copy(\n buffer + (offset << 1),\n buffer,\n length << 1\n );\n store(buffer, CharCode._0 | (CharCode.DOT << 16));\n for (let i = 2; i < offset; ++i) {\n store(buffer + (i << 1), CharCode._0);\n }\n return length + offset;\n } else if (length == 1) {\n // 1e30\n store(buffer, CharCode.e, 2);\n length = genExponent(buffer + 4, kk - 1);\n return length + 2;\n } else {\n let len = length << 1;\n memory.copy(\n buffer + 4,\n buffer + 2,\n len - 2\n );\n store(buffer, CharCode.DOT, 2);\n store(buffer + len, CharCode.e, 2);\n length += genExponent(buffer + len + 4, kk - 1);\n return length + 2;\n }\n}\n\nfunction dtoa_core(buffer: usize, value: f64): i32 {\n var sign = i32(value < 0);\n if (sign) {\n value = -value;\n store(buffer, CharCode.MINUS);\n }\n // assert(value > 0 && value <= 1.7976931348623157e308);\n var len = grisu2(value, buffer, sign);\n len = prettify(buffer + (sign << 1), len - sign, _K);\n return len + sign;\n}\n\n// @ts-ignore: decorator\n@lazy @inline const dtoa_buf = memory.data(MAX_DOUBLE_LENGTH << 1);\n\nexport function dtoa(value: f64): String {\n if (value == 0) return \"0.0\";\n if (!isFinite(value)) {\n if (isNaN(value)) return \"NaN\";\n return select(\"-Infinity\", \"Infinity\", value < 0);\n }\n var size = dtoa_core(dtoa_buf, value) << 1;\n var result = changetype(__new(size, idof()));\n memory.copy(changetype(result), dtoa_buf, size);\n return result;\n}\n\nexport function itoa_buffered(buffer: usize, value: T): u32 {\n var sign: u32 = 0;\n if (isSigned()) {\n sign = u32(value < 0);\n if (sign) {\n if (sizeof() == 1) {\n if (value == -0x80) {\n // -0x80 -> -128\n store(buffer,\n CharCode.MINUS |\n (CharCode._0 + 1) << 16 |\n (CharCode._0 + 2) << 32 |\n (CharCode._0 + 8) << 48\n );\n return 4;\n }\n }\n if (sizeof() == 2) {\n if (value == -0x8000) {\n // -0x8000 -> -32768\n store(buffer,\n CharCode.MINUS |\n (CharCode._0 + 3) << 16 |\n (CharCode._0 + 2) << 32 |\n (CharCode._0 + 7) << 48\n ); // -327\n store(buffer + 8,\n (CharCode._0 + 6) << 0 |\n (CharCode._0 + 8) << 16\n ); // 68\n return 6;\n }\n }\n store(buffer, CharCode.MINUS);\n // @ts-ignore\n value = -value;\n }\n }\n var dest = buffer + (sign << 1);\n if (ASC_SHRINK_LEVEL <= 1) {\n if (isSigned()) {\n if (sizeof() <= 4) {\n if (value < 10) {\n store(dest, value | CharCode._0);\n return 1 + sign;\n }\n } else {\n if (value < 10) {\n store(dest, value | CharCode._0);\n return 1 + sign;\n }\n }\n } else {\n if (value < 10) {\n store(buffer, value | CharCode._0);\n return 1;\n }\n }\n }\n var decimals: u32 = 0;\n if (sizeof() <= 4) {\n let val32 = value;\n decimals = decimalCount32(val32);\n utoa32_dec_core(dest, val32, decimals);\n } else {\n if (value <= u32.MAX_VALUE) {\n let val32 = value;\n decimals = decimalCount32(val32);\n utoa32_dec_core(dest, val32, decimals);\n } else {\n let val64 = value;\n decimals = decimalCount64High(val64);\n utoa64_dec_core(dest, val64, decimals);\n }\n }\n return sign + decimals;\n}\n\nexport function dtoa_buffered(buffer: usize, value: f64): u32 {\n if (value == 0) {\n store(buffer, CharCode._0);\n store(buffer, CharCode.DOT, 2);\n store(buffer, CharCode._0, 4);\n return 3;\n }\n if (!isFinite(value)) {\n if (isNaN(value)) {\n store(buffer, CharCode.N);\n store(buffer, CharCode.a, 2);\n store(buffer, CharCode.N, 4);\n return 3;\n } else {\n let sign = value < 0;\n if (sign) {\n store(buffer, CharCode.MINUS); // -\n buffer += 2;\n }\n store(buffer, 0x690066006E0049, 0); // ifnI\n store(buffer, 0x7900740069006E, 8); // ytin\n return 8 + u32(sign);\n }\n }\n return dtoa_core(buffer, value);\n}\n","import {\n itoa32,\n utoa32,\n itoa64,\n utoa64,\n dtoa,\n itoa_buffered,\n dtoa_buffered,\n MAX_DOUBLE_LENGTH\n} from \"./number\";\n\nimport {\n ipow32\n} from \"../math\";\n\n// All tables are stored as two staged lookup tables (static tries)\n// because the full range of Unicode symbols can't be efficiently\n// represented as-is in memory (see Unicode spec ch 5, p.196):\n// https://www.unicode.org/versions/Unicode12.0.0/ch05.pdf\n// Tables have been generated using these forked musl tools:\n// https://github.com/MaxGraey/musl-chartable-tools/tree/case-ignorable\n\n// Lookup table to check if a character is alphanumeric or not\n// See: https://git.musl-libc.org/cgit/musl/tree/src/ctype/alpha.h\n// size: 3904 bytes\n// @ts-ignore\n@inline @lazy const ALPHA_TABLE = memory.data([\n 18,17,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,17,34,35,36,17,37,38,39,40,\n 41,42,43,44,17,45,46,47,16,16,48,16,16,16,16,16,16,16,49,50,51,16,52,53,16,16,\n 17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,54,\n 17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,\n 17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,\n 17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,\n 17,17,17,55,17,17,17,17,56,17,57,58,59,60,61,62,17,17,17,17,17,17,17,17,17,17,\n 17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,\n 17,17,17,17,17,17,17,63,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,17,64,65,17,66,67,\n 68,69,70,71,72,73,74,17,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,\n 93,94,16,95,96,97,98,17,17,17,99,100,101,16,16,16,16,16,16,16,16,16,16,17,17,\n 17,17,102,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,17,17,103,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,17,17,104,105,16,16,106,107,17,17,17,17,17,17,17,17,17,17,17,17,17,\n 17,17,17,17,17,17,17,17,17,17,108,17,17,17,17,109,110,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 17,111,112,16,16,16,16,16,16,16,16,16,113,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,114,115,116,117,16,16,16,16,16,16,16,16,118,\n 119,120,16,16,16,16,16,121,122,16,16,16,16,123,16,16,124,16,16,16,16,16,16,16,\n 16,16,125,16,16,16,\n 16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,254,255,255,7,254,\n 255,255,7,0,0,0,0,0,4,32,4,255,255,127,255,255,255,127,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,195,255,3,0,31,80,0,0,0,0,0,0,0,0,0,0,32,0,0,0,0,0,223,188,64,215,255,255,\n 251,255,255,255,255,255,255,255,255,255,191,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,3,252,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,254,255,255,255,127,2,255,255,255,\n 255,255,1,0,0,0,0,255,191,182,0,255,255,255,135,7,0,0,0,255,7,255,255,255,255,\n 255,255,255,254,255,195,255,255,255,255,255,255,255,255,255,255,255,255,239,\n 31,254,225,255,\n 159,0,0,255,255,255,255,255,255,0,224,255,255,255,255,255,255,255,255,255,255,\n 255,255,3,0,255,255,255,255,255,7,48,4,255,255,255,252,255,31,0,0,255,255,255,\n 1,255,7,0,0,0,0,0,0,255,255,223,255,255,0,240,255,248,3,255,255,255,255,255,\n 255,255,255,255,239,255,223,225,255,207,255,254,255,239,159,249,255,255,253,\n 197,227,159,89,128,176,207,255,3,16,238,135,249,255,255,253,109,195,135,25,2,\n 94,192,255,63,0,238,191,251,255,255,253,237,227,191,27,1,0,207,255,0,30,238,\n 159,249,255,255,253,237,227,159,25,192,176,207,255,2,0,236,199,61,214,24,199,\n 255,195,199,29,129,0,192,255,0,0,239,223,253,255,255,253,255,227,223,29,96,7,\n 207,255,0,0,239,223,253,255,255,253,239,227,223,29,96,64,207,255,6,0,255,223,\n 253,255,255,255,255,231,223,93,240,128,207,255,0,252,238,255,127,252,255,255,\n 251,47,127,128,95,255,192,255,12,0,254,255,255,255,255,127,255,7,63,32,255,3,\n 0,0,0,0,214,247,255,255,175,255,255,59,95,32,255,243,0,0,0,\n 0,1,0,0,0,255,3,0,0,255,254,255,255,255,31,254,255,3,255,255,254,255,255,255,\n 31,0,0,0,0,0,0,0,0,255,255,255,255,255,255,127,249,255,3,255,255,255,255,255,\n 255,255,255,255,63,255,255,255,255,191,32,255,255,255,255,255,247,255,255,255,\n 255,255,255,255,255,255,61,127,61,255,255,255,255,255,61,255,255,255,255,61,\n 127,61,255,127,255,255,255,255,255,255,255,61,255,255,255,255,255,255,255,255,\n 7,0,0,0,0,255,255,0,0,255,255,255,255,255,255,255,255,255,255,63,63,254,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,159,255,255,254,255,255,7,255,255,255,255,255,255,255,255,\n 255,199,255,1,255,223,15,0,255,255,15,0,255,255,15,0,255,223,13,0,255,255,255,\n 255,255,255,207,255,255,1,128,16,255,3,0,0,0,0,255,3,255,255,255,255,255,255,\n 255,255,255,255,255,1,255,255,255,255,255,7,255,255,255,255,255,255,255,255,\n 63,\n 0,255,255,255,127,255,15,255,1,192,255,255,255,255,63,31,0,255,255,255,255,\n 255,15,255,255,255,3,255,3,0,0,0,0,255,255,255,15,255,255,255,255,255,255,255,\n 127,254,255,31,0,255,3,255,3,128,0,0,128,1,0,0,0,0,0,0,0,255,255,255,255,255,\n 255,239,255,239,15,255,3,0,0,0,0,255,255,255,255,255,243,255,255,255,255,255,\n 255,191,255,3,0,255,255,255,255,255,255,127,0,255,227,255,255,255,255,255,63,\n 255,1,255,255,255,255,255,231,0,0,0,0,0,222,111,4,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,\n 128,255,31,0,255,255,63,63,255,255,255,255,63,63,255,170,255,255,255,63,255,\n 255,255,255,255,255,223,95,220,31,207,15,255,31,220,31,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,2,128,0,0,255,31,0,0,0,0,0,0,0,0,0,0,0,0,132,252,47,62,80,189,255,243,\n 224,67,0,0,255,255,255,255,255,1,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,255,255,255,255,255,255,3,0,\n 0,255,255,255,255,255,127,255,255,255,255,255,127,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,31,120,12,0,255,255,255,255,191,32,255,\n 255,255,255,255,255,255,128,0,0,255,255,127,0,127,127,127,127,127,127,127,127,\n 255,255,255,255,0,0,0,0,0,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,224,0,0,0,254,3,62,31,254,255,255,255,255,255,255,255,255,255,127,224,254,\n 255,255,255,255,255,255,255,255,255,255,247,224,255,255,255,255,255,254,255,\n 255,255,255,255,255,255,255,255,255,127,0,0,255,255,255,255,0,0,0,0,0,0,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,\n 31,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,31,0,0,\n 0,0,0,0,0,0,255,255,255,255,255,63,255,31,255,255,255,15,0,0,255,255,255,255,\n 255,127,240,143,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,\n 0,128,255,252,255,255,255,255,255,255,255,255,255,255,255,255,249,255,255,255,\n 255,255,255,252,7,0,0,0,0,224,255,191,255,255,255,255,0,0,0,255,255,255,255,\n 255,255,15,0,255,255,255,255,255,255,255,255,47,0,255,3,0,0,252,232,255,255,\n 255,255,255,7,255,255,255,255,7,0,255,255,255,31,255,255,255,255,255,255,247,\n 255,0,128,255,3,255,255,255,127,255,255,255,255,255,255,127,0,255,63,255,3,\n 255,255,127,252,255,255,255,255,255,255,255,127,5,0,0,56,255,255,60,0,126,126,\n 126,0,127,127,255,255,255,255,255,247,255,3,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,7,255,3,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,15,0,255,255,127,248,255,255,255,255,\n 255,\n 15,255,255,255,255,255,255,255,255,255,255,255,255,255,63,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,3,0,0,0,0,127,0,248,224,255,253,127,95,219,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,3,0,0,0,248,255,255,255,\n 255,255,255,255,255,255,255,255,255,63,0,0,255,255,255,255,255,255,255,255,\n 252,255,255,255,255,255,255,0,0,0,0,0,255,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,31,0,0,255,3,\n 254,255,255,7,254,255,255,7,192,255,255,255,255,255,255,255,255,255,255,127,\n 252,252,252,28,0,0,0,0,255,239,255,255,127,255,255,183,255,63,255,63,0,0,0,0,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,7,0,0,0,0,0,0,0,0,\n 255,255,255,255,255,255,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,255,255,255,31,255,255,255,255,255,255,1,0,0,0,0,\n 0,255,255,255,255,0,224,255,255,255,7,255,255,255,255,255,7,255,255,255,63,\n 255,255,255,255,15,255,62,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,63,255,3,255,255,255,255,15,255,255,255,\n 255,15,255,255,255,255,255,0,255,255,255,255,255,255,15,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,255,255,255,255,255,255,127,0,255,255,63,0,255,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,63,253,255,255,255,255,191,145,255,255,63,0,255,255,\n 127,0,255,255,255,127,0,0,0,0,0,0,0,0,255,255,55,0,255,255,63,0,255,255,255,3,\n 0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,192,0,0,0,0,0,0,0,0,111,240,239,\n 254,255,255,63,0,0,0,0,0,255,255,255,31,255,255,255,31,0,0,0,0,255,254,255,\n 255,31,0,0,0,255,255,255,255,255,255,63,0,255,255,63,0,255,255,7,0,255,255,3,\n 0,0,0,0,0,0,0,0,0,0,0,0,\n 0,255,255,255,255,255,255,255,255,255,1,0,0,0,0,0,0,255,255,255,255,255,255,7,\n 0,255,255,255,255,255,255,7,0,255,255,255,255,255,0,255,3,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,\n 255,27,3,0,0,0,0,0,0,0,0,0,255,255,255,31,128,0,255,255,63,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,255,255,31,0,0,0,255,255,127,0,255,255,255,255,255,255,255,255,63,0,0,\n 0,192,255,0,0,252,255,255,255,255,255,255,1,0,0,255,255,255,1,255,3,255,255,\n 255,255,255,255,199,255,240,0,255,255,255,255,71,0,255,255,255,255,255,255,\n 255,255,30,192,255,23,0,0,0,0,255,255,251,255,255,255,159,64,0,0,0,0,0,0,0,0,\n 127,189,255,191,255,1,255,255,255,255,255,255,255,1,255,3,239,159,249,255,255,\n 253,237,227,159,25,129,224,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,255,255,255,255,255,255,255,255,187,7,255,131,3,0,0,0,255,255,255,255,255,\n 255,255,255,179,0,255,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,\n 255,255,255,63,127,0,0,0,63,0,0,0,0,255,255,255,255,255,255,255,127,17,0,255,\n 3,0,0,0,0,255,255,255,255,255,255,63,1,255,3,0,0,0,0,0,0,255,255,255,231,255,\n 7,255,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,\n 255,255,1,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,3,0,128,\n 127,242,111,255,255,255,191,153,7,0,255,3,0,0,0,0,0,0,0,0,255,252,255,255,255,\n 255,255,252,26,0,0,0,255,255,255,255,255,255,231,127,0,0,255,255,255,255,255,\n 255,255,255,255,32,0,0,0,0,255,255,255,255,255,255,255,1,255,253,255,255,255,\n 255,127,127,1,0,255,3,0,0,252,255,255,255,252,255,255,254,127,0,0,0,0,0,0,0,0,\n 0,127,251,255,255,255,255,127,180,203,0,255,3,191,253,255,255,255,127,123,1,\n 255,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,255,255,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,\n 0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,3,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,127,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,255,255,255,255,255,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,255,255,255,255,255,255,255,255,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,\n 0,255,255,255,255,255,255,255,1,255,255,255,127,255,3,0,0,0,0,0,0,0,0,0,0,0,0,\n 255,255,255,63,0,0,255,255,255,255,255,255,0,0,15,0,255,3,248,255,255,224,255,\n 255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,\n 255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,135,\n 255,255,255,255,255,255,255,128,255,255,0,0,0,0,0,0,0,0,11,0,3,0,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,0,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,63,0,0,0,0,0,\n 255,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,\n 127,0,0,0,0,0,0,7,0,240,0,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,15,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,7,255,31,255,1,255,67,0,0,0,0,0,0,0,0,0,0,0,0,\n 255,255,255,255,255,255,255,255,255,255,223,255,255,255,255,255,255,255,255,\n 223,100,222,255,235,239,255,255,255,255,255,255,255,191,231,223,223,255,255,\n 255,123,95,252,253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,63,255,255,255,253,255,255,247,255,255,255,\n 247,255,255,223,255,255,255,223,255,255,127,255,255,255,127,255,255,255,253,\n 255,255,255,253,255,255,247,207,255,255,255,255,255,255,127,255,255,249,219,7,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,31,\n 128,63,255,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,15,255,\n 3,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,31,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,143,8,\n 255,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,255,255,255,150,254,247,10,\n 132,234,150,170,150,247,247,94,255,251,255,15,238,251,255,15,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,255,255,255,3,255,255,255,3,255,255,255,3,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,3\n]);\n\n// size: 1568 bytes (compressed to ~1380 bytes after binaryen)\n// @ts-ignore: decorator\n@lazy @inline const CASED = memory.data([\n 18,19,20,21,22,23,16,16,16,16,16,16,16,16,16,16,\n 24,16,16,25,16,16,16,16,16,16,16,16,26,27,17,28,\n 29,30,16,16,31,16,16,16,16,16,16,16,32,33,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,34,35,16,16,16,36,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,37,16,16,16,38,\n 16,16,16,16,39,16,16,16,16,16,16,16,40,16,16,16,\n 16,16,16,16,16,16,16,16,41,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,42,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,43,44,45,46,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,47,16,16,16,16,16,16,\n 16,48,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 0,0,0,0,0,0,0,0,254,255,255,7,254,255,255,7,0,0,0,0,0,4,32,4,\n 255,255,127,255,255,255,127,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,247,240,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,239,255,255,255,255,1,3,0,0,0,31,0,0,0,\n 0,0,0,0,0,0,0,0,32,0,0,0,0,0,207,188,64,215,255,255,251,255,255,255,\n 255,255,255,255,255,255,191,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 3,252,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,255,\n 255,255,127,0,255,255,255,255,255,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,\n 191,32,255,255,255,255,255,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,255,255,255,255,255,255,255,255,255,255,63,63,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,255,1,255,255,255,255,255,231,0,0,0,0,0,0,0,0,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 0,0,0,0,0,0,0,0,255,255,63,63,255,255,255,255,63,63,255,170,255,255,255,63,\n 255,255,255,255,255,255,223,95,220,31,207,15,255,31,220,31,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,2,128,0,0,255,31,0,0,0,0,0,0,0,0,0,0,0,0,\n 132,252,47,62,80,189,31,242,224,67,0,0,255,255,255,255,24,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,192,255,255,255,255,255,255,3,0,0,255,255,255,255,255,127,255,255,\n 255,255,255,127,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,31,120,12,0,\n 255,255,255,255,191,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,63,0,0,\n 255,255,255,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,255,255,255,\n 255,255,255,255,255,255,255,255,255,120,255,255,255,255,255,255,252,7,0,0,0,0,96,7,\n 0,0,0,0,0,0,255,255,255,255,255,247,255,1,255,255,255,255,255,255,255,255,255,255,\n 0,0,0,0,0,0,0,0,127,0,248,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,255,255,7,\n 254,255,255,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,255,255,\n 255,255,15,255,255,255,255,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 255,255,255,255,255,255,7,0,255,255,255,255,255,255,7,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,0,0,0,0,\n 0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,223,255,255,255,255,255,\n 255,255,255,223,100,222,255,235,239,255,255,255,255,255,255,255,191,231,223,223,255,255,255,123,\n 95,252,253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,63,255,255,255,\n 253,255,255,247,255,255,255,247,255,255,223,255,255,255,223,255,255,127,255,255,255,127,255,255,\n 255,253,255,255,255,253,255,255,247,15,0,0,0,0,0,0,255,255,255,255,255,255,255,255,\n 15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,255,255,255,3,255,255,255,3,255,255,255,3,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0\n]);\n\n// size: 2976 bytes (compressed to ~2050 bytes after binaryen)\n// @ts-ignore: decorator\n@lazy @inline const CASE_IGNORABLES = memory.data([\n 18,16,19,20,21,22,23,24,25,26,27,28,29,30,31,32,\n 33,16,16,34,16,16,16,35,36,37,38,39,40,41,16,42,\n 43,16,16,16,16,16,16,16,16,16,16,16,44,45,46,16,\n 47,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 48,16,16,16,49,16,50,51,52,53,54,55,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,56,16,16,57,58,\n 16,59,60,61,16,16,16,16,16,16,62,16,16,63,64,65,\n 66,67,68,69,70,71,72,73,74,75,76,16,77,78,79,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,80,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,81,82,16,16,16,83,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,84,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,85,86,16,16,16,16,16,16,16,87,16,16,16,16,16,\n 88,89,90,16,16,16,16,16,91,92,16,16,16,16,16,16,\n 16,16,16,93,16,16,16,16,16,16,16,16,16,16,16,16,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 0,0,0,0,128,64,0,4,0,0,0,64,1,0,0,0,0,0,0,0,0,161,144,1,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,48,4,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,3,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,0,0,0,0,\n 0,0,254,255,255,255,255,191,182,0,0,0,0,0,16,0,63,0,255,23,0,0,0,0,\n 1,248,255,255,0,0,1,0,0,0,0,0,0,0,0,0,0,0,192,191,255,61,0,0,\n 0,128,2,0,0,0,255,255,255,7,0,0,0,0,0,0,0,0,0,0,192,255,1,0,\n 0,0,0,0,0,248,63,36,0,0,192,255,255,63,0,0,0,0,0,14,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,248,255,255,255,255,255,7,0,0,0,0,0,0,20,\n 254,33,254,0,12,0,2,0,2,0,0,0,0,0,0,16,30,32,0,0,12,0,0,64,\n 6,0,0,0,0,0,0,16,134,57,2,0,0,0,35,0,6,0,0,0,0,0,0,16,\n 190,33,0,0,12,0,0,252,2,0,0,0,0,0,0,144,30,32,96,0,12,0,0,0,\n 4,0,0,0,0,0,0,0,1,32,0,0,0,0,0,0,17,0,0,0,0,0,0,192,\n 193,61,96,0,12,0,0,0,2,0,0,0,0,0,0,144,64,48,0,0,12,0,0,0,\n 3,0,0,0,0,0,0,24,30,32,0,0,12,0,0,0,2,0,0,0,0,0,0,0,\n 0,4,92,0,0,0,0,0,0,0,0,0,0,0,242,7,192,127,0,0,0,0,0,0,\n 0,0,0,0,0,0,242,31,64,63,0,0,0,0,0,0,0,0,0,3,0,0,160,2,\n 0,0,0,0,0,0,254,127,223,224,255,254,255,255,255,31,64,0,0,0,0,0,0,0,\n 0,0,0,0,0,224,253,102,0,0,0,195,1,0,30,0,100,32,0,32,0,0,0,0,\n 0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,224,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,0,0,28,0,\n 0,0,12,0,0,0,12,0,0,0,0,0,0,0,176,63,64,254,143,32,0,0,0,0,\n 0,120,0,0,0,0,0,0,8,0,0,0,0,0,0,0,96,0,0,0,0,2,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,135,1,4,14,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,9,0,0,0,0,\n 0,0,64,127,229,31,248,159,0,0,0,0,128,0,255,255,1,0,0,0,0,0,0,0,\n 15,0,0,0,0,0,208,23,4,0,0,0,0,248,15,0,3,0,0,0,60,59,0,0,\n 0,0,0,0,64,163,3,0,0,0,0,0,0,240,207,0,0,0,0,0,0,0,0,63,\n 0,0,0,0,0,0,0,0,0,0,247,255,253,33,16,3,0,0,0,0,0,240,255,255,\n 255,255,255,255,255,7,0,1,0,0,0,248,255,255,255,255,255,255,255,255,255,255,255,251,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,\n 3,224,0,224,0,224,0,96,0,248,0,3,144,124,0,0,0,0,0,0,223,255,2,128,\n 0,0,255,31,0,0,0,0,0,0,255,255,255,255,1,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,0,0,0,0,0,0,128,3,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,128,0,128,0,0,0,0,0,0,0,0,\n 0,0,0,0,255,255,255,255,0,0,0,0,0,128,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,0,0,0,60,62,8,\n 0,0,0,0,0,0,0,0,0,0,0,126,0,0,0,0,0,0,0,0,0,0,0,112,\n 0,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,16,0,0,0,0,0,0,\n 0,0,0,0,0,128,247,191,0,0,0,240,0,0,0,0,0,0,0,0,0,0,3,0,\n 255,255,255,255,3,0,0,0,0,0,0,0,0,0,1,0,0,7,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,3,68,8,0,0,96,16,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,48,0,0,0,255,255,3,128,0,0,0,0,192,63,0,0,\n 128,255,3,0,0,0,0,0,7,0,0,0,0,0,200,51,0,128,0,0,96,0,0,0,\n 0,0,0,0,0,126,102,0,8,16,0,0,0,0,1,16,0,0,0,0,0,0,157,193,\n 2,0,0,32,0,48,88,0,0,0,0,0,0,0,0,0,0,0,0,248,0,14,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,32,33,0,0,0,0,0,64,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,255,3,0,0,0,0,0,0,0,\n 255,255,8,0,255,255,0,0,0,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,128,128,64,0,4,0,0,0,64,1,0,0,0,0,0,1,0,\n 0,0,0,192,0,0,0,0,0,0,0,0,8,0,0,14,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,7,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,240,0,0,0,0,0,135,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,0,\n 0,0,0,0,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 192,255,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 2,0,0,0,0,0,0,255,127,0,0,0,0,0,0,128,3,0,0,0,0,0,120,38,\n 0,32,0,0,0,0,0,0,7,0,0,0,128,239,31,0,0,0,0,0,0,0,8,0,\n 3,0,0,0,0,0,192,127,0,158,0,0,0,0,0,0,0,0,0,0,0,128,211,64,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,248,7,0,0,\n 3,0,0,0,0,0,0,24,1,0,0,0,192,31,31,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,92,0,0,64,0,0,0,0,\n 0,0,0,0,0,0,248,133,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,176,1,0,0,48,0,0,0,0,\n 0,0,0,0,0,0,248,167,1,0,0,0,0,0,0,0,0,0,0,0,0,40,191,0,\n 0,0,0,0,0,0,0,0,0,0,0,224,188,15,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,6,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,88,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,240,12,1,0,0,0,254,7,0,0,0,0,248,121,128,0,126,14,0,0,0,0,\n 0,252,127,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,191,\n 0,0,0,0,0,0,0,0,0,0,252,255,255,252,109,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,126,180,191,0,0,0,0,0,0,0,0,0,163,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,255,1,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,31,0,0,0,0,0,0,0,127,0,15,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,128,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,27,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,15,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,3,248,255,\n 231,15,0,0,0,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 255,255,255,255,255,255,127,248,255,255,255,255,255,31,32,0,16,0,0,248,254,255,0,0,\n 0,0,0,0,0,0,0,0,127,255,255,249,219,7,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,63,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 240,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,248\n]);\n\n// @ts-ignore: decorator\n@lazy @inline const LOWER127 = memory.data([\n 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,\n 16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,\n 32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,\n 48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,\n 64,\n 97,98,99,100,101,102,103,104,105,106,107,108,109,\n 110,111,112,113,114,115,116,117,118,119,120,121,122,\n 91,92,93,94,95,96,\n 97,98,99,100,101,102,103,104,105,106,107,108,109,\n 110,111,112,113,114,115,116,117,118,119,120,121,122,\n 123,124,125,126,127\n]);\n\n// @ts-ignore: decorator\n@lazy @inline const UPPER127 = memory.data([\n 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,\n 16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,\n 32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,\n 48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,\n 64,\n 65,66,67,68,69,70,71,72,73,74,75,76,77,\n 78,79,80,81,82,83,84,85,86,87,88,89,90,\n 91,92,93,94,95,96,\n 65,66,67,68,69,70,71,72,73,74,75,76,77,\n 78,79,80,81,82,83,84,85,86,87,88,89,90,\n 123,124,125,126,127\n]);\n\n// 23 * 8 = 184 bytes\n// @ts-ignore: decorator\n@lazy @inline const POWERS10 = memory.data([\n 1e00, 1e01, 1e02, 1e03, 1e04, 1e05, 1e06, 1e07, 1e08, 1e09,\n 1e10, 1e11, 1e12, 1e13, 1e14, 1e15, 1e16, 1e17, 1e18, 1e19,\n 1e20, 1e21, 1e22\n]);\n\n// @ts-ignore: decorator\n@inline\nexport const enum CharCode {\n PERCENT = 0x25,\n PLUS = 0x2B,\n MINUS = 0x2D,\n DOT = 0x2E,\n _0 = 0x30,\n _1 = 0x31,\n _2 = 0x32,\n _3 = 0x33,\n _4 = 0x34,\n _5 = 0x35,\n _6 = 0x36,\n _7 = 0x37,\n _8 = 0x38,\n _9 = 0x39,\n A = 0x41,\n B = 0x42,\n E = 0x45,\n I = 0x49,\n N = 0x4E,\n O = 0x4F,\n X = 0x58,\n Z = 0x5A,\n a = 0x61,\n b = 0x62,\n e = 0x65,\n n = 0x6E,\n o = 0x6F,\n u = 0x75,\n x = 0x78,\n z = 0x7A\n}\n\n// @ts-ignore: decorator\n@inline\nexport function isAscii(c: u32): bool {\n return !(c >> 7);\n}\n\n// @ts-ignore: decorator\n@inline\nexport function isLower8(c: u32): bool {\n return c - CharCode.a < 26;\n}\n\n// @ts-ignore: decorator\n@inline\nexport function isUpper8(c: u32): bool {\n return c - CharCode.A < 26;\n}\n\nexport function isSpace(c: u32): bool {\n if (c < 0x1680) { // < (1)\n // , , , , , and \n // (c == 0x20 || c == 0xA0) was optimized to (c | 0x80) == 0xA0\n return ((c | 0x80) == 0xA0) || (c - 0x09 <= 0x0D - 0x09);\n }\n if (c - 0x2000 <= 0x200A - 0x2000) return true;\n switch (c) {\n case 0x1680: // (1)\n case 0x2028: // (2)\n case 0x2029: // \n case 0x202F: // \n case 0x205F: // \n case 0x3000: // \n case 0xFEFF: return true; // \n }\n return false;\n}\n\nexport function isAlpha(c: u32): bool {\n if (isAscii(c)) return (c | 32) - CharCode.a < 26;\n if (c < 0x20000) {\n // @ts-ignore: cast\n return stagedBinaryLookup(ALPHA_TABLE, c);\n }\n return c < 0x2FFFE;\n}\n\n// @ts-ignore: decorator\n@inline\nexport function isCased(c: u32): bool {\n // @ts-ignore: cast\n return c < 0x1F18A && stagedBinaryLookup(CASED, c);\n}\n\n// @ts-ignore: decorator\n@inline\nexport function isCaseIgnorable(c: u32): bool {\n // @ts-ignore: cast\n return c < 0xE01F0 && stagedBinaryLookup(CASE_IGNORABLES, c);\n}\n\n// @ts-ignore: decorator\n@inline\nexport function isFinalSigma(buffer: usize, index: isize, len: isize): bool {\n const lookaheadLimit = 30; // max lookahead limit\n var found = false;\n var pos = index;\n var minPos = max(0, pos - lookaheadLimit);\n while (pos > minPos) {\n let c = codePointBefore(buffer, pos);\n if (!isCaseIgnorable(c)) {\n if (isCased(c)) {\n found = true;\n } else {\n return false;\n }\n }\n pos -= isize(c >= 0x10000) + 1;\n }\n if (!found) return false;\n pos = index + 1;\n var maxPos = min(pos + lookaheadLimit, len);\n while (pos < maxPos) {\n let c = load(buffer + (pos << 1));\n if (u32((c & 0xFC00) == 0xD800) & u32(pos + 1 != len)) {\n let c1 = load(buffer + (pos << 1), 2);\n if ((c1 & 0xFC00) == 0xDC00) {\n c = (c - 0xD800 << 10) + (c1 - 0xDC00) + 0x10000;\n }\n }\n if (!isCaseIgnorable(c)) {\n return !isCased(c);\n }\n pos += isize(c >= 0x10000) + 1;\n }\n return true;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction codePointBefore(buffer: usize, index: isize): i32 {\n if (index <= 0) return -1;\n var c = load(buffer + (index - 1 << 1));\n if (u32((c & 0xFC00) == 0xDC00) & u32(index - 2 >= 0)) {\n let c1 = load(buffer + (index - 2 << 1));\n if ((c1 & 0xFC00) == 0xD800) {\n return ((c1 & 0x3FF) << 10) + (c & 0x3FF) + 0x10000;\n }\n }\n return (c & 0xF800) == 0xD800 ? 0xFFFD : c;\n}\n\n// Search routine for two-staged lookup tables\nfunction stagedBinaryLookup(table: usize, c: u32): bool {\n return ((load(table + (load(table + (c >>> 8)) << 5) + ((c & 255) >> 3)) >>> (c & 7)) & 1);\n}\n\nexport function compareImpl(str1: string, index1: usize, str2: string, index2: usize, len: usize): i32 {\n var ptr1 = changetype(str1) + (index1 << 1);\n var ptr2 = changetype(str2) + (index2 << 1);\n if (ASC_SHRINK_LEVEL < 2) {\n if (len >= 4 && !((ptr1 & 7) | (ptr2 & 7))) {\n do {\n if (load(ptr1) != load(ptr2)) break;\n ptr1 += 8;\n ptr2 += 8;\n len -= 4;\n } while (len >= 4);\n }\n }\n while (len--) {\n let a = load(ptr1);\n let b = load(ptr2);\n if (a != b) return a - b;\n ptr1 += 2;\n ptr2 += 2;\n }\n return 0;\n}\n\n// @ts-ignore: decorator\n@inline\nexport function toLower8(c: u32): u32 {\n if (ASC_SHRINK_LEVEL > 0) {\n return c | u32(isUpper8(c)) << 5;\n } else {\n return load(LOWER127 + c);\n }\n}\n\n// @ts-ignore: decorator\n@inline\nexport function toUpper8(c: u32): u32 {\n if (ASC_SHRINK_LEVEL > 0) {\n return c & ~(u32(isLower8(c)) << 5);\n } else {\n return load(UPPER127 + c);\n }\n}\n\n/** Parses a string to an integer (usually), using the specified radix. */\nexport function strtol(str: string, radix: i32 = 0): T {\n var len = str.length;\n if (!len) {\n if (isFloat()) {\n // @ts-ignore: cast\n return NaN;\n } else {\n // @ts-ignore: cast\n return 0;\n }\n }\n\n var ptr = changetype(str) /* + HEAD -> offset */;\n var code = load(ptr);\n\n // trim white spaces\n while (isSpace(code)) {\n code = load(ptr += 2);\n --len;\n }\n // determine sign\n // @ts-ignore\n var sign: T = 1;\n if (code == CharCode.MINUS || code == CharCode.PLUS) {\n if (!--len) {\n if (isFloat()) {\n // @ts-ignore: cast\n return NaN;\n } else {\n // @ts-ignore: cast\n return 0;\n }\n }\n if (code == CharCode.MINUS) {\n // @ts-ignore: type\n sign = -1;\n }\n code = load(ptr += 2);\n }\n\n // See https://tc39.es/ecma262/#sec-parseint-string-radix\n if (radix) {\n if (radix < 2 || radix > 36) {\n if (isFloat()) {\n // @ts-ignore: cast\n return NaN;\n } else {\n // @ts-ignore: cast\n return 0;\n }\n }\n // handle case as parseInt(\"0xFF\", 16) by spec\n if (radix == 16) {\n if (\n len > 2 &&\n code == CharCode._0 &&\n (load(ptr, 2) | 32) == CharCode.x\n ) {\n ptr += 4; len -= 2;\n }\n }\n } else {\n // determine radix by literal prefix\n if (code == CharCode._0 && len > 2) {\n switch (load(ptr, 2) | 32) {\n case CharCode.b: {\n ptr += 4; len -= 2;\n radix = 2;\n break;\n }\n case CharCode.o: {\n ptr += 4; len -= 2;\n radix = 8;\n break;\n }\n case CharCode.x: {\n ptr += 4; len -= 2;\n radix = 16;\n break;\n }\n }\n }\n if (!radix) radix = 10;\n }\n\n // calculate value\n // @ts-ignore: type\n var num: T = 0;\n var initial = len - 1;\n while (len--) {\n code = load(ptr);\n if (code - CharCode._0 < 10) {\n code -= CharCode._0;\n } else if (code - CharCode.A <= (CharCode.Z - CharCode.A)) {\n code -= CharCode.A - 10;\n } else if (code - CharCode.a <= (CharCode.z - CharCode.a)) {\n code -= CharCode.a - 10;\n }\n if (code >= radix) {\n if (initial == len) {\n if (isFloat()) {\n // @ts-ignore: cast\n return NaN;\n } else {\n // @ts-ignore: cast\n return 0;\n }\n }\n break;\n }\n // @ts-ignore: type\n num = num * radix + code;\n ptr += 2;\n }\n // @ts-ignore: type\n return sign * num;\n}\n\nexport function strtod(str: string): f64 {\n var len = str.length;\n if (!len) return NaN;\n\n var ptr = changetype(str);\n var code = load(ptr);\n\n var sign = 1.0;\n // skip white spaces\n while (len && isSpace(code)) {\n code = load(ptr += 2);\n --len;\n }\n if (!len) return NaN;\n\n // try parse '-' or '+'\n if (code == CharCode.MINUS) {\n if (!--len) return NaN;\n code = load(ptr += 2);\n sign = -1;\n } else if (code == CharCode.PLUS) {\n if (!--len) return NaN;\n code = load(ptr += 2);\n }\n\n // try parse Infinity\n if (len >= 8 && code == CharCode.I) {\n if (\n load(ptr, 0) == 0x690066006E0049 && // ifnI\n load(ptr, 8) == 0x7900740069006E // ytin\n ) {\n return Infinity * sign;\n }\n return NaN;\n }\n // validate next symbol\n if (code != CharCode.DOT && (code - CharCode._0) >= 10) {\n return NaN;\n }\n var savedPtr = ptr;\n // skip zeros\n while (code == CharCode._0) {\n code = load(ptr += 2);\n --len;\n }\n if (len <= 0) return 0.0 * sign;\n const capacity = 19; // int(64 * 0.3010)\n var pointed = false;\n var consumed = 0;\n var position = 0;\n var x: u64 = 0;\n if (code == CharCode.DOT) {\n let noDigits = !(savedPtr - ptr);\n ptr += 2; --len;\n if (!len && noDigits) return NaN;\n for (pointed = true; (code = load(ptr)) == CharCode._0; --position, ptr += 2) --len;\n if (len <= 0) return 0.0 * sign;\n if (!position && noDigits && code - CharCode._0 >= 10) return NaN;\n }\n for (let digit = code - CharCode._0; digit < 10 || (code == CharCode.DOT && !pointed); digit = code - CharCode._0) {\n if (digit < 10) {\n x = consumed < capacity ? 10 * x + digit : x | u64(!!digit);\n ++consumed;\n } else {\n position = consumed;\n pointed = true;\n }\n if (!--len) break;\n code = load(ptr += 2);\n }\n\n if (!pointed) position = consumed;\n return copysign(scientific(x, position - min(capacity, consumed) + parseExp(ptr, len)), sign);\n}\n\nexport function strtob(str: string): bool {\n var size: usize = str.length << 1;\n var offset: usize = 0;\n if (size > 8) {\n // try trim end whitespaces first\n while (size && isSpace(load(changetype(str) + size - 2))) size -= 2;\n if (size > 8) {\n // trim start whitespaces\n while (offset < size && isSpace(load(changetype(str) + offset))) offset += 2;\n size -= offset;\n }\n }\n if (size != 8) return false;\n // \"true\" represents as \\00\\e\\00\\u\\00\\e\\00\\t (00 65 00 75 00 72 00 74)\n return load(changetype(str) + offset) == 0x0065_0075_0072_0074;\n}\n\nexport function joinBooleanArray(dataStart: usize, length: i32, separator: string): string {\n var lastIndex = length - 1;\n if (lastIndex < 0) return \"\";\n if (!lastIndex) return select(\"true\", \"false\", load(dataStart));\n\n var sepLen = separator.length;\n var valueLen = 5; // max possible length of element len(\"false\")\n var estLen = (valueLen + sepLen) * lastIndex + valueLen;\n var result = changetype(__new(estLen << 1, idof()));\n var offset = 0;\n var value: bool;\n for (let i = 0; i < lastIndex; ++i) {\n value = load(dataStart + i);\n valueLen = 4 + i32(!value);\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(select(\"true\", \"false\", value)),\n valueLen << 1\n );\n offset += valueLen;\n if (sepLen) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(separator),\n sepLen << 1\n );\n offset += sepLen;\n }\n }\n value = load(dataStart + lastIndex);\n valueLen = 4 + i32(!value);\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(select(\"true\", \"false\", value)),\n valueLen << 1\n );\n offset += valueLen;\n\n if (estLen > offset) return result.substring(0, offset);\n return result;\n}\n\nexport function joinIntegerArray(dataStart: usize, length: i32, separator: string): string {\n var lastIndex = length - 1;\n if (lastIndex < 0) return \"\";\n if (!lastIndex) {\n let value = load(dataStart);\n if (isSigned()) {\n if (sizeof() <= 4) {\n // @ts-ignore: type\n return changetype(itoa32(value, 10));\n } else {\n // @ts-ignore: type\n return changetype(itoa64(value, 10));\n }\n } else {\n if (sizeof() <= 4) {\n // @ts-ignore: type\n return changetype(utoa32(value, 10));\n } else {\n // @ts-ignore: type\n return changetype(utoa64(value, 10));\n }\n }\n }\n\n var sepLen = separator.length;\n const valueLen = (sizeof() <= 4 ? 10 : 20) + i32(isSigned());\n var estLen = (valueLen + sepLen) * lastIndex + valueLen;\n var result = changetype(__new(estLen << 1, idof()));\n var offset = 0;\n var value: T;\n for (let i = 0; i < lastIndex; ++i) {\n value = load(dataStart + (i << alignof()));\n // @ts-ignore: type\n offset += itoa_buffered(changetype(result) + (offset << 1), value);\n if (sepLen) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(separator),\n sepLen << 1\n );\n offset += sepLen;\n }\n }\n value = load(dataStart + (lastIndex << alignof()));\n // @ts-ignore: type\n offset += itoa_buffered(changetype(result) + (offset << 1), value);\n if (estLen > offset) return result.substring(0, offset);\n return result;\n}\n\nexport function joinFloatArray(dataStart: usize, length: i32, separator: string): string {\n var lastIndex = length - 1;\n if (lastIndex < 0) return \"\";\n if (!lastIndex) {\n return changetype(dtoa(\n // @ts-ignore: type\n load(dataStart))\n );\n }\n\n const valueLen = MAX_DOUBLE_LENGTH;\n var sepLen = separator.length;\n var estLen = (valueLen + sepLen) * lastIndex + valueLen;\n var result = changetype(__new(estLen << 1, idof()));\n var offset = 0;\n var value: T;\n for (let i = 0; i < lastIndex; ++i) {\n value = load(dataStart + (i << alignof()));\n // @ts-ignore: type\n offset += dtoa_buffered(changetype(result) + (offset << 1), value);\n if (sepLen) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(separator),\n sepLen << 1\n );\n offset += sepLen;\n }\n }\n value = load(dataStart + (lastIndex << alignof()));\n // @ts-ignore: type\n offset += dtoa_buffered(changetype(result) + (offset << 1), value);\n if (estLen > offset) return result.substring(0, offset);\n return result;\n}\n\nexport function joinStringArray(dataStart: usize, length: i32, separator: string): string {\n var lastIndex = length - 1;\n if (lastIndex < 0) return \"\";\n if (!lastIndex) {\n // @ts-ignore: type\n return load(dataStart) || \"\";\n }\n var estLen = 0;\n var value: string;\n for (let i = 0; i < length; ++i) {\n value = load(dataStart + (i << alignof()));\n if (changetype(value) != 0) estLen += value.length;\n }\n var offset = 0;\n var sepLen = separator.length;\n var result = changetype(__new((estLen + sepLen * lastIndex) << 1, idof()));\n for (let i = 0; i < lastIndex; ++i) {\n value = load(dataStart + (i << alignof()));\n if (changetype(value) != 0) {\n let valueLen = value.length;\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(value),\n valueLen << 1\n );\n offset += valueLen;\n }\n if (sepLen) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(separator),\n sepLen << 1\n );\n offset += sepLen;\n }\n }\n value = load(dataStart + (lastIndex << alignof()));\n if (changetype(value) != 0) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(value),\n value.length << 1\n );\n }\n return result;\n}\n\nexport function joinReferenceArray(dataStart: usize, length: i32, separator: string): string {\n var lastIndex = length - 1;\n if (lastIndex < 0) return \"\";\n var value: T;\n if (!lastIndex) {\n value = load(dataStart);\n // @ts-ignore: type\n return value != null ? value.toString() : \"\";\n }\n var result = \"\";\n var sepLen = separator.length;\n for (let i = 0; i < lastIndex; ++i) {\n value = load(dataStart + (i << alignof()));\n // @ts-ignore: type\n if (value != null) result += value.toString();\n if (sepLen) result += separator;\n }\n value = load(dataStart + (lastIndex << alignof()));\n // @ts-ignore: type\n if (value != null) result += value.toString();\n return result;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction scientific(significand: u64, exp: i32): f64 {\n if (!significand || exp < -342) return 0;\n if (exp > 308) return Infinity;\n // Try use fast path\n // Use fast path for string-to-double conversion if possible\n // see http://www.exploringbinary.com/fast-path-decimal-to-floating-point-conversion\n // Simple integer\n var significandf = significand;\n if (!exp) return significandf;\n if (exp > 22 && exp <= 22 + 15) {\n significandf *= pow10(exp - 22);\n exp = 22;\n }\n if (significand <= 9007199254740991 && abs(exp) <= 22) {\n if (exp > 0) return significandf * pow10(exp);\n return significandf / pow10(-exp);\n } else if (exp < 0) {\n return scaledown(significand, exp);\n } else {\n return scaleup(significand, exp);\n }\n}\n\n// Adopted from metallic lib:\n// https://github.com/jdh8/metallic/blob/master/src/stdlib/parse/scientific.h\n// @ts-ignore: decorator\n@inline\nfunction scaledown(significand: u64, exp: i32): f64 {\n const denom: u64 = 6103515625; // 1e14 * 0x1p-14\n const scale = reinterpret(0x3F06849B86A12B9B); // 1e-14 * 0x1p32\n\n var shift = clz(significand);\n significand <<= shift;\n shift = exp - shift;\n\n for (; exp <= -14; exp += 14) {\n let q = significand / denom;\n let r = significand % denom;\n let s = clz(q);\n significand = (q << s) + nearest(scale * (r << (s - 18)));\n shift -= s;\n }\n var b = ipow32(5, -exp);\n var q = significand / b;\n var r = significand % b;\n var s = clz(q);\n significand = (q << s) + (reinterpret(reinterpret(r) + (s << 52)) / b);\n shift -= s;\n\n return NativeMath.scalbn(significand, shift);\n}\n\n// Adopted from metallic lib:\n// https://github.com/jdh8/metallic/blob/master/src/stdlib/parse/scientific.h\n// @ts-ignore: decorator\n@inline\nfunction scaleup(significand: u64, exp: i32): f64 {\n const coeff: u32 = 1220703125; // 1e13 * 0x1p-13;\n var shift = ctz(significand);\n significand >>= shift;\n shift += exp;\n\n __fixmulShift = shift;\n for (; exp >= 13; exp -= 13) {\n significand = fixmul(significand, coeff);\n }\n significand = fixmul(significand, ipow32(5, exp));\n shift = __fixmulShift;\n return NativeMath.scalbn(significand, shift);\n}\n\n// Adopted from metallic lib:\n// https://github.com/jdh8/metallic/blob/master/src/stdlib/parse/scientific.h\n// @ts-ignore: decorator\n@inline\nfunction parseExp(ptr: usize, len: i32): i32 {\n var sign = 1, magnitude = 0;\n var code = load(ptr);\n // check code is 'e' or 'E'\n if ((code | 32) != CharCode.e) return 0;\n\n if (!--len) return 0;\n code = load(ptr += 2);\n if (code == CharCode.MINUS) {\n if (!--len) return 0;\n code = load(ptr += 2);\n sign = -1;\n } else if (code == CharCode.PLUS) {\n if (!--len) return 0;\n code = load(ptr += 2);\n }\n // skip zeros\n while (code == CharCode._0) {\n if (!--len) return 0;\n code = load(ptr += 2);\n }\n for (let digit: u32 = code - CharCode._0; len && digit < 10; digit = code - CharCode._0) {\n if (magnitude >= 3200) return sign * 3200;\n magnitude = 10 * magnitude + digit;\n code = load(ptr += 2);\n --len;\n }\n return sign * magnitude;\n}\n\n// @ts-ignore: decorator\n@lazy var __fixmulShift: u64 = 0;\n\n// Adopted from metallic lib:\n// https://github.com/jdh8/metallic/blob/master/src/stdlib/parse/scientific.h\n// @ts-ignore: decorator\n@inline\nfunction fixmul(a: u64, b: u32): u64 {\n var low = (a & 0xFFFFFFFF) * b;\n var high = (a >> 32) * b + (low >> 32);\n var overflow = (high >> 32);\n var space = clz(overflow);\n var revspace: u64 = 32 - space;\n __fixmulShift += revspace;\n return (high << space | (low & 0xFFFFFFFF) >> revspace) + (low << space >> 31 & 1);\n}\n\n// @ts-ignore: decorator\n@inline\nfunction pow10(n: i32): f64 {\n // argument `n` should bounds in [0, 22] range\n return load(POWERS10 + (n << alignof()));\n}\n","import { Math as JSMath } from \"./bindings/dom\";\nexport { JSMath };\n\nimport {\n pow_lut, exp_lut, exp2_lut, log_lut, log2_lut,\n powf_lut, expf_lut, exp2f_lut, logf_lut, log2f_lut\n} from \"./util/math\";\n\nimport {\n abs as builtin_abs,\n ceil as builtin_ceil,\n clz as builtin_clz,\n copysign as builtin_copysign,\n floor as builtin_floor,\n max as builtin_max,\n min as builtin_min,\n sqrt as builtin_sqrt,\n trunc as builtin_trunc\n} from \"./builtins\";\n\n// SUN COPYRIGHT NOTICE\n//\n// Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.\n// Developed at SunPro, a Sun Microsystems, Inc. business.\n// Permission to use, copy, modify, and distribute this software\n// is freely granted, provided that this notice is preserved.\n//\n// Applies to all functions marked with a comment referring here.\n\n/** @internal */\n// @ts-ignore: decorator\n@lazy var rempio2_y0: f64, rempio2_y1: f64, res128_hi: u64;\n\n/** @internal */\n// @ts-ignore: decorator\n@lazy @inline const PIO2_TABLE = memory.data([\n 0x00000000A2F9836E, 0x4E441529FC2757D1, 0xF534DDC0DB629599, 0x3C439041FE5163AB,\n 0xDEBBC561B7246E3A, 0x424DD2E006492EEA, 0x09D1921CFE1DEB1C, 0xB129A73EE88235F5,\n 0x2EBB4484E99C7026, 0xB45F7E413991D639, 0x835339F49C845F8B, 0xBDF9283B1FF897FF,\n 0xDE05980FEF2F118B, 0x5A0A6D1F6D367ECF, 0x27CB09B74F463F66, 0x9E5FEA2D7527BAC7,\n 0xEBE5F17B3D0739F7, 0x8A5292EA6BFB5FB1, 0x1F8D5D0856033046, 0xFC7B6BABF0CFBC20,\n 0x9AF4361DA9E39161, 0x5EE61B086599855F, 0x14A068408DFFD880, 0x4D73273106061557\n]);\n\n/** @internal */\nfunction R(z: f64): f64 { // Rational approximation of (asin(x)-x)/x^3\n const // see: musl/src/math/asin.c and SUN COPYRIGHT NOTICE above\n pS0 = reinterpret(0x3FC5555555555555), // 1.66666666666666657415e-01\n pS1 = reinterpret(0xBFD4D61203EB6F7D), // -3.25565818622400915405e-01\n pS2 = reinterpret(0x3FC9C1550E884455), // 2.01212532134862925881e-01\n pS3 = reinterpret(0xBFA48228B5688F3B), // -4.00555345006794114027e-02\n pS4 = reinterpret(0x3F49EFE07501B288), // 7.91534994289814532176e-04\n pS5 = reinterpret(0x3F023DE10DFDF709), // 3.47933107596021167570e-05\n qS1 = reinterpret(0xC0033A271C8A2D4B), // -2.40339491173441421878e+00\n qS2 = reinterpret(0x40002AE59C598AC8), // 2.02094576023350569471e+00\n qS3 = reinterpret(0xBFE6066C1B8D0159), // -6.88283971605453293030e-01\n qS4 = reinterpret(0x3FB3B8C5B12E9282); // 7.70381505559019352791e-02\n\n var p = z * (pS0 + z * (pS1 + z * (pS2 + z * (pS3 + z * (pS4 + z * pS5)))));\n var q = 1.0 + z * (qS1 + z * (qS2 + z * (qS3 + z * qS4)));\n return p / q;\n}\n\n/** @internal */\n// @ts-ignore: decorator\n@inline\nfunction expo2(x: f64, sign: f64): f64 { // exp(x)/2 for x >= log(DBL_MAX)\n const // see: musl/src/math/__expo2.c\n k = 2043,\n kln2 = reinterpret(0x40962066151ADD8B); // 0x1.62066151add8bp+10\n var scale = reinterpret(((0x3FF + k / 2) << 20) << 32);\n // in directed rounding correct sign before rounding or overflow is important\n return NativeMath.exp(x - kln2) * (sign * scale) * scale;\n}\n\n/** @internal */\n/* Helper function to eventually get bits of π/2 * |x|\n *\n * y = π/4 * (frac << clz(frac) >> 11)\n * return clz(frac)\n *\n * Right shift 11 bits to make upper half fit in `double`\n */\n// @ts-ignore: decorator\n@inline\nfunction pio2_right(q0: u64, q1: u64): u64 { // see: jdh8/metallic/blob/master/src/math/double/rem_pio2.c\n // Bits of π/4\n const p0: u64 = 0xC4C6628B80DC1CD1;\n const p1: u64 = 0xC90FDAA22168C234;\n\n const Ox1p_64 = reinterpret(0x3BF0000000000000); // 0x1p-64\n const Ox1p_75 = reinterpret(0x3B40000000000000); // 0x1p-75\n\n var shift = clz(q1);\n\n q1 = q1 << shift | q0 >> (64 - shift);\n q0 <<= shift;\n\n var lo = umuldi(p1, q1);\n var hi = res128_hi;\n\n var ahi = hi >> 11;\n var alo = lo >> 11 | hi << 53;\n var blo = (Ox1p_75 * p0 * q1 + Ox1p_75 * p1 * q0);\n\n rempio2_y0 = (ahi + u64(lo < blo));\n rempio2_y1 = Ox1p_64 * (alo + blo);\n\n return shift;\n}\n\n/** @internal */\n// @ts-ignore: decorator\n@inline\nfunction umuldi(u: u64, v: u64): u64 {\n var u1: u64 , v1: u64, w0: u64, w1: u64, t: u64;\n\n u1 = u & 0xFFFFFFFF;\n v1 = v & 0xFFFFFFFF;\n\n u >>= 32;\n v >>= 32;\n\n t = u1 * v1;\n w0 = t & 0xFFFFFFFF;\n t = u * v1 + (t >> 32);\n w1 = t >> 32;\n t = u1 * v + (t & 0xFFFFFFFF);\n\n res128_hi = u * v + w1 + (t >> 32);\n return (t << 32) + w0;\n}\n\n/** @internal */\nfunction pio2_large_quot(x: f64, u: i64): i32 { // see: jdh8/metallic/blob/master/src/math/double/rem_pio2.c\n var magnitude = u & 0x7FFFFFFFFFFFFFFF;\n var offset = (magnitude >> 52) - 1045;\n var shift = offset & 63;\n var tblPtr = PIO2_TABLE + ((offset >> 6) << 3);\n var s0: u64, s1: u64, s2: u64;\n\n var b0 = load(tblPtr, 0 << 3);\n var b1 = load(tblPtr, 1 << 3);\n var b2 = load(tblPtr, 2 << 3);\n\n // Get 192 bits of 0x1p-31 / π with `offset` bits skipped\n if (shift) {\n let rshift = 64 - shift;\n let b3 = load(tblPtr, 3 << 3);\n s0 = b1 >> rshift | b0 << shift;\n s1 = b2 >> rshift | b1 << shift;\n s2 = b3 >> rshift | b2 << shift;\n } else {\n s0 = b0;\n s1 = b1;\n s2 = b2;\n }\n\n var significand = (u & 0x000FFFFFFFFFFFFF) | 0x0010000000000000;\n\n // First 128 bits of fractional part of x/(2π)\n var blo = umuldi(s1, significand);\n var bhi = res128_hi;\n\n var ahi = s0 * significand;\n var clo = (s2 >> 32) * (significand >> 32);\n var plo = blo + clo;\n var phi = ahi + bhi + u64(plo < clo);\n\n // r: u128 = p << 2\n var rlo = plo << 2;\n var rhi = phi << 2 | plo >> 62;\n\n // s: i128 = r >> 127\n var slo = rhi >> 63;\n var shi = slo >> 1;\n var q = (phi >> 62) - slo;\n\n var shifter = 0x3CB0000000000000 - (pio2_right(rlo ^ slo, rhi ^ shi) << 52);\n var signbit = (u ^ rhi) & 0x8000000000000000;\n var coeff = reinterpret(shifter | signbit);\n\n rempio2_y0 *= coeff;\n rempio2_y1 *= coeff;\n\n return q;\n}\n\n/** @internal */\n// @ts-ignore: decorator\n@inline\nfunction rempio2(x: f64, u: u64, sign: i32): i32 {\n const\n pio2_1 = reinterpret(0x3FF921FB54400000), // 1.57079632673412561417e+00\n pio2_1t = reinterpret(0x3DD0B4611A626331), // 6.07710050650619224932e-11\n pio2_2 = reinterpret(0x3DD0B4611A600000), // 6.07710050630396597660e-11\n pio2_2t = reinterpret(0x3BA3198A2E037073), // 2.02226624879595063154e-21\n pio2_3 = reinterpret(0x3BA3198A2E000000), // 2.02226624871116645580e-21\n pio2_3t = reinterpret(0x397B839A252049C1), // 8.47842766036889956997e-32\n invpio2 = reinterpret(0x3FE45F306DC9C883); // 0.63661977236758134308\n\n var ix = (u >> 32) & 0x7FFFFFFF;\n\n if (ASC_SHRINK_LEVEL < 1) {\n if (ix < 0x4002D97C) { // |x| < 3pi/4, special case with n=+-1\n let q = 1, z: f64, y0: f64, y1: f64;\n if (!sign) {\n z = x - pio2_1;\n if (ix != 0x3FF921FB) { // 33+53 bit pi is good enough\n y0 = z - pio2_1t;\n y1 = (z - y0) - pio2_1t;\n } else { // near pi/2, use 33+33+53 bit pi\n z -= pio2_2;\n y0 = z - pio2_2t;\n y1 = (z - y0) - pio2_2t;\n }\n } else { // negative x\n z = x + pio2_1;\n if (ix != 0x3FF921FB) { // 33+53 bit pi is good enough\n y0 = z + pio2_1t;\n y1 = (z - y0) + pio2_1t;\n } else { // near pi/2, use 33+33+53 bit pi\n z += pio2_2;\n y0 = z + pio2_2t;\n y1 = (z - y0) + pio2_2t;\n }\n q = -1;\n }\n rempio2_y0 = y0;\n rempio2_y1 = y1;\n return q;\n }\n }\n\n if (ix < 0x413921FB) { // |x| ~< 2^20*pi/2 (1647099)\n // Use precise Cody Waite scheme\n let q = nearest(x * invpio2);\n let r = x - q * pio2_1;\n let w = q * pio2_1t; // 1st round good to 85 bit\n let j = ix >> 20;\n let y0 = r - w;\n let hi = (reinterpret(y0) >> 32);\n let i = j - ((hi >> 20) & 0x7FF);\n\n if (i > 16) { // 2nd iteration needed, good to 118\n let t = r;\n w = q * pio2_2;\n r = t - w;\n w = q * pio2_2t - ((t - r) - w);\n y0 = r - w;\n hi = (reinterpret(y0) >> 32);\n i = j - ((hi >> 20) & 0x7FF);\n if (i > 49) { // 3rd iteration need, 151 bits acc\n let t = r;\n w = q * pio2_3;\n r = t - w;\n w = q * pio2_3t - ((t - r) - w);\n y0 = r - w;\n }\n }\n let y1 = (r - y0) - w;\n rempio2_y0 = y0;\n rempio2_y1 = y1;\n return q;\n }\n var q = pio2_large_quot(x, u);\n return select(-q, q, sign);\n}\n\n/** @internal */\n// @ts-ignore: decorator\n@inline\nfunction sin_kern(x: f64, y: f64, iy: i32): f64 { // see: musl/tree/src/math/__sin.c\n const\n S1 = reinterpret(0xBFC5555555555549), // -1.66666666666666324348e-01\n S2 = reinterpret(0x3F8111111110F8A6), // 8.33333333332248946124e-03\n S3 = reinterpret(0xBF2A01A019C161D5), // -1.98412698298579493134e-04\n S4 = reinterpret(0x3EC71DE357B1FE7D), // 2.75573137070700676789e-06\n S5 = reinterpret(0xBE5AE5E68A2B9CEB), // -2.50507602534068634195e-08\n S6 = reinterpret(0x3DE5D93A5ACFD57C); // 1.58969099521155010221e-10\n\n var z = x * x;\n var w = z * z;\n var r = S2 + z * (S3 + z * S4) + z * w * (S5 + z * S6);\n var v = z * x;\n if (!iy) {\n return x + v * (S1 + z * r);\n } else {\n return x - ((z * (0.5 * y - v * r) - y) - v * S1);\n }\n}\n\n/** @internal */\n// @ts-ignore: decorator\n@inline\nfunction cos_kern(x: f64, y: f64): f64 { // see: musl/tree/src/math/__cos.c\n const\n C1 = reinterpret(0x3FA555555555554C), // 4.16666666666666019037e-02\n C2 = reinterpret(0xBF56C16C16C15177), // -1.38888888888741095749e-03\n C3 = reinterpret(0x3EFA01A019CB1590), // 2.48015872894767294178e-05\n C4 = reinterpret(0xBE927E4F809C52AD), // -2.75573143513906633035e-07\n C5 = reinterpret(0x3E21EE9EBDB4B1C4), // 2.08757232129817482790e-09\n C6 = reinterpret(0xBDA8FAE9BE8838D4); // -1.13596475577881948265e-11\n\n var z = x * x;\n var w = z * z;\n var r = z * (C1 + z * (C2 + z * C3)) + w * w * (C4 + z * (C5 + z * C6));\n var hz = 0.5 * z;\n w = 1.0 - hz;\n return w + (((1.0 - w) - hz) + (z * r - x * y));\n}\n\n/** @internal */\nfunction tan_kern(x: f64, y: f64, iy: i32): f64 { // see: src/lib/msun/src/k_tan.c\n const\n T0 = reinterpret(0x3FD5555555555563), // 3.33333333333334091986e-01\n T1 = reinterpret(0x3FC111111110FE7A), // 1.33333333333201242699e-01\n T2 = reinterpret(0x3FABA1BA1BB341FE), // 5.39682539762260521377e-02\n T3 = reinterpret(0x3F9664F48406D637), // 2.18694882948595424599e-02\n T4 = reinterpret(0x3F8226E3E96E8493), // 8.86323982359930005737e-03\n T5 = reinterpret(0x3F6D6D22C9560328), // 3.59207910759131235356e-03\n T6 = reinterpret(0x3F57DBC8FEE08315), // 1.45620945432529025516e-03\n T7 = reinterpret(0x3F4344D8F2F26501), // 5.88041240820264096874e-04\n T8 = reinterpret(0x3F3026F71A8D1068), // 2.46463134818469906812e-04\n T9 = reinterpret(0x3F147E88A03792A6), // 7.81794442939557092300e-05\n T10 = reinterpret(0x3F12B80F32F0A7E9), // 7.14072491382608190305e-05\n T11 = reinterpret(0xBEF375CBDB605373), // -1.85586374855275456654e-05\n T12 = reinterpret(0x3EFB2A7074BF7AD4); // 2.59073051863633712884e-05\n\n const\n one = reinterpret(0x3FF0000000000000), // 1.00000000000000000000e+00\n pio4 = reinterpret(0x3FE921FB54442D18), // 7.85398163397448278999e-01\n pio4lo = reinterpret(0x3C81A62633145C07); // 3.06161699786838301793e-17\n\n var z: f64, r: f64, v: f64, w: f64, s: f64;\n var hx = (reinterpret(x) >> 32); // high word of x\n var ix = hx & 0x7FFFFFFF; // high word of |x|\n var big = ix >= 0x3FE59428;\n if (big) { // |x| >= 0.6744\n if (hx < 0) { x = -x, y = -y; }\n z = pio4 - x;\n w = pio4lo - y;\n x = z + w;\n y = 0.0;\n }\n z = x * x;\n w = z * z;\n r = T1 + w * (T3 + w * (T5 + w * (T7 + w * (T9 + w * T11))));\n v = z * (T2 + w * (T4 + w * (T6 + w * (T8 + w * (T10 + w * T12)))));\n s = z * x;\n r = y + z * (s * (r + v) + y);\n r += T0 * s;\n w = x + r;\n if (big) {\n v = iy;\n return (1 - ((hx >> 30) & 2)) * (v - 2.0 * (x - (w * w / (w + v) - r)));\n }\n if (iy == 1) return w;\n var a: f64, t: f64;\n z = w;\n z = reinterpret(reinterpret(z) & 0xFFFFFFFF00000000);\n v = r - (z - x); // z + v = r + x\n t = a = -one / w; // a = -1.0 / w\n t = reinterpret(reinterpret(t) & 0xFFFFFFFF00000000);\n s = one + t * z;\n return t + a * (s + t * v);\n}\n\n/** @internal */\nfunction dtoi32(x: f64): i32 {\n if (ASC_SHRINK_LEVEL > 0) {\n const inv32 = 1.0 / 4294967296;\n return (x - 4294967296 * floor(x * inv32));\n } else {\n let result = 0;\n let u = reinterpret(x);\n let e = (u >> 52) & 0x7FF;\n if (e <= 1023 + 30) {\n result = x;\n } else if (e <= 1023 + 30 + 53) {\n let v = (u & ((1 << 52) - 1)) | (1 << 52);\n v = v << e - 1023 - 52 + 32;\n result = (v >> 32);\n result = select(-result, result, u < 0);\n }\n return result;\n }\n}\n\n// @ts-ignore: decorator\n@lazy var random_seeded = false;\n\n// @ts-ignore: decorator\n@lazy var random_state0_64: u64, random_state1_64: u64;\n\n// @ts-ignore: decorator\n@lazy var random_state0_32: u32, random_state1_32: u32;\n\nfunction murmurHash3(h: u64): u64 { // Force all bits of a hash block to avalanche\n h ^= h >> 33; // see: https://github.com/aappleby/smhasher\n h *= 0xFF51AFD7ED558CCD;\n h ^= h >> 33;\n h *= 0xC4CEB9FE1A85EC53;\n h ^= h >> 33;\n return h;\n}\n\nfunction splitMix32(h: u32): u32 {\n h += 0x6D2B79F5;\n h = (h ^ (h >> 15)) * (h | 1);\n h ^= h + (h ^ (h >> 7)) * (h | 61);\n return h ^ (h >> 14);\n}\n\nexport namespace NativeMath {\n\n // @ts-ignore: decorator\n @lazy\n export const E = reinterpret(0x4005BF0A8B145769); // 2.7182818284590452354\n\n // @ts-ignore: decorator\n @lazy\n export const LN2 = reinterpret(0x3FE62E42FEFA39EF); // 0.69314718055994530942\n\n // @ts-ignore: decorator\n @lazy\n export const LN10 = reinterpret(0x40026BB1BBB55516); // 2.30258509299404568402\n\n // @ts-ignore: decorator\n @lazy\n export const LOG2E = reinterpret(0x3FF71547652B82FE); // 1.4426950408889634074\n\n // @ts-ignore: decorator\n @lazy\n export const LOG10E = reinterpret(0x3FDBCB7B1526E50E); // 0.43429448190325182765\n\n // @ts-ignore: decorator\n @lazy\n export const PI = reinterpret(0x400921FB54442D18); // 3.14159265358979323846\n\n // @ts-ignore: decorator\n @lazy\n export const SQRT1_2 = reinterpret(0x3FE6A09E667F3BCD); // 0.70710678118654752440\n\n // @ts-ignore: decorator\n @lazy\n export const SQRT2 = reinterpret(0x3FF6A09E667F3BCD); // 1.41421356237309504880\n\n // @ts-ignore: decorator\n @lazy\n export var sincos_sin: f64 = 0;\n\n // @ts-ignore: decorator\n @lazy\n export var sincos_cos: f64 = 0;\n\n // @ts-ignore: decorator\n @inline export function abs(x: f64): f64 {\n return builtin_abs(x);\n }\n\n export function acos(x: f64): f64 { // see: musl/src/math/acos.c and SUN COPYRIGHT NOTICE above\n const\n pio2_hi = reinterpret(0x3FF921FB54442D18), // 1.57079632679489655800e+00\n pio2_lo = reinterpret(0x3C91A62633145C07), // 6.12323399573676603587e-17\n Ox1p_120f = reinterpret(0x03800000);\n\n var hx = (reinterpret(x) >> 32);\n var ix = hx & 0x7FFFFFFF;\n if (ix >= 0x3FF00000) {\n let lx = reinterpret(x);\n if ((ix - 0x3FF00000 | lx) == 0) {\n if (hx < 0) return 2 * pio2_hi + Ox1p_120f;\n return 0;\n }\n return 0 / (x - x);\n }\n if (ix < 0x3FE00000) {\n if (ix <= 0x3C600000) return pio2_hi + Ox1p_120f;\n return pio2_hi - (x - (pio2_lo - x * R(x * x)));\n }\n var s: f64, w: f64, z: f64;\n if (hx < 0) {\n // z = (1.0 + x) * 0.5;\n z = 0.5 + x * 0.5;\n s = builtin_sqrt(z);\n w = R(z) * s - pio2_lo;\n return 2 * (pio2_hi - (s + w));\n }\n // z = (1.0 - x) * 0.5;\n z = 0.5 - x * 0.5;\n s = builtin_sqrt(z);\n var df = reinterpret(reinterpret(s) & 0xFFFFFFFF00000000);\n var c = (z - df * df) / (s + df);\n w = R(z) * s + c;\n return 2 * (df + w);\n }\n\n export function acosh(x: f64): f64 { // see: musl/src/math/acosh.c\n const s = reinterpret(0x3FE62E42FEFA39EF);\n var u = reinterpret(x);\n // Prevent propagation for all input values less than 1.0.\n // Note musl lib didn't fix this yet.\n if (u < 0x3FF0000000000000) return (x - x) / 0.0;\n var e = u >> 52 & 0x7FF;\n if (e < 0x3FF + 1) return log1p(x - 1 + builtin_sqrt((x - 1) * (x - 1) + 2 * (x - 1)));\n if (e < 0x3FF + 26) return log(2 * x - 1 / (x + builtin_sqrt(x * x - 1)));\n return log(x) + s;\n }\n\n export function asin(x: f64): f64 { // see: musl/src/math/asin.c and SUN COPYRIGHT NOTICE above\n const\n pio2_hi = reinterpret(0x3FF921FB54442D18), // 1.57079632679489655800e+00\n pio2_lo = reinterpret(0x3C91A62633145C07), // 6.12323399573676603587e-17\n Ox1p_120f = reinterpret(0x03800000);\n\n var hx = (reinterpret(x) >> 32);\n var ix = hx & 0x7FFFFFFF;\n if (ix >= 0x3FF00000) {\n let lx = reinterpret(x);\n if ((ix - 0x3FF00000 | lx) == 0) return x * pio2_hi + Ox1p_120f;\n return 0 / (x - x);\n }\n if (ix < 0x3FE00000) {\n if (ix < 0x3E500000 && ix >= 0x00100000) return x;\n return x + x * R(x * x);\n }\n // var z = (1.0 - builtin_abs(x)) * 0.5;\n var z = 0.5 - builtin_abs(x) * 0.5;\n var s = builtin_sqrt(z);\n var r = R(z);\n if (ix >= 0x3FEF3333) x = pio2_hi - (2 * (s + s * r) - pio2_lo);\n else {\n let f = reinterpret(reinterpret(s) & 0xFFFFFFFF00000000);\n let c = (z - f * f) / (s + f);\n x = 0.5 * pio2_hi - (2 * s * r - (pio2_lo - 2 * c) - (0.5 * pio2_hi - 2 * f));\n }\n return select(-x, x, hx < 0);\n }\n\n export function asinh(x: f64): f64 { // see: musl/src/math/asinh.c\n const c = reinterpret(0x3FE62E42FEFA39EF); // 0.693147180559945309417232121458176568\n var u = reinterpret(x);\n var e = u >> 52 & 0x7FF;\n var y = reinterpret(u & 0x7FFFFFFFFFFFFFFF);\n if (e >= 0x3FF + 26) y = log(y) + c;\n else if (e >= 0x3FF + 1) y = log(2 * y + 1 / (builtin_sqrt(y * y + 1) + y));\n else if (e >= 0x3FF - 26) y = log1p(y + y * y / (builtin_sqrt(y * y + 1) + 1));\n return builtin_copysign(y, x);\n }\n\n export function atan(x: f64): f64 { // see musl/src/math/atan.c and SUN COPYRIGHT NOTICE above\n const\n atanhi0 = reinterpret(0x3FDDAC670561BB4F), // 4.63647609000806093515e-01\n atanhi1 = reinterpret(0x3FE921FB54442D18), // 7.85398163397448278999e-01\n atanhi2 = reinterpret(0x3FEF730BD281F69B), // 9.82793723247329054082e-01\n atanhi3 = reinterpret(0x3FF921FB54442D18), // 1.57079632679489655800e+00\n atanlo0 = reinterpret(0x3C7A2B7F222F65E2), // 2.26987774529616870924e-17\n atanlo1 = reinterpret(0x3C81A62633145C07), // 3.06161699786838301793e-17\n atanlo2 = reinterpret(0x3C7007887AF0CBBD), // 1.39033110312309984516e-17\n atanlo3 = reinterpret(0x3C91A62633145C07), // 6.12323399573676603587e-17\n aT0 = reinterpret(0x3FD555555555550D), // 3.33333333333329318027e-01\n aT1 = reinterpret(0xBFC999999998EBC4), // -1.99999999998764832476e-01\n aT2 = reinterpret(0x3FC24924920083FF), // 1.42857142725034663711e-01\n aT3 = reinterpret(0xBFBC71C6FE231671), // -1.11111104054623557880e-01,\n aT4 = reinterpret(0x3FB745CDC54C206E), // 9.09088713343650656196e-02\n aT5 = reinterpret(0xBFB3B0F2AF749A6D), // -7.69187620504482999495e-02\n aT6 = reinterpret(0x3FB10D66A0D03D51), // 6.66107313738753120669e-02\n aT7 = reinterpret(0xBFADDE2D52DEFD9A), // -5.83357013379057348645e-02\n aT8 = reinterpret(0x3FA97B4B24760DEB), // 4.97687799461593236017e-02\n aT9 = reinterpret(0xBFA2B4442C6A6C2F), // -3.65315727442169155270e-02\n aT10 = reinterpret(0x3F90AD3AE322DA11), // 1.62858201153657823623e-02\n Ox1p_120f = reinterpret(0x03800000);\n\n var ix = (reinterpret(x) >> 32);\n var sx = x;\n ix &= 0x7FFFFFFF;\n var z: f64;\n if (ix >= 0x44100000) {\n if (isNaN(x)) return x;\n z = atanhi3 + Ox1p_120f;\n return builtin_copysign(z, sx);\n }\n var id: i32;\n if (ix < 0x3FDC0000) {\n if (ix < 0x3E400000) return x;\n id = -1;\n } else {\n x = builtin_abs(x);\n if (ix < 0x3FF30000) {\n if (ix < 0x3FE60000) {\n id = 0;\n x = (2.0 * x - 1.0) / (2.0 + x);\n } else {\n id = 1;\n x = (x - 1.0) / (x + 1.0);\n }\n } else {\n if (ix < 0x40038000) {\n id = 2;\n x = (x - 1.5) / (1.0 + 1.5 * x);\n } else {\n id = 3;\n x = -1.0 / x;\n }\n }\n }\n z = x * x;\n var w = z * z;\n var s1 = z * (aT0 + w * (aT2 + w * (aT4 + w * (aT6 + w * (aT8 + w * aT10)))));\n var s2 = w * (aT1 + w * (aT3 + w * (aT5 + w * (aT7 + w * aT9))));\n var s3 = x * (s1 + s2);\n if (id < 0) return x - s3;\n switch (id) {\n case 0: { z = atanhi0 - ((s3 - atanlo0) - x); break; }\n case 1: { z = atanhi1 - ((s3 - atanlo1) - x); break; }\n case 2: { z = atanhi2 - ((s3 - atanlo2) - x); break; }\n case 3: { z = atanhi3 - ((s3 - atanlo3) - x); break; }\n default: unreachable();\n }\n return builtin_copysign(z, sx);\n }\n\n export function atanh(x: f64): f64 { // see: musl/src/math/atanh.c\n var u = reinterpret(x);\n var e = u >> 52 & 0x7FF;\n var y = builtin_abs(x);\n if (e < 0x3FF - 1) {\n if (e >= 0x3FF - 32) y = 0.5 * log1p(2 * y + 2 * y * y / (1 - y));\n } else {\n y = 0.5 * log1p(2 * (y / (1 - y)));\n }\n return builtin_copysign(y, x);\n }\n\n export function atan2(y: f64, x: f64): f64 { // see: musl/src/math/atan2.c and SUN COPYRIGHT NOTICE above\n const pi_lo = reinterpret(0x3CA1A62633145C07); // 1.2246467991473531772E-16\n if (isNaN(x) || isNaN(y)) return x + y;\n var u = reinterpret(x);\n var ix = (u >> 32);\n var lx = u;\n u = reinterpret(y);\n var iy = (u >> 32);\n var ly = u;\n if ((ix - 0x3FF00000 | lx) == 0) return atan(y);\n var m = ((iy >> 31) & 1) | ((ix >> 30) & 2);\n ix = ix & 0x7FFFFFFF;\n iy = iy & 0x7FFFFFFF;\n if ((iy | ly) == 0) {\n switch (m) {\n case 0:\n case 1: return y;\n case 2: return PI;\n case 3: return -PI;\n }\n }\n if ((ix | lx) == 0) return m & 1 ? -PI / 2 : PI / 2;\n if (ix == 0x7FF00000) {\n if (iy == 0x7FF00000) {\n let t = m & 2 ? 3 * PI / 4 : PI / 4;\n return m & 1 ? -t : t;\n } else {\n let t = m & 2 ? PI : 0;\n return m & 1 ? -t : t;\n }\n }\n var z: f64;\n if (ix + (64 << 20) < iy || iy == 0x7FF00000) return m & 1 ? -PI / 2 : PI / 2;\n if ((m & 2) && iy + (64 << 20) < ix) z = 0;\n else z = atan(builtin_abs(y / x));\n switch (m) {\n case 0: return z;\n case 1: return -z;\n case 2: return PI - (z - pi_lo);\n case 3: return (z - pi_lo) - PI;\n }\n unreachable();\n return 0;\n }\n\n export function cbrt(x: f64): f64 { // see: musl/src/math/cbrt.c and SUN COPYRIGHT NOTICE above\n const\n B1 = 715094163,\n B2 = 696219795,\n P0 = reinterpret(0x3FFE03E60F61E692), // 1.87595182427177009643\n P1 = reinterpret(0xBFFE28E092F02420), // -1.88497979543377169875\n P2 = reinterpret(0x3FF9F1604A49D6C2), // 1.621429720105354466140\n P3 = reinterpret(0xBFE844CBBEE751D9), // -0.758397934778766047437\n P4 = reinterpret(0x3FC2B000D4E4EDD7), // 0.145996192886612446982\n Ox1p54 = reinterpret(0x4350000000000000); // 0x1p54\n\n var u = reinterpret(x);\n var hx = (u >> 32) & 0x7FFFFFFF;\n if (hx >= 0x7FF00000) return x + x;\n if (hx < 0x00100000) {\n u = reinterpret(x * Ox1p54);\n hx = (u >> 32) & 0x7FFFFFFF;\n if (hx == 0) return x;\n hx = hx / 3 + B2;\n } else {\n hx = hx / 3 + B1;\n }\n u &= 1 << 63;\n u |= hx << 32;\n var t = reinterpret(u);\n var r = (t * t) * (t / x);\n t = t * ((P0 + r * (P1 + r * P2)) + ((r * r) * r) * (P3 + r * P4));\n t = reinterpret((reinterpret(t) + 0x80000000) & 0xFFFFFFFFC0000000);\n var s = t * t;\n r = x / s;\n r = (r - t) / (2 * t + r);\n t = t + t * r;\n return t;\n }\n\n // @ts-ignore: decorator\n @inline\n export function ceil(x: f64): f64 {\n return builtin_ceil(x);\n }\n\n export function clz32(x: f64): f64 {\n if (!isFinite(x)) return 32;\n /*\n * Wasm (MVP) and JS have different approaches for double->int conversions.\n *\n * For emulate JS conversion behavior and avoid trapping from wasm we should modulate by MAX_INT\n * our float-point arguments before actual convertion to integers.\n */\n return builtin_clz(dtoi32(x));\n }\n\n export function cos(x: f64): f64 { // see: musl/src/math/cos.c\n var u = reinterpret(x);\n var ux = u32(u >> 32);\n var sign = ux >> 31;\n\n ux &= 0x7FFFFFFF;\n\n // |x| ~< pi/4\n if (ux <= 0x3FE921FB) {\n if (ux < 0x3E46A09E) { // |x| < 2**-27 * sqrt(2)\n return 1.0;\n }\n return cos_kern(x, 0);\n }\n\n // sin(Inf or NaN) is NaN\n if (ux >= 0x7FF00000) return x - x;\n\n // argument reduction needed\n var n = rempio2(x, u, sign);\n var y0 = rempio2_y0;\n var y1 = rempio2_y1;\n\n x = n & 1 ? sin_kern(y0, y1, 1) : cos_kern(y0, y1);\n return (n + 1) & 2 ? -x : x;\n }\n\n export function cosh(x: f64): f64 { // see: musl/src/math/cosh.c\n var u = reinterpret(x);\n u &= 0x7FFFFFFFFFFFFFFF;\n x = reinterpret(u);\n var w = (u >> 32);\n var t: f64;\n if (w < 0x3FE62E42) {\n if (w < 0x3FF00000 - (26 << 20)) return 1;\n t = expm1(x);\n // return 1 + t * t / (2 * (1 + t));\n return 1 + t * t / (2 + 2 * t);\n }\n if (w < 0x40862E42) {\n t = exp(x);\n return 0.5 * (t + 1 / t);\n }\n t = expo2(x, 1);\n return t;\n }\n\n export function exp(x: f64): f64 { // see: musl/src/math/exp.c and SUN COPYRIGHT NOTICE above\n if (ASC_SHRINK_LEVEL < 1) {\n return exp_lut(x);\n } else {\n const\n ln2hi = reinterpret(0x3FE62E42FEE00000), // 6.93147180369123816490e-01\n ln2lo = reinterpret(0x3DEA39EF35793C76), // 1.90821492927058770002e-10\n invln2 = reinterpret(0x3FF71547652B82FE), // 1.44269504088896338700e+00\n P1 = reinterpret(0x3FC555555555553E), // 1.66666666666666019037e-01\n P2 = reinterpret(0xBF66C16C16BEBD93), // -2.77777777770155933842e-03\n P3 = reinterpret(0x3F11566AAF25DE2C), // 6.61375632143793436117e-05\n P4 = reinterpret(0xBEBBBD41C5D26BF1), // -1.65339022054652515390e-06\n P5 = reinterpret(0x3E66376972BEA4D0), // 4.13813679705723846039e-08\n overflow = reinterpret(0x40862E42FEFA39EF), // 709.782712893383973096\n underflow = reinterpret(0xC0874910D52D3051), // -745.13321910194110842\n Ox1p1023 = reinterpret(0x7FE0000000000000); // 0x1p1023\n\n let hx = u32(reinterpret(x) >> 32);\n let sign = hx >> 31;\n hx &= 0x7FFFFFFF;\n if (hx >= 0x4086232B) {\n if (isNaN(x)) return x;\n if (x > overflow) return x * Ox1p1023;\n if (x < underflow) return 0;\n }\n let hi: f64, lo: f64 = 0;\n let k = 0;\n if (hx > 0x3FD62E42) {\n if (hx >= 0x3FF0A2B2) {\n k = i32(invln2 * x + builtin_copysign(0.5, x));\n } else {\n k = 1 - (sign << 1);\n }\n hi = x - k * ln2hi;\n lo = k * ln2lo;\n x = hi - lo;\n } else if (hx > 0x3E300000) {\n hi = x;\n } else return 1.0 + x;\n let xs = x * x;\n // var c = x - xp2 * (P1 + xp2 * (P2 + xp2 * (P3 + xp2 * (P4 + xp2 * P5))));\n let xq = xs * xs;\n let c = x - (xs * P1 + xq * ((P2 + xs * P3) + xq * (P4 + xs * P5)));\n let y = 1.0 + (x * c / (2 - c) - lo + hi);\n return k == 0 ? y : scalbn(y, k);\n }\n }\n\n export function exp2(x: f64): f64 {\n return exp2_lut(x);\n }\n\n export function expm1(x: f64): f64 { // see: musl/src/math/expm1.c and SUN COPYRIGHT NOTICE above\n const\n o_threshold = reinterpret(0x40862E42FEFA39EF), // 7.09782712893383973096e+02\n ln2_hi = reinterpret(0x3FE62E42FEE00000), // 6.93147180369123816490e-01\n ln2_lo = reinterpret(0x3DEA39EF35793C76), // 1.90821492927058770002e-10\n invln2 = reinterpret(0x3FF71547652B82FE), // 1.44269504088896338700e+00\n Q1 = reinterpret(0xBFA11111111110F4), // -3.33333333333331316428e-02\n Q2 = reinterpret(0x3F5A01A019FE5585), // 1.58730158725481460165e-03\n Q3 = reinterpret(0xBF14CE199EAADBB7), // -7.93650757867487942473e-05\n Q4 = reinterpret(0x3ED0CFCA86E65239), // 4.00821782732936239552e-06\n Q5 = reinterpret(0xBE8AFDB76E09C32D), // -2.01099218183624371326e-07\n Ox1p1023 = reinterpret(0x7FE0000000000000); // 0x1p1023\n\n var u = reinterpret(x);\n var hx = u32(u >> 32) & 0x7FFFFFFF;\n var sign = u32(u >> 63);\n var k = 0;\n if (hx >= 0x4043687A) {\n if (isNaN(x)) return x;\n if (sign) return -1;\n if (x > o_threshold) return x * Ox1p1023;\n }\n var c = 0.0, t: f64;\n if (hx > 0x3FD62E42) {\n k = select(\n 1 - (sign << 1),\n i32(invln2 * x + builtin_copysign(0.5, x)),\n hx < 0x3FF0A2B2\n );\n t = k;\n let hi = x - t * ln2_hi;\n let lo = t * ln2_lo;\n x = hi - lo;\n c = (hi - x) - lo;\n } else if (hx < 0x3C900000) return x;\n var hfx = 0.5 * x;\n var hxs = x * hfx;\n // var r1 = 1.0 + hxs * (Q1 + hxs * (Q2 + hxs * (Q3 + hxs * (Q4 + hxs * Q5))));\n var hxq = hxs * hxs;\n var r1 = (1.0 + hxs * Q1) + hxq * ((Q2 + hxs * Q3) + hxq * (Q4 + hxs * Q5));\n t = 3.0 - r1 * hfx;\n var e = hxs * ((r1 - t) / (6.0 - x * t));\n if (k == 0) return x - (x * e - hxs);\n e = x * (e - c) - c;\n e -= hxs;\n if (k == -1) return 0.5 * (x - e) - 0.5;\n if (k == 1) {\n if (x < -0.25) return -2.0 * (e - (x + 0.5));\n return 1.0 + 2.0 * (x - e);\n }\n u = (0x3FF + k) << 52;\n var twopk = reinterpret(u);\n var y: f64;\n if (k < 0 || k > 56) {\n y = x - e + 1.0;\n if (k == 1024) y = y * 2.0 * Ox1p1023;\n else y = y * twopk;\n return y - 1.0;\n }\n u = (0x3FF - k) << 52;\n y = reinterpret(u);\n if (k < 20) y = (1 - y) - e;\n else y = 1 - (e + y);\n return (x + y) * twopk;\n }\n\n // @ts-ignore: decorator\n @inline\n export function floor(x: f64): f64 {\n return builtin_floor(x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function fround(x: f64): f64 {\n return x;\n }\n\n export function hypot(x: f64, y: f64): f64 { // see: musl/src/math/hypot.c\n const\n SPLIT = reinterpret(0x41A0000000000000) + 1, // 0x1p27 + 1\n Ox1p700 = reinterpret(0x6BB0000000000000),\n Ox1p_700 = reinterpret(0x1430000000000000);\n\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n ux &= 0x7FFFFFFFFFFFFFFF;\n uy &= 0x7FFFFFFFFFFFFFFF;\n if (ux < uy) {\n let ut = ux;\n ux = uy;\n uy = ut;\n }\n var ex = i32(ux >> 52);\n var ey = i32(uy >> 52);\n y = reinterpret(uy);\n if (ey == 0x7FF) return y;\n x = reinterpret(ux);\n if (ex == 0x7FF || uy == 0) return x;\n if (ex - ey > 64) return x + y;\n var z = 1.0;\n if (ex > 0x3FF + 510) {\n z = Ox1p700;\n x *= Ox1p_700;\n y *= Ox1p_700;\n } else if (ey < 0x3FF - 450) {\n z = Ox1p_700;\n x *= Ox1p700;\n y *= Ox1p700;\n }\n var c = x * SPLIT;\n var h = x - c + c;\n var l = x - h;\n var hx = x * x;\n var lx = h * h - hx + (2 * h + l) * l;\n c = y * SPLIT;\n h = y - c + c;\n l = y - h;\n var hy = y * y;\n var ly = h * h - hy + (2 * h + l) * l;\n return z * builtin_sqrt(ly + lx + hy + hx);\n }\n\n export function imul(x: f64, y: f64): f64 {\n /*\n * Wasm (MVP) and JS have different approaches for double->int conversions.\n *\n * For emulate JS conversion behavior and avoid trapping from wasm we should modulate by MAX_INT\n * our float-point arguments before actual convertion to integers.\n */\n if (!isFinite(x + y)) return 0;\n return dtoi32(x) * dtoi32(y);\n }\n\n export function log(x: f64): f64 { // see: musl/src/math/log.c and SUN COPYRIGHT NOTICE above\n if (ASC_SHRINK_LEVEL < 1) {\n return log_lut(x);\n } else {\n const\n ln2_hi = reinterpret(0x3FE62E42FEE00000), // 6.93147180369123816490e-01\n ln2_lo = reinterpret(0x3DEA39EF35793C76), // 1.90821492927058770002e-10\n Lg1 = reinterpret(0x3FE5555555555593), // 6.666666666666735130e-01\n Lg2 = reinterpret(0x3FD999999997FA04), // 3.999999999940941908e-01\n Lg3 = reinterpret(0x3FD2492494229359), // 2.857142874366239149e-01\n Lg4 = reinterpret(0x3FCC71C51D8E78AF), // 2.222219843214978396e-01\n Lg5 = reinterpret(0x3FC7466496CB03DE), // 1.818357216161805012e-01\n Lg6 = reinterpret(0x3FC39A09D078C69F), // 1.531383769920937332e-01\n Lg7 = reinterpret(0x3FC2F112DF3E5244), // 1.479819860511658591e-01\n Ox1p54 = reinterpret(0x4350000000000000); // 0x1p54\n\n let u = reinterpret(x);\n let hx = u32(u >> 32);\n let k = 0;\n let sign = hx >> 31;\n if (sign || hx < 0x00100000) {\n if (u << 1 == 0) return -1 / (x * x);\n if (sign) return (x - x) / 0.0;\n k -= 54;\n x *= Ox1p54;\n u = reinterpret(x);\n hx = u32(u >> 32);\n } else if (hx >= 0x7FF00000) {\n return x;\n } else if (hx == 0x3FF00000 && u << 32 == 0) {\n return 0;\n }\n hx += 0x3FF00000 - 0x3FE6A09E;\n k += (hx >> 20) - 0x3FF;\n hx = (hx & 0x000FFFFF) + 0x3FE6A09E;\n u = hx << 32 | (u & 0xFFFFFFFF);\n x = reinterpret(u);\n let f = x - 1.0;\n let hfsq = 0.5 * f * f;\n let s = f / (2.0 + f);\n let z = s * s;\n let w = z * z;\n let t1 = w * (Lg2 + w * (Lg4 + w * Lg6));\n let t2 = z * (Lg1 + w * (Lg3 + w * (Lg5 + w * Lg7)));\n let r = t2 + t1;\n let dk = k;\n return s * (hfsq + r) + dk * ln2_lo - hfsq + f + dk * ln2_hi;\n }\n }\n\n export function log10(x: f64): f64 { // see: musl/src/math/log10.c and SUN COPYRIGHT NOTICE above\n const\n ivln10hi = reinterpret(0x3FDBCB7B15200000), // 4.34294481878168880939e-01\n ivln10lo = reinterpret(0x3DBB9438CA9AADD5), // 2.50829467116452752298e-11\n log10_2hi = reinterpret(0x3FD34413509F6000), // 3.01029995663611771306e-01\n log10_2lo = reinterpret(0x3D59FEF311F12B36), // 3.69423907715893078616e-13\n Lg1 = reinterpret(0x3FE5555555555593), // 6.666666666666735130e-01\n Lg2 = reinterpret(0x3FD999999997FA04), // 3.999999999940941908e-01\n Lg3 = reinterpret(0x3FD2492494229359), // 2.857142874366239149e-01\n Lg4 = reinterpret(0x3FCC71C51D8E78AF), // 2.222219843214978396e-01\n Lg5 = reinterpret(0x3FC7466496CB03DE), // 1.818357216161805012e-01\n Lg6 = reinterpret(0x3FC39A09D078C69F), // 1.531383769920937332e-01\n Lg7 = reinterpret(0x3FC2F112DF3E5244), // 1.479819860511658591e-01\n Ox1p54 = reinterpret(0x4350000000000000); // 0x1p54\n\n var u = reinterpret(x);\n var hx = u32(u >> 32);\n var k = 0;\n var sign = hx >> 31;\n if (sign || hx < 0x00100000) {\n if (u << 1 == 0) return -1 / (x * x);\n if (sign) return (x - x) / 0.0;\n k -= 54;\n x *= Ox1p54;\n u = reinterpret(x);\n hx = u32(u >> 32);\n } else if (hx >= 0x7FF00000) {\n return x;\n } else if (hx == 0x3FF00000 && u << 32 == 0) {\n return 0;\n }\n hx += 0x3FF00000 - 0x3FE6A09E;\n k += i32(hx >> 20) - 0x3FF;\n hx = (hx & 0x000FFFFF) + 0x3FE6A09E;\n u = hx << 32 | (u & 0xFFFFFFFF);\n x = reinterpret(u);\n var f = x - 1.0;\n var hfsq = 0.5 * f * f;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * (Lg4 + w * Lg6));\n var t2 = z * (Lg1 + w * (Lg3 + w * (Lg5 + w * Lg7)));\n var r = t2 + t1;\n var hi = f - hfsq;\n u = reinterpret(hi);\n u &= 0xFFFFFFFF00000000;\n hi = reinterpret(u);\n var lo = f - hi - hfsq + s * (hfsq + r);\n var val_hi = hi * ivln10hi;\n var dk = k;\n var y = dk * log10_2hi;\n var val_lo = dk * log10_2lo + (lo + hi) * ivln10lo + lo * ivln10hi;\n w = y + val_hi;\n val_lo += (y - w) + val_hi;\n return val_lo + w;\n }\n\n export function log1p(x: f64): f64 { // see: musl/src/math/log1p.c and SUN COPYRIGHT NOTICE above\n const\n ln2_hi = reinterpret(0x3FE62E42FEE00000), // 6.93147180369123816490e-01\n ln2_lo = reinterpret(0x3DEA39EF35793C76), // 1.90821492927058770002e-10\n Lg1 = reinterpret(0x3FE5555555555593), // 6.666666666666735130e-01\n Lg2 = reinterpret(0x3FD999999997FA04), // 3.999999999940941908e-01\n Lg3 = reinterpret(0x3FD2492494229359), // 2.857142874366239149e-01\n Lg4 = reinterpret(0x3FCC71C51D8E78AF), // 2.222219843214978396e-01\n Lg5 = reinterpret(0x3FC7466496CB03DE), // 1.818357216161805012e-01\n Lg6 = reinterpret(0x3FC39A09D078C69F), // 1.531383769920937332e-01\n Lg7 = reinterpret(0x3FC2F112DF3E5244); // 1.479819860511658591e-01\n\n var u = reinterpret(x);\n var hx = u32(u >> 32);\n var k = 1;\n var c = 0.0, f = 0.0;\n if (hx < 0x3FDA827A || bool(hx >> 31)) {\n if (hx >= 0xBFF00000) {\n if (x == -1) return x / 0.0;\n return (x - x) / 0.0;\n }\n if (hx << 1 < 0x3CA00000 << 1) return x;\n if (hx <= 0xBFD2BEC4) {\n k = 0;\n c = 0;\n f = x;\n }\n } else if (hx >= 0x7FF00000) return x;\n if (k) {\n u = reinterpret(1 + x);\n let hu = u32(u >> 32);\n hu += 0x3FF00000 - 0x3FE6A09E;\n k = i32(hu >> 20) - 0x3FF;\n if (k < 54) {\n let uf = reinterpret(u);\n c = k >= 2 ? 1 - (uf - x) : x - (uf - 1);\n c /= uf;\n } else c = 0;\n hu = (hu & 0x000FFFFF) + 0x3FE6A09E;\n u = hu << 32 | (u & 0xFFFFFFFF);\n f = reinterpret(u) - 1;\n }\n var hfsq = 0.5 * f * f;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * (Lg4 + w * Lg6));\n var t2 = z * (Lg1 + w * (Lg3 + w * (Lg5 + w * Lg7)));\n var r = t2 + t1;\n var dk = k;\n return s * (hfsq + r) + (dk * ln2_lo + c) - hfsq + f + dk * ln2_hi;\n }\n\n export function log2(x: f64): f64 { // see: musl/src/math/log2.c and SUN COPYRIGHT NOTICE above\n if (ASC_SHRINK_LEVEL < 1) {\n return log2_lut(x);\n } else {\n const\n ivln2hi = reinterpret(0x3FF7154765200000), // 1.44269504072144627571e+00\n ivln2lo = reinterpret(0x3DE705FC2EEFA200), // 1.67517131648865118353e-10\n Lg1 = reinterpret(0x3FE5555555555593), // 6.666666666666735130e-01\n Lg2 = reinterpret(0x3FD999999997FA04), // 3.999999999940941908e-01\n Lg3 = reinterpret(0x3FD2492494229359), // 2.857142874366239149e-01\n Lg4 = reinterpret(0x3FCC71C51D8E78AF), // 2.222219843214978396e-01\n Lg5 = reinterpret(0x3FC7466496CB03DE), // 1.818357216161805012e-01\n Lg6 = reinterpret(0x3FC39A09D078C69F), // 1.531383769920937332e-01\n Lg7 = reinterpret(0x3FC2F112DF3E5244), // 1.479819860511658591e-01\n Ox1p54 = reinterpret(0x4350000000000000); // 1p54\n\n let u = reinterpret(x);\n let hx = u32(u >> 32);\n let k = 0;\n let sign = hx >> 31;\n if (sign || hx < 0x00100000) {\n if (u << 1 == 0) return -1 / (x * x);\n if (sign) return (x - x) / 0.0;\n k -= 54;\n x *= Ox1p54;\n u = reinterpret(x);\n hx = u32(u >> 32);\n } else if (hx >= 0x7FF00000) {\n return x;\n } else if (hx == 0x3FF00000 && u << 32 == 0) {\n return 0;\n }\n hx += 0x3FF00000 - 0x3FE6A09E;\n k += i32(hx >> 20) - 0x3FF;\n hx = (hx & 0x000FFFFF) + 0x3FE6A09E;\n u = hx << 32 | (u & 0xFFFFFFFF);\n x = reinterpret(u);\n let f = x - 1.0;\n let hfsq = 0.5 * f * f;\n let s = f / (2.0 + f);\n let z = s * s;\n let w = z * z;\n let t1 = w * (Lg2 + w * (Lg4 + w * Lg6));\n let t2 = z * (Lg1 + w * (Lg3 + w * (Lg5 + w * Lg7)));\n let r = t2 + t1;\n let hi = f - hfsq;\n u = reinterpret(hi);\n u &= 0xFFFFFFFF00000000;\n hi = reinterpret(u);\n let lo = f - hi - hfsq + s * (hfsq + r);\n let val_hi = hi * ivln2hi;\n let val_lo = (lo + hi) * ivln2lo + lo * ivln2hi;\n let y = k;\n w = y + val_hi;\n val_lo += (y - w) + val_hi;\n val_hi = w;\n return val_lo + val_hi;\n }\n }\n\n // @ts-ignore: decorator\n @inline\n export function max(value1: f64, value2: f64): f64 {\n return builtin_max(value1, value2);\n }\n\n // @ts-ignore: decorator\n @inline\n export function min(value1: f64, value2: f64): f64 {\n return builtin_min(value1, value2);\n }\n\n export function pow(x: f64, y: f64): f64 { // see: musl/src/math/pow.c and SUN COPYRIGHT NOTICE above\n // TODO: remove this fast pathes after introduced own mid-end IR with \"stdlib call simplify\" transforms\n if (builtin_abs(y) <= 2) {\n if (y == 2.0) return x * x;\n if (y == 0.5) {\n return select(\n builtin_abs(builtin_sqrt(x)),\n Infinity,\n x != -Infinity\n );\n }\n if (y == -1.0) return 1 / x;\n if (y == 1.0) return x;\n if (y == 0.0) return 1.0;\n }\n if (ASC_SHRINK_LEVEL < 1) {\n return pow_lut(x, y);\n } else {\n const\n dp_h1 = reinterpret(0x3FE2B80340000000), // 5.84962487220764160156e-01\n dp_l1 = reinterpret(0x3E4CFDEB43CFD006), // 1.35003920212974897128e-08\n two53 = reinterpret(0x4340000000000000), // 9007199254740992.0\n huge = reinterpret(0x7E37E43C8800759C), // 1e+300\n tiny = reinterpret(0x01A56E1FC2F8F359), // 1e-300\n L1 = reinterpret(0x3FE3333333333303), // 5.99999999999994648725e-01\n L2 = reinterpret(0x3FDB6DB6DB6FABFF), // 4.28571428578550184252e-01\n L3 = reinterpret(0x3FD55555518F264D), // 3.33333329818377432918e-01\n L4 = reinterpret(0x3FD17460A91D4101), // 2.72728123808534006489e-01\n L5 = reinterpret(0x3FCD864A93C9DB65), // 2.30660745775561754067e-01\n L6 = reinterpret(0x3FCA7E284A454EEF), // 2.06975017800338417784e-01\n P1 = reinterpret(0x3FC555555555553E), // 1.66666666666666019037e-01\n P2 = reinterpret(0xBF66C16C16BEBD93), // -2.77777777770155933842e-03\n P3 = reinterpret(0x3F11566AAF25DE2C), // 6.61375632143793436117e-05\n P4 = reinterpret(0xBEBBBD41C5D26BF1), // -1.65339022054652515390e-06\n P5 = reinterpret(0x3E66376972BEA4D0), // 4.13813679705723846039e-08\n lg2 = reinterpret(0x3FE62E42FEFA39EF), // 6.93147180559945286227e-01\n lg2_h = reinterpret(0x3FE62E4300000000), // 6.93147182464599609375e-01\n lg2_l = reinterpret(0xBE205C610CA86C39), // -1.90465429995776804525e-09\n ovt = reinterpret(0x3C971547652B82FE), // 8.0085662595372944372e-017\n cp = reinterpret(0x3FEEC709DC3A03FD), // 9.61796693925975554329e-01\n cp_h = reinterpret(0x3FEEC709E0000000), // 9.61796700954437255859e-01\n cp_l = reinterpret(0xBE3E2FE0145B01F5), // -7.02846165095275826516e-09\n ivln2 = reinterpret(0x3FF71547652B82FE), // 1.44269504088896338700e+00\n ivln2_h = reinterpret(0x3FF7154760000000), // 1.44269502162933349609e+00\n ivln2_l = reinterpret(0x3E54AE0BF85DDF44), // 1.92596299112661746887e-08\n inv3 = reinterpret(0x3FD5555555555555); // 0.3333333333333333333333\n\n let u_ = reinterpret(x);\n let hx = i32(u_ >> 32);\n let lx = u_;\n u_ = reinterpret(y);\n let hy = i32(u_ >> 32);\n let ly = u_;\n let ix = hx & 0x7FFFFFFF;\n let iy = hy & 0x7FFFFFFF;\n if ((iy | ly) == 0) return 1.0; // x**0 = 1, even if x is NaN\n // if (hx == 0x3FF00000 && lx == 0) return 1.0; // C: 1**y = 1, even if y is NaN, JS: NaN\n if ( // NaN if either arg is NaN\n ix > 0x7FF00000 || (ix == 0x7FF00000 && lx != 0) ||\n iy > 0x7FF00000 || (iy == 0x7FF00000 && ly != 0)\n ) return x + y;\n let yisint = 0, k: i32;\n if (hx < 0) {\n if (iy >= 0x43400000) yisint = 2;\n else if (iy >= 0x3FF00000) {\n k = (iy >> 20) - 0x3FF;\n let offset = select(52, 20, k > 20) - k;\n let Ly = select(ly, iy, k > 20);\n let jj = Ly >> offset;\n if ((jj << offset) == Ly) yisint = 2 - (jj & 1);\n }\n }\n if (ly == 0) {\n if (iy == 0x7FF00000) { // y is +-inf\n if (((ix - 0x3FF00000) | lx) == 0) return NaN; // C: (-1)**+-inf is 1, JS: NaN\n else if (ix >= 0x3FF00000) return hy >= 0 ? y : 0.0; // (|x|>1)**+-inf = inf,0\n else return hy >= 0 ? 0.0 : -y; // (|x|<1)**+-inf = 0,inf\n }\n if (iy == 0x3FF00000) {\n if (hy >= 0) return x;\n return 1 / x;\n }\n if (hy == 0x40000000) return x * x;\n if (hy == 0x3FE00000) {\n if (hx >= 0) return builtin_sqrt(x);\n }\n }\n let ax = builtin_abs(x), z: f64;\n if (lx == 0) {\n if (ix == 0 || ix == 0x7FF00000 || ix == 0x3FF00000) {\n z = ax;\n if (hy < 0) z = 1.0 / z;\n if (hx < 0) {\n if (((ix - 0x3FF00000) | yisint) == 0) {\n let d = z - z;\n z = d / d;\n } else if (yisint == 1) z = -z;\n }\n return z;\n }\n }\n let s = 1.0;\n if (hx < 0) {\n if (yisint == 0) {\n let d = x - x;\n return d / d;\n }\n if (yisint == 1) s = -1.0;\n }\n let t1: f64, t2: f64, p_h: f64, p_l: f64, r: f64, t: f64, u: f64, v: f64, w: f64;\n let j: i32, n: i32;\n if (iy > 0x41E00000) {\n if (iy > 0x43F00000) {\n if (ix <= 0x3FEFFFFF) return hy < 0 ? huge * huge : tiny * tiny;\n if (ix >= 0x3FF00000) return hy > 0 ? huge * huge : tiny * tiny;\n }\n if (ix < 0x3FEFFFFF) return hy < 0 ? s * huge * huge : s * tiny * tiny;\n if (ix > 0x3FF00000) return hy > 0 ? s * huge * huge : s * tiny * tiny;\n t = ax - 1.0;\n w = (t * t) * (0.5 - t * (inv3 - t * 0.25));\n u = ivln2_h * t;\n v = t * ivln2_l - w * ivln2;\n t1 = u + v;\n t1 = reinterpret(reinterpret(t1) & 0xFFFFFFFF00000000);\n t2 = v - (t1 - u);\n } else {\n let ss: f64, s2: f64, s_h: f64, s_l: f64, t_h: f64, t_l: f64;\n n = 0;\n if (ix < 0x00100000) {\n ax *= two53;\n n -= 53;\n ix = (reinterpret(ax) >> 32);\n }\n n += (ix >> 20) - 0x3FF;\n j = ix & 0x000FFFFF;\n ix = j | 0x3FF00000;\n if (j <= 0x3988E) k = 0;\n else if (j < 0xBB67A) k = 1;\n else {\n k = 0;\n n += 1;\n ix -= 0x00100000;\n }\n ax = reinterpret(reinterpret(ax) & 0xFFFFFFFF | (ix << 32));\n let bp = select(1.5, 1.0, k); // k ? 1.5 : 1.0\n u = ax - bp;\n v = 1.0 / (ax + bp);\n ss = u * v;\n s_h = ss;\n s_h = reinterpret(reinterpret(s_h) & 0xFFFFFFFF00000000);\n t_h = reinterpret(u64(((ix >> 1) | 0x20000000) + 0x00080000 + (k << 18)) << 32);\n t_l = ax - (t_h - bp);\n s_l = v * ((u - s_h * t_h) - s_h * t_l);\n s2 = ss * ss;\n r = s2 * s2 * (L1 + s2 * (L2 + s2 * (L3 + s2 * (L4 + s2 * (L5 + s2 * L6)))));\n r += s_l * (s_h + ss);\n s2 = s_h * s_h;\n t_h = 3.0 + s2 + r;\n t_h = reinterpret(reinterpret(t_h) & 0xFFFFFFFF00000000);\n t_l = r - ((t_h - 3.0) - s2);\n u = s_h * t_h;\n v = s_l * t_h + t_l * ss;\n p_h = u + v;\n p_h = reinterpret(reinterpret(p_h) & 0xFFFFFFFF00000000);\n p_l = v - (p_h - u);\n let z_h = cp_h * p_h;\n let dp_l = select(dp_l1, 0.0, k);\n let z_l = cp_l * p_h + p_l * cp + dp_l;\n t = n;\n let dp_h = select(dp_h1, 0.0, k);\n t1 = ((z_h + z_l) + dp_h) + t;\n t1 = reinterpret(reinterpret(t1) & 0xFFFFFFFF00000000);\n t2 = z_l - (((t1 - t) - dp_h) - z_h);\n }\n let y1 = y;\n y1 = reinterpret(reinterpret(y1) & 0xFFFFFFFF00000000);\n p_l = (y - y1) * t1 + y * t2;\n p_h = y1 * t1;\n z = p_l + p_h;\n u_ = reinterpret(z);\n j = u32(u_ >> 32);\n let i = u_;\n if (j >= 0x40900000) {\n if (((j - 0x40900000) | i) != 0) return s * huge * huge;\n if (p_l + ovt > z - p_h) return s * huge * huge;\n } else if ((j & 0x7FFFFFFF) >= 0x4090CC00) {\n if (((j - 0xC090CC00) | i) != 0) return s * tiny * tiny;\n if (p_l <= z - p_h) return s * tiny * tiny;\n }\n i = j & 0x7FFFFFFF;\n k = (i >> 20) - 0x3FF;\n n = 0;\n if (i > 0x3FE00000) {\n n = j + (0x00100000 >> (k + 1));\n k = ((n & 0x7FFFFFFF) >> 20) - 0x3FF;\n t = 0.0;\n t = reinterpret(u64(n & ~(0x000FFFFF >> k)) << 32);\n n = ((n & 0x000FFFFF) | 0x00100000) >> (20 - k);\n if (j < 0) n = -n;\n p_h -= t;\n }\n t = p_l + p_h;\n t = reinterpret(reinterpret(t) & 0xFFFFFFFF00000000);\n u = t * lg2_h;\n v = (p_l - (t - p_h)) * lg2 + t * lg2_l;\n z = u + v;\n w = v - (z - u);\n t = z * z;\n t1 = z - t * (P1 + t * (P2 + t * (P3 + t * (P4 + t * P5))));\n r = (z * t1) / (t1 - 2.0) - (w + z * w);\n z = 1.0 - (r - z);\n j = u32(reinterpret(z) >> 32);\n j += n << 20;\n if ((j >> 20) <= 0) z = scalbn(z, n);\n else z = reinterpret(reinterpret(z) & 0xFFFFFFFF | (j << 32));\n return s * z;\n }\n }\n\n export function seedRandom(value: i64): void {\n // Instead zero seed use golden ratio:\n // phi = (1 + sqrt(5)) / 2\n // trunc(2^64 / phi) = 0x9e3779b97f4a7c15\n if (value == 0) value = 0x9e3779b97f4a7c15;\n random_state0_64 = murmurHash3(value);\n random_state1_64 = murmurHash3(~random_state0_64);\n random_state0_32 = splitMix32(value);\n random_state1_32 = splitMix32(random_state0_32);\n random_seeded = true;\n }\n\n export function random(): f64 { // see: v8/src/base/utils/random-number-generator.cc\n if (!random_seeded) seedRandom(reinterpret(seed()));\n var s1 = random_state0_64;\n var s0 = random_state1_64;\n random_state0_64 = s0;\n s1 ^= s1 << 23;\n s1 ^= s1 >> 17;\n s1 ^= s0;\n s1 ^= s0 >> 26;\n random_state1_64 = s1;\n var r = (s0 >> 12) | 0x3FF0000000000000;\n return reinterpret(r) - 1;\n }\n\n export function round(x: f64): f64 {\n if (ASC_SHRINK_LEVEL > 0) {\n return builtin_ceil(x) - f64(builtin_ceil(x) - 0.5 > x);\n } else {\n let roundUp = builtin_ceil(x);\n return select(roundUp, roundUp - 1.0, roundUp - 0.5 <= x);\n }\n }\n\n export function sign(x: f64): f64 {\n if (ASC_SHRINK_LEVEL > 0) {\n return select(builtin_copysign(1, x), x, builtin_abs(x) > 0);\n } else {\n return select(1, select(-1, x, x < 0), x > 0);\n }\n }\n\n // @ts-ignore: decorator\n @inline\n export function signbit(x: f64): bool {\n return bool(reinterpret(x) >>> 63);\n }\n\n export function sin(x: f64): f64 { // see: musl/src/math/sin.c\n var u = reinterpret(x);\n var ux = u32(u >> 32);\n var sign = ux >> 31;\n\n ux &= 0x7FFFFFFF;\n\n // |x| ~< pi/4\n if (ux <= 0x3FE921FB) {\n if (ux < 0x3E500000) { // |x| < 2**-26\n return x;\n }\n return sin_kern(x, 0.0, 0);\n }\n\n // sin(Inf or NaN) is NaN\n if (ux >= 0x7FF00000) return x - x;\n\n // argument reduction needed\n var n = rempio2(x, u, sign);\n var y0 = rempio2_y0;\n var y1 = rempio2_y1;\n\n x = n & 1 ? cos_kern(y0, y1) : sin_kern(y0, y1, 1);\n return n & 2 ? -x : x;\n }\n\n export function sinh(x: f64): f64 { // see: musl/src/math/sinh.c\n var u = reinterpret(x) & 0x7FFFFFFFFFFFFFFF;\n var a = reinterpret(u);\n var w = u32(u >> 32);\n var h = builtin_copysign(0.5, x);\n if (w < 0x40862E42) {\n let t = expm1(a);\n if (w < 0x3FF00000) {\n if (w < 0x3FF00000 - (26 << 20)) return x;\n return h * (2 * t - t * t / (t + 1));\n }\n return h * (t + t / (t + 1));\n }\n return expo2(a, 2 * h);\n }\n\n // @ts-ignore: decorator\n @inline\n export function sqrt(x: f64): f64 {\n return builtin_sqrt(x);\n }\n\n export function tan(x: f64): f64 { // see: musl/src/math/tan.c\n var u = reinterpret(x);\n var ux = u32(u >> 32);\n var sign = ux >>> 31;\n\n ux &= 0x7FFFFFFF;\n\n // |x| ~< pi/4\n if (ux <= 0x3FE921FB) {\n if (ux < 0x3E400000) { // |x| < 2**-27\n return x;\n }\n return tan_kern(x, 0.0, 1);\n }\n\n // tan(Inf or NaN) is NaN\n if (ux >= 0x7FF00000) return x - x;\n\n var n = rempio2(x, u, sign);\n return tan_kern(rempio2_y0, rempio2_y1, 1 - ((n & 1) << 1));\n }\n\n export function tanh(x: f64): f64 { // see: musl/src/math/tanh.c\n var u = reinterpret(x);\n u &= 0x7FFFFFFFFFFFFFFF;\n var y = reinterpret(u);\n var w = u32(u >> 32);\n var t: f64;\n if (w > 0x3FE193EA) {\n if (w > 0x40340000) {\n t = 1 - 0 / y;\n } else {\n t = expm1(2 * y);\n t = 1 - 2 / (t + 2);\n }\n } else if (w > 0x3FD058AE) {\n t = expm1(2 * y);\n t = t / (t + 2);\n } else if (w >= 0x00100000) {\n t = expm1(-2 * y);\n t = -t / (t + 2);\n } else t = y;\n return builtin_copysign(t, x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function trunc(x: f64): f64 {\n return builtin_trunc(x);\n }\n\n export function scalbn(x: f64, n: i32): f64 { // see: https://git.musl-libc.org/cgit/musl/tree/src/math/scalbn.c\n const\n Ox1p53 = reinterpret(0x4340000000000000),\n Ox1p1023 = reinterpret(0x7FE0000000000000),\n Ox1p_1022 = reinterpret(0x0010000000000000);\n\n var y = x;\n if (n > 1023) {\n y *= Ox1p1023;\n n -= 1023;\n if (n > 1023) {\n y *= Ox1p1023;\n n = builtin_min(n - 1023, 1023);\n }\n } else if (n < -1022) {\n // make sure final n < -53 to avoid double\n // rounding in the subnormal range\n y *= Ox1p_1022 * Ox1p53;\n n += 1022 - 53;\n if (n < -1022) {\n y *= Ox1p_1022 * Ox1p53;\n n = builtin_max(n + 1022 - 53, -1022);\n }\n }\n return y * reinterpret((0x3FF + n) << 52);\n }\n\n export function mod(x: f64, y: f64): f64 { // see: musl/src/math/fmod.c\n if (builtin_abs(y) == 1.0) {\n // x % 1, x % -1 ==> sign(x) * abs(x - 1.0 * trunc(x / 1.0))\n // TODO: move this rule to compiler's optimization pass.\n // It could be apply for any x % C_pot, where \"C_pot\" is pow of two const.\n return builtin_copysign(x - builtin_trunc(x), x);\n }\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n var ex = i64(ux >> 52 & 0x7FF);\n var ey = i64(uy >> 52 & 0x7FF);\n var sx = ux >> 63;\n var uy1 = uy << 1;\n if (uy1 == 0 || ex == 0x7FF || isNaN(y)) {\n let m = x * y;\n return m / m;\n }\n var ux1 = ux << 1;\n if (ux1 <= uy1) {\n return x * f64(ux1 != uy1);\n }\n if (!ex) {\n ex -= builtin_clz(ux << 12);\n ux <<= 1 - ex;\n } else {\n ux &= u64(-1) >> 12;\n ux |= 1 << 52;\n }\n if (!ey) {\n ey -= builtin_clz(uy << 12);\n uy <<= 1 - ey;\n } else {\n uy &= u64(-1) >> 12;\n uy |= 1 << 52;\n }\n while (ex > ey) {\n if (ux >= uy) {\n if (ux == uy) return 0 * x;\n ux -= uy;\n }\n ux <<= 1;\n --ex;\n }\n if (ux >= uy) {\n if (ux == uy) return 0 * x;\n ux -= uy;\n }\n // for (; !(ux >> 52); ux <<= 1) --ex;\n var shift = builtin_clz(ux << 11);\n ex -= shift;\n ux <<= shift;\n if (ex > 0) {\n ux -= 1 << 52;\n ux |= ex << 52;\n } else {\n ux >>= -ex + 1;\n }\n return reinterpret(ux | (sx << 63));\n }\n\n export function rem(x: f64, y: f64): f64 { // see: musl/src/math/remquo.c\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n var ex = i64(ux >> 52 & 0x7FF);\n var ey = i64(uy >> 52 & 0x7FF);\n if (uy << 1 == 0 || ex == 0x7FF || isNaN(y)) {\n let m = x * y;\n return m / m;\n }\n if (ux << 1 == 0) return x;\n var uxi = ux;\n if (!ex) {\n ex -= builtin_clz(uxi << 12);\n uxi <<= 1 - ex;\n } else {\n uxi &= u64(-1) >> 12;\n uxi |= 1 << 52;\n }\n if (!ey) {\n ey -= builtin_clz(uy << 12);\n uy <<= 1 - ey;\n } else {\n uy &= u64(-1) >> 12;\n uy |= 1 << 52;\n }\n var q: u32 = 0;\n do {\n if (ex < ey) {\n if (ex + 1 == ey) break; // goto end\n return x;\n }\n while (ex > ey) {\n if (uxi >= uy) {\n uxi -= uy;\n ++q;\n }\n uxi <<= 1;\n q <<= 1;\n --ex;\n }\n if (uxi >= uy) {\n uxi -= uy;\n ++q;\n }\n if (uxi == 0) ex = -60;\n else {\n let shift = builtin_clz(uxi << 11);\n ex -= shift;\n uxi <<= shift;\n }\n break;\n } while (false);\n // end:\n if (ex > 0) {\n uxi -= 1 << 52;\n uxi |= ex << 52;\n } else {\n uxi >>= -ex + 1;\n }\n x = reinterpret(uxi);\n y = builtin_abs(y);\n var x2 = x + x;\n if (ex == ey || (ex + 1 == ey && (x2 > y || (x2 == y && (q & 1))))) {\n x -= y;\n // ++q;\n }\n return ux < 0 ? -x : x;\n }\n\n export function sincos(x: f64): void { // see: musl/tree/src/math/sincos.c\n var u = reinterpret(x);\n var ux = u32(u >> 32);\n var sign = ux >> 31;\n ux &= 0x7FFFFFFF;\n\n if (ux <= 0x3FE921FB) { // |x| ~<= π/4\n if (ux < 0x3E46A09E) { // if |x| < 2**-27 * sqrt(2)\n sincos_sin = x;\n sincos_cos = 1;\n return;\n }\n sincos_sin = sin_kern(x, 0, 0);\n sincos_cos = cos_kern(x, 0);\n return;\n }\n // sin(Inf or NaN) is NaN\n if (ux >= 0x7F800000) {\n let xx = x - x;\n sincos_sin = xx;\n sincos_cos = xx;\n return;\n }\n // general argument reduction needed\n var n = rempio2(x, u, sign);\n var y0 = rempio2_y0;\n var y1 = rempio2_y1;\n var s = sin_kern(y0, y1, 1);\n var c = cos_kern(y0, y1);\n var sin = s, cos = c;\n if (n & 1) {\n sin = c;\n cos = -s;\n }\n if (n & 2) {\n sin = -sin;\n cos = -cos;\n }\n sincos_sin = sin;\n sincos_cos = cos;\n }\n}\n\n// @ts-ignore: decorator\n@lazy var rempio2f_y: f64;\n\n// @ts-ignore: decorator\n@lazy @inline const PIO2F_TABLE = memory.data([\n 0xA2F9836E4E441529,\n 0xFC2757D1F534DDC0,\n 0xDB6295993C439041,\n 0xFE5163ABDEBBC561\n]);\n\nfunction Rf(z: f32): f32 { // Rational approximation of (asin(x)-x)/x^3\n const // see: musl/src/math/asinf.c and SUN COPYRIGHT NOTICE above\n pS0 = reinterpret(0x3E2AAA75), // 1.6666586697e-01f\n pS1 = reinterpret(0xBD2F13BA), // -4.2743422091e-02f\n pS2 = reinterpret(0xBC0DD36B), // -8.6563630030e-03f\n qS1 = reinterpret(0xBF34E5AE); // -7.0662963390e-01f\n\n var p = z * (pS0 + z * (pS1 + z * pS2));\n var q: f32 = 1 + z * qS1;\n return p / q;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction expo2f(x: f32, sign: f32): f32 { // exp(x)/2 for x >= log(DBL_MAX)\n const // see: musl/src/math/__expo2f.c\n k = 235,\n kln2 = reinterpret(0x4322E3BC); // 0x1.45c778p+7f\n var scale = reinterpret(u32(0x7F + (k >> 1)) << 23);\n // in directed rounding correct sign before rounding or overflow is important\n return NativeMathf.exp(x - kln2) * (sign * scale) * scale;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction pio2f_large_quot(x: f32, u: i32): i32 { // see: jdh8/metallic/blob/master/src/math/float/rem_pio2f.c\n const coeff = reinterpret(0x3BF921FB54442D18); // π * 0x1p-65 = 8.51530395021638647334e-20\n\n var offset = (u >> 23) - 152;\n var shift = u64(offset & 63);\n var tblPtr = PIO2F_TABLE + (offset >> 6 << 3);\n\n var b0 = load(tblPtr, 0 << 3);\n var b1 = load(tblPtr, 1 << 3);\n var lo: u64;\n\n if (shift > 32) {\n let b2 = load(tblPtr, 2 << 3);\n lo = b2 >> (96 - shift);\n lo |= b1 << (shift - 32);\n } else {\n lo = b1 >> (32 - shift);\n }\n\n var hi = (b1 >> (64 - shift)) | (b0 << shift);\n var mantissa: u64 = (u & 0x007FFFFF) | 0x00800000;\n var product = mantissa * hi + (mantissa * lo >> 32);\n var r: i64 = product << 2;\n var q = i32((product >> 62) + (r >>> 63));\n rempio2f_y = copysign(coeff, x) * r;\n return q;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction rempio2f(x: f32, u: u32, sign: i32): i32 { // see: jdh8/metallic/blob/master/src/math/float/rem_pio2f.c\n const\n pi2hi = reinterpret(0x3FF921FB50000000), // 1.57079631090164184570\n pi2lo = reinterpret(0x3E5110B4611A6263), // 1.58932547735281966916e-8\n _2_pi = reinterpret(0x3FE45F306DC9C883); // 0.63661977236758134308\n\n if (u < 0x4DC90FDB) { // π * 0x1p28\n let q = nearest(x * _2_pi);\n rempio2f_y = x - q * pi2hi - q * pi2lo;\n return q;\n }\n\n var q = pio2f_large_quot(x, u);\n return select(-q, q, sign);\n}\n\n// |sin(x)/x - s(x)| < 2**-37.5 (~[-4.89e-12, 4.824e-12]).\n// @ts-ignore: decorator\n@inline\nfunction sin_kernf(x: f64): f32 { // see: musl/tree/src/math/__sindf.c\n const\n S1 = reinterpret(0xBFC5555554CBAC77), // -0x15555554cbac77.0p-55\n S2 = reinterpret(0x3F811110896EFBB2), // 0x111110896efbb2.0p-59\n S3 = reinterpret(0xBF2A00F9E2CAE774), // -0x1a00f9e2cae774.0p-65\n S4 = reinterpret(0x3EC6CD878C3B46A7); // 0x16cd878c3b46a7.0p-71\n\n var z = x * x;\n var w = z * z;\n var r = S3 + z * S4;\n var s = z * x;\n return f32((x + s * (S1 + z * S2)) + s * w * r);\n}\n\n// |cos(x) - c(x)| < 2**-34.1 (~[-5.37e-11, 5.295e-11]).\n// @ts-ignore: decorator\n@inline\nfunction cos_kernf(x: f64): f32 { // see: musl/tree/src/math/__cosdf.c\n const\n C0 = reinterpret(0xBFDFFFFFFD0C5E81), // -0x1ffffffd0c5e81.0p-54\n C1 = reinterpret(0x3FA55553E1053A42), // 0x155553e1053a42.0p-57\n C2 = reinterpret(0xBF56C087E80F1E27), // -0x16c087e80f1e27.0p-62\n C3 = reinterpret(0x3EF99342E0EE5069); // 0x199342e0ee5069.0p-68\n\n var z = x * x;\n var w = z * z;\n var r = C2 + z * C3;\n return f32(((1 + z * C0) + w * C1) + (w * z) * r);\n}\n\n// |tan(x)/x - t(x)| < 2**-25.5 (~[-2e-08, 2e-08]).\n// @ts-ignore: decorator\n@inline\nfunction tan_kernf(x: f64, odd: i32): f32 { // see: musl/tree/src/math/__tandf.c\n const\n T0 = reinterpret(0x3FD5554D3418C99F), // 0x15554d3418c99f.0p-54\n T1 = reinterpret(0x3FC112FD38999F72), // 0x1112fd38999f72.0p-55\n T2 = reinterpret(0x3FAB54C91D865AFE), // 0x1b54c91d865afe.0p-57\n T3 = reinterpret(0x3F991DF3908C33CE), // 0x191df3908c33ce.0p-58\n T4 = reinterpret(0x3F685DADFCECF44E), // 0x185dadfcecf44e.0p-61\n T5 = reinterpret(0x3F8362B9BF971BCD); // 0x1362b9bf971bcd.0p-59\n\n var z = x * x;\n var r = T4 + z * T5;\n var t = T2 + z * T3;\n var w = z * z;\n var s = z * x;\n var u = T0 + z * T1;\n\n r = (x + s * u) + (s * w) * (t + w * r);\n return f32(odd ? -1 / r : r);\n}\n\n// See: jdh8/metallic/src/math/float/log2f.c and jdh8/metallic/src/math/float/kernel/atanh.h\n// @ts-ignore: decorator\n@inline\nfunction log2f(x: f64): f64 {\n const\n log2e = reinterpret(0x3FF71547652B82FE), // 1.44269504088896340736\n c0 = reinterpret(0x3FD555554FD9CAEF), // 0.33333332822728226129\n c1 = reinterpret(0x3FC999A7A8AF4132), // 0.20000167595436263505\n c2 = reinterpret(0x3FC2438D79437030), // 0.14268654271188685375\n c3 = reinterpret(0x3FBE2F663B001C97); // 0.11791075649681414150\n\n var i = reinterpret(x);\n var exponent = (i - 0x3FE6A09E667F3BCD) >> 52;\n x = reinterpret(i - (exponent << 52));\n x = (x - 1) / (x + 1);\n var xx = x * x;\n var y = x + x * xx * (c0 + c1 * xx + (c2 + c3 * xx) * (xx * xx));\n return (2 * log2e) * y + exponent;\n}\n\n// See: jdh8/metallic/src/math/float/exp2f.h and jdh8/metallic/blob/master/src/math/float/kernel/exp2f.h\n// @ts-ignore: decorator\n@inline\nfunction exp2f(x: f64): f64 {\n const\n c0 = reinterpret(0x3FE62E4302FCC24A), // 6.931471880289532425e-1\n c1 = reinterpret(0x3FCEBFBE07D97B91), // 2.402265108421173406e-1\n c2 = reinterpret(0x3FAC6AF6CCFC1A65), // 5.550357105498874537e-2\n c3 = reinterpret(0x3F83B29E3CE9AEF6), // 9.618030771171497658e-3\n c4 = reinterpret(0x3F55F0896145A89F), // 1.339086685300950937e-3\n c5 = reinterpret(0x3F2446C81E384864); // 1.546973499989028719e-4\n\n if (x < -1022) return 0;\n if (x >= 1024) return Infinity;\n\n var n = nearest(x);\n x -= n;\n var xx = x * x;\n var y = 1 + x * (c0 + c1 * x + (c2 + c3 * x) * xx + (c4 + c5 * x) * (xx * xx));\n return reinterpret(reinterpret(y) + (n << 52));\n}\n\nexport namespace NativeMathf {\n\n // @ts-ignore: decorator\n @lazy\n export const E = NativeMath.E;\n\n // @ts-ignore: decorator\n @lazy\n export const LN2 = NativeMath.LN2;\n\n // @ts-ignore: decorator\n @lazy\n export const LN10 = NativeMath.LN10;\n\n // @ts-ignore: decorator\n @lazy\n export const LOG2E = NativeMath.LOG2E;\n\n // @ts-ignore: decorator\n @lazy\n export const LOG10E = NativeMath.LOG10E;\n\n // @ts-ignore: decorator\n @lazy\n export const PI = NativeMath.PI;\n\n // @ts-ignore: decorator\n @lazy\n export const SQRT1_2 = NativeMath.SQRT1_2;\n\n // @ts-ignore: decorator\n @lazy\n export const SQRT2 = NativeMath.SQRT2;\n\n // @ts-ignore: decorator\n @lazy\n export var sincos_sin: f32 = 0;\n\n // @ts-ignore: decorator\n @lazy\n export var sincos_cos: f32 = 0;\n\n // @ts-ignore: decorator\n @inline\n export function abs(x: f32): f32 {\n return builtin_abs(x);\n }\n\n export function acos(x: f32): f32 { // see: musl/src/math/acosf.c and SUN COPYRIGHT NOTICE above\n const\n pio2_hi = reinterpret(0x3FC90FDA), // 1.5707962513e+00f\n pio2_lo = reinterpret(0x33A22168), // 7.5497894159e-08f\n Ox1p_120f = reinterpret(0x03800000); // 0x1p-120f\n\n var hx = reinterpret(x);\n var ix = hx & 0x7FFFFFFF;\n if (ix >= 0x3F800000) {\n if (ix == 0x3F800000) {\n return select(2 * pio2_hi + Ox1p_120f, 0, hx < 0);\n }\n return 0 / (x - x);\n }\n if (ix < 0x3F000000) {\n if (ix <= 0x32800000) return pio2_hi + Ox1p_120f;\n return pio2_hi - (x - (pio2_lo - x * Rf(x * x)));\n }\n var z: f32, w: f32, s: f32;\n if (hx < 0) {\n // z = (1 + x) * 0.5;\n z = 0.5 + x * 0.5;\n s = builtin_sqrt(z);\n w = Rf(z) * s - pio2_lo;\n return 2 * (pio2_hi - (s + w));\n }\n // z = (1 - x) * 0.5;\n z = 0.5 - x * 0.5;\n s = builtin_sqrt(z);\n hx = reinterpret(s);\n var df = reinterpret(hx & 0xFFFFF000);\n var c = (z - df * df) / (s + df);\n w = Rf(z) * s + c;\n return 2 * (df + w);\n }\n\n export function acosh(x: f32): f32 { // see: musl/src/math/acoshf.c\n const s = reinterpret(0x3F317218); // 0.693147180559945309417232121458176568f\n var u = reinterpret(x);\n var a = u & 0x7FFFFFFF;\n if (a < 0x3F800000 + (1 << 23)) { // |x| < 2, invalid if x < 1\n let xm1 = x - 1;\n return log1p(xm1 + builtin_sqrt(xm1 * (xm1 + 2)));\n }\n if (u < 0x3F800000 + (12 << 23)) { // 2 <= x < 0x1p12\n return log(2 * x - 1 / (x + builtin_sqrt(x * x - 1)));\n }\n // x >= 0x1p12 or x <= -2 or NaN\n return log(x) + s;\n }\n\n export function asin(x: f32): f32 { // see: musl/src/math/asinf.c and SUN COPYRIGHT NOTICE above\n const\n pio2 = reinterpret(0x3FC90FDB), // 1.570796326794896558e+00f\n Ox1p_120f = reinterpret(0x03800000); // 0x1p-120f\n\n var sx = x;\n var hx = reinterpret(x) & 0x7FFFFFFF;\n if (hx >= 0x3F800000) {\n if (hx == 0x3F800000) return x * pio2 + Ox1p_120f;\n return 0 / (x - x);\n }\n if (hx < 0x3F000000) {\n if (hx < 0x39800000 && hx >= 0x00800000) return x;\n return x + x * Rf(x * x);\n }\n // var z: f32 = (1 - builtin_abs(x)) * 0.5;\n var z: f32 = 0.5 - builtin_abs(x) * 0.5;\n var s = builtin_sqrt(z); // sic\n x = f32(pio2 - 2 * (s + s * Rf(z)));\n return builtin_copysign(x, sx);\n }\n\n export function asinh(x: f32): f32 { // see: musl/src/math/asinhf.c\n const c = reinterpret(0x3F317218); // 0.693147180559945309417232121458176568f\n var u = reinterpret(x) & 0x7FFFFFFF;\n var y = reinterpret(u);\n if (u >= 0x3F800000 + (12 << 23)) y = log(y) + c;\n else if (u >= 0x3F800000 + (1 << 23)) y = log(2 * y + 1 / (builtin_sqrt(y * y + 1) + y));\n else if (u >= 0x3F800000 - (12 << 23)) y = log1p(y + y * y / (builtin_sqrt(y * y + 1) + 1));\n return builtin_copysign(y, x);\n }\n\n export function atan(x: f32): f32 { // see: musl/src/math/atanf.c and SUN COPYRIGHT NOTICE above\n const\n atanhi0 = reinterpret(0x3EED6338), // 4.6364760399e-01f\n atanhi1 = reinterpret(0x3F490FDA), // 7.8539812565e-01f\n atanhi2 = reinterpret(0x3F7B985E), // 9.8279368877e-01f\n atanhi3 = reinterpret(0x3FC90FDA), // 1.5707962513e+00f\n atanlo0 = reinterpret(0x31AC3769), // 5.0121582440e-09f\n atanlo1 = reinterpret(0x33222168), // 3.7748947079e-08f\n atanlo2 = reinterpret(0x33140FB4), // 3.4473217170e-08f\n atanlo3 = reinterpret(0x33A22168), // 7.5497894159e-08f\n aT0 = reinterpret(0x3EAAAAA9), // 3.3333328366e-01f\n aT1 = reinterpret(0xBE4CCA98), // -1.9999158382e-01f\n aT2 = reinterpret(0x3E11F50D), // 1.4253635705e-01f\n aT3 = reinterpret(0xBDDA1247), // -1.0648017377e-01f\n aT4 = reinterpret(0x3D7CAC25), // 6.1687607318e-02f\n Ox1p_120f = reinterpret(0x03800000); // 0x1p-120f\n\n var ix = reinterpret(x);\n var sx = x;\n ix &= 0x7FFFFFFF;\n var z: f32;\n if (ix >= 0x4C800000) {\n if (isNaN(x)) return x;\n z = atanhi3 + Ox1p_120f;\n return builtin_copysign(z, sx);\n }\n var id: i32;\n if (ix < 0x3EE00000) {\n if (ix < 0x39800000) return x;\n id = -1;\n } else {\n x = builtin_abs(x);\n if (ix < 0x3F980000) {\n if (ix < 0x3F300000) {\n id = 0;\n x = (2.0 * x - 1.0) / (2.0 + x);\n } else {\n id = 1;\n x = (x - 1.0) / (x + 1.0);\n }\n } else {\n if (ix < 0x401C0000) {\n id = 2;\n x = (x - 1.5) / (1.0 + 1.5 * x);\n } else {\n id = 3;\n x = -1.0 / x;\n }\n }\n }\n z = x * x;\n var w = z * z;\n var s1 = z * (aT0 + w * (aT2 + w * aT4));\n var s2 = w * (aT1 + w * aT3);\n var s3 = x * (s1 + s2);\n if (id < 0) return x - s3;\n switch (id) {\n case 0: { z = atanhi0 - ((s3 - atanlo0) - x); break; }\n case 1: { z = atanhi1 - ((s3 - atanlo1) - x); break; }\n case 2: { z = atanhi2 - ((s3 - atanlo2) - x); break; }\n case 3: { z = atanhi3 - ((s3 - atanlo3) - x); break; }\n default: unreachable();\n }\n return builtin_copysign(z, sx);\n }\n\n export function atanh(x: f32): f32 { // see: musl/src/math/atanhf.c\n var u = reinterpret(x);\n var y = builtin_abs(x);\n if (u < 0x3F800000 - (1 << 23)) {\n if (u >= 0x3F800000 - (32 << 23)) y = 0.5 * log1p(2 * y * (1.0 + y / (1 - y)));\n } else y = 0.5 * log1p(2 * (y / (1 - y)));\n return builtin_copysign(y, x);\n }\n\n export function atan2(y: f32, x: f32): f32 { // see: musl/src/math/atan2f.c and SUN COPYRIGHT NOTICE above\n const\n pi = reinterpret(0x40490FDB), // 3.1415927410e+00f\n pi_lo = reinterpret(0xB3BBBD2E); // -8.7422776573e-08f\n\n if (isNaN(x) || isNaN(y)) return x + y;\n var ix = reinterpret(x);\n var iy = reinterpret(y);\n if (ix == 0x3F800000) return atan(y);\n var m = u32(((iy >> 31) & 1) | ((ix >> 30) & 2));\n ix &= 0x7FFFFFFF;\n iy &= 0x7FFFFFFF;\n if (iy == 0) {\n switch (m) {\n case 0:\n case 1: return y;\n case 2: return pi;\n case 3: return -pi;\n }\n }\n if (ix == 0) return m & 1 ? -pi / 2 : pi / 2;\n if (ix == 0x7F800000) {\n if (iy == 0x7F800000) {\n let t: f32 = m & 2 ? 3 * pi / 4 : pi / 4;\n return m & 1 ? -t : t;\n } else {\n let t: f32 = m & 2 ? pi : 0.0;\n return m & 1 ? -t : t;\n }\n }\n if (ix + (26 << 23) < iy || iy == 0x7F800000) return m & 1 ? -pi / 2 : pi / 2;\n var z: f32;\n if ((m & 2) && iy + (26 << 23) < ix) z = 0.0;\n else z = atan(builtin_abs(y / x));\n switch (m) {\n case 0: return z;\n case 1: return -z;\n case 2: return pi - (z - pi_lo);\n case 3: return (z - pi_lo) - pi;\n }\n unreachable();\n return 0;\n }\n\n export function cbrt(x: f32): f32 { // see: musl/src/math/cbrtf.c and SUN COPYRIGHT NOTICE above\n const\n B1 = 709958130,\n B2 = 642849266,\n Ox1p24f = reinterpret(0x4B800000);\n\n var u = reinterpret(x);\n var hx = u & 0x7FFFFFFF;\n if (hx >= 0x7F800000) return x + x;\n if (hx < 0x00800000) {\n if (hx == 0) return x;\n u = reinterpret(x * Ox1p24f);\n hx = u & 0x7FFFFFFF;\n hx = hx / 3 + B2;\n } else {\n hx = hx / 3 + B1;\n }\n u &= 0x80000000;\n u |= hx;\n var t = reinterpret(u);\n var r = t * t * t;\n t = t * (x + x + r) / (x + r + r);\n r = t * t * t;\n t = t * (x + x + r) / (x + r + r);\n return t;\n }\n\n // @ts-ignore: decorator\n @inline\n export function ceil(x: f32): f32 {\n return builtin_ceil(x);\n }\n\n export function clz32(x: f32): f32 {\n if (!isFinite(x)) return 32;\n return builtin_clz(dtoi32(x));\n }\n\n export function cos(x: f32): f32 { // see: musl/src/math/cosf.c\n const\n c1pio2 = reinterpret(0x3FF921FB54442D18), // M_PI_2 * 1\n c2pio2 = reinterpret(0x400921FB54442D18), // M_PI_2 * 2\n c3pio2 = reinterpret(0x4012D97C7F3321D2), // M_PI_2 * 3\n c4pio2 = reinterpret(0x401921FB54442D18); // M_PI_2 * 4\n\n var ux = reinterpret(x);\n var sign = ux >> 31;\n ux &= 0x7FFFFFFF;\n\n if (ux <= 0x3F490FDA) { // |x| ~<= π/4\n if (ux < 0x39800000) { // |x| < 2**-12\n // raise inexact if x != 0\n return 1;\n }\n return cos_kernf(x);\n }\n\n if (ASC_SHRINK_LEVEL < 1) {\n if (ux <= 0x407B53D1) { // |x| ~<= 5π/4\n if (ux > 0x4016CBE3) { // |x| ~> 3π/4\n return -cos_kernf(sign ? x + c2pio2 : x - c2pio2);\n } else {\n return sign ? sin_kernf(x + c1pio2) : sin_kernf(c1pio2 - x);\n }\n }\n if (ux <= 0x40E231D5) { // |x| ~<= 9π/4\n if (ux > 0x40AFEDDF) { // |x| ~> 7π/4\n return cos_kernf(sign ? x + c4pio2 : x - c4pio2);\n } else {\n return sign ? sin_kernf(-x - c3pio2) : sin_kernf(x - c3pio2);\n }\n }\n }\n\n // cos(Inf or NaN) is NaN\n if (ux >= 0x7F800000) return x - x;\n\n // general argument reduction needed\n var n = rempio2f(x, ux, sign);\n var y = rempio2f_y;\n\n var t = n & 1 ? sin_kernf(y) : cos_kernf(y);\n return (n + 1) & 2 ? -t : t;\n }\n\n export function cosh(x: f32): f32 { // see: musl/src/math/coshf.c\n var u = reinterpret(x);\n u &= 0x7FFFFFFF;\n x = reinterpret(u);\n if (u < 0x3F317217) {\n if (u < 0x3F800000 - (12 << 23)) return 1;\n let t = expm1(x);\n // return 1 + t * t / (2 * (1 + t));\n return 1 + t * t / (2 + 2 * t);\n }\n if (u < 0x42B17217) {\n let t = exp(x);\n // return 0.5 * (t + 1 / t);\n return 0.5 * t + 0.5 / t;\n }\n return expo2f(x, 1);\n }\n\n // @ts-ignore: decorator\n @inline\n export function floor(x: f32): f32 {\n return builtin_floor(x);\n }\n\n export function exp(x: f32): f32 { // see: musl/src/math/expf.c and SUN COPYRIGHT NOTICE above\n if (ASC_SHRINK_LEVEL < 1) {\n return expf_lut(x);\n } else {\n const\n ln2hi = reinterpret(0x3F317200), // 6.9314575195e-1f\n ln2lo = reinterpret(0x35BFBE8E), // 1.4286067653e-6f\n invln2 = reinterpret(0x3FB8AA3B), // 1.4426950216e+0f\n P1 = reinterpret(0x3E2AAA8F), // 1.6666625440e-1f\n P2 = reinterpret(0xBB355215), // -2.7667332906e-3f\n Ox1p127f = reinterpret(0x7F000000); // 0x1p+127f\n\n let hx = reinterpret(x);\n let sign = hx >> 31;\n hx &= 0x7FFFFFFF;\n if (hx >= 0x42AEAC50) {\n if (hx > 0x7F800000) return x; // NaN\n if (hx >= 0x42B17218) {\n if (!sign) return x * Ox1p127f;\n else if (hx >= 0x42CFF1B5) return 0;\n }\n }\n let hi: f32, lo: f32;\n let k: i32;\n if (hx > 0x3EB17218) {\n if (hx > 0x3F851592) {\n k = i32(invln2 * x + builtin_copysign(0.5, x));\n } else {\n k = 1 - (sign << 1);\n }\n hi = x - k * ln2hi;\n lo = k * ln2lo;\n x = hi - lo;\n } else if (hx > 0x39000000) {\n k = 0;\n hi = x;\n lo = 0;\n } else {\n return 1 + x;\n }\n let xx = x * x;\n let c = x - xx * (P1 + xx * P2);\n let y: f32 = 1 + (x * c / (2 - c) - lo + hi);\n return k == 0 ? y : scalbn(y, k);\n }\n }\n\n export function exp2(x: f32): f32 {\n return exp2f_lut(x);\n }\n\n export function expm1(x: f32): f32 { // see: musl/src/math/expm1f.c and SUN COPYRIGHT NOTICE above\n const\n ln2_hi = reinterpret(0x3F317180), // 6.9313812256e-01f\n ln2_lo = reinterpret(0x3717F7D1), // 9.0580006145e-06f\n invln2 = reinterpret(0x3FB8AA3B), // 1.4426950216e+00f\n Q1 = reinterpret(0xBD088868), // -3.3333212137e-02f\n Q2 = reinterpret(0x3ACF3010), // 1.5807170421e-03f\n Ox1p127f = reinterpret(0x7F000000); // 0x1p+127f\n\n var u = reinterpret(x);\n var hx = u & 0x7FFFFFFF;\n var sign = u >> 31;\n if (hx >= 0x4195B844) {\n if (hx > 0x7F800000) return x;\n if (sign) return -1;\n if (hx > 0x42B17217) { // x > log(FLT_MAX)\n x *= Ox1p127f;\n return x;\n }\n }\n var c: f32 = 0.0, t: f32, k: i32;\n if (hx > 0x3EB17218) {\n k = select(\n 1 - (sign << 1),\n i32(invln2 * x + builtin_copysign(0.5, x)),\n hx < 0x3F851592\n );\n t = k;\n let hi = x - t * ln2_hi;\n let lo = t * ln2_lo;\n x = hi - lo;\n c = (hi - x) - lo;\n } else if (hx < 0x33000000) {\n return x;\n } else k = 0;\n var hfx: f32 = 0.5 * x;\n var hxs: f32 = x * hfx;\n var r1: f32 = 1.0 + hxs * (Q1 + hxs * Q2);\n t = 3.0 - r1 * hfx;\n var e = hxs * ((r1 - t) / (6.0 - x * t));\n if (k == 0) return x - (x * e - hxs);\n e = x * (e - c) - c;\n e -= hxs;\n if (k == -1) return 0.5 * (x - e) - 0.5;\n if (k == 1) {\n if (x < -0.25) return -2.0 * (e - (x + 0.5));\n return 1.0 + 2.0 * (x - e);\n }\n u = (0x7F + k) << 23;\n var twopk = reinterpret(u);\n var y: f32;\n if (k < 0 || k > 56) {\n y = x - e + 1.0;\n if (k == 128) y = y * 2.0 * Ox1p127f;\n else y = y * twopk;\n return y - 1.0;\n }\n u = (0x7F - k) << 23;\n y = reinterpret(u);\n if (k < 20) y = (1 - y) - e;\n else y = 1 - (e + y);\n return (x + y) * twopk;\n }\n\n // @ts-ignore: decorator\n @inline\n export function fround(x: f32): f32 {\n return x;\n }\n\n export function hypot(x: f32, y: f32): f32 { // see: musl/src/math/hypotf.c\n const\n Ox1p90f = reinterpret(0x6C800000),\n Ox1p_90f = reinterpret(0x12800000);\n\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n ux &= 0x7FFFFFFF;\n uy &= 0x7FFFFFFF;\n if (ux < uy) {\n let ut = ux;\n ux = uy;\n uy = ut;\n }\n x = reinterpret(ux);\n y = reinterpret(uy);\n if (uy == 0xFF << 23) return y;\n if (ux >= 0xFF << 23 || uy == 0 || ux - uy >= 25 << 23) return x + y;\n var z: f32 = 1;\n if (ux >= (0x7F + 60) << 23) {\n z = Ox1p90f;\n x *= Ox1p_90f;\n y *= Ox1p_90f;\n } else if (uy < (0x7F - 60) << 23) {\n z = Ox1p_90f;\n x *= Ox1p90f;\n y *= Ox1p90f;\n }\n return z * builtin_sqrt(f32(x * x + y * y));\n }\n\n // @ts-ignore: decorator\n @inline\n export function imul(x: f32, y: f32): f32 {\n /*\n * Wasm (MVP) and JS have different approaches for double->int conversions.\n *\n * For emulate JS conversion behavior and avoid trapping from wasm we should modulate by MAX_INT\n * our float-point arguments before actual convertion to integers.\n */\n if (!isFinite(x + y)) return 0;\n return (dtoi32(x) * dtoi32(y));\n }\n\n export function log(x: f32): f32 { // see: musl/src/math/logf.c and SUN COPYRIGHT NOTICE above\n if (ASC_SHRINK_LEVEL < 1) {\n return logf_lut(x);\n } else {\n const\n ln2_hi = reinterpret(0x3F317180), // 6.9313812256e-01f\n ln2_lo = reinterpret(0x3717F7D1), // 9.0580006145e-06f\n Lg1 = reinterpret(0x3F2AAAAA), // 0xaaaaaa.0p-24f\n Lg2 = reinterpret(0x3ECCCE13), // 0xccce13.0p-25f\n Lg3 = reinterpret(0x3E91E9EE), // 0x91e9ee.0p-25f\n Lg4 = reinterpret(0x3E789E26), // 0xf89e26.0p-26f\n Ox1p25f = reinterpret(0x4C000000);\n\n let u = reinterpret(x);\n let k = 0;\n let sign = u >> 31;\n if (sign || u < 0x00800000) {\n if (u << 1 == 0) return -1 / (x * x);\n if (sign) return (x - x) / 0;\n k -= 25;\n x *= Ox1p25f;\n u = reinterpret(x);\n } else if (u >= 0x7F800000) {\n return x;\n } else if (u == 0x3F800000) {\n return 0;\n }\n u += 0x3F800000 - 0x3F3504F3;\n k += i32(u >> 23) - 0x7F;\n u = (u & 0x007FFFFF) + 0x3F3504F3;\n x = reinterpret(u);\n let f = x - 1.0;\n let s = f / (2.0 + f);\n let z = s * s;\n let w = z * z;\n let t1 = w * (Lg2 + w * Lg4);\n let t2 = z * (Lg1 + w * Lg3);\n let r = t2 + t1;\n let hfsq = 0.5 * f * f;\n let dk = k;\n return s * (hfsq + r) + dk * ln2_lo - hfsq + f + dk * ln2_hi;\n }\n }\n\n export function log10(x: f32): f32 { // see: musl/src/math/log10f.c and SUN COPYRIGHT NOTICE above\n const\n ivln10hi = reinterpret(0x3EDE6000), // 4.3432617188e-01f\n ivln10lo = reinterpret(0xB804EAD9), // -3.1689971365e-05f\n log10_2hi = reinterpret(0x3E9A2080), // 3.0102920532e-01f\n log10_2lo = reinterpret(0x355427DB), // 7.9034151668e-07f\n Lg1 = reinterpret(0x3F2AAAAA), // 0xaaaaaa.0p-24f, 0.66666662693f\n Lg2 = reinterpret(0x3ECCCE13), // 0xccce13.0p-25f, 0.40000972152f\n Lg3 = reinterpret(0x3E91E9EE), // 0x91e9ee.0p-25f, 0.28498786688f\n Lg4 = reinterpret(0x3E789E26), // 0xf89e26.0p-26f, 0.24279078841f\n Ox1p25f = reinterpret(0x4C000000); // 0x1p25f\n\n var ux = reinterpret(x);\n var k = 0;\n var sign = ux >> 31;\n if (sign || ux < 0x00800000) {\n if (ux << 1 == 0) return -1 / (x * x);\n if (sign) return (x - x) / 0.0;\n k -= 25;\n x *= Ox1p25f;\n ux = reinterpret(x);\n } else if (ux >= 0x7F800000) {\n return x;\n } else if (ux == 0x3F800000) {\n return 0;\n }\n ux += 0x3F800000 - 0x3F3504F3;\n k += i32(ux >> 23) - 0x7F;\n ux = (ux & 0x007FFFFF) + 0x3F3504F3;\n x = reinterpret(ux);\n var f = x - 1.0;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * Lg4);\n var t2 = z * (Lg1 + w * Lg3);\n var r = t2 + t1;\n var hfsq: f32 = 0.5 * f * f;\n var hi = f - hfsq;\n ux = reinterpret(hi);\n ux &= 0xFFFFF000;\n hi = reinterpret(ux);\n var lo = f - hi - hfsq + s * (hfsq + r);\n var dk = k;\n return dk * log10_2lo + (lo + hi) * ivln10lo + lo * ivln10hi + hi * ivln10hi + dk * log10_2hi;\n }\n\n export function log1p(x: f32): f32 { // see: musl/src/math/log1pf.c and SUN COPYRIGHT NOTICE above\n const\n ln2_hi = reinterpret(0x3F317180), // 6.9313812256e-01\n ln2_lo = reinterpret(0x3717F7D1), // 9.0580006145e-06\n Lg1 = reinterpret(0x3F2AAAAA), // 0xaaaaaa.0p-24f, 0.66666662693f\n Lg2 = reinterpret(0x3ECCCE13), // 0xccce13.0p-25f, 0.40000972152f\n Lg3 = reinterpret(0x3E91E9EE), // 0x91e9ee.0p-25f, 0.28498786688f\n Lg4 = reinterpret(0x3E789E26); // 0xf89e26.0p-26f, 0.24279078841f\n\n var ix = reinterpret(x);\n var c: f32 = 0;\n var f: f32 = 0;\n var k = 1;\n if (ix < 0x3ED413D0 || bool(ix >> 31)) {\n if (ix >= 0xBF800000) {\n if (x == -1) return x / 0.0;\n return (x - x) / 0.0;\n }\n if (ix << 1 < 0x33800000 << 1) return x;\n if (ix <= 0xBE95F619) {\n k = 0;\n c = 0;\n f = x;\n }\n } else if (ix >= 0x7F800000) return x;\n if (k) {\n let uf: f32 = 1 + x;\n let iu = reinterpret(uf);\n iu += 0x3F800000 - 0x3F3504F3;\n k = i32(iu >> 23) - 0x7F;\n if (k < 25) {\n c = k >= 2 ? 1 - (uf - x) : x - (uf - 1);\n c /= uf;\n } else c = 0;\n iu = (iu & 0x007FFFFF) + 0x3F3504F3;\n f = reinterpret(iu) - 1;\n }\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * Lg4);\n var t2 = z * (Lg1 + w * Lg3);\n var r = t2 + t1;\n var hfsq: f32 = 0.5 * f * f;\n var dk = k;\n return s * (hfsq + r) + (dk * ln2_lo + c) - hfsq + f + dk * ln2_hi;\n }\n\n export function log2(x: f32): f32 { // see: musl/src/math/log2f.c and SUN COPYRIGHT NOTICE above\n if (ASC_SHRINK_LEVEL < 1) {\n return log2f_lut(x);\n } else {\n const\n ivln2hi = reinterpret(0x3FB8B000), // 1.4428710938e+00f\n ivln2lo = reinterpret(0xB9389AD4), // -1.7605285393e-04\n Lg1 = reinterpret(0x3F2AAAAA), // 0xaaaaaa.0p-24f, 0.66666662693f\n Lg2 = reinterpret(0x3ECCCE13), // 0xccce13.0p-25f, 0.40000972152f\n Lg3 = reinterpret(0x3E91E9EE), // 0x91e9ee.0p-25f, 0.28498786688f\n Lg4 = reinterpret(0x3E789E26), // 0xf89e26.0p-26f, 0.24279078841f\n Ox1p25f = reinterpret(0x4C000000); // 0x1p25f\n\n let ux = reinterpret(x);\n let k = 0;\n let sign = ux >> 31;\n if (sign || ux < 0x00800000) {\n if (ux << 1 == 0) return -1 / (x * x);\n if (sign) return (x - x) / 0.0;\n k -= 25;\n x *= Ox1p25f;\n ux = reinterpret(x);\n } else if (ux >= 0x7F800000) {\n return x;\n } else if (ux == 0x3F800000) {\n return 0;\n }\n ux += 0x3F800000 - 0x3F3504F3;\n k += i32(ux >> 23) - 0x7F;\n ux = (ux & 0x007FFFFF) + 0x3F3504F3;\n x = reinterpret(ux);\n let f = x - 1.0;\n let s = f / (2.0 + f);\n let z = s * s;\n let w = z * z;\n let t1 = w * (Lg2 + w * Lg4);\n let t2 = z * (Lg1 + w * Lg3);\n let r = t2 + t1;\n let hfsq: f32 = 0.5 * f * f;\n let hi = f - hfsq;\n let u = reinterpret(hi);\n u &= 0xFFFFF000;\n hi = reinterpret(u);\n let lo: f32 = f - hi - hfsq + s * (hfsq + r);\n let dk = k;\n return (lo + hi) * ivln2lo + lo * ivln2hi + hi * ivln2hi + dk;\n }\n }\n\n // @ts-ignore: decorator\n @inline\n export function max(value1: f32, value2: f32): f32 {\n return builtin_max(value1, value2);\n }\n\n // @ts-ignore: decorator\n @inline\n export function min(value1: f32, value2: f32): f32 {\n return builtin_min(value1, value2);\n }\n\n export function pow(x: f32, y: f32): f32 {\n // TODO: remove this fast pathes after introduced own mid-end IR with \"stdlib call simplify\" transforms\n if (builtin_abs(y) <= 2) {\n if (y == 2.0) return x * x;\n if (y == 0.5) {\n return select(\n builtin_abs(builtin_sqrt(x)),\n Infinity,\n x != -Infinity\n );\n }\n if (y == -1.0) return 1 / x;\n if (y == 1.0) return x;\n if (y == 0.0) return 1.0;\n }\n if (ASC_SHRINK_LEVEL < 1) {\n // see: musl/src/math/powf.c\n return powf_lut(x, y);\n } else {\n // based on: jdh8/metallic/src/math/float/powf.c\n if (y == 0) return 1;\n // @ts-ignore: cast\n if (isNaN(x) | isNaN(y)) {\n return NaN;\n }\n let sign: u32 = 0;\n let uy = reinterpret(y);\n let ux = reinterpret(x);\n let sx = ux >> 31;\n ux &= 0x7FFFFFFF;\n if (sx && nearest(y) == y) {\n x = -x;\n sx = 0;\n sign = u32(nearest(y * 0.5) != y * 0.5) << 31;\n }\n let m: u32;\n if (ux == 0x3F800000) { // x == 1\n m = sx | u32((uy & 0x7FFFFFFF) == 0x7F800000) ? 0x7FC00000 : 0x3F800000;\n } else if (ux == 0) {\n m = uy < 0 ? 0x7F800000 : 0;\n } else if (ux == 0x7F800000) {\n m = uy < 0 ? 0 : 0x7F800000;\n } else if (sx) {\n m = 0x7FC00000;\n } else {\n m = reinterpret(exp2f(y * log2f(x)));\n }\n return reinterpret(m | sign);\n }\n }\n\n // @ts-ignore: decorator\n @inline\n export function seedRandom(value: i64): void {\n NativeMath.seedRandom(value);\n }\n\n // Using xoroshiro64starstar from http://xoshiro.di.unimi.it/xoroshiro64starstar.c\n export function random(): f32 {\n if (!random_seeded) seedRandom(reinterpret(seed()));\n\n var s0 = random_state0_32;\n var s1 = random_state1_32;\n var r = rotl(s0 * 0x9E3779BB, 5) * 5;\n\n s1 ^= s0;\n random_state0_32 = rotl(s0, 26) ^ s1 ^ (s1 << 9);\n random_state1_32 = rotl(s1, 13);\n\n return reinterpret((r >> 9) | (127 << 23)) - 1.0;\n }\n\n export function round(x: f32): f32 {\n if (ASC_SHRINK_LEVEL > 0) {\n return builtin_ceil(x) - f32(builtin_ceil(x) - 0.5 > x);\n } else {\n let roundUp = builtin_ceil(x);\n return select(roundUp, roundUp - 1.0, roundUp - 0.5 <= x);\n }\n }\n\n export function sign(x: f32): f32 {\n if (ASC_SHRINK_LEVEL > 0) {\n return select(builtin_copysign(1, x), x, builtin_abs(x) > 0);\n } else {\n return select(1, select(-1, x, x < 0), x > 0);\n }\n }\n\n // @ts-ignore: decorator\n @inline\n export function signbit(x: f32): bool {\n return (reinterpret(x) >>> 31);\n }\n\n export function sin(x: f32): f32 { // see: musl/src/math/sinf.c\n const\n s1pio2 = reinterpret(0x3FF921FB54442D18), // M_PI_2 * 1\n s2pio2 = reinterpret(0x400921FB54442D18), // M_PI_2 * 2\n s3pio2 = reinterpret(0x4012D97C7F3321D2), // M_PI_2 * 3\n s4pio2 = reinterpret(0x401921FB54442D18); // M_PI_2 * 4\n\n var ux = reinterpret(x);\n var sign = ux >> 31;\n ux &= 0x7FFFFFFF;\n\n if (ux <= 0x3F490FDA) { // |x| ~<= π/4\n if (ux < 0x39800000) { // |x| < 2**-12\n return x;\n }\n return sin_kernf(x);\n }\n\n if (ASC_SHRINK_LEVEL < 1) {\n if (ux <= 0x407B53D1) { // |x| ~<= 5π/4\n if (ux <= 0x4016CBE3) { // |x| ~<= 3π/4\n return sign ? -cos_kernf(x + s1pio2) : cos_kernf(x - s1pio2);\n }\n return sin_kernf(-(sign ? x + s2pio2 : x - s2pio2));\n }\n\n if (ux <= 0x40E231D5) { // |x| ~<= 9π/4\n if (ux <= 0x40AFEDDF) { // |x| ~<= 7π/4\n return sign ? cos_kernf(x + s3pio2) : -cos_kernf(x - s3pio2);\n }\n return sin_kernf(sign ? x + s4pio2 : x - s4pio2);\n }\n }\n\n // sin(Inf or NaN) is NaN\n if (ux >= 0x7F800000) return x - x;\n\n var n = rempio2f(x, ux, sign);\n var y = rempio2f_y;\n\n var t = n & 1 ? cos_kernf(y) : sin_kernf(y);\n return n & 2 ? -t : t;\n }\n\n export function sinh(x: f32): f32 { // see: musl/src/math/sinhf.c\n var u = reinterpret(x) & 0x7FFFFFFF;\n var a = reinterpret(u);\n var h = builtin_copysign(0.5, x);\n if (u < 0x42B17217) {\n let t = expm1(a);\n if (u < 0x3F800000) {\n if (u < 0x3F800000 - (12 << 23)) return x;\n return h * (2 * t - t * t / (t + 1));\n }\n return h * (t + t / (t + 1));\n }\n return expo2f(a, 2 * h);\n }\n\n // @ts-ignore: decorator\n @inline\n export function sqrt(x: f32): f32 {\n return builtin_sqrt(x);\n }\n\n export function tan(x: f32): f32 { // see: musl/src/math/tanf.c\n const\n t1pio2 = reinterpret(0x3FF921FB54442D18), // 1 * M_PI_2\n t2pio2 = reinterpret(0x400921FB54442D18), // 2 * M_PI_2\n t3pio2 = reinterpret(0x4012D97C7F3321D2), // 3 * M_PI_2\n t4pio2 = reinterpret(0x401921FB54442D18); // 4 * M_PI_2\n\n var ux = reinterpret(x);\n var sign = ux >> 31;\n ux &= 0x7FFFFFFF;\n\n if (ux <= 0x3F490FDA) { // |x| ~<= π/4\n if (ux < 0x39800000) { // |x| < 2**-12\n return x;\n }\n return tan_kernf(x, 0);\n }\n\n if (ASC_SHRINK_LEVEL < 1) {\n if (ux <= 0x407B53D1) { // |x| ~<= 5π/4\n if (ux <= 0x4016CBE3) { // |x| ~<= 3π/4\n return tan_kernf((sign ? x + t1pio2 : x - t1pio2), 1);\n } else {\n return tan_kernf((sign ? x + t2pio2 : x - t2pio2), 0);\n }\n }\n if (ux <= 0x40E231D5) { // |x| ~<= 9π/4\n if (ux <= 0x40AFEDDF) { // |x| ~<= 7π/4\n return tan_kernf((sign ? x + t3pio2 : x - t3pio2), 1);\n } else {\n return tan_kernf((sign ? x + t4pio2 : x - t4pio2), 0);\n }\n }\n }\n\n // tan(Inf or NaN) is NaN\n if (ux >= 0x7F800000) return x - x;\n\n // argument reduction\n var n = rempio2f(x, ux, sign);\n var y = rempio2f_y;\n return tan_kernf(y, n & 1);\n }\n\n export function tanh(x: f32): f32 { // see: musl/src/math/tanhf.c\n var u = reinterpret(x);\n u &= 0x7FFFFFFF;\n var y = reinterpret(u);\n var t: f32;\n if (u > 0x3F0C9F54) {\n if (u > 0x41200000) t = 1 + 0 / y;\n else {\n t = expm1(2 * y);\n t = 1 - 2 / (t + 2);\n }\n } else if (u > 0x3E82C578) {\n t = expm1(2 * y);\n t = t / (t + 2);\n } else if (u >= 0x00800000) {\n t = expm1(-2 * y);\n t = -t / (t + 2);\n } else t = y;\n return builtin_copysign(t, x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function trunc(x: f32): f32 {\n return builtin_trunc(x);\n }\n\n export function scalbn(x: f32, n: i32): f32 { // see: https://git.musl-libc.org/cgit/musl/tree/src/math/scalbnf.c\n const\n Ox1p24f = reinterpret(0x4B800000),\n Ox1p127f = reinterpret(0x7F000000),\n Ox1p_126f = reinterpret(0x00800000);\n\n var y = x;\n if (n > 127) {\n y *= Ox1p127f;\n n -= 127;\n if (n > 127) {\n y *= Ox1p127f;\n n = builtin_min(n - 127, 127);\n }\n } else if (n < -126) {\n y *= Ox1p_126f * Ox1p24f;\n n += 126 - 24;\n if (n < -126) {\n y *= Ox1p_126f * Ox1p24f;\n n = builtin_max(n + 126 - 24, -126);\n }\n }\n return y * reinterpret((0x7F + n) << 23);\n }\n\n export function mod(x: f32, y: f32): f32 { // see: musl/src/math/fmodf.c\n if (builtin_abs(y) == 1.0) {\n // x % 1, x % -1 ==> sign(x) * abs(x - 1.0 * trunc(x / 1.0))\n // TODO: move this rule to compiler's optimization pass.\n // It could be apply for any x % C_pot, where \"C_pot\" is pow of two const.\n return builtin_copysign(x - builtin_trunc(x), x);\n }\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n var ex = i32(ux >> 23 & 0xFF);\n var ey = i32(uy >> 23 & 0xFF);\n var sm = ux & 0x80000000;\n var uy1 = uy << 1;\n if (uy1 == 0 || ex == 0xFF || isNaN(y)) {\n let m = x * y;\n return m / m;\n }\n var ux1 = ux << 1;\n if (ux1 <= uy1) {\n return x * f32(ux1 != uy1);\n }\n if (!ex) {\n ex -= builtin_clz(ux << 9);\n ux <<= 1 - ex;\n } else {\n ux &= -1 >> 9;\n ux |= 1 << 23;\n }\n if (!ey) {\n ey -= builtin_clz(uy << 9);\n uy <<= 1 - ey;\n } else {\n uy &= u32(-1) >> 9;\n uy |= 1 << 23;\n }\n while (ex > ey) {\n if (ux >= uy) {\n if (ux == uy) return 0 * x;\n ux -= uy;\n }\n ux <<= 1;\n --ex;\n }\n if (ux >= uy) {\n if (ux == uy) return 0 * x;\n ux -= uy;\n }\n // for (; !(ux >> 23); ux <<= 1) --ex;\n var shift = builtin_clz(ux << 8);\n ex -= shift;\n ux <<= shift;\n if (ex > 0) {\n ux -= 1 << 23;\n ux |= ex << 23;\n } else {\n ux >>= -ex + 1;\n }\n return reinterpret(ux | sm);\n }\n\n export function rem(x: f32, y: f32): f32 { // see: musl/src/math/remquof.c\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n var ex = i32(ux >> 23 & 0xFF);\n var ey = i32(uy >> 23 & 0xFF);\n var uxi = ux;\n if (uy << 1 == 0 || ex == 0xFF || isNaN(y)) return (x * y) / (x * y);\n if (ux << 1 == 0) return x;\n if (!ex) {\n ex -= builtin_clz(uxi << 9);\n uxi <<= 1 - ex;\n } else {\n uxi &= u32(-1) >> 9;\n uxi |= 1 << 23;\n }\n if (!ey) {\n ey -= builtin_clz(uy << 9);\n uy <<= 1 - ey;\n } else {\n uy &= u32(-1) >> 9;\n uy |= 1 << 23;\n }\n var q = 0;\n do {\n if (ex < ey) {\n if (ex + 1 == ey) break; // goto end\n return x;\n }\n while (ex > ey) {\n if (uxi >= uy) {\n uxi -= uy;\n ++q;\n }\n uxi <<= 1;\n q <<= 1;\n --ex;\n }\n if (uxi >= uy) {\n uxi -= uy;\n ++q;\n }\n if (uxi == 0) ex = -30;\n else {\n let shift = builtin_clz(uxi << 8);\n ex -= shift;\n uxi <<= shift;\n }\n break;\n } while (false);\n // end:\n if (ex > 0) {\n uxi -= 1 << 23;\n uxi |= ex << 23;\n } else {\n uxi >>= -ex + 1;\n }\n x = reinterpret(uxi);\n y = builtin_abs(y);\n var x2 = x + x;\n if (ex == ey || (ex + 1 == ey && (x2 > y || (x2 == y && bool(q & 1))))) {\n x -= y;\n // q++;\n }\n return ux < 0 ? -x : x;\n }\n\n export function sincos(x: f32): void { // see: musl/tree/src/math/sincosf.c\n const\n s1pio2 = reinterpret(0x3FF921FB54442D18), // 1 * M_PI_2\n s2pio2 = reinterpret(0x400921FB54442D18), // 2 * M_PI_2\n s3pio2 = reinterpret(0x4012D97C7F3321D2), // 3 * M_PI_2\n s4pio2 = reinterpret(0x401921FB54442D18); // 4 * M_PI_2\n\n var ux = reinterpret(x);\n var sign = ux >> 31;\n ux &= 0x7FFFFFFF;\n\n if (ux <= 0x3F490FDA) { // |x| ~<= π/4\n if (ux < 0x39800000) { // |x| < 2**-12\n sincos_sin = x;\n sincos_cos = 1;\n return;\n }\n sincos_sin = sin_kernf(x);\n sincos_cos = cos_kernf(x);\n return;\n }\n if (ASC_SHRINK_LEVEL < 1) {\n if (ux <= 0x407B53D1) { // |x| ~<= 5π/4\n if (ux <= 0x4016CBE3) { // |x| ~<= 3π/4\n if (sign) {\n sincos_sin = -cos_kernf(x + s1pio2);\n sincos_cos = sin_kernf(x + s1pio2);\n } else {\n sincos_sin = cos_kernf(s1pio2 - x);\n sincos_cos = sin_kernf(s1pio2 - x);\n }\n return;\n }\n // -sin(x + c) is not correct if x+c could be 0: -0 vs +0\n sincos_sin = -sin_kernf(sign ? x + s2pio2 : x - s2pio2);\n sincos_cos = -cos_kernf(sign ? x + s2pio2 : x - s2pio2);\n return;\n }\n if (ux <= 0x40E231D5) { // |x| ~<= 9π/4\n if (ux <= 0x40AFEDDF) { // |x| ~<= 7π/4\n if (sign) {\n sincos_sin = cos_kernf(x + s3pio2);\n sincos_cos = -sin_kernf(x + s3pio2);\n } else {\n sincos_sin = -cos_kernf(x - s3pio2);\n sincos_cos = sin_kernf(x - s3pio2);\n }\n return;\n }\n sincos_sin = sin_kernf(sign ? x + s4pio2 : x - s4pio2);\n sincos_cos = cos_kernf(sign ? x + s4pio2 : x - s4pio2);\n return;\n }\n }\n // sin(Inf or NaN) is NaN\n if (ux >= 0x7F800000) {\n let xx = x - x;\n sincos_sin = xx;\n sincos_cos = xx;\n return;\n }\n // general argument reduction needed\n var n = rempio2f(x, ux, sign);\n var y = rempio2f_y;\n var s = sin_kernf(y);\n var c = cos_kernf(y);\n var sin = s, cos = c;\n if (n & 1) {\n sin = c;\n cos = -s;\n }\n if (n & 2) {\n sin = -sin;\n cos = -cos;\n }\n sincos_sin = sin;\n sincos_cos = cos;\n }\n}\n\nexport function ipow32(x: i32, e: i32): i32 {\n var out = 1;\n if (ASC_SHRINK_LEVEL < 1) {\n if (x == 2) {\n return select(1 << e, 0, e < 32);\n }\n if (e <= 0) {\n if (x == -1) return select(-1, 1, e & 1);\n return i32(e == 0) | i32(x == 1);\n }\n else if (e == 1) return x;\n else if (e == 2) return x * x;\n else if (e < 32) {\n let log = 32 - clz(e);\n // 32 = 2 ^ 5, so need only five cases.\n // But some extra cases needs for properly overflowing\n switch (log) {\n case 5: {\n if (e & 1) out *= x;\n e >>>= 1;\n x *= x;\n }\n case 4: {\n if (e & 1) out *= x;\n e >>>= 1;\n x *= x;\n }\n case 3: {\n if (e & 1) out *= x;\n e >>>= 1;\n x *= x;\n }\n case 2: {\n if (e & 1) out *= x;\n e >>>= 1;\n x *= x;\n }\n case 1: {\n if (e & 1) out *= x;\n }\n }\n return out;\n }\n }\n while (e) {\n if (e & 1) out *= x;\n e >>>= 1;\n x *= x;\n }\n return out;\n}\n\nexport function ipow64(x: i64, e: i64): i64 {\n var out: i64 = 1;\n if (ASC_SHRINK_LEVEL < 1) {\n if (x == 2) {\n return select(1 << e, 0, e < 64);\n }\n if (e <= 0) {\n if (x == -1) return select(-1, 1, e & 1);\n return i64(e == 0) | i64(x == 1);\n }\n else if (e == 1) return x;\n else if (e == 2) return x * x;\n else if (e < 64) {\n let log = 64 - clz(e);\n // 64 = 2 ^ 6, so need only six cases.\n // But some extra cases needs for properly overflowing\n switch (log) {\n case 6: {\n if (e & 1) out *= x;\n e >>>= 1;\n x *= x;\n }\n case 5: {\n if (e & 1) out *= x;\n e >>>= 1;\n x *= x;\n }\n case 4: {\n if (e & 1) out *= x;\n e >>>= 1;\n x *= x;\n }\n case 3: {\n if (e & 1) out *= x;\n e >>>= 1;\n x *= x;\n }\n case 2: {\n if (e & 1) out *= x;\n e >>>= 1;\n x *= x;\n }\n case 1: {\n if (e & 1) out *= x;\n }\n }\n return out;\n }\n }\n while (e) {\n if (e & 1) out *= x;\n e >>>= 1;\n x *= x;\n }\n return out;\n}\n\n/*\nTODO:\nIn compile time if only exponent is constant we could replace ipow32/ipow64 by shortest addition chains\nwhich usually faster than exponentiation by squaring\n\nfor ipow32 and e < 32:\n\nlet b: i32, c: i32, d: i32, h: i32, k: i32, g: i32;\nswitch (e) {\n case 1: return x;\n case 2: return x * x;\n case 3: return x * x * x;\n case 4: return (b = x * x) * b;\n case 5: return (b = x * x) * b * x;\n case 6: return (b = x * x) * b * b;\n case 7: return (b = x * x) * b * b * x;\n case 8: return (d = (b = x * x) * b) * d;\n case 9: return (c = x * x * x) * c * c;\n case 10: return (d = (b = x * x) * b) * d * b;\n case 11: return (d = (b = x * x) * b) * d * b * x;\n case 12: return (d = (b = x * x) * b) * d * d;\n case 13: return (d = (b = x * x) * b) * d * d * x;\n case 14: return (d = (b = x * x) * b) * d * d * b;\n case 15: return (k = (b = x * x) * b * x) * k * k;\n case 16: return (h = (d = (b = x * x) * b) * d) * h;\n case 17: return (h = (d = (b = x * x) * b) * d) * h * x;\n case 18: return (h = (d = (b = x * x) * b) * d * x) * h;\n case 19: return (h = (d = (b = x * x) * b) * d * x) * h * x;\n case 20: return (h = (k = (b = x * x) * b * x) * k) * h;\n case 21: return (h = (k = (b = x * x) * b * x) * k) * h * x;\n case 22: return (g = (h = (k = (b = x * x) * b * x) * k) * x) * g;\n case 23: return (h = (d = (c = (b = x * x) * x) * b) * d) * h * c;\n case 24: return (h = (d = (c = x * x * x) * c) * d) * h;\n case 25: return (h = (d = (c = x * x * x) * c) * d) * h * x;\n case 26: return (g = (h = (d = (c = x * x * x) * c) * d) * x) * g;\n case 27: return (h = (d = (c = x * x * x) * c) * d) * h * c;\n case 28: return (h = (d = (c = x * x * x) * c * x) * d) * h;\n case 29: return (h = (d = (c = x * x * x) * c * x) * d) * h * x;\n case 30: return (h = (d = (c = x * x * x) * c) * d * c) * h;\n case 31: return (h = (d = (c = x * x * x) * c) * d * c) * h * x;\n}\n\nfor ipow64: TODO\nswitch (e) {\n case 32:\n ...\n case 63:\n}\n*/\n","// This file is shared with the compiler and must remain portable\n\n/** Runtime types. */\nexport enum Runtime {\n /** Simple bump allocator without GC. */\n Stub = 0,\n /** Stop the world semi-automatic GC. */\n Minimal = 1,\n /** incremental GC. */\n Incremental = 2,\n}\n","import { compareImpl } from \"./string\";\n\ntype Comparator = (a: T, b: T) => i32;\n\n// @ts-ignore: decorator\n@lazy @inline const EMPTY = u32.MAX_VALUE;\n// @ts-ignore: decorator\n@inline const INSERTION_SORT_THRESHOLD = 48;\n// @ts-ignore: decorator\n@inline const MIN_RUN_LENGTH = 32;\n\n// @ts-ignore: decorator\n@inline\nfunction log2u(n: u32): u32 {\n return 31 - clz(n);\n}\n\n// @ts-ignore: decorator\n@inline\nexport function COMPARATOR(): Comparator {\n if (isInteger()) {\n if (isSigned() && sizeof() <= 4) {\n return (a, b) => i32(a) - i32(b);\n } else {\n return (a, b) => i32(a > b) - i32(a < b);\n }\n } else if (isFloat()) {\n if (sizeof() == 4) {\n return (a, b) => {\n var ia = reinterpret(f32(a));\n var ib = reinterpret(f32(b));\n ia ^= ia >> 31 >>> 1;\n ib ^= ib >> 31 >>> 1;\n return i32(ia > ib) - i32(ia < ib);\n };\n } else {\n return (a, b) => {\n var ia = reinterpret(f64(a));\n var ib = reinterpret(f64(b));\n ia ^= ia >> 63 >>> 1;\n ib ^= ib >> 63 >>> 1;\n return i32(ia > ib) - i32(ia < ib);\n };\n }\n } else if (isString()) {\n return (a, b) => {\n if (\n changetype(a) == changetype(b) ||\n changetype(a) == 0 ||\n changetype(b) == 0\n ) return 0;\n var alen = changetype(a).length;\n var blen = changetype(b).length;\n if (!(alen | blen)) return 0;\n if (!alen) return -1;\n if (!blen) return 1;\n let res = compareImpl(\n changetype(a), 0,\n changetype(b), 0,\n min(alen, blen)\n );\n return res ? res : alen - blen;\n };\n } else {\n return (a, b) => i32(a > b) - i32(a < b);\n }\n}\n\n// Power Sort implementation (stable) from paper \"Nearly-Optimal Mergesorts\"\n// https://arxiv.org/pdf/1805.04154.pdf\n// This method usually outperform TimSort.\n// TODO: refactor c >>> 31 to c < 0 when binaryen will support this opt\nexport function SORT(\n ptr: usize,\n len: i32,\n comparator: Comparator\n): void {\n if (len <= INSERTION_SORT_THRESHOLD) {\n if (len <= 1) return;\n if (ASC_SHRINK_LEVEL < 1) {\n switch (len) {\n case 3: {\n let a = load(ptr, 0);\n let b = load(ptr, 1 << alignof());\n let c = comparator(a, b) > 0;\n store(ptr, select(b, a, c), 0);\n a = select(a, b, c);\n b = load(ptr, 2 << alignof());\n c = comparator(a, b) > 0;\n store(ptr, select(b, a, c), 1 << alignof());\n store(ptr, select(a, b, c), 2 << alignof());\n }\n case 2: {\n let a = load(ptr, 0);\n let b = load(ptr, 1 << alignof());\n let c = comparator(a, b) > 0;\n store(ptr, select(b, a, c), 0);\n store(ptr, select(a, b, c), 1 << alignof());\n return;\n }\n }\n }\n insertionSort(ptr, 0, len - 1, 0, comparator);\n return;\n }\n\n var lgPlus2 = log2u(len) + 2;\n var lgPlus2Size = lgPlus2 << alignof();\n var leftRunStartBuf = __alloc(lgPlus2Size << 1);\n var leftRunEndBuf = leftRunStartBuf + lgPlus2Size;\n\n for (let i: u32 = 0; i < lgPlus2; ++i) {\n store(leftRunStartBuf + (i << alignof()), EMPTY);\n }\n\n var buffer = __alloc(len << alignof());\n\n var hi = len - 1;\n var endA = extendRunRight(ptr, 0, hi, comparator);\n var lenA = endA + 1;\n\n if (lenA < MIN_RUN_LENGTH) {\n endA = min(hi, MIN_RUN_LENGTH - 1);\n insertionSort(ptr, 0, endA, lenA, comparator);\n }\n\n var top: u32 = 0, startA = 0;\n while (endA < hi) {\n let startB = endA + 1;\n let endB = extendRunRight(ptr, startB, hi, comparator);\n let lenB = endB - startB + 1;\n\n if (lenB < MIN_RUN_LENGTH) {\n endB = min(hi, startB + MIN_RUN_LENGTH - 1);\n insertionSort(ptr, startB, endB, lenB, comparator);\n }\n\n let k = nodePower(0, hi, startA, startB, endB);\n\n for (let i = top; i > k; --i) {\n let start = load(leftRunStartBuf + (i << alignof()));\n if (start != EMPTY) {\n mergeRuns(\n ptr,\n start,\n load(leftRunEndBuf + (i << alignof())) + 1,\n endA,\n buffer,\n comparator\n );\n startA = start;\n store(leftRunStartBuf + (i << alignof()), EMPTY);\n }\n }\n\n store(leftRunStartBuf + (k << alignof()), startA);\n store(leftRunEndBuf + (k << alignof()), endA);\n startA = startB;\n endA = endB;\n top = k;\n }\n\n for (let i = top; i != 0; --i) {\n let start = load(leftRunStartBuf + (i << alignof()));\n if (start != EMPTY) {\n mergeRuns(\n ptr,\n start,\n load(leftRunEndBuf + (i << alignof())) + 1,\n hi,\n buffer,\n comparator\n );\n }\n }\n // dealloc aux buffers\n __free(buffer);\n __free(leftRunStartBuf);\n}\n\nfunction insertionSort(\n ptr: usize,\n left: i32,\n right: i32,\n presorted: i32,\n comparator: Comparator\n): void {\n if (ASC_SHRINK_LEVEL >= 1) {\n // slightly improved original insertion sort\n for (let i = left + presorted; i <= right; ++i) {\n let j = i - 1;\n let a = load(ptr + (i << alignof()));\n while (j >= left) {\n let b = load(ptr + (j << alignof()));\n if (comparator(a, b) < 0) {\n store(ptr + (j << alignof()), b, 1 << alignof()); --j;\n } else break;\n }\n store(ptr + (j << alignof()), a, 1 << alignof());\n }\n } else {\n // even-odd two-way insertion sort which allow increase minRunLen\n let range = right - left + 1;\n let i = left + select(range & 1, presorted - ((range - presorted) & 1), presorted == 0);\n for (; i <= right; i += 2) {\n let a = load(ptr + (i << alignof()), 0);\n let b = load(ptr + (i << alignof()), 1 << alignof());\n let min = b, max = a;\n if (comparator(a, b) <= 0) {\n min = a, max = b;\n }\n let j = i - 1;\n while (j >= left) {\n a = load(ptr + (j << alignof()));\n if (comparator(a, max) > 0) {\n store(ptr + (j << alignof()), a, 2 << alignof()); --j;\n } else break;\n }\n store(ptr + (j << alignof()), max, 2 << alignof());\n while (j >= left) {\n a = load(ptr + (j << alignof()));\n if (comparator(a, min) > 0) {\n store(ptr + (j << alignof()), a, 1 << alignof()); --j;\n } else break;\n }\n store(ptr + (j << alignof()), min, 1 << alignof());\n }\n }\n}\n\nfunction nodePower(left: u32, right: u32, startA: u32, startB: u32, endB: u32): u32 {\n var n: u64 = right - left + 1;\n var s = startB - (left << 1);\n var l = startA + s;\n var r = endB + s + 1;\n var a = (l << 30) / n;\n var b = (r << 30) / n;\n return clz((a ^ b));\n}\n\nfunction extendRunRight(\n ptr: usize,\n i: i32,\n right: i32,\n comparator: Comparator\n): i32 {\n if (i == right) return i;\n var j = i;\n if (comparator(\n load(ptr + ( j << alignof())),\n load(ptr + (++j << alignof()))\n ) > 0) {\n while (\n j < right &&\n (comparator(\n load(ptr + (j << alignof()), 1 << alignof()),\n load(ptr + (j << alignof()))\n ) >>> 31) // < 0\n ) ++j;\n // reverse\n let k = j;\n while (i < k) {\n let tmp = load(ptr + (i << alignof()));\n store(ptr + (i << alignof()), load(ptr + (k << alignof()))); ++i;\n store(ptr + (k << alignof()), tmp); --k;\n }\n } else {\n while (\n j < right &&\n comparator(\n load(ptr + (j << alignof()), 1 << alignof()),\n load(ptr + (j << alignof()))\n ) >= 0\n ) ++j;\n }\n return j;\n}\n\n// Merges arr[l..m - 1] and arr[m..r]\nfunction mergeRuns(\n ptr: usize,\n l: i32,\n m: i32,\n r: i32,\n buffer: usize,\n comparator: Comparator\n): void {\n --m;\n var i: i32, j: i32, t = r + m;\n for (i = m + 1; i > l; --i) {\n store(\n buffer + ((i - 1) << alignof()),\n load(ptr + ((i - 1) << alignof()))\n );\n }\n for (j = m; j < r; ++j) {\n store(\n buffer + ((t - j) << alignof()),\n load(ptr + (j << alignof()), 1 << alignof())\n );\n }\n for (let k = l; k <= r; ++k) {\n let a = load(buffer + (j << alignof()));\n let b = load(buffer + (i << alignof()));\n if (comparator(a, b) < 0) {\n store(ptr + (k << alignof()), a);\n --j;\n } else {\n store(ptr + (k << alignof()), b);\n ++i;\n }\n }\n}\n","/// \n\nimport { BLOCK_MAXSIZE } from \"./rt/common\";\nimport { Runtime } from \"shared/runtime\";\nimport { COMPARATOR, SORT } from \"./util/sort\";\nimport { REVERSE, FILL } from \"./util/bytes\";\nimport { joinBooleanArray, joinIntegerArray, joinFloatArray, joinStringArray, joinReferenceArray } from \"./util/string\";\nimport { idof, isArray as builtin_isArray } from \"./builtins\";\nimport { E_INDEXOUTOFRANGE, E_INVALIDLENGTH, E_EMPTYARRAY, E_HOLEYARRAY } from \"./util/error\";\n\n// @ts-ignore: decorator\n@inline @lazy const MIN_SIZE: usize = 8;\n\n/** Ensures that the given array has _at least_ the specified backing size. */\nfunction ensureCapacity(array: usize, newSize: usize, alignLog2: u32, canGrow: bool = true): void {\n // Depends on the fact that Arrays mimic ArrayBufferView\n var oldCapacity = changetype(array).byteLength;\n if (newSize > oldCapacity >>> alignLog2) {\n if (newSize > BLOCK_MAXSIZE >>> alignLog2) throw new RangeError(E_INVALIDLENGTH);\n let oldData = changetype(changetype(array).buffer);\n // Grows old capacity by factor of two.\n // Make sure we don't reach BLOCK_MAXSIZE for new growed capacity.\n let newCapacity = max(newSize, MIN_SIZE) << alignLog2;\n if (canGrow) newCapacity = max(min(oldCapacity << 1, BLOCK_MAXSIZE), newCapacity);\n let newData = __renew(oldData, newCapacity);\n // __new / __renew already init memory range as zeros in Incremental runtime.\n // So try to avoid this.\n if (ASC_RUNTIME != Runtime.Incremental) {\n memory.fill(newData + oldCapacity, 0, newCapacity - oldCapacity);\n }\n if (newData != oldData) { // oldData has been free'd\n store(array, newData, offsetof(\"buffer\"));\n store(array, newData, offsetof(\"dataStart\"));\n __link(array, changetype(newData), false);\n }\n store(array, newCapacity, offsetof(\"byteLength\"));\n }\n}\n\nexport class Array {\n [key: number]: T;\n\n // Mimicking ArrayBufferView isn't strictly necessary here but is done to allow glue code\n // to work with typed and normal arrays interchangeably. Technically, normal arrays do not need\n // `dataStart` (equals `buffer`) and `byteLength` (equals computed `buffer.byteLength`), but the\n // block is 16 bytes anyway so it's fine to have a couple extra fields in there.\n\n private buffer: ArrayBuffer;\n @unsafe readonly dataStart: usize;\n private byteLength: i32; // Uses here as capacity\n\n // Also note that Array with non-nullable T must guard against uninitialized null values\n // whenever an element is accessed. Otherwise, the compiler wouldn't be able to guarantee\n // type-safety anymore. For lack of a better word, such an array is \"holey\".\n\n private length_: i32;\n\n static isArray(value: U): bool {\n return isReference() ? changetype(value) != 0 && builtin_isArray(value) : false;\n }\n\n static create(capacity: i32 = 0): Array {\n WARNING(\"'Array.create' is deprecated. Use 'new Array' instead, making sure initial elements are initialized.\");\n var array = new Array(capacity);\n array.length = 0;\n return array;\n }\n\n constructor(length: i32 = 0) {\n if (length > BLOCK_MAXSIZE >>> alignof()) throw new RangeError(E_INVALIDLENGTH);\n // reserve capacity for at least MIN_SIZE elements\n var bufferSize = max(length, MIN_SIZE) << alignof();\n var buffer = changetype(__new(bufferSize, idof()));\n if (ASC_RUNTIME != Runtime.Incremental) {\n memory.fill(changetype(buffer), 0, bufferSize);\n }\n this.buffer = buffer; // links\n this.dataStart = changetype(buffer);\n this.byteLength = bufferSize;\n this.length_ = length;\n }\n\n get length(): i32 {\n return this.length_;\n }\n\n set length(newLength: i32) {\n ensureCapacity(changetype(this), newLength, alignof(), false);\n this.length_ = newLength;\n }\n\n every(fn: (value: T, index: i32, array: Array) => bool): bool {\n for (let i = 0, len = this.length_; i < min(len, this.length_); ++i) {\n if (!fn(load(this.dataStart + (i << alignof())), i, this)) return false;\n }\n return true;\n }\n\n findIndex(fn: (value: T, index: i32, array: Array) => bool): i32 {\n for (let i = 0, len = this.length_; i < min(len, this.length_); ++i) {\n if (fn(load(this.dataStart + (i << alignof())), i, this)) return i;\n }\n return -1;\n }\n\n findLastIndex(fn: (value: T, index: i32, array: Array) => bool): i32 {\n for (let i = this.length_ - 1; i >= 0; --i) {\n if (fn(load(this.dataStart + (i << alignof())), i, this)) return i;\n }\n return -1;\n }\n\n @operator(\"[]\") private __get(index: i32): T {\n if (index >= this.length_) throw new RangeError(E_INDEXOUTOFRANGE);\n var value = load(this.dataStart + (index << alignof()));\n if (isReference()) {\n if (!isNullable()) {\n if (!changetype(value)) throw new Error(E_HOLEYARRAY);\n }\n }\n return value;\n }\n\n @unsafe @operator(\"{}\") private __uget(index: i32): T {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator(\"[]=\") private __set(index: i32, value: T): void {\n if (index >= this.length_) {\n if (index < 0) throw new RangeError(E_INDEXOUTOFRANGE);\n ensureCapacity(changetype(this), index + 1, alignof());\n this.length_ = index + 1;\n }\n this.__uset(index, value);\n }\n\n @unsafe @operator(\"{}=\") private __uset(index: i32, value: T): void {\n store(this.dataStart + (index << alignof()), value);\n if (isManaged()) {\n __link(changetype(this), changetype(value), true);\n }\n }\n\n at(index: i32): T {\n var len = this.length_;\n index += select(0, len, index >= 0);\n if (index >= len) throw new RangeError(E_INDEXOUTOFRANGE);\n var value = load(this.dataStart + (index << alignof()));\n if (isReference()) {\n if (!isNullable()) {\n if (!changetype(value)) throw new Error(E_HOLEYARRAY);\n }\n }\n return value;\n }\n\n fill(value: T, start: i32 = 0, end: i32 = i32.MAX_VALUE): Array {\n if (isManaged()) {\n FILL(this.dataStart, this.length_, changetype(value), start, end);\n __link(changetype(this), changetype(value), false);\n } else {\n FILL(this.dataStart, this.length_, value, start, end);\n }\n return this;\n }\n\n includes(value: T, fromIndex: i32 = 0): bool {\n if (isFloat()) {\n let len = this.length_;\n if (len == 0 || fromIndex >= len) return false;\n if (fromIndex < 0) fromIndex = max(len + fromIndex, 0);\n let ptr = this.dataStart;\n while (fromIndex < len) {\n let elem = load(ptr + (fromIndex << alignof()));\n // @ts-ignore\n if (elem == value || isNaN(elem) & isNaN(value)) return true;\n ++fromIndex;\n }\n return false;\n } else {\n return this.indexOf(value, fromIndex) >= 0;\n }\n }\n\n indexOf(value: T, fromIndex: i32 = 0): i32 {\n var len = this.length_;\n if (len == 0 || fromIndex >= len) return -1;\n if (fromIndex < 0) fromIndex = max(len + fromIndex, 0);\n var ptr = this.dataStart;\n while (fromIndex < len) {\n if (load(ptr + (fromIndex << alignof())) == value) return fromIndex;\n ++fromIndex;\n }\n return -1;\n }\n\n lastIndexOf(value: T, fromIndex: i32 = this.length_): i32 {\n var len = this.length_;\n if (len == 0) return -1;\n if (fromIndex < 0) fromIndex = len + fromIndex;\n else if (fromIndex >= len) fromIndex = len - 1;\n var ptr = this.dataStart;\n while (fromIndex >= 0) {\n if (load(ptr + (fromIndex << alignof())) == value) return fromIndex;\n --fromIndex;\n }\n return -1;\n }\n\n push(value: T): i32 {\n var oldLen = this.length_;\n var len = oldLen + 1;\n ensureCapacity(changetype(this), len, alignof());\n if (isManaged()) {\n store(this.dataStart + (oldLen << alignof()), changetype(value));\n __link(changetype(this), changetype(value), true);\n } else {\n store(this.dataStart + (oldLen << alignof()), value);\n }\n this.length_ = len;\n return len;\n }\n\n concat(other: Array): Array {\n var thisLen = this.length_;\n var otherLen = other.length_;\n var outLen = thisLen + otherLen;\n if (outLen > BLOCK_MAXSIZE >>> alignof()) throw new Error(E_INVALIDLENGTH);\n var out = changetype>(__newArray(outLen, alignof(), idof>()));\n var outStart = out.dataStart;\n var thisSize = thisLen << alignof();\n if (isManaged()) {\n let thisStart = this.dataStart;\n for (let offset: usize = 0; offset < thisSize; offset += sizeof()) {\n let ref = load(thisStart + offset);\n store(outStart + offset, ref);\n __link(changetype(out), ref, true);\n }\n outStart += thisSize;\n let otherStart = other.dataStart;\n let otherSize = otherLen << alignof();\n for (let offset: usize = 0; offset < otherSize; offset += sizeof()) {\n let ref = load(otherStart + offset);\n store(outStart + offset, ref);\n __link(changetype(out), ref, true);\n }\n } else {\n memory.copy(outStart, this.dataStart, thisSize);\n memory.copy(outStart + thisSize, other.dataStart, otherLen << alignof());\n }\n return out;\n }\n\n copyWithin(target: i32, start: i32, end: i32 = i32.MAX_VALUE): Array {\n var ptr = this.dataStart;\n var len = this.length_;\n\n end = min(end, len);\n\n var to = target < 0 ? max(len + target, 0) : min(target, len);\n var from = start < 0 ? max(len + start, 0) : min(start, len);\n var last = end < 0 ? max(len + end, 0) : min(end, len);\n var count = min(last - from, len - to);\n\n memory.copy( // is memmove\n ptr + (to << alignof()),\n ptr + (from << alignof()),\n count << alignof()\n );\n return this;\n }\n\n pop(): T {\n var len = this.length_;\n if (len < 1) throw new RangeError(E_EMPTYARRAY);\n var val = load(this.dataStart + ((--len) << alignof()));\n this.length_ = len;\n return val;\n }\n\n forEach(fn: (value: T, index: i32, array: Array) => void): void {\n for (let i = 0, len = this.length_; i < min(len, this.length_); ++i) {\n fn(load(this.dataStart + (i << alignof())), i, this);\n }\n }\n\n map(fn: (value: T, index: i32, array: Array) => U): Array {\n var len = this.length_;\n var out = changetype>(__newArray(len, alignof(), idof>()));\n var outStart = out.dataStart;\n for (let i = 0; i < min(len, this.length_); ++i) {\n let result = fn(load(this.dataStart + (i << alignof())), i, this);\n store(outStart + (i << alignof()), result);\n if (isManaged()) {\n __link(changetype(out), changetype(result), true);\n }\n }\n return out;\n }\n\n filter(fn: (value: T, index: i32, array: Array) => bool): Array {\n var result = changetype>(__newArray(0, alignof(), idof>()));\n for (let i = 0, len = this.length_; i < min(len, this.length_); ++i) {\n let value = load(this.dataStart + (i << alignof()));\n if (fn(value, i, this)) result.push(value);\n }\n return result;\n }\n\n reduce(\n fn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U,\n initialValue: U\n ): U {\n var acc = initialValue;\n for (let i = 0, len = this.length_; i < min(len, this.length_); ++i) {\n acc = fn(acc, load(this.dataStart + (i << alignof())), i, this);\n }\n return acc;\n }\n\n reduceRight(\n fn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U,\n initialValue: U\n ): U {\n var acc = initialValue;\n for (let i = this.length_ - 1; i >= 0; --i) {\n acc = fn(acc, load(this.dataStart + (i << alignof())), i, this);\n }\n return acc;\n }\n\n shift(): T {\n var len = this.length_;\n if (len < 1) throw new RangeError(E_EMPTYARRAY);\n var base = this.dataStart;\n var element = load(base);\n var lastIndex = len - 1;\n memory.copy(\n base,\n base + sizeof(),\n lastIndex << alignof()\n );\n if (isReference()) {\n store(base + (lastIndex << alignof()), 0);\n } else {\n // @ts-ignore\n store(base + (lastIndex << alignof()), 0);\n }\n this.length_ = lastIndex;\n return element;\n }\n\n some(fn: (value: T, index: i32, array: Array) => bool): bool {\n for (let i = 0, len = this.length_; i < min(len, this.length_); ++i) {\n if (fn(load(this.dataStart + (i << alignof())), i, this)) return true;\n }\n return false;\n }\n\n unshift(value: T): i32 {\n var len = this.length_ + 1;\n ensureCapacity(changetype(this), len, alignof());\n var ptr = this.dataStart;\n memory.copy(\n ptr + sizeof(),\n ptr,\n (len - 1) << alignof()\n );\n store(ptr, value);\n if (isManaged()) {\n __link(changetype(this), changetype(value), true);\n }\n this.length_ = len;\n return len;\n }\n\n slice(start: i32 = 0, end: i32 = i32.MAX_VALUE): Array {\n var len = this.length_;\n start = start < 0 ? max(start + len, 0) : min(start, len);\n end = end < 0 ? max(end + len, 0) : min(end , len);\n len = max(end - start, 0);\n var slice = changetype>(__newArray(len, alignof(), idof>()));\n var sliceBase = slice.dataStart;\n var thisBase = this.dataStart + (start << alignof());\n if (isManaged()) {\n let off = 0;\n let end = len << alignof();\n while (off < end) {\n let ref = load(thisBase + off);\n store(sliceBase + off, ref);\n __link(changetype(slice), ref, true);\n off += sizeof();\n }\n } else {\n memory.copy(sliceBase, thisBase, len << alignof());\n }\n return slice;\n }\n\n splice(start: i32, deleteCount: i32 = i32.MAX_VALUE): Array {\n var len = this.length_;\n start = start < 0 ? max(len + start, 0) : min(start, len);\n deleteCount = max(min(deleteCount, len - start), 0);\n var result = changetype>(__newArray(deleteCount, alignof(), idof>()));\n var resultStart = result.dataStart;\n var thisStart = this.dataStart;\n var thisBase = thisStart + (start << alignof());\n memory.copy(\n resultStart,\n thisBase,\n deleteCount << alignof()\n );\n var offset = start + deleteCount;\n if (len != offset) {\n memory.copy(\n thisBase,\n thisStart + (offset << alignof()),\n (len - offset) << alignof()\n );\n }\n this.length_ = len - deleteCount;\n return result;\n }\n\n reverse(): Array {\n REVERSE(this.dataStart, this.length_);\n return this;\n }\n\n sort(comparator: (a: T, b: T) => i32 = COMPARATOR()): Array {\n SORT(this.dataStart, this.length_, comparator);\n return this;\n }\n\n join(separator: string = \",\"): string {\n var ptr = this.dataStart;\n var len = this.length_;\n if (isBoolean()) return joinBooleanArray(ptr, len, separator);\n if (isInteger()) return joinIntegerArray(ptr, len, separator);\n if (isFloat()) return joinFloatArray(ptr, len, separator);\n\n if (ASC_SHRINK_LEVEL < 1) {\n if (isString()) return joinStringArray(ptr, len, separator);\n }\n // For rest objects and arrays use general join routine\n if (isReference()) return joinReferenceArray(ptr, len, separator);\n ERROR(\"unspported element type\");\n return unreachable();\n }\n\n flat(): T {\n if (!isArray()) {\n ERROR(\"Cannot call flat() on Array where T is not an Array.\");\n }\n // Get the length and data start values\n var ptr = this.dataStart;\n var len = this.length_;\n\n // calculate the end size with an initial pass\n var size = 0;\n for (let i = 0; i < len; ++i) {\n let child = load(ptr + (i << alignof()));\n size += child == 0 ? 0 : load(child, offsetof(\"length_\"));\n }\n\n // calculate the byteLength of the resulting backing ArrayBuffer\n const align = alignof>();\n var byteLength = size << align;\n var outBuffer = changetype(__new(byteLength, idof()));\n\n // create the return value and initialize it\n var outArray = changetype(__new(offsetof(), idof()));\n store(changetype(outArray), size, offsetof(\"length_\"));\n\n // byteLength, dataStart, and buffer are all readonly\n store(changetype(outArray), byteLength, offsetof(\"byteLength\"));\n store(changetype(outArray), changetype(outBuffer), offsetof(\"dataStart\"));\n store(changetype(outArray), changetype(outBuffer), offsetof(\"buffer\"));\n __link(changetype(outArray), changetype(outBuffer), false);\n\n // set the elements\n var resultOffset: usize = 0;\n for (let i = 0; i < len; ++i) { // for each child\n let child = load(ptr + (i << alignof()));\n\n // ignore null arrays\n if (!child) continue;\n\n // copy the underlying buffer data to the result buffer\n let childDataLength = load(child, offsetof(\"length_\")) << align;\n memory.copy(\n changetype(outBuffer) + resultOffset,\n load(child, offsetof(\"dataStart\")),\n childDataLength\n );\n\n // advance the result length\n resultOffset += childDataLength;\n }\n\n // if the `valueof` type is managed, we must link each reference\n if (isManaged>()) {\n for (let i = 0; i < size; ++i) {\n let ref = load(changetype(outBuffer) + (i << usize(alignof>())));\n __link(changetype(outBuffer), ref, true);\n }\n }\n\n return outArray;\n }\n\n toString(): string {\n return this.join();\n }\n\n // RT integration\n\n @unsafe private __visit(cookie: u32): void {\n if (isManaged()) {\n let cur = this.dataStart;\n let end = cur + (this.length_ << alignof());\n while (cur < end) {\n let val = load(cur);\n if (val) __visit(val, cookie);\n cur += sizeof();\n }\n }\n __visit(changetype(this.buffer), cookie);\n }\n}\n","// Common error messages for use across the standard library. Keeping error messages compact\n// and reusing them where possible ensures minimal static data in binaries.\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_INDEXOUTOFRANGE: string = \"Index out of range\";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_VALUEOUTOFRANGE: string = \"Value out of range\";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_INVALIDLENGTH: string = \"Invalid length\";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_EMPTYARRAY: string = \"Array is empty\";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_HOLEYARRAY: string = \"Element type must be nullable if array is holey\";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_NOTIMPLEMENTED: string = \"Not implemented\";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_KEYNOTFOUND: string = \"Key does not exist\";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_ALLOCATION_TOO_LARGE: string = \"Allocation too large\";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_ALREADY_PINNED: string = \"Object already pinned\";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_NOT_PINNED: string = \"Object is not pinned\";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_URI_MALFORMED: string = \"URI malformed\";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_INVALIDDATE: string = \"Invalid Date\";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_UNPAIRED_SURROGATE: string = \"Unpaired surrogate\";\n"]} \ No newline at end of file +{"version":3,"sources":["~lib/rt/common.ts","~lib/rt/tlsf.ts","~lib/shared/typeinfo.ts","~lib/rt/itcms.ts","assembly/perlin.ts","~lib/util/math.ts","~lib/util/number.ts","~lib/util/string.ts","~lib/math.ts","~lib/shared/runtime.ts","~lib/util/sort.ts","~lib/array.ts","~lib/util/error.ts"],"names":[],"mappings":"yGWiHI,AAAI,EAAc,AAAK,SAAmC,eAO1D,AANoB,MAAkB,EAAgB,6CPvDhD,EAAO,uBAEJ,EAAI,KAEJ,AAAK,EAAJ,KAED,EAAI,KAEJ,AAAC,GAAI,KAEL,EAAI,KAEJ,AAAK,EAAJ,KAED,EAAI,KAEJ,AAAC,GAAI,KAEL,EAAI,KAEJ,AAAK,EAAJ,KAED,EAAI,KAEJ,AAAC,GAAI,KAEL,EAAI,KAEJ,AAAK,EAAJ,KAED,EAAI,KAEJ,AAAC,GAAI,KAhChB,iEAnCiB,AAfF,AAAe,AALjB,GAAU,aAKa,QAed,AAdP,AAAe,AALjB,GAAU,UAKa,WAepB,MAAE,IAAK,AAdR,AAAe,AALjB,GAAU,UAKa,WAepB,MAAE,EAAI,KAAK,OACZ,MAAE,EAAI,KAAK,OACV,MAAE,IAAK,OACP,MAAE,EAAI,KAAK,OAOV,MAAE,IAAK,AAtBxB,EAAK,KAsBsB,AArB3B,EAAK,KAqByB,AApB9B,EAAK,WAoBkC,QAmB5B,AApCI,AAgCR,AAhCa,EAgCT,GAAI,GAAK,EAAK,EAAI,UAAI,WAAM,aAfE,IAAK,EAAI,YAAG,EAAG,IAmBpC,SAlBH,MAAE,IAAK,EAAG,EAAI,YAAG,QAAS,QAkBhC,AAnCI,AA+BR,AA/Ba,EA+BT,GAAI,GAAK,EAAK,EAAI,UAAI,WAAM,eAI5B,EAlBkC,IAAK,EAAO,EAAO,IAkB5C,cAdH,MAAE,EAAK,KAAI,EAAG,EAAG,EAAI,kBAAS,QAcpC,EAdsC,EAAK,KAAI,EAAO,EAAG,IAchD,SAbH,MAAE,EAAK,KAAI,EAAG,EAAO,QAAa,QAaxC,AAJJ,AA9Ba,EA8BT,GAAI,GAAK,EAAK,EAAI,UAAI,WAAM,aAI5B,MAb0C,EAAK,KAAI,EAAO,EAAO,IAaxD,eARR,UAAK","sourceRoot":"./release","sourcesContent":["// Alignment guarantees\n\n// @ts-ignore: decorator\n@inline export const AL_BITS: u32 = 4; // 16 bytes to fit up to v128\n// @ts-ignore: decorator\n@inline export const AL_SIZE: usize = 1 << AL_BITS;\n// @ts-ignore: decorator\n@inline export const AL_MASK: usize = AL_SIZE - 1;\n\n// Extra debugging\n\n// @ts-ignore: decorator\n@inline export const DEBUG = true;\n// @ts-ignore: decorator\n@inline export const TRACE = false;\n// @ts-ignore: decorator\n@inline export const RTRACE = isDefined(ASC_RTRACE);\n// @ts-ignore: decorator\n@inline export const PROFILE = isDefined(ASC_PROFILE);\n\n// Memory manager\n\n// ╒════════════ Memory manager block layout (32-bit) ═════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤\n// │ MM info │ -4\n// ╞>ptr═══════════════════════════════════════════════════════════╡\n// │ ... │\n@unmanaged export class BLOCK {\n /** Memory manager info. */\n mmInfo: usize;\n}\n\n/** Overhead of a memory manager block. */\n// @ts-ignore: decorator\n@inline export const BLOCK_OVERHEAD: usize = offsetof();\n\n/** Maximum size of a memory manager block's payload. */\n// @ts-ignore: decorator\n@inline export const BLOCK_MAXSIZE: usize = (1 << 30) - BLOCK_OVERHEAD;\n\n// Garbage collector\n\n// ╒══════════ Garbage collector object layout (32-bit) ═══════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤\n// │ Memory manager block │ -20\n// ╞═══════════════════════════════════════════════════════════════╡\n// │ GC info │ -16\n// ├───────────────────────────────────────────────────────────────┤\n// │ GC info │ -12\n// ├───────────────────────────────────────────────────────────────┤\n// │ RT id │ -8\n// ├───────────────────────────────────────────────────────────────┤\n// │ RT size │ -4\n// ╞>ptr═══════════════════════════════════════════════════════════╡\n// │ ... │\n@unmanaged export class OBJECT extends BLOCK {\n /** Garbage collector info. */\n gcInfo: u32;\n /** Garbage collector info. */\n gcInfo2: u32;\n /** Runtime class id. */\n rtId: u32;\n /** Runtime object size. */\n rtSize: u32;\n}\n\n/** Overhead of a garbage collector object. Excludes memory manager block overhead. */\n// @ts-ignore: decorator\n@inline export const OBJECT_OVERHEAD: usize = (offsetof() - BLOCK_OVERHEAD + AL_MASK) & ~AL_MASK;\n\n/** Maximum size of a garbage collector object's payload. */\n// @ts-ignore: decorator\n@inline export const OBJECT_MAXSIZE: usize = BLOCK_MAXSIZE - OBJECT_OVERHEAD;\n\n/** Total of memory manager and garbage collector overhead. */\n// @ts-ignore: decorator\n@inline export const TOTAL_OVERHEAD: usize = BLOCK_OVERHEAD + OBJECT_OVERHEAD;\n","import { AL_BITS, AL_SIZE, AL_MASK, DEBUG, BLOCK, BLOCK_OVERHEAD, BLOCK_MAXSIZE } from \"./common\";\nimport { oninit, onalloc, onresize, onmove, onfree } from \"./rtrace\";\nimport { E_ALLOCATION_TOO_LARGE } from \"../util/error\";\n\n// === The TLSF (Two-Level Segregate Fit) memory allocator ===\n// see: http://www.gii.upv.es/tlsf/\n\n// - `ffs(x)` is equivalent to `ctz(x)` with x != 0\n// - `fls(x)` is equivalent to `sizeof(x) * 8 - clz(x) - 1`\n\n// ╒══════════════ Block size interpretation (32-bit) ═════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┼─┴─┴─┴─╫─┴─┴─┴─┤\n// │ | FL │ SB = SL + AL │ ◄─ usize\n// └───────────────────────────────────────────────┴───────╨───────┘\n// FL: first level, SL: second level, AL: alignment, SB: small block\n\n// @ts-ignore: decorator\n@inline const SL_BITS: u32 = 4;\n// @ts-ignore: decorator\n@inline const SL_SIZE: u32 = 1 << SL_BITS;\n\n// @ts-ignore: decorator\n@inline const SB_BITS: u32 = SL_BITS + AL_BITS;\n// @ts-ignore: decorator\n@inline const SB_SIZE: u32 = 1 << SB_BITS;\n\n// @ts-ignore: decorator\n@inline const FL_BITS: u32 = 31 - SB_BITS;\n\n// [00]: < 256B (SB) [12]: < 1M\n// [01]: < 512B [13]: < 2M\n// [02]: < 1K [14]: < 4M\n// [03]: < 2K [15]: < 8M\n// [04]: < 4K [16]: < 16M\n// [05]: < 8K [17]: < 32M\n// [06]: < 16K [18]: < 64M\n// [07]: < 32K [19]: < 128M\n// [08]: < 64K [20]: < 256M\n// [09]: < 128K [21]: < 512M\n// [10]: < 256K [22]: <= 1G - OVERHEAD\n// [11]: < 512K\n// VMs limit to 2GB total (currently), making one 1G block max (or three 512M etc.) due to block overhead\n\n// Tags stored in otherwise unused alignment bits\n\n// @ts-ignore: decorator\n@inline const FREE: usize = 1 << 0;\n// @ts-ignore: decorator\n@inline const LEFTFREE: usize = 1 << 1;\n// @ts-ignore: decorator\n@inline const TAGS_MASK: usize = FREE | LEFTFREE; // <= AL_MASK\n\n// ╒════════════════════ Block layout (32-bit) ════════════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┼─┼─┤ ┐\n// │ size │L│F│ ◄─┐ info overhead\n// ╞>ptr═══════════════════════════════════════════════════════╧═╧═╡ │ ┘\n// │ if free: ◄ prev │ ◄─┤ usize\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ if free: next ► │ ◄─┤\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ ... │ │ >= 0\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ if free: back ▲ │ ◄─┘\n// └───────────────────────────────────────────────────────────────┘ >= MIN SIZE\n// F: FREE, L: LEFTFREE\n@unmanaged export class Block extends BLOCK {\n\n /** Previous free block, if any. Only valid if free, otherwise part of payload. */\n prev: Block | null;\n /** Next free block, if any. Only valid if free, otherwise part of payload. */\n next: Block | null;\n\n // If the block is free, there is a 'back'reference at its end pointing at its start.\n}\n\n// Block constants. A block must have a minimum size of three pointers so it can hold `prev`,\n// `next` and `back` if free.\n\n// @ts-ignore: decorator\n@inline const BLOCK_MINSIZE: usize = ((3 * sizeof() + BLOCK_OVERHEAD + AL_MASK) & ~AL_MASK) - BLOCK_OVERHEAD; // prev + next + back\n// @ts-ignore: decorator\n// @inline const BLOCK_MAXSIZE: usize = 1 << (FL_BITS + SB_BITS - 1); // exclusive, lives in common.ts\n\n/** Gets the left block of a block. Only valid if the left block is free. */\n// @ts-ignore: decorator\n@inline function GETFREELEFT(block: Block): Block {\n return load(changetype(block) - sizeof());\n}\n\n/** Gets the right block of a block by advancing to the right by its size. */\n// @ts-ignore: decorator\n@inline function GETRIGHT(block: Block): Block {\n return changetype(changetype(block) + BLOCK_OVERHEAD + (block.mmInfo & ~TAGS_MASK));\n}\n\n// ╒═════════════════════ Root layout (32-bit) ════════════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤ ┐\n// │ 0 | flMap S│ ◄────┐\n// ╞═══════════════════════════════════════════════════════════════╡ │\n// │ slMap[0] S │ ◄─┐ │\n// ├───────────────────────────────────────────────────────────────┤ │ │\n// │ slMap[1] │ ◄─┤ │\n// ├───────────────────────────────────────────────────────────────┤ u32 │\n// │ slMap[22] │ ◄─┘ │\n// ╞═══════════════════════════════════════════════════════════════╡ usize\n// │ head[0] │ ◄────┤\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ ... │ ◄────┤\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ head[367] │ ◄────┤\n// ╞═══════════════════════════════════════════════════════════════╡ │\n// │ tail │ ◄────┘\n// └───────────────────────────────────────────────────────────────┘ SIZE ┘\n// S: Small blocks map\n@unmanaged class Root {\n /** First level bitmap. */\n flMap: usize;\n}\n\n// Root constants. Where stuff is stored inside of the root structure.\n\n// @ts-ignore: decorator\n@inline const SL_START: usize = sizeof();\n// @ts-ignore: decorator\n@inline const SL_END: usize = SL_START + (FL_BITS << alignof());\n// @ts-ignore: decorator\n@inline const HL_START: usize = (SL_END + AL_MASK) & ~AL_MASK;\n// @ts-ignore: decorator\n@inline const HL_END: usize = HL_START + FL_BITS * SL_SIZE * sizeof();\n// @ts-ignore: decorator\n@inline const ROOT_SIZE: usize = HL_END + sizeof();\n\n// @ts-ignore: decorator\n@lazy export var ROOT: Root;\n\n/** Gets the second level map of the specified first level. */\n// @ts-ignore: decorator\n@inline function GETSL(root: Root, fl: usize): u32 {\n return load(\n changetype(root) + (fl << alignof()),\n SL_START\n );\n}\n\n/** Sets the second level map of the specified first level. */\n// @ts-ignore: decorator\n@inline function SETSL(root: Root, fl: usize, slMap: u32): void {\n store(\n changetype(root) + (fl << alignof()),\n slMap,\n SL_START\n );\n}\n\n/** Gets the head of the free list for the specified combination of first and second level. */\n// @ts-ignore: decorator\n@inline function GETHEAD(root: Root, fl: usize, sl: u32): Block | null {\n return load(\n changetype(root) + (((fl << SL_BITS) + sl) << alignof()),\n HL_START\n );\n}\n\n/** Sets the head of the free list for the specified combination of first and second level. */\n// @ts-ignore: decorator\n@inline function SETHEAD(root: Root, fl: usize, sl: u32, head: Block | null): void {\n store(\n changetype(root) + (((fl << SL_BITS) + sl) << alignof()),\n head,\n HL_START\n );\n}\n\n/** Gets the tail block.. */\n// @ts-ignore: decorator\n@inline function GETTAIL(root: Root): Block {\n return load(\n changetype(root),\n HL_END\n );\n}\n\n/** Sets the tail block. */\n// @ts-ignore: decorator\n@inline function SETTAIL(root: Root, tail: Block): void {\n store(\n changetype(root),\n tail,\n HL_END\n );\n}\n\n/** Inserts a previously used block back into the free list. */\nfunction insertBlock(root: Root, block: Block): void {\n if (DEBUG) assert(block); // cannot be null\n var blockInfo = block.mmInfo;\n if (DEBUG) assert(blockInfo & FREE); // must be free\n\n var right = GETRIGHT(block);\n var rightInfo = right.mmInfo;\n\n // merge with right block if also free\n if (rightInfo & FREE) {\n removeBlock(root, right);\n block.mmInfo = blockInfo = blockInfo + BLOCK_OVERHEAD + (rightInfo & ~TAGS_MASK); // keep block tags\n right = GETRIGHT(block);\n rightInfo = right.mmInfo;\n // 'back' is set below\n }\n\n // merge with left block if also free\n if (blockInfo & LEFTFREE) {\n let left = GETFREELEFT(block);\n let leftInfo = left.mmInfo;\n if (DEBUG) assert(leftInfo & FREE); // must be free according to right tags\n removeBlock(root, left);\n block = left;\n block.mmInfo = blockInfo = leftInfo + BLOCK_OVERHEAD + (blockInfo & ~TAGS_MASK); // keep left tags\n // 'back' is set below\n }\n\n right.mmInfo = rightInfo | LEFTFREE;\n // reference to right is no longer used now, hence rightInfo is not synced\n\n // we now know the size of the block\n var size = blockInfo & ~TAGS_MASK;\n if (DEBUG) assert(size >= BLOCK_MINSIZE); // must be a valid size\n if (DEBUG) assert(changetype(block) + BLOCK_OVERHEAD + size == changetype(right)); // must match\n\n // set 'back' to itself at the end of block\n store(changetype(right) - sizeof(), block);\n\n // mapping_insert\n var fl: usize, sl: u32;\n if (size < SB_SIZE) {\n fl = 0;\n sl = (size >> AL_BITS);\n } else {\n const inv: usize = sizeof() * 8 - 1;\n let boundedSize = min(size, BLOCK_MAXSIZE);\n fl = inv - clz(boundedSize);\n sl = ((boundedSize >> (fl - SL_BITS)) ^ (1 << SL_BITS));\n fl -= SB_BITS - 1;\n }\n if (DEBUG) assert(fl < FL_BITS && sl < SL_SIZE); // fl/sl out of range\n\n // perform insertion\n var head = GETHEAD(root, fl, sl);\n block.prev = null;\n block.next = head;\n if (head) head.prev = block;\n SETHEAD(root, fl, sl, block);\n\n // update first and second level maps\n root.flMap |= (1 << fl);\n SETSL(root, fl, GETSL(root, fl) | (1 << sl));\n}\n\n/** Removes a free block from internal lists. */\nfunction removeBlock(root: Root, block: Block): void {\n var blockInfo = block.mmInfo;\n if (DEBUG) assert(blockInfo & FREE); // must be free\n var size = blockInfo & ~TAGS_MASK;\n if (DEBUG) assert(size >= BLOCK_MINSIZE); // must be valid\n\n // mapping_insert\n var fl: usize, sl: u32;\n if (size < SB_SIZE) {\n fl = 0;\n sl = (size >> AL_BITS);\n } else {\n const inv: usize = sizeof() * 8 - 1;\n let boundedSize = min(size, BLOCK_MAXSIZE);\n fl = inv - clz(boundedSize);\n sl = ((boundedSize >> (fl - SL_BITS)) ^ (1 << SL_BITS));\n fl -= SB_BITS - 1;\n }\n if (DEBUG) assert(fl < FL_BITS && sl < SL_SIZE); // fl/sl out of range\n\n // link previous and next free block\n var prev = block.prev;\n var next = block.next;\n if (prev) prev.next = next;\n if (next) next.prev = prev;\n\n // update head if we are removing it\n if (block == GETHEAD(root, fl, sl)) {\n SETHEAD(root, fl, sl, next);\n\n // clear second level map if head is empty now\n if (!next) {\n let slMap = GETSL(root, fl);\n SETSL(root, fl, slMap &= ~(1 << sl));\n\n // clear first level map if second level is empty now\n if (!slMap) root.flMap &= ~(1 << fl);\n }\n }\n // note: does not alter left/back because it is likely that splitting\n // is performed afterwards, invalidating those changes. so, the caller\n // must perform those updates.\n}\n\n/** Searches for a free block of at least the specified size. */\nfunction searchBlock(root: Root, size: usize): Block | null {\n // size was already asserted by caller\n\n // mapping_search\n var fl: usize, sl: u32;\n if (size < SB_SIZE) {\n fl = 0;\n sl = (size >> AL_BITS);\n } else {\n const halfMaxSize = BLOCK_MAXSIZE >> 1; // don't round last fl\n const inv: usize = sizeof() * 8 - 1;\n const invRound = inv - SL_BITS;\n let requestSize = size < halfMaxSize\n ? size + (1 << (invRound - clz(size))) - 1\n : size;\n fl = inv - clz(requestSize);\n sl = ((requestSize >> (fl - SL_BITS)) ^ (1 << SL_BITS));\n fl -= SB_BITS - 1;\n }\n if (DEBUG) assert(fl < FL_BITS && sl < SL_SIZE); // fl/sl out of range\n\n // search second level\n var slMap = GETSL(root, fl) & (~0 << sl);\n var head: Block | null = null;\n if (!slMap) {\n // search next larger first level\n let flMap = root.flMap & (~0 << (fl + 1));\n if (!flMap) {\n head = null;\n } else {\n fl = ctz(flMap);\n slMap = GETSL(root, fl);\n if (DEBUG) assert(slMap); // can't be zero if fl points here\n head = GETHEAD(root, fl, ctz(slMap));\n }\n } else {\n head = GETHEAD(root, fl, ctz(slMap));\n }\n return head;\n}\n\n/** Prepares the specified block before (re-)use, possibly splitting it. */\nfunction prepareBlock(root: Root, block: Block, size: usize): void {\n // size was already asserted by caller\n\n var blockInfo = block.mmInfo;\n if (DEBUG) assert(!((size + BLOCK_OVERHEAD) & AL_MASK)); // size must be aligned so the new block is\n\n // split if the block can hold another MINSIZE block incl. overhead\n var remaining = (blockInfo & ~TAGS_MASK) - size;\n if (remaining >= BLOCK_OVERHEAD + BLOCK_MINSIZE) {\n block.mmInfo = size | (blockInfo & LEFTFREE); // also discards FREE\n\n let spare = changetype(changetype(block) + BLOCK_OVERHEAD + size);\n spare.mmInfo = (remaining - BLOCK_OVERHEAD) | FREE; // not LEFTFREE\n insertBlock(root, spare); // also sets 'back'\n\n // otherwise tag block as no longer FREE and right as no longer LEFTFREE\n } else {\n block.mmInfo = blockInfo & ~FREE;\n GETRIGHT(block).mmInfo &= ~LEFTFREE;\n }\n}\n\n/** Adds more memory to the pool. */\nfunction addMemory(root: Root, start: usize, end: usize): bool {\n if (DEBUG) assert(start <= end); // must be valid\n start = ((start + BLOCK_OVERHEAD + AL_MASK) & ~AL_MASK) - BLOCK_OVERHEAD;\n end &= ~AL_MASK;\n\n var tail = GETTAIL(root);\n var tailInfo: usize = 0;\n if (tail) { // more memory\n if (DEBUG) assert(start >= changetype(tail) + BLOCK_OVERHEAD);\n\n // merge with current tail if adjacent\n const offsetToTail = AL_SIZE;\n if (start - offsetToTail == changetype(tail)) {\n start -= offsetToTail;\n tailInfo = tail.mmInfo;\n } else {\n // We don't do this, but a user might `memory.grow` manually\n // leading to non-adjacent pages managed by TLSF.\n }\n\n } else if (DEBUG) { // first memory\n assert(start >= changetype(root) + ROOT_SIZE); // starts after root\n }\n\n // check if size is large enough for a free block and the tail block\n var size = end - start;\n if (size < BLOCK_OVERHEAD + BLOCK_MINSIZE + BLOCK_OVERHEAD) {\n return false;\n }\n\n // left size is total minus its own and the zero-length tail's header\n var leftSize = size - 2 * BLOCK_OVERHEAD;\n var left = changetype(start);\n left.mmInfo = leftSize | FREE | (tailInfo & LEFTFREE);\n left.prev = null;\n left.next = null;\n\n // tail is a zero-length used block\n tail = changetype(start + BLOCK_OVERHEAD + leftSize);\n tail.mmInfo = 0 | LEFTFREE;\n SETTAIL(root, tail);\n\n insertBlock(root, left); // also merges with free left before tail / sets 'back'\n\n return true;\n}\n\n/** Grows memory to fit at least another block of the specified size. */\nfunction growMemory(root: Root, size: usize): void {\n if (ASC_LOW_MEMORY_LIMIT) {\n unreachable();\n return;\n }\n // Here, both rounding performed in searchBlock ...\n const halfMaxSize = BLOCK_MAXSIZE >> 1;\n if (size < halfMaxSize) { // don't round last fl\n const invRound = (sizeof() * 8 - 1) - SL_BITS;\n size += (1 << (invRound - clz(size))) - 1;\n }\n // and additional BLOCK_OVERHEAD must be taken into account. If we are going\n // to merge with the tail block, that's one time, otherwise it's two times.\n var pagesBefore = memory.size();\n size += BLOCK_OVERHEAD << usize((pagesBefore << 16) - BLOCK_OVERHEAD != changetype(GETTAIL(root)));\n var pagesNeeded = (((size + 0xffff) & ~0xffff) >>> 16);\n var pagesWanted = max(pagesBefore, pagesNeeded); // double memory\n if (memory.grow(pagesWanted) < 0) {\n if (memory.grow(pagesNeeded) < 0) unreachable();\n }\n var pagesAfter = memory.size();\n addMemory(root, pagesBefore << 16, pagesAfter << 16);\n}\n\n/** Computes the size (excl. header) of a block. */\nfunction computeSize(size: usize): usize {\n // Size must be large enough and aligned minus preceeding overhead\n return size <= BLOCK_MINSIZE\n ? BLOCK_MINSIZE\n : ((size + BLOCK_OVERHEAD + AL_MASK) & ~AL_MASK) - BLOCK_OVERHEAD;\n}\n\n/** Prepares and checks an allocation size. */\nfunction prepareSize(size: usize): usize {\n if (size > BLOCK_MAXSIZE) throw new Error(E_ALLOCATION_TOO_LARGE);\n return computeSize(size);\n}\n\n/** Initializes the root structure. */\nfunction initialize(): void {\n if (isDefined(ASC_RTRACE)) oninit(__heap_base);\n var rootOffset = (__heap_base + AL_MASK) & ~AL_MASK;\n var pagesBefore = memory.size();\n var pagesNeeded = ((((rootOffset + ROOT_SIZE) + 0xffff) & ~0xffff) >>> 16);\n if (pagesNeeded > pagesBefore && memory.grow(pagesNeeded - pagesBefore) < 0) unreachable();\n var root = changetype(rootOffset);\n root.flMap = 0;\n SETTAIL(root, changetype(0));\n for (let fl: usize = 0; fl < FL_BITS; ++fl) {\n SETSL(root, fl, 0);\n for (let sl: u32 = 0; sl < SL_SIZE; ++sl) {\n SETHEAD(root, fl, sl, null);\n }\n }\n var memStart = rootOffset + ROOT_SIZE;\n if (ASC_LOW_MEMORY_LIMIT) {\n const memEnd = ASC_LOW_MEMORY_LIMIT & ~AL_MASK;\n if (memStart <= memEnd) addMemory(root, memStart, memEnd);\n else unreachable(); // low memory limit already exceeded\n } else {\n addMemory(root, memStart, memory.size() << 16);\n }\n ROOT = root;\n}\n\n/** Allocates a block of the specified size. */\nexport function allocateBlock(root: Root, size: usize): Block {\n var payloadSize = prepareSize(size);\n var block = searchBlock(root, payloadSize);\n if (!block) {\n growMemory(root, payloadSize);\n block = changetype(searchBlock(root, payloadSize));\n if (DEBUG) assert(block); // must be found now\n }\n if (DEBUG) assert((block.mmInfo & ~TAGS_MASK) >= payloadSize); // must fit\n removeBlock(root, block);\n prepareBlock(root, block, payloadSize);\n if (isDefined(ASC_RTRACE)) onalloc(block);\n return block;\n}\n\n/** Reallocates a block to the specified size. */\nexport function reallocateBlock(root: Root, block: Block, size: usize): Block {\n var payloadSize = prepareSize(size);\n var blockInfo = block.mmInfo;\n var blockSize = blockInfo & ~TAGS_MASK;\n\n // possibly split and update runtime size if it still fits\n if (payloadSize <= blockSize) {\n prepareBlock(root, block, payloadSize);\n if (isDefined(ASC_RTRACE)) {\n if (payloadSize != blockSize) onresize(block, BLOCK_OVERHEAD + blockSize);\n }\n return block;\n }\n\n // merge with right free block if merger is large enough\n var right = GETRIGHT(block);\n var rightInfo = right.mmInfo;\n if (rightInfo & FREE) {\n let mergeSize = blockSize + BLOCK_OVERHEAD + (rightInfo & ~TAGS_MASK);\n if (mergeSize >= payloadSize) {\n removeBlock(root, right);\n block.mmInfo = (blockInfo & TAGS_MASK) | mergeSize;\n prepareBlock(root, block, payloadSize);\n if (isDefined(ASC_RTRACE)) onresize(block, BLOCK_OVERHEAD + blockSize);\n return block;\n }\n }\n\n // otherwise move the block\n return moveBlock(root, block, size);\n}\n\n/** Moves a block to a new one of the specified size. */\nfunction moveBlock(root: Root, block: Block, newSize: usize): Block {\n var newBlock = allocateBlock(root, newSize);\n memory.copy(changetype(newBlock) + BLOCK_OVERHEAD, changetype(block) + BLOCK_OVERHEAD, block.mmInfo & ~TAGS_MASK);\n if (changetype(block) >= __heap_base) {\n if (isDefined(ASC_RTRACE)) onmove(block, newBlock);\n freeBlock(root, block);\n }\n return newBlock;\n}\n\n/** Frees a block. */\nexport function freeBlock(root: Root, block: Block): void {\n if (isDefined(ASC_RTRACE)) onfree(block);\n block.mmInfo = block.mmInfo | FREE;\n insertBlock(root, block);\n}\n\n/** Checks that a used block is valid to be freed or reallocated. */\nfunction checkUsedBlock(ptr: usize): Block {\n var block = changetype(ptr - BLOCK_OVERHEAD);\n assert(\n ptr != 0 && !(ptr & AL_MASK) && // must exist and be aligned\n !(block.mmInfo & FREE) // must be used\n );\n return block;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __alloc(size: usize): usize {\n if (!ROOT) initialize();\n return changetype(allocateBlock(ROOT, size)) + BLOCK_OVERHEAD;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __realloc(ptr: usize, size: usize): usize {\n if (!ROOT) initialize();\n return (ptr < __heap_base\n ? changetype(moveBlock(ROOT, checkUsedBlock(ptr), size))\n : changetype(reallocateBlock(ROOT, checkUsedBlock(ptr), size))\n ) + BLOCK_OVERHEAD;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __free(ptr: usize): void {\n if (ptr < __heap_base) return;\n if (!ROOT) initialize();\n freeBlock(ROOT, checkUsedBlock(ptr));\n}\n","// This file is shared with the compiler and must remain portable\n\n// ╒═══════════════════ Typeinfo interpretation ═══════════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤ ◄─ __rtti_base\n// │ count │\n// ╞═══════════════════════════════════════════════════════════════╡ ┐\n// │ Typeinfo#flags [id=0] │ id < count\n// ├ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┤\n// │ Typeinfo#base [id=0] │\n// ├───────────────────────────────────────────────────────────────┤\n// │ ... │\n\n/** Runtime type information data structure. */\n@unmanaged\nexport class Typeinfo {\n /** Flags describing the shape of this class type. */\n flags: TypeinfoFlags = TypeinfoFlags.NONE;\n /** Base class id or `0` if none. */\n base: u32 = 0;\n}\n\n/** Runtime type information flags. */\nexport const enum TypeinfoFlags {\n /** No specific flags. */\n NONE = 0,\n /** Type is an `ArrayBufferView`. */\n ARRAYBUFFERVIEW = 1 << 0,\n /** Type is an `Array`. */\n ARRAY = 1 << 1,\n /** Type is a `StaticArray`. */\n STATICARRAY = 1 << 2,\n /** Type is a `Set`. */\n SET = 1 << 3,\n /** Type is a `Map`. */\n MAP = 1 << 4,\n /** Type has no outgoing pointers. */\n POINTERFREE = 1 << 5,\n /** Value alignment of 1 byte. */\n VALUE_ALIGN_0 = 1 << 6,\n /** Value alignment of 2 bytes. */\n VALUE_ALIGN_1 = 1 << 7,\n /** Value alignment of 4 bytes. */\n VALUE_ALIGN_2 = 1 << 8,\n /** Value alignment of 8 bytes. */\n VALUE_ALIGN_3 = 1 << 9,\n /** Value alignment of 16 bytes. */\n VALUE_ALIGN_4 = 1 << 10,\n /** Value is a signed type. */\n VALUE_SIGNED = 1 << 11,\n /** Value is a float type. */\n VALUE_FLOAT = 1 << 12,\n /** Value type is nullable. */\n VALUE_NULLABLE = 1 << 13,\n /** Value type is managed. */\n VALUE_MANAGED = 1 << 14,\n /** Key alignment of 1 byte. */\n KEY_ALIGN_0 = 1 << 15,\n /** Key alignment of 2 bytes. */\n KEY_ALIGN_1 = 1 << 16,\n /** Key alignment of 4 bytes. */\n KEY_ALIGN_2 = 1 << 17,\n /** Key alignment of 8 bytes. */\n KEY_ALIGN_3 = 1 << 18,\n /** Key alignment of 16 bytes. */\n KEY_ALIGN_4 = 1 << 19,\n /** Key is a signed type. */\n KEY_SIGNED = 1 << 20,\n /** Key is a float type. */\n KEY_FLOAT = 1 << 21,\n /** Key type is nullable. */\n KEY_NULLABLE = 1 << 22,\n /** Key type is managed. */\n KEY_MANAGED = 1 << 23\n}\n","import { BLOCK, BLOCK_OVERHEAD, OBJECT_OVERHEAD, OBJECT_MAXSIZE, TOTAL_OVERHEAD, DEBUG, TRACE, RTRACE, PROFILE } from \"./common\";\nimport { onvisit, oncollect, oninterrupt, onyield } from \"./rtrace\";\nimport { TypeinfoFlags } from \"../shared/typeinfo\";\nimport { E_ALLOCATION_TOO_LARGE, E_ALREADY_PINNED, E_NOT_PINNED } from \"../util/error\";\n\n// === ITCMS: An incremental Tri-Color Mark & Sweep garbage collector ===\n// Adapted from Bach Le's μgc, see: https://github.com/bullno1/ugc\n\n// ╒═════════════╤══════════════ Colors ═══════════════════════════╕\n// │ Color │ Meaning │\n// ├─────────────┼─────────────────────────────────────────────────┤\n// │ WHITE* │ Unprocessed │\n// │ BLACK* │ Processed │\n// │ GRAY │ Processed with unprocessed children │\n// │ TRANSPARENT │ Manually pinned (always reachable) │\n// └─────────────┴─────────────────────────────────────────────────┘\n// * flipped between cycles\n\n// @ts-ignore: decorator\n@lazy var white = 0;\n// @ts-ignore: decorator\n@inline const gray = 2;\n// @ts-ignore: decorator\n@inline const transparent = 3;\n// @ts-ignore: decorator\n@inline const COLOR_MASK = 3;\n\n/** Size in memory of all objects currently managed by the GC. */\n// @ts-ignore: decorator\n@lazy var total: usize = 0;\n\n/** Currently transitioning from SWEEP to MARK state. */\n// @ts-ignore: decorator\n@inline const STATE_IDLE = 0;\n/** Currently marking reachable objects. */\n// @ts-ignore: decorator\n@inline const STATE_MARK = 1;\n/** Currently sweeping unreachable objects. */\n// @ts-ignore: decorator\n@inline const STATE_SWEEP = 2;\n/** Current collector state. */\n// @ts-ignore: decorator\n@lazy var state = STATE_IDLE;\n\n// @ts-ignore: decorator\n@lazy var fromSpace = initLazy(changetype(memory.data(offsetof())));\n// @ts-ignore: decorator\n@lazy var toSpace = initLazy(changetype(memory.data(offsetof())));\n// @ts-ignore: decorator\n@lazy var pinSpace = initLazy(changetype(memory.data(offsetof())));\n// @ts-ignore: decorator\n@lazy var iter: Object; // null\n\nfunction initLazy(space: Object): Object {\n space.nextWithColor = changetype(space);\n space.prev = space;\n return space;\n}\n\n/** Visit cookie indicating scanning of an object. */\n// @ts-ignore: decorator\n@inline const VISIT_SCAN = 0;\n\n// ╒═══════════════ Managed object layout (32-bit) ════════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤\n// │ Memory manager block │\n// ╞═══════════════════════════════════════════════════════════╤═══╡\n// │ next │ C │ = nextWithColor\n// ├───────────────────────────────────────────────────────────┴───┤\n// │ prev │\n// ├───────────────────────────────────────────────────────────────┤\n// │ rtId │\n// ├───────────────────────────────────────────────────────────────┤\n// │ rtSize │\n// ╞>ptr═══════════════════════════════════════════════════════════╡\n// │ ... │\n// C: color\n\n/** Represents a managed object in memory, consisting of a header followed by the object's data. */\n@unmanaged class Object extends BLOCK {\n /** Pointer to the next object with color flags stored in the alignment bits. */\n nextWithColor: usize; // *u32\n /** Pointer to the previous object. */\n prev: Object; // *u32\n /** Runtime id. */\n rtId: u32;\n /** Runtime size. */\n rtSize: u32;\n\n /** Gets the pointer to the next object. */\n get next(): Object {\n return changetype(this.nextWithColor & ~COLOR_MASK);\n }\n\n /** Sets the pointer to the next object. */\n set next(obj: Object) {\n this.nextWithColor = changetype(obj) | (this.nextWithColor & COLOR_MASK);\n }\n\n /** Gets this object's color. */\n get color(): i32 {\n return i32(this.nextWithColor & COLOR_MASK);\n }\n\n /** Sets this object's color. */\n set color(color: i32) {\n this.nextWithColor = (this.nextWithColor & ~COLOR_MASK) | color;\n }\n\n /** Gets the size of this object in memory. */\n get size(): usize {\n return BLOCK_OVERHEAD + (this.mmInfo & ~3);\n }\n\n /** Tests if this object is pointerfree. */\n get isPointerfree(): bool {\n var rtId = this.rtId;\n return rtId <= idof() || (__typeinfo(rtId) & TypeinfoFlags.POINTERFREE) != 0;\n }\n\n /** Unlinks this object from its list. */\n unlink(): void {\n var next = this.next;\n if (next == null) {\n if (DEBUG) assert(this.prev == null && changetype(this) < __heap_base);\n return; // static data not yet linked\n }\n var prev = this.prev;\n if (DEBUG) assert(prev);\n next.prev = prev;\n prev.next = next;\n }\n\n /** Links this object to the specified list, with the given color. */\n linkTo(list: Object, withColor: i32): void {\n let prev = list.prev;\n this.nextWithColor = changetype(list) | withColor;\n this.prev = prev;\n prev.next = this;\n list.prev = this;\n }\n\n /** Marks this object as gray, that is reachable with unscanned children. */\n makeGray(): void {\n if (this == iter) iter = assert(this.prev);\n this.unlink();\n this.linkTo(toSpace, this.isPointerfree ? i32(!white) : gray);\n }\n}\n\n/** Visits all objects considered to be program roots. */\nfunction visitRoots(cookie: u32): void {\n __visit_globals(cookie);\n var pn = pinSpace;\n var iter = pn.next;\n while (iter != pn) {\n if (DEBUG) assert(iter.color == transparent);\n __visit_members(changetype(iter) + TOTAL_OVERHEAD, cookie);\n iter = iter.next;\n }\n}\n\n/** Visits all objects on the stack. */\nfunction visitStack(cookie: u32): void {\n var ptr = __stack_pointer;\n while (ptr < __heap_base) {\n __visit(load(ptr), cookie);\n ptr += sizeof();\n }\n}\n\n/** Performs a single step according to the current state. */\nfunction step(): usize {\n // Magic constants responsible for pause times. Obtained experimentally\n // using the compiler compiling itself. 2048 budget pro run by default.\n const MARKCOST = isDefined(ASC_GC_MARKCOST) ? ASC_GC_MARKCOST : 1;\n const SWEEPCOST = isDefined(ASC_GC_SWEEPCOST) ? ASC_GC_SWEEPCOST : 10;\n var obj: Object;\n switch (state) {\n case STATE_IDLE: {\n state = STATE_MARK;\n visitCount = 0;\n visitRoots(VISIT_SCAN);\n iter = toSpace;\n return visitCount * MARKCOST;\n }\n case STATE_MARK: {\n let black = i32(!white);\n obj = iter.next;\n while (obj != toSpace) {\n iter = obj;\n if (obj.color != black) { // skip already-blacks (pointerfree)\n obj.color = black;\n visitCount = 0;\n __visit_members(changetype(obj) + TOTAL_OVERHEAD, VISIT_SCAN);\n return visitCount * MARKCOST;\n }\n obj = obj.next;\n }\n visitCount = 0;\n visitRoots(VISIT_SCAN);\n obj = iter.next;\n if (obj == toSpace) {\n visitStack(VISIT_SCAN);\n obj = iter.next;\n while (obj != toSpace) {\n if (obj.color != black) {\n obj.color = black;\n __visit_members(changetype(obj) + TOTAL_OVERHEAD, VISIT_SCAN);\n }\n obj = obj.next;\n }\n let from = fromSpace;\n fromSpace = toSpace;\n toSpace = from;\n white = black;\n iter = from.next;\n state = STATE_SWEEP;\n }\n return visitCount * MARKCOST;\n }\n case STATE_SWEEP: {\n obj = iter;\n if (obj != toSpace) {\n iter = obj.next;\n if (DEBUG) assert(obj.color == i32(!white)); // old white\n free(obj);\n return SWEEPCOST;\n }\n toSpace.nextWithColor = changetype(toSpace);\n toSpace.prev = toSpace;\n state = STATE_IDLE;\n break;\n }\n }\n return 0;\n}\n\n/** Frees an object. */\nfunction free(obj: Object): void {\n if (changetype(obj) < __heap_base) {\n obj.nextWithColor = 0; // may become linked again\n obj.prev = changetype(0);\n } else {\n total -= obj.size;\n if (isDefined(__finalize)) {\n __finalize(changetype(obj) + TOTAL_OVERHEAD);\n }\n __free(changetype(obj) + BLOCK_OVERHEAD);\n }\n}\n\n// Garbage collector interface\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __new(size: usize, id: i32): usize {\n if (size >= OBJECT_MAXSIZE) throw new Error(E_ALLOCATION_TOO_LARGE);\n if (total >= threshold) interrupt();\n var obj = changetype(__alloc(OBJECT_OVERHEAD + size) - BLOCK_OVERHEAD);\n obj.rtId = id;\n obj.rtSize = size;\n obj.linkTo(fromSpace, white); // inits next/prev\n total += obj.size;\n var ptr = changetype(obj) + TOTAL_OVERHEAD;\n // may be visited before being fully initialized, so must fill\n memory.fill(ptr, 0, size);\n return ptr;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __renew(oldPtr: usize, size: usize): usize {\n var oldObj = changetype(oldPtr - TOTAL_OVERHEAD);\n // Update object size if its block is large enough\n if (size <= (oldObj.mmInfo & ~3) - OBJECT_OVERHEAD) {\n oldObj.rtSize = size;\n return oldPtr;\n }\n // If not the same object anymore, we have to move it move it due to the\n // shadow stack potentially still referencing the old object\n var newPtr = __new(size, oldObj.rtId);\n memory.copy(newPtr, oldPtr, min(size, oldObj.rtSize));\n return newPtr;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __link(parentPtr: usize, childPtr: usize, expectMultiple: bool): void {\n // Write barrier is unnecessary if non-incremental\n if (!childPtr) return;\n if (DEBUG) assert(parentPtr);\n var child = changetype(childPtr - TOTAL_OVERHEAD);\n if (child.color == white) {\n let parent = changetype(parentPtr - TOTAL_OVERHEAD);\n let parentColor = parent.color;\n if (parentColor == i32(!white)) {\n // Maintain the invariant that no black object may point to a white object.\n if (expectMultiple) {\n // Move the barrier \"backward\". Suitable for containers receiving multiple stores.\n // Avoids a barrier for subsequent objects stored into the same container.\n parent.makeGray();\n } else {\n // Move the barrier \"forward\". Suitable for objects receiving isolated stores.\n child.makeGray();\n }\n } else if (parentColor == transparent && state == STATE_MARK) {\n // Pinned objects are considered 'black' during the mark phase.\n child.makeGray();\n }\n }\n}\n\n// @ts-ignore: decorator\n@lazy var visitCount = 0;\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __visit(ptr: usize, cookie: i32): void {\n if (!ptr) return;\n let obj = changetype(ptr - TOTAL_OVERHEAD);\n if (RTRACE) if (!onvisit(obj)) return;\n if (obj.color == white) {\n obj.makeGray();\n ++visitCount;\n }\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __pin(ptr: usize): usize {\n if (ptr) {\n let obj = changetype(ptr - TOTAL_OVERHEAD);\n if (obj.color == transparent) {\n throw new Error(E_ALREADY_PINNED);\n }\n obj.unlink(); // from fromSpace\n obj.linkTo(pinSpace, transparent);\n }\n return ptr;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __unpin(ptr: usize): void {\n if (!ptr) return;\n var obj = changetype(ptr - TOTAL_OVERHEAD);\n if (obj.color != transparent) {\n throw new Error(E_NOT_PINNED);\n }\n if (state == STATE_MARK) {\n // We may be right at the point after marking roots for the second time and\n // entering the sweep phase, in which case the object would be missed if it\n // is not only pinned but also a root. Make sure it isn't missed.\n obj.makeGray();\n } else {\n obj.unlink();\n obj.linkTo(fromSpace, white);\n }\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __collect(): void {\n if (TRACE) trace(\"GC (full) at\", 1, total);\n if (state > STATE_IDLE) {\n // finish current cycle\n while (state != STATE_IDLE) step();\n }\n // perform a full cycle\n step();\n while (state != STATE_IDLE) step();\n threshold = (total * IDLEFACTOR / 100) + GRANULARITY;\n if (TRACE) trace(\"GC (full) done at cur/max\", 2, total, memory.size() << 16);\n if (RTRACE || PROFILE) oncollect(total);\n}\n\n// Garbage collector automation\n\n/** How often to interrupt. The default of 1024 means \"interrupt each 1024 bytes allocated\". */\n// @ts-ignore: decorator\n@inline const GRANULARITY: usize = isDefined(ASC_GC_GRANULARITY) ? ASC_GC_GRANULARITY : 1024;\n/** How long to interrupt. The default of 200% means \"run at double the speed of allocations\". */\n// @ts-ignore: decorator\n@inline const STEPFACTOR: usize = isDefined(ASC_GC_SWEEPFACTOR) ? ASC_GC_SWEEPFACTOR : 200;\n/** How long to idle. The default of 200% means \"wait for memory to double before kicking in again\". */\n// @ts-ignore: decorator\n@inline const IDLEFACTOR: usize = isDefined(ASC_GC_IDLEFACTOR) ? ASC_GC_IDLEFACTOR : 200;\n\n/** Threshold of memory used by objects to exceed before interrupting again. */\n// @ts-ignore: decorator\n@lazy var threshold: usize = ((memory.size() << 16) - __heap_base) >> 1;\n\n/** Performs a reasonable amount of incremental GC steps. */\nfunction interrupt(): void {\n if (PROFILE) oninterrupt(total);\n if (TRACE) trace(\"GC (auto) at\", 1, total);\n var budget: isize = GRANULARITY * STEPFACTOR / 100;\n do {\n budget -= step();\n if (state == STATE_IDLE) {\n if (TRACE) trace(\"└ GC (auto) done at cur/max\", 2, total, memory.size() << 16);\n threshold = (total * IDLEFACTOR / 100) + GRANULARITY;\n if (PROFILE) onyield(total);\n return;\n }\n } while (budget > 0);\n if (TRACE) trace(\"└ GC (auto) ongoing at\", 1, total);\n threshold = total + GRANULARITY * usize(total - threshold < GRANULARITY);\n if (PROFILE) onyield(total);\n}\n","// Ported from perlin reference implementation (https://cs.nyu.edu/~perlin/noise/)\n\nexport function perlin(_x: i32, _y: i32, _z: i32, denom: i32): f64 {\n // Convert fraction into f64\n let x: f64 = f64(_x) / f64(denom);\n let y: f64 = f64(_y) / f64(denom);\n let z: f64 = f64(_z) / f64(denom);\n\n // Find unit cube that contains point\n const X: i32 = i32(Math.floor(x)) & 255;\n const Y: i32 = i32(Math.floor(y)) & 255;\n const Z: i32 = i32(Math.floor(z)) & 255;\n\n // Find relative x,y,z of point in cube\n x -= Math.floor(x);\n y -= Math.floor(y);\n z -= Math.floor(z);\n\n // Compute fade curves for each x,y,z\n const u: f64 = fade(x);\n const v: f64 = fade(y);\n const w: f64 = fade(z);\n\n // Hash coordinates of the 8 cube corners\n const A: i32 = p[X] + Y;\n const AA: i32 = p[A] + Z;\n const AB: i32 = p[A + 1] + Z;\n const B: i32 = p[X + 1] + Y;\n const BA: i32 = p[B] + Z;\n const BB: i32 = p[B + 1] + Z;\n\n // Add blended results from 8 corners of cube\n const r: f64 = lerp(\n w,\n lerp(\n v,\n lerp(u, grad(p[AA], x, y, z), grad(p[BA], x - 1, y, z)),\n lerp(u, grad(p[AB], x, y - 1, z), grad(p[BB], x - 1, y - 1, z))\n ),\n lerp(\n v,\n lerp(u, grad(p[AA + 1], x, y, z - 1), grad(p[BA + 1], x - 1, y, z - 1)),\n lerp(u, grad(p[AB + 1], x, y - 1, z - 1), grad(p[BB + 1], x - 1, y - 1, z - 1))\n )\n );\n\n // Shift to range from 0 to 1\n return (r + 1) / 2;\n}\n\nfunction fade(t: f64): f64 {\n return t * t * t * (t * (t * 6 - 15) + 10);\n}\n\nfunction lerp(t: f64, a: f64, b: f64): f64 {\n return a + t * (b - a);\n}\n\nfunction grad(hash: i32, x: f64, y: f64, z: f64): f64 {\n switch (hash & 0xf) {\n case 0x0:\n return x + y;\n case 0x1:\n return -x + y;\n case 0x2:\n return x - y;\n case 0x3:\n return -x - y;\n case 0x4:\n return x + z;\n case 0x5:\n return -x + z;\n case 0x6:\n return x - z;\n case 0x7:\n return -x - z;\n case 0x8:\n return y + z;\n case 0x9:\n return -y + z;\n case 0xa:\n return y - z;\n case 0xb:\n return -y - z;\n case 0xc:\n return y + x;\n case 0xd:\n return -y + z;\n case 0xe:\n return y - x;\n case 0xf:\n return -y - z;\n default:\n return 0; // never happens\n }\n}\n\nconst p: i32[] = [\n 151, 160, 137, 91, 90, 15, 131, 13, 201, 95, 96, 53, 194, 233, 7, 225, 140, 36, 103, 30, 69, 142, 8, 99, 37, 240, 21,\n 10, 23, 190, 6, 148, 247, 120, 234, 75, 0, 26, 197, 62, 94, 252, 219, 203, 117, 35, 11, 32, 57, 177, 33, 88, 237, 149,\n 56, 87, 174, 20, 125, 136, 171, 168, 68, 175, 74, 165, 71, 134, 139, 48, 27, 166, 77, 146, 158, 231, 83, 111, 229,\n 122, 60, 211, 133, 230, 220, 105, 92, 41, 55, 46, 245, 40, 244, 102, 143, 54, 65, 25, 63, 161, 1, 216, 80, 73, 209,\n 76, 132, 187, 208, 89, 18, 169, 200, 196, 135, 130, 116, 188, 159, 86, 164, 100, 109, 198, 173, 186, 3, 64, 52, 217,\n 226, 250, 124, 123, 5, 202, 38, 147, 118, 126, 255, 82, 85, 212, 207, 206, 59, 227, 47, 16, 58, 17, 182, 189, 28, 42,\n 223, 183, 170, 213, 119, 248, 152, 2, 44, 154, 163, 70, 221, 153, 101, 155, 167, 43, 172, 9, 129, 22, 39, 253, 19, 98,\n 108, 110, 79, 113, 224, 232, 178, 185, 112, 104, 218, 246, 97, 228, 251, 34, 242, 193, 238, 210, 144, 12, 191, 179,\n 162, 241, 81, 51, 145, 235, 249, 14, 239, 107, 49, 192, 214, 31, 181, 199, 106, 157, 184, 84, 204, 176, 115, 121, 50,\n 45, 127, 4, 150, 254, 138, 236, 205, 93, 222, 114, 67, 29, 24, 72, 243, 141, 128, 195, 78, 66, 215, 61, 156, 180, 151,\n 160, 137, 91, 90, 15, 131, 13, 201, 95, 96, 53, 194, 233, 7, 225, 140, 36, 103, 30, 69, 142, 8, 99, 37, 240, 21, 10,\n 23, 190, 6, 148, 247, 120, 234, 75, 0, 26, 197, 62, 94, 252, 219, 203, 117, 35, 11, 32, 57, 177, 33, 88, 237, 149, 56,\n 87, 174, 20, 125, 136, 171, 168, 68, 175, 74, 165, 71, 134, 139, 48, 27, 166, 77, 146, 158, 231, 83, 111, 229, 122,\n 60, 211, 133, 230, 220, 105, 92, 41, 55, 46, 245, 40, 244, 102, 143, 54, 65, 25, 63, 161, 1, 216, 80, 73, 209, 76,\n 132, 187, 208, 89, 18, 169, 200, 196, 135, 130, 116, 188, 159, 86, 164, 100, 109, 198, 173, 186, 3, 64, 52, 217, 226,\n 250, 124, 123, 5, 202, 38, 147, 118, 126, 255, 82, 85, 212, 207, 206, 59, 227, 47, 16, 58, 17, 182, 189, 28, 42, 223,\n 183, 170, 213, 119, 248, 152, 2, 44, 154, 163, 70, 221, 153, 101, 155, 167, 43, 172, 9, 129, 22, 39, 253, 19, 98, 108,\n 110, 79, 113, 224, 232, 178, 185, 112, 104, 218, 246, 97, 228, 251, 34, 242, 193, 238, 210, 144, 12, 191, 179, 162,\n 241, 81, 51, 145, 235, 249, 14, 239, 107, 49, 192, 214, 31, 181, 199, 106, 157, 184, 84, 204, 176, 115, 121, 50, 45,\n 127, 4, 150, 254, 138, 236, 205, 93, 222, 114, 67, 29, 24, 72, 243, 141, 128, 195, 78, 66, 215, 61, 156, 180,\n];\n","//\n// Lookup data for exp2f\n//\n\n// @ts-ignore: decorator\n@inline const EXP2F_TABLE_BITS = 5;\n\n// @ts-ignore: decorator\n@lazy @inline const EXP2F_DATA_TAB = memory.data([\n // exp2f_data_tab[i] = uint(2^(i/N)) - (i << 52-BITS)\n // used for computing 2^(k/N) for an int |k| < 150 N as\n // double(tab[k%N] + (k << 52-BITS))\n 0x3FF0000000000000, 0x3FEFD9B0D3158574, 0x3FEFB5586CF9890F, 0x3FEF9301D0125B51,\n 0x3FEF72B83C7D517B, 0x3FEF54873168B9AA, 0x3FEF387A6E756238, 0x3FEF1E9DF51FDEE1,\n 0x3FEF06FE0A31B715, 0x3FEEF1A7373AA9CB, 0x3FEEDEA64C123422, 0x3FEECE086061892D,\n 0x3FEEBFDAD5362A27, 0x3FEEB42B569D4F82, 0x3FEEAB07DD485429, 0x3FEEA47EB03A5585,\n 0x3FEEA09E667F3BCD, 0x3FEE9F75E8EC5F74, 0x3FEEA11473EB0187, 0x3FEEA589994CCE13,\n 0x3FEEACE5422AA0DB, 0x3FEEB737B0CDC5E5, 0x3FEEC49182A3F090, 0x3FEED503B23E255D,\n 0x3FEEE89F995AD3AD, 0x3FEEFF76F2FB5E47, 0x3FEF199BDD85529C, 0x3FEF3720DCEF9069,\n 0x3FEF5818DCFBA487, 0x3FEF7C97337B9B5F, 0x3FEFA4AFA2A490DA, 0x3FEFD0765B6E4540\n]);\n\n// ULP error: 0.502 (nearest rounding.)\n// Relative error: 1.69 * 2^-34 in [-1/64, 1/64] (before rounding.)\n// Wrong count: 168353 (all nearest rounding wrong results with fma.)\n// @ts-ignore: decorator\n@inline\nexport function exp2f_lut(x: f32): f32 {\n const\n N = 1 << EXP2F_TABLE_BITS,\n N_MASK = N - 1,\n shift = reinterpret(0x4338000000000000) / N, // 0x1.8p+52\n Ox127f = reinterpret(0x7F000000);\n\n const\n C0 = reinterpret(0x3FAC6AF84B912394), // 0x1.c6af84b912394p-5\n C1 = reinterpret(0x3FCEBFCE50FAC4F3), // 0x1.ebfce50fac4f3p-3\n C2 = reinterpret(0x3FE62E42FF0C52D6); // 0x1.62e42ff0c52d6p-1\n\n var xd = x;\n var ix = reinterpret(x);\n var ux = ix >> 20 & 0x7FF;\n if (ux >= 0x430) {\n // |x| >= 128 or x is nan.\n if (ix == 0xFF800000) return 0; // x == -Inf -> 0\n if (ux >= 0x7F8) return x + x; // x == Inf/NaN -> Inf/NaN\n if (x > 0) return x * Ox127f; // x > 0 -> HugeVal (Owerflow)\n if (x <= -150) return 0; // x <= -150 -> 0 (Underflow)\n }\n\n // x = k/N + r with r in [-1/(2N), 1/(2N)] and int k.\n var kd = xd + shift;\n var ki = reinterpret(kd);\n var r = xd - (kd - shift);\n var t: u64, y: f64, s: f64;\n\n // exp2(x) = 2^(k/N) * 2^r ~= s * (C0*r^3 + C1*r^2 + C2*r + 1)\n t = load(EXP2F_DATA_TAB + ((ki & N_MASK) << alignof()));\n t += ki << (52 - EXP2F_TABLE_BITS);\n s = reinterpret(t);\n y = C2 * r + 1;\n y += (C0 * r + C1) * (r * r);\n y *= s;\n\n return y;\n}\n\n// ULP error: 0.502 (nearest rounding.)\n// Relative error: 1.69 * 2^-34 in [-ln2/64, ln2/64] (before rounding.)\n// Wrong count: 170635 (all nearest rounding wrong results with fma.)\n// @ts-ignore: decorator\n@inline\nexport function expf_lut(x: f32): f32 {\n const\n N = 1 << EXP2F_TABLE_BITS,\n N_MASK = N - 1,\n shift = reinterpret(0x4338000000000000), // 0x1.8p+52\n InvLn2N = reinterpret(0x3FF71547652B82FE) * N, // 0x1.71547652b82fep+0\n Ox1p127f = reinterpret(0x7F000000);\n\n const\n C0 = reinterpret(0x3FAC6AF84B912394) / N / N / N, // 0x1.c6af84b912394p-5\n C1 = reinterpret(0x3FCEBFCE50FAC4F3) / N / N, // 0x1.ebfce50fac4f3p-3\n C2 = reinterpret(0x3FE62E42FF0C52D6) / N; // 0x1.62e42ff0c52d6p-1\n\n var xd = x;\n var ix = reinterpret(x);\n var ux = ix >> 20 & 0x7FF;\n if (ux >= 0x42B) {\n // |x| >= 88 or x is nan.\n if (ix == 0xFF800000) return 0; // x == -Inf -> 0\n if (ux >= 0x7F8) return x + x; // x == Inf/NaN -> Inf/NaN\n if (x > reinterpret(0x42B17217)) return x * Ox1p127f; // x > log(0x1p128) ~= 88.72 -> HugeVal (Owerflow)\n if (x < reinterpret(0xC2CFF1B4)) return 0; // x < log(0x1p-150) ~= -103.97 -> 0 (Underflow)\n }\n\n // x*N/Ln2 = k + r with r in [-1/2, 1/2] and int k.\n var z = InvLn2N * xd;\n\n // Round and convert z to int, the result is in [-150*N, 128*N] and\n // ideally ties-to-even rule is used, otherwise the magnitude of r\n // can be bigger which gives larger approximation error.\n var kd = (z + shift);\n var ki = reinterpret(kd);\n var r = z - (kd - shift);\n var s: f64, y: f64, t: u64;\n\n // exp(x) = 2^(k/N) * 2^(r/N) ~= s * (C0*r^3 + C1*r^2 + C2*r + 1)\n t = load(EXP2F_DATA_TAB + ((ki & N_MASK) << alignof()));\n t += ki << (52 - EXP2F_TABLE_BITS);\n s = reinterpret(t);\n z = C0 * r + C1;\n y = C2 * r + 1;\n y += z * (r * r);\n y *= s;\n\n return y;\n}\n\n//\n// Lookup data for log2f\n//\n\n// @ts-ignore: decorator\n@inline const LOG2F_TABLE_BITS = 4;\n\n// @ts-ignore: decorator\n@lazy @inline const LOG2F_DATA_TAB = memory.data([\n reinterpret(0x3FF661EC79F8F3BE), reinterpret(0xBFDEFEC65B963019), // 0x1.661ec79f8f3bep+0, -0x1.efec65b963019p-2,\n reinterpret(0x3FF571ED4AAF883D), reinterpret(0xBFDB0B6832D4FCA4), // 0x1.571ed4aaf883dp+0, -0x1.b0b6832d4fca4p-2,\n reinterpret(0x3FF49539F0F010B0), reinterpret(0xBFD7418B0A1FB77B), // 0x1.49539f0f010bp+0 , -0x1.7418b0a1fb77bp-2,\n reinterpret(0x3FF3C995B0B80385), reinterpret(0xBFD39DE91A6DCF7B), // 0x1.3c995b0b80385p+0, -0x1.39de91a6dcf7bp-2,\n reinterpret(0x3FF30D190C8864A5), reinterpret(0xBFD01D9BF3F2B631), // 0x1.30d190c8864a5p+0, -0x1.01d9bf3f2b631p-2,\n reinterpret(0x3FF25E227B0B8EA0), reinterpret(0xBFC97C1D1B3B7AF0), // 0x1.25e227b0b8eap+0 , -0x1.97c1d1b3b7afp-3 ,\n reinterpret(0x3FF1BB4A4A1A343F), reinterpret(0xBFC2F9E393AF3C9F), // 0x1.1bb4a4a1a343fp+0, -0x1.2f9e393af3c9fp-3,\n reinterpret(0x3FF12358F08AE5BA), reinterpret(0xBFB960CBBF788D5C), // 0x1.12358f08ae5bap+0, -0x1.960cbbf788d5cp-4,\n reinterpret(0x3FF0953F419900A7), reinterpret(0xBFAA6F9DB6475FCE), // 0x1.0953f419900a7p+0, -0x1.a6f9db6475fcep-5,\n reinterpret(0x3FF0000000000000), 0, // 0x1p+0, 0x0,\n reinterpret(0x3FEE608CFD9A47AC), reinterpret(0x3FB338CA9F24F53D), // 0x1.e608cfd9a47acp-1, 0x1.338ca9f24f53dp-4,\n reinterpret(0x3FECA4B31F026AA0), reinterpret(0x3FC476A9543891BA), // 0x1.ca4b31f026aap-1 , 0x1.476a9543891bap-3,\n reinterpret(0x3FEB2036576AFCE6), reinterpret(0x3FCE840B4AC4E4D2), // 0x1.b2036576afce6p-1, 0x1.e840b4ac4e4d2p-3,\n reinterpret(0x3FE9C2D163A1AA2D), reinterpret(0x3FD40645F0C6651C), // 0x1.9c2d163a1aa2dp-1, 0x1.40645f0c6651cp-2,\n reinterpret(0x3FE886E6037841ED), reinterpret(0x3FD88E9C2C1B9FF8), // 0x1.886e6037841edp-1, 0x1.88e9c2c1b9ff8p-2,\n reinterpret(0x3FE767DCF5534862), reinterpret(0x3FDCE0A44EB17BCC) // 0x1.767dcf5534862p-1, 0x1.ce0a44eb17bccp-2\n]);\n\n// ULP error: 0.752 (nearest rounding.)\n// Relative error: 1.9 * 2^-26 (before rounding.)\n// @ts-ignore: decorator\n@inline\nexport function log2f_lut(x: f32): f32 {\n const\n N_MASK = (1 << LOG2F_TABLE_BITS) - 1,\n Ox1p23f = reinterpret(0x4B000000); // 0x1p23f\n\n const\n A0 = reinterpret(0xBFD712B6F70A7E4D), // -0x1.712b6f70a7e4dp-2\n A1 = reinterpret(0x3FDECABF496832E0), // 0x1.ecabf496832ep-2\n A2 = reinterpret(0xBFE715479FFAE3DE), // -0x1.715479ffae3dep-1\n A3 = reinterpret(0x3FF715475F35C8B8); // 0x1.715475f35c8b8p0\n\n var ux = reinterpret(x);\n // Fix sign of zero with downward rounding when x==1.\n // if (WANT_ROUNDING && predict_false(ix == 0x3f800000)) return 0;\n if (ux - 0x00800000 >= 0x7F800000 - 0x00800000) {\n // x < 0x1p-126 or inf or nan.\n if (ux * 2 == 0) return -Infinity;\n if (ux == 0x7F800000) return x; // log2(inf) == inf.\n if ((ux >> 31) || ux * 2 >= 0xFF000000) return (x - x) / (x - x);\n // x is subnormal, normalize it.\n ux = reinterpret(x * Ox1p23f);\n ux -= 23 << 23;\n }\n // x = 2^k z; where z is in range [OFF,2*OFF] and exact.\n // The range is split into N subintervals.\n // The ith subinterval contains z and c is near its center.\n var tmp = ux - 0x3F330000;\n var i = (tmp >> (23 - LOG2F_TABLE_BITS)) & N_MASK;\n var top = tmp & 0xFF800000;\n var iz = ux - top;\n var k = tmp >> 23;\n\n var invc = load(LOG2F_DATA_TAB + (i << (1 + alignof())), 0 << alignof());\n var logc = load(LOG2F_DATA_TAB + (i << (1 + alignof())), 1 << alignof());\n var z = reinterpret(iz);\n\n // log2(x) = log1p(z/c-1)/ln2 + log2(c) + k\n var r = z * invc - 1;\n var y0 = logc + k;\n\n // Pipelined polynomial evaluation to approximate log1p(r)/ln2.\n var y = A1 * r + A2;\n var p = A3 * r + y0;\n var r2 = r * r;\n y += A0 * r2;\n y = y * r2 + p;\n\n return y;\n}\n\n//\n// Lookup data for logf. See: https://git.musl-libc.org/cgit/musl/tree/src/math/logf.c\n//\n\n// @ts-ignore: decorator\n@inline const LOGF_TABLE_BITS = 4;\n\n// @ts-ignore: decorator\n@lazy @inline const LOGF_DATA_TAB = memory.data([\n reinterpret(0x3FF661EC79F8F3BE), reinterpret(0xBFD57BF7808CAADE), // 0x1.661ec79f8f3bep+0, -0x1.57bf7808caadep-2,\n reinterpret(0x3FF571ED4AAF883D), reinterpret(0xBFD2BEF0A7C06DDB), // 0x1.571ed4aaf883dp+0, -0x1.2bef0a7c06ddbp-2,\n reinterpret(0x3FF49539F0F010B0), reinterpret(0xBFD01EAE7F513A67), // 0x1.49539f0f010bp+0 , -0x1.01eae7f513a67p-2,\n reinterpret(0x3FF3C995B0B80385), reinterpret(0xBFCB31D8A68224E9), // 0x1.3c995b0b80385p+0, -0x1.b31d8a68224e9p-3,\n reinterpret(0x3FF30D190C8864A5), reinterpret(0xBFC6574F0AC07758), // 0x1.30d190c8864a5p+0, -0x1.6574f0ac07758p-3,\n reinterpret(0x3FF25E227B0B8EA0), reinterpret(0xBFC1AA2BC79C8100), // 0x1.25e227b0b8eap+0 , -0x1.1aa2bc79c81p-3 ,\n reinterpret(0x3FF1BB4A4A1A343F), reinterpret(0xBFBA4E76CE8C0E5E), // 0x1.1bb4a4a1a343fp+0, -0x1.a4e76ce8c0e5ep-4,\n reinterpret(0x3FF12358F08AE5BA), reinterpret(0xBFB1973C5A611CCC), // 0x1.12358f08ae5bap+0, -0x1.1973c5a611cccp-4,\n reinterpret(0x3FF0953F419900A7), reinterpret(0xBFA252F438E10C1E), // 0x1.0953f419900a7p+0, -0x1.252f438e10c1ep-5,\n reinterpret(0x3FF0000000000000), 0, // 0x1p+0, 0,\n reinterpret(0x3FEE608CFD9A47AC), reinterpret(0x3FAAA5AA5DF25984), // 0x1.e608cfd9a47acp-1, 0x1.aa5aa5df25984p-5,\n reinterpret(0x3FECA4B31F026AA0), reinterpret(0x3FBC5E53AA362EB4), // 0x1.ca4b31f026aap-1 , 0x1.c5e53aa362eb4p-4,\n reinterpret(0x3FEB2036576AFCE6), reinterpret(0x3FC526E57720DB08), // 0x1.b2036576afce6p-1, 0x1.526e57720db08p-3,\n reinterpret(0x3FE9C2D163A1AA2D), reinterpret(0x3FCBC2860D224770), // 0x1.9c2d163a1aa2dp-1, 0x1.bc2860d22477p-3 ,\n reinterpret(0x3FE886E6037841ED), reinterpret(0x3FD1058BC8A07EE1), // 0x1.886e6037841edp-1, 0x1.1058bc8a07ee1p-2,\n reinterpret(0x3FE767DCF5534862), reinterpret(0x3FD4043057B6EE09) // 0x1.767dcf5534862p-1, 0x1.4043057b6ee09p-2\n]);\n\n// ULP error: 0.818 (nearest rounding.)\n// Relative error: 1.957 * 2^-26 (before rounding.)\n// @ts-ignore: decorator\n@inline\nexport function logf_lut(x: f32): f32 {\n const\n N_MASK = (1 << LOGF_TABLE_BITS) - 1,\n Ox1p23f = reinterpret(0x4B000000); // 0x1p23f\n\n const\n Ln2 = reinterpret(0x3FE62E42FEFA39EF), // 0x1.62e42fefa39efp-1;\n A0 = reinterpret(0xBFD00EA348B88334), // -0x1.00ea348b88334p-2\n A1 = reinterpret(0x3FD5575B0BE00B6A), // 0x1.5575b0be00b6ap-2\n A2 = reinterpret(0xBFDFFFFEF20A4123); // -0x1.ffffef20a4123p-2\n\n var ux = reinterpret(x);\n // Fix sign of zero with downward rounding when x==1.\n // if (WANT_ROUNDING && ux == 0x3f800000) return 0;\n if (ux - 0x00800000 >= 0x7F800000 - 0x00800000) {\n // x < 0x1p-126 or inf or nan.\n if ((ux << 1) == 0) return -Infinity;\n if (ux == 0x7F800000) return x; // log(inf) == inf.\n if ((ux >> 31) || (ux << 1) >= 0xFF000000) return (x - x) / (x - x);\n // x is subnormal, normalize it.\n ux = reinterpret(x * Ox1p23f);\n ux -= 23 << 23;\n }\n // x = 2^k z; where z is in range [OFF,2*OFF] and exact.\n // The range is split into N subintervals.\n // The ith subinterval contains z and c is near its center.\n var tmp = ux - 0x3F330000;\n var i = (tmp >> (23 - LOGF_TABLE_BITS)) & N_MASK;\n var k = tmp >> 23;\n var iz = ux - (tmp & 0x1FF << 23);\n\n var invc = load(LOGF_DATA_TAB + (i << (1 + alignof())), 0 << alignof());\n var logc = load(LOGF_DATA_TAB + (i << (1 + alignof())), 1 << alignof());\n\n var z = reinterpret(iz);\n\n // log(x) = log1p(z/c-1) + log(c) + k*Ln2\n var r = z * invc - 1;\n var y0 = logc + k * Ln2;\n\n // Pipelined polynomial evaluation to approximate log1p(r).\n var r2 = r * r;\n var y = A1 * r + A2;\n y += A0 * r2;\n y = y * r2 + (y0 + r);\n\n return y;\n}\n\n//\n// Lookup data for powf. See: https://git.musl-libc.org/cgit/musl/tree/src/math/powf.c\n//\n\n// @ts-ignore: decorator\n@inline\nfunction zeroinfnanf(ux: u32): bool {\n return (ux << 1) - 1 >= (0x7f800000 << 1) - 1;\n}\n\n// Returns 0 if not int, 1 if odd int, 2 if even int. The argument is\n// the bit representation of a non-zero finite floating-point value.\n// @ts-ignore: decorator\n@inline\nfunction checkintf(iy: u32): i32 {\n var e = iy >> 23 & 0xFF;\n if (e < 0x7F ) return 0;\n if (e > 0x7F + 23) return 2;\n e = 1 << (0x7F + 23 - e);\n if (iy & (e - 1)) return 0;\n if (iy & e ) return 1;\n return 2;\n}\n\n// Subnormal input is normalized so ix has negative biased exponent.\n// Output is multiplied by N (POWF_SCALE) if TOINT_INTRINICS is set.\n// @ts-ignore: decorator\n@inline\nfunction log2f_inline(ux: u32): f64 {\n const N_MASK = (1 << LOG2F_TABLE_BITS) - 1;\n\n const\n A0 = reinterpret(0x3FD27616C9496E0B), // 0x1.27616c9496e0bp-2\n A1 = reinterpret(0xBFD71969A075C67A), // -0x1.71969a075c67ap-2\n A2 = reinterpret(0x3FDEC70A6CA7BADD), // 0x1.ec70a6ca7baddp-2\n A3 = reinterpret(0xBFE7154748BEF6C8), // -0x1.7154748bef6c8p-1\n A4 = reinterpret(0x3FF71547652AB82B); // 0x1.71547652ab82bp+0\n\n // x = 2^k z; where z is in range [OFF,2*OFF] and exact.\n // The range is split into N subintervals.\n // The ith subinterval contains z and c is near its center.\n var tmp = ux - 0x3F330000;\n var i = usize((tmp >> (23 - LOG2F_TABLE_BITS)) & N_MASK);\n var top = tmp & 0xFF800000;\n var uz = ux - top;\n var k = top >> 23;\n\n var invc = load(LOG2F_DATA_TAB + (i << (1 + alignof())), 0 << alignof());\n var logc = load(LOG2F_DATA_TAB + (i << (1 + alignof())), 1 << alignof());\n var z = reinterpret(uz);\n\n // log2(x) = log1p(z/c-1)/ln2 + log2(c) + k\n var r = z * invc - 1;\n var y0 = logc + k;\n\n // Pipelined polynomial evaluation to approximate log1p(r)/ln2.\n var y = A0 * r + A1;\n var p = A2 * r + A3;\n var q = A4 * r + y0;\n\n r *= r;\n q += p * r;\n y = y * (r * r) + q;\n\n return y;\n}\n\n// The output of log2 and thus the input of exp2 is either scaled by N\n// (in case of fast toint intrinsics) or not. The unscaled xd must be\n// in [-1021,1023], sign_bias sets the sign of the result.\n// @ts-ignore: decorator\n@inline\nfunction exp2f_inline(xd: f64, signBias: u32): f32 {\n const\n N = 1 << EXP2F_TABLE_BITS,\n N_MASK = N - 1,\n shift = reinterpret(0x4338000000000000) / N; // 0x1.8p+52\n\n const\n C0 = reinterpret(0x3FAC6AF84B912394), // 0x1.c6af84b912394p-5\n C1 = reinterpret(0x3FCEBFCE50FAC4F3), // 0x1.ebfce50fac4f3p-3\n C2 = reinterpret(0x3FE62E42FF0C52D6); // 0x1.62e42ff0c52d6p-1\n\n // x = k/N + r with r in [-1/(2N), 1/(2N)]\n var kd = (xd + shift);\n var ki = reinterpret(kd);\n var r = xd - (kd - shift);\n var t: u64, z: f64, y: f64, s: f64;\n\n // exp2(x) = 2^(k/N) * 2^r ~= s * (C0*r^3 + C1*r^2 + C2*r + 1)\n t = load(EXP2F_DATA_TAB + ((ki & N_MASK) << alignof()));\n t += (ki + signBias) << (52 - EXP2F_TABLE_BITS);\n s = reinterpret(t);\n z = C0 * r + C1;\n y = C2 * r + 1;\n y += z * (r * r);\n y *= s;\n return y;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction xflowf(sign: u32, y: f32): f32 {\n return select(-y, y, sign) * y;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction oflowf(sign: u32): f32 {\n return xflowf(sign, reinterpret(0x70000000)); // 0x1p97f\n}\n\n// @ts-ignore: decorator\n@inline\nfunction uflowf(sign: u32): f32 {\n return xflowf(sign, reinterpret(0x10000000)); // 0x1p-95f\n}\n\n// @ts-ignore: decorator\n@inline\nexport function powf_lut(x: f32, y: f32): f32 {\n const\n Ox1p23f = reinterpret(0x4B000000), // 0x1p23f\n UPPER_LIMIT = reinterpret(0x405FFFFFFFD1D571), // 0x1.fffffffd1d571p+6\n LOWER_LIMIT = -150.0,\n SIGN_BIAS = 1 << (EXP2F_TABLE_BITS + 11);\n\n var signBias: u32 = 0;\n var ix = reinterpret(x);\n var iy = reinterpret(y);\n var ny = 0;\n\n if (i32(ix - 0x00800000 >= 0x7f800000 - 0x00800000) | (ny = i32(zeroinfnanf(iy)))) {\n // Either (x < 0x1p-126 or inf or nan) or (y is 0 or inf or nan).\n if (ny) {\n if ((iy << 1) == 0) return 1.0;\n if (ix == 0x3F800000) return NaN; // original: 1.0\n if ((ix << 1) > (0x7F800000 << 1) || (iy << 1) > (0x7F800000 << 1)) return x + y;\n if ((ix << 1) == (0x3F800000 << 1)) return NaN; // original: 1.0\n if (((ix << 1) < (0x3F800000 << 1)) == !(iy >> 31)) return 0; // |x| < 1 && y==inf or |x| > 1 && y==-inf.\n return y * y;\n }\n if (zeroinfnanf(ix)) {\n let x2 = x * x;\n if ((ix >> 31) && checkintf(iy) == 1) x2 = -x2;\n return iy < 0 ? 1 / x2 : x2;\n }\n // x and y are non-zero finite.\n if (ix < 0) {\n // Finite x < 0.\n let yint = checkintf(iy);\n if (yint == 0) return (x - x) / (x - x);\n if (yint == 1) signBias = SIGN_BIAS;\n ix &= 0x7FFFFFFF;\n }\n if (ix < 0x00800000) {\n // Normalize subnormal x so exponent becomes negative.\n ix = reinterpret(x * Ox1p23f);\n ix &= 0x7FFFFFFF;\n ix -= 23 << 23;\n }\n }\n var logx = log2f_inline(ix);\n var ylogx = y * logx; // cannot overflow, y is single prec.\n if ((reinterpret(ylogx) >> 47 & 0xFFFF) >= 0x80BF) { // reinterpret(126.0) >> 47\n // |y * log(x)| >= 126\n if (ylogx > UPPER_LIMIT) return oflowf(signBias); // overflow\n if (ylogx <= LOWER_LIMIT) return uflowf(signBias); // underflow\n }\n return exp2f_inline(ylogx, signBias);\n}\n\n//\n// Lookup data for exp. See: https://git.musl-libc.org/cgit/musl/tree/src/math/exp.c\n//\n\n// @ts-ignore: decorator\n@inline const EXP_TABLE_BITS = 7;\n\n// @ts-ignore: decorator\n@lazy @inline const EXP_DATA_TAB = memory.data([\n 0x0000000000000000, 0x3FF0000000000000,\n 0x3C9B3B4F1A88BF6E, 0x3FEFF63DA9FB3335,\n 0xBC7160139CD8DC5D, 0x3FEFEC9A3E778061,\n 0xBC905E7A108766D1, 0x3FEFE315E86E7F85,\n 0x3C8CD2523567F613, 0x3FEFD9B0D3158574,\n 0xBC8BCE8023F98EFA, 0x3FEFD06B29DDF6DE,\n 0x3C60F74E61E6C861, 0x3FEFC74518759BC8,\n 0x3C90A3E45B33D399, 0x3FEFBE3ECAC6F383,\n 0x3C979AA65D837B6D, 0x3FEFB5586CF9890F,\n 0x3C8EB51A92FDEFFC, 0x3FEFAC922B7247F7,\n 0x3C3EBE3D702F9CD1, 0x3FEFA3EC32D3D1A2,\n 0xBC6A033489906E0B, 0x3FEF9B66AFFED31B,\n 0xBC9556522A2FBD0E, 0x3FEF9301D0125B51,\n 0xBC5080EF8C4EEA55, 0x3FEF8ABDC06C31CC,\n 0xBC91C923B9D5F416, 0x3FEF829AAEA92DE0,\n 0x3C80D3E3E95C55AF, 0x3FEF7A98C8A58E51,\n 0xBC801B15EAA59348, 0x3FEF72B83C7D517B,\n 0xBC8F1FF055DE323D, 0x3FEF6AF9388C8DEA,\n 0x3C8B898C3F1353BF, 0x3FEF635BEB6FCB75,\n 0xBC96D99C7611EB26, 0x3FEF5BE084045CD4,\n 0x3C9AECF73E3A2F60, 0x3FEF54873168B9AA,\n 0xBC8FE782CB86389D, 0x3FEF4D5022FCD91D,\n 0x3C8A6F4144A6C38D, 0x3FEF463B88628CD6,\n 0x3C807A05B0E4047D, 0x3FEF3F49917DDC96,\n 0x3C968EFDE3A8A894, 0x3FEF387A6E756238,\n 0x3C875E18F274487D, 0x3FEF31CE4FB2A63F,\n 0x3C80472B981FE7F2, 0x3FEF2B4565E27CDD,\n 0xBC96B87B3F71085E, 0x3FEF24DFE1F56381,\n 0x3C82F7E16D09AB31, 0x3FEF1E9DF51FDEE1,\n 0xBC3D219B1A6FBFFA, 0x3FEF187FD0DAD990,\n 0x3C8B3782720C0AB4, 0x3FEF1285A6E4030B,\n 0x3C6E149289CECB8F, 0x3FEF0CAFA93E2F56,\n 0x3C834D754DB0ABB6, 0x3FEF06FE0A31B715,\n 0x3C864201E2AC744C, 0x3FEF0170FC4CD831,\n 0x3C8FDD395DD3F84A, 0x3FEEFC08B26416FF,\n 0xBC86A3803B8E5B04, 0x3FEEF6C55F929FF1,\n 0xBC924AEDCC4B5068, 0x3FEEF1A7373AA9CB,\n 0xBC9907F81B512D8E, 0x3FEEECAE6D05D866,\n 0xBC71D1E83E9436D2, 0x3FEEE7DB34E59FF7,\n 0xBC991919B3CE1B15, 0x3FEEE32DC313A8E5,\n 0x3C859F48A72A4C6D, 0x3FEEDEA64C123422,\n 0xBC9312607A28698A, 0x3FEEDA4504AC801C,\n 0xBC58A78F4817895B, 0x3FEED60A21F72E2A,\n 0xBC7C2C9B67499A1B, 0x3FEED1F5D950A897,\n 0x3C4363ED60C2AC11, 0x3FEECE086061892D,\n 0x3C9666093B0664EF, 0x3FEECA41ED1D0057,\n 0x3C6ECCE1DAA10379, 0x3FEEC6A2B5C13CD0,\n 0x3C93FF8E3F0F1230, 0x3FEEC32AF0D7D3DE,\n 0x3C7690CEBB7AAFB0, 0x3FEEBFDAD5362A27,\n 0x3C931DBDEB54E077, 0x3FEEBCB299FDDD0D,\n 0xBC8F94340071A38E, 0x3FEEB9B2769D2CA7,\n 0xBC87DECCDC93A349, 0x3FEEB6DAA2CF6642,\n 0xBC78DEC6BD0F385F, 0x3FEEB42B569D4F82,\n 0xBC861246EC7B5CF6, 0x3FEEB1A4CA5D920F,\n 0x3C93350518FDD78E, 0x3FEEAF4736B527DA,\n 0x3C7B98B72F8A9B05, 0x3FEEAD12D497C7FD,\n 0x3C9063E1E21C5409, 0x3FEEAB07DD485429,\n 0x3C34C7855019C6EA, 0x3FEEA9268A5946B7,\n 0x3C9432E62B64C035, 0x3FEEA76F15AD2148,\n 0xBC8CE44A6199769F, 0x3FEEA5E1B976DC09,\n 0xBC8C33C53BEF4DA8, 0x3FEEA47EB03A5585,\n 0xBC845378892BE9AE, 0x3FEEA34634CCC320,\n 0xBC93CEDD78565858, 0x3FEEA23882552225,\n 0x3C5710AA807E1964, 0x3FEEA155D44CA973,\n 0xBC93B3EFBF5E2228, 0x3FEEA09E667F3BCD,\n 0xBC6A12AD8734B982, 0x3FEEA012750BDABF,\n 0xBC6367EFB86DA9EE, 0x3FEE9FB23C651A2F,\n 0xBC80DC3D54E08851, 0x3FEE9F7DF9519484,\n 0xBC781F647E5A3ECF, 0x3FEE9F75E8EC5F74,\n 0xBC86EE4AC08B7DB0, 0x3FEE9F9A48A58174,\n 0xBC8619321E55E68A, 0x3FEE9FEB564267C9,\n 0x3C909CCB5E09D4D3, 0x3FEEA0694FDE5D3F,\n 0xBC7B32DCB94DA51D, 0x3FEEA11473EB0187,\n 0x3C94ECFD5467C06B, 0x3FEEA1ED0130C132,\n 0x3C65EBE1ABD66C55, 0x3FEEA2F336CF4E62,\n 0xBC88A1C52FB3CF42, 0x3FEEA427543E1A12,\n 0xBC9369B6F13B3734, 0x3FEEA589994CCE13,\n 0xBC805E843A19FF1E, 0x3FEEA71A4623C7AD,\n 0xBC94D450D872576E, 0x3FEEA8D99B4492ED,\n 0x3C90AD675B0E8A00, 0x3FEEAAC7D98A6699,\n 0x3C8DB72FC1F0EAB4, 0x3FEEACE5422AA0DB,\n 0xBC65B6609CC5E7FF, 0x3FEEAF3216B5448C,\n 0x3C7BF68359F35F44, 0x3FEEB1AE99157736,\n 0xBC93091FA71E3D83, 0x3FEEB45B0B91FFC6,\n 0xBC5DA9B88B6C1E29, 0x3FEEB737B0CDC5E5,\n 0xBC6C23F97C90B959, 0x3FEEBA44CBC8520F,\n 0xBC92434322F4F9AA, 0x3FEEBD829FDE4E50,\n 0xBC85CA6CD7668E4B, 0x3FEEC0F170CA07BA,\n 0x3C71AFFC2B91CE27, 0x3FEEC49182A3F090,\n 0x3C6DD235E10A73BB, 0x3FEEC86319E32323,\n 0xBC87C50422622263, 0x3FEECC667B5DE565,\n 0x3C8B1C86E3E231D5, 0x3FEED09BEC4A2D33,\n 0xBC91BBD1D3BCBB15, 0x3FEED503B23E255D,\n 0x3C90CC319CEE31D2, 0x3FEED99E1330B358,\n 0x3C8469846E735AB3, 0x3FEEDE6B5579FDBF,\n 0xBC82DFCD978E9DB4, 0x3FEEE36BBFD3F37A,\n 0x3C8C1A7792CB3387, 0x3FEEE89F995AD3AD,\n 0xBC907B8F4AD1D9FA, 0x3FEEEE07298DB666,\n 0xBC55C3D956DCAEBA, 0x3FEEF3A2B84F15FB,\n 0xBC90A40E3DA6F640, 0x3FEEF9728DE5593A,\n 0xBC68D6F438AD9334, 0x3FEEFF76F2FB5E47,\n 0xBC91EEE26B588A35, 0x3FEF05B030A1064A,\n 0x3C74FFD70A5FDDCD, 0x3FEF0C1E904BC1D2,\n 0xBC91BDFBFA9298AC, 0x3FEF12C25BD71E09,\n 0x3C736EAE30AF0CB3, 0x3FEF199BDD85529C,\n 0x3C8EE3325C9FFD94, 0x3FEF20AB5FFFD07A,\n 0x3C84E08FD10959AC, 0x3FEF27F12E57D14B,\n 0x3C63CDAF384E1A67, 0x3FEF2F6D9406E7B5,\n 0x3C676B2C6C921968, 0x3FEF3720DCEF9069,\n 0xBC808A1883CCB5D2, 0x3FEF3F0B555DC3FA,\n 0xBC8FAD5D3FFFFA6F, 0x3FEF472D4A07897C,\n 0xBC900DAE3875A949, 0x3FEF4F87080D89F2,\n 0x3C74A385A63D07A7, 0x3FEF5818DCFBA487,\n 0xBC82919E2040220F, 0x3FEF60E316C98398,\n 0x3C8E5A50D5C192AC, 0x3FEF69E603DB3285,\n 0x3C843A59AC016B4B, 0x3FEF7321F301B460,\n 0xBC82D52107B43E1F, 0x3FEF7C97337B9B5F,\n 0xBC892AB93B470DC9, 0x3FEF864614F5A129,\n 0x3C74B604603A88D3, 0x3FEF902EE78B3FF6,\n 0x3C83C5EC519D7271, 0x3FEF9A51FBC74C83,\n 0xBC8FF7128FD391F0, 0x3FEFA4AFA2A490DA,\n 0xBC8DAE98E223747D, 0x3FEFAF482D8E67F1,\n 0x3C8EC3BC41AA2008, 0x3FEFBA1BEE615A27,\n 0x3C842B94C3A9EB32, 0x3FEFC52B376BBA97,\n 0x3C8A64A931D185EE, 0x3FEFD0765B6E4540,\n 0xBC8E37BAE43BE3ED, 0x3FEFDBFDAD9CBE14,\n 0x3C77893B4D91CD9D, 0x3FEFE7C1819E90D8,\n 0x3C5305C14160CC89, 0x3FEFF3C22B8F71F1\n]);\n\n// Handle cases that may overflow or underflow when computing the result that\n// is scale*(1+TMP) without intermediate rounding. The bit representation of\n// scale is in SBITS, however it has a computed exponent that may have\n// overflown into the sign bit so that needs to be adjusted before using it as\n// a double. (int32_t)KI is the k used in the argument reduction and exponent\n// adjustment of scale, positive k here means the result may overflow and\n// negative k means the result may underflow.\n// @ts-ignore: decorator\n@inline\nfunction specialcase(tmp: f64, sbits: u64, ki: u64): f64 {\n const\n Ox1p_1022 = reinterpret(0x0010000000000000), // 0x1p-1022\n Ox1p1009 = reinterpret(0x7F00000000000000); // 0x1p1009\n\n var scale: f64;\n if (!(ki & 0x80000000)) {\n // k > 0, the exponent of scale might have overflowed by <= 460.\n sbits -= u64(1009) << 52;\n scale = reinterpret(sbits);\n return Ox1p1009 * (scale + scale * tmp); // 0x1p1009\n }\n // k < 0, need special care in the subnormal range.\n sbits += u64(1022) << 52;\n // Note: sbits is signed scale.\n scale = reinterpret(sbits);\n var y = scale + scale * tmp;\n if (abs(y) < 1.0) {\n // Round y to the right precision before scaling it into the subnormal\n // range to avoid double rounding that can cause 0.5+E/2 ulp error where\n // E is the worst-case ulp error outside the subnormal range. So this\n // is only useful if the goal is better than 1 ulp worst-case error.\n let one = copysign(1.0, y);\n let lo = scale - y + scale * tmp;\n let hi = one + y;\n lo = one - hi + y + lo;\n y = (hi + lo) - one;\n // Fix the sign of 0.\n if (y == 0.0) y = reinterpret(sbits & 0x8000000000000000);\n }\n return y * Ox1p_1022;\n}\n\n// @ts-ignore: decorator\n@inline\nexport function exp_lut(x: f64): f64 {\n const\n N = 1 << EXP_TABLE_BITS,\n N_MASK = N - 1;\n\n const\n InvLn2N = reinterpret(0x3FF71547652B82FE) * N, // 0x1.71547652b82fep0\n NegLn2hiN = reinterpret(0xBF762E42FEFA0000), // -0x1.62e42fefa0000p-8\n NegLn2loN = reinterpret(0xBD0CF79ABC9E3B3A), // -0x1.cf79abc9e3b3ap-47\n shift = reinterpret(0x4338000000000000); // 0x1.8p52;\n\n const\n C2 = reinterpret(0x3FDFFFFFFFFFFDBD), // __exp_data.poly[0] (0x1.ffffffffffdbdp-2)\n C3 = reinterpret(0x3FC555555555543C), // __exp_data.poly[1] (0x1.555555555543cp-3)\n C4 = reinterpret(0x3FA55555CF172B91), // __exp_data.poly[2] (0x1.55555cf172b91p-5)\n C5 = reinterpret(0x3F81111167A4D017); // __exp_data.poly[3] (0x1.1111167a4d017p-7)\n\n var ux = reinterpret(x);\n var abstop = u32(ux >> 52) & 0x7FF;\n if (abstop - 0x3C9 >= 0x03F) {\n if (abstop - 0x3C9 >= 0x80000000) return 1;\n if (abstop >= 0x409) {\n if (ux == 0xFFF0000000000000) return 0;\n if (abstop >= 0x7FF) {\n return 1.0 + x;\n } else {\n return select(0, Infinity, ux < 0);\n }\n }\n // Large x is special cased below.\n abstop = 0;\n }\n\n // exp(x) = 2^(k/N) * exp(r), with exp(r) in [2^(-1/2N),2^(1/2N)]\n // x = ln2/N*k + r, with int k and r in [-ln2/2N, ln2/2N]\n var z = InvLn2N * x;\n // #if TOINT_INTRINSICS\n // \tkd = roundtoint(z);\n // \tki = converttoint(z);\n // #elif EXP_USE_TOINT_NARROW\n // \t// z - kd is in [-0.5-2^-16, 0.5] in all rounding modes.\n // var kd = z + shift;\n // var ki = reinterpret(kd) >> 16;\n // var kd = ki;\n // #else\n // z - kd is in [-1, 1] in non-nearest rounding modes.\n var kd = z + shift;\n var ki = reinterpret(kd);\n kd -= shift;\n // #endif\n var r = x + kd * NegLn2hiN + kd * NegLn2loN;\n // 2^(k/N) ~= scale * (1 + tail).\n var idx = usize((ki & N_MASK) << 1);\n var top = ki << (52 - EXP_TABLE_BITS);\n\n var tail = reinterpret(load(EXP_DATA_TAB + (idx << alignof()))); // T[idx]\n // This is only a valid scale when -1023*N < k < 1024*N\n var sbits = load(EXP_DATA_TAB + (idx << alignof()), 1 << alignof()) + top; // T[idx + 1]\n // exp(x) = 2^(k/N) * exp(r) ~= scale + scale * (tail + exp(r) - 1).\n // Evaluation is optimized assuming superscalar pipelined execution.\n var r2 = r * r;\n // Without fma the worst case error is 0.25/N ulp larger.\n // Worst case error is less than 0.5+1.11/N+(abs poly error * 2^53) ulp.\n var tmp = tail + r + r2 * (C2 + r * C3) + r2 * r2 * (C4 + r * C5);\n if (abstop == 0) return specialcase(tmp, sbits, ki);\n var scale = reinterpret(sbits);\n // Note: tmp == 0 or |tmp| > 2^-200 and scale > 2^-739, so there\n // is no spurious underflow here even without fma.\n return scale + scale * tmp;\n}\n\n//\n// Lookup data for exp2. See: https://git.musl-libc.org/cgit/musl/tree/src/math/exp2.c\n//\n\n// Handle cases that may overflow or underflow when computing the result that\n// is scale*(1+TMP) without intermediate rounding. The bit representation of\n// scale is in SBITS, however it has a computed exponent that may have\n// overflown into the sign bit so that needs to be adjusted before using it as\n// a double. (int32_t)KI is the k used in the argument reduction and exponent\n// adjustment of scale, positive k here means the result may overflow and\n// negative k means the result may underflow.\n// @ts-ignore: decorator\n@inline\nfunction specialcase2(tmp: f64, sbits: u64, ki: u64): f64 {\n const Ox1p_1022 = reinterpret(0x10000000000000); // 0x1p-1022\n var scale: f64;\n if ((ki & 0x80000000) == 0) {\n // k > 0, the exponent of scale might have overflowed by 1\n sbits -= u64(1) << 52;\n scale = reinterpret(sbits);\n return 2 * (scale * tmp + scale);\n }\n // k < 0, need special care in the subnormal range\n sbits += u64(1022) << 52;\n scale = reinterpret(sbits);\n var y = scale * tmp + scale;\n if (y < 1.0) {\n // Round y to the right precision before scaling it into the subnormal\n // range to avoid double rounding that can cause 0.5+E/2 ulp error where\n // E is the worst-case ulp error outside the subnormal range. So this\n // is only useful if the goal is better than 1 ulp worst-case error.\n let hi: f64, lo: f64;\n lo = scale - y + scale * tmp;\n hi = 1.0 + y;\n lo = 1.0 - hi + y + lo;\n y = (hi + lo) - 1.0;\n }\n return y * Ox1p_1022;\n}\n\n// @ts-ignore: decorator\n@inline\nexport function exp2_lut(x: f64): f64 {\n const\n N = 1 << EXP_TABLE_BITS,\n N_MASK = N - 1,\n shift = reinterpret(0x4338000000000000) / N; // 0x1.8p52\n\n const\n C1 = reinterpret(0x3FE62E42FEFA39EF), // 0x1.62e42fefa39efp-1\n C2 = reinterpret(0x3FCEBFBDFF82C424), // 0x1.ebfbdff82c424p-3\n C3 = reinterpret(0x3FAC6B08D70CF4B5), // 0x1.c6b08d70cf4b5p-5\n C4 = reinterpret(0x3F83B2ABD24650CC), // 0x1.3b2abd24650ccp-7\n C5 = reinterpret(0x3F55D7E09B4E3A84); // 0x1.5d7e09b4e3a84p-10\n\n var ux = reinterpret(x);\n var abstop = u32(ux >> 52) & 0x7ff;\n if (abstop - 0x3C9 >= 0x03F) {\n if (abstop - 0x3C9 >= 0x80000000) return 1.0;\n if (abstop >= 0x409) {\n if (ux == 0xFFF0000000000000) return 0;\n if (abstop >= 0x7FF) return 1.0 + x;\n if (ux >= 0) return Infinity;\n else if (ux >= 0xC090CC0000000000) return 0;\n }\n if ((ux << 1) > 0x811A000000000000) abstop = 0; // Large x is special cased below.\n }\n\n // exp2(x) = 2^(k/N) * 2^r, with 2^r in [2^(-1/2N),2^(1/2N)].\n // x = k/N + r, with int k and r in [-1/2N, 1/2N]\n var kd = x + shift;\n var ki = reinterpret(kd);\n kd -= shift; // k/N for int k\n var r = x - kd;\n // 2^(k/N) ~= scale * (1 + tail)\n var idx = usize((ki & N_MASK) << 1);\n var top = ki << (52 - EXP_TABLE_BITS);\n\n var tail = reinterpret(load(EXP_DATA_TAB + (idx << alignof()), 0 << alignof())); // T[idx])\n // This is only a valid scale when -1023*N < k < 1024*N\n var sbits = load(EXP_DATA_TAB + (idx << alignof()), 1 << alignof()) + top; // T[idx + 1]\n // exp2(x) = 2^(k/N) * 2^r ~= scale + scale * (tail + 2^r - 1).\n // Evaluation is optimized assuming superscalar pipelined execution\n var r2 = r * r;\n // Without fma the worst case error is 0.5/N ulp larger.\n // Worst case error is less than 0.5+0.86/N+(abs poly error * 2^53) ulp.\n var tmp = tail + r * C1 + r2 * (C2 + r * C3) + r2 * r2 * (C4 + r * C5);\n if (abstop == 0) return specialcase2(tmp, sbits, ki);\n var scale = reinterpret(sbits);\n // Note: tmp == 0 or |tmp| > 2^-65 and scale > 2^-928, so there\n // is no spurious underflow here even without fma.\n return scale * tmp + scale;\n}\n\n//\n// Lookup data for log2. See: https://git.musl-libc.org/cgit/musl/tree/src/math/log2.c\n//\n\n// @ts-ignore: decorator\n@inline const LOG2_TABLE_BITS = 6;\n\n/* Algorithm:\n\n x = 2^k z\n log2(x) = k + log2(c) + log2(z/c)\n log2(z/c) = poly(z/c - 1)\n\nwhere z is in [1.6p-1; 1.6p0] which is split into N subintervals and z falls\ninto the ith one, then table entries are computed as\n\n tab[i].invc = 1/c\n tab[i].logc = (double)log2(c)\n tab2[i].chi = (double)c\n tab2[i].clo = (double)(c - (double)c)\n\nwhere c is near the center of the subinterval and is chosen by trying +-2^29\nfloating point invc candidates around 1/center and selecting one for which\n\n 1) the rounding error in 0x1.8p10 + logc is 0,\n 2) the rounding error in z - chi - clo is < 0x1p-64 and\n 3) the rounding error in (double)log2(c) is minimized (< 0x1p-68).\n\nNote: 1) ensures that k + logc can be computed without rounding error, 2)\nensures that z/c - 1 can be computed as (z - chi - clo)*invc with close to a\nsingle rounding error when there is no fast fma for z*invc - 1, 3) ensures\nthat logc + poly(z/c - 1) has small error, however near x == 1 when\n|log2(x)| < 0x1p-4, this is not enough so that is special cased. */\n\n// @ts-ignore: decorator\n@lazy @inline const LOG2_DATA_TAB1 = memory.data([\n // invc , logc\n reinterpret(0x3FF724286BB1ACF8), reinterpret(0xBFE1095FEECDB000),\n reinterpret(0x3FF6E1F766D2CCA1), reinterpret(0xBFE08494BD76D000),\n reinterpret(0x3FF6A13D0E30D48A), reinterpret(0xBFE00143AEE8F800),\n reinterpret(0x3FF661EC32D06C85), reinterpret(0xBFDEFEC5360B4000),\n reinterpret(0x3FF623FA951198F8), reinterpret(0xBFDDFDD91AB7E000),\n reinterpret(0x3FF5E75BA4CF026C), reinterpret(0xBFDCFFAE0CC79000),\n reinterpret(0x3FF5AC055A214FB8), reinterpret(0xBFDC043811FDA000),\n reinterpret(0x3FF571ED0F166E1E), reinterpret(0xBFDB0B67323AE000),\n reinterpret(0x3FF53909590BF835), reinterpret(0xBFDA152F5A2DB000),\n reinterpret(0x3FF5014FED61ADDD), reinterpret(0xBFD9217F5AF86000),\n reinterpret(0x3FF4CAB88E487BD0), reinterpret(0xBFD8304DB0719000),\n reinterpret(0x3FF49539B4334FEE), reinterpret(0xBFD74189F9A9E000),\n reinterpret(0x3FF460CBDFAFD569), reinterpret(0xBFD6552BB5199000),\n reinterpret(0x3FF42D664EE4B953), reinterpret(0xBFD56B23A29B1000),\n reinterpret(0x3FF3FB01111DD8A6), reinterpret(0xBFD483650F5FA000),\n reinterpret(0x3FF3C995B70C5836), reinterpret(0xBFD39DE937F6A000),\n reinterpret(0x3FF3991C4AB6FD4A), reinterpret(0xBFD2BAA1538D6000),\n reinterpret(0x3FF3698E0CE099B5), reinterpret(0xBFD1D98340CA4000),\n reinterpret(0x3FF33AE48213E7B2), reinterpret(0xBFD0FA853A40E000),\n reinterpret(0x3FF30D191985BDB1), reinterpret(0xBFD01D9C32E73000),\n reinterpret(0x3FF2E025CAB271D7), reinterpret(0xBFCE857DA2FA6000),\n reinterpret(0x3FF2B404CF13CD82), reinterpret(0xBFCCD3C8633D8000),\n reinterpret(0x3FF288B02C7CCB50), reinterpret(0xBFCB26034C14A000),\n reinterpret(0x3FF25E2263944DE5), reinterpret(0xBFC97C1C2F4FE000),\n reinterpret(0x3FF234563D8615B1), reinterpret(0xBFC7D6023F800000),\n reinterpret(0x3FF20B46E33EAF38), reinterpret(0xBFC633A71A05E000),\n reinterpret(0x3FF1E2EEFDCDA3DD), reinterpret(0xBFC494F5E9570000),\n reinterpret(0x3FF1BB4A580B3930), reinterpret(0xBFC2F9E424E0A000),\n reinterpret(0x3FF19453847F2200), reinterpret(0xBFC162595AFDC000),\n reinterpret(0x3FF16E06C0D5D73C), reinterpret(0xBFBF9C9A75BD8000),\n reinterpret(0x3FF1485F47B7E4C2), reinterpret(0xBFBC7B575BF9C000),\n reinterpret(0x3FF12358AD0085D1), reinterpret(0xBFB960C60FF48000),\n reinterpret(0x3FF0FEF00F532227), reinterpret(0xBFB64CE247B60000),\n reinterpret(0x3FF0DB2077D03A8F), reinterpret(0xBFB33F78B2014000),\n reinterpret(0x3FF0B7E6D65980D9), reinterpret(0xBFB0387D1A42C000),\n reinterpret(0x3FF0953EFE7B408D), reinterpret(0xBFAA6F9208B50000),\n reinterpret(0x3FF07325CAC53B83), reinterpret(0xBFA47A954F770000),\n reinterpret(0x3FF05197E40D1B5C), reinterpret(0xBF9D23A8C50C0000),\n reinterpret(0x3FF03091C1208EA2), reinterpret(0xBF916A2629780000),\n reinterpret(0x3FF0101025B37E21), reinterpret(0xBF7720F8D8E80000),\n reinterpret(0x3FEFC07EF9CAA76B), reinterpret(0x3F86FE53B1500000),\n reinterpret(0x3FEF4465D3F6F184), reinterpret(0x3FA11CCCE10F8000),\n reinterpret(0x3FEECC079F84107F), reinterpret(0x3FAC4DFC8C8B8000),\n reinterpret(0x3FEE573A99975AE8), reinterpret(0x3FB3AA321E574000),\n reinterpret(0x3FEDE5D6F0BD3DE6), reinterpret(0x3FB918A0D08B8000),\n reinterpret(0x3FED77B681FF38B3), reinterpret(0x3FBE72E9DA044000),\n reinterpret(0x3FED0CB5724DE943), reinterpret(0x3FC1DCD2507F6000),\n reinterpret(0x3FECA4B2DC0E7563), reinterpret(0x3FC476AB03DEA000),\n reinterpret(0x3FEC3F8EE8D6CB51), reinterpret(0x3FC7074377E22000),\n reinterpret(0x3FEBDD2B4F020C4C), reinterpret(0x3FC98EDE8BA94000),\n reinterpret(0x3FEB7D6C006015CA), reinterpret(0x3FCC0DB86AD2E000),\n reinterpret(0x3FEB20366E2E338F), reinterpret(0x3FCE840AAFCEE000),\n reinterpret(0x3FEAC57026295039), reinterpret(0x3FD0790AB4678000),\n reinterpret(0x3FEA6D01BC2731DD), reinterpret(0x3FD1AC056801C000),\n reinterpret(0x3FEA16D3BC3FF18B), reinterpret(0x3FD2DB11D4FEE000),\n reinterpret(0x3FE9C2D14967FEAD), reinterpret(0x3FD406464EC58000),\n reinterpret(0x3FE970E4F47C9902), reinterpret(0x3FD52DBE093AF000),\n reinterpret(0x3FE920FB3982BCF2), reinterpret(0x3FD651902050D000),\n reinterpret(0x3FE8D30187F759F1), reinterpret(0x3FD771D2CDEAF000),\n reinterpret(0x3FE886E5EBB9F66D), reinterpret(0x3FD88E9C857D9000),\n reinterpret(0x3FE83C97B658B994), reinterpret(0x3FD9A80155E16000),\n reinterpret(0x3FE7F405FFC61022), reinterpret(0x3FDABE186ED3D000),\n reinterpret(0x3FE7AD22181415CA), reinterpret(0x3FDBD0F2AEA0E000),\n reinterpret(0x3FE767DCF99EFF8C), reinterpret(0x3FDCE0A43DBF4000)\n]);\n\n// @ts-ignore: decorator\n@lazy @inline const LOG2_DATA_TAB2 = memory.data([\n // chi , clo\n reinterpret(0x3FE6200012B90A8E), reinterpret(0x3C8904AB0644B605),\n reinterpret(0x3FE66000045734A6), reinterpret(0x3C61FF9BEA62F7A9),\n reinterpret(0x3FE69FFFC325F2C5), reinterpret(0x3C827ECFCB3C90BA),\n reinterpret(0x3FE6E00038B95A04), reinterpret(0x3C88FF8856739326),\n reinterpret(0x3FE71FFFE09994E3), reinterpret(0x3C8AFD40275F82B1),\n reinterpret(0x3FE7600015590E10), reinterpret(0xBC72FD75B4238341),\n reinterpret(0x3FE7A00012655BD5), reinterpret(0x3C7808E67C242B76),\n reinterpret(0x3FE7E0003259E9A6), reinterpret(0xBC6208E426F622B7),\n reinterpret(0x3FE81FFFEDB4B2D2), reinterpret(0xBC8402461EA5C92F),\n reinterpret(0x3FE860002DFAFCC3), reinterpret(0x3C6DF7F4A2F29A1F),\n reinterpret(0x3FE89FFFF78C6B50), reinterpret(0xBC8E0453094995FD),\n reinterpret(0x3FE8E00039671566), reinterpret(0xBC8A04F3BEC77B45),\n reinterpret(0x3FE91FFFE2BF1745), reinterpret(0xBC77FA34400E203C),\n reinterpret(0x3FE95FFFCC5C9FD1), reinterpret(0xBC76FF8005A0695D),\n reinterpret(0x3FE9A0003BBA4767), reinterpret(0x3C70F8C4C4EC7E03),\n reinterpret(0x3FE9DFFFE7B92DA5), reinterpret(0x3C8E7FD9478C4602),\n reinterpret(0x3FEA1FFFD72EFDAF), reinterpret(0xBC6A0C554DCDAE7E),\n reinterpret(0x3FEA5FFFDE04FF95), reinterpret(0x3C867DA98CE9B26B),\n reinterpret(0x3FEA9FFFCA5E8D2B), reinterpret(0xBC8284C9B54C13DE),\n reinterpret(0x3FEADFFFDDAD03EA), reinterpret(0x3C5812C8EA602E3C),\n reinterpret(0x3FEB1FFFF10D3D4D), reinterpret(0xBC8EFADDAD27789C),\n reinterpret(0x3FEB5FFFCE21165A), reinterpret(0x3C53CB1719C61237),\n reinterpret(0x3FEB9FFFD950E674), reinterpret(0x3C73F7D94194CE00),\n reinterpret(0x3FEBE000139CA8AF), reinterpret(0x3C750AC4215D9BC0),\n reinterpret(0x3FEC20005B46DF99), reinterpret(0x3C6BEEA653E9C1C9),\n reinterpret(0x3FEC600040B9F7AE), reinterpret(0xBC7C079F274A70D6),\n reinterpret(0x3FECA0006255FD8A), reinterpret(0xBC7A0B4076E84C1F),\n reinterpret(0x3FECDFFFD94C095D), reinterpret(0x3C88F933F99AB5D7),\n reinterpret(0x3FED1FFFF975D6CF), reinterpret(0xBC582C08665FE1BE),\n reinterpret(0x3FED5FFFA2561C93), reinterpret(0xBC7B04289BD295F3),\n reinterpret(0x3FED9FFF9D228B0C), reinterpret(0x3C870251340FA236),\n reinterpret(0x3FEDE00065BC7E16), reinterpret(0xBC75011E16A4D80C),\n reinterpret(0x3FEE200002F64791), reinterpret(0x3C89802F09EF62E0),\n reinterpret(0x3FEE600057D7A6D8), reinterpret(0xBC7E0B75580CF7FA),\n reinterpret(0x3FEEA00027EDC00C), reinterpret(0xBC8C848309459811),\n reinterpret(0x3FEEE0006CF5CB7C), reinterpret(0xBC8F8027951576F4),\n reinterpret(0x3FEF2000782B7DCC), reinterpret(0xBC8F81D97274538F),\n reinterpret(0x3FEF6000260C450A), reinterpret(0xBC4071002727FFDC),\n reinterpret(0x3FEF9FFFE88CD533), reinterpret(0xBC581BDCE1FDA8B0),\n reinterpret(0x3FEFDFFFD50F8689), reinterpret(0x3C87F91ACB918E6E),\n reinterpret(0x3FF0200004292367), reinterpret(0x3C9B7FF365324681),\n reinterpret(0x3FF05FFFE3E3D668), reinterpret(0x3C86FA08DDAE957B),\n reinterpret(0x3FF0A0000A85A757), reinterpret(0xBC57E2DE80D3FB91),\n reinterpret(0x3FF0E0001A5F3FCC), reinterpret(0xBC91823305C5F014),\n reinterpret(0x3FF11FFFF8AFBAF5), reinterpret(0xBC8BFABB6680BAC2),\n reinterpret(0x3FF15FFFE54D91AD), reinterpret(0xBC9D7F121737E7EF),\n reinterpret(0x3FF1A00011AC36E1), reinterpret(0x3C9C000A0516F5FF),\n reinterpret(0x3FF1E00019C84248), reinterpret(0xBC9082FBE4DA5DA0),\n reinterpret(0x3FF220000FFE5E6E), reinterpret(0xBC88FDD04C9CFB43),\n reinterpret(0x3FF26000269FD891), reinterpret(0x3C8CFE2A7994D182),\n reinterpret(0x3FF2A00029A6E6DA), reinterpret(0xBC700273715E8BC5),\n reinterpret(0x3FF2DFFFE0293E39), reinterpret(0x3C9B7C39DAB2A6F9),\n reinterpret(0x3FF31FFFF7DCF082), reinterpret(0x3C7DF1336EDC5254),\n reinterpret(0x3FF35FFFF05A8B60), reinterpret(0xBC9E03564CCD31EB),\n reinterpret(0x3FF3A0002E0EAECC), reinterpret(0x3C75F0E74BD3A477),\n reinterpret(0x3FF3E000043BB236), reinterpret(0x3C9C7DCB149D8833),\n reinterpret(0x3FF4200002D187FF), reinterpret(0x3C7E08AFCF2D3D28),\n reinterpret(0x3FF460000D387CB1), reinterpret(0x3C820837856599A6),\n reinterpret(0x3FF4A00004569F89), reinterpret(0xBC89FA5C904FBCD2),\n reinterpret(0x3FF4E000043543F3), reinterpret(0xBC781125ED175329),\n reinterpret(0x3FF51FFFCC027F0F), reinterpret(0x3C9883D8847754DC),\n reinterpret(0x3FF55FFFFD87B36F), reinterpret(0xBC8709E731D02807),\n reinterpret(0x3FF59FFFF21DF7BA), reinterpret(0x3C87F79F68727B02),\n reinterpret(0x3FF5DFFFEBFC3481), reinterpret(0xBC9180902E30E93E)\n]);\n\n// @ts-ignore: decorator\n@inline\nexport function log2_lut(x: f64): f64 {\n const N_MASK = (1 << LOG2_TABLE_BITS) - 1;\n\n const\n LO: u64 = 0x3FEEA4AF00000000, // reinterpret(1.0 - 0x1.5b51p-5)\n HI: u64 = 0x3FF0B55900000000; // reinterpret(1.0 + 0x1.6ab2p-5)\n\n const\n InvLn2hi = reinterpret(0x3FF7154765200000), // 0x1.7154765200000p+0\n InvLn2lo = reinterpret(0x3DE705FC2EEFA200), // 0x1.705fc2eefa200p-33\n Ox1p52 = reinterpret(0x4330000000000000); // 0x1p52\n\n const\n B0 = reinterpret(0xBFE71547652B82FE), // -0x1.71547652b82fep-1\n B1 = reinterpret(0x3FDEC709DC3A03F7), // 0x1.ec709dc3a03f7p-2\n B2 = reinterpret(0xBFD71547652B7C3F), // -0x1.71547652b7c3fp-2\n B3 = reinterpret(0x3FD2776C50F05BE4), // 0x1.2776c50f05be4p-2\n B4 = reinterpret(0xBFCEC709DD768FE5), // -0x1.ec709dd768fe5p-3\n B5 = reinterpret(0x3FCA61761EC4E736), // 0x1.a61761ec4e736p-3\n B6 = reinterpret(0xBFC7153FBC64A79B), // -0x1.7153fbc64a79bp-3\n B7 = reinterpret(0x3FC484D154F01B4A), // 0x1.484d154f01b4ap-3\n B8 = reinterpret(0xBFC289E4A72C383C), // -0x1.289e4a72c383cp-3\n B9 = reinterpret(0x3FC0B32F285AEE66); // 0x1.0b32f285aee66p-3\n\n const\n A0 = reinterpret(0xBFE71547652B8339), // -0x1.71547652b8339p-1\n A1 = reinterpret(0x3FDEC709DC3A04BE), // 0x1.ec709dc3a04bep-2\n A2 = reinterpret(0xBFD7154764702FFB), // -0x1.7154764702ffbp-2\n A3 = reinterpret(0x3FD2776C50034C48), // 0x1.2776c50034c48p-2\n A4 = reinterpret(0xBFCEC7B328EA92BC), // -0x1.ec7b328ea92bcp-3\n A5 = reinterpret(0x3FCA6225E117F92E); // 0x1.a6225e117f92ep-3\n\n var ix = reinterpret(x);\n if (ix - LO < HI - LO) {\n let r = x - 1.0;\n // #if __FP_FAST_FMA\n // hi = r * InvLn2hi;\n // lo = r * InvLn2lo + __builtin_fma(r, InvLn2hi, -hi);\n // #else\n let rhi = reinterpret(reinterpret(r) & 0xFFFFFFFF00000000);\n let rlo = r - rhi;\n let hi = rhi * InvLn2hi;\n let lo = rlo * InvLn2hi + r * InvLn2lo;\n // #endif\n let r2 = r * r; // rounding error: 0x1p-62\n let r4 = r2 * r2;\n // Worst-case error is less than 0.54 ULP (0.55 ULP without fma)\n let p = r2 * (B0 + r * B1);\n let y = hi + p;\n lo += hi - y + p;\n lo += r4 * (B2 + r * B3 + r2 * (B4 + r * B5) +\n r4 * (B6 + r * B7 + r2 * (B8 + r * B9)));\n return y + lo;\n }\n var top = u32(ix >> 48);\n if (top - 0x0010 >= 0x7ff0 - 0x0010) {\n // x < 0x1p-1022 or inf or nan.\n if ((ix << 1) == 0) return -1.0 / (x * x);\n if (ix == 0x7FF0000000000000) return x; // log(inf) == inf\n if ((top & 0x8000) || (top & 0x7FF0) == 0x7FF0) return (x - x) / (x - x);\n // x is subnormal, normalize it.\n ix = reinterpret(x * Ox1p52);\n ix -= u64(52) << 52;\n }\n\n // x = 2^k z; where z is in range [OFF,2*OFF) and exact.\n // The range is split into N subintervals.\n // The ith subinterval contains z and c is near its center.\n var tmp = ix - 0x3FE6000000000000;\n var i = ((tmp >> (52 - LOG2_TABLE_BITS)) & N_MASK);\n var k = tmp >> 52;\n var iz = ix - (tmp & 0xFFF0000000000000);\n\n var invc = load(LOG2_DATA_TAB1 + (i << (1 + alignof())), 0 << alignof()); // T[i].invc;\n var logc = load(LOG2_DATA_TAB1 + (i << (1 + alignof())), 1 << alignof()); // T[i].logc;\n var z = reinterpret(iz);\n var kd = k;\n\n // log2(x) = log2(z/c) + log2(c) + k.\n // r ~= z/c - 1, |r| < 1/(2*N).\n // #if __FP_FAST_FMA\n // \t// rounding error: 0x1p-55/N.\n // \tr = __builtin_fma(z, invc, -1.0);\n // \tt1 = r * InvLn2hi;\n // \tt2 = r * InvLn2lo + __builtin_fma(r, InvLn2hi, -t1);\n // #else\n // rounding error: 0x1p-55/N + 0x1p-65.\n var chi = load(LOG2_DATA_TAB2 + (i << (1 + alignof())), 0 << alignof()); // T[i].chi;\n var clo = load(LOG2_DATA_TAB2 + (i << (1 + alignof())), 1 << alignof()); // T[i].clo;\n\n var r = (z - chi - clo) * invc;\n var rhi = reinterpret(reinterpret(r) & 0xFFFFFFFF00000000);\n var rlo = r - rhi;\n var t1 = rhi * InvLn2hi;\n var t2 = rlo * InvLn2hi + r * InvLn2lo;\n // #endif\n\n // hi + lo = r/ln2 + log2(c) + k\n var t3 = kd + logc;\n var hi = t3 + t1;\n var lo = t3 - hi + t1 + t2;\n\n // log2(r+1) = r/ln2 + r^2*poly(r)\n // Evaluation is optimized assuming superscalar pipelined execution\n var r2 = r * r; // rounding error: 0x1p-54/N^2\n // Worst-case error if |y| > 0x1p-4: 0.547 ULP (0.550 ULP without fma).\n // ~ 0.5 + 2/N/ln2 + abs-poly-error*0x1p56 ULP (+ 0.003 ULP without fma).\n var p = A0 + r * A1 + r2 * (A2 + r * A3) + (r2 * r2) * (A4 + r * A5);\n return lo + r2 * p + hi;\n}\n\n//\n// Lookup data for log. See: https://git.musl-libc.org/cgit/musl/tree/src/math/log.c\n//\n\n// @ts-ignore: decorator\n@inline const LOG_TABLE_BITS = 7;\n\n/* Algorithm:\n\n x = 2^k z\n log(x) = k ln2 + log(c) + log(z/c)\n log(z/c) = poly(z/c - 1)\n\nwhere z is in [1.6p-1; 1.6p0] which is split into N subintervals and z falls\ninto the ith one, then table entries are computed as\n\n tab[i].invc = 1/c\n tab[i].logc = (double)log(c)\n tab2[i].chi = (double)c\n tab2[i].clo = (double)(c - (double)c)\n\nwhere c is near the center of the subinterval and is chosen by trying +-2^29\nfloating point invc candidates around 1/center and selecting one for which\n\n 1) the rounding error in 0x1.8p9 + logc is 0,\n 2) the rounding error in z - chi - clo is < 0x1p-66 and\n 3) the rounding error in (double)log(c) is minimized (< 0x1p-66).\n\nNote: 1) ensures that k*ln2hi + logc can be computed without rounding error,\n2) ensures that z/c - 1 can be computed as (z - chi - clo)*invc with close to\na single rounding error when there is no fast fma for z*invc - 1, 3) ensures\nthat logc + poly(z/c - 1) has small error, however near x == 1 when\n|log(x)| < 0x1p-4, this is not enough so that is special cased.*/\n\n// @ts-ignore: decorator\n@lazy @inline const LOG_DATA_TAB1 = memory.data([\n // invc , logc\n reinterpret(0x3FF734F0C3E0DE9F), reinterpret(0xBFD7CC7F79E69000),\n reinterpret(0x3FF713786A2CE91F), reinterpret(0xBFD76FEEC20D0000),\n reinterpret(0x3FF6F26008FAB5A0), reinterpret(0xBFD713E31351E000),\n reinterpret(0x3FF6D1A61F138C7D), reinterpret(0xBFD6B85B38287800),\n reinterpret(0x3FF6B1490BC5B4D1), reinterpret(0xBFD65D5590807800),\n reinterpret(0x3FF69147332F0CBA), reinterpret(0xBFD602D076180000),\n reinterpret(0x3FF6719F18224223), reinterpret(0xBFD5A8CA86909000),\n reinterpret(0x3FF6524F99A51ED9), reinterpret(0xBFD54F4356035000),\n reinterpret(0x3FF63356AA8F24C4), reinterpret(0xBFD4F637C36B4000),\n reinterpret(0x3FF614B36B9DDC14), reinterpret(0xBFD49DA7FDA85000),\n reinterpret(0x3FF5F66452C65C4C), reinterpret(0xBFD445923989A800),\n reinterpret(0x3FF5D867B5912C4F), reinterpret(0xBFD3EDF439B0B800),\n reinterpret(0x3FF5BABCCB5B90DE), reinterpret(0xBFD396CE448F7000),\n reinterpret(0x3FF59D61F2D91A78), reinterpret(0xBFD3401E17BDA000),\n reinterpret(0x3FF5805612465687), reinterpret(0xBFD2E9E2EF468000),\n reinterpret(0x3FF56397CEE76BD3), reinterpret(0xBFD2941B3830E000),\n reinterpret(0x3FF54725E2A77F93), reinterpret(0xBFD23EC58CDA8800),\n reinterpret(0x3FF52AFF42064583), reinterpret(0xBFD1E9E129279000),\n reinterpret(0x3FF50F22DBB2BDDF), reinterpret(0xBFD1956D2B48F800),\n reinterpret(0x3FF4F38F4734DED7), reinterpret(0xBFD141679AB9F800),\n reinterpret(0x3FF4D843CFDE2840), reinterpret(0xBFD0EDD094EF9800),\n reinterpret(0x3FF4BD3EC078A3C8), reinterpret(0xBFD09AA518DB1000),\n reinterpret(0x3FF4A27FC3E0258A), reinterpret(0xBFD047E65263B800),\n reinterpret(0x3FF4880524D48434), reinterpret(0xBFCFEB224586F000),\n reinterpret(0x3FF46DCE1B192D0B), reinterpret(0xBFCF474A7517B000),\n reinterpret(0x3FF453D9D3391854), reinterpret(0xBFCEA4443D103000),\n reinterpret(0x3FF43A2744B4845A), reinterpret(0xBFCE020D44E9B000),\n reinterpret(0x3FF420B54115F8FB), reinterpret(0xBFCD60A22977F000),\n reinterpret(0x3FF40782DA3EF4B1), reinterpret(0xBFCCC00104959000),\n reinterpret(0x3FF3EE8F5D57FE8F), reinterpret(0xBFCC202956891000),\n reinterpret(0x3FF3D5D9A00B4CE9), reinterpret(0xBFCB81178D811000),\n reinterpret(0x3FF3BD60C010C12B), reinterpret(0xBFCAE2C9CCD3D000),\n reinterpret(0x3FF3A5242B75DAB8), reinterpret(0xBFCA45402E129000),\n reinterpret(0x3FF38D22CD9FD002), reinterpret(0xBFC9A877681DF000),\n reinterpret(0x3FF3755BC5847A1C), reinterpret(0xBFC90C6D69483000),\n reinterpret(0x3FF35DCE49AD36E2), reinterpret(0xBFC87120A645C000),\n reinterpret(0x3FF34679984DD440), reinterpret(0xBFC7D68FB4143000),\n reinterpret(0x3FF32F5CCEFFCB24), reinterpret(0xBFC73CB83C627000),\n reinterpret(0x3FF3187775A10D49), reinterpret(0xBFC6A39A9B376000),\n reinterpret(0x3FF301C8373E3990), reinterpret(0xBFC60B3154B7A000),\n reinterpret(0x3FF2EB4EBB95F841), reinterpret(0xBFC5737D76243000),\n reinterpret(0x3FF2D50A0219A9D1), reinterpret(0xBFC4DC7B8FC23000),\n reinterpret(0x3FF2BEF9A8B7FD2A), reinterpret(0xBFC4462C51D20000),\n reinterpret(0x3FF2A91C7A0C1BAB), reinterpret(0xBFC3B08ABC830000),\n reinterpret(0x3FF293726014B530), reinterpret(0xBFC31B996B490000),\n reinterpret(0x3FF27DFA5757A1F5), reinterpret(0xBFC2875490A44000),\n reinterpret(0x3FF268B39B1D3BBF), reinterpret(0xBFC1F3B9F879A000),\n reinterpret(0x3FF2539D838FF5BD), reinterpret(0xBFC160C8252CA000),\n reinterpret(0x3FF23EB7AAC9083B), reinterpret(0xBFC0CE7F57F72000),\n reinterpret(0x3FF22A012BA940B6), reinterpret(0xBFC03CDC49FEA000),\n reinterpret(0x3FF2157996CC4132), reinterpret(0xBFBF57BDBC4B8000),\n reinterpret(0x3FF201201DD2FC9B), reinterpret(0xBFBE370896404000),\n reinterpret(0x3FF1ECF4494D480B), reinterpret(0xBFBD17983EF94000),\n reinterpret(0x3FF1D8F5528F6569), reinterpret(0xBFBBF9674ED8A000),\n reinterpret(0x3FF1C52311577E7C), reinterpret(0xBFBADC79202F6000),\n reinterpret(0x3FF1B17C74CB26E9), reinterpret(0xBFB9C0C3E7288000),\n reinterpret(0x3FF19E010C2C1AB6), reinterpret(0xBFB8A646B372C000),\n reinterpret(0x3FF18AB07BB670BD), reinterpret(0xBFB78D01B3AC0000),\n reinterpret(0x3FF1778A25EFBCB6), reinterpret(0xBFB674F145380000),\n reinterpret(0x3FF1648D354C31DA), reinterpret(0xBFB55E0E6D878000),\n reinterpret(0x3FF151B990275FDD), reinterpret(0xBFB4485CDEA1E000),\n reinterpret(0x3FF13F0EA432D24C), reinterpret(0xBFB333D94D6AA000),\n reinterpret(0x3FF12C8B7210F9DA), reinterpret(0xBFB22079F8C56000),\n reinterpret(0x3FF11A3028ECB531), reinterpret(0xBFB10E4698622000),\n reinterpret(0x3FF107FBDA8434AF), reinterpret(0xBFAFFA6C6AD20000),\n reinterpret(0x3FF0F5EE0F4E6BB3), reinterpret(0xBFADDA8D4A774000),\n reinterpret(0x3FF0E4065D2A9FCE), reinterpret(0xBFABBCECE4850000),\n reinterpret(0x3FF0D244632CA521), reinterpret(0xBFA9A1894012C000),\n reinterpret(0x3FF0C0A77CE2981A), reinterpret(0xBFA788583302C000),\n reinterpret(0x3FF0AF2F83C636D1), reinterpret(0xBFA5715E67D68000),\n reinterpret(0x3FF09DDB98A01339), reinterpret(0xBFA35C8A49658000),\n reinterpret(0x3FF08CABAF52E7DF), reinterpret(0xBFA149E364154000),\n reinterpret(0x3FF07B9F2F4E28FB), reinterpret(0xBF9E72C082EB8000),\n reinterpret(0x3FF06AB58C358F19), reinterpret(0xBF9A55F152528000),\n reinterpret(0x3FF059EEA5ECF92C), reinterpret(0xBF963D62CF818000),\n reinterpret(0x3FF04949CDD12C90), reinterpret(0xBF9228FB8CAA0000),\n reinterpret(0x3FF038C6C6F0ADA9), reinterpret(0xBF8C317B20F90000),\n reinterpret(0x3FF02865137932A9), reinterpret(0xBF8419355DAA0000),\n reinterpret(0x3FF0182427EA7348), reinterpret(0xBF781203C2EC0000),\n reinterpret(0x3FF008040614B195), reinterpret(0xBF60040979240000),\n reinterpret(0x3FEFE01FF726FA1A), reinterpret(0x3F6FEFF384900000),\n reinterpret(0x3FEFA11CC261EA74), reinterpret(0x3F87DC41353D0000),\n reinterpret(0x3FEF6310B081992E), reinterpret(0x3F93CEA3C4C28000),\n reinterpret(0x3FEF25F63CEEADCD), reinterpret(0x3F9B9FC114890000),\n reinterpret(0x3FEEE9C8039113E7), reinterpret(0x3FA1B0D8CE110000),\n reinterpret(0x3FEEAE8078CBB1AB), reinterpret(0x3FA58A5BD001C000),\n reinterpret(0x3FEE741AA29D0C9B), reinterpret(0x3FA95C8340D88000),\n reinterpret(0x3FEE3A91830A99B5), reinterpret(0x3FAD276AEF578000),\n reinterpret(0x3FEE01E009609A56), reinterpret(0x3FB07598E598C000),\n reinterpret(0x3FEDCA01E577BB98), reinterpret(0x3FB253F5E30D2000),\n reinterpret(0x3FED92F20B7C9103), reinterpret(0x3FB42EDD8B380000),\n reinterpret(0x3FED5CAC66FB5CCE), reinterpret(0x3FB606598757C000),\n reinterpret(0x3FED272CAA5EDE9D), reinterpret(0x3FB7DA76356A0000),\n reinterpret(0x3FECF26E3E6B2CCD), reinterpret(0x3FB9AB434E1C6000),\n reinterpret(0x3FECBE6DA2A77902), reinterpret(0x3FBB78C7BB0D6000),\n reinterpret(0x3FEC8B266D37086D), reinterpret(0x3FBD431332E72000),\n reinterpret(0x3FEC5894BD5D5804), reinterpret(0x3FBF0A3171DE6000),\n reinterpret(0x3FEC26B533BB9F8C), reinterpret(0x3FC067152B914000),\n reinterpret(0x3FEBF583EEECE73F), reinterpret(0x3FC147858292B000),\n reinterpret(0x3FEBC4FD75DB96C1), reinterpret(0x3FC2266ECDCA3000),\n reinterpret(0x3FEB951E0C864A28), reinterpret(0x3FC303D7A6C55000),\n reinterpret(0x3FEB65E2C5EF3E2C), reinterpret(0x3FC3DFC33C331000),\n reinterpret(0x3FEB374867C9888B), reinterpret(0x3FC4BA366B7A8000),\n reinterpret(0x3FEB094B211D304A), reinterpret(0x3FC5933928D1F000),\n reinterpret(0x3FEADBE885F2EF7E), reinterpret(0x3FC66ACD2418F000),\n reinterpret(0x3FEAAF1D31603DA2), reinterpret(0x3FC740F8EC669000),\n reinterpret(0x3FEA82E63FD358A7), reinterpret(0x3FC815C0F51AF000),\n reinterpret(0x3FEA5740EF09738B), reinterpret(0x3FC8E92954F68000),\n reinterpret(0x3FEA2C2A90AB4B27), reinterpret(0x3FC9BB3602F84000),\n reinterpret(0x3FEA01A01393F2D1), reinterpret(0x3FCA8BED1C2C0000),\n reinterpret(0x3FE9D79F24DB3C1B), reinterpret(0x3FCB5B515C01D000),\n reinterpret(0x3FE9AE2505C7B190), reinterpret(0x3FCC2967CCBCC000),\n reinterpret(0x3FE9852EF297CE2F), reinterpret(0x3FCCF635D5486000),\n reinterpret(0x3FE95CBAEEA44B75), reinterpret(0x3FCDC1BD3446C000),\n reinterpret(0x3FE934C69DE74838), reinterpret(0x3FCE8C01B8CFE000),\n reinterpret(0x3FE90D4F2F6752E6), reinterpret(0x3FCF5509C0179000),\n reinterpret(0x3FE8E6528EFFD79D), reinterpret(0x3FD00E6C121FB800),\n reinterpret(0x3FE8BFCE9FCC007C), reinterpret(0x3FD071B80E93D000),\n reinterpret(0x3FE899C0DABEC30E), reinterpret(0x3FD0D46B9E867000),\n reinterpret(0x3FE87427AA2317FB), reinterpret(0x3FD13687334BD000),\n reinterpret(0x3FE84F00ACB39A08), reinterpret(0x3FD1980D67234800),\n reinterpret(0x3FE82A49E8653E55), reinterpret(0x3FD1F8FFE0CC8000),\n reinterpret(0x3FE8060195F40260), reinterpret(0x3FD2595FD7636800),\n reinterpret(0x3FE7E22563E0A329), reinterpret(0x3FD2B9300914A800),\n reinterpret(0x3FE7BEB377DCB5AD), reinterpret(0x3FD3187210436000),\n reinterpret(0x3FE79BAA679725C2), reinterpret(0x3FD377266DEC1800),\n reinterpret(0x3FE77907F2170657), reinterpret(0x3FD3D54FFBAF3000),\n reinterpret(0x3FE756CADBD6130C), reinterpret(0x3FD432EEE32FE000)\n]);\n\n// @ts-ignore: decorator\n@lazy @inline const LOG_DATA_TAB2 = memory.data([\n // chi , clo\n reinterpret(0x3FE61000014FB66B), reinterpret(0x3C7E026C91425B3C),\n reinterpret(0x3FE63000034DB495), reinterpret(0x3C8DBFEA48005D41),\n reinterpret(0x3FE650000D94D478), reinterpret(0x3C8E7FA786D6A5B7),\n reinterpret(0x3FE67000074E6FAD), reinterpret(0x3C61FCEA6B54254C),\n reinterpret(0x3FE68FFFFEDF0FAE), reinterpret(0xBC7C7E274C590EFD),\n reinterpret(0x3FE6B0000763C5BC), reinterpret(0xBC8AC16848DCDA01),\n reinterpret(0x3FE6D0001E5CC1F6), reinterpret(0x3C833F1C9D499311),\n reinterpret(0x3FE6EFFFEB05F63E), reinterpret(0xBC7E80041AE22D53),\n reinterpret(0x3FE710000E869780), reinterpret(0x3C7BFF6671097952),\n reinterpret(0x3FE72FFFFC67E912), reinterpret(0x3C8C00E226BD8724),\n reinterpret(0x3FE74FFFDF81116A), reinterpret(0xBC6E02916EF101D2),\n reinterpret(0x3FE770000F679C90), reinterpret(0xBC67FC71CD549C74),\n reinterpret(0x3FE78FFFFA7EC835), reinterpret(0x3C81BEC19EF50483),\n reinterpret(0x3FE7AFFFFE20C2E6), reinterpret(0xBC707E1729CC6465),\n reinterpret(0x3FE7CFFFED3FC900), reinterpret(0xBC808072087B8B1C),\n reinterpret(0x3FE7EFFFE9261A76), reinterpret(0x3C8DC0286D9DF9AE),\n reinterpret(0x3FE81000049CA3E8), reinterpret(0x3C897FD251E54C33),\n reinterpret(0x3FE8300017932C8F), reinterpret(0xBC8AFEE9B630F381),\n reinterpret(0x3FE850000633739C), reinterpret(0x3C89BFBF6B6535BC),\n reinterpret(0x3FE87000204289C6), reinterpret(0xBC8BBF65F3117B75),\n reinterpret(0x3FE88FFFEBF57904), reinterpret(0xBC89006EA23DCB57),\n reinterpret(0x3FE8B00022BC04DF), reinterpret(0xBC7D00DF38E04B0A),\n reinterpret(0x3FE8CFFFE50C1B8A), reinterpret(0xBC88007146FF9F05),\n reinterpret(0x3FE8EFFFFC918E43), reinterpret(0x3C83817BD07A7038),\n reinterpret(0x3FE910001EFA5FC7), reinterpret(0x3C893E9176DFB403),\n reinterpret(0x3FE9300013467BB9), reinterpret(0x3C7F804E4B980276),\n reinterpret(0x3FE94FFFE6EE076F), reinterpret(0xBC8F7EF0D9FF622E),\n reinterpret(0x3FE96FFFDE3C12D1), reinterpret(0xBC7082AA962638BA),\n reinterpret(0x3FE98FFFF4458A0D), reinterpret(0xBC87801B9164A8EF),\n reinterpret(0x3FE9AFFFDD982E3E), reinterpret(0xBC8740E08A5A9337),\n reinterpret(0x3FE9CFFFED49FB66), reinterpret(0x3C3FCE08C19BE000),\n reinterpret(0x3FE9F00020F19C51), reinterpret(0xBC8A3FAA27885B0A),\n reinterpret(0x3FEA10001145B006), reinterpret(0x3C74FF489958DA56),\n reinterpret(0x3FEA300007BBF6FA), reinterpret(0x3C8CBEAB8A2B6D18),\n reinterpret(0x3FEA500010971D79), reinterpret(0x3C88FECADD787930),\n reinterpret(0x3FEA70001DF52E48), reinterpret(0xBC8F41763DD8ABDB),\n reinterpret(0x3FEA90001C593352), reinterpret(0xBC8EBF0284C27612),\n reinterpret(0x3FEAB0002A4F3E4B), reinterpret(0xBC69FD043CFF3F5F),\n reinterpret(0x3FEACFFFD7AE1ED1), reinterpret(0xBC823EE7129070B4),\n reinterpret(0x3FEAEFFFEE510478), reinterpret(0x3C6A063EE00EDEA3),\n reinterpret(0x3FEB0FFFDB650D5B), reinterpret(0x3C5A06C8381F0AB9),\n reinterpret(0x3FEB2FFFFEAACA57), reinterpret(0xBC79011E74233C1D),\n reinterpret(0x3FEB4FFFD995BADC), reinterpret(0xBC79FF1068862A9F),\n reinterpret(0x3FEB7000249E659C), reinterpret(0x3C8AFF45D0864F3E),\n reinterpret(0x3FEB8FFFF9871640), reinterpret(0x3C7CFE7796C2C3F9),\n reinterpret(0x3FEBAFFFD204CB4F), reinterpret(0xBC63FF27EEF22BC4),\n reinterpret(0x3FEBCFFFD2415C45), reinterpret(0xBC6CFFB7EE3BEA21),\n reinterpret(0x3FEBEFFFF86309DF), reinterpret(0xBC814103972E0B5C),\n reinterpret(0x3FEC0FFFE1B57653), reinterpret(0x3C8BC16494B76A19),\n reinterpret(0x3FEC2FFFF1FA57E3), reinterpret(0xBC64FEEF8D30C6ED),\n reinterpret(0x3FEC4FFFDCBFE424), reinterpret(0xBC843F68BCEC4775),\n reinterpret(0x3FEC6FFFED54B9F7), reinterpret(0x3C847EA3F053E0EC),\n reinterpret(0x3FEC8FFFEB998FD5), reinterpret(0x3C7383068DF992F1),\n reinterpret(0x3FECB0002125219A), reinterpret(0xBC68FD8E64180E04),\n reinterpret(0x3FECCFFFDD94469C), reinterpret(0x3C8E7EBE1CC7EA72),\n reinterpret(0x3FECEFFFEAFDC476), reinterpret(0x3C8EBE39AD9F88FE),\n reinterpret(0x3FED1000169AF82B), reinterpret(0x3C757D91A8B95A71),\n reinterpret(0x3FED30000D0FF71D), reinterpret(0x3C89C1906970C7DA),\n reinterpret(0x3FED4FFFEA790FC4), reinterpret(0xBC580E37C558FE0C),\n reinterpret(0x3FED70002EDC87E5), reinterpret(0xBC7F80D64DC10F44),\n reinterpret(0x3FED900021DC82AA), reinterpret(0xBC747C8F94FD5C5C),\n reinterpret(0x3FEDAFFFD86B0283), reinterpret(0x3C8C7F1DC521617E),\n reinterpret(0x3FEDD000296C4739), reinterpret(0x3C88019EB2FFB153),\n reinterpret(0x3FEDEFFFE54490F5), reinterpret(0x3C6E00D2C652CC89),\n reinterpret(0x3FEE0FFFCDABF694), reinterpret(0xBC7F8340202D69D2),\n reinterpret(0x3FEE2FFFDB52C8DD), reinterpret(0x3C7B00C1CA1B0864),\n reinterpret(0x3FEE4FFFF24216EF), reinterpret(0x3C72FFA8B094AB51),\n reinterpret(0x3FEE6FFFE88A5E11), reinterpret(0xBC57F673B1EFBE59),\n reinterpret(0x3FEE9000119EFF0D), reinterpret(0xBC84808D5E0BC801),\n reinterpret(0x3FEEAFFFDFA51744), reinterpret(0x3C780006D54320B5),\n reinterpret(0x3FEED0001A127FA1), reinterpret(0xBC5002F860565C92),\n reinterpret(0x3FEEF00007BABCC4), reinterpret(0xBC8540445D35E611),\n reinterpret(0x3FEF0FFFF57A8D02), reinterpret(0xBC4FFB3139EF9105),\n reinterpret(0x3FEF30001EE58AC7), reinterpret(0x3C8A81ACF2731155),\n reinterpret(0x3FEF4FFFF5823494), reinterpret(0x3C8A3F41D4D7C743),\n reinterpret(0x3FEF6FFFFCA94C6B), reinterpret(0xBC6202F41C987875),\n reinterpret(0x3FEF8FFFE1F9C441), reinterpret(0x3C777DD1F477E74B),\n reinterpret(0x3FEFAFFFD2E0E37E), reinterpret(0xBC6F01199A7CA331),\n reinterpret(0x3FEFD0001C77E49E), reinterpret(0x3C7181EE4BCEACB1),\n reinterpret(0x3FEFEFFFF7E0C331), reinterpret(0xBC6E05370170875A),\n reinterpret(0x3FF00FFFF465606E), reinterpret(0xBC8A7EAD491C0ADA),\n reinterpret(0x3FF02FFFF3867A58), reinterpret(0xBC977F69C3FCB2E0),\n reinterpret(0x3FF04FFFFDFC0D17), reinterpret(0x3C97BFFE34CB945B),\n reinterpret(0x3FF0700003CD4D82), reinterpret(0x3C820083C0E456CB),\n reinterpret(0x3FF08FFFF9F2CBE8), reinterpret(0xBC6DFFDFBE37751A),\n reinterpret(0x3FF0B000010CDA65), reinterpret(0xBC913F7FAEE626EB),\n reinterpret(0x3FF0D00001A4D338), reinterpret(0x3C807DFA79489FF7),\n reinterpret(0x3FF0EFFFFADAFDFD), reinterpret(0xBC77040570D66BC0),\n reinterpret(0x3FF110000BBAFD96), reinterpret(0x3C8E80D4846D0B62),\n reinterpret(0x3FF12FFFFAE5F45D), reinterpret(0x3C9DBFFA64FD36EF),\n reinterpret(0x3FF150000DD59AD9), reinterpret(0x3C9A0077701250AE),\n reinterpret(0x3FF170000F21559A), reinterpret(0x3C8DFDF9E2E3DEEE),\n reinterpret(0x3FF18FFFFC275426), reinterpret(0x3C910030DC3B7273),\n reinterpret(0x3FF1B000123D3C59), reinterpret(0x3C997F7980030188),\n reinterpret(0x3FF1CFFFF8299EB7), reinterpret(0xBC65F932AB9F8C67),\n reinterpret(0x3FF1EFFFF48AD400), reinterpret(0x3C937FBF9DA75BEB),\n reinterpret(0x3FF210000C8B86A4), reinterpret(0x3C9F806B91FD5B22),\n reinterpret(0x3FF2300003854303), reinterpret(0x3C93FFC2EB9FBF33),\n reinterpret(0x3FF24FFFFFBCF684), reinterpret(0x3C7601E77E2E2E72),\n reinterpret(0x3FF26FFFF52921D9), reinterpret(0x3C7FFCBB767F0C61),\n reinterpret(0x3FF2900014933A3C), reinterpret(0xBC7202CA3C02412B),\n reinterpret(0x3FF2B00014556313), reinterpret(0xBC92808233F21F02),\n reinterpret(0x3FF2CFFFEBFE523B), reinterpret(0xBC88FF7E384FDCF2),\n reinterpret(0x3FF2F0000BB8AD96), reinterpret(0xBC85FF51503041C5),\n reinterpret(0x3FF30FFFFB7AE2AF), reinterpret(0xBC810071885E289D),\n reinterpret(0x3FF32FFFFEAC5F7F), reinterpret(0xBC91FF5D3FB7B715),\n reinterpret(0x3FF350000CA66756), reinterpret(0x3C957F82228B82BD),\n reinterpret(0x3FF3700011FBF721), reinterpret(0x3C8000BAC40DD5CC),\n reinterpret(0x3FF38FFFF9592FB9), reinterpret(0xBC943F9D2DB2A751),\n reinterpret(0x3FF3B00004DDD242), reinterpret(0x3C857F6B707638E1),\n reinterpret(0x3FF3CFFFF5B2C957), reinterpret(0x3C7A023A10BF1231),\n reinterpret(0x3FF3EFFFEAB0B418), reinterpret(0x3C987F6D66B152B0),\n reinterpret(0x3FF410001532AFF4), reinterpret(0x3C67F8375F198524),\n reinterpret(0x3FF4300017478B29), reinterpret(0x3C8301E672DC5143),\n reinterpret(0x3FF44FFFE795B463), reinterpret(0x3C89FF69B8B2895A),\n reinterpret(0x3FF46FFFE80475E0), reinterpret(0xBC95C0B19BC2F254),\n reinterpret(0x3FF48FFFEF6FC1E7), reinterpret(0x3C9B4009F23A2A72),\n reinterpret(0x3FF4AFFFE5BEA704), reinterpret(0xBC94FFB7BF0D7D45),\n reinterpret(0x3FF4D000171027DE), reinterpret(0xBC99C06471DC6A3D),\n reinterpret(0x3FF4F0000FF03EE2), reinterpret(0x3C977F890B85531C),\n reinterpret(0x3FF5100012DC4BD1), reinterpret(0x3C6004657166A436),\n reinterpret(0x3FF530001605277A), reinterpret(0xBC96BFCECE233209),\n reinterpret(0x3FF54FFFECDB704C), reinterpret(0xBC8902720505A1D7),\n reinterpret(0x3FF56FFFEF5F54A9), reinterpret(0x3C9BBFE60EC96412),\n reinterpret(0x3FF5900017E61012), reinterpret(0x3C887EC581AFEF90),\n reinterpret(0x3FF5B00003C93E92), reinterpret(0xBC9F41080ABF0CC0),\n reinterpret(0x3FF5D0001D4919BC), reinterpret(0xBC98812AFB254729),\n reinterpret(0x3FF5EFFFE7B87A89), reinterpret(0xBC947EB780ED6904)\n]);\n\n// @ts-ignore: decorator\n@inline\nexport function log_lut(x: f64): f64 {\n const N_MASK = (1 << LOG_TABLE_BITS) - 1;\n\n const\n B0 = reinterpret(0xBFE0000000000000), // -0x1p-1\n B1 = reinterpret(0x3FD5555555555577), // 0x1.5555555555577p-2\n B2 = reinterpret(0xBFCFFFFFFFFFFDCB), // -0x1.ffffffffffdcbp-3\n B3 = reinterpret(0x3FC999999995DD0C), // 0x1.999999995dd0cp-3\n B4 = reinterpret(0xBFC55555556745A7), // -0x1.55555556745a7p-3\n B5 = reinterpret(0x3FC24924A344DE30), // 0x1.24924a344de3p-3\n B6 = reinterpret(0xBFBFFFFFA4423D65), // -0x1.fffffa4423d65p-4\n B7 = reinterpret(0x3FBC7184282AD6CA), // 0x1.c7184282ad6cap-4\n B8 = reinterpret(0xBFB999EB43B068FF), // -0x1.999eb43b068ffp-4\n B9 = reinterpret(0x3FB78182F7AFD085), // 0x1.78182f7afd085p-4\n B10 = reinterpret(0xBFB5521375D145CD); // -0x1.5521375d145cdp-4\n\n const\n A0 = reinterpret(0xBFE0000000000001), // -0x1.0000000000001p-1\n A1 = reinterpret(0x3FD555555551305B), // 0x1.555555551305bp-2\n A2 = reinterpret(0xBFCFFFFFFFEB4590), // -0x1.fffffffeb459p-3\n A3 = reinterpret(0x3FC999B324F10111), // 0x1.999b324f10111p-3\n A4 = reinterpret(0xBFC55575E506C89F); // -0x1.55575e506c89fp-3\n\n const\n LO: u64 = 0x3FEE000000000000,\n HI: u64 = 0x3FF1090000000000;\n\n const\n Ln2hi = reinterpret(0x3FE62E42FEFA3800), // 0x1.62e42fefa3800p-1\n Ln2lo = reinterpret(0x3D2EF35793C76730), // 0x1.ef35793c76730p-45\n Ox1p27 = reinterpret(0x41A0000000000000), // 0x1p27\n Ox1p52 = reinterpret(0x4330000000000000); // 0x1p52\n\n var ix = reinterpret(x);\n if (ix - LO < HI - LO) {\n let r = x - 1.0;\n let r2 = r * r;\n let r3 = r2 * r;\n let y =\n r3 * (B1 + r * B2 + r2 * B3 +\n r3 * (B4 + r * B5 + r2 * B6 +\n r3 * (B7 + r * B8 + r2 * B9 + r3 * B10)));\n // Worst-case error is around 0.507 ULP\n let w = r * Ox1p27;\n let rhi = r + w - w;\n let rlo = r - rhi;\n w = rhi * rhi * B0; // B[0] == -0.5\n let hi = r + w;\n let lo = r - hi + w;\n lo += B0 * rlo * (rhi + r);\n return y + lo + hi;\n }\n var top = u32(ix >> 48);\n if (top - 0x0010 >= 0x7FF0 - 0x0010) {\n // x < 0x1p-1022 or inf or nan\n if ((ix << 1) == 0) return -1.0 / (x * x);\n if (ix == reinterpret(Infinity)) return x; // log(inf) == inf\n if ((top & 0x8000) || (top & 0x7FF0) == 0x7FF0) return (x - x) / (x - x);\n // x is subnormal, normalize it\n ix = reinterpret(x * Ox1p52);\n ix -= u64(52) << 52;\n }\n\n // x = 2^k z; where z is in range [OFF,2*OFF) and exact.\n // The range is split into N subintervals.\n // The ith subinterval contains z and c is near its center.\n var tmp = ix - 0x3FE6000000000000;\n var i = ((tmp >> (52 - LOG_TABLE_BITS)) & N_MASK);\n var k = tmp >> 52;\n var iz = ix - (tmp & (u64(0xFFF) << 52));\n\n var invc = load(LOG_DATA_TAB1 + (i << (1 + alignof())), 0 << alignof()); // T[i].invc;\n var logc = load(LOG_DATA_TAB1 + (i << (1 + alignof())), 1 << alignof()); // T[i].logc;\n var z = reinterpret(iz);\n\n // log(x) = log1p(z/c-1) + log(c) + k*Ln2.\n // r ~= z/c - 1, |r| < 1/(2*N)\n // #if __FP_FAST_FMA\n // \t// rounding error: 0x1p-55/N\n // \tr = __builtin_fma(z, invc, -1.0);\n // #else\n // rounding error: 0x1p-55/N + 0x1p-66\n const chi = load(LOG_DATA_TAB2 + (i << (1 + alignof())), 0 << alignof()); // T2[i].chi\n const clo = load(LOG_DATA_TAB2 + (i << (1 + alignof())), 1 << alignof()); // T2[i].clo\n var r = (z - chi - clo) * invc;\n // #endif\n var kd = k;\n\n // hi + lo = r + log(c) + k*Ln2\n var w = kd * Ln2hi + logc;\n var hi = w + r;\n var lo = w - hi + r + kd * Ln2lo;\n\n // log(x) = lo + (log1p(r) - r) + hi\n var r2 = r * r; // rounding error: 0x1p-54/N^2\n // Worst case error if |y| > 0x1p-5:\n // 0.5 + 4.13/N + abs-poly-error*2^57 ULP (+ 0.002 ULP without fma)\n // Worst case error if |y| > 0x1p-4:\n // 0.5 + 2.06/N + abs-poly-error*2^56 ULP (+ 0.001 ULP without fma).\n return lo + r2 * A0 + r * r2 * (A1 + r * A2 + r2 * (A3 + r * A4)) + hi;\n}\n\n//\n// Lookup data for pow. See: https://git.musl-libc.org/cgit/musl/tree/src/math/pow.c\n//\n\n// @ts-ignore: decorator\n@inline const POW_LOG_TABLE_BITS = 7;\n\n/* Algorithm:\n\n x = 2^k z\n log(x) = k ln2 + log(c) + log(z/c)\n log(z/c) = poly(z/c - 1)\n\nwhere z is in [0x1.69555p-1; 0x1.69555p0] which is split into N subintervals\nand z falls into the ith one, then table entries are computed as\n\n tab[i].invc = 1/c\n tab[i].logc = round(0x1p43*log(c))/0x1p43\n tab[i].logctail = (double)(log(c) - logc)\n\nwhere c is chosen near the center of the subinterval such that 1/c has only a\nfew precision bits so z/c - 1 is exactly representible as double:\n\n 1/c = center < 1 ? round(N/center)/N : round(2*N/center)/N/2\n\nNote: |z/c - 1| < 1/N for the chosen c, |log(c) - logc - logctail| < 0x1p-97,\nthe last few bits of logc are rounded away so k*ln2hi + logc has no rounding\nerror and the interval for z is selected such that near x == 1, where log(x)\nis tiny, large cancellation error is avoided in logc + poly(z/c - 1). */\n\n// @ts-ignore: decorator\n@lazy @inline const POW_LOG_DATA_TAB = memory.data([\n // invc ,pad, logc , logctail\n reinterpret(0x3FF6A00000000000), 0, reinterpret(0xBFD62C82F2B9C800), reinterpret(0x3CFAB42428375680),\n reinterpret(0x3FF6800000000000), 0, reinterpret(0xBFD5D1BDBF580800), reinterpret(0xBD1CA508D8E0F720),\n reinterpret(0x3FF6600000000000), 0, reinterpret(0xBFD5767717455800), reinterpret(0xBD2362A4D5B6506D),\n reinterpret(0x3FF6400000000000), 0, reinterpret(0xBFD51AAD872DF800), reinterpret(0xBCE684E49EB067D5),\n reinterpret(0x3FF6200000000000), 0, reinterpret(0xBFD4BE5F95777800), reinterpret(0xBD041B6993293EE0),\n reinterpret(0x3FF6000000000000), 0, reinterpret(0xBFD4618BC21C6000), reinterpret(0x3D13D82F484C84CC),\n reinterpret(0x3FF5E00000000000), 0, reinterpret(0xBFD404308686A800), reinterpret(0x3CDC42F3ED820B3A),\n reinterpret(0x3FF5C00000000000), 0, reinterpret(0xBFD3A64C55694800), reinterpret(0x3D20B1C686519460),\n reinterpret(0x3FF5A00000000000), 0, reinterpret(0xBFD347DD9A988000), reinterpret(0x3D25594DD4C58092),\n reinterpret(0x3FF5800000000000), 0, reinterpret(0xBFD2E8E2BAE12000), reinterpret(0x3D267B1E99B72BD8),\n reinterpret(0x3FF5600000000000), 0, reinterpret(0xBFD2895A13DE8800), reinterpret(0x3D15CA14B6CFB03F),\n reinterpret(0x3FF5600000000000), 0, reinterpret(0xBFD2895A13DE8800), reinterpret(0x3D15CA14B6CFB03F),\n reinterpret(0x3FF5400000000000), 0, reinterpret(0xBFD22941FBCF7800), reinterpret(0xBD165A242853DA76),\n reinterpret(0x3FF5200000000000), 0, reinterpret(0xBFD1C898C1699800), reinterpret(0xBD1FAFBC68E75404),\n reinterpret(0x3FF5000000000000), 0, reinterpret(0xBFD1675CABABA800), reinterpret(0x3D1F1FC63382A8F0),\n reinterpret(0x3FF4E00000000000), 0, reinterpret(0xBFD1058BF9AE4800), reinterpret(0xBD26A8C4FD055A66),\n reinterpret(0x3FF4C00000000000), 0, reinterpret(0xBFD0A324E2739000), reinterpret(0xBD0C6BEE7EF4030E),\n reinterpret(0x3FF4A00000000000), 0, reinterpret(0xBFD0402594B4D000), reinterpret(0xBCF036B89EF42D7F),\n reinterpret(0x3FF4A00000000000), 0, reinterpret(0xBFD0402594B4D000), reinterpret(0xBCF036B89EF42D7F),\n reinterpret(0x3FF4800000000000), 0, reinterpret(0xBFCFB9186D5E4000), reinterpret(0x3D0D572AAB993C87),\n reinterpret(0x3FF4600000000000), 0, reinterpret(0xBFCEF0ADCBDC6000), reinterpret(0x3D2B26B79C86AF24),\n reinterpret(0x3FF4400000000000), 0, reinterpret(0xBFCE27076E2AF000), reinterpret(0xBD172F4F543FFF10),\n reinterpret(0x3FF4200000000000), 0, reinterpret(0xBFCD5C216B4FC000), reinterpret(0x3D21BA91BBCA681B),\n reinterpret(0x3FF4000000000000), 0, reinterpret(0xBFCC8FF7C79AA000), reinterpret(0x3D27794F689F8434),\n reinterpret(0x3FF4000000000000), 0, reinterpret(0xBFCC8FF7C79AA000), reinterpret(0x3D27794F689F8434),\n reinterpret(0x3FF3E00000000000), 0, reinterpret(0xBFCBC286742D9000), reinterpret(0x3D194EB0318BB78F),\n reinterpret(0x3FF3C00000000000), 0, reinterpret(0xBFCAF3C94E80C000), reinterpret(0x3CBA4E633FCD9066),\n reinterpret(0x3FF3A00000000000), 0, reinterpret(0xBFCA23BC1FE2B000), reinterpret(0xBD258C64DC46C1EA),\n reinterpret(0x3FF3A00000000000), 0, reinterpret(0xBFCA23BC1FE2B000), reinterpret(0xBD258C64DC46C1EA),\n reinterpret(0x3FF3800000000000), 0, reinterpret(0xBFC9525A9CF45000), reinterpret(0xBD2AD1D904C1D4E3),\n reinterpret(0x3FF3600000000000), 0, reinterpret(0xBFC87FA06520D000), reinterpret(0x3D2BBDBF7FDBFA09),\n reinterpret(0x3FF3400000000000), 0, reinterpret(0xBFC7AB890210E000), reinterpret(0x3D2BDB9072534A58),\n reinterpret(0x3FF3400000000000), 0, reinterpret(0xBFC7AB890210E000), reinterpret(0x3D2BDB9072534A58),\n reinterpret(0x3FF3200000000000), 0, reinterpret(0xBFC6D60FE719D000), reinterpret(0xBD10E46AA3B2E266),\n reinterpret(0x3FF3000000000000), 0, reinterpret(0xBFC5FF3070A79000), reinterpret(0xBD1E9E439F105039),\n reinterpret(0x3FF3000000000000), 0, reinterpret(0xBFC5FF3070A79000), reinterpret(0xBD1E9E439F105039),\n reinterpret(0x3FF2E00000000000), 0, reinterpret(0xBFC526E5E3A1B000), reinterpret(0xBD20DE8B90075B8F),\n reinterpret(0x3FF2C00000000000), 0, reinterpret(0xBFC44D2B6CCB8000), reinterpret(0x3D170CC16135783C),\n reinterpret(0x3FF2C00000000000), 0, reinterpret(0xBFC44D2B6CCB8000), reinterpret(0x3D170CC16135783C),\n reinterpret(0x3FF2A00000000000), 0, reinterpret(0xBFC371FC201E9000), reinterpret(0x3CF178864D27543A),\n reinterpret(0x3FF2800000000000), 0, reinterpret(0xBFC29552F81FF000), reinterpret(0xBD248D301771C408),\n reinterpret(0x3FF2600000000000), 0, reinterpret(0xBFC1B72AD52F6000), reinterpret(0xBD2E80A41811A396),\n reinterpret(0x3FF2600000000000), 0, reinterpret(0xBFC1B72AD52F6000), reinterpret(0xBD2E80A41811A396),\n reinterpret(0x3FF2400000000000), 0, reinterpret(0xBFC0D77E7CD09000), reinterpret(0x3D0A699688E85BF4),\n reinterpret(0x3FF2400000000000), 0, reinterpret(0xBFC0D77E7CD09000), reinterpret(0x3D0A699688E85BF4),\n reinterpret(0x3FF2200000000000), 0, reinterpret(0xBFBFEC9131DBE000), reinterpret(0xBD2575545CA333F2),\n reinterpret(0x3FF2000000000000), 0, reinterpret(0xBFBE27076E2B0000), reinterpret(0x3D2A342C2AF0003C),\n reinterpret(0x3FF2000000000000), 0, reinterpret(0xBFBE27076E2B0000), reinterpret(0x3D2A342C2AF0003C),\n reinterpret(0x3FF1E00000000000), 0, reinterpret(0xBFBC5E548F5BC000), reinterpret(0xBD1D0C57585FBE06),\n reinterpret(0x3FF1C00000000000), 0, reinterpret(0xBFBA926D3A4AE000), reinterpret(0x3D253935E85BAAC8),\n reinterpret(0x3FF1C00000000000), 0, reinterpret(0xBFBA926D3A4AE000), reinterpret(0x3D253935E85BAAC8),\n reinterpret(0x3FF1A00000000000), 0, reinterpret(0xBFB8C345D631A000), reinterpret(0x3D137C294D2F5668),\n reinterpret(0x3FF1A00000000000), 0, reinterpret(0xBFB8C345D631A000), reinterpret(0x3D137C294D2F5668),\n reinterpret(0x3FF1800000000000), 0, reinterpret(0xBFB6F0D28AE56000), reinterpret(0xBD269737C93373DA),\n reinterpret(0x3FF1600000000000), 0, reinterpret(0xBFB51B073F062000), reinterpret(0x3D1F025B61C65E57),\n reinterpret(0x3FF1600000000000), 0, reinterpret(0xBFB51B073F062000), reinterpret(0x3D1F025B61C65E57),\n reinterpret(0x3FF1400000000000), 0, reinterpret(0xBFB341D7961BE000), reinterpret(0x3D2C5EDACCF913DF),\n reinterpret(0x3FF1400000000000), 0, reinterpret(0xBFB341D7961BE000), reinterpret(0x3D2C5EDACCF913DF),\n reinterpret(0x3FF1200000000000), 0, reinterpret(0xBFB16536EEA38000), reinterpret(0x3D147C5E768FA309),\n reinterpret(0x3FF1000000000000), 0, reinterpret(0xBFAF0A30C0118000), reinterpret(0x3D2D599E83368E91),\n reinterpret(0x3FF1000000000000), 0, reinterpret(0xBFAF0A30C0118000), reinterpret(0x3D2D599E83368E91),\n reinterpret(0x3FF0E00000000000), 0, reinterpret(0xBFAB42DD71198000), reinterpret(0x3D1C827AE5D6704C),\n reinterpret(0x3FF0E00000000000), 0, reinterpret(0xBFAB42DD71198000), reinterpret(0x3D1C827AE5D6704C),\n reinterpret(0x3FF0C00000000000), 0, reinterpret(0xBFA77458F632C000), reinterpret(0xBD2CFC4634F2A1EE),\n reinterpret(0x3FF0C00000000000), 0, reinterpret(0xBFA77458F632C000), reinterpret(0xBD2CFC4634F2A1EE),\n reinterpret(0x3FF0A00000000000), 0, reinterpret(0xBFA39E87B9FEC000), reinterpret(0x3CF502B7F526FEAA),\n reinterpret(0x3FF0A00000000000), 0, reinterpret(0xBFA39E87B9FEC000), reinterpret(0x3CF502B7F526FEAA),\n reinterpret(0x3FF0800000000000), 0, reinterpret(0xBF9F829B0E780000), reinterpret(0xBD2980267C7E09E4),\n reinterpret(0x3FF0800000000000), 0, reinterpret(0xBF9F829B0E780000), reinterpret(0xBD2980267C7E09E4),\n reinterpret(0x3FF0600000000000), 0, reinterpret(0xBF97B91B07D58000), reinterpret(0xBD288D5493FAA639),\n reinterpret(0x3FF0400000000000), 0, reinterpret(0xBF8FC0A8B0FC0000), reinterpret(0xBCDF1E7CF6D3A69C),\n reinterpret(0x3FF0400000000000), 0, reinterpret(0xBF8FC0A8B0FC0000), reinterpret(0xBCDF1E7CF6D3A69C),\n reinterpret(0x3FF0200000000000), 0, reinterpret(0xBF7FE02A6B100000), reinterpret(0xBD19E23F0DDA40E4),\n reinterpret(0x3FF0200000000000), 0, reinterpret(0xBF7FE02A6B100000), reinterpret(0xBD19E23F0DDA40E4),\n reinterpret(0x3FF0000000000000), 0, 0, 0,\n reinterpret(0x3FF0000000000000), 0, 0, 0,\n reinterpret(0x3FEFC00000000000), 0, reinterpret(0x3F80101575890000), reinterpret(0xBD10C76B999D2BE8),\n reinterpret(0x3FEF800000000000), 0, reinterpret(0x3F90205658938000), reinterpret(0xBD23DC5B06E2F7D2),\n reinterpret(0x3FEF400000000000), 0, reinterpret(0x3F98492528C90000), reinterpret(0xBD2AA0BA325A0C34),\n reinterpret(0x3FEF000000000000), 0, reinterpret(0x3FA0415D89E74000), reinterpret(0x3D0111C05CF1D753),\n reinterpret(0x3FEEC00000000000), 0, reinterpret(0x3FA466AED42E0000), reinterpret(0xBD2C167375BDFD28),\n reinterpret(0x3FEE800000000000), 0, reinterpret(0x3FA894AA149FC000), reinterpret(0xBD197995D05A267D),\n reinterpret(0x3FEE400000000000), 0, reinterpret(0x3FACCB73CDDDC000), reinterpret(0xBD1A68F247D82807),\n reinterpret(0x3FEE200000000000), 0, reinterpret(0x3FAEEA31C006C000), reinterpret(0xBD0E113E4FC93B7B),\n reinterpret(0x3FEDE00000000000), 0, reinterpret(0x3FB1973BD1466000), reinterpret(0xBD25325D560D9E9B),\n reinterpret(0x3FEDA00000000000), 0, reinterpret(0x3FB3BDF5A7D1E000), reinterpret(0x3D2CC85EA5DB4ED7),\n reinterpret(0x3FED600000000000), 0, reinterpret(0x3FB5E95A4D97A000), reinterpret(0xBD2C69063C5D1D1E),\n reinterpret(0x3FED400000000000), 0, reinterpret(0x3FB700D30AEAC000), reinterpret(0x3CEC1E8DA99DED32),\n reinterpret(0x3FED000000000000), 0, reinterpret(0x3FB9335E5D594000), reinterpret(0x3D23115C3ABD47DA),\n reinterpret(0x3FECC00000000000), 0, reinterpret(0x3FBB6AC88DAD6000), reinterpret(0xBD1390802BF768E5),\n reinterpret(0x3FECA00000000000), 0, reinterpret(0x3FBC885801BC4000), reinterpret(0x3D2646D1C65AACD3),\n reinterpret(0x3FEC600000000000), 0, reinterpret(0x3FBEC739830A2000), reinterpret(0xBD2DC068AFE645E0),\n reinterpret(0x3FEC400000000000), 0, reinterpret(0x3FBFE89139DBE000), reinterpret(0xBD2534D64FA10AFD),\n reinterpret(0x3FEC000000000000), 0, reinterpret(0x3FC1178E8227E000), reinterpret(0x3D21EF78CE2D07F2),\n reinterpret(0x3FEBE00000000000), 0, reinterpret(0x3FC1AA2B7E23F000), reinterpret(0x3D2CA78E44389934),\n reinterpret(0x3FEBA00000000000), 0, reinterpret(0x3FC2D1610C868000), reinterpret(0x3D039D6CCB81B4A1),\n reinterpret(0x3FEB800000000000), 0, reinterpret(0x3FC365FCB0159000), reinterpret(0x3CC62FA8234B7289),\n reinterpret(0x3FEB400000000000), 0, reinterpret(0x3FC4913D8333B000), reinterpret(0x3D25837954FDB678),\n reinterpret(0x3FEB200000000000), 0, reinterpret(0x3FC527E5E4A1B000), reinterpret(0x3D2633E8E5697DC7),\n reinterpret(0x3FEAE00000000000), 0, reinterpret(0x3FC6574EBE8C1000), reinterpret(0x3D19CF8B2C3C2E78),\n reinterpret(0x3FEAC00000000000), 0, reinterpret(0x3FC6F0128B757000), reinterpret(0xBD25118DE59C21E1),\n reinterpret(0x3FEAA00000000000), 0, reinterpret(0x3FC7898D85445000), reinterpret(0xBD1C661070914305),\n reinterpret(0x3FEA600000000000), 0, reinterpret(0x3FC8BEAFEB390000), reinterpret(0xBD073D54AAE92CD1),\n reinterpret(0x3FEA400000000000), 0, reinterpret(0x3FC95A5ADCF70000), reinterpret(0x3D07F22858A0FF6F),\n reinterpret(0x3FEA000000000000), 0, reinterpret(0x3FCA93ED3C8AE000), reinterpret(0xBD28724350562169),\n reinterpret(0x3FE9E00000000000), 0, reinterpret(0x3FCB31D8575BD000), reinterpret(0xBD0C358D4EACE1AA),\n reinterpret(0x3FE9C00000000000), 0, reinterpret(0x3FCBD087383BE000), reinterpret(0xBD2D4BC4595412B6),\n reinterpret(0x3FE9A00000000000), 0, reinterpret(0x3FCC6FFBC6F01000), reinterpret(0xBCF1EC72C5962BD2),\n reinterpret(0x3FE9600000000000), 0, reinterpret(0x3FCDB13DB0D49000), reinterpret(0xBD2AFF2AF715B035),\n reinterpret(0x3FE9400000000000), 0, reinterpret(0x3FCE530EFFE71000), reinterpret(0x3CC212276041F430),\n reinterpret(0x3FE9200000000000), 0, reinterpret(0x3FCEF5ADE4DD0000), reinterpret(0xBCCA211565BB8E11),\n reinterpret(0x3FE9000000000000), 0, reinterpret(0x3FCF991C6CB3B000), reinterpret(0x3D1BCBECCA0CDF30),\n reinterpret(0x3FE8C00000000000), 0, reinterpret(0x3FD07138604D5800), reinterpret(0x3CF89CDB16ED4E91),\n reinterpret(0x3FE8A00000000000), 0, reinterpret(0x3FD0C42D67616000), reinterpret(0x3D27188B163CEAE9),\n reinterpret(0x3FE8800000000000), 0, reinterpret(0x3FD1178E8227E800), reinterpret(0xBD2C210E63A5F01C),\n reinterpret(0x3FE8600000000000), 0, reinterpret(0x3FD16B5CCBACF800), reinterpret(0x3D2B9ACDF7A51681),\n reinterpret(0x3FE8400000000000), 0, reinterpret(0x3FD1BF99635A6800), reinterpret(0x3D2CA6ED5147BDB7),\n reinterpret(0x3FE8200000000000), 0, reinterpret(0x3FD214456D0EB800), reinterpret(0x3D0A87DEBA46BAEA),\n reinterpret(0x3FE7E00000000000), 0, reinterpret(0x3FD2BEF07CDC9000), reinterpret(0x3D2A9CFA4A5004F4),\n reinterpret(0x3FE7C00000000000), 0, reinterpret(0x3FD314F1E1D36000), reinterpret(0xBD28E27AD3213CB8),\n reinterpret(0x3FE7A00000000000), 0, reinterpret(0x3FD36B6776BE1000), reinterpret(0x3D116ECDB0F177C8),\n reinterpret(0x3FE7800000000000), 0, reinterpret(0x3FD3C25277333000), reinterpret(0x3D183B54B606BD5C),\n reinterpret(0x3FE7600000000000), 0, reinterpret(0x3FD419B423D5E800), reinterpret(0x3D08E436EC90E09D),\n reinterpret(0x3FE7400000000000), 0, reinterpret(0x3FD4718DC271C800), reinterpret(0xBD2F27CE0967D675),\n reinterpret(0x3FE7200000000000), 0, reinterpret(0x3FD4C9E09E173000), reinterpret(0xBD2E20891B0AD8A4),\n reinterpret(0x3FE7000000000000), 0, reinterpret(0x3FD522AE0738A000), reinterpret(0x3D2EBE708164C759),\n reinterpret(0x3FE6E00000000000), 0, reinterpret(0x3FD57BF753C8D000), reinterpret(0x3D1FADEDEE5D40EF),\n reinterpret(0x3FE6C00000000000), 0, reinterpret(0x3FD5D5BDDF596000), reinterpret(0xBD0A0B2A08A465DC)\n]);\n\n// Returns 0 if not int, 1 if odd int, 2 if even int. The argument is\n// the bit representation of a non-zero finite floating-point value.\n// @ts-ignore: decorator\n@inline\nfunction checkint(iy: u64): i32 {\n var e = iy >> 52 & 0x7FF;\n if (e < 0x3FF ) return 0;\n if (e > 0x3FF + 52) return 2;\n e = u64(1) << (0x3FF + 52 - e);\n if (iy & (e - 1)) return 0;\n if (iy & e ) return 1;\n return 2;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction xflow(sign: u32, y: f64): f64 {\n return select(-y, y, sign) * y;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction uflow(sign: u32): f64 {\n return xflow(sign, reinterpret(0x1000000000000000)); // 0x1p-767\n}\n\n// @ts-ignore: decorator\n@inline\nfunction oflow(sign: u32): f64 {\n return xflow(sign, reinterpret(0x7000000000000000)); // 0x1p769\n}\n\n// Returns 1 if input is the bit representation of 0, infinity or nan.\n// @ts-ignore: decorator\n@inline\nfunction zeroinfnan(u: u64): bool {\n return (u << 1) - 1 >= 0xFFE0000000000000 - 1;\n}\n\n// @ts-ignore: decorator\n@lazy var log_tail: f64 = 0;\n\n// Compute y+TAIL = log(x) where the rounded result is y and TAIL has about\n// additional 15 bits precision. IX is the bit representation of x, but\n// normalized in the subnormal range using the sign bit for the exponent.\n// @ts-ignore: decorator\n@inline\nfunction log_inline(ix: u64): f64 {\n const N = 1 << POW_LOG_TABLE_BITS;\n const N_MASK = N - 1;\n\n const\n Ln2hi = reinterpret(0x3FE62E42FEFA3800),\n Ln2lo = reinterpret(0x3D2EF35793C76730);\n\n const\n A0 = reinterpret(0xBFE0000000000000),\n A1 = reinterpret(0xBFE5555555555560),\n A2 = reinterpret(0x3FE0000000000006),\n A3 = reinterpret(0x3FE999999959554E),\n A4 = reinterpret(0xBFE555555529A47A),\n A5 = reinterpret(0xBFF2495B9B4845E9),\n A6 = reinterpret(0x3FF0002B8B263FC3);\n\n // x = 2^k z; where z is in range [OFF,2*OFF) and exact.\n // The range is split into N subintervals.\n // The ith subinterval contains z and c is near its center.\n var tmp = ix - 0x3fE6955500000000;\n var i = usize((tmp >> (52 - POW_LOG_TABLE_BITS)) & N_MASK);\n var k = tmp >> 52;\n var iz = ix - (tmp & u64(0xFFF) << 52);\n var z = reinterpret(iz);\n var kd = k;\n\n // log(x) = k*Ln2 + log(c) + log1p(z/c-1).\n var invc = load(POW_LOG_DATA_TAB + (i << (2 + alignof())), 0 << alignof()); // tab[i].invc\n var logc = load(POW_LOG_DATA_TAB + (i << (2 + alignof())), 2 << alignof()); // tab[i].logc\n var logctail = load(POW_LOG_DATA_TAB + (i << (2 + alignof())), 3 << alignof()); // tab[i].logctail\n\n // Note: 1/c is j/N or j/N/2 where j is an integer in [N,2N) and\n // |z/c - 1| < 1/N, so r = z/c - 1 is exactly representible.\n // Split z such that rhi, rlo and rhi*rhi are exact and |rlo| <= |r|.\n var zhi = reinterpret((iz + u64(0x80000000)) & 0xFFFFFFFF00000000);\n var zlo = z - zhi;\n var rhi = zhi * invc - 1.0;\n var rlo = zlo * invc;\n var r = rhi + rlo;\n\n // k * Ln2 + log(c) + r.\n var t1 = kd * Ln2hi + logc;\n var t2 = t1 + r;\n var lo1 = kd * Ln2lo + logctail;\n var lo2 = t1 - t2 + r;\n\n // Evaluation is optimized assuming superscalar pipelined execution.\n var ar = A0 * r; // A[0] = -0.5\n var ar2 = r * ar;\n var ar3 = r * ar2;\n // k * Ln2 + log(c) + r + A[0] * r * r.\n var arhi = A0 * rhi;\n var arhi2 = rhi * arhi;\n var hi = t2 + arhi2;\n var lo3 = rlo * (ar + arhi);\n var lo4 = t2 - hi + arhi2;\n\n // p = log1p(r) - r - A[0] * r * r.\n var p = ar3 * (A1 + r * A2 + ar2 * (A3 + r * A4 + ar2 * (A5 + r * A6)));\n var lo = lo1 + lo2 + lo3 + lo4 + p;\n var y = hi + lo;\n log_tail = hi - y + lo;\n\n return y;\n}\n\n// @ts-ignore: decorator\n@inline const SIGN_BIAS = 0x800 << EXP_TABLE_BITS;\n\n// Computes sign*exp(x+xtail) where |xtail| < 2^-8/N and |xtail| <= |x|.\n// The sign_bias argument is SIGN_BIAS or 0 and sets the sign to -1 or 1.\n// @ts-ignore: decorator\n@inline\nfunction exp_inline(x: f64, xtail: f64, sign_bias: u32): f64 {\n const N = 1 << EXP_TABLE_BITS;\n const N_MASK = N - 1;\n\n const\n InvLn2N = reinterpret(0x3FF71547652B82FE) * N, // 0x1.71547652b82fep0\n NegLn2hiN = reinterpret(0xBF762E42FEFA0000), // -0x1.62e42fefa0000p-8\n NegLn2loN = reinterpret(0xBD0CF79ABC9E3B3A), // -0x1.cf79abc9e3b3ap-47\n shift = reinterpret(0x4338000000000000); // 0x1.8p52\n\n const\n C2 = reinterpret(0x3FDFFFFFFFFFFDBD), // __exp_data.poly[0] (0x1.ffffffffffdbdp-2)\n C3 = reinterpret(0x3FC555555555543C), // __exp_data.poly[1] (0x1.555555555543cp-3)\n C4 = reinterpret(0x3FA55555CF172B91), // __exp_data.poly[2] (0x1.55555cf172b91p-5)\n C5 = reinterpret(0x3F81111167A4D017); // __exp_data.poly[3] (0x1.1111167a4d017p-7)\n\n var abstop: u32;\n var ki: u64, top: u64, sbits: u64;\n var idx: usize;\n // double_t for better performance on targets with FLT_EVAL_METHOD==2.\n var kd: f64, z: f64, r: f64, r2: f64, scale: f64, tail: f64, tmp: f64;\n\n var ux = reinterpret(x);\n abstop = u32(ux >> 52) & 0x7FF;\n if (abstop - 0x3C9 >= 0x03F) {\n if (abstop - 0x3C9 >= 0x80000000) {\n // Avoid spurious underflow for tiny x.\n // Note: 0 is common input.\n return select(-1.0, 1.0, sign_bias);\n }\n if (abstop >= 0x409) { // top12(1024.0)\n // Note: inf and nan are already handled.\n return ux < 0\n ? uflow(sign_bias)\n : oflow(sign_bias);\n }\n // Large x is special cased below.\n abstop = 0;\n }\n\n // exp(x) = 2^(k/N) * exp(r), with exp(r) in [2^(-1/2N),2^(1/2N)].\n // x = ln2/N*k + r, with int k and r in [-ln2/2N, ln2/2N].\n z = InvLn2N * x;\n\n // #if TOINT_INTRINSICS\n // kd = roundtoint(z);\n // ki = converttoint(z);\n // #elif EXP_USE_TOINT_NARROW\n // // z - kd is in [-0.5-2^-16, 0.5] in all rounding modes.\n // kd = eval_as_double(z + shift);\n // ki = asuint64(kd) >> 16;\n // kd = (double_t)(int32_t)ki;\n // #else\n // z - kd is in [-1, 1] in non-nearest rounding modes\n kd = z + shift;\n ki = reinterpret(kd);\n kd -= shift;\n // #endif\n r = x + kd * NegLn2hiN + kd * NegLn2loN;\n // The code assumes 2^-200 < |xtail| < 2^-8/N\n r += xtail;\n // 2^(k/N) ~= scale * (1 + tail)\n idx = usize((ki & N_MASK) << 1);\n top = (ki + sign_bias) << (52 - EXP_TABLE_BITS);\n\n tail = reinterpret(load(EXP_DATA_TAB + (idx << alignof())));\n // This is only a valid scale when -1023*N < k < 1024*N\n sbits = load(EXP_DATA_TAB + (idx << alignof()), 1 << alignof()) + top;\n // exp(x) = 2^(k/N) * exp(r) ~= scale + scale * (tail + exp(r) - 1).\n // Evaluation is optimized assuming superscalar pipelined execution.\n r2 = r * r;\n // Without fma the worst case error is 0.25/N ulp larger.\n // Worst case error is less than 0.5+1.11/N+(abs poly error * 2^53) ulp\n tmp = tail + r + r2 * (C2 + r * C3) + r2 * r2 * (C4 + r * C5);\n if (abstop == 0) return specialcase(tmp, sbits, ki);\n scale = reinterpret(sbits);\n // Note: tmp == 0 or |tmp| > 2^-200 and scale > 2^-739, so there\n // is no spurious underflow here even without fma.\n return scale + scale * tmp;\n}\n\n// @ts-ignore: decorator\n@inline\nexport function pow_lut(x: f64, y: f64): f64 {\n const Ox1p52 = reinterpret(0x4330000000000000); // 0x1p52\n\n var sign_bias: u32 = 0;\n var ix = reinterpret(x);\n var iy = reinterpret(y);\n var topx = ix >> 52;\n var topy = iy >> 52;\n\n if (topx - 0x001 >= 0x7FF - 0x001 || (topy & 0x7FF) - 0x3BE >= 0x43e - 0x3BE) {\n // Note: if |y| > 1075 * ln2 * 2^53 ~= 0x1.749p62 then pow(x,y) = inf/0\n // and if |y| < 2^-54 / 1075 ~= 0x1.e7b6p-65 then pow(x,y) = +-1.\n // Special cases: (x < 0x1p-126 or inf or nan) or\n // (|y| < 0x1p-65 or |y| >= 0x1p63 or nan).\n if (zeroinfnan(iy)) {\n if ((iy << 1) == 0) return 1.0;\n if (ix == 0x3FF0000000000000) return NaN; // original: 1.0\n if ((ix << 1) > 0xFFE0000000000000 || (iy << 1) > 0xFFE0000000000000) return x + y;\n if ((ix << 1) == 0x7FE0000000000000) return NaN; // original: 1.0\n if (((ix << 1) < 0x7FE0000000000000) == !(iy >> 63)) return 0; // |x|<1 && y==inf or |x|>1 && y==-inf.\n return y * y;\n }\n if (zeroinfnan(ix)) {\n let x2 = x * x;\n if (i32(ix >> 63) && checkint(iy) == 1) x2 = -x2;\n return iy < 0 ? 1 / x2 : x2;\n }\n // Here x and y are non-zero finite\n if (ix < 0) {\n // Finite x < 0\n let yint = checkint(iy);\n if (yint == 0) return (x - x) / (x - x);\n if (yint == 1) sign_bias = SIGN_BIAS;\n ix &= 0x7FFFFFFFFFFFFFFF;\n topx &= 0x7FF;\n }\n if ((topy & 0x7FF) - 0x3BE >= 0x43E - 0x3BE) {\n // Note: sign_bias == 0 here because y is not odd.\n if (ix == 0x3FF0000000000000) return 1;\n if ((topy & 0x7FF) < 0x3BE) return 1; // |y| < 2^-65, x^y ~= 1 + y*log(x).\n return (ix > 0x3FF0000000000000) == (topy < 0x800) ? Infinity : 0;\n }\n if (topx == 0) {\n // Normalize subnormal x so exponent becomes negative.\n ix = reinterpret(x * Ox1p52);\n ix &= 0x7FFFFFFFFFFFFFFF;\n ix -= u64(52) << 52;\n }\n }\n\n var hi = log_inline(ix);\n var lo = log_tail;\n var ehi: f64, elo: f64;\n // #if __FP_FAST_FMA\n // ehi = y * hi;\n // elo = y * lo + __builtin_fma(y, hi, -ehi);\n // #else\n var yhi = reinterpret(iy & 0xFFFFFFFFF8000000);\n var ylo = y - yhi;\n var lhi = reinterpret(reinterpret(hi) & 0xFFFFFFFFF8000000);\n var llo = hi - lhi + lo;\n ehi = yhi * lhi;\n elo = ylo * lhi + y * llo; // |elo| < |ehi| * 2^-25.\n // #endif\n return exp_inline(ehi, elo, sign_bias);\n}\n","/// \n\nimport { idof } from \"../builtins\";\nimport { CharCode } from \"./string\";\n\n// @ts-ignore: decorator\n@inline\nexport const MAX_DOUBLE_LENGTH = 28;\n\n// @ts-ignore: decorator\n@lazy @inline const POWERS10 = memory.data([\n 1,\n 10,\n 100,\n 1000,\n 10000,\n 100000,\n 1000000,\n 10000000,\n 100000000,\n 1000000000\n]);\n\n/*\n Lookup table for pairwise char codes in range [0-99]\n\n \"00\", \"01\", \"02\", \"03\", \"04\", \"05\", \"06\", \"07\", \"08\", \"09\",\n \"10\", \"11\", \"12\", \"13\", \"14\", \"15\", \"16\", \"17\", \"18\", \"19\",\n \"20\", \"21\", \"22\", \"23\", \"24\", \"25\", \"26\", \"27\", \"28\", \"29\",\n \"30\", \"31\", \"32\", \"33\", \"34\", \"35\", \"36\", \"37\", \"38\", \"39\",\n \"40\", \"41\", \"42\", \"43\", \"44\", \"45\", \"46\", \"47\", \"48\", \"49\",\n \"50\", \"51\", \"52\", \"53\", \"54\", \"55\", \"56\", \"57\", \"58\", \"59\",\n \"60\", \"61\", \"62\", \"63\", \"64\", \"65\", \"66\", \"67\", \"68\", \"69\",\n \"70\", \"71\", \"72\", \"73\", \"74\", \"75\", \"76\", \"77\", \"78\", \"79\",\n \"80\", \"81\", \"82\", \"83\", \"84\", \"85\", \"86\", \"87\", \"88\", \"89\",\n \"90\", \"91\", \"92\", \"93\", \"94\", \"95\", \"96\", \"97\", \"98\", \"99\"\n*/\n// @ts-ignore: decorator\n@lazy @inline const DIGITS = memory.data([\n 0x00300030, 0x00310030, 0x00320030, 0x00330030, 0x00340030,\n 0x00350030, 0x00360030, 0x00370030, 0x00380030, 0x00390030,\n 0x00300031, 0x00310031, 0x00320031, 0x00330031, 0x00340031,\n 0x00350031, 0x00360031, 0x00370031, 0x00380031, 0x00390031,\n 0x00300032, 0x00310032, 0x00320032, 0x00330032, 0x00340032,\n 0x00350032, 0x00360032, 0x00370032, 0x00380032, 0x00390032,\n 0x00300033, 0x00310033, 0x00320033, 0x00330033, 0x00340033,\n 0x00350033, 0x00360033, 0x00370033, 0x00380033, 0x00390033,\n 0x00300034, 0x00310034, 0x00320034, 0x00330034, 0x00340034,\n 0x00350034, 0x00360034, 0x00370034, 0x00380034, 0x00390034,\n 0x00300035, 0x00310035, 0x00320035, 0x00330035, 0x00340035,\n 0x00350035, 0x00360035, 0x00370035, 0x00380035, 0x00390035,\n 0x00300036, 0x00310036, 0x00320036, 0x00330036, 0x00340036,\n 0x00350036, 0x00360036, 0x00370036, 0x00380036, 0x00390036,\n 0x00300037, 0x00310037, 0x00320037, 0x00330037, 0x00340037,\n 0x00350037, 0x00360037, 0x00370037, 0x00380037, 0x00390037,\n 0x00300038, 0x00310038, 0x00320038, 0x00330038, 0x00340038,\n 0x00350038, 0x00360038, 0x00370038, 0x00380038, 0x00390038,\n 0x00300039, 0x00310039, 0x00320039, 0x00330039, 0x00340039,\n 0x00350039, 0x00360039, 0x00370039, 0x00380039, 0x00390039\n]);\n\n// Lookup table for pairwise char codes in range [0x00-0xFF]\n// @ts-ignore: decorator\n@lazy @inline const HEX_DIGITS =\n\"000102030405060708090a0b0c0d0e0f\\\n101112131415161718191a1b1c1d1e1f\\\n202122232425262728292a2b2c2d2e2f\\\n303132333435363738393a3b3c3d3e3f\\\n404142434445464748494a4b4c4d4e4f\\\n505152535455565758595a5b5c5d5e5f\\\n606162636465666768696a6b6c6d6e6f\\\n707172737475767778797a7b7c7d7e7f\\\n808182838485868788898a8b8c8d8e8f\\\n909192939495969798999a9b9c9d9e9f\\\na0a1a2a3a4a5a6a7a8a9aaabacadaeaf\\\nb0b1b2b3b4b5b6b7b8b9babbbcbdbebf\\\nc0c1c2c3c4c5c6c7c8c9cacbcccdcecf\\\nd0d1d2d3d4d5d6d7d8d9dadbdcdddedf\\\ne0e1e2e3e4e5e6e7e8e9eaebecedeeef\\\nf0f1f2f3f4f5f6f7f8f9fafbfcfdfeff\";\n\n// @ts-ignore: decorator\n@lazy @inline const ANY_DIGITS = \"0123456789abcdefghijklmnopqrstuvwxyz\";\n\n// @ts-ignore: decorator\n@lazy @inline const EXP_POWERS = memory.data([/* eslint-disable indent */\n -1220, -1193, -1166, -1140, -1113, -1087, -1060, -1034, -1007, -980,\n -954, -927, -901, -874, -847, -821, -794, -768, -741, -715,\n -688, -661, -635, -608, -582, -555, -529, -502, -475, -449,\n -422, -396, -369, -343, -316, -289, -263, -236, -210, -183,\n -157, -130, -103, -77, -50, -24, 3, 30, 56, 83,\n 109, 136, 162, 189, 216, 242, 269, 295, 322, 348,\n 375, 402, 428, 455, 481, 508, 534, 561, 588, 614,\n 641, 667, 694, 720, 747, 774, 800, 827, 853, 880,\n 907, 933, 960, 986, 1013, 1039, 1066\n/* eslint-enable indent */]);\n\n// 1e-348, 1e-340, ..., 1e340\n// @ts-ignore: decorator\n@lazy @inline const FRC_POWERS = memory.data([\n 0xFA8FD5A0081C0288, 0xBAAEE17FA23EBF76, 0x8B16FB203055AC76, 0xCF42894A5DCE35EA,\n 0x9A6BB0AA55653B2D, 0xE61ACF033D1A45DF, 0xAB70FE17C79AC6CA, 0xFF77B1FCBEBCDC4F,\n 0xBE5691EF416BD60C, 0x8DD01FAD907FFC3C, 0xD3515C2831559A83, 0x9D71AC8FADA6C9B5,\n 0xEA9C227723EE8BCB, 0xAECC49914078536D, 0x823C12795DB6CE57, 0xC21094364DFB5637,\n 0x9096EA6F3848984F, 0xD77485CB25823AC7, 0xA086CFCD97BF97F4, 0xEF340A98172AACE5,\n 0xB23867FB2A35B28E, 0x84C8D4DFD2C63F3B, 0xC5DD44271AD3CDBA, 0x936B9FCEBB25C996,\n 0xDBAC6C247D62A584, 0xA3AB66580D5FDAF6, 0xF3E2F893DEC3F126, 0xB5B5ADA8AAFF80B8,\n 0x87625F056C7C4A8B, 0xC9BCFF6034C13053, 0x964E858C91BA2655, 0xDFF9772470297EBD,\n 0xA6DFBD9FB8E5B88F, 0xF8A95FCF88747D94, 0xB94470938FA89BCF, 0x8A08F0F8BF0F156B,\n 0xCDB02555653131B6, 0x993FE2C6D07B7FAC, 0xE45C10C42A2B3B06, 0xAA242499697392D3,\n 0xFD87B5F28300CA0E, 0xBCE5086492111AEB, 0x8CBCCC096F5088CC, 0xD1B71758E219652C,\n 0x9C40000000000000, 0xE8D4A51000000000, 0xAD78EBC5AC620000, 0x813F3978F8940984,\n 0xC097CE7BC90715B3, 0x8F7E32CE7BEA5C70, 0xD5D238A4ABE98068, 0x9F4F2726179A2245,\n 0xED63A231D4C4FB27, 0xB0DE65388CC8ADA8, 0x83C7088E1AAB65DB, 0xC45D1DF942711D9A,\n 0x924D692CA61BE758, 0xDA01EE641A708DEA, 0xA26DA3999AEF774A, 0xF209787BB47D6B85,\n 0xB454E4A179DD1877, 0x865B86925B9BC5C2, 0xC83553C5C8965D3D, 0x952AB45CFA97A0B3,\n 0xDE469FBD99A05FE3, 0xA59BC234DB398C25, 0xF6C69A72A3989F5C, 0xB7DCBF5354E9BECE,\n 0x88FCF317F22241E2, 0xCC20CE9BD35C78A5, 0x98165AF37B2153DF, 0xE2A0B5DC971F303A,\n 0xA8D9D1535CE3B396, 0xFB9B7CD9A4A7443C, 0xBB764C4CA7A44410, 0x8BAB8EEFB6409C1A,\n 0xD01FEF10A657842C, 0x9B10A4E5E9913129, 0xE7109BFBA19C0C9D, 0xAC2820D9623BF429,\n 0x80444B5E7AA7CF85, 0xBF21E44003ACDD2D, 0x8E679C2F5E44FF8F, 0xD433179D9C8CB841,\n 0x9E19DB92B4E31BA9, 0xEB96BF6EBADF77D9, 0xAF87023B9BF0EE6B\n]);\n\n// @ts-ignore: decorator\n@inline\nexport function isPowerOf2(value: T): bool {\n return popcnt(value) == 1;\n}\n\n// Count number of decimals for u32 values\n// In our case input value always non-zero so we can simplify some parts\nexport function decimalCount32(value: u32): u32 {\n if (value < 100000) {\n if (value < 100) {\n return 1 + u32(value >= 10);\n } else {\n return 3 + u32(value >= 10000) + u32(value >= 1000);\n }\n } else {\n if (value < 10000000) {\n return 6 + u32(value >= 1000000);\n } else {\n return 8 + u32(value >= 1000000000) + u32(value >= 100000000);\n }\n }\n}\n\n// Count number of decimals for u64 values\n// In our case input value always greater than 2^32-1 so we can skip some parts\nexport function decimalCount64High(value: u64): u32 {\n if (value < 1000000000000000) {\n if (value < 1000000000000) {\n return 10 + u32(value >= 100000000000) + u32(value >= 10000000000);\n } else {\n return 13 + u32(value >= 100000000000000) + u32(value >= 10000000000000);\n }\n } else {\n if (value < 100000000000000000) {\n return 16 + u32(value >= 10000000000000000);\n } else {\n return 18 + u32(value >= 10000000000000000000) + u32(value >= 1000000000000000000);\n }\n }\n}\n\nfunction ulog_base(num: u64, base: i32): u32 {\n if (isPowerOf2(base)) {\n return (63 - clz(num)) / (31 - clz(base)) + 1;\n }\n var b64 = u64(base), b = b64, e: u32 = 1;\n while (num >= b) {\n num /= b;\n b *= b;\n e <<= 1;\n }\n while (num >= 1) {\n num /= b64;\n e++;\n }\n return e - 1;\n}\n\nfunction utoa32_dec_lut(buffer: usize, num: u32, offset: usize): void {\n while (num >= 10000) {\n // in most VMs i32/u32 div and modulo by constant can be shared and simplificate\n let t = num / 10000;\n let r = num % 10000;\n num = t;\n\n let d1 = r / 100;\n let d2 = r % 100;\n\n let digits1 = load(DIGITS + (d1 << alignof()));\n let digits2 = load(DIGITS + (d2 << alignof()));\n\n offset -= 4;\n store(buffer + (offset << 1), digits1 | (digits2 << 32));\n }\n\n if (num >= 100) {\n let t = num / 100;\n let d1 = num % 100;\n num = t;\n offset -= 2;\n let digits = load(DIGITS + (d1 << alignof()));\n store(buffer + (offset << 1), digits);\n }\n\n if (num >= 10) {\n offset -= 2;\n let digits = load(DIGITS + (num << alignof()));\n store(buffer + (offset << 1), digits);\n } else {\n offset -= 1;\n let digit = CharCode._0 + num;\n store(buffer + (offset << 1), digit);\n }\n}\n\nfunction utoa64_dec_lut(buffer: usize, num: u64, offset: usize): void {\n while (num >= 100000000) {\n let t = num / 100000000;\n let r = (num - t * 100000000);\n num = t;\n\n let b = r / 10000;\n let c = r % 10000;\n\n let b1 = b / 100;\n let b2 = b % 100;\n let c1 = c / 100;\n let c2 = c % 100;\n\n let digits1 = load(DIGITS + (c1 << alignof()));\n let digits2 = load(DIGITS + (c2 << alignof()));\n\n offset -= 4;\n store(buffer + (offset << 1), digits1 | (digits2 << 32));\n\n digits1 = load(DIGITS + (b1 << alignof()));\n digits2 = load(DIGITS + (b2 << alignof()));\n\n offset -= 4;\n store(buffer + (offset << 1), digits1 | (digits2 << 32));\n }\n\n utoa32_dec_lut(buffer, num, offset);\n}\n\nfunction utoa_hex_lut(buffer: usize, num: u64, offset: usize): void {\n const lut = changetype(HEX_DIGITS);\n while (offset >= 2) {\n offset -= 2;\n store(\n buffer + (offset << 1),\n load(lut + ((num & 0xFF) << alignof()))\n );\n num >>= 8;\n }\n if (offset & 1) {\n store(buffer, load(lut + (num << 6)));\n }\n}\n\nfunction utoa_dec_simple(buffer: usize, num: T, offset: usize): void {\n do {\n let t = num / 10;\n let r = (num % 10);\n num = changetype(t);\n offset--;\n store(buffer + (offset << 1), CharCode._0 + r);\n } while (num);\n}\n\nfunction utoa_hex_simple(buffer: usize, num: T, offset: usize): void {\n do {\n let d = num & 0x0F | CharCode._0;\n d += select(0x27, 0, d > CharCode._9);\n offset--;\n store(buffer + (offset << 1), d);\n // @ts-ignore: type\n num >>= 4;\n } while (num);\n}\n\n// @ts-ignore: decorator\n@inline\nexport function utoa32_dec_core(buffer: usize, num: u32, offset: usize): void {\n if (ASC_SHRINK_LEVEL >= 1) {\n utoa_dec_simple(buffer, num, offset);\n } else {\n utoa32_dec_lut(buffer, num, offset);\n }\n}\n\n// @ts-ignore: decorator\n@inline\nfunction utoa32_hex_core(buffer: usize, num: u32, offset: usize): void {\n if (ASC_SHRINK_LEVEL >= 1) {\n utoa_hex_simple(buffer, num, offset);\n } else {\n utoa_hex_lut(buffer, num, offset);\n }\n}\n\n// @ts-ignore: decorator\n@inline\nfunction utoa64_dec_core(buffer: usize, num: u64, offset: usize): void {\n if (ASC_SHRINK_LEVEL >= 1) {\n utoa_dec_simple(buffer, num, offset);\n } else {\n utoa64_dec_lut(buffer, num, offset);\n }\n}\n\n// @ts-ignore: decorator\n@inline\nfunction utoa64_hex_core(buffer: usize, num: u64, offset: usize): void {\n if (ASC_SHRINK_LEVEL >= 1) {\n utoa_hex_simple(buffer, num, offset);\n } else {\n utoa_hex_lut(buffer, num, offset);\n }\n}\n\nfunction utoa64_any_core(buffer: usize, num: u64, offset: usize, radix: i32): void {\n const lut = changetype(ANY_DIGITS);\n var base = u64(radix);\n if ((radix & (radix - 1)) == 0) { // for radix which pow of two\n let shift = u64(ctz(radix) & 7);\n let mask = base - 1;\n do {\n offset--;\n store(buffer + (offset << 1), load(lut + (usize(num & mask) << 1)));\n num >>= shift;\n } while (num);\n } else {\n do {\n offset--;\n let q = num / base;\n store(buffer + (offset << 1), load(lut + (usize(num - q * base) << 1)));\n num = q;\n } while (num);\n }\n}\n\nexport function utoa32(value: u32, radix: i32): String {\n if (radix < 2 || radix > 36) {\n throw new RangeError(\"toString() radix argument must be between 2 and 36\");\n }\n if (!value) return \"0\";\n var out: String;\n\n if (radix == 10) {\n let decimals = decimalCount32(value);\n out = changetype(__new(decimals << 1, idof()));\n utoa32_dec_core(changetype(out), value, decimals);\n } else if (radix == 16) {\n let decimals = (31 - clz(value) >> 2) + 1;\n out = changetype(__new(decimals << 1, idof()));\n utoa32_hex_core(changetype(out), value, decimals);\n } else {\n let decimals = ulog_base(value, radix);\n out = changetype(__new(decimals << 1, idof()));\n utoa64_any_core(changetype(out), value, decimals, radix);\n }\n return out;\n}\n\nexport function itoa32(value: i32, radix: i32): String {\n if (radix < 2 || radix > 36) {\n throw new RangeError(\"toString() radix argument must be between 2 and 36\");\n }\n if (!value) return \"0\";\n\n var sign = (value >>> 31) << 1;\n if (sign) value = -value;\n var out: String;\n\n if (radix == 10) {\n let decimals = decimalCount32(value);\n out = changetype(__new((decimals << 1) + sign, idof()));\n utoa32_dec_core(changetype(out) + sign, value, decimals);\n } else if (radix == 16) {\n let decimals = (31 - clz(value) >> 2) + 1;\n out = changetype(__new((decimals << 1) + sign, idof()));\n utoa32_hex_core(changetype(out) + sign, value, decimals);\n } else {\n let val32 = u32(value);\n let decimals = ulog_base(val32, radix);\n out = changetype(__new((decimals << 1) + sign, idof()));\n utoa64_any_core(changetype(out) + sign, val32, decimals, radix);\n }\n if (sign) store(changetype(out), CharCode.MINUS);\n return out;\n}\n\nexport function utoa64(value: u64, radix: i32): String {\n if (radix < 2 || radix > 36) {\n throw new RangeError(\"toString() radix argument must be between 2 and 36\");\n }\n if (!value) return \"0\";\n var out: String;\n\n if (radix == 10) {\n if (value <= u32.MAX_VALUE) {\n let val32 = value;\n let decimals = decimalCount32(val32);\n out = changetype(__new(decimals << 1, idof()));\n utoa32_dec_core(changetype(out), val32, decimals);\n } else {\n let decimals = decimalCount64High(value);\n out = changetype(__new(decimals << 1, idof()));\n utoa64_dec_core(changetype(out), value, decimals);\n }\n } else if (radix == 16) {\n let decimals = (63 - u32(clz(value)) >> 2) + 1;\n out = changetype(__new(decimals << 1, idof()));\n utoa64_hex_core(changetype(out), value, decimals);\n } else {\n let decimals = ulog_base(value, radix);\n out = changetype(__new(decimals << 1, idof()));\n utoa64_any_core(changetype(out), value, decimals, radix);\n }\n return out;\n}\n\nexport function itoa64(value: i64, radix: i32): String {\n if (radix < 2 || radix > 36) {\n throw new RangeError(\"toString() radix argument must be between 2 and 36\");\n }\n if (!value) return \"0\";\n\n var sign = u32(value >>> 63) << 1;\n if (sign) value = -value;\n var out: String;\n\n if (radix == 10) {\n if (value <= u32.MAX_VALUE) {\n let val32 = value;\n let decimals = decimalCount32(val32);\n out = changetype(__new((decimals << 1) + sign, idof()));\n utoa32_dec_core(changetype(out) + sign, val32, decimals);\n } else {\n let decimals = decimalCount64High(value);\n out = changetype(__new((decimals << 1) + sign, idof()));\n utoa64_dec_core(changetype(out) + sign, value, decimals);\n }\n } else if (radix == 16) {\n let decimals = (63 - u32(clz(value)) >> 2) + 1;\n out = changetype(__new((decimals << 1) + sign, idof()));\n utoa64_hex_core(changetype(out) + sign, value, decimals);\n } else {\n let decimals = ulog_base(value, radix);\n out = changetype(__new((decimals << 1) + sign, idof()));\n utoa64_any_core(changetype(out) + sign, value, decimals, radix);\n }\n if (sign) store(changetype(out), CharCode.MINUS);\n return out;\n}\n\n// @ts-ignore: decorator\n@lazy var _K: i32 = 0;\n\n// // @ts-ignore: decorator\n// @lazy\n// var _frc: u64 = 0;\n\n// @ts-ignore: decorator\n@lazy var _exp: i32 = 0;\n\n// @ts-ignore: decorator\n@lazy var _frc_minus: u64 = 0;\n\n// @ts-ignore: decorator\n@lazy var _frc_plus: u64 = 0;\n\n// @ts-ignore: decorator\n@lazy var _frc_pow: u64 = 0;\n\n// @ts-ignore: decorator\n@lazy var _exp_pow: i32 = 0;\n\n// @ts-ignore: decorator\n@inline\nfunction umul64f(u: u64, v: u64): u64 {\n var u0 = u & 0xFFFFFFFF;\n var v0 = v & 0xFFFFFFFF;\n\n var u1 = u >> 32;\n var v1 = v >> 32;\n\n var l = u0 * v0;\n var t = u1 * v0 + (l >> 32);\n var w = u0 * v1 + (t & 0xFFFFFFFF);\n\n w += 0x7FFFFFFF; // rounding\n\n t >>= 32;\n w >>= 32;\n\n return u1 * v1 + t + w;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction umul64e(e1: i32, e2: i32): i32 {\n return e1 + e2 + 64; // where 64 is significand size\n}\n\n// @ts-ignore: decorator\n@inline\nfunction normalizedBoundaries(f: u64, e: i32): void {\n var frc = (f << 1) + 1;\n var exp = e - 1;\n var off = clz(frc);\n frc <<= off;\n exp -= off;\n\n var m = 1 + i32(f == 0x0010000000000000);\n\n _frc_plus = frc;\n _frc_minus = ((f << m) - 1) << e - m - exp;\n _exp = exp;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction grisuRound(buffer: usize, len: i32, delta: u64, rest: u64, ten_kappa: u64, wp_w: u64): void {\n var lastp = buffer + ((len - 1) << 1);\n var digit = load(lastp);\n while (\n rest < wp_w &&\n delta - rest >= ten_kappa && (\n rest + ten_kappa < wp_w ||\n wp_w - rest > rest + ten_kappa - wp_w\n )\n ) {\n --digit;\n rest += ten_kappa;\n }\n store(lastp, digit);\n}\n\n// @ts-ignore: decorator\n@inline\nfunction getCachedPower(minExp: i32): void {\n const c = reinterpret(0x3FD34413509F79FE); // 1 / lg(10) = 0.30102999566398114\n var dk = (-61 - minExp) * c + 347;\t // dk must be positive, so can do ceiling in positive\n var k = dk;\n k += i32(k != dk); // conversion with ceil\n\n var index = (k >> 3) + 1;\n _K = 348 - (index << 3);\t// decimal exponent no need lookup table\n _frc_pow = load(FRC_POWERS + (index << alignof()));\n _exp_pow = load(EXP_POWERS + (index << alignof()));\n}\n\n// @ts-ignore: decorator\n@inline\nfunction grisu2(value: f64, buffer: usize, sign: i32): i32 {\n\n // frexp routine\n var uv = reinterpret(value);\n var exp = i32((uv & 0x7FF0000000000000) >>> 52);\n var sid = uv & 0x000FFFFFFFFFFFFF;\n var frc = (u64(exp != 0) << 52) + sid;\n exp = select(exp, 1, exp) - (0x3FF + 52);\n\n normalizedBoundaries(frc, exp);\n getCachedPower(_exp);\n\n // normalize\n var off = clz(frc);\n frc <<= off;\n exp -= off;\n\n var frc_pow = _frc_pow;\n var exp_pow = _exp_pow;\n\n var w_frc = umul64f(frc, frc_pow);\n var w_exp = umul64e(exp, exp_pow);\n\n var wp_frc = umul64f(_frc_plus, frc_pow) - 1;\n var wp_exp = umul64e(_exp, exp_pow);\n\n var wm_frc = umul64f(_frc_minus, frc_pow) + 1;\n var delta = wp_frc - wm_frc;\n\n return genDigits(buffer, w_frc, w_exp, wp_frc, wp_exp, delta, sign);\n}\n\nfunction genDigits(buffer: usize, w_frc: u64, w_exp: i32, mp_frc: u64, mp_exp: i32, delta: u64, sign: i32): i32 {\n var one_exp = -mp_exp;\n var one_frc = (1) << one_exp;\n var mask = one_frc - 1;\n\n var wp_w_frc = mp_frc - w_frc;\n\n var p1 = u32(mp_frc >> one_exp);\n var p2 = mp_frc & mask;\n\n var kappa = decimalCount32(p1);\n var len = sign;\n\n while (kappa > 0) {\n let d: u32;\n switch (kappa) {\n case 10: { d = p1 / 1000000000; p1 %= 1000000000; break; }\n case 9: { d = p1 / 100000000; p1 %= 100000000; break; }\n case 8: { d = p1 / 10000000; p1 %= 10000000; break; }\n case 7: { d = p1 / 1000000; p1 %= 1000000; break; }\n case 6: { d = p1 / 100000; p1 %= 100000; break; }\n case 5: { d = p1 / 10000; p1 %= 10000; break; }\n case 4: { d = p1 / 1000; p1 %= 1000; break; }\n case 3: { d = p1 / 100; p1 %= 100; break; }\n case 2: { d = p1 / 10; p1 %= 10; break; }\n case 1: { d = p1; p1 = 0; break; }\n default: { d = 0; break; }\n }\n\n if (d | len) store(buffer + (len++ << 1), CharCode._0 + d);\n\n --kappa;\n let tmp = ((p1) << one_exp) + p2;\n if (tmp <= delta) {\n _K += kappa;\n grisuRound(buffer, len, delta, tmp, load(POWERS10 + (kappa << alignof())) << one_exp, wp_w_frc);\n return len;\n }\n }\n\n while (true) {\n p2 *= 10;\n delta *= 10;\n\n let d = p2 >> one_exp;\n if (d | len) store(buffer + (len++ << 1), CharCode._0 + d);\n\n p2 &= mask;\n --kappa;\n if (p2 < delta) {\n _K += kappa;\n wp_w_frc *= load(POWERS10 + (-kappa << alignof()));\n grisuRound(buffer, len, delta, p2, one_frc, wp_w_frc);\n return len;\n }\n }\n}\n\n// @ts-ignore: decorator\n@inline\nfunction genExponent(buffer: usize, k: i32): i32 {\n var sign = k < 0;\n if (sign) k = -k;\n var decimals = decimalCount32(k) + 1;\n utoa32_dec_core(buffer, k, decimals);\n store(buffer, select(CharCode.MINUS, CharCode.PLUS, sign));\n return decimals;\n}\n\nfunction prettify(buffer: usize, length: i32, k: i32): i32 {\n if (!k) {\n store(buffer + (length << 1), CharCode.DOT | (CharCode._0 << 16));\n return length + 2;\n }\n\n var kk = length + k;\n if (length <= kk && kk <= 21) {\n // 1234e7 -> 12340000000\n for (let i = length; i < kk; ++i) {\n store(buffer + (i << 1), CharCode._0);\n }\n store(buffer + (kk << 1), CharCode.DOT | (CharCode._0 << 16));\n return kk + 2;\n } else if (kk > 0 && kk <= 21) {\n // 1234e-2 -> 12.34\n let ptr = buffer + (kk << 1);\n memory.copy(\n ptr + 2,\n ptr,\n -k << 1\n );\n store(buffer + (kk << 1), CharCode.DOT);\n return length + 1;\n } else if (-6 < kk && kk <= 0) {\n // 1234e-6 -> 0.001234\n let offset = 2 - kk;\n memory.copy(\n buffer + (offset << 1),\n buffer,\n length << 1\n );\n store(buffer, CharCode._0 | (CharCode.DOT << 16));\n for (let i = 2; i < offset; ++i) {\n store(buffer + (i << 1), CharCode._0);\n }\n return length + offset;\n } else if (length == 1) {\n // 1e30\n store(buffer, CharCode.e, 2);\n length = genExponent(buffer + 4, kk - 1);\n return length + 2;\n } else {\n let len = length << 1;\n memory.copy(\n buffer + 4,\n buffer + 2,\n len - 2\n );\n store(buffer, CharCode.DOT, 2);\n store(buffer + len, CharCode.e, 2);\n length += genExponent(buffer + len + 4, kk - 1);\n return length + 2;\n }\n}\n\nfunction dtoa_core(buffer: usize, value: f64): i32 {\n var sign = i32(value < 0);\n if (sign) {\n value = -value;\n store(buffer, CharCode.MINUS);\n }\n // assert(value > 0 && value <= 1.7976931348623157e308);\n var len = grisu2(value, buffer, sign);\n len = prettify(buffer + (sign << 1), len - sign, _K);\n return len + sign;\n}\n\n// @ts-ignore: decorator\n@lazy @inline const dtoa_buf = memory.data(MAX_DOUBLE_LENGTH << 1);\n\nexport function dtoa(value: f64): String {\n if (value == 0) return \"0.0\";\n if (!isFinite(value)) {\n if (isNaN(value)) return \"NaN\";\n return select(\"-Infinity\", \"Infinity\", value < 0);\n }\n var size = dtoa_core(dtoa_buf, value) << 1;\n var result = changetype(__new(size, idof()));\n memory.copy(changetype(result), dtoa_buf, size);\n return result;\n}\n\nexport function itoa_buffered(buffer: usize, value: T): u32 {\n var sign: u32 = 0;\n if (isSigned()) {\n sign = u32(value < 0);\n if (sign) {\n if (sizeof() == 1) {\n if (value == -0x80) {\n // -0x80 -> -128\n store(buffer,\n CharCode.MINUS |\n (CharCode._0 + 1) << 16 |\n (CharCode._0 + 2) << 32 |\n (CharCode._0 + 8) << 48\n );\n return 4;\n }\n }\n if (sizeof() == 2) {\n if (value == -0x8000) {\n // -0x8000 -> -32768\n store(buffer,\n CharCode.MINUS |\n (CharCode._0 + 3) << 16 |\n (CharCode._0 + 2) << 32 |\n (CharCode._0 + 7) << 48\n ); // -327\n store(buffer + 8,\n (CharCode._0 + 6) << 0 |\n (CharCode._0 + 8) << 16\n ); // 68\n return 6;\n }\n }\n store(buffer, CharCode.MINUS);\n // @ts-ignore\n value = -value;\n }\n }\n var dest = buffer + (sign << 1);\n if (ASC_SHRINK_LEVEL <= 1) {\n if (isSigned()) {\n if (sizeof() <= 4) {\n if (value < 10) {\n store(dest, value | CharCode._0);\n return 1 + sign;\n }\n } else {\n if (value < 10) {\n store(dest, value | CharCode._0);\n return 1 + sign;\n }\n }\n } else {\n if (value < 10) {\n store(buffer, value | CharCode._0);\n return 1;\n }\n }\n }\n var decimals: u32 = 0;\n if (sizeof() <= 4) {\n let val32 = value;\n decimals = decimalCount32(val32);\n utoa32_dec_core(dest, val32, decimals);\n } else {\n if (value <= u32.MAX_VALUE) {\n let val32 = value;\n decimals = decimalCount32(val32);\n utoa32_dec_core(dest, val32, decimals);\n } else {\n let val64 = value;\n decimals = decimalCount64High(val64);\n utoa64_dec_core(dest, val64, decimals);\n }\n }\n return sign + decimals;\n}\n\nexport function dtoa_buffered(buffer: usize, value: f64): u32 {\n if (value == 0) {\n store(buffer, CharCode._0);\n store(buffer, CharCode.DOT, 2);\n store(buffer, CharCode._0, 4);\n return 3;\n }\n if (!isFinite(value)) {\n if (isNaN(value)) {\n store(buffer, CharCode.N);\n store(buffer, CharCode.a, 2);\n store(buffer, CharCode.N, 4);\n return 3;\n } else {\n let sign = value < 0;\n if (sign) {\n store(buffer, CharCode.MINUS); // -\n buffer += 2;\n }\n store(buffer, 0x690066006E0049, 0); // ifnI\n store(buffer, 0x7900740069006E, 8); // ytin\n return 8 + u32(sign);\n }\n }\n return dtoa_core(buffer, value);\n}\n","import {\n itoa32,\n utoa32,\n itoa64,\n utoa64,\n dtoa,\n itoa_buffered,\n dtoa_buffered,\n MAX_DOUBLE_LENGTH\n} from \"./number\";\n\nimport {\n ipow32\n} from \"../math\";\n\n// All tables are stored as two staged lookup tables (static tries)\n// because the full range of Unicode symbols can't be efficiently\n// represented as-is in memory (see Unicode spec ch 5, p.196):\n// https://www.unicode.org/versions/Unicode12.0.0/ch05.pdf\n// Tables have been generated using these forked musl tools:\n// https://github.com/MaxGraey/musl-chartable-tools/tree/case-ignorable\n\n// Lookup table to check if a character is alphanumeric or not\n// See: https://git.musl-libc.org/cgit/musl/tree/src/ctype/alpha.h\n// size: 3904 bytes\n// @ts-ignore\n@inline @lazy const ALPHA_TABLE = memory.data([\n 18,17,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,17,34,35,36,17,37,38,39,40,\n 41,42,43,44,17,45,46,47,16,16,48,16,16,16,16,16,16,16,49,50,51,16,52,53,16,16,\n 17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,54,\n 17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,\n 17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,\n 17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,\n 17,17,17,55,17,17,17,17,56,17,57,58,59,60,61,62,17,17,17,17,17,17,17,17,17,17,\n 17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,\n 17,17,17,17,17,17,17,63,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,17,64,65,17,66,67,\n 68,69,70,71,72,73,74,17,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,\n 93,94,16,95,96,97,98,17,17,17,99,100,101,16,16,16,16,16,16,16,16,16,16,17,17,\n 17,17,102,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,17,17,103,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,17,17,104,105,16,16,106,107,17,17,17,17,17,17,17,17,17,17,17,17,17,\n 17,17,17,17,17,17,17,17,17,17,108,17,17,17,17,109,110,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 17,111,112,16,16,16,16,16,16,16,16,16,113,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,114,115,116,117,16,16,16,16,16,16,16,16,118,\n 119,120,16,16,16,16,16,121,122,16,16,16,16,123,16,16,124,16,16,16,16,16,16,16,\n 16,16,125,16,16,16,\n 16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,254,255,255,7,254,\n 255,255,7,0,0,0,0,0,4,32,4,255,255,127,255,255,255,127,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,195,255,3,0,31,80,0,0,0,0,0,0,0,0,0,0,32,0,0,0,0,0,223,188,64,215,255,255,\n 251,255,255,255,255,255,255,255,255,255,191,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,3,252,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,254,255,255,255,127,2,255,255,255,\n 255,255,1,0,0,0,0,255,191,182,0,255,255,255,135,7,0,0,0,255,7,255,255,255,255,\n 255,255,255,254,255,195,255,255,255,255,255,255,255,255,255,255,255,255,239,\n 31,254,225,255,\n 159,0,0,255,255,255,255,255,255,0,224,255,255,255,255,255,255,255,255,255,255,\n 255,255,3,0,255,255,255,255,255,7,48,4,255,255,255,252,255,31,0,0,255,255,255,\n 1,255,7,0,0,0,0,0,0,255,255,223,255,255,0,240,255,248,3,255,255,255,255,255,\n 255,255,255,255,239,255,223,225,255,207,255,254,255,239,159,249,255,255,253,\n 197,227,159,89,128,176,207,255,3,16,238,135,249,255,255,253,109,195,135,25,2,\n 94,192,255,63,0,238,191,251,255,255,253,237,227,191,27,1,0,207,255,0,30,238,\n 159,249,255,255,253,237,227,159,25,192,176,207,255,2,0,236,199,61,214,24,199,\n 255,195,199,29,129,0,192,255,0,0,239,223,253,255,255,253,255,227,223,29,96,7,\n 207,255,0,0,239,223,253,255,255,253,239,227,223,29,96,64,207,255,6,0,255,223,\n 253,255,255,255,255,231,223,93,240,128,207,255,0,252,238,255,127,252,255,255,\n 251,47,127,128,95,255,192,255,12,0,254,255,255,255,255,127,255,7,63,32,255,3,\n 0,0,0,0,214,247,255,255,175,255,255,59,95,32,255,243,0,0,0,\n 0,1,0,0,0,255,3,0,0,255,254,255,255,255,31,254,255,3,255,255,254,255,255,255,\n 31,0,0,0,0,0,0,0,0,255,255,255,255,255,255,127,249,255,3,255,255,255,255,255,\n 255,255,255,255,63,255,255,255,255,191,32,255,255,255,255,255,247,255,255,255,\n 255,255,255,255,255,255,61,127,61,255,255,255,255,255,61,255,255,255,255,61,\n 127,61,255,127,255,255,255,255,255,255,255,61,255,255,255,255,255,255,255,255,\n 7,0,0,0,0,255,255,0,0,255,255,255,255,255,255,255,255,255,255,63,63,254,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,159,255,255,254,255,255,7,255,255,255,255,255,255,255,255,\n 255,199,255,1,255,223,15,0,255,255,15,0,255,255,15,0,255,223,13,0,255,255,255,\n 255,255,255,207,255,255,1,128,16,255,3,0,0,0,0,255,3,255,255,255,255,255,255,\n 255,255,255,255,255,1,255,255,255,255,255,7,255,255,255,255,255,255,255,255,\n 63,\n 0,255,255,255,127,255,15,255,1,192,255,255,255,255,63,31,0,255,255,255,255,\n 255,15,255,255,255,3,255,3,0,0,0,0,255,255,255,15,255,255,255,255,255,255,255,\n 127,254,255,31,0,255,3,255,3,128,0,0,128,1,0,0,0,0,0,0,0,255,255,255,255,255,\n 255,239,255,239,15,255,3,0,0,0,0,255,255,255,255,255,243,255,255,255,255,255,\n 255,191,255,3,0,255,255,255,255,255,255,127,0,255,227,255,255,255,255,255,63,\n 255,1,255,255,255,255,255,231,0,0,0,0,0,222,111,4,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,\n 128,255,31,0,255,255,63,63,255,255,255,255,63,63,255,170,255,255,255,63,255,\n 255,255,255,255,255,223,95,220,31,207,15,255,31,220,31,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,2,128,0,0,255,31,0,0,0,0,0,0,0,0,0,0,0,0,132,252,47,62,80,189,255,243,\n 224,67,0,0,255,255,255,255,255,1,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,255,255,255,255,255,255,3,0,\n 0,255,255,255,255,255,127,255,255,255,255,255,127,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,31,120,12,0,255,255,255,255,191,32,255,\n 255,255,255,255,255,255,128,0,0,255,255,127,0,127,127,127,127,127,127,127,127,\n 255,255,255,255,0,0,0,0,0,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,224,0,0,0,254,3,62,31,254,255,255,255,255,255,255,255,255,255,127,224,254,\n 255,255,255,255,255,255,255,255,255,255,247,224,255,255,255,255,255,254,255,\n 255,255,255,255,255,255,255,255,255,127,0,0,255,255,255,255,0,0,0,0,0,0,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,\n 31,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,31,0,0,\n 0,0,0,0,0,0,255,255,255,255,255,63,255,31,255,255,255,15,0,0,255,255,255,255,\n 255,127,240,143,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,\n 0,128,255,252,255,255,255,255,255,255,255,255,255,255,255,255,249,255,255,255,\n 255,255,255,252,7,0,0,0,0,224,255,191,255,255,255,255,0,0,0,255,255,255,255,\n 255,255,15,0,255,255,255,255,255,255,255,255,47,0,255,3,0,0,252,232,255,255,\n 255,255,255,7,255,255,255,255,7,0,255,255,255,31,255,255,255,255,255,255,247,\n 255,0,128,255,3,255,255,255,127,255,255,255,255,255,255,127,0,255,63,255,3,\n 255,255,127,252,255,255,255,255,255,255,255,127,5,0,0,56,255,255,60,0,126,126,\n 126,0,127,127,255,255,255,255,255,247,255,3,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,7,255,3,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,15,0,255,255,127,248,255,255,255,255,\n 255,\n 15,255,255,255,255,255,255,255,255,255,255,255,255,255,63,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,3,0,0,0,0,127,0,248,224,255,253,127,95,219,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,3,0,0,0,248,255,255,255,\n 255,255,255,255,255,255,255,255,255,63,0,0,255,255,255,255,255,255,255,255,\n 252,255,255,255,255,255,255,0,0,0,0,0,255,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,31,0,0,255,3,\n 254,255,255,7,254,255,255,7,192,255,255,255,255,255,255,255,255,255,255,127,\n 252,252,252,28,0,0,0,0,255,239,255,255,127,255,255,183,255,63,255,63,0,0,0,0,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,7,0,0,0,0,0,0,0,0,\n 255,255,255,255,255,255,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,255,255,255,31,255,255,255,255,255,255,1,0,0,0,0,\n 0,255,255,255,255,0,224,255,255,255,7,255,255,255,255,255,7,255,255,255,63,\n 255,255,255,255,15,255,62,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,63,255,3,255,255,255,255,15,255,255,255,\n 255,15,255,255,255,255,255,0,255,255,255,255,255,255,15,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,255,255,255,255,255,255,127,0,255,255,63,0,255,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,63,253,255,255,255,255,191,145,255,255,63,0,255,255,\n 127,0,255,255,255,127,0,0,0,0,0,0,0,0,255,255,55,0,255,255,63,0,255,255,255,3,\n 0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,192,0,0,0,0,0,0,0,0,111,240,239,\n 254,255,255,63,0,0,0,0,0,255,255,255,31,255,255,255,31,0,0,0,0,255,254,255,\n 255,31,0,0,0,255,255,255,255,255,255,63,0,255,255,63,0,255,255,7,0,255,255,3,\n 0,0,0,0,0,0,0,0,0,0,0,0,\n 0,255,255,255,255,255,255,255,255,255,1,0,0,0,0,0,0,255,255,255,255,255,255,7,\n 0,255,255,255,255,255,255,7,0,255,255,255,255,255,0,255,3,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,\n 255,27,3,0,0,0,0,0,0,0,0,0,255,255,255,31,128,0,255,255,63,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,255,255,31,0,0,0,255,255,127,0,255,255,255,255,255,255,255,255,63,0,0,\n 0,192,255,0,0,252,255,255,255,255,255,255,1,0,0,255,255,255,1,255,3,255,255,\n 255,255,255,255,199,255,240,0,255,255,255,255,71,0,255,255,255,255,255,255,\n 255,255,30,192,255,23,0,0,0,0,255,255,251,255,255,255,159,64,0,0,0,0,0,0,0,0,\n 127,189,255,191,255,1,255,255,255,255,255,255,255,1,255,3,239,159,249,255,255,\n 253,237,227,159,25,129,224,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,255,255,255,255,255,255,255,255,187,7,255,131,3,0,0,0,255,255,255,255,255,\n 255,255,255,179,0,255,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,\n 255,255,255,63,127,0,0,0,63,0,0,0,0,255,255,255,255,255,255,255,127,17,0,255,\n 3,0,0,0,0,255,255,255,255,255,255,63,1,255,3,0,0,0,0,0,0,255,255,255,231,255,\n 7,255,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,\n 255,255,1,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,3,0,128,\n 127,242,111,255,255,255,191,153,7,0,255,3,0,0,0,0,0,0,0,0,255,252,255,255,255,\n 255,255,252,26,0,0,0,255,255,255,255,255,255,231,127,0,0,255,255,255,255,255,\n 255,255,255,255,32,0,0,0,0,255,255,255,255,255,255,255,1,255,253,255,255,255,\n 255,127,127,1,0,255,3,0,0,252,255,255,255,252,255,255,254,127,0,0,0,0,0,0,0,0,\n 0,127,251,255,255,255,255,127,180,203,0,255,3,191,253,255,255,255,127,123,1,\n 255,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,255,255,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,\n 0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,3,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,127,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,255,255,255,255,255,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,255,255,255,255,255,255,255,255,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,\n 0,255,255,255,255,255,255,255,1,255,255,255,127,255,3,0,0,0,0,0,0,0,0,0,0,0,0,\n 255,255,255,63,0,0,255,255,255,255,255,255,0,0,15,0,255,3,248,255,255,224,255,\n 255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,\n 255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,135,\n 255,255,255,255,255,255,255,128,255,255,0,0,0,0,0,0,0,0,11,0,3,0,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,0,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,63,0,0,0,0,0,\n 255,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,\n 127,0,0,0,0,0,0,7,0,240,0,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,15,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,7,255,31,255,1,255,67,0,0,0,0,0,0,0,0,0,0,0,0,\n 255,255,255,255,255,255,255,255,255,255,223,255,255,255,255,255,255,255,255,\n 223,100,222,255,235,239,255,255,255,255,255,255,255,191,231,223,223,255,255,\n 255,123,95,252,253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,63,255,255,255,253,255,255,247,255,255,255,\n 247,255,255,223,255,255,255,223,255,255,127,255,255,255,127,255,255,255,253,\n 255,255,255,253,255,255,247,207,255,255,255,255,255,255,127,255,255,249,219,7,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,31,\n 128,63,255,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,15,255,\n 3,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,31,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,143,8,\n 255,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,255,255,255,150,254,247,10,\n 132,234,150,170,150,247,247,94,255,251,255,15,238,251,255,15,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,255,255,255,3,255,255,255,3,255,255,255,3,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,3\n]);\n\n// size: 1568 bytes (compressed to ~1380 bytes after binaryen)\n// @ts-ignore: decorator\n@lazy @inline const CASED = memory.data([\n 18,19,20,21,22,23,16,16,16,16,16,16,16,16,16,16,\n 24,16,16,25,16,16,16,16,16,16,16,16,26,27,17,28,\n 29,30,16,16,31,16,16,16,16,16,16,16,32,33,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,34,35,16,16,16,36,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,37,16,16,16,38,\n 16,16,16,16,39,16,16,16,16,16,16,16,40,16,16,16,\n 16,16,16,16,16,16,16,16,41,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,42,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,43,44,45,46,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,47,16,16,16,16,16,16,\n 16,48,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 0,0,0,0,0,0,0,0,254,255,255,7,254,255,255,7,0,0,0,0,0,4,32,4,\n 255,255,127,255,255,255,127,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,247,240,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,239,255,255,255,255,1,3,0,0,0,31,0,0,0,\n 0,0,0,0,0,0,0,0,32,0,0,0,0,0,207,188,64,215,255,255,251,255,255,255,\n 255,255,255,255,255,255,191,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 3,252,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,255,\n 255,255,127,0,255,255,255,255,255,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,\n 191,32,255,255,255,255,255,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,255,255,255,255,255,255,255,255,255,255,63,63,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,255,1,255,255,255,255,255,231,0,0,0,0,0,0,0,0,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 0,0,0,0,0,0,0,0,255,255,63,63,255,255,255,255,63,63,255,170,255,255,255,63,\n 255,255,255,255,255,255,223,95,220,31,207,15,255,31,220,31,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,2,128,0,0,255,31,0,0,0,0,0,0,0,0,0,0,0,0,\n 132,252,47,62,80,189,31,242,224,67,0,0,255,255,255,255,24,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,192,255,255,255,255,255,255,3,0,0,255,255,255,255,255,127,255,255,\n 255,255,255,127,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,31,120,12,0,\n 255,255,255,255,191,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,63,0,0,\n 255,255,255,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,255,255,255,\n 255,255,255,255,255,255,255,255,255,120,255,255,255,255,255,255,252,7,0,0,0,0,96,7,\n 0,0,0,0,0,0,255,255,255,255,255,247,255,1,255,255,255,255,255,255,255,255,255,255,\n 0,0,0,0,0,0,0,0,127,0,248,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,255,255,7,\n 254,255,255,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,255,255,\n 255,255,15,255,255,255,255,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 255,255,255,255,255,255,7,0,255,255,255,255,255,255,7,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,0,0,0,0,\n 0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,223,255,255,255,255,255,\n 255,255,255,223,100,222,255,235,239,255,255,255,255,255,255,255,191,231,223,223,255,255,255,123,\n 95,252,253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,63,255,255,255,\n 253,255,255,247,255,255,255,247,255,255,223,255,255,255,223,255,255,127,255,255,255,127,255,255,\n 255,253,255,255,255,253,255,255,247,15,0,0,0,0,0,0,255,255,255,255,255,255,255,255,\n 15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,255,255,255,3,255,255,255,3,255,255,255,3,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0\n]);\n\n// size: 2976 bytes (compressed to ~2050 bytes after binaryen)\n// @ts-ignore: decorator\n@lazy @inline const CASE_IGNORABLES = memory.data([\n 18,16,19,20,21,22,23,24,25,26,27,28,29,30,31,32,\n 33,16,16,34,16,16,16,35,36,37,38,39,40,41,16,42,\n 43,16,16,16,16,16,16,16,16,16,16,16,44,45,46,16,\n 47,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 48,16,16,16,49,16,50,51,52,53,54,55,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,56,16,16,57,58,\n 16,59,60,61,16,16,16,16,16,16,62,16,16,63,64,65,\n 66,67,68,69,70,71,72,73,74,75,76,16,77,78,79,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,80,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,81,82,16,16,16,83,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,84,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,85,86,16,16,16,16,16,16,16,87,16,16,16,16,16,\n 88,89,90,16,16,16,16,16,91,92,16,16,16,16,16,16,\n 16,16,16,93,16,16,16,16,16,16,16,16,16,16,16,16,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 0,0,0,0,128,64,0,4,0,0,0,64,1,0,0,0,0,0,0,0,0,161,144,1,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,48,4,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,3,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,0,0,0,0,\n 0,0,254,255,255,255,255,191,182,0,0,0,0,0,16,0,63,0,255,23,0,0,0,0,\n 1,248,255,255,0,0,1,0,0,0,0,0,0,0,0,0,0,0,192,191,255,61,0,0,\n 0,128,2,0,0,0,255,255,255,7,0,0,0,0,0,0,0,0,0,0,192,255,1,0,\n 0,0,0,0,0,248,63,36,0,0,192,255,255,63,0,0,0,0,0,14,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,248,255,255,255,255,255,7,0,0,0,0,0,0,20,\n 254,33,254,0,12,0,2,0,2,0,0,0,0,0,0,16,30,32,0,0,12,0,0,64,\n 6,0,0,0,0,0,0,16,134,57,2,0,0,0,35,0,6,0,0,0,0,0,0,16,\n 190,33,0,0,12,0,0,252,2,0,0,0,0,0,0,144,30,32,96,0,12,0,0,0,\n 4,0,0,0,0,0,0,0,1,32,0,0,0,0,0,0,17,0,0,0,0,0,0,192,\n 193,61,96,0,12,0,0,0,2,0,0,0,0,0,0,144,64,48,0,0,12,0,0,0,\n 3,0,0,0,0,0,0,24,30,32,0,0,12,0,0,0,2,0,0,0,0,0,0,0,\n 0,4,92,0,0,0,0,0,0,0,0,0,0,0,242,7,192,127,0,0,0,0,0,0,\n 0,0,0,0,0,0,242,31,64,63,0,0,0,0,0,0,0,0,0,3,0,0,160,2,\n 0,0,0,0,0,0,254,127,223,224,255,254,255,255,255,31,64,0,0,0,0,0,0,0,\n 0,0,0,0,0,224,253,102,0,0,0,195,1,0,30,0,100,32,0,32,0,0,0,0,\n 0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,224,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,0,0,28,0,\n 0,0,12,0,0,0,12,0,0,0,0,0,0,0,176,63,64,254,143,32,0,0,0,0,\n 0,120,0,0,0,0,0,0,8,0,0,0,0,0,0,0,96,0,0,0,0,2,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,135,1,4,14,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,9,0,0,0,0,\n 0,0,64,127,229,31,248,159,0,0,0,0,128,0,255,255,1,0,0,0,0,0,0,0,\n 15,0,0,0,0,0,208,23,4,0,0,0,0,248,15,0,3,0,0,0,60,59,0,0,\n 0,0,0,0,64,163,3,0,0,0,0,0,0,240,207,0,0,0,0,0,0,0,0,63,\n 0,0,0,0,0,0,0,0,0,0,247,255,253,33,16,3,0,0,0,0,0,240,255,255,\n 255,255,255,255,255,7,0,1,0,0,0,248,255,255,255,255,255,255,255,255,255,255,255,251,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,\n 3,224,0,224,0,224,0,96,0,248,0,3,144,124,0,0,0,0,0,0,223,255,2,128,\n 0,0,255,31,0,0,0,0,0,0,255,255,255,255,1,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,0,0,0,0,0,0,128,3,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,128,0,128,0,0,0,0,0,0,0,0,\n 0,0,0,0,255,255,255,255,0,0,0,0,0,128,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,0,0,0,60,62,8,\n 0,0,0,0,0,0,0,0,0,0,0,126,0,0,0,0,0,0,0,0,0,0,0,112,\n 0,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,16,0,0,0,0,0,0,\n 0,0,0,0,0,128,247,191,0,0,0,240,0,0,0,0,0,0,0,0,0,0,3,0,\n 255,255,255,255,3,0,0,0,0,0,0,0,0,0,1,0,0,7,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,3,68,8,0,0,96,16,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,48,0,0,0,255,255,3,128,0,0,0,0,192,63,0,0,\n 128,255,3,0,0,0,0,0,7,0,0,0,0,0,200,51,0,128,0,0,96,0,0,0,\n 0,0,0,0,0,126,102,0,8,16,0,0,0,0,1,16,0,0,0,0,0,0,157,193,\n 2,0,0,32,0,48,88,0,0,0,0,0,0,0,0,0,0,0,0,248,0,14,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,32,33,0,0,0,0,0,64,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,255,3,0,0,0,0,0,0,0,\n 255,255,8,0,255,255,0,0,0,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,128,128,64,0,4,0,0,0,64,1,0,0,0,0,0,1,0,\n 0,0,0,192,0,0,0,0,0,0,0,0,8,0,0,14,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,7,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,240,0,0,0,0,0,135,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,0,\n 0,0,0,0,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 192,255,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 2,0,0,0,0,0,0,255,127,0,0,0,0,0,0,128,3,0,0,0,0,0,120,38,\n 0,32,0,0,0,0,0,0,7,0,0,0,128,239,31,0,0,0,0,0,0,0,8,0,\n 3,0,0,0,0,0,192,127,0,158,0,0,0,0,0,0,0,0,0,0,0,128,211,64,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,248,7,0,0,\n 3,0,0,0,0,0,0,24,1,0,0,0,192,31,31,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,92,0,0,64,0,0,0,0,\n 0,0,0,0,0,0,248,133,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,176,1,0,0,48,0,0,0,0,\n 0,0,0,0,0,0,248,167,1,0,0,0,0,0,0,0,0,0,0,0,0,40,191,0,\n 0,0,0,0,0,0,0,0,0,0,0,224,188,15,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,6,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,88,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,240,12,1,0,0,0,254,7,0,0,0,0,248,121,128,0,126,14,0,0,0,0,\n 0,252,127,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,191,\n 0,0,0,0,0,0,0,0,0,0,252,255,255,252,109,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,126,180,191,0,0,0,0,0,0,0,0,0,163,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,255,1,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,31,0,0,0,0,0,0,0,127,0,15,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,128,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,27,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,15,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,3,248,255,\n 231,15,0,0,0,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 255,255,255,255,255,255,127,248,255,255,255,255,255,31,32,0,16,0,0,248,254,255,0,0,\n 0,0,0,0,0,0,0,0,127,255,255,249,219,7,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,63,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 240,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,248\n]);\n\n// @ts-ignore: decorator\n@lazy @inline const LOWER127 = memory.data([\n 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,\n 16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,\n 32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,\n 48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,\n 64,\n 97,98,99,100,101,102,103,104,105,106,107,108,109,\n 110,111,112,113,114,115,116,117,118,119,120,121,122,\n 91,92,93,94,95,96,\n 97,98,99,100,101,102,103,104,105,106,107,108,109,\n 110,111,112,113,114,115,116,117,118,119,120,121,122,\n 123,124,125,126,127\n]);\n\n// @ts-ignore: decorator\n@lazy @inline const UPPER127 = memory.data([\n 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,\n 16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,\n 32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,\n 48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,\n 64,\n 65,66,67,68,69,70,71,72,73,74,75,76,77,\n 78,79,80,81,82,83,84,85,86,87,88,89,90,\n 91,92,93,94,95,96,\n 65,66,67,68,69,70,71,72,73,74,75,76,77,\n 78,79,80,81,82,83,84,85,86,87,88,89,90,\n 123,124,125,126,127\n]);\n\n// 23 * 8 = 184 bytes\n// @ts-ignore: decorator\n@lazy @inline const POWERS10 = memory.data([\n 1e00, 1e01, 1e02, 1e03, 1e04, 1e05, 1e06, 1e07, 1e08, 1e09,\n 1e10, 1e11, 1e12, 1e13, 1e14, 1e15, 1e16, 1e17, 1e18, 1e19,\n 1e20, 1e21, 1e22\n]);\n\n// @ts-ignore: decorator\n@inline\nexport const enum CharCode {\n PERCENT = 0x25,\n PLUS = 0x2B,\n MINUS = 0x2D,\n DOT = 0x2E,\n _0 = 0x30,\n _1 = 0x31,\n _2 = 0x32,\n _3 = 0x33,\n _4 = 0x34,\n _5 = 0x35,\n _6 = 0x36,\n _7 = 0x37,\n _8 = 0x38,\n _9 = 0x39,\n A = 0x41,\n B = 0x42,\n E = 0x45,\n I = 0x49,\n N = 0x4E,\n O = 0x4F,\n X = 0x58,\n Z = 0x5A,\n a = 0x61,\n b = 0x62,\n e = 0x65,\n n = 0x6E,\n o = 0x6F,\n u = 0x75,\n x = 0x78,\n z = 0x7A\n}\n\n// @ts-ignore: decorator\n@inline\nexport function isAscii(c: u32): bool {\n return !(c >> 7);\n}\n\n// @ts-ignore: decorator\n@inline\nexport function isLower8(c: u32): bool {\n return c - CharCode.a < 26;\n}\n\n// @ts-ignore: decorator\n@inline\nexport function isUpper8(c: u32): bool {\n return c - CharCode.A < 26;\n}\n\nexport function isSpace(c: u32): bool {\n if (c < 0x1680) { // < (1)\n // , , , , , and \n // (c == 0x20 || c == 0xA0) was optimized to (c | 0x80) == 0xA0\n return ((c | 0x80) == 0xA0) || (c - 0x09 <= 0x0D - 0x09);\n }\n if (c - 0x2000 <= 0x200A - 0x2000) return true;\n switch (c) {\n case 0x1680: // (1)\n case 0x2028: // (2)\n case 0x2029: // \n case 0x202F: // \n case 0x205F: // \n case 0x3000: // \n case 0xFEFF: return true; // \n }\n return false;\n}\n\nexport function isAlpha(c: u32): bool {\n if (isAscii(c)) return (c | 32) - CharCode.a < 26;\n if (c < 0x20000) {\n // @ts-ignore: cast\n return stagedBinaryLookup(ALPHA_TABLE, c);\n }\n return c < 0x2FFFE;\n}\n\n// @ts-ignore: decorator\n@inline\nexport function isCased(c: u32): bool {\n // @ts-ignore: cast\n return c < 0x1F18A && stagedBinaryLookup(CASED, c);\n}\n\n// @ts-ignore: decorator\n@inline\nexport function isCaseIgnorable(c: u32): bool {\n // @ts-ignore: cast\n return c < 0xE01F0 && stagedBinaryLookup(CASE_IGNORABLES, c);\n}\n\n// @ts-ignore: decorator\n@inline\nexport function isFinalSigma(buffer: usize, index: isize, len: isize): bool {\n const lookaheadLimit = 30; // max lookahead limit\n var found = false;\n var pos = index;\n var minPos = max(0, pos - lookaheadLimit);\n while (pos > minPos) {\n let c = codePointBefore(buffer, pos);\n if (!isCaseIgnorable(c)) {\n if (isCased(c)) {\n found = true;\n } else {\n return false;\n }\n }\n pos -= isize(c >= 0x10000) + 1;\n }\n if (!found) return false;\n pos = index + 1;\n var maxPos = min(pos + lookaheadLimit, len);\n while (pos < maxPos) {\n let c = load(buffer + (pos << 1));\n if (u32((c & 0xFC00) == 0xD800) & u32(pos + 1 != len)) {\n let c1 = load(buffer + (pos << 1), 2);\n if ((c1 & 0xFC00) == 0xDC00) {\n c = (c - 0xD800 << 10) + (c1 - 0xDC00) + 0x10000;\n }\n }\n if (!isCaseIgnorable(c)) {\n return !isCased(c);\n }\n pos += isize(c >= 0x10000) + 1;\n }\n return true;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction codePointBefore(buffer: usize, index: isize): i32 {\n if (index <= 0) return -1;\n var c = load(buffer + (index - 1 << 1));\n if (u32((c & 0xFC00) == 0xDC00) & u32(index - 2 >= 0)) {\n let c1 = load(buffer + (index - 2 << 1));\n if ((c1 & 0xFC00) == 0xD800) {\n return ((c1 & 0x3FF) << 10) + (c & 0x3FF) + 0x10000;\n }\n }\n return (c & 0xF800) == 0xD800 ? 0xFFFD : c;\n}\n\n// Search routine for two-staged lookup tables\nfunction stagedBinaryLookup(table: usize, c: u32): bool {\n return ((load(table + (load(table + (c >>> 8)) << 5) + ((c & 255) >> 3)) >>> (c & 7)) & 1);\n}\n\nexport function compareImpl(str1: string, index1: usize, str2: string, index2: usize, len: usize): i32 {\n var ptr1 = changetype(str1) + (index1 << 1);\n var ptr2 = changetype(str2) + (index2 << 1);\n if (ASC_SHRINK_LEVEL < 2) {\n if (len >= 4 && !((ptr1 & 7) | (ptr2 & 7))) {\n do {\n if (load(ptr1) != load(ptr2)) break;\n ptr1 += 8;\n ptr2 += 8;\n len -= 4;\n } while (len >= 4);\n }\n }\n while (len--) {\n let a = load(ptr1);\n let b = load(ptr2);\n if (a != b) return a - b;\n ptr1 += 2;\n ptr2 += 2;\n }\n return 0;\n}\n\n// @ts-ignore: decorator\n@inline\nexport function toLower8(c: u32): u32 {\n if (ASC_SHRINK_LEVEL > 0) {\n return c | u32(isUpper8(c)) << 5;\n } else {\n return load(LOWER127 + c);\n }\n}\n\n// @ts-ignore: decorator\n@inline\nexport function toUpper8(c: u32): u32 {\n if (ASC_SHRINK_LEVEL > 0) {\n return c & ~(u32(isLower8(c)) << 5);\n } else {\n return load(UPPER127 + c);\n }\n}\n\n/** Parses a string to an integer (usually), using the specified radix. */\nexport function strtol(str: string, radix: i32 = 0): T {\n var len = str.length;\n if (!len) {\n if (isFloat()) {\n // @ts-ignore: cast\n return NaN;\n } else {\n // @ts-ignore: cast\n return 0;\n }\n }\n\n var ptr = changetype(str) /* + HEAD -> offset */;\n var code = load(ptr);\n\n // trim white spaces\n while (isSpace(code)) {\n code = load(ptr += 2);\n --len;\n }\n // determine sign\n // @ts-ignore\n var sign: T = 1;\n if (code == CharCode.MINUS || code == CharCode.PLUS) {\n if (!--len) {\n if (isFloat()) {\n // @ts-ignore: cast\n return NaN;\n } else {\n // @ts-ignore: cast\n return 0;\n }\n }\n if (code == CharCode.MINUS) {\n // @ts-ignore: type\n sign = -1;\n }\n code = load(ptr += 2);\n }\n\n // See https://tc39.es/ecma262/#sec-parseint-string-radix\n if (radix) {\n if (radix < 2 || radix > 36) {\n if (isFloat()) {\n // @ts-ignore: cast\n return NaN;\n } else {\n // @ts-ignore: cast\n return 0;\n }\n }\n // handle case as parseInt(\"0xFF\", 16) by spec\n if (radix == 16) {\n if (\n len > 2 &&\n code == CharCode._0 &&\n (load(ptr, 2) | 32) == CharCode.x\n ) {\n ptr += 4; len -= 2;\n }\n }\n } else {\n // determine radix by literal prefix\n if (code == CharCode._0 && len > 2) {\n switch (load(ptr, 2) | 32) {\n case CharCode.b: {\n ptr += 4; len -= 2;\n radix = 2;\n break;\n }\n case CharCode.o: {\n ptr += 4; len -= 2;\n radix = 8;\n break;\n }\n case CharCode.x: {\n ptr += 4; len -= 2;\n radix = 16;\n break;\n }\n }\n }\n if (!radix) radix = 10;\n }\n\n // calculate value\n // @ts-ignore: type\n var num: T = 0;\n var initial = len - 1;\n while (len--) {\n code = load(ptr);\n if (code - CharCode._0 < 10) {\n code -= CharCode._0;\n } else if (code - CharCode.A <= (CharCode.Z - CharCode.A)) {\n code -= CharCode.A - 10;\n } else if (code - CharCode.a <= (CharCode.z - CharCode.a)) {\n code -= CharCode.a - 10;\n }\n if (code >= radix) {\n if (initial == len) {\n if (isFloat()) {\n // @ts-ignore: cast\n return NaN;\n } else {\n // @ts-ignore: cast\n return 0;\n }\n }\n break;\n }\n // @ts-ignore: type\n num = num * radix + code;\n ptr += 2;\n }\n // @ts-ignore: type\n return sign * num;\n}\n\nexport function strtod(str: string): f64 {\n var len = str.length;\n if (!len) return NaN;\n\n var ptr = changetype(str);\n var code = load(ptr);\n\n var sign = 1.0;\n // skip white spaces\n while (len && isSpace(code)) {\n code = load(ptr += 2);\n --len;\n }\n if (!len) return NaN;\n\n // try parse '-' or '+'\n if (code == CharCode.MINUS) {\n if (!--len) return NaN;\n code = load(ptr += 2);\n sign = -1;\n } else if (code == CharCode.PLUS) {\n if (!--len) return NaN;\n code = load(ptr += 2);\n }\n\n // try parse Infinity\n if (len >= 8 && code == CharCode.I) {\n if (\n load(ptr, 0) == 0x690066006E0049 && // ifnI\n load(ptr, 8) == 0x7900740069006E // ytin\n ) {\n return Infinity * sign;\n }\n return NaN;\n }\n // validate next symbol\n if (code != CharCode.DOT && (code - CharCode._0) >= 10) {\n return NaN;\n }\n var savedPtr = ptr;\n // skip zeros\n while (code == CharCode._0) {\n code = load(ptr += 2);\n --len;\n }\n if (len <= 0) return 0.0 * sign;\n const capacity = 19; // int(64 * 0.3010)\n var pointed = false;\n var consumed = 0;\n var position = 0;\n var x: u64 = 0;\n if (code == CharCode.DOT) {\n let noDigits = !(savedPtr - ptr);\n ptr += 2; --len;\n if (!len && noDigits) return NaN;\n for (pointed = true; (code = load(ptr)) == CharCode._0; --position, ptr += 2) --len;\n if (len <= 0) return 0.0 * sign;\n if (!position && noDigits && code - CharCode._0 >= 10) return NaN;\n }\n for (let digit = code - CharCode._0; digit < 10 || (code == CharCode.DOT && !pointed); digit = code - CharCode._0) {\n if (digit < 10) {\n x = consumed < capacity ? 10 * x + digit : x | u64(!!digit);\n ++consumed;\n } else {\n position = consumed;\n pointed = true;\n }\n if (!--len) break;\n code = load(ptr += 2);\n }\n\n if (!pointed) position = consumed;\n return copysign(scientific(x, position - min(capacity, consumed) + parseExp(ptr, len)), sign);\n}\n\nexport function strtob(str: string): bool {\n var size: usize = str.length << 1;\n var offset: usize = 0;\n if (size > 8) {\n // try trim end whitespaces first\n while (size && isSpace(load(changetype(str) + size - 2))) size -= 2;\n if (size > 8) {\n // trim start whitespaces\n while (offset < size && isSpace(load(changetype(str) + offset))) offset += 2;\n size -= offset;\n }\n }\n if (size != 8) return false;\n // \"true\" represents as \\00\\e\\00\\u\\00\\e\\00\\t (00 65 00 75 00 72 00 74)\n return load(changetype(str) + offset) == 0x0065_0075_0072_0074;\n}\n\nexport function joinBooleanArray(dataStart: usize, length: i32, separator: string): string {\n var lastIndex = length - 1;\n if (lastIndex < 0) return \"\";\n if (!lastIndex) return select(\"true\", \"false\", load(dataStart));\n\n var sepLen = separator.length;\n var valueLen = 5; // max possible length of element len(\"false\")\n var estLen = (valueLen + sepLen) * lastIndex + valueLen;\n var result = changetype(__new(estLen << 1, idof()));\n var offset = 0;\n var value: bool;\n for (let i = 0; i < lastIndex; ++i) {\n value = load(dataStart + i);\n valueLen = 4 + i32(!value);\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(select(\"true\", \"false\", value)),\n valueLen << 1\n );\n offset += valueLen;\n if (sepLen) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(separator),\n sepLen << 1\n );\n offset += sepLen;\n }\n }\n value = load(dataStart + lastIndex);\n valueLen = 4 + i32(!value);\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(select(\"true\", \"false\", value)),\n valueLen << 1\n );\n offset += valueLen;\n\n if (estLen > offset) return result.substring(0, offset);\n return result;\n}\n\nexport function joinIntegerArray(dataStart: usize, length: i32, separator: string): string {\n var lastIndex = length - 1;\n if (lastIndex < 0) return \"\";\n if (!lastIndex) {\n let value = load(dataStart);\n if (isSigned()) {\n if (sizeof() <= 4) {\n // @ts-ignore: type\n return changetype(itoa32(value, 10));\n } else {\n // @ts-ignore: type\n return changetype(itoa64(value, 10));\n }\n } else {\n if (sizeof() <= 4) {\n // @ts-ignore: type\n return changetype(utoa32(value, 10));\n } else {\n // @ts-ignore: type\n return changetype(utoa64(value, 10));\n }\n }\n }\n\n var sepLen = separator.length;\n const valueLen = (sizeof() <= 4 ? 10 : 20) + i32(isSigned());\n var estLen = (valueLen + sepLen) * lastIndex + valueLen;\n var result = changetype(__new(estLen << 1, idof()));\n var offset = 0;\n var value: T;\n for (let i = 0; i < lastIndex; ++i) {\n value = load(dataStart + (i << alignof()));\n // @ts-ignore: type\n offset += itoa_buffered(changetype(result) + (offset << 1), value);\n if (sepLen) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(separator),\n sepLen << 1\n );\n offset += sepLen;\n }\n }\n value = load(dataStart + (lastIndex << alignof()));\n // @ts-ignore: type\n offset += itoa_buffered(changetype(result) + (offset << 1), value);\n if (estLen > offset) return result.substring(0, offset);\n return result;\n}\n\nexport function joinFloatArray(dataStart: usize, length: i32, separator: string): string {\n var lastIndex = length - 1;\n if (lastIndex < 0) return \"\";\n if (!lastIndex) {\n return changetype(dtoa(\n // @ts-ignore: type\n load(dataStart))\n );\n }\n\n const valueLen = MAX_DOUBLE_LENGTH;\n var sepLen = separator.length;\n var estLen = (valueLen + sepLen) * lastIndex + valueLen;\n var result = changetype(__new(estLen << 1, idof()));\n var offset = 0;\n var value: T;\n for (let i = 0; i < lastIndex; ++i) {\n value = load(dataStart + (i << alignof()));\n // @ts-ignore: type\n offset += dtoa_buffered(changetype(result) + (offset << 1), value);\n if (sepLen) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(separator),\n sepLen << 1\n );\n offset += sepLen;\n }\n }\n value = load(dataStart + (lastIndex << alignof()));\n // @ts-ignore: type\n offset += dtoa_buffered(changetype(result) + (offset << 1), value);\n if (estLen > offset) return result.substring(0, offset);\n return result;\n}\n\nexport function joinStringArray(dataStart: usize, length: i32, separator: string): string {\n var lastIndex = length - 1;\n if (lastIndex < 0) return \"\";\n if (!lastIndex) {\n // @ts-ignore: type\n return load(dataStart) || \"\";\n }\n var estLen = 0;\n var value: string;\n for (let i = 0; i < length; ++i) {\n value = load(dataStart + (i << alignof()));\n if (changetype(value) != 0) estLen += value.length;\n }\n var offset = 0;\n var sepLen = separator.length;\n var result = changetype(__new((estLen + sepLen * lastIndex) << 1, idof()));\n for (let i = 0; i < lastIndex; ++i) {\n value = load(dataStart + (i << alignof()));\n if (changetype(value) != 0) {\n let valueLen = value.length;\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(value),\n valueLen << 1\n );\n offset += valueLen;\n }\n if (sepLen) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(separator),\n sepLen << 1\n );\n offset += sepLen;\n }\n }\n value = load(dataStart + (lastIndex << alignof()));\n if (changetype(value) != 0) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(value),\n value.length << 1\n );\n }\n return result;\n}\n\nexport function joinReferenceArray(dataStart: usize, length: i32, separator: string): string {\n var lastIndex = length - 1;\n if (lastIndex < 0) return \"\";\n var value: T;\n if (!lastIndex) {\n value = load(dataStart);\n // @ts-ignore: type\n return value != null ? value.toString() : \"\";\n }\n var result = \"\";\n var sepLen = separator.length;\n for (let i = 0; i < lastIndex; ++i) {\n value = load(dataStart + (i << alignof()));\n // @ts-ignore: type\n if (value != null) result += value.toString();\n if (sepLen) result += separator;\n }\n value = load(dataStart + (lastIndex << alignof()));\n // @ts-ignore: type\n if (value != null) result += value.toString();\n return result;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction scientific(significand: u64, exp: i32): f64 {\n if (!significand || exp < -342) return 0;\n if (exp > 308) return Infinity;\n // Try use fast path\n // Use fast path for string-to-double conversion if possible\n // see http://www.exploringbinary.com/fast-path-decimal-to-floating-point-conversion\n // Simple integer\n var significandf = significand;\n if (!exp) return significandf;\n if (exp > 22 && exp <= 22 + 15) {\n significandf *= pow10(exp - 22);\n exp = 22;\n }\n if (significand <= 9007199254740991 && abs(exp) <= 22) {\n if (exp > 0) return significandf * pow10(exp);\n return significandf / pow10(-exp);\n } else if (exp < 0) {\n return scaledown(significand, exp);\n } else {\n return scaleup(significand, exp);\n }\n}\n\n// Adopted from metallic lib:\n// https://github.com/jdh8/metallic/blob/master/src/stdlib/parse/scientific.h\n// @ts-ignore: decorator\n@inline\nfunction scaledown(significand: u64, exp: i32): f64 {\n const denom: u64 = 6103515625; // 1e14 * 0x1p-14\n const scale = reinterpret(0x3F06849B86A12B9B); // 1e-14 * 0x1p32\n\n var shift = clz(significand);\n significand <<= shift;\n shift = exp - shift;\n\n for (; exp <= -14; exp += 14) {\n let q = significand / denom;\n let r = significand % denom;\n let s = clz(q);\n significand = (q << s) + nearest(scale * (r << (s - 18)));\n shift -= s;\n }\n var b = ipow32(5, -exp);\n var q = significand / b;\n var r = significand % b;\n var s = clz(q);\n significand = (q << s) + (reinterpret(reinterpret(r) + (s << 52)) / b);\n shift -= s;\n\n return NativeMath.scalbn(significand, shift);\n}\n\n// Adopted from metallic lib:\n// https://github.com/jdh8/metallic/blob/master/src/stdlib/parse/scientific.h\n// @ts-ignore: decorator\n@inline\nfunction scaleup(significand: u64, exp: i32): f64 {\n const coeff: u32 = 1220703125; // 1e13 * 0x1p-13;\n var shift = ctz(significand);\n significand >>= shift;\n shift += exp;\n\n __fixmulShift = shift;\n for (; exp >= 13; exp -= 13) {\n significand = fixmul(significand, coeff);\n }\n significand = fixmul(significand, ipow32(5, exp));\n shift = __fixmulShift;\n return NativeMath.scalbn(significand, shift);\n}\n\n// Adopted from metallic lib:\n// https://github.com/jdh8/metallic/blob/master/src/stdlib/parse/scientific.h\n// @ts-ignore: decorator\n@inline\nfunction parseExp(ptr: usize, len: i32): i32 {\n var sign = 1, magnitude = 0;\n var code = load(ptr);\n // check code is 'e' or 'E'\n if ((code | 32) != CharCode.e) return 0;\n\n if (!--len) return 0;\n code = load(ptr += 2);\n if (code == CharCode.MINUS) {\n if (!--len) return 0;\n code = load(ptr += 2);\n sign = -1;\n } else if (code == CharCode.PLUS) {\n if (!--len) return 0;\n code = load(ptr += 2);\n }\n // skip zeros\n while (code == CharCode._0) {\n if (!--len) return 0;\n code = load(ptr += 2);\n }\n for (let digit: u32 = code - CharCode._0; len && digit < 10; digit = code - CharCode._0) {\n if (magnitude >= 3200) return sign * 3200;\n magnitude = 10 * magnitude + digit;\n code = load(ptr += 2);\n --len;\n }\n return sign * magnitude;\n}\n\n// @ts-ignore: decorator\n@lazy var __fixmulShift: u64 = 0;\n\n// Adopted from metallic lib:\n// https://github.com/jdh8/metallic/blob/master/src/stdlib/parse/scientific.h\n// @ts-ignore: decorator\n@inline\nfunction fixmul(a: u64, b: u32): u64 {\n var low = (a & 0xFFFFFFFF) * b;\n var high = (a >> 32) * b + (low >> 32);\n var overflow = (high >> 32);\n var space = clz(overflow);\n var revspace: u64 = 32 - space;\n __fixmulShift += revspace;\n return (high << space | (low & 0xFFFFFFFF) >> revspace) + (low << space >> 31 & 1);\n}\n\n// @ts-ignore: decorator\n@inline\nfunction pow10(n: i32): f64 {\n // argument `n` should bounds in [0, 22] range\n return load(POWERS10 + (n << alignof()));\n}\n","import { Math as JSMath } from \"./bindings/dom\";\nexport { JSMath };\n\nimport {\n pow_lut, exp_lut, exp2_lut, log_lut, log2_lut,\n powf_lut, expf_lut, exp2f_lut, logf_lut, log2f_lut\n} from \"./util/math\";\n\nimport {\n abs as builtin_abs,\n ceil as builtin_ceil,\n clz as builtin_clz,\n copysign as builtin_copysign,\n floor as builtin_floor,\n max as builtin_max,\n min as builtin_min,\n sqrt as builtin_sqrt,\n trunc as builtin_trunc\n} from \"./builtins\";\n\n// SUN COPYRIGHT NOTICE\n//\n// Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.\n// Developed at SunPro, a Sun Microsystems, Inc. business.\n// Permission to use, copy, modify, and distribute this software\n// is freely granted, provided that this notice is preserved.\n//\n// Applies to all functions marked with a comment referring here.\n\n/** @internal */\n// @ts-ignore: decorator\n@lazy var rempio2_y0: f64, rempio2_y1: f64, res128_hi: u64;\n\n/** @internal */\n// @ts-ignore: decorator\n@lazy @inline const PIO2_TABLE = memory.data([\n 0x00000000A2F9836E, 0x4E441529FC2757D1, 0xF534DDC0DB629599, 0x3C439041FE5163AB,\n 0xDEBBC561B7246E3A, 0x424DD2E006492EEA, 0x09D1921CFE1DEB1C, 0xB129A73EE88235F5,\n 0x2EBB4484E99C7026, 0xB45F7E413991D639, 0x835339F49C845F8B, 0xBDF9283B1FF897FF,\n 0xDE05980FEF2F118B, 0x5A0A6D1F6D367ECF, 0x27CB09B74F463F66, 0x9E5FEA2D7527BAC7,\n 0xEBE5F17B3D0739F7, 0x8A5292EA6BFB5FB1, 0x1F8D5D0856033046, 0xFC7B6BABF0CFBC20,\n 0x9AF4361DA9E39161, 0x5EE61B086599855F, 0x14A068408DFFD880, 0x4D73273106061557\n]);\n\n/** @internal */\nfunction R(z: f64): f64 { // Rational approximation of (asin(x)-x)/x^3\n const // see: musl/src/math/asin.c and SUN COPYRIGHT NOTICE above\n pS0 = reinterpret(0x3FC5555555555555), // 1.66666666666666657415e-01\n pS1 = reinterpret(0xBFD4D61203EB6F7D), // -3.25565818622400915405e-01\n pS2 = reinterpret(0x3FC9C1550E884455), // 2.01212532134862925881e-01\n pS3 = reinterpret(0xBFA48228B5688F3B), // -4.00555345006794114027e-02\n pS4 = reinterpret(0x3F49EFE07501B288), // 7.91534994289814532176e-04\n pS5 = reinterpret(0x3F023DE10DFDF709), // 3.47933107596021167570e-05\n qS1 = reinterpret(0xC0033A271C8A2D4B), // -2.40339491173441421878e+00\n qS2 = reinterpret(0x40002AE59C598AC8), // 2.02094576023350569471e+00\n qS3 = reinterpret(0xBFE6066C1B8D0159), // -6.88283971605453293030e-01\n qS4 = reinterpret(0x3FB3B8C5B12E9282); // 7.70381505559019352791e-02\n\n var p = z * (pS0 + z * (pS1 + z * (pS2 + z * (pS3 + z * (pS4 + z * pS5)))));\n var q = 1.0 + z * (qS1 + z * (qS2 + z * (qS3 + z * qS4)));\n return p / q;\n}\n\n/** @internal */\n// @ts-ignore: decorator\n@inline\nfunction expo2(x: f64, sign: f64): f64 { // exp(x)/2 for x >= log(DBL_MAX)\n const // see: musl/src/math/__expo2.c\n k = 2043,\n kln2 = reinterpret(0x40962066151ADD8B); // 0x1.62066151add8bp+10\n var scale = reinterpret(((0x3FF + k / 2) << 20) << 32);\n // in directed rounding correct sign before rounding or overflow is important\n return NativeMath.exp(x - kln2) * (sign * scale) * scale;\n}\n\n/** @internal */\n/* Helper function to eventually get bits of π/2 * |x|\n *\n * y = π/4 * (frac << clz(frac) >> 11)\n * return clz(frac)\n *\n * Right shift 11 bits to make upper half fit in `double`\n */\n// @ts-ignore: decorator\n@inline\nfunction pio2_right(q0: u64, q1: u64): u64 { // see: jdh8/metallic/blob/master/src/math/double/rem_pio2.c\n // Bits of π/4\n const p0: u64 = 0xC4C6628B80DC1CD1;\n const p1: u64 = 0xC90FDAA22168C234;\n\n const Ox1p_64 = reinterpret(0x3BF0000000000000); // 0x1p-64\n const Ox1p_75 = reinterpret(0x3B40000000000000); // 0x1p-75\n\n var shift = clz(q1);\n\n q1 = q1 << shift | q0 >> (64 - shift);\n q0 <<= shift;\n\n var lo = umuldi(p1, q1);\n var hi = res128_hi;\n\n var ahi = hi >> 11;\n var alo = lo >> 11 | hi << 53;\n var blo = (Ox1p_75 * p0 * q1 + Ox1p_75 * p1 * q0);\n\n rempio2_y0 = (ahi + u64(lo < blo));\n rempio2_y1 = Ox1p_64 * (alo + blo);\n\n return shift;\n}\n\n/** @internal */\n// @ts-ignore: decorator\n@inline\nfunction umuldi(u: u64, v: u64): u64 {\n var u1: u64 , v1: u64, w0: u64, w1: u64, t: u64;\n\n u1 = u & 0xFFFFFFFF;\n v1 = v & 0xFFFFFFFF;\n\n u >>= 32;\n v >>= 32;\n\n t = u1 * v1;\n w0 = t & 0xFFFFFFFF;\n t = u * v1 + (t >> 32);\n w1 = t >> 32;\n t = u1 * v + (t & 0xFFFFFFFF);\n\n res128_hi = u * v + w1 + (t >> 32);\n return (t << 32) + w0;\n}\n\n/** @internal */\nfunction pio2_large_quot(x: f64, u: i64): i32 { // see: jdh8/metallic/blob/master/src/math/double/rem_pio2.c\n var magnitude = u & 0x7FFFFFFFFFFFFFFF;\n var offset = (magnitude >> 52) - 1045;\n var shift = offset & 63;\n var tblPtr = PIO2_TABLE + ((offset >> 6) << 3);\n var s0: u64, s1: u64, s2: u64;\n\n var b0 = load(tblPtr, 0 << 3);\n var b1 = load(tblPtr, 1 << 3);\n var b2 = load(tblPtr, 2 << 3);\n\n // Get 192 bits of 0x1p-31 / π with `offset` bits skipped\n if (shift) {\n let rshift = 64 - shift;\n let b3 = load(tblPtr, 3 << 3);\n s0 = b1 >> rshift | b0 << shift;\n s1 = b2 >> rshift | b1 << shift;\n s2 = b3 >> rshift | b2 << shift;\n } else {\n s0 = b0;\n s1 = b1;\n s2 = b2;\n }\n\n var significand = (u & 0x000FFFFFFFFFFFFF) | 0x0010000000000000;\n\n // First 128 bits of fractional part of x/(2π)\n var blo = umuldi(s1, significand);\n var bhi = res128_hi;\n\n var ahi = s0 * significand;\n var clo = (s2 >> 32) * (significand >> 32);\n var plo = blo + clo;\n var phi = ahi + bhi + u64(plo < clo);\n\n // r: u128 = p << 2\n var rlo = plo << 2;\n var rhi = phi << 2 | plo >> 62;\n\n // s: i128 = r >> 127\n var slo = rhi >> 63;\n var shi = slo >> 1;\n var q = (phi >> 62) - slo;\n\n var shifter = 0x3CB0000000000000 - (pio2_right(rlo ^ slo, rhi ^ shi) << 52);\n var signbit = (u ^ rhi) & 0x8000000000000000;\n var coeff = reinterpret(shifter | signbit);\n\n rempio2_y0 *= coeff;\n rempio2_y1 *= coeff;\n\n return q;\n}\n\n/** @internal */\n// @ts-ignore: decorator\n@inline\nfunction rempio2(x: f64, u: u64, sign: i32): i32 {\n const\n pio2_1 = reinterpret(0x3FF921FB54400000), // 1.57079632673412561417e+00\n pio2_1t = reinterpret(0x3DD0B4611A626331), // 6.07710050650619224932e-11\n pio2_2 = reinterpret(0x3DD0B4611A600000), // 6.07710050630396597660e-11\n pio2_2t = reinterpret(0x3BA3198A2E037073), // 2.02226624879595063154e-21\n pio2_3 = reinterpret(0x3BA3198A2E000000), // 2.02226624871116645580e-21\n pio2_3t = reinterpret(0x397B839A252049C1), // 8.47842766036889956997e-32\n invpio2 = reinterpret(0x3FE45F306DC9C883); // 0.63661977236758134308\n\n var ix = (u >> 32) & 0x7FFFFFFF;\n\n if (ASC_SHRINK_LEVEL < 1) {\n if (ix < 0x4002D97C) { // |x| < 3pi/4, special case with n=+-1\n let q = 1, z: f64, y0: f64, y1: f64;\n if (!sign) {\n z = x - pio2_1;\n if (ix != 0x3FF921FB) { // 33+53 bit pi is good enough\n y0 = z - pio2_1t;\n y1 = (z - y0) - pio2_1t;\n } else { // near pi/2, use 33+33+53 bit pi\n z -= pio2_2;\n y0 = z - pio2_2t;\n y1 = (z - y0) - pio2_2t;\n }\n } else { // negative x\n z = x + pio2_1;\n if (ix != 0x3FF921FB) { // 33+53 bit pi is good enough\n y0 = z + pio2_1t;\n y1 = (z - y0) + pio2_1t;\n } else { // near pi/2, use 33+33+53 bit pi\n z += pio2_2;\n y0 = z + pio2_2t;\n y1 = (z - y0) + pio2_2t;\n }\n q = -1;\n }\n rempio2_y0 = y0;\n rempio2_y1 = y1;\n return q;\n }\n }\n\n if (ix < 0x413921FB) { // |x| ~< 2^20*pi/2 (1647099)\n // Use precise Cody Waite scheme\n let q = nearest(x * invpio2);\n let r = x - q * pio2_1;\n let w = q * pio2_1t; // 1st round good to 85 bit\n let j = ix >> 20;\n let y0 = r - w;\n let hi = (reinterpret(y0) >> 32);\n let i = j - ((hi >> 20) & 0x7FF);\n\n if (i > 16) { // 2nd iteration needed, good to 118\n let t = r;\n w = q * pio2_2;\n r = t - w;\n w = q * pio2_2t - ((t - r) - w);\n y0 = r - w;\n hi = (reinterpret(y0) >> 32);\n i = j - ((hi >> 20) & 0x7FF);\n if (i > 49) { // 3rd iteration need, 151 bits acc\n let t = r;\n w = q * pio2_3;\n r = t - w;\n w = q * pio2_3t - ((t - r) - w);\n y0 = r - w;\n }\n }\n let y1 = (r - y0) - w;\n rempio2_y0 = y0;\n rempio2_y1 = y1;\n return q;\n }\n var q = pio2_large_quot(x, u);\n return select(-q, q, sign);\n}\n\n/** @internal */\n// @ts-ignore: decorator\n@inline\nfunction sin_kern(x: f64, y: f64, iy: i32): f64 { // see: musl/tree/src/math/__sin.c\n const\n S1 = reinterpret(0xBFC5555555555549), // -1.66666666666666324348e-01\n S2 = reinterpret(0x3F8111111110F8A6), // 8.33333333332248946124e-03\n S3 = reinterpret(0xBF2A01A019C161D5), // -1.98412698298579493134e-04\n S4 = reinterpret(0x3EC71DE357B1FE7D), // 2.75573137070700676789e-06\n S5 = reinterpret(0xBE5AE5E68A2B9CEB), // -2.50507602534068634195e-08\n S6 = reinterpret(0x3DE5D93A5ACFD57C); // 1.58969099521155010221e-10\n\n var z = x * x;\n var w = z * z;\n var r = S2 + z * (S3 + z * S4) + z * w * (S5 + z * S6);\n var v = z * x;\n if (!iy) {\n return x + v * (S1 + z * r);\n } else {\n return x - ((z * (0.5 * y - v * r) - y) - v * S1);\n }\n}\n\n/** @internal */\n// @ts-ignore: decorator\n@inline\nfunction cos_kern(x: f64, y: f64): f64 { // see: musl/tree/src/math/__cos.c\n const\n C1 = reinterpret(0x3FA555555555554C), // 4.16666666666666019037e-02\n C2 = reinterpret(0xBF56C16C16C15177), // -1.38888888888741095749e-03\n C3 = reinterpret(0x3EFA01A019CB1590), // 2.48015872894767294178e-05\n C4 = reinterpret(0xBE927E4F809C52AD), // -2.75573143513906633035e-07\n C5 = reinterpret(0x3E21EE9EBDB4B1C4), // 2.08757232129817482790e-09\n C6 = reinterpret(0xBDA8FAE9BE8838D4); // -1.13596475577881948265e-11\n\n var z = x * x;\n var w = z * z;\n var r = z * (C1 + z * (C2 + z * C3)) + w * w * (C4 + z * (C5 + z * C6));\n var hz = 0.5 * z;\n w = 1.0 - hz;\n return w + (((1.0 - w) - hz) + (z * r - x * y));\n}\n\n/** @internal */\nfunction tan_kern(x: f64, y: f64, iy: i32): f64 { // see: src/lib/msun/src/k_tan.c\n const\n T0 = reinterpret(0x3FD5555555555563), // 3.33333333333334091986e-01\n T1 = reinterpret(0x3FC111111110FE7A), // 1.33333333333201242699e-01\n T2 = reinterpret(0x3FABA1BA1BB341FE), // 5.39682539762260521377e-02\n T3 = reinterpret(0x3F9664F48406D637), // 2.18694882948595424599e-02\n T4 = reinterpret(0x3F8226E3E96E8493), // 8.86323982359930005737e-03\n T5 = reinterpret(0x3F6D6D22C9560328), // 3.59207910759131235356e-03\n T6 = reinterpret(0x3F57DBC8FEE08315), // 1.45620945432529025516e-03\n T7 = reinterpret(0x3F4344D8F2F26501), // 5.88041240820264096874e-04\n T8 = reinterpret(0x3F3026F71A8D1068), // 2.46463134818469906812e-04\n T9 = reinterpret(0x3F147E88A03792A6), // 7.81794442939557092300e-05\n T10 = reinterpret(0x3F12B80F32F0A7E9), // 7.14072491382608190305e-05\n T11 = reinterpret(0xBEF375CBDB605373), // -1.85586374855275456654e-05\n T12 = reinterpret(0x3EFB2A7074BF7AD4); // 2.59073051863633712884e-05\n\n const\n one = reinterpret(0x3FF0000000000000), // 1.00000000000000000000e+00\n pio4 = reinterpret(0x3FE921FB54442D18), // 7.85398163397448278999e-01\n pio4lo = reinterpret(0x3C81A62633145C07); // 3.06161699786838301793e-17\n\n var z: f64, r: f64, v: f64, w: f64, s: f64;\n var hx = (reinterpret(x) >> 32); // high word of x\n var ix = hx & 0x7FFFFFFF; // high word of |x|\n var big = ix >= 0x3FE59428;\n if (big) { // |x| >= 0.6744\n if (hx < 0) { x = -x, y = -y; }\n z = pio4 - x;\n w = pio4lo - y;\n x = z + w;\n y = 0.0;\n }\n z = x * x;\n w = z * z;\n r = T1 + w * (T3 + w * (T5 + w * (T7 + w * (T9 + w * T11))));\n v = z * (T2 + w * (T4 + w * (T6 + w * (T8 + w * (T10 + w * T12)))));\n s = z * x;\n r = y + z * (s * (r + v) + y);\n r += T0 * s;\n w = x + r;\n if (big) {\n v = iy;\n return (1 - ((hx >> 30) & 2)) * (v - 2.0 * (x - (w * w / (w + v) - r)));\n }\n if (iy == 1) return w;\n var a: f64, t: f64;\n z = w;\n z = reinterpret(reinterpret(z) & 0xFFFFFFFF00000000);\n v = r - (z - x); // z + v = r + x\n t = a = -one / w; // a = -1.0 / w\n t = reinterpret(reinterpret(t) & 0xFFFFFFFF00000000);\n s = one + t * z;\n return t + a * (s + t * v);\n}\n\n/** @internal */\nfunction dtoi32(x: f64): i32 {\n if (ASC_SHRINK_LEVEL > 0) {\n const inv32 = 1.0 / 4294967296;\n return (x - 4294967296 * floor(x * inv32));\n } else {\n let result = 0;\n let u = reinterpret(x);\n let e = (u >> 52) & 0x7FF;\n if (e <= 1023 + 30) {\n result = x;\n } else if (e <= 1023 + 30 + 53) {\n let v = (u & ((1 << 52) - 1)) | (1 << 52);\n v = v << e - 1023 - 52 + 32;\n result = (v >> 32);\n result = select(-result, result, u < 0);\n }\n return result;\n }\n}\n\n// @ts-ignore: decorator\n@lazy var random_seeded = false;\n\n// @ts-ignore: decorator\n@lazy var random_state0_64: u64, random_state1_64: u64;\n\n// @ts-ignore: decorator\n@lazy var random_state0_32: u32, random_state1_32: u32;\n\nfunction murmurHash3(h: u64): u64 { // Force all bits of a hash block to avalanche\n h ^= h >> 33; // see: https://github.com/aappleby/smhasher\n h *= 0xFF51AFD7ED558CCD;\n h ^= h >> 33;\n h *= 0xC4CEB9FE1A85EC53;\n h ^= h >> 33;\n return h;\n}\n\nfunction splitMix32(h: u32): u32 {\n h += 0x6D2B79F5;\n h = (h ^ (h >> 15)) * (h | 1);\n h ^= h + (h ^ (h >> 7)) * (h | 61);\n return h ^ (h >> 14);\n}\n\nexport namespace NativeMath {\n\n // @ts-ignore: decorator\n @lazy\n export const E = reinterpret(0x4005BF0A8B145769); // 2.7182818284590452354\n\n // @ts-ignore: decorator\n @lazy\n export const LN2 = reinterpret(0x3FE62E42FEFA39EF); // 0.69314718055994530942\n\n // @ts-ignore: decorator\n @lazy\n export const LN10 = reinterpret(0x40026BB1BBB55516); // 2.30258509299404568402\n\n // @ts-ignore: decorator\n @lazy\n export const LOG2E = reinterpret(0x3FF71547652B82FE); // 1.4426950408889634074\n\n // @ts-ignore: decorator\n @lazy\n export const LOG10E = reinterpret(0x3FDBCB7B1526E50E); // 0.43429448190325182765\n\n // @ts-ignore: decorator\n @lazy\n export const PI = reinterpret(0x400921FB54442D18); // 3.14159265358979323846\n\n // @ts-ignore: decorator\n @lazy\n export const SQRT1_2 = reinterpret(0x3FE6A09E667F3BCD); // 0.70710678118654752440\n\n // @ts-ignore: decorator\n @lazy\n export const SQRT2 = reinterpret(0x3FF6A09E667F3BCD); // 1.41421356237309504880\n\n // @ts-ignore: decorator\n @lazy\n export var sincos_sin: f64 = 0;\n\n // @ts-ignore: decorator\n @lazy\n export var sincos_cos: f64 = 0;\n\n // @ts-ignore: decorator\n @inline export function abs(x: f64): f64 {\n return builtin_abs(x);\n }\n\n export function acos(x: f64): f64 { // see: musl/src/math/acos.c and SUN COPYRIGHT NOTICE above\n const\n pio2_hi = reinterpret(0x3FF921FB54442D18), // 1.57079632679489655800e+00\n pio2_lo = reinterpret(0x3C91A62633145C07), // 6.12323399573676603587e-17\n Ox1p_120f = reinterpret(0x03800000);\n\n var hx = (reinterpret(x) >> 32);\n var ix = hx & 0x7FFFFFFF;\n if (ix >= 0x3FF00000) {\n let lx = reinterpret(x);\n if ((ix - 0x3FF00000 | lx) == 0) {\n if (hx < 0) return 2 * pio2_hi + Ox1p_120f;\n return 0;\n }\n return 0 / (x - x);\n }\n if (ix < 0x3FE00000) {\n if (ix <= 0x3C600000) return pio2_hi + Ox1p_120f;\n return pio2_hi - (x - (pio2_lo - x * R(x * x)));\n }\n var s: f64, w: f64, z: f64;\n if (hx < 0) {\n // z = (1.0 + x) * 0.5;\n z = 0.5 + x * 0.5;\n s = builtin_sqrt(z);\n w = R(z) * s - pio2_lo;\n return 2 * (pio2_hi - (s + w));\n }\n // z = (1.0 - x) * 0.5;\n z = 0.5 - x * 0.5;\n s = builtin_sqrt(z);\n var df = reinterpret(reinterpret(s) & 0xFFFFFFFF00000000);\n var c = (z - df * df) / (s + df);\n w = R(z) * s + c;\n return 2 * (df + w);\n }\n\n export function acosh(x: f64): f64 { // see: musl/src/math/acosh.c\n const s = reinterpret(0x3FE62E42FEFA39EF);\n var u = reinterpret(x);\n // Prevent propagation for all input values less than 1.0.\n // Note musl lib didn't fix this yet.\n if (u < 0x3FF0000000000000) return (x - x) / 0.0;\n var e = u >> 52 & 0x7FF;\n if (e < 0x3FF + 1) return log1p(x - 1 + builtin_sqrt((x - 1) * (x - 1) + 2 * (x - 1)));\n if (e < 0x3FF + 26) return log(2 * x - 1 / (x + builtin_sqrt(x * x - 1)));\n return log(x) + s;\n }\n\n export function asin(x: f64): f64 { // see: musl/src/math/asin.c and SUN COPYRIGHT NOTICE above\n const\n pio2_hi = reinterpret(0x3FF921FB54442D18), // 1.57079632679489655800e+00\n pio2_lo = reinterpret(0x3C91A62633145C07), // 6.12323399573676603587e-17\n Ox1p_120f = reinterpret(0x03800000);\n\n var hx = (reinterpret(x) >> 32);\n var ix = hx & 0x7FFFFFFF;\n if (ix >= 0x3FF00000) {\n let lx = reinterpret(x);\n if ((ix - 0x3FF00000 | lx) == 0) return x * pio2_hi + Ox1p_120f;\n return 0 / (x - x);\n }\n if (ix < 0x3FE00000) {\n if (ix < 0x3E500000 && ix >= 0x00100000) return x;\n return x + x * R(x * x);\n }\n // var z = (1.0 - builtin_abs(x)) * 0.5;\n var z = 0.5 - builtin_abs(x) * 0.5;\n var s = builtin_sqrt(z);\n var r = R(z);\n if (ix >= 0x3FEF3333) x = pio2_hi - (2 * (s + s * r) - pio2_lo);\n else {\n let f = reinterpret(reinterpret(s) & 0xFFFFFFFF00000000);\n let c = (z - f * f) / (s + f);\n x = 0.5 * pio2_hi - (2 * s * r - (pio2_lo - 2 * c) - (0.5 * pio2_hi - 2 * f));\n }\n return select(-x, x, hx < 0);\n }\n\n export function asinh(x: f64): f64 { // see: musl/src/math/asinh.c\n const c = reinterpret(0x3FE62E42FEFA39EF); // 0.693147180559945309417232121458176568\n var u = reinterpret(x);\n var e = u >> 52 & 0x7FF;\n var y = reinterpret(u & 0x7FFFFFFFFFFFFFFF);\n if (e >= 0x3FF + 26) y = log(y) + c;\n else if (e >= 0x3FF + 1) y = log(2 * y + 1 / (builtin_sqrt(y * y + 1) + y));\n else if (e >= 0x3FF - 26) y = log1p(y + y * y / (builtin_sqrt(y * y + 1) + 1));\n return builtin_copysign(y, x);\n }\n\n export function atan(x: f64): f64 { // see musl/src/math/atan.c and SUN COPYRIGHT NOTICE above\n const\n atanhi0 = reinterpret(0x3FDDAC670561BB4F), // 4.63647609000806093515e-01\n atanhi1 = reinterpret(0x3FE921FB54442D18), // 7.85398163397448278999e-01\n atanhi2 = reinterpret(0x3FEF730BD281F69B), // 9.82793723247329054082e-01\n atanhi3 = reinterpret(0x3FF921FB54442D18), // 1.57079632679489655800e+00\n atanlo0 = reinterpret(0x3C7A2B7F222F65E2), // 2.26987774529616870924e-17\n atanlo1 = reinterpret(0x3C81A62633145C07), // 3.06161699786838301793e-17\n atanlo2 = reinterpret(0x3C7007887AF0CBBD), // 1.39033110312309984516e-17\n atanlo3 = reinterpret(0x3C91A62633145C07), // 6.12323399573676603587e-17\n aT0 = reinterpret(0x3FD555555555550D), // 3.33333333333329318027e-01\n aT1 = reinterpret(0xBFC999999998EBC4), // -1.99999999998764832476e-01\n aT2 = reinterpret(0x3FC24924920083FF), // 1.42857142725034663711e-01\n aT3 = reinterpret(0xBFBC71C6FE231671), // -1.11111104054623557880e-01,\n aT4 = reinterpret(0x3FB745CDC54C206E), // 9.09088713343650656196e-02\n aT5 = reinterpret(0xBFB3B0F2AF749A6D), // -7.69187620504482999495e-02\n aT6 = reinterpret(0x3FB10D66A0D03D51), // 6.66107313738753120669e-02\n aT7 = reinterpret(0xBFADDE2D52DEFD9A), // -5.83357013379057348645e-02\n aT8 = reinterpret(0x3FA97B4B24760DEB), // 4.97687799461593236017e-02\n aT9 = reinterpret(0xBFA2B4442C6A6C2F), // -3.65315727442169155270e-02\n aT10 = reinterpret(0x3F90AD3AE322DA11), // 1.62858201153657823623e-02\n Ox1p_120f = reinterpret(0x03800000);\n\n var ix = (reinterpret(x) >> 32);\n var sx = x;\n ix &= 0x7FFFFFFF;\n var z: f64;\n if (ix >= 0x44100000) {\n if (isNaN(x)) return x;\n z = atanhi3 + Ox1p_120f;\n return builtin_copysign(z, sx);\n }\n var id: i32;\n if (ix < 0x3FDC0000) {\n if (ix < 0x3E400000) return x;\n id = -1;\n } else {\n x = builtin_abs(x);\n if (ix < 0x3FF30000) {\n if (ix < 0x3FE60000) {\n id = 0;\n x = (2.0 * x - 1.0) / (2.0 + x);\n } else {\n id = 1;\n x = (x - 1.0) / (x + 1.0);\n }\n } else {\n if (ix < 0x40038000) {\n id = 2;\n x = (x - 1.5) / (1.0 + 1.5 * x);\n } else {\n id = 3;\n x = -1.0 / x;\n }\n }\n }\n z = x * x;\n var w = z * z;\n var s1 = z * (aT0 + w * (aT2 + w * (aT4 + w * (aT6 + w * (aT8 + w * aT10)))));\n var s2 = w * (aT1 + w * (aT3 + w * (aT5 + w * (aT7 + w * aT9))));\n var s3 = x * (s1 + s2);\n if (id < 0) return x - s3;\n switch (id) {\n case 0: { z = atanhi0 - ((s3 - atanlo0) - x); break; }\n case 1: { z = atanhi1 - ((s3 - atanlo1) - x); break; }\n case 2: { z = atanhi2 - ((s3 - atanlo2) - x); break; }\n case 3: { z = atanhi3 - ((s3 - atanlo3) - x); break; }\n default: unreachable();\n }\n return builtin_copysign(z, sx);\n }\n\n export function atanh(x: f64): f64 { // see: musl/src/math/atanh.c\n var u = reinterpret(x);\n var e = u >> 52 & 0x7FF;\n var y = builtin_abs(x);\n if (e < 0x3FF - 1) {\n if (e >= 0x3FF - 32) y = 0.5 * log1p(2 * y + 2 * y * y / (1 - y));\n } else {\n y = 0.5 * log1p(2 * (y / (1 - y)));\n }\n return builtin_copysign(y, x);\n }\n\n export function atan2(y: f64, x: f64): f64 { // see: musl/src/math/atan2.c and SUN COPYRIGHT NOTICE above\n const pi_lo = reinterpret(0x3CA1A62633145C07); // 1.2246467991473531772E-16\n if (isNaN(x) || isNaN(y)) return x + y;\n var u = reinterpret(x);\n var ix = (u >> 32);\n var lx = u;\n u = reinterpret(y);\n var iy = (u >> 32);\n var ly = u;\n if ((ix - 0x3FF00000 | lx) == 0) return atan(y);\n var m = ((iy >> 31) & 1) | ((ix >> 30) & 2);\n ix = ix & 0x7FFFFFFF;\n iy = iy & 0x7FFFFFFF;\n if ((iy | ly) == 0) {\n switch (m) {\n case 0:\n case 1: return y;\n case 2: return PI;\n case 3: return -PI;\n }\n }\n if ((ix | lx) == 0) return m & 1 ? -PI / 2 : PI / 2;\n if (ix == 0x7FF00000) {\n if (iy == 0x7FF00000) {\n let t = m & 2 ? 3 * PI / 4 : PI / 4;\n return m & 1 ? -t : t;\n } else {\n let t = m & 2 ? PI : 0;\n return m & 1 ? -t : t;\n }\n }\n var z: f64;\n if (ix + (64 << 20) < iy || iy == 0x7FF00000) return m & 1 ? -PI / 2 : PI / 2;\n if ((m & 2) && iy + (64 << 20) < ix) z = 0;\n else z = atan(builtin_abs(y / x));\n switch (m) {\n case 0: return z;\n case 1: return -z;\n case 2: return PI - (z - pi_lo);\n case 3: return (z - pi_lo) - PI;\n }\n unreachable();\n return 0;\n }\n\n export function cbrt(x: f64): f64 { // see: musl/src/math/cbrt.c and SUN COPYRIGHT NOTICE above\n const\n B1 = 715094163,\n B2 = 696219795,\n P0 = reinterpret(0x3FFE03E60F61E692), // 1.87595182427177009643\n P1 = reinterpret(0xBFFE28E092F02420), // -1.88497979543377169875\n P2 = reinterpret(0x3FF9F1604A49D6C2), // 1.621429720105354466140\n P3 = reinterpret(0xBFE844CBBEE751D9), // -0.758397934778766047437\n P4 = reinterpret(0x3FC2B000D4E4EDD7), // 0.145996192886612446982\n Ox1p54 = reinterpret(0x4350000000000000); // 0x1p54\n\n var u = reinterpret(x);\n var hx = (u >> 32) & 0x7FFFFFFF;\n if (hx >= 0x7FF00000) return x + x;\n if (hx < 0x00100000) {\n u = reinterpret(x * Ox1p54);\n hx = (u >> 32) & 0x7FFFFFFF;\n if (hx == 0) return x;\n hx = hx / 3 + B2;\n } else {\n hx = hx / 3 + B1;\n }\n u &= 1 << 63;\n u |= hx << 32;\n var t = reinterpret(u);\n var r = (t * t) * (t / x);\n t = t * ((P0 + r * (P1 + r * P2)) + ((r * r) * r) * (P3 + r * P4));\n t = reinterpret((reinterpret(t) + 0x80000000) & 0xFFFFFFFFC0000000);\n var s = t * t;\n r = x / s;\n r = (r - t) / (2 * t + r);\n t = t + t * r;\n return t;\n }\n\n // @ts-ignore: decorator\n @inline\n export function ceil(x: f64): f64 {\n return builtin_ceil(x);\n }\n\n export function clz32(x: f64): f64 {\n if (!isFinite(x)) return 32;\n /*\n * Wasm (MVP) and JS have different approaches for double->int conversions.\n *\n * For emulate JS conversion behavior and avoid trapping from wasm we should modulate by MAX_INT\n * our float-point arguments before actual convertion to integers.\n */\n return builtin_clz(dtoi32(x));\n }\n\n export function cos(x: f64): f64 { // see: musl/src/math/cos.c\n var u = reinterpret(x);\n var ux = u32(u >> 32);\n var sign = ux >> 31;\n\n ux &= 0x7FFFFFFF;\n\n // |x| ~< pi/4\n if (ux <= 0x3FE921FB) {\n if (ux < 0x3E46A09E) { // |x| < 2**-27 * sqrt(2)\n return 1.0;\n }\n return cos_kern(x, 0);\n }\n\n // sin(Inf or NaN) is NaN\n if (ux >= 0x7FF00000) return x - x;\n\n // argument reduction needed\n var n = rempio2(x, u, sign);\n var y0 = rempio2_y0;\n var y1 = rempio2_y1;\n\n x = n & 1 ? sin_kern(y0, y1, 1) : cos_kern(y0, y1);\n return (n + 1) & 2 ? -x : x;\n }\n\n export function cosh(x: f64): f64 { // see: musl/src/math/cosh.c\n var u = reinterpret(x);\n u &= 0x7FFFFFFFFFFFFFFF;\n x = reinterpret(u);\n var w = (u >> 32);\n var t: f64;\n if (w < 0x3FE62E42) {\n if (w < 0x3FF00000 - (26 << 20)) return 1;\n t = expm1(x);\n // return 1 + t * t / (2 * (1 + t));\n return 1 + t * t / (2 + 2 * t);\n }\n if (w < 0x40862E42) {\n t = exp(x);\n return 0.5 * (t + 1 / t);\n }\n t = expo2(x, 1);\n return t;\n }\n\n export function exp(x: f64): f64 { // see: musl/src/math/exp.c and SUN COPYRIGHT NOTICE above\n if (ASC_SHRINK_LEVEL < 1) {\n return exp_lut(x);\n } else {\n const\n ln2hi = reinterpret(0x3FE62E42FEE00000), // 6.93147180369123816490e-01\n ln2lo = reinterpret(0x3DEA39EF35793C76), // 1.90821492927058770002e-10\n invln2 = reinterpret(0x3FF71547652B82FE), // 1.44269504088896338700e+00\n P1 = reinterpret(0x3FC555555555553E), // 1.66666666666666019037e-01\n P2 = reinterpret(0xBF66C16C16BEBD93), // -2.77777777770155933842e-03\n P3 = reinterpret(0x3F11566AAF25DE2C), // 6.61375632143793436117e-05\n P4 = reinterpret(0xBEBBBD41C5D26BF1), // -1.65339022054652515390e-06\n P5 = reinterpret(0x3E66376972BEA4D0), // 4.13813679705723846039e-08\n overflow = reinterpret(0x40862E42FEFA39EF), // 709.782712893383973096\n underflow = reinterpret(0xC0874910D52D3051), // -745.13321910194110842\n Ox1p1023 = reinterpret(0x7FE0000000000000); // 0x1p1023\n\n let hx = u32(reinterpret(x) >> 32);\n let sign = hx >> 31;\n hx &= 0x7FFFFFFF;\n if (hx >= 0x4086232B) {\n if (isNaN(x)) return x;\n if (x > overflow) return x * Ox1p1023;\n if (x < underflow) return 0;\n }\n let hi: f64, lo: f64 = 0;\n let k = 0;\n if (hx > 0x3FD62E42) {\n if (hx >= 0x3FF0A2B2) {\n k = i32(invln2 * x + builtin_copysign(0.5, x));\n } else {\n k = 1 - (sign << 1);\n }\n hi = x - k * ln2hi;\n lo = k * ln2lo;\n x = hi - lo;\n } else if (hx > 0x3E300000) {\n hi = x;\n } else return 1.0 + x;\n let xs = x * x;\n // var c = x - xp2 * (P1 + xp2 * (P2 + xp2 * (P3 + xp2 * (P4 + xp2 * P5))));\n let xq = xs * xs;\n let c = x - (xs * P1 + xq * ((P2 + xs * P3) + xq * (P4 + xs * P5)));\n let y = 1.0 + (x * c / (2 - c) - lo + hi);\n return k == 0 ? y : scalbn(y, k);\n }\n }\n\n export function exp2(x: f64): f64 {\n return exp2_lut(x);\n }\n\n export function expm1(x: f64): f64 { // see: musl/src/math/expm1.c and SUN COPYRIGHT NOTICE above\n const\n o_threshold = reinterpret(0x40862E42FEFA39EF), // 7.09782712893383973096e+02\n ln2_hi = reinterpret(0x3FE62E42FEE00000), // 6.93147180369123816490e-01\n ln2_lo = reinterpret(0x3DEA39EF35793C76), // 1.90821492927058770002e-10\n invln2 = reinterpret(0x3FF71547652B82FE), // 1.44269504088896338700e+00\n Q1 = reinterpret(0xBFA11111111110F4), // -3.33333333333331316428e-02\n Q2 = reinterpret(0x3F5A01A019FE5585), // 1.58730158725481460165e-03\n Q3 = reinterpret(0xBF14CE199EAADBB7), // -7.93650757867487942473e-05\n Q4 = reinterpret(0x3ED0CFCA86E65239), // 4.00821782732936239552e-06\n Q5 = reinterpret(0xBE8AFDB76E09C32D), // -2.01099218183624371326e-07\n Ox1p1023 = reinterpret(0x7FE0000000000000); // 0x1p1023\n\n var u = reinterpret(x);\n var hx = u32(u >> 32) & 0x7FFFFFFF;\n var sign = u32(u >> 63);\n var k = 0;\n if (hx >= 0x4043687A) {\n if (isNaN(x)) return x;\n if (sign) return -1;\n if (x > o_threshold) return x * Ox1p1023;\n }\n var c = 0.0, t: f64;\n if (hx > 0x3FD62E42) {\n k = select(\n 1 - (sign << 1),\n i32(invln2 * x + builtin_copysign(0.5, x)),\n hx < 0x3FF0A2B2\n );\n t = k;\n let hi = x - t * ln2_hi;\n let lo = t * ln2_lo;\n x = hi - lo;\n c = (hi - x) - lo;\n } else if (hx < 0x3C900000) return x;\n var hfx = 0.5 * x;\n var hxs = x * hfx;\n // var r1 = 1.0 + hxs * (Q1 + hxs * (Q2 + hxs * (Q3 + hxs * (Q4 + hxs * Q5))));\n var hxq = hxs * hxs;\n var r1 = (1.0 + hxs * Q1) + hxq * ((Q2 + hxs * Q3) + hxq * (Q4 + hxs * Q5));\n t = 3.0 - r1 * hfx;\n var e = hxs * ((r1 - t) / (6.0 - x * t));\n if (k == 0) return x - (x * e - hxs);\n e = x * (e - c) - c;\n e -= hxs;\n if (k == -1) return 0.5 * (x - e) - 0.5;\n if (k == 1) {\n if (x < -0.25) return -2.0 * (e - (x + 0.5));\n return 1.0 + 2.0 * (x - e);\n }\n u = (0x3FF + k) << 52;\n var twopk = reinterpret(u);\n var y: f64;\n if (k < 0 || k > 56) {\n y = x - e + 1.0;\n if (k == 1024) y = y * 2.0 * Ox1p1023;\n else y = y * twopk;\n return y - 1.0;\n }\n u = (0x3FF - k) << 52;\n y = reinterpret(u);\n if (k < 20) y = (1 - y) - e;\n else y = 1 - (e + y);\n return (x + y) * twopk;\n }\n\n // @ts-ignore: decorator\n @inline\n export function floor(x: f64): f64 {\n return builtin_floor(x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function fround(x: f64): f64 {\n return x;\n }\n\n export function hypot(x: f64, y: f64): f64 { // see: musl/src/math/hypot.c\n const\n SPLIT = reinterpret(0x41A0000000000000) + 1, // 0x1p27 + 1\n Ox1p700 = reinterpret(0x6BB0000000000000),\n Ox1p_700 = reinterpret(0x1430000000000000);\n\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n ux &= 0x7FFFFFFFFFFFFFFF;\n uy &= 0x7FFFFFFFFFFFFFFF;\n if (ux < uy) {\n let ut = ux;\n ux = uy;\n uy = ut;\n }\n var ex = i32(ux >> 52);\n var ey = i32(uy >> 52);\n y = reinterpret(uy);\n if (ey == 0x7FF) return y;\n x = reinterpret(ux);\n if (ex == 0x7FF || uy == 0) return x;\n if (ex - ey > 64) return x + y;\n var z = 1.0;\n if (ex > 0x3FF + 510) {\n z = Ox1p700;\n x *= Ox1p_700;\n y *= Ox1p_700;\n } else if (ey < 0x3FF - 450) {\n z = Ox1p_700;\n x *= Ox1p700;\n y *= Ox1p700;\n }\n var c = x * SPLIT;\n var h = x - c + c;\n var l = x - h;\n var hx = x * x;\n var lx = h * h - hx + (2 * h + l) * l;\n c = y * SPLIT;\n h = y - c + c;\n l = y - h;\n var hy = y * y;\n var ly = h * h - hy + (2 * h + l) * l;\n return z * builtin_sqrt(ly + lx + hy + hx);\n }\n\n export function imul(x: f64, y: f64): f64 {\n /*\n * Wasm (MVP) and JS have different approaches for double->int conversions.\n *\n * For emulate JS conversion behavior and avoid trapping from wasm we should modulate by MAX_INT\n * our float-point arguments before actual convertion to integers.\n */\n if (!isFinite(x + y)) return 0;\n return dtoi32(x) * dtoi32(y);\n }\n\n export function log(x: f64): f64 { // see: musl/src/math/log.c and SUN COPYRIGHT NOTICE above\n if (ASC_SHRINK_LEVEL < 1) {\n return log_lut(x);\n } else {\n const\n ln2_hi = reinterpret(0x3FE62E42FEE00000), // 6.93147180369123816490e-01\n ln2_lo = reinterpret(0x3DEA39EF35793C76), // 1.90821492927058770002e-10\n Lg1 = reinterpret(0x3FE5555555555593), // 6.666666666666735130e-01\n Lg2 = reinterpret(0x3FD999999997FA04), // 3.999999999940941908e-01\n Lg3 = reinterpret(0x3FD2492494229359), // 2.857142874366239149e-01\n Lg4 = reinterpret(0x3FCC71C51D8E78AF), // 2.222219843214978396e-01\n Lg5 = reinterpret(0x3FC7466496CB03DE), // 1.818357216161805012e-01\n Lg6 = reinterpret(0x3FC39A09D078C69F), // 1.531383769920937332e-01\n Lg7 = reinterpret(0x3FC2F112DF3E5244), // 1.479819860511658591e-01\n Ox1p54 = reinterpret(0x4350000000000000); // 0x1p54\n\n let u = reinterpret(x);\n let hx = u32(u >> 32);\n let k = 0;\n let sign = hx >> 31;\n if (sign || hx < 0x00100000) {\n if (u << 1 == 0) return -1 / (x * x);\n if (sign) return (x - x) / 0.0;\n k -= 54;\n x *= Ox1p54;\n u = reinterpret(x);\n hx = u32(u >> 32);\n } else if (hx >= 0x7FF00000) {\n return x;\n } else if (hx == 0x3FF00000 && u << 32 == 0) {\n return 0;\n }\n hx += 0x3FF00000 - 0x3FE6A09E;\n k += (hx >> 20) - 0x3FF;\n hx = (hx & 0x000FFFFF) + 0x3FE6A09E;\n u = hx << 32 | (u & 0xFFFFFFFF);\n x = reinterpret(u);\n let f = x - 1.0;\n let hfsq = 0.5 * f * f;\n let s = f / (2.0 + f);\n let z = s * s;\n let w = z * z;\n let t1 = w * (Lg2 + w * (Lg4 + w * Lg6));\n let t2 = z * (Lg1 + w * (Lg3 + w * (Lg5 + w * Lg7)));\n let r = t2 + t1;\n let dk = k;\n return s * (hfsq + r) + dk * ln2_lo - hfsq + f + dk * ln2_hi;\n }\n }\n\n export function log10(x: f64): f64 { // see: musl/src/math/log10.c and SUN COPYRIGHT NOTICE above\n const\n ivln10hi = reinterpret(0x3FDBCB7B15200000), // 4.34294481878168880939e-01\n ivln10lo = reinterpret(0x3DBB9438CA9AADD5), // 2.50829467116452752298e-11\n log10_2hi = reinterpret(0x3FD34413509F6000), // 3.01029995663611771306e-01\n log10_2lo = reinterpret(0x3D59FEF311F12B36), // 3.69423907715893078616e-13\n Lg1 = reinterpret(0x3FE5555555555593), // 6.666666666666735130e-01\n Lg2 = reinterpret(0x3FD999999997FA04), // 3.999999999940941908e-01\n Lg3 = reinterpret(0x3FD2492494229359), // 2.857142874366239149e-01\n Lg4 = reinterpret(0x3FCC71C51D8E78AF), // 2.222219843214978396e-01\n Lg5 = reinterpret(0x3FC7466496CB03DE), // 1.818357216161805012e-01\n Lg6 = reinterpret(0x3FC39A09D078C69F), // 1.531383769920937332e-01\n Lg7 = reinterpret(0x3FC2F112DF3E5244), // 1.479819860511658591e-01\n Ox1p54 = reinterpret(0x4350000000000000); // 0x1p54\n\n var u = reinterpret(x);\n var hx = u32(u >> 32);\n var k = 0;\n var sign = hx >> 31;\n if (sign || hx < 0x00100000) {\n if (u << 1 == 0) return -1 / (x * x);\n if (sign) return (x - x) / 0.0;\n k -= 54;\n x *= Ox1p54;\n u = reinterpret(x);\n hx = u32(u >> 32);\n } else if (hx >= 0x7FF00000) {\n return x;\n } else if (hx == 0x3FF00000 && u << 32 == 0) {\n return 0;\n }\n hx += 0x3FF00000 - 0x3FE6A09E;\n k += i32(hx >> 20) - 0x3FF;\n hx = (hx & 0x000FFFFF) + 0x3FE6A09E;\n u = hx << 32 | (u & 0xFFFFFFFF);\n x = reinterpret(u);\n var f = x - 1.0;\n var hfsq = 0.5 * f * f;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * (Lg4 + w * Lg6));\n var t2 = z * (Lg1 + w * (Lg3 + w * (Lg5 + w * Lg7)));\n var r = t2 + t1;\n var hi = f - hfsq;\n u = reinterpret(hi);\n u &= 0xFFFFFFFF00000000;\n hi = reinterpret(u);\n var lo = f - hi - hfsq + s * (hfsq + r);\n var val_hi = hi * ivln10hi;\n var dk = k;\n var y = dk * log10_2hi;\n var val_lo = dk * log10_2lo + (lo + hi) * ivln10lo + lo * ivln10hi;\n w = y + val_hi;\n val_lo += (y - w) + val_hi;\n return val_lo + w;\n }\n\n export function log1p(x: f64): f64 { // see: musl/src/math/log1p.c and SUN COPYRIGHT NOTICE above\n const\n ln2_hi = reinterpret(0x3FE62E42FEE00000), // 6.93147180369123816490e-01\n ln2_lo = reinterpret(0x3DEA39EF35793C76), // 1.90821492927058770002e-10\n Lg1 = reinterpret(0x3FE5555555555593), // 6.666666666666735130e-01\n Lg2 = reinterpret(0x3FD999999997FA04), // 3.999999999940941908e-01\n Lg3 = reinterpret(0x3FD2492494229359), // 2.857142874366239149e-01\n Lg4 = reinterpret(0x3FCC71C51D8E78AF), // 2.222219843214978396e-01\n Lg5 = reinterpret(0x3FC7466496CB03DE), // 1.818357216161805012e-01\n Lg6 = reinterpret(0x3FC39A09D078C69F), // 1.531383769920937332e-01\n Lg7 = reinterpret(0x3FC2F112DF3E5244); // 1.479819860511658591e-01\n\n var u = reinterpret(x);\n var hx = u32(u >> 32);\n var k = 1;\n var c = 0.0, f = 0.0;\n if (hx < 0x3FDA827A || bool(hx >> 31)) {\n if (hx >= 0xBFF00000) {\n if (x == -1) return x / 0.0;\n return (x - x) / 0.0;\n }\n if (hx << 1 < 0x3CA00000 << 1) return x;\n if (hx <= 0xBFD2BEC4) {\n k = 0;\n c = 0;\n f = x;\n }\n } else if (hx >= 0x7FF00000) return x;\n if (k) {\n u = reinterpret(1 + x);\n let hu = u32(u >> 32);\n hu += 0x3FF00000 - 0x3FE6A09E;\n k = i32(hu >> 20) - 0x3FF;\n if (k < 54) {\n let uf = reinterpret(u);\n c = k >= 2 ? 1 - (uf - x) : x - (uf - 1);\n c /= uf;\n } else c = 0;\n hu = (hu & 0x000FFFFF) + 0x3FE6A09E;\n u = hu << 32 | (u & 0xFFFFFFFF);\n f = reinterpret(u) - 1;\n }\n var hfsq = 0.5 * f * f;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * (Lg4 + w * Lg6));\n var t2 = z * (Lg1 + w * (Lg3 + w * (Lg5 + w * Lg7)));\n var r = t2 + t1;\n var dk = k;\n return s * (hfsq + r) + (dk * ln2_lo + c) - hfsq + f + dk * ln2_hi;\n }\n\n export function log2(x: f64): f64 { // see: musl/src/math/log2.c and SUN COPYRIGHT NOTICE above\n if (ASC_SHRINK_LEVEL < 1) {\n return log2_lut(x);\n } else {\n const\n ivln2hi = reinterpret(0x3FF7154765200000), // 1.44269504072144627571e+00\n ivln2lo = reinterpret(0x3DE705FC2EEFA200), // 1.67517131648865118353e-10\n Lg1 = reinterpret(0x3FE5555555555593), // 6.666666666666735130e-01\n Lg2 = reinterpret(0x3FD999999997FA04), // 3.999999999940941908e-01\n Lg3 = reinterpret(0x3FD2492494229359), // 2.857142874366239149e-01\n Lg4 = reinterpret(0x3FCC71C51D8E78AF), // 2.222219843214978396e-01\n Lg5 = reinterpret(0x3FC7466496CB03DE), // 1.818357216161805012e-01\n Lg6 = reinterpret(0x3FC39A09D078C69F), // 1.531383769920937332e-01\n Lg7 = reinterpret(0x3FC2F112DF3E5244), // 1.479819860511658591e-01\n Ox1p54 = reinterpret(0x4350000000000000); // 1p54\n\n let u = reinterpret(x);\n let hx = u32(u >> 32);\n let k = 0;\n let sign = hx >> 31;\n if (sign || hx < 0x00100000) {\n if (u << 1 == 0) return -1 / (x * x);\n if (sign) return (x - x) / 0.0;\n k -= 54;\n x *= Ox1p54;\n u = reinterpret(x);\n hx = u32(u >> 32);\n } else if (hx >= 0x7FF00000) {\n return x;\n } else if (hx == 0x3FF00000 && u << 32 == 0) {\n return 0;\n }\n hx += 0x3FF00000 - 0x3FE6A09E;\n k += i32(hx >> 20) - 0x3FF;\n hx = (hx & 0x000FFFFF) + 0x3FE6A09E;\n u = hx << 32 | (u & 0xFFFFFFFF);\n x = reinterpret(u);\n let f = x - 1.0;\n let hfsq = 0.5 * f * f;\n let s = f / (2.0 + f);\n let z = s * s;\n let w = z * z;\n let t1 = w * (Lg2 + w * (Lg4 + w * Lg6));\n let t2 = z * (Lg1 + w * (Lg3 + w * (Lg5 + w * Lg7)));\n let r = t2 + t1;\n let hi = f - hfsq;\n u = reinterpret(hi);\n u &= 0xFFFFFFFF00000000;\n hi = reinterpret(u);\n let lo = f - hi - hfsq + s * (hfsq + r);\n let val_hi = hi * ivln2hi;\n let val_lo = (lo + hi) * ivln2lo + lo * ivln2hi;\n let y = k;\n w = y + val_hi;\n val_lo += (y - w) + val_hi;\n val_hi = w;\n return val_lo + val_hi;\n }\n }\n\n // @ts-ignore: decorator\n @inline\n export function max(value1: f64, value2: f64): f64 {\n return builtin_max(value1, value2);\n }\n\n // @ts-ignore: decorator\n @inline\n export function min(value1: f64, value2: f64): f64 {\n return builtin_min(value1, value2);\n }\n\n export function pow(x: f64, y: f64): f64 { // see: musl/src/math/pow.c and SUN COPYRIGHT NOTICE above\n // TODO: remove this fast pathes after introduced own mid-end IR with \"stdlib call simplify\" transforms\n if (builtin_abs(y) <= 2) {\n if (y == 2.0) return x * x;\n if (y == 0.5) {\n return select(\n builtin_abs(builtin_sqrt(x)),\n Infinity,\n x != -Infinity\n );\n }\n if (y == -1.0) return 1 / x;\n if (y == 1.0) return x;\n if (y == 0.0) return 1.0;\n }\n if (ASC_SHRINK_LEVEL < 1) {\n return pow_lut(x, y);\n } else {\n const\n dp_h1 = reinterpret(0x3FE2B80340000000), // 5.84962487220764160156e-01\n dp_l1 = reinterpret(0x3E4CFDEB43CFD006), // 1.35003920212974897128e-08\n two53 = reinterpret(0x4340000000000000), // 9007199254740992.0\n huge = reinterpret(0x7E37E43C8800759C), // 1e+300\n tiny = reinterpret(0x01A56E1FC2F8F359), // 1e-300\n L1 = reinterpret(0x3FE3333333333303), // 5.99999999999994648725e-01\n L2 = reinterpret(0x3FDB6DB6DB6FABFF), // 4.28571428578550184252e-01\n L3 = reinterpret(0x3FD55555518F264D), // 3.33333329818377432918e-01\n L4 = reinterpret(0x3FD17460A91D4101), // 2.72728123808534006489e-01\n L5 = reinterpret(0x3FCD864A93C9DB65), // 2.30660745775561754067e-01\n L6 = reinterpret(0x3FCA7E284A454EEF), // 2.06975017800338417784e-01\n P1 = reinterpret(0x3FC555555555553E), // 1.66666666666666019037e-01\n P2 = reinterpret(0xBF66C16C16BEBD93), // -2.77777777770155933842e-03\n P3 = reinterpret(0x3F11566AAF25DE2C), // 6.61375632143793436117e-05\n P4 = reinterpret(0xBEBBBD41C5D26BF1), // -1.65339022054652515390e-06\n P5 = reinterpret(0x3E66376972BEA4D0), // 4.13813679705723846039e-08\n lg2 = reinterpret(0x3FE62E42FEFA39EF), // 6.93147180559945286227e-01\n lg2_h = reinterpret(0x3FE62E4300000000), // 6.93147182464599609375e-01\n lg2_l = reinterpret(0xBE205C610CA86C39), // -1.90465429995776804525e-09\n ovt = reinterpret(0x3C971547652B82FE), // 8.0085662595372944372e-017\n cp = reinterpret(0x3FEEC709DC3A03FD), // 9.61796693925975554329e-01\n cp_h = reinterpret(0x3FEEC709E0000000), // 9.61796700954437255859e-01\n cp_l = reinterpret(0xBE3E2FE0145B01F5), // -7.02846165095275826516e-09\n ivln2 = reinterpret(0x3FF71547652B82FE), // 1.44269504088896338700e+00\n ivln2_h = reinterpret(0x3FF7154760000000), // 1.44269502162933349609e+00\n ivln2_l = reinterpret(0x3E54AE0BF85DDF44), // 1.92596299112661746887e-08\n inv3 = reinterpret(0x3FD5555555555555); // 0.3333333333333333333333\n\n let u_ = reinterpret(x);\n let hx = i32(u_ >> 32);\n let lx = u_;\n u_ = reinterpret(y);\n let hy = i32(u_ >> 32);\n let ly = u_;\n let ix = hx & 0x7FFFFFFF;\n let iy = hy & 0x7FFFFFFF;\n if ((iy | ly) == 0) return 1.0; // x**0 = 1, even if x is NaN\n // if (hx == 0x3FF00000 && lx == 0) return 1.0; // C: 1**y = 1, even if y is NaN, JS: NaN\n if ( // NaN if either arg is NaN\n ix > 0x7FF00000 || (ix == 0x7FF00000 && lx != 0) ||\n iy > 0x7FF00000 || (iy == 0x7FF00000 && ly != 0)\n ) return x + y;\n let yisint = 0, k: i32;\n if (hx < 0) {\n if (iy >= 0x43400000) yisint = 2;\n else if (iy >= 0x3FF00000) {\n k = (iy >> 20) - 0x3FF;\n let offset = select(52, 20, k > 20) - k;\n let Ly = select(ly, iy, k > 20);\n let jj = Ly >> offset;\n if ((jj << offset) == Ly) yisint = 2 - (jj & 1);\n }\n }\n if (ly == 0) {\n if (iy == 0x7FF00000) { // y is +-inf\n if (((ix - 0x3FF00000) | lx) == 0) return NaN; // C: (-1)**+-inf is 1, JS: NaN\n else if (ix >= 0x3FF00000) return hy >= 0 ? y : 0.0; // (|x|>1)**+-inf = inf,0\n else return hy >= 0 ? 0.0 : -y; // (|x|<1)**+-inf = 0,inf\n }\n if (iy == 0x3FF00000) {\n if (hy >= 0) return x;\n return 1 / x;\n }\n if (hy == 0x40000000) return x * x;\n if (hy == 0x3FE00000) {\n if (hx >= 0) return builtin_sqrt(x);\n }\n }\n let ax = builtin_abs(x), z: f64;\n if (lx == 0) {\n if (ix == 0 || ix == 0x7FF00000 || ix == 0x3FF00000) {\n z = ax;\n if (hy < 0) z = 1.0 / z;\n if (hx < 0) {\n if (((ix - 0x3FF00000) | yisint) == 0) {\n let d = z - z;\n z = d / d;\n } else if (yisint == 1) z = -z;\n }\n return z;\n }\n }\n let s = 1.0;\n if (hx < 0) {\n if (yisint == 0) {\n let d = x - x;\n return d / d;\n }\n if (yisint == 1) s = -1.0;\n }\n let t1: f64, t2: f64, p_h: f64, p_l: f64, r: f64, t: f64, u: f64, v: f64, w: f64;\n let j: i32, n: i32;\n if (iy > 0x41E00000) {\n if (iy > 0x43F00000) {\n if (ix <= 0x3FEFFFFF) return hy < 0 ? huge * huge : tiny * tiny;\n if (ix >= 0x3FF00000) return hy > 0 ? huge * huge : tiny * tiny;\n }\n if (ix < 0x3FEFFFFF) return hy < 0 ? s * huge * huge : s * tiny * tiny;\n if (ix > 0x3FF00000) return hy > 0 ? s * huge * huge : s * tiny * tiny;\n t = ax - 1.0;\n w = (t * t) * (0.5 - t * (inv3 - t * 0.25));\n u = ivln2_h * t;\n v = t * ivln2_l - w * ivln2;\n t1 = u + v;\n t1 = reinterpret(reinterpret(t1) & 0xFFFFFFFF00000000);\n t2 = v - (t1 - u);\n } else {\n let ss: f64, s2: f64, s_h: f64, s_l: f64, t_h: f64, t_l: f64;\n n = 0;\n if (ix < 0x00100000) {\n ax *= two53;\n n -= 53;\n ix = (reinterpret(ax) >> 32);\n }\n n += (ix >> 20) - 0x3FF;\n j = ix & 0x000FFFFF;\n ix = j | 0x3FF00000;\n if (j <= 0x3988E) k = 0;\n else if (j < 0xBB67A) k = 1;\n else {\n k = 0;\n n += 1;\n ix -= 0x00100000;\n }\n ax = reinterpret(reinterpret(ax) & 0xFFFFFFFF | (ix << 32));\n let bp = select(1.5, 1.0, k); // k ? 1.5 : 1.0\n u = ax - bp;\n v = 1.0 / (ax + bp);\n ss = u * v;\n s_h = ss;\n s_h = reinterpret(reinterpret(s_h) & 0xFFFFFFFF00000000);\n t_h = reinterpret(u64(((ix >> 1) | 0x20000000) + 0x00080000 + (k << 18)) << 32);\n t_l = ax - (t_h - bp);\n s_l = v * ((u - s_h * t_h) - s_h * t_l);\n s2 = ss * ss;\n r = s2 * s2 * (L1 + s2 * (L2 + s2 * (L3 + s2 * (L4 + s2 * (L5 + s2 * L6)))));\n r += s_l * (s_h + ss);\n s2 = s_h * s_h;\n t_h = 3.0 + s2 + r;\n t_h = reinterpret(reinterpret(t_h) & 0xFFFFFFFF00000000);\n t_l = r - ((t_h - 3.0) - s2);\n u = s_h * t_h;\n v = s_l * t_h + t_l * ss;\n p_h = u + v;\n p_h = reinterpret(reinterpret(p_h) & 0xFFFFFFFF00000000);\n p_l = v - (p_h - u);\n let z_h = cp_h * p_h;\n let dp_l = select(dp_l1, 0.0, k);\n let z_l = cp_l * p_h + p_l * cp + dp_l;\n t = n;\n let dp_h = select(dp_h1, 0.0, k);\n t1 = ((z_h + z_l) + dp_h) + t;\n t1 = reinterpret(reinterpret(t1) & 0xFFFFFFFF00000000);\n t2 = z_l - (((t1 - t) - dp_h) - z_h);\n }\n let y1 = y;\n y1 = reinterpret(reinterpret(y1) & 0xFFFFFFFF00000000);\n p_l = (y - y1) * t1 + y * t2;\n p_h = y1 * t1;\n z = p_l + p_h;\n u_ = reinterpret(z);\n j = u32(u_ >> 32);\n let i = u_;\n if (j >= 0x40900000) {\n if (((j - 0x40900000) | i) != 0) return s * huge * huge;\n if (p_l + ovt > z - p_h) return s * huge * huge;\n } else if ((j & 0x7FFFFFFF) >= 0x4090CC00) {\n if (((j - 0xC090CC00) | i) != 0) return s * tiny * tiny;\n if (p_l <= z - p_h) return s * tiny * tiny;\n }\n i = j & 0x7FFFFFFF;\n k = (i >> 20) - 0x3FF;\n n = 0;\n if (i > 0x3FE00000) {\n n = j + (0x00100000 >> (k + 1));\n k = ((n & 0x7FFFFFFF) >> 20) - 0x3FF;\n t = 0.0;\n t = reinterpret(u64(n & ~(0x000FFFFF >> k)) << 32);\n n = ((n & 0x000FFFFF) | 0x00100000) >> (20 - k);\n if (j < 0) n = -n;\n p_h -= t;\n }\n t = p_l + p_h;\n t = reinterpret(reinterpret(t) & 0xFFFFFFFF00000000);\n u = t * lg2_h;\n v = (p_l - (t - p_h)) * lg2 + t * lg2_l;\n z = u + v;\n w = v - (z - u);\n t = z * z;\n t1 = z - t * (P1 + t * (P2 + t * (P3 + t * (P4 + t * P5))));\n r = (z * t1) / (t1 - 2.0) - (w + z * w);\n z = 1.0 - (r - z);\n j = u32(reinterpret(z) >> 32);\n j += n << 20;\n if ((j >> 20) <= 0) z = scalbn(z, n);\n else z = reinterpret(reinterpret(z) & 0xFFFFFFFF | (j << 32));\n return s * z;\n }\n }\n\n export function seedRandom(value: i64): void {\n // Instead zero seed use golden ratio:\n // phi = (1 + sqrt(5)) / 2\n // trunc(2^64 / phi) = 0x9e3779b97f4a7c15\n if (value == 0) value = 0x9e3779b97f4a7c15;\n random_state0_64 = murmurHash3(value);\n random_state1_64 = murmurHash3(~random_state0_64);\n random_state0_32 = splitMix32(value);\n random_state1_32 = splitMix32(random_state0_32);\n random_seeded = true;\n }\n\n export function random(): f64 { // see: v8/src/base/utils/random-number-generator.cc\n if (!random_seeded) seedRandom(reinterpret(seed()));\n var s1 = random_state0_64;\n var s0 = random_state1_64;\n random_state0_64 = s0;\n s1 ^= s1 << 23;\n s1 ^= s1 >> 17;\n s1 ^= s0;\n s1 ^= s0 >> 26;\n random_state1_64 = s1;\n var r = (s0 >> 12) | 0x3FF0000000000000;\n return reinterpret(r) - 1;\n }\n\n export function round(x: f64): f64 {\n if (ASC_SHRINK_LEVEL > 0) {\n return builtin_ceil(x) - f64(builtin_ceil(x) - 0.5 > x);\n } else {\n let roundUp = builtin_ceil(x);\n return select(roundUp, roundUp - 1.0, roundUp - 0.5 <= x);\n }\n }\n\n export function sign(x: f64): f64 {\n if (ASC_SHRINK_LEVEL > 0) {\n return select(builtin_copysign(1, x), x, builtin_abs(x) > 0);\n } else {\n return select(1, select(-1, x, x < 0), x > 0);\n }\n }\n\n // @ts-ignore: decorator\n @inline\n export function signbit(x: f64): bool {\n return bool(reinterpret(x) >>> 63);\n }\n\n export function sin(x: f64): f64 { // see: musl/src/math/sin.c\n var u = reinterpret(x);\n var ux = u32(u >> 32);\n var sign = ux >> 31;\n\n ux &= 0x7FFFFFFF;\n\n // |x| ~< pi/4\n if (ux <= 0x3FE921FB) {\n if (ux < 0x3E500000) { // |x| < 2**-26\n return x;\n }\n return sin_kern(x, 0.0, 0);\n }\n\n // sin(Inf or NaN) is NaN\n if (ux >= 0x7FF00000) return x - x;\n\n // argument reduction needed\n var n = rempio2(x, u, sign);\n var y0 = rempio2_y0;\n var y1 = rempio2_y1;\n\n x = n & 1 ? cos_kern(y0, y1) : sin_kern(y0, y1, 1);\n return n & 2 ? -x : x;\n }\n\n export function sinh(x: f64): f64 { // see: musl/src/math/sinh.c\n var u = reinterpret(x) & 0x7FFFFFFFFFFFFFFF;\n var a = reinterpret(u);\n var w = u32(u >> 32);\n var h = builtin_copysign(0.5, x);\n if (w < 0x40862E42) {\n let t = expm1(a);\n if (w < 0x3FF00000) {\n if (w < 0x3FF00000 - (26 << 20)) return x;\n return h * (2 * t - t * t / (t + 1));\n }\n return h * (t + t / (t + 1));\n }\n return expo2(a, 2 * h);\n }\n\n // @ts-ignore: decorator\n @inline\n export function sqrt(x: f64): f64 {\n return builtin_sqrt(x);\n }\n\n export function tan(x: f64): f64 { // see: musl/src/math/tan.c\n var u = reinterpret(x);\n var ux = u32(u >> 32);\n var sign = ux >>> 31;\n\n ux &= 0x7FFFFFFF;\n\n // |x| ~< pi/4\n if (ux <= 0x3FE921FB) {\n if (ux < 0x3E400000) { // |x| < 2**-27\n return x;\n }\n return tan_kern(x, 0.0, 1);\n }\n\n // tan(Inf or NaN) is NaN\n if (ux >= 0x7FF00000) return x - x;\n\n var n = rempio2(x, u, sign);\n return tan_kern(rempio2_y0, rempio2_y1, 1 - ((n & 1) << 1));\n }\n\n export function tanh(x: f64): f64 { // see: musl/src/math/tanh.c\n var u = reinterpret(x);\n u &= 0x7FFFFFFFFFFFFFFF;\n var y = reinterpret(u);\n var w = u32(u >> 32);\n var t: f64;\n if (w > 0x3FE193EA) {\n if (w > 0x40340000) {\n t = 1 - 0 / y;\n } else {\n t = expm1(2 * y);\n t = 1 - 2 / (t + 2);\n }\n } else if (w > 0x3FD058AE) {\n t = expm1(2 * y);\n t = t / (t + 2);\n } else if (w >= 0x00100000) {\n t = expm1(-2 * y);\n t = -t / (t + 2);\n } else t = y;\n return builtin_copysign(t, x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function trunc(x: f64): f64 {\n return builtin_trunc(x);\n }\n\n export function scalbn(x: f64, n: i32): f64 { // see: https://git.musl-libc.org/cgit/musl/tree/src/math/scalbn.c\n const\n Ox1p53 = reinterpret(0x4340000000000000),\n Ox1p1023 = reinterpret(0x7FE0000000000000),\n Ox1p_1022 = reinterpret(0x0010000000000000);\n\n var y = x;\n if (n > 1023) {\n y *= Ox1p1023;\n n -= 1023;\n if (n > 1023) {\n y *= Ox1p1023;\n n = builtin_min(n - 1023, 1023);\n }\n } else if (n < -1022) {\n // make sure final n < -53 to avoid double\n // rounding in the subnormal range\n y *= Ox1p_1022 * Ox1p53;\n n += 1022 - 53;\n if (n < -1022) {\n y *= Ox1p_1022 * Ox1p53;\n n = builtin_max(n + 1022 - 53, -1022);\n }\n }\n return y * reinterpret((0x3FF + n) << 52);\n }\n\n export function mod(x: f64, y: f64): f64 { // see: musl/src/math/fmod.c\n if (builtin_abs(y) == 1.0) {\n // x % 1, x % -1 ==> sign(x) * abs(x - 1.0 * trunc(x / 1.0))\n // TODO: move this rule to compiler's optimization pass.\n // It could be apply for any x % C_pot, where \"C_pot\" is pow of two const.\n return builtin_copysign(x - builtin_trunc(x), x);\n }\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n var ex = i64(ux >> 52 & 0x7FF);\n var ey = i64(uy >> 52 & 0x7FF);\n var sx = ux >> 63;\n var uy1 = uy << 1;\n if (uy1 == 0 || ex == 0x7FF || isNaN(y)) {\n let m = x * y;\n return m / m;\n }\n var ux1 = ux << 1;\n if (ux1 <= uy1) {\n return x * f64(ux1 != uy1);\n }\n if (!ex) {\n ex -= builtin_clz(ux << 12);\n ux <<= 1 - ex;\n } else {\n ux &= u64(-1) >> 12;\n ux |= 1 << 52;\n }\n if (!ey) {\n ey -= builtin_clz(uy << 12);\n uy <<= 1 - ey;\n } else {\n uy &= u64(-1) >> 12;\n uy |= 1 << 52;\n }\n while (ex > ey) {\n if (ux >= uy) {\n if (ux == uy) return 0 * x;\n ux -= uy;\n }\n ux <<= 1;\n --ex;\n }\n if (ux >= uy) {\n if (ux == uy) return 0 * x;\n ux -= uy;\n }\n // for (; !(ux >> 52); ux <<= 1) --ex;\n var shift = builtin_clz(ux << 11);\n ex -= shift;\n ux <<= shift;\n if (ex > 0) {\n ux -= 1 << 52;\n ux |= ex << 52;\n } else {\n ux >>= -ex + 1;\n }\n return reinterpret(ux | (sx << 63));\n }\n\n export function rem(x: f64, y: f64): f64 { // see: musl/src/math/remquo.c\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n var ex = i64(ux >> 52 & 0x7FF);\n var ey = i64(uy >> 52 & 0x7FF);\n if (uy << 1 == 0 || ex == 0x7FF || isNaN(y)) {\n let m = x * y;\n return m / m;\n }\n if (ux << 1 == 0) return x;\n var uxi = ux;\n if (!ex) {\n ex -= builtin_clz(uxi << 12);\n uxi <<= 1 - ex;\n } else {\n uxi &= u64(-1) >> 12;\n uxi |= 1 << 52;\n }\n if (!ey) {\n ey -= builtin_clz(uy << 12);\n uy <<= 1 - ey;\n } else {\n uy &= u64(-1) >> 12;\n uy |= 1 << 52;\n }\n var q: u32 = 0;\n do {\n if (ex < ey) {\n if (ex + 1 == ey) break; // goto end\n return x;\n }\n while (ex > ey) {\n if (uxi >= uy) {\n uxi -= uy;\n ++q;\n }\n uxi <<= 1;\n q <<= 1;\n --ex;\n }\n if (uxi >= uy) {\n uxi -= uy;\n ++q;\n }\n if (uxi == 0) ex = -60;\n else {\n let shift = builtin_clz(uxi << 11);\n ex -= shift;\n uxi <<= shift;\n }\n break;\n } while (false);\n // end:\n if (ex > 0) {\n uxi -= 1 << 52;\n uxi |= ex << 52;\n } else {\n uxi >>= -ex + 1;\n }\n x = reinterpret(uxi);\n y = builtin_abs(y);\n var x2 = x + x;\n if (ex == ey || (ex + 1 == ey && (x2 > y || (x2 == y && (q & 1))))) {\n x -= y;\n // ++q;\n }\n return ux < 0 ? -x : x;\n }\n\n export function sincos(x: f64): void { // see: musl/tree/src/math/sincos.c\n var u = reinterpret(x);\n var ux = u32(u >> 32);\n var sign = ux >> 31;\n ux &= 0x7FFFFFFF;\n\n if (ux <= 0x3FE921FB) { // |x| ~<= π/4\n if (ux < 0x3E46A09E) { // if |x| < 2**-27 * sqrt(2)\n sincos_sin = x;\n sincos_cos = 1;\n return;\n }\n sincos_sin = sin_kern(x, 0, 0);\n sincos_cos = cos_kern(x, 0);\n return;\n }\n // sin(Inf or NaN) is NaN\n if (ux >= 0x7F800000) {\n let xx = x - x;\n sincos_sin = xx;\n sincos_cos = xx;\n return;\n }\n // general argument reduction needed\n var n = rempio2(x, u, sign);\n var y0 = rempio2_y0;\n var y1 = rempio2_y1;\n var s = sin_kern(y0, y1, 1);\n var c = cos_kern(y0, y1);\n var sin = s, cos = c;\n if (n & 1) {\n sin = c;\n cos = -s;\n }\n if (n & 2) {\n sin = -sin;\n cos = -cos;\n }\n sincos_sin = sin;\n sincos_cos = cos;\n }\n}\n\n// @ts-ignore: decorator\n@lazy var rempio2f_y: f64;\n\n// @ts-ignore: decorator\n@lazy @inline const PIO2F_TABLE = memory.data([\n 0xA2F9836E4E441529,\n 0xFC2757D1F534DDC0,\n 0xDB6295993C439041,\n 0xFE5163ABDEBBC561\n]);\n\nfunction Rf(z: f32): f32 { // Rational approximation of (asin(x)-x)/x^3\n const // see: musl/src/math/asinf.c and SUN COPYRIGHT NOTICE above\n pS0 = reinterpret(0x3E2AAA75), // 1.6666586697e-01f\n pS1 = reinterpret(0xBD2F13BA), // -4.2743422091e-02f\n pS2 = reinterpret(0xBC0DD36B), // -8.6563630030e-03f\n qS1 = reinterpret(0xBF34E5AE); // -7.0662963390e-01f\n\n var p = z * (pS0 + z * (pS1 + z * pS2));\n var q: f32 = 1 + z * qS1;\n return p / q;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction expo2f(x: f32, sign: f32): f32 { // exp(x)/2 for x >= log(DBL_MAX)\n const // see: musl/src/math/__expo2f.c\n k = 235,\n kln2 = reinterpret(0x4322E3BC); // 0x1.45c778p+7f\n var scale = reinterpret(u32(0x7F + (k >> 1)) << 23);\n // in directed rounding correct sign before rounding or overflow is important\n return NativeMathf.exp(x - kln2) * (sign * scale) * scale;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction pio2f_large_quot(x: f32, u: i32): i32 { // see: jdh8/metallic/blob/master/src/math/float/rem_pio2f.c\n const coeff = reinterpret(0x3BF921FB54442D18); // π * 0x1p-65 = 8.51530395021638647334e-20\n\n var offset = (u >> 23) - 152;\n var shift = u64(offset & 63);\n var tblPtr = PIO2F_TABLE + (offset >> 6 << 3);\n\n var b0 = load(tblPtr, 0 << 3);\n var b1 = load(tblPtr, 1 << 3);\n var lo: u64;\n\n if (shift > 32) {\n let b2 = load(tblPtr, 2 << 3);\n lo = b2 >> (96 - shift);\n lo |= b1 << (shift - 32);\n } else {\n lo = b1 >> (32 - shift);\n }\n\n var hi = (b1 >> (64 - shift)) | (b0 << shift);\n var mantissa: u64 = (u & 0x007FFFFF) | 0x00800000;\n var product = mantissa * hi + (mantissa * lo >> 32);\n var r: i64 = product << 2;\n var q = i32((product >> 62) + (r >>> 63));\n rempio2f_y = copysign(coeff, x) * r;\n return q;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction rempio2f(x: f32, u: u32, sign: i32): i32 { // see: jdh8/metallic/blob/master/src/math/float/rem_pio2f.c\n const\n pi2hi = reinterpret(0x3FF921FB50000000), // 1.57079631090164184570\n pi2lo = reinterpret(0x3E5110B4611A6263), // 1.58932547735281966916e-8\n _2_pi = reinterpret(0x3FE45F306DC9C883); // 0.63661977236758134308\n\n if (u < 0x4DC90FDB) { // π * 0x1p28\n let q = nearest(x * _2_pi);\n rempio2f_y = x - q * pi2hi - q * pi2lo;\n return q;\n }\n\n var q = pio2f_large_quot(x, u);\n return select(-q, q, sign);\n}\n\n// |sin(x)/x - s(x)| < 2**-37.5 (~[-4.89e-12, 4.824e-12]).\n// @ts-ignore: decorator\n@inline\nfunction sin_kernf(x: f64): f32 { // see: musl/tree/src/math/__sindf.c\n const\n S1 = reinterpret(0xBFC5555554CBAC77), // -0x15555554cbac77.0p-55\n S2 = reinterpret(0x3F811110896EFBB2), // 0x111110896efbb2.0p-59\n S3 = reinterpret(0xBF2A00F9E2CAE774), // -0x1a00f9e2cae774.0p-65\n S4 = reinterpret(0x3EC6CD878C3B46A7); // 0x16cd878c3b46a7.0p-71\n\n var z = x * x;\n var w = z * z;\n var r = S3 + z * S4;\n var s = z * x;\n return f32((x + s * (S1 + z * S2)) + s * w * r);\n}\n\n// |cos(x) - c(x)| < 2**-34.1 (~[-5.37e-11, 5.295e-11]).\n// @ts-ignore: decorator\n@inline\nfunction cos_kernf(x: f64): f32 { // see: musl/tree/src/math/__cosdf.c\n const\n C0 = reinterpret(0xBFDFFFFFFD0C5E81), // -0x1ffffffd0c5e81.0p-54\n C1 = reinterpret(0x3FA55553E1053A42), // 0x155553e1053a42.0p-57\n C2 = reinterpret(0xBF56C087E80F1E27), // -0x16c087e80f1e27.0p-62\n C3 = reinterpret(0x3EF99342E0EE5069); // 0x199342e0ee5069.0p-68\n\n var z = x * x;\n var w = z * z;\n var r = C2 + z * C3;\n return f32(((1 + z * C0) + w * C1) + (w * z) * r);\n}\n\n// |tan(x)/x - t(x)| < 2**-25.5 (~[-2e-08, 2e-08]).\n// @ts-ignore: decorator\n@inline\nfunction tan_kernf(x: f64, odd: i32): f32 { // see: musl/tree/src/math/__tandf.c\n const\n T0 = reinterpret(0x3FD5554D3418C99F), // 0x15554d3418c99f.0p-54\n T1 = reinterpret(0x3FC112FD38999F72), // 0x1112fd38999f72.0p-55\n T2 = reinterpret(0x3FAB54C91D865AFE), // 0x1b54c91d865afe.0p-57\n T3 = reinterpret(0x3F991DF3908C33CE), // 0x191df3908c33ce.0p-58\n T4 = reinterpret(0x3F685DADFCECF44E), // 0x185dadfcecf44e.0p-61\n T5 = reinterpret(0x3F8362B9BF971BCD); // 0x1362b9bf971bcd.0p-59\n\n var z = x * x;\n var r = T4 + z * T5;\n var t = T2 + z * T3;\n var w = z * z;\n var s = z * x;\n var u = T0 + z * T1;\n\n r = (x + s * u) + (s * w) * (t + w * r);\n return f32(odd ? -1 / r : r);\n}\n\n// See: jdh8/metallic/src/math/float/log2f.c and jdh8/metallic/src/math/float/kernel/atanh.h\n// @ts-ignore: decorator\n@inline\nfunction log2f(x: f64): f64 {\n const\n log2e = reinterpret(0x3FF71547652B82FE), // 1.44269504088896340736\n c0 = reinterpret(0x3FD555554FD9CAEF), // 0.33333332822728226129\n c1 = reinterpret(0x3FC999A7A8AF4132), // 0.20000167595436263505\n c2 = reinterpret(0x3FC2438D79437030), // 0.14268654271188685375\n c3 = reinterpret(0x3FBE2F663B001C97); // 0.11791075649681414150\n\n var i = reinterpret(x);\n var exponent = (i - 0x3FE6A09E667F3BCD) >> 52;\n x = reinterpret(i - (exponent << 52));\n x = (x - 1) / (x + 1);\n var xx = x * x;\n var y = x + x * xx * (c0 + c1 * xx + (c2 + c3 * xx) * (xx * xx));\n return (2 * log2e) * y + exponent;\n}\n\n// See: jdh8/metallic/src/math/float/exp2f.h and jdh8/metallic/blob/master/src/math/float/kernel/exp2f.h\n// @ts-ignore: decorator\n@inline\nfunction exp2f(x: f64): f64 {\n const\n c0 = reinterpret(0x3FE62E4302FCC24A), // 6.931471880289532425e-1\n c1 = reinterpret(0x3FCEBFBE07D97B91), // 2.402265108421173406e-1\n c2 = reinterpret(0x3FAC6AF6CCFC1A65), // 5.550357105498874537e-2\n c3 = reinterpret(0x3F83B29E3CE9AEF6), // 9.618030771171497658e-3\n c4 = reinterpret(0x3F55F0896145A89F), // 1.339086685300950937e-3\n c5 = reinterpret(0x3F2446C81E384864); // 1.546973499989028719e-4\n\n if (x < -1022) return 0;\n if (x >= 1024) return Infinity;\n\n var n = nearest(x);\n x -= n;\n var xx = x * x;\n var y = 1 + x * (c0 + c1 * x + (c2 + c3 * x) * xx + (c4 + c5 * x) * (xx * xx));\n return reinterpret(reinterpret(y) + (n << 52));\n}\n\nexport namespace NativeMathf {\n\n // @ts-ignore: decorator\n @lazy\n export const E = NativeMath.E;\n\n // @ts-ignore: decorator\n @lazy\n export const LN2 = NativeMath.LN2;\n\n // @ts-ignore: decorator\n @lazy\n export const LN10 = NativeMath.LN10;\n\n // @ts-ignore: decorator\n @lazy\n export const LOG2E = NativeMath.LOG2E;\n\n // @ts-ignore: decorator\n @lazy\n export const LOG10E = NativeMath.LOG10E;\n\n // @ts-ignore: decorator\n @lazy\n export const PI = NativeMath.PI;\n\n // @ts-ignore: decorator\n @lazy\n export const SQRT1_2 = NativeMath.SQRT1_2;\n\n // @ts-ignore: decorator\n @lazy\n export const SQRT2 = NativeMath.SQRT2;\n\n // @ts-ignore: decorator\n @lazy\n export var sincos_sin: f32 = 0;\n\n // @ts-ignore: decorator\n @lazy\n export var sincos_cos: f32 = 0;\n\n // @ts-ignore: decorator\n @inline\n export function abs(x: f32): f32 {\n return builtin_abs(x);\n }\n\n export function acos(x: f32): f32 { // see: musl/src/math/acosf.c and SUN COPYRIGHT NOTICE above\n const\n pio2_hi = reinterpret(0x3FC90FDA), // 1.5707962513e+00f\n pio2_lo = reinterpret(0x33A22168), // 7.5497894159e-08f\n Ox1p_120f = reinterpret(0x03800000); // 0x1p-120f\n\n var hx = reinterpret(x);\n var ix = hx & 0x7FFFFFFF;\n if (ix >= 0x3F800000) {\n if (ix == 0x3F800000) {\n return select(2 * pio2_hi + Ox1p_120f, 0, hx < 0);\n }\n return 0 / (x - x);\n }\n if (ix < 0x3F000000) {\n if (ix <= 0x32800000) return pio2_hi + Ox1p_120f;\n return pio2_hi - (x - (pio2_lo - x * Rf(x * x)));\n }\n var z: f32, w: f32, s: f32;\n if (hx < 0) {\n // z = (1 + x) * 0.5;\n z = 0.5 + x * 0.5;\n s = builtin_sqrt(z);\n w = Rf(z) * s - pio2_lo;\n return 2 * (pio2_hi - (s + w));\n }\n // z = (1 - x) * 0.5;\n z = 0.5 - x * 0.5;\n s = builtin_sqrt(z);\n hx = reinterpret(s);\n var df = reinterpret(hx & 0xFFFFF000);\n var c = (z - df * df) / (s + df);\n w = Rf(z) * s + c;\n return 2 * (df + w);\n }\n\n export function acosh(x: f32): f32 { // see: musl/src/math/acoshf.c\n const s = reinterpret(0x3F317218); // 0.693147180559945309417232121458176568f\n var u = reinterpret(x);\n var a = u & 0x7FFFFFFF;\n if (a < 0x3F800000 + (1 << 23)) { // |x| < 2, invalid if x < 1\n let xm1 = x - 1;\n return log1p(xm1 + builtin_sqrt(xm1 * (xm1 + 2)));\n }\n if (u < 0x3F800000 + (12 << 23)) { // 2 <= x < 0x1p12\n return log(2 * x - 1 / (x + builtin_sqrt(x * x - 1)));\n }\n // x >= 0x1p12 or x <= -2 or NaN\n return log(x) + s;\n }\n\n export function asin(x: f32): f32 { // see: musl/src/math/asinf.c and SUN COPYRIGHT NOTICE above\n const\n pio2 = reinterpret(0x3FC90FDB), // 1.570796326794896558e+00f\n Ox1p_120f = reinterpret(0x03800000); // 0x1p-120f\n\n var sx = x;\n var hx = reinterpret(x) & 0x7FFFFFFF;\n if (hx >= 0x3F800000) {\n if (hx == 0x3F800000) return x * pio2 + Ox1p_120f;\n return 0 / (x - x);\n }\n if (hx < 0x3F000000) {\n if (hx < 0x39800000 && hx >= 0x00800000) return x;\n return x + x * Rf(x * x);\n }\n // var z: f32 = (1 - builtin_abs(x)) * 0.5;\n var z: f32 = 0.5 - builtin_abs(x) * 0.5;\n var s = builtin_sqrt(z); // sic\n x = f32(pio2 - 2 * (s + s * Rf(z)));\n return builtin_copysign(x, sx);\n }\n\n export function asinh(x: f32): f32 { // see: musl/src/math/asinhf.c\n const c = reinterpret(0x3F317218); // 0.693147180559945309417232121458176568f\n var u = reinterpret(x) & 0x7FFFFFFF;\n var y = reinterpret(u);\n if (u >= 0x3F800000 + (12 << 23)) y = log(y) + c;\n else if (u >= 0x3F800000 + (1 << 23)) y = log(2 * y + 1 / (builtin_sqrt(y * y + 1) + y));\n else if (u >= 0x3F800000 - (12 << 23)) y = log1p(y + y * y / (builtin_sqrt(y * y + 1) + 1));\n return builtin_copysign(y, x);\n }\n\n export function atan(x: f32): f32 { // see: musl/src/math/atanf.c and SUN COPYRIGHT NOTICE above\n const\n atanhi0 = reinterpret(0x3EED6338), // 4.6364760399e-01f\n atanhi1 = reinterpret(0x3F490FDA), // 7.8539812565e-01f\n atanhi2 = reinterpret(0x3F7B985E), // 9.8279368877e-01f\n atanhi3 = reinterpret(0x3FC90FDA), // 1.5707962513e+00f\n atanlo0 = reinterpret(0x31AC3769), // 5.0121582440e-09f\n atanlo1 = reinterpret(0x33222168), // 3.7748947079e-08f\n atanlo2 = reinterpret(0x33140FB4), // 3.4473217170e-08f\n atanlo3 = reinterpret(0x33A22168), // 7.5497894159e-08f\n aT0 = reinterpret(0x3EAAAAA9), // 3.3333328366e-01f\n aT1 = reinterpret(0xBE4CCA98), // -1.9999158382e-01f\n aT2 = reinterpret(0x3E11F50D), // 1.4253635705e-01f\n aT3 = reinterpret(0xBDDA1247), // -1.0648017377e-01f\n aT4 = reinterpret(0x3D7CAC25), // 6.1687607318e-02f\n Ox1p_120f = reinterpret(0x03800000); // 0x1p-120f\n\n var ix = reinterpret(x);\n var sx = x;\n ix &= 0x7FFFFFFF;\n var z: f32;\n if (ix >= 0x4C800000) {\n if (isNaN(x)) return x;\n z = atanhi3 + Ox1p_120f;\n return builtin_copysign(z, sx);\n }\n var id: i32;\n if (ix < 0x3EE00000) {\n if (ix < 0x39800000) return x;\n id = -1;\n } else {\n x = builtin_abs(x);\n if (ix < 0x3F980000) {\n if (ix < 0x3F300000) {\n id = 0;\n x = (2.0 * x - 1.0) / (2.0 + x);\n } else {\n id = 1;\n x = (x - 1.0) / (x + 1.0);\n }\n } else {\n if (ix < 0x401C0000) {\n id = 2;\n x = (x - 1.5) / (1.0 + 1.5 * x);\n } else {\n id = 3;\n x = -1.0 / x;\n }\n }\n }\n z = x * x;\n var w = z * z;\n var s1 = z * (aT0 + w * (aT2 + w * aT4));\n var s2 = w * (aT1 + w * aT3);\n var s3 = x * (s1 + s2);\n if (id < 0) return x - s3;\n switch (id) {\n case 0: { z = atanhi0 - ((s3 - atanlo0) - x); break; }\n case 1: { z = atanhi1 - ((s3 - atanlo1) - x); break; }\n case 2: { z = atanhi2 - ((s3 - atanlo2) - x); break; }\n case 3: { z = atanhi3 - ((s3 - atanlo3) - x); break; }\n default: unreachable();\n }\n return builtin_copysign(z, sx);\n }\n\n export function atanh(x: f32): f32 { // see: musl/src/math/atanhf.c\n var u = reinterpret(x);\n var y = builtin_abs(x);\n if (u < 0x3F800000 - (1 << 23)) {\n if (u >= 0x3F800000 - (32 << 23)) y = 0.5 * log1p(2 * y * (1.0 + y / (1 - y)));\n } else y = 0.5 * log1p(2 * (y / (1 - y)));\n return builtin_copysign(y, x);\n }\n\n export function atan2(y: f32, x: f32): f32 { // see: musl/src/math/atan2f.c and SUN COPYRIGHT NOTICE above\n const\n pi = reinterpret(0x40490FDB), // 3.1415927410e+00f\n pi_lo = reinterpret(0xB3BBBD2E); // -8.7422776573e-08f\n\n if (isNaN(x) || isNaN(y)) return x + y;\n var ix = reinterpret(x);\n var iy = reinterpret(y);\n if (ix == 0x3F800000) return atan(y);\n var m = u32(((iy >> 31) & 1) | ((ix >> 30) & 2));\n ix &= 0x7FFFFFFF;\n iy &= 0x7FFFFFFF;\n if (iy == 0) {\n switch (m) {\n case 0:\n case 1: return y;\n case 2: return pi;\n case 3: return -pi;\n }\n }\n if (ix == 0) return m & 1 ? -pi / 2 : pi / 2;\n if (ix == 0x7F800000) {\n if (iy == 0x7F800000) {\n let t: f32 = m & 2 ? 3 * pi / 4 : pi / 4;\n return m & 1 ? -t : t;\n } else {\n let t: f32 = m & 2 ? pi : 0.0;\n return m & 1 ? -t : t;\n }\n }\n if (ix + (26 << 23) < iy || iy == 0x7F800000) return m & 1 ? -pi / 2 : pi / 2;\n var z: f32;\n if ((m & 2) && iy + (26 << 23) < ix) z = 0.0;\n else z = atan(builtin_abs(y / x));\n switch (m) {\n case 0: return z;\n case 1: return -z;\n case 2: return pi - (z - pi_lo);\n case 3: return (z - pi_lo) - pi;\n }\n unreachable();\n return 0;\n }\n\n export function cbrt(x: f32): f32 { // see: musl/src/math/cbrtf.c and SUN COPYRIGHT NOTICE above\n const\n B1 = 709958130,\n B2 = 642849266,\n Ox1p24f = reinterpret(0x4B800000);\n\n var u = reinterpret(x);\n var hx = u & 0x7FFFFFFF;\n if (hx >= 0x7F800000) return x + x;\n if (hx < 0x00800000) {\n if (hx == 0) return x;\n u = reinterpret(x * Ox1p24f);\n hx = u & 0x7FFFFFFF;\n hx = hx / 3 + B2;\n } else {\n hx = hx / 3 + B1;\n }\n u &= 0x80000000;\n u |= hx;\n var t = reinterpret(u);\n var r = t * t * t;\n t = t * (x + x + r) / (x + r + r);\n r = t * t * t;\n t = t * (x + x + r) / (x + r + r);\n return t;\n }\n\n // @ts-ignore: decorator\n @inline\n export function ceil(x: f32): f32 {\n return builtin_ceil(x);\n }\n\n export function clz32(x: f32): f32 {\n if (!isFinite(x)) return 32;\n return builtin_clz(dtoi32(x));\n }\n\n export function cos(x: f32): f32 { // see: musl/src/math/cosf.c\n const\n c1pio2 = reinterpret(0x3FF921FB54442D18), // M_PI_2 * 1\n c2pio2 = reinterpret(0x400921FB54442D18), // M_PI_2 * 2\n c3pio2 = reinterpret(0x4012D97C7F3321D2), // M_PI_2 * 3\n c4pio2 = reinterpret(0x401921FB54442D18); // M_PI_2 * 4\n\n var ux = reinterpret(x);\n var sign = ux >> 31;\n ux &= 0x7FFFFFFF;\n\n if (ux <= 0x3F490FDA) { // |x| ~<= π/4\n if (ux < 0x39800000) { // |x| < 2**-12\n // raise inexact if x != 0\n return 1;\n }\n return cos_kernf(x);\n }\n\n if (ASC_SHRINK_LEVEL < 1) {\n if (ux <= 0x407B53D1) { // |x| ~<= 5π/4\n if (ux > 0x4016CBE3) { // |x| ~> 3π/4\n return -cos_kernf(sign ? x + c2pio2 : x - c2pio2);\n } else {\n return sign ? sin_kernf(x + c1pio2) : sin_kernf(c1pio2 - x);\n }\n }\n if (ux <= 0x40E231D5) { // |x| ~<= 9π/4\n if (ux > 0x40AFEDDF) { // |x| ~> 7π/4\n return cos_kernf(sign ? x + c4pio2 : x - c4pio2);\n } else {\n return sign ? sin_kernf(-x - c3pio2) : sin_kernf(x - c3pio2);\n }\n }\n }\n\n // cos(Inf or NaN) is NaN\n if (ux >= 0x7F800000) return x - x;\n\n // general argument reduction needed\n var n = rempio2f(x, ux, sign);\n var y = rempio2f_y;\n\n var t = n & 1 ? sin_kernf(y) : cos_kernf(y);\n return (n + 1) & 2 ? -t : t;\n }\n\n export function cosh(x: f32): f32 { // see: musl/src/math/coshf.c\n var u = reinterpret(x);\n u &= 0x7FFFFFFF;\n x = reinterpret(u);\n if (u < 0x3F317217) {\n if (u < 0x3F800000 - (12 << 23)) return 1;\n let t = expm1(x);\n // return 1 + t * t / (2 * (1 + t));\n return 1 + t * t / (2 + 2 * t);\n }\n if (u < 0x42B17217) {\n let t = exp(x);\n // return 0.5 * (t + 1 / t);\n return 0.5 * t + 0.5 / t;\n }\n return expo2f(x, 1);\n }\n\n // @ts-ignore: decorator\n @inline\n export function floor(x: f32): f32 {\n return builtin_floor(x);\n }\n\n export function exp(x: f32): f32 { // see: musl/src/math/expf.c and SUN COPYRIGHT NOTICE above\n if (ASC_SHRINK_LEVEL < 1) {\n return expf_lut(x);\n } else {\n const\n ln2hi = reinterpret(0x3F317200), // 6.9314575195e-1f\n ln2lo = reinterpret(0x35BFBE8E), // 1.4286067653e-6f\n invln2 = reinterpret(0x3FB8AA3B), // 1.4426950216e+0f\n P1 = reinterpret(0x3E2AAA8F), // 1.6666625440e-1f\n P2 = reinterpret(0xBB355215), // -2.7667332906e-3f\n Ox1p127f = reinterpret(0x7F000000); // 0x1p+127f\n\n let hx = reinterpret(x);\n let sign = hx >> 31;\n hx &= 0x7FFFFFFF;\n if (hx >= 0x42AEAC50) {\n if (hx > 0x7F800000) return x; // NaN\n if (hx >= 0x42B17218) {\n if (!sign) return x * Ox1p127f;\n else if (hx >= 0x42CFF1B5) return 0;\n }\n }\n let hi: f32, lo: f32;\n let k: i32;\n if (hx > 0x3EB17218) {\n if (hx > 0x3F851592) {\n k = i32(invln2 * x + builtin_copysign(0.5, x));\n } else {\n k = 1 - (sign << 1);\n }\n hi = x - k * ln2hi;\n lo = k * ln2lo;\n x = hi - lo;\n } else if (hx > 0x39000000) {\n k = 0;\n hi = x;\n lo = 0;\n } else {\n return 1 + x;\n }\n let xx = x * x;\n let c = x - xx * (P1 + xx * P2);\n let y: f32 = 1 + (x * c / (2 - c) - lo + hi);\n return k == 0 ? y : scalbn(y, k);\n }\n }\n\n export function exp2(x: f32): f32 {\n return exp2f_lut(x);\n }\n\n export function expm1(x: f32): f32 { // see: musl/src/math/expm1f.c and SUN COPYRIGHT NOTICE above\n const\n ln2_hi = reinterpret(0x3F317180), // 6.9313812256e-01f\n ln2_lo = reinterpret(0x3717F7D1), // 9.0580006145e-06f\n invln2 = reinterpret(0x3FB8AA3B), // 1.4426950216e+00f\n Q1 = reinterpret(0xBD088868), // -3.3333212137e-02f\n Q2 = reinterpret(0x3ACF3010), // 1.5807170421e-03f\n Ox1p127f = reinterpret(0x7F000000); // 0x1p+127f\n\n var u = reinterpret(x);\n var hx = u & 0x7FFFFFFF;\n var sign = u >> 31;\n if (hx >= 0x4195B844) {\n if (hx > 0x7F800000) return x;\n if (sign) return -1;\n if (hx > 0x42B17217) { // x > log(FLT_MAX)\n x *= Ox1p127f;\n return x;\n }\n }\n var c: f32 = 0.0, t: f32, k: i32;\n if (hx > 0x3EB17218) {\n k = select(\n 1 - (sign << 1),\n i32(invln2 * x + builtin_copysign(0.5, x)),\n hx < 0x3F851592\n );\n t = k;\n let hi = x - t * ln2_hi;\n let lo = t * ln2_lo;\n x = hi - lo;\n c = (hi - x) - lo;\n } else if (hx < 0x33000000) {\n return x;\n } else k = 0;\n var hfx: f32 = 0.5 * x;\n var hxs: f32 = x * hfx;\n var r1: f32 = 1.0 + hxs * (Q1 + hxs * Q2);\n t = 3.0 - r1 * hfx;\n var e = hxs * ((r1 - t) / (6.0 - x * t));\n if (k == 0) return x - (x * e - hxs);\n e = x * (e - c) - c;\n e -= hxs;\n if (k == -1) return 0.5 * (x - e) - 0.5;\n if (k == 1) {\n if (x < -0.25) return -2.0 * (e - (x + 0.5));\n return 1.0 + 2.0 * (x - e);\n }\n u = (0x7F + k) << 23;\n var twopk = reinterpret(u);\n var y: f32;\n if (k < 0 || k > 56) {\n y = x - e + 1.0;\n if (k == 128) y = y * 2.0 * Ox1p127f;\n else y = y * twopk;\n return y - 1.0;\n }\n u = (0x7F - k) << 23;\n y = reinterpret(u);\n if (k < 20) y = (1 - y) - e;\n else y = 1 - (e + y);\n return (x + y) * twopk;\n }\n\n // @ts-ignore: decorator\n @inline\n export function fround(x: f32): f32 {\n return x;\n }\n\n export function hypot(x: f32, y: f32): f32 { // see: musl/src/math/hypotf.c\n const\n Ox1p90f = reinterpret(0x6C800000),\n Ox1p_90f = reinterpret(0x12800000);\n\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n ux &= 0x7FFFFFFF;\n uy &= 0x7FFFFFFF;\n if (ux < uy) {\n let ut = ux;\n ux = uy;\n uy = ut;\n }\n x = reinterpret(ux);\n y = reinterpret(uy);\n if (uy == 0xFF << 23) return y;\n if (ux >= 0xFF << 23 || uy == 0 || ux - uy >= 25 << 23) return x + y;\n var z: f32 = 1;\n if (ux >= (0x7F + 60) << 23) {\n z = Ox1p90f;\n x *= Ox1p_90f;\n y *= Ox1p_90f;\n } else if (uy < (0x7F - 60) << 23) {\n z = Ox1p_90f;\n x *= Ox1p90f;\n y *= Ox1p90f;\n }\n return z * builtin_sqrt(f32(x * x + y * y));\n }\n\n // @ts-ignore: decorator\n @inline\n export function imul(x: f32, y: f32): f32 {\n /*\n * Wasm (MVP) and JS have different approaches for double->int conversions.\n *\n * For emulate JS conversion behavior and avoid trapping from wasm we should modulate by MAX_INT\n * our float-point arguments before actual convertion to integers.\n */\n if (!isFinite(x + y)) return 0;\n return (dtoi32(x) * dtoi32(y));\n }\n\n export function log(x: f32): f32 { // see: musl/src/math/logf.c and SUN COPYRIGHT NOTICE above\n if (ASC_SHRINK_LEVEL < 1) {\n return logf_lut(x);\n } else {\n const\n ln2_hi = reinterpret(0x3F317180), // 6.9313812256e-01f\n ln2_lo = reinterpret(0x3717F7D1), // 9.0580006145e-06f\n Lg1 = reinterpret(0x3F2AAAAA), // 0xaaaaaa.0p-24f\n Lg2 = reinterpret(0x3ECCCE13), // 0xccce13.0p-25f\n Lg3 = reinterpret(0x3E91E9EE), // 0x91e9ee.0p-25f\n Lg4 = reinterpret(0x3E789E26), // 0xf89e26.0p-26f\n Ox1p25f = reinterpret(0x4C000000);\n\n let u = reinterpret(x);\n let k = 0;\n let sign = u >> 31;\n if (sign || u < 0x00800000) {\n if (u << 1 == 0) return -1 / (x * x);\n if (sign) return (x - x) / 0;\n k -= 25;\n x *= Ox1p25f;\n u = reinterpret(x);\n } else if (u >= 0x7F800000) {\n return x;\n } else if (u == 0x3F800000) {\n return 0;\n }\n u += 0x3F800000 - 0x3F3504F3;\n k += i32(u >> 23) - 0x7F;\n u = (u & 0x007FFFFF) + 0x3F3504F3;\n x = reinterpret(u);\n let f = x - 1.0;\n let s = f / (2.0 + f);\n let z = s * s;\n let w = z * z;\n let t1 = w * (Lg2 + w * Lg4);\n let t2 = z * (Lg1 + w * Lg3);\n let r = t2 + t1;\n let hfsq = 0.5 * f * f;\n let dk = k;\n return s * (hfsq + r) + dk * ln2_lo - hfsq + f + dk * ln2_hi;\n }\n }\n\n export function log10(x: f32): f32 { // see: musl/src/math/log10f.c and SUN COPYRIGHT NOTICE above\n const\n ivln10hi = reinterpret(0x3EDE6000), // 4.3432617188e-01f\n ivln10lo = reinterpret(0xB804EAD9), // -3.1689971365e-05f\n log10_2hi = reinterpret(0x3E9A2080), // 3.0102920532e-01f\n log10_2lo = reinterpret(0x355427DB), // 7.9034151668e-07f\n Lg1 = reinterpret(0x3F2AAAAA), // 0xaaaaaa.0p-24f, 0.66666662693f\n Lg2 = reinterpret(0x3ECCCE13), // 0xccce13.0p-25f, 0.40000972152f\n Lg3 = reinterpret(0x3E91E9EE), // 0x91e9ee.0p-25f, 0.28498786688f\n Lg4 = reinterpret(0x3E789E26), // 0xf89e26.0p-26f, 0.24279078841f\n Ox1p25f = reinterpret(0x4C000000); // 0x1p25f\n\n var ux = reinterpret(x);\n var k = 0;\n var sign = ux >> 31;\n if (sign || ux < 0x00800000) {\n if (ux << 1 == 0) return -1 / (x * x);\n if (sign) return (x - x) / 0.0;\n k -= 25;\n x *= Ox1p25f;\n ux = reinterpret(x);\n } else if (ux >= 0x7F800000) {\n return x;\n } else if (ux == 0x3F800000) {\n return 0;\n }\n ux += 0x3F800000 - 0x3F3504F3;\n k += i32(ux >> 23) - 0x7F;\n ux = (ux & 0x007FFFFF) + 0x3F3504F3;\n x = reinterpret(ux);\n var f = x - 1.0;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * Lg4);\n var t2 = z * (Lg1 + w * Lg3);\n var r = t2 + t1;\n var hfsq: f32 = 0.5 * f * f;\n var hi = f - hfsq;\n ux = reinterpret(hi);\n ux &= 0xFFFFF000;\n hi = reinterpret(ux);\n var lo = f - hi - hfsq + s * (hfsq + r);\n var dk = k;\n return dk * log10_2lo + (lo + hi) * ivln10lo + lo * ivln10hi + hi * ivln10hi + dk * log10_2hi;\n }\n\n export function log1p(x: f32): f32 { // see: musl/src/math/log1pf.c and SUN COPYRIGHT NOTICE above\n const\n ln2_hi = reinterpret(0x3F317180), // 6.9313812256e-01\n ln2_lo = reinterpret(0x3717F7D1), // 9.0580006145e-06\n Lg1 = reinterpret(0x3F2AAAAA), // 0xaaaaaa.0p-24f, 0.66666662693f\n Lg2 = reinterpret(0x3ECCCE13), // 0xccce13.0p-25f, 0.40000972152f\n Lg3 = reinterpret(0x3E91E9EE), // 0x91e9ee.0p-25f, 0.28498786688f\n Lg4 = reinterpret(0x3E789E26); // 0xf89e26.0p-26f, 0.24279078841f\n\n var ix = reinterpret(x);\n var c: f32 = 0;\n var f: f32 = 0;\n var k = 1;\n if (ix < 0x3ED413D0 || bool(ix >> 31)) {\n if (ix >= 0xBF800000) {\n if (x == -1) return x / 0.0;\n return (x - x) / 0.0;\n }\n if (ix << 1 < 0x33800000 << 1) return x;\n if (ix <= 0xBE95F619) {\n k = 0;\n c = 0;\n f = x;\n }\n } else if (ix >= 0x7F800000) return x;\n if (k) {\n let uf: f32 = 1 + x;\n let iu = reinterpret(uf);\n iu += 0x3F800000 - 0x3F3504F3;\n k = i32(iu >> 23) - 0x7F;\n if (k < 25) {\n c = k >= 2 ? 1 - (uf - x) : x - (uf - 1);\n c /= uf;\n } else c = 0;\n iu = (iu & 0x007FFFFF) + 0x3F3504F3;\n f = reinterpret(iu) - 1;\n }\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * Lg4);\n var t2 = z * (Lg1 + w * Lg3);\n var r = t2 + t1;\n var hfsq: f32 = 0.5 * f * f;\n var dk = k;\n return s * (hfsq + r) + (dk * ln2_lo + c) - hfsq + f + dk * ln2_hi;\n }\n\n export function log2(x: f32): f32 { // see: musl/src/math/log2f.c and SUN COPYRIGHT NOTICE above\n if (ASC_SHRINK_LEVEL < 1) {\n return log2f_lut(x);\n } else {\n const\n ivln2hi = reinterpret(0x3FB8B000), // 1.4428710938e+00f\n ivln2lo = reinterpret(0xB9389AD4), // -1.7605285393e-04\n Lg1 = reinterpret(0x3F2AAAAA), // 0xaaaaaa.0p-24f, 0.66666662693f\n Lg2 = reinterpret(0x3ECCCE13), // 0xccce13.0p-25f, 0.40000972152f\n Lg3 = reinterpret(0x3E91E9EE), // 0x91e9ee.0p-25f, 0.28498786688f\n Lg4 = reinterpret(0x3E789E26), // 0xf89e26.0p-26f, 0.24279078841f\n Ox1p25f = reinterpret(0x4C000000); // 0x1p25f\n\n let ux = reinterpret(x);\n let k = 0;\n let sign = ux >> 31;\n if (sign || ux < 0x00800000) {\n if (ux << 1 == 0) return -1 / (x * x);\n if (sign) return (x - x) / 0.0;\n k -= 25;\n x *= Ox1p25f;\n ux = reinterpret(x);\n } else if (ux >= 0x7F800000) {\n return x;\n } else if (ux == 0x3F800000) {\n return 0;\n }\n ux += 0x3F800000 - 0x3F3504F3;\n k += i32(ux >> 23) - 0x7F;\n ux = (ux & 0x007FFFFF) + 0x3F3504F3;\n x = reinterpret(ux);\n let f = x - 1.0;\n let s = f / (2.0 + f);\n let z = s * s;\n let w = z * z;\n let t1 = w * (Lg2 + w * Lg4);\n let t2 = z * (Lg1 + w * Lg3);\n let r = t2 + t1;\n let hfsq: f32 = 0.5 * f * f;\n let hi = f - hfsq;\n let u = reinterpret(hi);\n u &= 0xFFFFF000;\n hi = reinterpret(u);\n let lo: f32 = f - hi - hfsq + s * (hfsq + r);\n let dk = k;\n return (lo + hi) * ivln2lo + lo * ivln2hi + hi * ivln2hi + dk;\n }\n }\n\n // @ts-ignore: decorator\n @inline\n export function max(value1: f32, value2: f32): f32 {\n return builtin_max(value1, value2);\n }\n\n // @ts-ignore: decorator\n @inline\n export function min(value1: f32, value2: f32): f32 {\n return builtin_min(value1, value2);\n }\n\n export function pow(x: f32, y: f32): f32 {\n // TODO: remove this fast pathes after introduced own mid-end IR with \"stdlib call simplify\" transforms\n if (builtin_abs(y) <= 2) {\n if (y == 2.0) return x * x;\n if (y == 0.5) {\n return select(\n builtin_abs(builtin_sqrt(x)),\n Infinity,\n x != -Infinity\n );\n }\n if (y == -1.0) return 1 / x;\n if (y == 1.0) return x;\n if (y == 0.0) return 1.0;\n }\n if (ASC_SHRINK_LEVEL < 1) {\n // see: musl/src/math/powf.c\n return powf_lut(x, y);\n } else {\n // based on: jdh8/metallic/src/math/float/powf.c\n if (y == 0) return 1;\n // @ts-ignore: cast\n if (isNaN(x) | isNaN(y)) {\n return NaN;\n }\n let sign: u32 = 0;\n let uy = reinterpret(y);\n let ux = reinterpret(x);\n let sx = ux >> 31;\n ux &= 0x7FFFFFFF;\n if (sx && nearest(y) == y) {\n x = -x;\n sx = 0;\n sign = u32(nearest(y * 0.5) != y * 0.5) << 31;\n }\n let m: u32;\n if (ux == 0x3F800000) { // x == 1\n m = sx | u32((uy & 0x7FFFFFFF) == 0x7F800000) ? 0x7FC00000 : 0x3F800000;\n } else if (ux == 0) {\n m = uy < 0 ? 0x7F800000 : 0;\n } else if (ux == 0x7F800000) {\n m = uy < 0 ? 0 : 0x7F800000;\n } else if (sx) {\n m = 0x7FC00000;\n } else {\n m = reinterpret(exp2f(y * log2f(x)));\n }\n return reinterpret(m | sign);\n }\n }\n\n // @ts-ignore: decorator\n @inline\n export function seedRandom(value: i64): void {\n NativeMath.seedRandom(value);\n }\n\n // Using xoroshiro64starstar from http://xoshiro.di.unimi.it/xoroshiro64starstar.c\n export function random(): f32 {\n if (!random_seeded) seedRandom(reinterpret(seed()));\n\n var s0 = random_state0_32;\n var s1 = random_state1_32;\n var r = rotl(s0 * 0x9E3779BB, 5) * 5;\n\n s1 ^= s0;\n random_state0_32 = rotl(s0, 26) ^ s1 ^ (s1 << 9);\n random_state1_32 = rotl(s1, 13);\n\n return reinterpret((r >> 9) | (127 << 23)) - 1.0;\n }\n\n export function round(x: f32): f32 {\n if (ASC_SHRINK_LEVEL > 0) {\n return builtin_ceil(x) - f32(builtin_ceil(x) - 0.5 > x);\n } else {\n let roundUp = builtin_ceil(x);\n return select(roundUp, roundUp - 1.0, roundUp - 0.5 <= x);\n }\n }\n\n export function sign(x: f32): f32 {\n if (ASC_SHRINK_LEVEL > 0) {\n return select(builtin_copysign(1, x), x, builtin_abs(x) > 0);\n } else {\n return select(1, select(-1, x, x < 0), x > 0);\n }\n }\n\n // @ts-ignore: decorator\n @inline\n export function signbit(x: f32): bool {\n return (reinterpret(x) >>> 31);\n }\n\n export function sin(x: f32): f32 { // see: musl/src/math/sinf.c\n const\n s1pio2 = reinterpret(0x3FF921FB54442D18), // M_PI_2 * 1\n s2pio2 = reinterpret(0x400921FB54442D18), // M_PI_2 * 2\n s3pio2 = reinterpret(0x4012D97C7F3321D2), // M_PI_2 * 3\n s4pio2 = reinterpret(0x401921FB54442D18); // M_PI_2 * 4\n\n var ux = reinterpret(x);\n var sign = ux >> 31;\n ux &= 0x7FFFFFFF;\n\n if (ux <= 0x3F490FDA) { // |x| ~<= π/4\n if (ux < 0x39800000) { // |x| < 2**-12\n return x;\n }\n return sin_kernf(x);\n }\n\n if (ASC_SHRINK_LEVEL < 1) {\n if (ux <= 0x407B53D1) { // |x| ~<= 5π/4\n if (ux <= 0x4016CBE3) { // |x| ~<= 3π/4\n return sign ? -cos_kernf(x + s1pio2) : cos_kernf(x - s1pio2);\n }\n return sin_kernf(-(sign ? x + s2pio2 : x - s2pio2));\n }\n\n if (ux <= 0x40E231D5) { // |x| ~<= 9π/4\n if (ux <= 0x40AFEDDF) { // |x| ~<= 7π/4\n return sign ? cos_kernf(x + s3pio2) : -cos_kernf(x - s3pio2);\n }\n return sin_kernf(sign ? x + s4pio2 : x - s4pio2);\n }\n }\n\n // sin(Inf or NaN) is NaN\n if (ux >= 0x7F800000) return x - x;\n\n var n = rempio2f(x, ux, sign);\n var y = rempio2f_y;\n\n var t = n & 1 ? cos_kernf(y) : sin_kernf(y);\n return n & 2 ? -t : t;\n }\n\n export function sinh(x: f32): f32 { // see: musl/src/math/sinhf.c\n var u = reinterpret(x) & 0x7FFFFFFF;\n var a = reinterpret(u);\n var h = builtin_copysign(0.5, x);\n if (u < 0x42B17217) {\n let t = expm1(a);\n if (u < 0x3F800000) {\n if (u < 0x3F800000 - (12 << 23)) return x;\n return h * (2 * t - t * t / (t + 1));\n }\n return h * (t + t / (t + 1));\n }\n return expo2f(a, 2 * h);\n }\n\n // @ts-ignore: decorator\n @inline\n export function sqrt(x: f32): f32 {\n return builtin_sqrt(x);\n }\n\n export function tan(x: f32): f32 { // see: musl/src/math/tanf.c\n const\n t1pio2 = reinterpret(0x3FF921FB54442D18), // 1 * M_PI_2\n t2pio2 = reinterpret(0x400921FB54442D18), // 2 * M_PI_2\n t3pio2 = reinterpret(0x4012D97C7F3321D2), // 3 * M_PI_2\n t4pio2 = reinterpret(0x401921FB54442D18); // 4 * M_PI_2\n\n var ux = reinterpret(x);\n var sign = ux >> 31;\n ux &= 0x7FFFFFFF;\n\n if (ux <= 0x3F490FDA) { // |x| ~<= π/4\n if (ux < 0x39800000) { // |x| < 2**-12\n return x;\n }\n return tan_kernf(x, 0);\n }\n\n if (ASC_SHRINK_LEVEL < 1) {\n if (ux <= 0x407B53D1) { // |x| ~<= 5π/4\n if (ux <= 0x4016CBE3) { // |x| ~<= 3π/4\n return tan_kernf((sign ? x + t1pio2 : x - t1pio2), 1);\n } else {\n return tan_kernf((sign ? x + t2pio2 : x - t2pio2), 0);\n }\n }\n if (ux <= 0x40E231D5) { // |x| ~<= 9π/4\n if (ux <= 0x40AFEDDF) { // |x| ~<= 7π/4\n return tan_kernf((sign ? x + t3pio2 : x - t3pio2), 1);\n } else {\n return tan_kernf((sign ? x + t4pio2 : x - t4pio2), 0);\n }\n }\n }\n\n // tan(Inf or NaN) is NaN\n if (ux >= 0x7F800000) return x - x;\n\n // argument reduction\n var n = rempio2f(x, ux, sign);\n var y = rempio2f_y;\n return tan_kernf(y, n & 1);\n }\n\n export function tanh(x: f32): f32 { // see: musl/src/math/tanhf.c\n var u = reinterpret(x);\n u &= 0x7FFFFFFF;\n var y = reinterpret(u);\n var t: f32;\n if (u > 0x3F0C9F54) {\n if (u > 0x41200000) t = 1 + 0 / y;\n else {\n t = expm1(2 * y);\n t = 1 - 2 / (t + 2);\n }\n } else if (u > 0x3E82C578) {\n t = expm1(2 * y);\n t = t / (t + 2);\n } else if (u >= 0x00800000) {\n t = expm1(-2 * y);\n t = -t / (t + 2);\n } else t = y;\n return builtin_copysign(t, x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function trunc(x: f32): f32 {\n return builtin_trunc(x);\n }\n\n export function scalbn(x: f32, n: i32): f32 { // see: https://git.musl-libc.org/cgit/musl/tree/src/math/scalbnf.c\n const\n Ox1p24f = reinterpret(0x4B800000),\n Ox1p127f = reinterpret(0x7F000000),\n Ox1p_126f = reinterpret(0x00800000);\n\n var y = x;\n if (n > 127) {\n y *= Ox1p127f;\n n -= 127;\n if (n > 127) {\n y *= Ox1p127f;\n n = builtin_min(n - 127, 127);\n }\n } else if (n < -126) {\n y *= Ox1p_126f * Ox1p24f;\n n += 126 - 24;\n if (n < -126) {\n y *= Ox1p_126f * Ox1p24f;\n n = builtin_max(n + 126 - 24, -126);\n }\n }\n return y * reinterpret((0x7F + n) << 23);\n }\n\n export function mod(x: f32, y: f32): f32 { // see: musl/src/math/fmodf.c\n if (builtin_abs(y) == 1.0) {\n // x % 1, x % -1 ==> sign(x) * abs(x - 1.0 * trunc(x / 1.0))\n // TODO: move this rule to compiler's optimization pass.\n // It could be apply for any x % C_pot, where \"C_pot\" is pow of two const.\n return builtin_copysign(x - builtin_trunc(x), x);\n }\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n var ex = i32(ux >> 23 & 0xFF);\n var ey = i32(uy >> 23 & 0xFF);\n var sm = ux & 0x80000000;\n var uy1 = uy << 1;\n if (uy1 == 0 || ex == 0xFF || isNaN(y)) {\n let m = x * y;\n return m / m;\n }\n var ux1 = ux << 1;\n if (ux1 <= uy1) {\n return x * f32(ux1 != uy1);\n }\n if (!ex) {\n ex -= builtin_clz(ux << 9);\n ux <<= 1 - ex;\n } else {\n ux &= -1 >> 9;\n ux |= 1 << 23;\n }\n if (!ey) {\n ey -= builtin_clz(uy << 9);\n uy <<= 1 - ey;\n } else {\n uy &= u32(-1) >> 9;\n uy |= 1 << 23;\n }\n while (ex > ey) {\n if (ux >= uy) {\n if (ux == uy) return 0 * x;\n ux -= uy;\n }\n ux <<= 1;\n --ex;\n }\n if (ux >= uy) {\n if (ux == uy) return 0 * x;\n ux -= uy;\n }\n // for (; !(ux >> 23); ux <<= 1) --ex;\n var shift = builtin_clz(ux << 8);\n ex -= shift;\n ux <<= shift;\n if (ex > 0) {\n ux -= 1 << 23;\n ux |= ex << 23;\n } else {\n ux >>= -ex + 1;\n }\n return reinterpret(ux | sm);\n }\n\n export function rem(x: f32, y: f32): f32 { // see: musl/src/math/remquof.c\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n var ex = i32(ux >> 23 & 0xFF);\n var ey = i32(uy >> 23 & 0xFF);\n var uxi = ux;\n if (uy << 1 == 0 || ex == 0xFF || isNaN(y)) return (x * y) / (x * y);\n if (ux << 1 == 0) return x;\n if (!ex) {\n ex -= builtin_clz(uxi << 9);\n uxi <<= 1 - ex;\n } else {\n uxi &= u32(-1) >> 9;\n uxi |= 1 << 23;\n }\n if (!ey) {\n ey -= builtin_clz(uy << 9);\n uy <<= 1 - ey;\n } else {\n uy &= u32(-1) >> 9;\n uy |= 1 << 23;\n }\n var q = 0;\n do {\n if (ex < ey) {\n if (ex + 1 == ey) break; // goto end\n return x;\n }\n while (ex > ey) {\n if (uxi >= uy) {\n uxi -= uy;\n ++q;\n }\n uxi <<= 1;\n q <<= 1;\n --ex;\n }\n if (uxi >= uy) {\n uxi -= uy;\n ++q;\n }\n if (uxi == 0) ex = -30;\n else {\n let shift = builtin_clz(uxi << 8);\n ex -= shift;\n uxi <<= shift;\n }\n break;\n } while (false);\n // end:\n if (ex > 0) {\n uxi -= 1 << 23;\n uxi |= ex << 23;\n } else {\n uxi >>= -ex + 1;\n }\n x = reinterpret(uxi);\n y = builtin_abs(y);\n var x2 = x + x;\n if (ex == ey || (ex + 1 == ey && (x2 > y || (x2 == y && bool(q & 1))))) {\n x -= y;\n // q++;\n }\n return ux < 0 ? -x : x;\n }\n\n export function sincos(x: f32): void { // see: musl/tree/src/math/sincosf.c\n const\n s1pio2 = reinterpret(0x3FF921FB54442D18), // 1 * M_PI_2\n s2pio2 = reinterpret(0x400921FB54442D18), // 2 * M_PI_2\n s3pio2 = reinterpret(0x4012D97C7F3321D2), // 3 * M_PI_2\n s4pio2 = reinterpret(0x401921FB54442D18); // 4 * M_PI_2\n\n var ux = reinterpret(x);\n var sign = ux >> 31;\n ux &= 0x7FFFFFFF;\n\n if (ux <= 0x3F490FDA) { // |x| ~<= π/4\n if (ux < 0x39800000) { // |x| < 2**-12\n sincos_sin = x;\n sincos_cos = 1;\n return;\n }\n sincos_sin = sin_kernf(x);\n sincos_cos = cos_kernf(x);\n return;\n }\n if (ASC_SHRINK_LEVEL < 1) {\n if (ux <= 0x407B53D1) { // |x| ~<= 5π/4\n if (ux <= 0x4016CBE3) { // |x| ~<= 3π/4\n if (sign) {\n sincos_sin = -cos_kernf(x + s1pio2);\n sincos_cos = sin_kernf(x + s1pio2);\n } else {\n sincos_sin = cos_kernf(s1pio2 - x);\n sincos_cos = sin_kernf(s1pio2 - x);\n }\n return;\n }\n // -sin(x + c) is not correct if x+c could be 0: -0 vs +0\n sincos_sin = -sin_kernf(sign ? x + s2pio2 : x - s2pio2);\n sincos_cos = -cos_kernf(sign ? x + s2pio2 : x - s2pio2);\n return;\n }\n if (ux <= 0x40E231D5) { // |x| ~<= 9π/4\n if (ux <= 0x40AFEDDF) { // |x| ~<= 7π/4\n if (sign) {\n sincos_sin = cos_kernf(x + s3pio2);\n sincos_cos = -sin_kernf(x + s3pio2);\n } else {\n sincos_sin = -cos_kernf(x - s3pio2);\n sincos_cos = sin_kernf(x - s3pio2);\n }\n return;\n }\n sincos_sin = sin_kernf(sign ? x + s4pio2 : x - s4pio2);\n sincos_cos = cos_kernf(sign ? x + s4pio2 : x - s4pio2);\n return;\n }\n }\n // sin(Inf or NaN) is NaN\n if (ux >= 0x7F800000) {\n let xx = x - x;\n sincos_sin = xx;\n sincos_cos = xx;\n return;\n }\n // general argument reduction needed\n var n = rempio2f(x, ux, sign);\n var y = rempio2f_y;\n var s = sin_kernf(y);\n var c = cos_kernf(y);\n var sin = s, cos = c;\n if (n & 1) {\n sin = c;\n cos = -s;\n }\n if (n & 2) {\n sin = -sin;\n cos = -cos;\n }\n sincos_sin = sin;\n sincos_cos = cos;\n }\n}\n\nexport function ipow32(x: i32, e: i32): i32 {\n var out = 1;\n if (ASC_SHRINK_LEVEL < 1) {\n if (x == 2) {\n return select(1 << e, 0, e < 32);\n }\n if (e <= 0) {\n if (x == -1) return select(-1, 1, e & 1);\n return i32(e == 0) | i32(x == 1);\n }\n else if (e == 1) return x;\n else if (e == 2) return x * x;\n else if (e < 32) {\n let log = 32 - clz(e);\n // 32 = 2 ^ 5, so need only five cases.\n // But some extra cases needs for properly overflowing\n switch (log) {\n case 5: {\n if (e & 1) out *= x;\n e >>>= 1;\n x *= x;\n }\n case 4: {\n if (e & 1) out *= x;\n e >>>= 1;\n x *= x;\n }\n case 3: {\n if (e & 1) out *= x;\n e >>>= 1;\n x *= x;\n }\n case 2: {\n if (e & 1) out *= x;\n e >>>= 1;\n x *= x;\n }\n case 1: {\n if (e & 1) out *= x;\n }\n }\n return out;\n }\n }\n while (e) {\n if (e & 1) out *= x;\n e >>>= 1;\n x *= x;\n }\n return out;\n}\n\nexport function ipow64(x: i64, e: i64): i64 {\n var out: i64 = 1;\n if (ASC_SHRINK_LEVEL < 1) {\n if (x == 2) {\n return select(1 << e, 0, e < 64);\n }\n if (e <= 0) {\n if (x == -1) return select(-1, 1, e & 1);\n return i64(e == 0) | i64(x == 1);\n }\n else if (e == 1) return x;\n else if (e == 2) return x * x;\n else if (e < 64) {\n let log = 64 - clz(e);\n // 64 = 2 ^ 6, so need only six cases.\n // But some extra cases needs for properly overflowing\n switch (log) {\n case 6: {\n if (e & 1) out *= x;\n e >>>= 1;\n x *= x;\n }\n case 5: {\n if (e & 1) out *= x;\n e >>>= 1;\n x *= x;\n }\n case 4: {\n if (e & 1) out *= x;\n e >>>= 1;\n x *= x;\n }\n case 3: {\n if (e & 1) out *= x;\n e >>>= 1;\n x *= x;\n }\n case 2: {\n if (e & 1) out *= x;\n e >>>= 1;\n x *= x;\n }\n case 1: {\n if (e & 1) out *= x;\n }\n }\n return out;\n }\n }\n while (e) {\n if (e & 1) out *= x;\n e >>>= 1;\n x *= x;\n }\n return out;\n}\n\n/*\nTODO:\nIn compile time if only exponent is constant we could replace ipow32/ipow64 by shortest addition chains\nwhich usually faster than exponentiation by squaring\n\nfor ipow32 and e < 32:\n\nlet b: i32, c: i32, d: i32, h: i32, k: i32, g: i32;\nswitch (e) {\n case 1: return x;\n case 2: return x * x;\n case 3: return x * x * x;\n case 4: return (b = x * x) * b;\n case 5: return (b = x * x) * b * x;\n case 6: return (b = x * x) * b * b;\n case 7: return (b = x * x) * b * b * x;\n case 8: return (d = (b = x * x) * b) * d;\n case 9: return (c = x * x * x) * c * c;\n case 10: return (d = (b = x * x) * b) * d * b;\n case 11: return (d = (b = x * x) * b) * d * b * x;\n case 12: return (d = (b = x * x) * b) * d * d;\n case 13: return (d = (b = x * x) * b) * d * d * x;\n case 14: return (d = (b = x * x) * b) * d * d * b;\n case 15: return (k = (b = x * x) * b * x) * k * k;\n case 16: return (h = (d = (b = x * x) * b) * d) * h;\n case 17: return (h = (d = (b = x * x) * b) * d) * h * x;\n case 18: return (h = (d = (b = x * x) * b) * d * x) * h;\n case 19: return (h = (d = (b = x * x) * b) * d * x) * h * x;\n case 20: return (h = (k = (b = x * x) * b * x) * k) * h;\n case 21: return (h = (k = (b = x * x) * b * x) * k) * h * x;\n case 22: return (g = (h = (k = (b = x * x) * b * x) * k) * x) * g;\n case 23: return (h = (d = (c = (b = x * x) * x) * b) * d) * h * c;\n case 24: return (h = (d = (c = x * x * x) * c) * d) * h;\n case 25: return (h = (d = (c = x * x * x) * c) * d) * h * x;\n case 26: return (g = (h = (d = (c = x * x * x) * c) * d) * x) * g;\n case 27: return (h = (d = (c = x * x * x) * c) * d) * h * c;\n case 28: return (h = (d = (c = x * x * x) * c * x) * d) * h;\n case 29: return (h = (d = (c = x * x * x) * c * x) * d) * h * x;\n case 30: return (h = (d = (c = x * x * x) * c) * d * c) * h;\n case 31: return (h = (d = (c = x * x * x) * c) * d * c) * h * x;\n}\n\nfor ipow64: TODO\nswitch (e) {\n case 32:\n ...\n case 63:\n}\n*/\n","// This file is shared with the compiler and must remain portable\n\n/** Runtime types. */\nexport enum Runtime {\n /** Simple bump allocator without GC. */\n Stub = 0,\n /** Stop the world semi-automatic GC. */\n Minimal = 1,\n /** incremental GC. */\n Incremental = 2,\n}\n","import { compareImpl } from \"./string\";\n\ntype Comparator = (a: T, b: T) => i32;\n\n// @ts-ignore: decorator\n@lazy @inline const EMPTY = u32.MAX_VALUE;\n// @ts-ignore: decorator\n@inline const INSERTION_SORT_THRESHOLD = 48;\n// @ts-ignore: decorator\n@inline const MIN_RUN_LENGTH = 32;\n\n// @ts-ignore: decorator\n@inline\nfunction log2u(n: u32): u32 {\n return 31 - clz(n);\n}\n\n// @ts-ignore: decorator\n@inline\nexport function COMPARATOR(): Comparator {\n if (isInteger()) {\n if (isSigned() && sizeof() <= 4) {\n return (a, b) => i32(a) - i32(b);\n } else {\n return (a, b) => i32(a > b) - i32(a < b);\n }\n } else if (isFloat()) {\n if (sizeof() == 4) {\n return (a, b) => {\n var ia = reinterpret(f32(a));\n var ib = reinterpret(f32(b));\n ia ^= ia >> 31 >>> 1;\n ib ^= ib >> 31 >>> 1;\n return i32(ia > ib) - i32(ia < ib);\n };\n } else {\n return (a, b) => {\n var ia = reinterpret(f64(a));\n var ib = reinterpret(f64(b));\n ia ^= ia >> 63 >>> 1;\n ib ^= ib >> 63 >>> 1;\n return i32(ia > ib) - i32(ia < ib);\n };\n }\n } else if (isString()) {\n return (a, b) => {\n if (\n changetype(a) == changetype(b) ||\n changetype(a) == 0 ||\n changetype(b) == 0\n ) return 0;\n var alen = changetype(a).length;\n var blen = changetype(b).length;\n if (!(alen | blen)) return 0;\n if (!alen) return -1;\n if (!blen) return 1;\n let res = compareImpl(\n changetype(a), 0,\n changetype(b), 0,\n min(alen, blen)\n );\n return res ? res : alen - blen;\n };\n } else {\n return (a, b) => i32(a > b) - i32(a < b);\n }\n}\n\n// Power Sort implementation (stable) from paper \"Nearly-Optimal Mergesorts\"\n// https://arxiv.org/pdf/1805.04154.pdf\n// This method usually outperform TimSort.\n// TODO: refactor c >>> 31 to c < 0 when binaryen will support this opt\nexport function SORT(\n ptr: usize,\n len: i32,\n comparator: Comparator\n): void {\n if (len <= INSERTION_SORT_THRESHOLD) {\n if (len <= 1) return;\n if (ASC_SHRINK_LEVEL < 1) {\n switch (len) {\n case 3: {\n let a = load(ptr, 0);\n let b = load(ptr, 1 << alignof());\n let c = comparator(a, b) > 0;\n store(ptr, select(b, a, c), 0);\n a = select(a, b, c);\n b = load(ptr, 2 << alignof());\n c = comparator(a, b) > 0;\n store(ptr, select(b, a, c), 1 << alignof());\n store(ptr, select(a, b, c), 2 << alignof());\n }\n case 2: {\n let a = load(ptr, 0);\n let b = load(ptr, 1 << alignof());\n let c = comparator(a, b) > 0;\n store(ptr, select(b, a, c), 0);\n store(ptr, select(a, b, c), 1 << alignof());\n return;\n }\n }\n }\n insertionSort(ptr, 0, len - 1, 0, comparator);\n return;\n }\n\n var lgPlus2 = log2u(len) + 2;\n var lgPlus2Size = lgPlus2 << alignof();\n var leftRunStartBuf = __alloc(lgPlus2Size << 1);\n var leftRunEndBuf = leftRunStartBuf + lgPlus2Size;\n\n for (let i: u32 = 0; i < lgPlus2; ++i) {\n store(leftRunStartBuf + (i << alignof()), EMPTY);\n }\n\n var buffer = __alloc(len << alignof());\n\n var hi = len - 1;\n var endA = extendRunRight(ptr, 0, hi, comparator);\n var lenA = endA + 1;\n\n if (lenA < MIN_RUN_LENGTH) {\n endA = min(hi, MIN_RUN_LENGTH - 1);\n insertionSort(ptr, 0, endA, lenA, comparator);\n }\n\n var top: u32 = 0, startA = 0;\n while (endA < hi) {\n let startB = endA + 1;\n let endB = extendRunRight(ptr, startB, hi, comparator);\n let lenB = endB - startB + 1;\n\n if (lenB < MIN_RUN_LENGTH) {\n endB = min(hi, startB + MIN_RUN_LENGTH - 1);\n insertionSort(ptr, startB, endB, lenB, comparator);\n }\n\n let k = nodePower(0, hi, startA, startB, endB);\n\n for (let i = top; i > k; --i) {\n let start = load(leftRunStartBuf + (i << alignof()));\n if (start != EMPTY) {\n mergeRuns(\n ptr,\n start,\n load(leftRunEndBuf + (i << alignof())) + 1,\n endA,\n buffer,\n comparator\n );\n startA = start;\n store(leftRunStartBuf + (i << alignof()), EMPTY);\n }\n }\n\n store(leftRunStartBuf + (k << alignof()), startA);\n store(leftRunEndBuf + (k << alignof()), endA);\n startA = startB;\n endA = endB;\n top = k;\n }\n\n for (let i = top; i != 0; --i) {\n let start = load(leftRunStartBuf + (i << alignof()));\n if (start != EMPTY) {\n mergeRuns(\n ptr,\n start,\n load(leftRunEndBuf + (i << alignof())) + 1,\n hi,\n buffer,\n comparator\n );\n }\n }\n // dealloc aux buffers\n __free(buffer);\n __free(leftRunStartBuf);\n}\n\nfunction insertionSort(\n ptr: usize,\n left: i32,\n right: i32,\n presorted: i32,\n comparator: Comparator\n): void {\n if (ASC_SHRINK_LEVEL >= 1) {\n // slightly improved original insertion sort\n for (let i = left + presorted; i <= right; ++i) {\n let j = i - 1;\n let a = load(ptr + (i << alignof()));\n while (j >= left) {\n let b = load(ptr + (j << alignof()));\n if (comparator(a, b) < 0) {\n store(ptr + (j << alignof()), b, 1 << alignof()); --j;\n } else break;\n }\n store(ptr + (j << alignof()), a, 1 << alignof());\n }\n } else {\n // even-odd two-way insertion sort which allow increase minRunLen\n let range = right - left + 1;\n let i = left + select(range & 1, presorted - ((range - presorted) & 1), presorted == 0);\n for (; i <= right; i += 2) {\n let a = load(ptr + (i << alignof()), 0);\n let b = load(ptr + (i << alignof()), 1 << alignof());\n let min = b, max = a;\n if (comparator(a, b) <= 0) {\n min = a, max = b;\n }\n let j = i - 1;\n while (j >= left) {\n a = load(ptr + (j << alignof()));\n if (comparator(a, max) > 0) {\n store(ptr + (j << alignof()), a, 2 << alignof()); --j;\n } else break;\n }\n store(ptr + (j << alignof()), max, 2 << alignof());\n while (j >= left) {\n a = load(ptr + (j << alignof()));\n if (comparator(a, min) > 0) {\n store(ptr + (j << alignof()), a, 1 << alignof()); --j;\n } else break;\n }\n store(ptr + (j << alignof()), min, 1 << alignof());\n }\n }\n}\n\nfunction nodePower(left: u32, right: u32, startA: u32, startB: u32, endB: u32): u32 {\n var n: u64 = right - left + 1;\n var s = startB - (left << 1);\n var l = startA + s;\n var r = endB + s + 1;\n var a = (l << 30) / n;\n var b = (r << 30) / n;\n return clz((a ^ b));\n}\n\nfunction extendRunRight(\n ptr: usize,\n i: i32,\n right: i32,\n comparator: Comparator\n): i32 {\n if (i == right) return i;\n var j = i;\n if (comparator(\n load(ptr + ( j << alignof())),\n load(ptr + (++j << alignof()))\n ) > 0) {\n while (\n j < right &&\n (comparator(\n load(ptr + (j << alignof()), 1 << alignof()),\n load(ptr + (j << alignof()))\n ) >>> 31) // < 0\n ) ++j;\n // reverse\n let k = j;\n while (i < k) {\n let tmp = load(ptr + (i << alignof()));\n store(ptr + (i << alignof()), load(ptr + (k << alignof()))); ++i;\n store(ptr + (k << alignof()), tmp); --k;\n }\n } else {\n while (\n j < right &&\n comparator(\n load(ptr + (j << alignof()), 1 << alignof()),\n load(ptr + (j << alignof()))\n ) >= 0\n ) ++j;\n }\n return j;\n}\n\n// Merges arr[l..m - 1] and arr[m..r]\nfunction mergeRuns(\n ptr: usize,\n l: i32,\n m: i32,\n r: i32,\n buffer: usize,\n comparator: Comparator\n): void {\n --m;\n var i: i32, j: i32, t = r + m;\n for (i = m + 1; i > l; --i) {\n store(\n buffer + ((i - 1) << alignof()),\n load(ptr + ((i - 1) << alignof()))\n );\n }\n for (j = m; j < r; ++j) {\n store(\n buffer + ((t - j) << alignof()),\n load(ptr + (j << alignof()), 1 << alignof())\n );\n }\n for (let k = l; k <= r; ++k) {\n let a = load(buffer + (j << alignof()));\n let b = load(buffer + (i << alignof()));\n if (comparator(a, b) < 0) {\n store(ptr + (k << alignof()), a);\n --j;\n } else {\n store(ptr + (k << alignof()), b);\n ++i;\n }\n }\n}\n","/// \n\nimport { BLOCK_MAXSIZE } from \"./rt/common\";\nimport { Runtime } from \"shared/runtime\";\nimport { COMPARATOR, SORT } from \"./util/sort\";\nimport { REVERSE, FILL } from \"./util/bytes\";\nimport { joinBooleanArray, joinIntegerArray, joinFloatArray, joinStringArray, joinReferenceArray } from \"./util/string\";\nimport { idof, isArray as builtin_isArray } from \"./builtins\";\nimport { E_INDEXOUTOFRANGE, E_INVALIDLENGTH, E_EMPTYARRAY, E_HOLEYARRAY } from \"./util/error\";\n\n// @ts-ignore: decorator\n@inline @lazy const MIN_SIZE: usize = 8;\n\n/** Ensures that the given array has _at least_ the specified backing size. */\nfunction ensureCapacity(array: usize, newSize: usize, alignLog2: u32, canGrow: bool = true): void {\n // Depends on the fact that Arrays mimic ArrayBufferView\n var oldCapacity = changetype(array).byteLength;\n if (newSize > oldCapacity >>> alignLog2) {\n if (newSize > BLOCK_MAXSIZE >>> alignLog2) throw new RangeError(E_INVALIDLENGTH);\n let oldData = changetype(changetype(array).buffer);\n // Grows old capacity by factor of two.\n // Make sure we don't reach BLOCK_MAXSIZE for new growed capacity.\n let newCapacity = max(newSize, MIN_SIZE) << alignLog2;\n if (canGrow) newCapacity = max(min(oldCapacity << 1, BLOCK_MAXSIZE), newCapacity);\n let newData = __renew(oldData, newCapacity);\n // __new / __renew already init memory range as zeros in Incremental runtime.\n // So try to avoid this.\n if (ASC_RUNTIME != Runtime.Incremental) {\n memory.fill(newData + oldCapacity, 0, newCapacity - oldCapacity);\n }\n if (newData != oldData) { // oldData has been free'd\n store(array, newData, offsetof(\"buffer\"));\n store(array, newData, offsetof(\"dataStart\"));\n __link(array, changetype(newData), false);\n }\n store(array, newCapacity, offsetof(\"byteLength\"));\n }\n}\n\nexport class Array {\n [key: number]: T;\n\n // Mimicking ArrayBufferView isn't strictly necessary here but is done to allow glue code\n // to work with typed and normal arrays interchangeably. Technically, normal arrays do not need\n // `dataStart` (equals `buffer`) and `byteLength` (equals computed `buffer.byteLength`), but the\n // block is 16 bytes anyway so it's fine to have a couple extra fields in there.\n\n private buffer: ArrayBuffer;\n @unsafe readonly dataStart: usize;\n private byteLength: i32; // Uses here as capacity\n\n // Also note that Array with non-nullable T must guard against uninitialized null values\n // whenever an element is accessed. Otherwise, the compiler wouldn't be able to guarantee\n // type-safety anymore. For lack of a better word, such an array is \"holey\".\n\n private length_: i32;\n\n static isArray(value: U): bool {\n return isReference() ? changetype(value) != 0 && builtin_isArray(value) : false;\n }\n\n static create(capacity: i32 = 0): Array {\n WARNING(\"'Array.create' is deprecated. Use 'new Array' instead, making sure initial elements are initialized.\");\n var array = new Array(capacity);\n array.length = 0;\n return array;\n }\n\n constructor(length: i32 = 0) {\n if (length > BLOCK_MAXSIZE >>> alignof()) throw new RangeError(E_INVALIDLENGTH);\n // reserve capacity for at least MIN_SIZE elements\n var bufferSize = max(length, MIN_SIZE) << alignof();\n var buffer = changetype(__new(bufferSize, idof()));\n if (ASC_RUNTIME != Runtime.Incremental) {\n memory.fill(changetype(buffer), 0, bufferSize);\n }\n this.buffer = buffer; // links\n this.dataStart = changetype(buffer);\n this.byteLength = bufferSize;\n this.length_ = length;\n }\n\n get length(): i32 {\n return this.length_;\n }\n\n set length(newLength: i32) {\n ensureCapacity(changetype(this), newLength, alignof(), false);\n this.length_ = newLength;\n }\n\n every(fn: (value: T, index: i32, array: Array) => bool): bool {\n for (let i = 0, len = this.length_; i < min(len, this.length_); ++i) {\n if (!fn(load(this.dataStart + (i << alignof())), i, this)) return false;\n }\n return true;\n }\n\n findIndex(fn: (value: T, index: i32, array: Array) => bool): i32 {\n for (let i = 0, len = this.length_; i < min(len, this.length_); ++i) {\n if (fn(load(this.dataStart + (i << alignof())), i, this)) return i;\n }\n return -1;\n }\n\n findLastIndex(fn: (value: T, index: i32, array: Array) => bool): i32 {\n for (let i = this.length_ - 1; i >= 0; --i) {\n if (fn(load(this.dataStart + (i << alignof())), i, this)) return i;\n }\n return -1;\n }\n\n @operator(\"[]\") private __get(index: i32): T {\n if (index >= this.length_) throw new RangeError(E_INDEXOUTOFRANGE);\n var value = load(this.dataStart + (index << alignof()));\n if (isReference()) {\n if (!isNullable()) {\n if (!changetype(value)) throw new Error(E_HOLEYARRAY);\n }\n }\n return value;\n }\n\n @unsafe @operator(\"{}\") private __uget(index: i32): T {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator(\"[]=\") private __set(index: i32, value: T): void {\n if (index >= this.length_) {\n if (index < 0) throw new RangeError(E_INDEXOUTOFRANGE);\n ensureCapacity(changetype(this), index + 1, alignof());\n this.length_ = index + 1;\n }\n this.__uset(index, value);\n }\n\n @unsafe @operator(\"{}=\") private __uset(index: i32, value: T): void {\n store(this.dataStart + (index << alignof()), value);\n if (isManaged()) {\n __link(changetype(this), changetype(value), true);\n }\n }\n\n at(index: i32): T {\n var len = this.length_;\n index += select(0, len, index >= 0);\n if (index >= len) throw new RangeError(E_INDEXOUTOFRANGE);\n var value = load(this.dataStart + (index << alignof()));\n if (isReference()) {\n if (!isNullable()) {\n if (!changetype(value)) throw new Error(E_HOLEYARRAY);\n }\n }\n return value;\n }\n\n fill(value: T, start: i32 = 0, end: i32 = i32.MAX_VALUE): Array {\n if (isManaged()) {\n FILL(this.dataStart, this.length_, changetype(value), start, end);\n __link(changetype(this), changetype(value), false);\n } else {\n FILL(this.dataStart, this.length_, value, start, end);\n }\n return this;\n }\n\n includes(value: T, fromIndex: i32 = 0): bool {\n if (isFloat()) {\n let len = this.length_;\n if (len == 0 || fromIndex >= len) return false;\n if (fromIndex < 0) fromIndex = max(len + fromIndex, 0);\n let ptr = this.dataStart;\n while (fromIndex < len) {\n let elem = load(ptr + (fromIndex << alignof()));\n // @ts-ignore\n if (elem == value || isNaN(elem) & isNaN(value)) return true;\n ++fromIndex;\n }\n return false;\n } else {\n return this.indexOf(value, fromIndex) >= 0;\n }\n }\n\n indexOf(value: T, fromIndex: i32 = 0): i32 {\n var len = this.length_;\n if (len == 0 || fromIndex >= len) return -1;\n if (fromIndex < 0) fromIndex = max(len + fromIndex, 0);\n var ptr = this.dataStart;\n while (fromIndex < len) {\n if (load(ptr + (fromIndex << alignof())) == value) return fromIndex;\n ++fromIndex;\n }\n return -1;\n }\n\n lastIndexOf(value: T, fromIndex: i32 = this.length_): i32 {\n var len = this.length_;\n if (len == 0) return -1;\n if (fromIndex < 0) fromIndex = len + fromIndex;\n else if (fromIndex >= len) fromIndex = len - 1;\n var ptr = this.dataStart;\n while (fromIndex >= 0) {\n if (load(ptr + (fromIndex << alignof())) == value) return fromIndex;\n --fromIndex;\n }\n return -1;\n }\n\n push(value: T): i32 {\n var oldLen = this.length_;\n var len = oldLen + 1;\n ensureCapacity(changetype(this), len, alignof());\n if (isManaged()) {\n store(this.dataStart + (oldLen << alignof()), changetype(value));\n __link(changetype(this), changetype(value), true);\n } else {\n store(this.dataStart + (oldLen << alignof()), value);\n }\n this.length_ = len;\n return len;\n }\n\n concat(other: Array): Array {\n var thisLen = this.length_;\n var otherLen = other.length_;\n var outLen = thisLen + otherLen;\n if (outLen > BLOCK_MAXSIZE >>> alignof()) throw new Error(E_INVALIDLENGTH);\n var out = changetype>(__newArray(outLen, alignof(), idof>()));\n var outStart = out.dataStart;\n var thisSize = thisLen << alignof();\n if (isManaged()) {\n let thisStart = this.dataStart;\n for (let offset: usize = 0; offset < thisSize; offset += sizeof()) {\n let ref = load(thisStart + offset);\n store(outStart + offset, ref);\n __link(changetype(out), ref, true);\n }\n outStart += thisSize;\n let otherStart = other.dataStart;\n let otherSize = otherLen << alignof();\n for (let offset: usize = 0; offset < otherSize; offset += sizeof()) {\n let ref = load(otherStart + offset);\n store(outStart + offset, ref);\n __link(changetype(out), ref, true);\n }\n } else {\n memory.copy(outStart, this.dataStart, thisSize);\n memory.copy(outStart + thisSize, other.dataStart, otherLen << alignof());\n }\n return out;\n }\n\n copyWithin(target: i32, start: i32, end: i32 = i32.MAX_VALUE): Array {\n var ptr = this.dataStart;\n var len = this.length_;\n\n end = min(end, len);\n\n var to = target < 0 ? max(len + target, 0) : min(target, len);\n var from = start < 0 ? max(len + start, 0) : min(start, len);\n var last = end < 0 ? max(len + end, 0) : min(end, len);\n var count = min(last - from, len - to);\n\n memory.copy( // is memmove\n ptr + (to << alignof()),\n ptr + (from << alignof()),\n count << alignof()\n );\n return this;\n }\n\n pop(): T {\n var len = this.length_;\n if (len < 1) throw new RangeError(E_EMPTYARRAY);\n var val = load(this.dataStart + ((--len) << alignof()));\n this.length_ = len;\n return val;\n }\n\n forEach(fn: (value: T, index: i32, array: Array) => void): void {\n for (let i = 0, len = this.length_; i < min(len, this.length_); ++i) {\n fn(load(this.dataStart + (i << alignof())), i, this);\n }\n }\n\n map(fn: (value: T, index: i32, array: Array) => U): Array {\n var len = this.length_;\n var out = changetype>(__newArray(len, alignof(), idof>()));\n var outStart = out.dataStart;\n for (let i = 0; i < min(len, this.length_); ++i) {\n let result = fn(load(this.dataStart + (i << alignof())), i, this);\n store(outStart + (i << alignof()), result);\n if (isManaged()) {\n __link(changetype(out), changetype(result), true);\n }\n }\n return out;\n }\n\n filter(fn: (value: T, index: i32, array: Array) => bool): Array {\n var result = changetype>(__newArray(0, alignof(), idof>()));\n for (let i = 0, len = this.length_; i < min(len, this.length_); ++i) {\n let value = load(this.dataStart + (i << alignof()));\n if (fn(value, i, this)) result.push(value);\n }\n return result;\n }\n\n reduce(\n fn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U,\n initialValue: U\n ): U {\n var acc = initialValue;\n for (let i = 0, len = this.length_; i < min(len, this.length_); ++i) {\n acc = fn(acc, load(this.dataStart + (i << alignof())), i, this);\n }\n return acc;\n }\n\n reduceRight(\n fn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U,\n initialValue: U\n ): U {\n var acc = initialValue;\n for (let i = this.length_ - 1; i >= 0; --i) {\n acc = fn(acc, load(this.dataStart + (i << alignof())), i, this);\n }\n return acc;\n }\n\n shift(): T {\n var len = this.length_;\n if (len < 1) throw new RangeError(E_EMPTYARRAY);\n var base = this.dataStart;\n var element = load(base);\n var lastIndex = len - 1;\n memory.copy(\n base,\n base + sizeof(),\n lastIndex << alignof()\n );\n if (isReference()) {\n store(base + (lastIndex << alignof()), 0);\n } else {\n // @ts-ignore\n store(base + (lastIndex << alignof()), 0);\n }\n this.length_ = lastIndex;\n return element;\n }\n\n some(fn: (value: T, index: i32, array: Array) => bool): bool {\n for (let i = 0, len = this.length_; i < min(len, this.length_); ++i) {\n if (fn(load(this.dataStart + (i << alignof())), i, this)) return true;\n }\n return false;\n }\n\n unshift(value: T): i32 {\n var len = this.length_ + 1;\n ensureCapacity(changetype(this), len, alignof());\n var ptr = this.dataStart;\n memory.copy(\n ptr + sizeof(),\n ptr,\n (len - 1) << alignof()\n );\n store(ptr, value);\n if (isManaged()) {\n __link(changetype(this), changetype(value), true);\n }\n this.length_ = len;\n return len;\n }\n\n slice(start: i32 = 0, end: i32 = i32.MAX_VALUE): Array {\n var len = this.length_;\n start = start < 0 ? max(start + len, 0) : min(start, len);\n end = end < 0 ? max(end + len, 0) : min(end , len);\n len = max(end - start, 0);\n var slice = changetype>(__newArray(len, alignof(), idof>()));\n var sliceBase = slice.dataStart;\n var thisBase = this.dataStart + (start << alignof());\n if (isManaged()) {\n let off = 0;\n let end = len << alignof();\n while (off < end) {\n let ref = load(thisBase + off);\n store(sliceBase + off, ref);\n __link(changetype(slice), ref, true);\n off += sizeof();\n }\n } else {\n memory.copy(sliceBase, thisBase, len << alignof());\n }\n return slice;\n }\n\n splice(start: i32, deleteCount: i32 = i32.MAX_VALUE): Array {\n var len = this.length_;\n start = start < 0 ? max(len + start, 0) : min(start, len);\n deleteCount = max(min(deleteCount, len - start), 0);\n var result = changetype>(__newArray(deleteCount, alignof(), idof>()));\n var resultStart = result.dataStart;\n var thisStart = this.dataStart;\n var thisBase = thisStart + (start << alignof());\n memory.copy(\n resultStart,\n thisBase,\n deleteCount << alignof()\n );\n var offset = start + deleteCount;\n if (len != offset) {\n memory.copy(\n thisBase,\n thisStart + (offset << alignof()),\n (len - offset) << alignof()\n );\n }\n this.length_ = len - deleteCount;\n return result;\n }\n\n reverse(): Array {\n REVERSE(this.dataStart, this.length_);\n return this;\n }\n\n sort(comparator: (a: T, b: T) => i32 = COMPARATOR()): Array {\n SORT(this.dataStart, this.length_, comparator);\n return this;\n }\n\n join(separator: string = \",\"): string {\n var ptr = this.dataStart;\n var len = this.length_;\n if (isBoolean()) return joinBooleanArray(ptr, len, separator);\n if (isInteger()) return joinIntegerArray(ptr, len, separator);\n if (isFloat()) return joinFloatArray(ptr, len, separator);\n\n if (ASC_SHRINK_LEVEL < 1) {\n if (isString()) return joinStringArray(ptr, len, separator);\n }\n // For rest objects and arrays use general join routine\n if (isReference()) return joinReferenceArray(ptr, len, separator);\n ERROR(\"unspported element type\");\n return unreachable();\n }\n\n flat(): T {\n if (!isArray()) {\n ERROR(\"Cannot call flat() on Array where T is not an Array.\");\n }\n // Get the length and data start values\n var ptr = this.dataStart;\n var len = this.length_;\n\n // calculate the end size with an initial pass\n var size = 0;\n for (let i = 0; i < len; ++i) {\n let child = load(ptr + (i << alignof()));\n size += child == 0 ? 0 : load(child, offsetof(\"length_\"));\n }\n\n // calculate the byteLength of the resulting backing ArrayBuffer\n const align = alignof>();\n var byteLength = size << align;\n var outBuffer = changetype(__new(byteLength, idof()));\n\n // create the return value and initialize it\n var outArray = changetype(__new(offsetof(), idof()));\n store(changetype(outArray), size, offsetof(\"length_\"));\n\n // byteLength, dataStart, and buffer are all readonly\n store(changetype(outArray), byteLength, offsetof(\"byteLength\"));\n store(changetype(outArray), changetype(outBuffer), offsetof(\"dataStart\"));\n store(changetype(outArray), changetype(outBuffer), offsetof(\"buffer\"));\n __link(changetype(outArray), changetype(outBuffer), false);\n\n // set the elements\n var resultOffset: usize = 0;\n for (let i = 0; i < len; ++i) { // for each child\n let child = load(ptr + (i << alignof()));\n\n // ignore null arrays\n if (!child) continue;\n\n // copy the underlying buffer data to the result buffer\n let childDataLength = load(child, offsetof(\"length_\")) << align;\n memory.copy(\n changetype(outBuffer) + resultOffset,\n load(child, offsetof(\"dataStart\")),\n childDataLength\n );\n\n // advance the result length\n resultOffset += childDataLength;\n }\n\n // if the `valueof` type is managed, we must link each reference\n if (isManaged>()) {\n for (let i = 0; i < size; ++i) {\n let ref = load(changetype(outBuffer) + (i << usize(alignof>())));\n __link(changetype(outBuffer), ref, true);\n }\n }\n\n return outArray;\n }\n\n toString(): string {\n return this.join();\n }\n\n // RT integration\n\n @unsafe private __visit(cookie: u32): void {\n if (isManaged()) {\n let cur = this.dataStart;\n let end = cur + (this.length_ << alignof());\n while (cur < end) {\n let val = load(cur);\n if (val) __visit(val, cookie);\n cur += sizeof();\n }\n }\n __visit(changetype(this.buffer), cookie);\n }\n}\n","// Common error messages for use across the standard library. Keeping error messages compact\n// and reusing them where possible ensures minimal static data in binaries.\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_INDEXOUTOFRANGE: string = \"Index out of range\";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_VALUEOUTOFRANGE: string = \"Value out of range\";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_INVALIDLENGTH: string = \"Invalid length\";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_EMPTYARRAY: string = \"Array is empty\";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_HOLEYARRAY: string = \"Element type must be nullable if array is holey\";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_NOTIMPLEMENTED: string = \"Not implemented\";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_KEYNOTFOUND: string = \"Key does not exist\";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_ALLOCATION_TOO_LARGE: string = \"Allocation too large\";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_ALREADY_PINNED: string = \"Object already pinned\";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_NOT_PINNED: string = \"Object is not pinned\";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_URI_MALFORMED: string = \"URI malformed\";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_INVALIDDATE: string = \"Invalid Date\";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_UNPAIRED_SURROGATE: string = \"Unpaired surrogate\";\n"]} diff --git a/packages/noise/dist/index.d.ts b/packages/noise/dist/index.d.ts index 18d583726e..af1700bf44 100644 --- a/packages/noise/dist/index.d.ts +++ b/packages/noise/dist/index.d.ts @@ -4,8 +4,4 @@ declare function createSplines(splines: [number, number][]): (x: number) => numb type Perlin = (_x: number, _y: number, _z: number, denom: number) => number; declare function createPerlin(): Promise; -<<<<<<< HEAD -export { createPerlin, createSplines, fetchAndCompileWasmModule, lerp }; -======= export { Perlin, createPerlin, createSplines, fetchAndCompileWasmModule, lerp }; ->>>>>>> a4f03cd4 (chore: export types) diff --git a/packages/noise/package.json b/packages/noise/package.json new file mode 100644 index 0000000000..da10af978c --- /dev/null +++ b/packages/noise/package.json @@ -0,0 +1,40 @@ +{ + "name": "@latticexyz/noise", + "version": "2.0.0-next.17", + "license": "MIT", + "exports": { + ".": "./dist/index.js" + }, + "types": "ts/index.ts", + "scripts": { + "build": "pnpm run build:wasm && pnpm run build:js", + "build:js": "tsup", + "build:wasm": "asc assembly/index.ts --target release", + "clean": "pnpm run clean:wasm && pnpm run clean:js", + "clean:js": "rimraf dist", + "clean:wasm": "rimraf build", + "dev": "tsup --watch", + "start": "npx serve .", + "test": "forge test && tsc --noEmit", + "test:ci": "pnpm run test" + }, + "dependencies": { + "abdk-libraries-solidity": "^3.0.0", + "ds-test": "https://github.com/dapphub/ds-test.git#e282159d5170298eb2455a6c05280ab5a73a4ef0", + "forge-std": "https://github.com/foundry-rs/forge-std.git#74cfb77e308dd188d2f58864aaf44963ae6b88b1" + }, + "devDependencies": { + "@nomicfoundation/hardhat-chai-matchers": "^1.0.3", + "@nomiclabs/hardhat-ethers": "^2.1.1", + "@types/chai": "^4.3.5", + "@types/node-fetch": "^2.6.2", + "assemblyscript": "^0.21.2", + "chai": "^4.3.6", + "ethers": "^5.7.2", + "hardhat": "^2.10.2", + "keccak-wasm": "^0.10.3", + "tsup": "^6.7.0", + "web3-utils": "^1.8.0" + }, + "gitHead": "914a1e0ae4a573d685841ca2ea921435057deb8f" +} diff --git a/packages/noise/tsup.config.ts b/packages/noise/tsup.config.ts new file mode 100644 index 0000000000..59f79395cc --- /dev/null +++ b/packages/noise/tsup.config.ts @@ -0,0 +1,11 @@ +import { defineConfig } from "tsup"; + +export default defineConfig({ + entry: ["ts/index.ts"], + target: "esnext", + format: ["esm", "cjs"], + dts: true, + sourcemap: true, + clean: true, + minify: true, +}); diff --git a/packages/phaserx/dist/index.d.ts b/packages/phaserx/dist/index.d.ts new file mode 100644 index 0000000000..71fa9c5680 --- /dev/null +++ b/packages/phaserx/dist/index.d.ts @@ -0,0 +1,414 @@ +import { Observable } from 'rxjs'; +import { CoordMap } from '@latticexyz/utils'; +import * as mobx from 'mobx'; + +type TweenBuilderConfig = { + targets: Phaser.GameObjects.Sprite; +} & Omit; +/** + * Add a tween to the provided game object. + * @returns Promise that resolves when the tween is done. + */ +declare function tween(config: TweenBuilderConfig, options?: { + keepExistingTweens?: boolean; +}): Promise; +declare function removeAllTweens(gameObject: Phaser.GameObjects.GameObject): void; + +declare function mod(a: number, b: number): number; + +declare function defineScene(options: { + key: string; + preload?: (scene: Phaser.Scene) => void; + create?: (scene: Phaser.Scene) => void; + update?: (scene: Phaser.Scene) => void; +}): { + new (): { + preload(): void; + create(): void; + update(): void; + sys: Phaser.Scenes.Systems; + game: Phaser.Game; + anims: Phaser.Animations.AnimationManager; + cache: Phaser.Cache.CacheManager; + registry: Phaser.Data.DataManager; + sound: Phaser.Sound.NoAudioSoundManager | Phaser.Sound.HTML5AudioSoundManager | Phaser.Sound.WebAudioSoundManager; + textures: Phaser.Textures.TextureManager; + events: Phaser.Events.EventEmitter; + cameras: Phaser.Cameras.Scene2D.CameraManager; + add: Phaser.GameObjects.GameObjectFactory; + make: Phaser.GameObjects.GameObjectCreator; + scene: Phaser.Scenes.ScenePlugin; + children: Phaser.GameObjects.DisplayList; + lights: Phaser.GameObjects.LightsManager; + data: Phaser.Data.DataManager; + input: Phaser.Input.InputPlugin; + load: Phaser.Loader.LoaderPlugin; + time: Phaser.Time.Clock; + tweens: Phaser.Tweens.TweenManager; + physics: Phaser.Physics.Arcade.ArcadePhysics; + matter: Phaser.Physics.Matter.MatterPhysics; + facebook: Phaser.FacebookInstantGamesPlugin; + scale: Phaser.Scale.ScaleManager; + plugins: Phaser.Plugins.PluginManager; + renderer: Phaser.Renderer.WebGL.WebGLRenderer | Phaser.Renderer.Canvas.CanvasRenderer; + }; +}; + +declare function createChunks(worldView$: Observable, chunkSize: number, padding?: number): { + addedChunks$: Observable; + removedChunks$: Observable; + chunkSize: number; + visibleChunks: { + current: CoordMap; + }; +}; + +type ObjectPoolReturnType = Type extends keyof GameObjectTypes ? EmbodiedEntity : EmbodiedEntity | undefined; +declare function createObjectPool(scene: Phaser.Scene): { + get: (entity: number | string, type: Type) => ObjectPoolReturnType; + remove: (entity: number | string) => void; + objects: mobx.ObservableMap>; + groups: { + Sprite: Phaser.GameObjects.Group; + Rectangle: Phaser.GameObjects.Group; + Line: Phaser.GameObjects.Group; + Text: Phaser.GameObjects.Group; + }; + ignoreCamera: (cameraId: number, ignore: boolean) => void; +}; + +declare enum AssetType { + Image = 0, + SpriteSheet = 1, + MultiAtlas = 2 +} +declare const GameObjectClasses: { + Sprite: typeof Phaser.GameObjects.Sprite; + Rectangle: typeof Phaser.GameObjects.Rectangle; + Line: typeof Phaser.GameObjects.Line; + Text: typeof Phaser.GameObjects.Text; +}; + +declare function createCulling(objectPool: ObjectPool, camera: Camera, chunks: Chunks): { + dispose: () => void; +}; + +interface ChunkedTilemap { + size: () => number; + putTileAt: (coord: WorldCoord, tile: TileKeys, layer?: LayerKeys, tint?: number) => void; + dispose: () => void; + setVisible: (visible: boolean) => void; + visible: { + current: boolean; + }; + tileWidth: number; + tileHeight: number; +} +interface VirtualTilemap extends ChunkedTilemap { + tiles: { + [key in LayerKeys]: CoordMap; + }; +} +interface AnimatedTilemap extends VirtualTilemap { + putAnimationAt: (coord: WorldCoord, animationKey: AnimationKeys, layer?: LayerKeys) => void; + removeAnimationAt: (coord: WorldCoord, layer?: LayerKeys) => void; + pauseAnimationAt: (coord: WorldCoord, layer?: LayerKeys) => void; + resumeAnimationAt: (coord: WorldCoord, layer?: LayerKeys) => void; + registerAnimation: (animationKey: AnimationKeys, frames: TileAnimation) => void; +} +type TileAnimation = TileKeys[]; + +type ChunkedTilemapConfig = { + scene: Phaser.Scene; + tilesets: { + [key: string]: Phaser.Tilemaps.Tileset; + }; + layerConfig: { + layers: { + [id in LayerKeys]: { + tilesets: string[]; + hasHueTintShader?: boolean; + }; + }; + defaultLayer: LayerKeys; + }; + chunks: Chunks; + backgroundTile: [number, ...number[]]; + tiles: { + [layer in LayerKeys]: CoordMap; + }; + tileWidth: number; + tileHeight: number; +}; +declare function createChunkedTilemap(params: ChunkedTilemapConfig): ChunkedTilemap; + +declare function createVirtualTilemap(config: Omit, "tiles">): VirtualTilemap; + +declare function createAnimatedTilemap(config: Omit, "tiles"> & { + animationInterval: number; +}): AnimatedTilemap; + +type Key = keyof typeof Phaser.Input.Keyboard.KeyCodes | "POINTER_LEFT" | "POINTER_RIGHT"; +declare function createInput(inputPlugin: Phaser.Input.InputPlugin): { + keyboard$: Observable; + pointermove$: Observable<{ + pointer: Phaser.Input.Pointer; + }>; + pointerdown$: Observable<{ + pointer: Phaser.Input.Pointer; + event: MouseEvent; + }>; + pointerup$: Observable<{ + pointer: Phaser.Input.Pointer; + event: MouseEvent; + }>; + click$: Observable; + doubleClick$: Observable; + rightClick$: Observable; + drag$: Observable; + pressedKeys: mobx.ObservableSet; + dispose: () => void; + disableInput: () => void; + enableInput: () => void; + setCursor: (cursor: string) => void; + enabled: { + current: boolean; + }; + onKeyPress: (keySelector: (pressedKeys: Set) => boolean, callback: () => void) => void; +}; + +type Camera = { + phaserCamera: Phaser.Cameras.Scene2D.Camera; + worldView$: Observable; + zoom$: Observable; + ignore: (objectPool: ObjectPool, ignore: boolean) => void; + dispose: () => void; + centerOnCoord: (tileCoord: Coord, tileWidth: number, tileHeight: number) => void; + centerOn: (x: number, y: number) => void; + setScroll: (x: number, y: number) => void; + setZoom: (zoom: number) => void; +}; +type GameObjectTypes = typeof GameObjectClasses; +type GameObject = InstanceType; +type GameObjectFunction = (gameObject: GameObject) => Promise | void; +type GameScene = ReturnType; +/** + * @id: Unique id of the component to handle updating the same component + * @now: Use for things like visual effects that are only relevant in this moment + * @once: Use for setting parameters that should be set when initializing + * @update: Use for adding update functions that are called at 60 FPS + */ +type GameObjectComponent = { + id: string; + now?: GameObjectFunction; + once?: GameObjectFunction; + update?: GameObjectFunction; +}; +type Area = { + x: number; + y: number; + width: number; + height: number; +}; +type Coord = { + x: number; + y: number; +}; +type PixelCoord = Coord; +type ChunkCoord = Coord; +type WorldCoord = Coord; +type Chunks = ReturnType; +type ObjectPool = ReturnType; +type Culling = ReturnType; +type Input = ReturnType; +type EmbodiedEntity = { + setComponent: (component: GameObjectComponent) => void; + hasComponent: (id: string) => boolean; + removeComponent: (id: string, stop?: boolean) => void; + spawn: () => void; + despawn: () => void; + position: Coord; + id: string; + setCameraFilter: (filter: number) => void; + type: Type; +}; +type Assets = { + [key: string]: Asset; +}; +type TilesetConfig = { + [key: string]: { + assetKey: keyof A & string; + tileWidth: number; + tileHeight: number; + }; +}; +type LayerConfig> = { + [key: string]: { + tilesets: (keyof T & string)[]; + hasHueTintShader?: boolean; + }; +}; +type MapConfig, L extends LayerConfig> = { + chunkSize: number; + tileWidth: number; + tileHeight: number; + layers: { + layers: L; + defaultLayer: keyof L & string; + }; + backgroundTile: [number, ...number[]]; + animationInterval: number; + tileAnimations?: { + [key: string]: TileAnimation; + }; +}; +type AnyMapConfig> = MapConfig>; +type AnyTilesetConfig = TilesetConfig; +type AnySceneConfig = SceneConfig; +}, AnyTilesetConfig, MapsConfig, Animation[]>; +type MapsConfig> = { + [key: string]: AnyMapConfig; +}; +type Sprite = { + assetKey: keyof A & string; + frame?: string | number; +}; +type Animation = { + key: string; + assetKey: keyof A & string; + startFrame: number; + endFrame: number; + frameRate: number; + repeat: number; + prefix?: string; + suffix?: string; +}; +type SceneConfig; +}, T extends TilesetConfig, M extends MapsConfig, Ans extends Animation[]> = { + preload?: (scene: Phaser.Scene) => void; + create?: (scene: Phaser.Scene) => void; + update?: (scene: Phaser.Scene) => void; + assets: A; + sprites: S; + tilesets: T; + maps: M; + animations: Ans; +}; +type ScenesConfig = { + [key: string]: AnySceneConfig; +}; +type Scene = { + phaserScene: Phaser.Scene; + objectPool: ObjectPool; + camera: Camera; + culling: Culling; + maps: Maps; + input: Input; + config: C; +}; +type Scenes = { + [key in keyof C]: Scene; +}; +type Maps = { + [key in Keys]: AnimatedTilemap; +}; +type Asset = { + type: AssetType.Image; + key: string; + path: string; +} | { + type: AssetType.SpriteSheet; + key: string; + path: string; + options: { + frameWidth: number; + frameHeight: number; + }; +} | { + type: AssetType.MultiAtlas; + key: string; + path: string; + options: { + imagePath: string; + }; +}; +type CameraConfig = { + pinchSpeed: number; + wheelSpeed: number; + minZoom: number; + maxZoom: number; +}; +type PhaserEngineConfig = { + sceneConfig: S; + scale: Phaser.Types.Core.ScaleConfig; + cameraConfig: CameraConfig; + cullingChunkSize: number; +}; + +declare const ZERO_VECTOR: Coord; +declare function cornerTileCoordsFromRegionCoords(regionCoords: WorldCoord[], regionLength: number): Coord[]; +declare function isTileInArea(tileCoord: WorldCoord, area: Area): boolean; +declare function coordEq(a?: Coord, b?: Coord): boolean; +declare function addCoords(a: Coord, b: Coord): { + x: number; + y: number; +}; +declare function pixelToChunkCoord(pixelCoord: PixelCoord, chunkSize: number): ChunkCoord; +declare function chunkToPixelCoord(chunkCoord: ChunkCoord, chunkSize: number): PixelCoord; +declare function pixelCoordToTileCoord(pixelCoord: PixelCoord, tileWidth: number, tileHeight: number): WorldCoord; +declare function tileCoordToPixelCoord(tileCoord: WorldCoord, tileWidth: number, tileHeight: number): PixelCoord; +declare function tileCoordToChunkCoord(tileCoord: WorldCoord, tileWidth: number, tileHeight: number, chunkSize: number): ChunkCoord; +declare function chunkCoordToTileCoord(chunkCoord: ChunkCoord, tileWidth: number, tileHeight: number, chunkSize: number): WorldCoord; + +declare function load(scene: Phaser.Scene, callback: (loader: Phaser.Loader.LoaderPlugin) => void): Promise; + +declare function getChunksInArea(area: Area, chunkSize: number): CoordMap; + +declare function getObjectsInArea(groups: Phaser.GameObjects.Group[], area: Phaser.Geom.Rectangle): any[]; + +declare function generateFrames(anims: Phaser.Animations.AnimationManager, animation: Animation): Phaser.Types.Animations.AnimationFrame[]; + +declare function createPhaserEngine(options: PhaserEngineConfig): Promise<{ + game: Phaser.Game; + scenes: Scenes; + dispose: () => void; +}>; + +declare function definePhaserConfig(options: { + scenes: GameScene[]; + scale: Phaser.Types.Core.GameConfig["scale"]; +}): Phaser.Types.Core.GameConfig; + +declare function createCamera(phaserCamera: Phaser.Cameras.Scene2D.Camera, options: CameraConfig): Camera; + +declare function createDebugger(camera: Camera, chunks: Chunks, scene: Phaser.Scene, objectPool: ObjectPool, map: AnimatedTilemap): void; + +declare function defineAssetsConfig(assets: A): A; +declare function defineMapConfig, L extends LayerConfig>(config: MapConfig): MapConfig; +declare function defineSceneConfig; +}, T extends TilesetConfig, M extends MapsConfig, Ans extends Animation[]>(config: SceneConfig): SceneConfig; +declare function defineScaleConfig(config: Phaser.Types.Core.ScaleConfig): Phaser.Types.Core.ScaleConfig; +declare function defineCameraConfig(config: CameraConfig): CameraConfig; +declare function isSprite(gameObject: Phaser.GameObjects.GameObject, type: keyof GameObjectTypes): gameObject is GameObject<"Sprite">; +declare function isRectangle(gameObject: Phaser.GameObjects.GameObject, type: keyof GameObjectTypes): gameObject is GameObject<"Rectangle">; + +declare const SpritePipeline: typeof Phaser.Renderer.WebGL.Pipelines.SpriteFXPipeline; +declare class HueTintAndOutlineFXPipeline extends SpritePipeline { + static readonly KEY = "HueTintFXPipeline"; + private _tintColor; + private _outline; + private _outlineColor; + constructor(game: Phaser.Game); + onDrawSprite(obj: Phaser.GameObjects.Sprite): void; + onDraw(renderTarget: Phaser.Renderer.WebGL.RenderTarget): void; +} + +declare class MultiHueTintPipeline extends Phaser.Renderer.WebGL.Pipelines.MultiPipeline { + static readonly KEY = "MultiHueTintPipeline"; + constructor(game: Phaser.Game); +} + +export { AnimatedTilemap, Asset, AssetType, Camera, ChunkedTilemap, Coord, GameObjectClasses, HueTintAndOutlineFXPipeline, Key, MultiHueTintPipeline, TileAnimation, VirtualTilemap, ZERO_VECTOR, addCoords, chunkCoordToTileCoord, chunkToPixelCoord, coordEq, cornerTileCoordsFromRegionCoords, createAnimatedTilemap, createCamera, createChunkedTilemap, createChunks, createCulling, createDebugger, createInput, createObjectPool, createPhaserEngine, createVirtualTilemap, defineAssetsConfig, defineCameraConfig, defineMapConfig, definePhaserConfig, defineScaleConfig, defineScene, defineSceneConfig, generateFrames, getChunksInArea, getObjectsInArea, isRectangle, isSprite, isTileInArea, load, mod, pixelCoordToTileCoord, pixelToChunkCoord, removeAllTweens, tileCoordToChunkCoord, tileCoordToPixelCoord, tween }; diff --git a/packages/phaserx/dist/index.js b/packages/phaserx/dist/index.js new file mode 100644 index 0000000000..b732de721e --- /dev/null +++ b/packages/phaserx/dist/index.js @@ -0,0 +1,111 @@ +"use strict";var ee=Object.defineProperty;var He=Object.getOwnPropertyDescriptor;var Be=Object.getOwnPropertyNames;var Ye=Object.prototype.hasOwnProperty;var Xe=(t,e,o)=>e in t?ee(t,e,{enumerable:!0,configurable:!0,writable:!0,value:o}):t[e]=o;var Ze=(t,e)=>{for(var o in e)ee(t,o,{get:e[o],enumerable:!0})},Ue=(t,e,o,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Be(e))!Ye.call(t,r)&&r!==o&&ee(t,r,{get:()=>e[r],enumerable:!(i=He(e,r))||i.enumerable});return t};var Je=t=>Ue(ee({},"__esModule",{value:!0}),t);var te=(t,e,o)=>(Xe(t,typeof e!="symbol"?e+"":e,o),o);var ut={};Ze(ut,{AssetType:()=>be,GameObjectClasses:()=>ae,HueTintAndOutlineFXPipeline:()=>D,MultiHueTintPipeline:()=>E,ZERO_VECTOR:()=>Se,addCoords:()=>Oe,chunkCoordToTileCoord:()=>re,chunkToPixelCoord:()=>_,coordEq:()=>oe,cornerTileCoordsFromRegionCoords:()=>Ae,createAnimatedTilemap:()=>de,createCamera:()=>he,createChunkedTilemap:()=>ue,createChunks:()=>ce,createCulling:()=>xe,createDebugger:()=>lt,createInput:()=>ke,createObjectPool:()=>Te,createPhaserEngine:()=>at,createVirtualTilemap:()=>me,defineAssetsConfig:()=>tt,defineCameraConfig:()=>it,defineMapConfig:()=>ot,definePhaserConfig:()=>Ce,defineScaleConfig:()=>nt,defineScene:()=>ye,defineSceneConfig:()=>rt,generateFrames:()=>se,getChunksInArea:()=>ie,getObjectsInArea:()=>Le,isRectangle:()=>ge,isSprite:()=>le,isTileInArea:()=>Ke,load:()=>ne,mod:()=>I,pixelCoordToTileCoord:()=>fe,pixelToChunkCoord:()=>F,removeAllTweens:()=>B,tileCoordToChunkCoord:()=>V,tileCoordToPixelCoord:()=>Y,tween:()=>Pe});module.exports=Je(ut);var jo=require("phaser");var we=require("@latticexyz/utils");async function Pe(t,e){let[o,,i]=(0,we.deferred)(),{targets:r}=t;if(!(!r.scene||!r.scene.tweens))return e?.keepExistingTweens||B(r),r.scene.tweens.add({...t,onComplete:(s,c)=>{t.onComplete&&t.onComplete(s,c),o()}}),i}function B(t){let e=t.scene.tweens;for(let o of e.tweens)o.hasTarget(t)&&o.stop()}function I(t,e){return(t%e+e)%e}var Se={x:0,y:0};function Ae(t,e){let o=[];return t.forEach(i=>{let r={x:i.x*e,y:i.y*e},s={x:(i.x+1)*e-1,y:i.y*e},c={x:i.x*e,y:(i.y+1)*e-1},n={x:(i.x+1)*e-1,y:(i.y+1)*e-1};o.push(r,s,c,n)}),o}function Ke(t,e){return t.x>=e.x&&t.x=e.x&&t.y{i()}),r}var je=require("@latticexyz/utils");function ie(t,e){let o={x:t.x,y:t.y},i={x:t.x+t.width,y:t.y+t.height},r=F(o,e),s=F(i,e),c=s.x-r.x+1,n=s.y-r.y+1,l=new je.CoordMap;for(let d=0;di!==void 0)}function se(t,e){return e.prefix&&e.suffix?t.generateFrameNames(e.assetKey,{start:e.startFrame,end:e.endFrame,prefix:e.prefix,suffix:e.suffix}):t.generateFrameNumbers(e.assetKey,{start:e.startFrame,end:e.endFrame})}var Qe=Phaser.Renderer.WebGL.Pipelines.SpriteFXPipeline||Object,D=class extends Qe{_tintColor=new Phaser.Display.Color;_outline=0;_outlineColor=new Phaser.Display.Color;constructor(e){super({game:e,renderTarget:!0,fragShader:` + precision mediump float; + uniform sampler2D uMainSampler; + uniform vec2 uTextureSize; + uniform vec3 tintColor; + uniform int outline; + uniform vec3 outlineColor; + varying vec2 outTexCoord; + + vec3 rgb2hsv(vec3 c) + { + vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); + vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g)); + vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r)); + float d = q.x - min(q.w, q.y); + float e = 1.0e-10; + return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x); + } + + void main(void) + { + vec4 srcColor; + vec4 outColor; + vec3 hsvColor; + vec3 rgbColor; + srcColor = texture2D(uMainSampler, outTexCoord); + hsvColor = rgb2hsv(srcColor.rgb); + if (hsvColor.g == 0.0 && !(tintColor.r == 0.0 && tintColor.g == 0.0 && tintColor.b == 0.0)) + { + rgbColor = srcColor.rgb * tintColor; + } else { + rgbColor = srcColor.rgb; + } + outColor = vec4(rgbColor.r, rgbColor.g, rgbColor.b, srcColor.a); + if(outline == 1) { + vec2 distance = vec2(2.0, 2.0) / uTextureSize; + float upAlpha = texture2D(uMainSampler, outTexCoord + vec2(0.0, distance.y)).a; + float leftAlpha = texture2D(uMainSampler, outTexCoord + vec2(-distance.x, 0.0)).a; + float downAlpha = texture2D(uMainSampler, outTexCoord + vec2(0.0, -distance.y)).a; + float rightAlpha = texture2D(uMainSampler, outTexCoord + vec2(distance.x, 0.0)).a; + if (srcColor.a == 0.0 && max(max(upAlpha, downAlpha), max(leftAlpha, rightAlpha)) == 1.0) + { + outColor = vec4(outlineColor, 1.0); + } + } + gl_FragColor = outColor; + } + `})}onDrawSprite(e){let o=e.pipelineData.hueTint,i=e.pipelineData.outline,r=e.pipelineData.outlineColor,s=o||0;if(typeof s=="number"&&(s=Phaser.Display.Color.IntegerToRGB(s)),i){this._outline=1;let c=r??0;typeof c=="number"&&(c=Phaser.Display.Color.IntegerToRGB(r)),this._outlineColor.setFromRGB(c)}else this._outline=0;this._tintColor.setFromRGB(s)}onDraw(e){this.set2f("uTextureSize",this.renderer.width,this.renderer.height),this.set3f("tintColor",this._tintColor.redGL,this._tintColor.greenGL,this._tintColor.blueGL),this.set1i("outline",this._outline),this.set3f("outlineColor",this._outlineColor.redGL,this._outlineColor.greenGL,this._outlineColor.blueGL),this.drawToGame(e)}};te(D,"KEY","HueTintFXPipeline");var E=class extends Phaser.Renderer.WebGL.Pipelines.MultiPipeline{constructor(e){super({game:e,fragShader:` + #define SHADER_NAME PHASER_MULTI_V2_FS + #define numTextures %count% + precision highp float; + uniform sampler2D uMainSampler[%count%]; + varying vec2 outTexCoord; + varying float outTexId; + varying float outTintEffect; + varying vec4 outTint; + + vec4 getSampler (int index, vec2 uv) + { + for (int i = 0; i < numTextures; ++i) + { + if (i == index) + { + return texture2D(uMainSampler[i], uv); + } + } + + // Return black + return vec4(0); + } + vec3 rgb2hsv(vec3 c) + { + vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); + vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g)); + vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r)); + float d = q.x - min(q.w, q.y); + float e = 1.0e-10; + return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x); + } + vec3 hsv2rgb(vec3 c) + { + vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); + vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); + return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); + } + + void main () + { + vec4 srcColor; + vec3 hsvColor; + vec3 rgbColor; + vec4 texel = vec4(outTint.bgr * outTint.a, outTint.a); + srcColor = getSampler(int(outTexId), outTexCoord); + vec4 color = srcColor * texel; + // Multiply texture tint + vec3 hueTintColor = outTint.bgr; + if (hueTintColor != vec3(0.0, 0.0, 0.0)) { + hsvColor = rgb2hsv(srcColor.rgb); + if (hsvColor.g == 0.0 && srcColor.a == 1.) + { + vec3 color = hsv2rgb(hsvColor); + rgbColor = color * hueTintColor; + } else { + rgbColor = hsv2rgb(hsvColor); + } + color = vec4(rgbColor.r, rgbColor.g, rgbColor.b, srcColor.a); + } + gl_FragColor = color; + } + `})}};te(E,"KEY","MultiHueTintPipeline");function ye(t){let{preload:e,create:o,update:i,key:r}=t;return class extends Phaser.Scene{constructor(){super({key:r})}preload(){e&&e(this)}create(){o&&o(this);let c=this.renderer;c?.pipelines&&(c.pipelines.add(D.KEY,new D(this.game)),c.pipelines.add(E.KEY,new E(this.game)))}update(){i&&i(this)}}}function Ce(t){return{type:Phaser.WEBGL,scale:t.scale,pixelArt:!0,autoFocus:!0,render:{antialiasGL:!1,pixelArt:!0},scene:t.scenes}}var be=(i=>(i[i.Image=0]="Image",i[i.SpriteSheet=1]="SpriteSheet",i[i.MultiAtlas=2]="MultiAtlas",i))(be||{}),ae={Sprite:Phaser.GameObjects.Sprite,Rectangle:Phaser.GameObjects.Rectangle,Line:Phaser.GameObjects.Line,Text:Phaser.GameObjects.Text};var X=require("rxjs");var Z=require("@latticexyz/utils");function ce(t,e,o=100){let i={current:new Z.CoordMap},r=new X.Subject,s=new X.Subject;return t.pipe((0,X.map)(({x:n,y:l,width:d,height:a})=>ie({x:n-o,y:l-o,width:d+2*o,height:a+2*o},e))).subscribe(n=>{let l=(0,Z.subtract)(n,i.current);for(let a of l.coords())r.next(a);let d=(0,Z.subtract)(i.current,n);for(let a of d.coords())s.next(a);i.current=n}),{addedChunks$:r.asObservable(),removedChunks$:s.asObservable(),chunkSize:e,visibleChunks:i}}var Ee=require("@use-gesture/vanilla"),K=require("rxjs");function he(t,e){document.addEventListener("gesturestart",m=>m.preventDefault()),document.addEventListener("gesturechange",m=>m.preventDefault());let o=new K.BehaviorSubject(t.worldView),i=new K.BehaviorSubject(t.zoom),r=new K.Subject,s=new K.Subject,c=new Ee.Gesture(t.scene.game.canvas,{onPinch:m=>s.next(m),onWheel:m=>r.next(m)},{}),n=()=>{requestAnimationFrame(()=>o.next(t.worldView))};t.scene.scale.addListener("resize",n);function l(m){t.setZoom(m),o.next(t.worldView),i.next(m)}let d=s.pipe((0,K.throttleTime)(10),(0,K.map)(m=>{let g=i.getValue(),w=(m.offset[0]-g)*e.pinchSpeed;return g+w}),(0,K.map)(m=>Math.min(Math.max(m,e.minZoom),e.maxZoom)),(0,K.scan)((m,g)=>[m[1],g],[1,1])).subscribe(([,m])=>{c._ctrl.state.pinch&&(c._ctrl.state.pinch.offset[0]=m),l(m)}),a=r.pipe((0,K.filter)(m=>!m.pinching),(0,K.sampleTime)(10),(0,K.map)(m=>m.delta.map(g=>g*e.wheelSpeed)),(0,K.map)(m=>m.map(g=>g/t.zoom)),(0,K.map)(m=>[t.scrollX+m[0],t.scrollY+m[1]])).subscribe(([m,g])=>{t.setScroll(m,g),o.next(t.worldView)});function k(m,g){m.ignoreCamera(t.id,g)}function S(m,g,u){let w=Y(m,g,u);C(w.x,w.y)}function C(m,g){t.centerOn(m,g),requestAnimationFrame(()=>o.next(t.worldView))}function x(m,g){t.setScroll(m,g),requestAnimationFrame(()=>o.next(t.worldView))}return{phaserCamera:t,worldView$:o,zoom$:i,ignore:k,dispose:()=>{d.unsubscribe(),a.unsubscribe(),c.destroy(),t.scene.scale.removeListener("resize",n)},centerOnCoord:S,centerOn:C,setScroll:x,setZoom:l}}var q=require("mobx"),z=require("rxjs"),Me=require("@latticexyz/utils");var Re=require("@latticexyz/utils");function et(){let t=new Re.CoordMap,e=new Map;function o(s){let c=t.get(s);return c||(c=new Set,t.set(s,c)),c}function i(s,c){let n=e.get(s);(n&&o(n))?.delete(s),o(c).add(s),e.set(s,c)}function r(s){let c=e.get(s);(c&&o(c))?.delete(s),e.delete(s)}return{set:i,remove:r,get:o}}function xe(t,e,o){let i=et(),r=new Map,s=(0,z.pipe)((0,z.map)(a=>(0,z.from)(i.get(a))),(0,z.mergeMap)(a=>a),(0,z.map)(a=>t.get(a,"Existing")),(0,Me.filterNullish)()),c=o.addedChunks$.pipe(s).subscribe(a=>a.spawn()),n=o.removedChunks$.pipe(s).subscribe(a=>a.despawn());function l(a){r.get(a.id)&&console.error("Entity is being tracked multiple times",a);let k=(0,q.computed)(()=>F(a.position,o.chunkSize),{equals:oe}),S=(0,q.reaction)(()=>k.get(),C=>{i.set(a.id,C),o.visibleChunks.current.get(C)?a.spawn():a.despawn()},{fireImmediately:!0});r.set(a.id,S)}let d=(0,q.observe)(t.objects,a=>{if(a.type==="add"&&l(a.newValue),a.type==="delete"){i.remove(a.oldValue.id);let k=r.get(a.oldValue.id);k&&k(),r.delete(a.oldValue.id)}});return{dispose:()=>{for(let a of r.values())a();d(),c.unsubscribe(),n.unsubscribe()}}}var U=require("mobx");function tt(t){return t}function ot(t){return t}function rt(t){return t}function nt(t){return t}function it(t){return t}function le(t,e){return e==="Sprite"}function ge(t,e){return e==="Rectangle"}function Fe(t,e,o,i=0){let r=(0,U.observable)({x:0,y:0}),s=new Map,c=new Map,n,l={current:i};function d(u){return ze(u)?w=>{u(w),(0,U.runInAction)(()=>{r.x=w.x,r.y=w.y})}:u}async function a({id:u,now:w,once:b,update:h}){let P=b&&ze(b);P&&(0,U.runInAction)(()=>{r.x=P.x??r.x,r.y=P.y??r.y}),b&&s.set(u,d(b)),h&&c.set(u,d(h)),n&&w&&await d(w)(n),n&&b&&b(n)}function k(u){return s.has(u)||c.has(u)}function S(u,w){s.delete(u),c.delete(u),n&&(C(n,w),Ie(n,s.values()))}function C(u,w=!0){w&&(le(u,o)&&u.stop(),B(u)),u.setDepth(10),u.cameraFilter=l.current,u.resetPipeline(!0,!0),u.setScale(1,1),u.setOrigin(0,0),u.setAlpha(1),u.setScrollFactor(1),u.clearMask(),u.setData("objectPoolId",null),le(u,o)&&(u.clearTint(),u.setTexture("")),ge(u,o)&&(u.width=0,u.height=0)}function x(u){l.current=u,n&&(n.cameraFilter=u)}function m(){if(n)return;let u=e.get();C(u),Ie(u,s.values()),u.setActive(!0),u.setVisible(!0),u.setData("objectPoolId",t),n=u}function g(){n&&e.killAndHide(n),n=void 0}return{setComponent:a,hasComponent:k,removeComponent:S,spawn:m,despawn:g,position:r,id:t,setCameraFilter:x,type:o}}function Ie(t,e){if(t)for(let o of e)o(t)}function ze(t){let e,o=new Proxy({x:void 0,y:void 0},{get:(i,r)=>r==="setPosition"?(s,c)=>e={x:s,y:c}:r==="setX"?s=>e={x:s}:r==="setY"?s=>e={y:s}:()=>{},set:(i,r,s)=>(r==="x"&&(e=e?{...e,x:s}:{x:s}),r==="y"&&(e=e?{...e,y:s}:{y:s}),!0)});return t(o),e}var De=require("mobx"),We=require("@latticexyz/utils");function st(t){return Object.keys(ae).includes(t)}function Te(t){let e=(0,We.mapObject)(ae,n=>t.add.group({classType:n})),o=(0,De.observable)(new Map),i={current:0};function r(n,l){typeof n=="number"&&(n=String(n));let d=o.get(n);return st(l)?(d||(d=Fe(n,e[l],l,i.current)),o.has(n)||o.set(n,d),d):d||void 0}function s(n){typeof n=="number"&&(n=String(n));let l=o.get(n);l&&l.despawn(),o.delete(n)}function c(n,l){l?i.current|=n:i.current&=~n;for(let d of o.values())d.setCameraFilter(i.current)}return{get:r,remove:s,objects:o,groups:e,ignoreCamera:c}}var _e=require("@latticexyz/utils");var $e=require("@latticexyz/utils");function ue(t){let{scene:e,tilesets:o,layerConfig:i,chunks:r,backgroundTile:s,tiles:c,tileWidth:n,tileHeight:l}=t,d=Object.keys(i.layers).map(f=>i.layers[f].tilesets).flat();if(I(r.chunkSize,n)!==0||I(r.chunkSize,l)!==0)throw new Error("Chunks pixel size must be a multiple of tile width and height to be used with chunked tilemap");let a=new _e.CoordMap,k={x:r.chunkSize/n,y:r.chunkSize/l},S=new Set,C={current:!0};for(let f of r.visibleChunks.current.coords())p(f);let x=r.addedChunks$.subscribe(f=>{p(f)}),m=r.removedChunks$.subscribe(f=>{h(f)});S.add(()=>x?.unsubscribe()),S.add(()=>m?.unsubscribe);function g(f,v,A,j,G,L){let M={};for(let R of Object.keys(i.layers)){let J=i.layers[R],H=f.createBlankLayer(R,J.tilesets.map(pe=>o[pe]),A,j,G,L);if(!H){console.error(`Adding tilemap layer ${R} failed.`);continue}M[R]=H;let Q=v.game.renderer;J.hasHueTintShader&&Q?.pipelines&&(M[R].pipeline=Q.pipelines.get(E.KEY))}return{layers:Object.values(M),defaultLayer:M[i.defaultLayer]}}function u(f){let v=new Phaser.Tilemaps.MapData({tileHeight:l,tileWidth:n,width:k.x,height:k.y,tilesets:Object.entries(o).filter(([L])=>d.includes(L)).map(([,L])=>L)}),A=new Phaser.Tilemaps.Tilemap(e,v),j=_(f,r.chunkSize),{defaultLayer:G}=g(A,e,j.x,j.y,k.x,k.y);return A.setLayer(G),a.set(f,A),A}function w(f){return a.get(f)||u(f)}function b(f){let v=V(f,n,l,r.chunkSize);return w(v)}function h(f,v){if(!C.current&&!v||!a.has(f))return;w(f).destroy(),a.delete(f)}function P(f,v,A,j){if(!C.current)return;let G=b(f),L=G.putTileAt(v,I(f.x,k.x),I(f.y,k.y),void 0,A);if(L==null)throw new Error("putTileAt failed");L.width=G.tileWidth,L.height=G.tileHeight,j&&(L.tint=j)}function p(f){if(!C.current)return;let v=w(f),A=re(f,n,l,r.chunkSize);for(let j of Object.keys(i.layers))v.forEachTile(G=>{let L={x:A.x+G.x,y:A.y+G.y},M=j===i.defaultLayer?(0,$e.pickRandom)(s):-1,R=c[j].get(L)||M;G.index=R},void 0,void 0,void 0,void 0,void 0,void 0,j)}function T(){for(let f of a.values())f.destroy();a.clear();for(let f of S)f()}function O(){return a.size}function N(f){if(f!==C.current){C.current=f;for(let v of r.visibleChunks.current.coords())C.current?p(v):h(v,!0)}}return{size:O,putTileAt:P,dispose:T,setVisible:N,visible:C,tileWidth:n,tileHeight:l}}var Ve=require("@latticexyz/utils");function me(t){let{chunks:e,layerConfig:{layers:o,defaultLayer:i},tileWidth:r,tileHeight:s}=t,c={};for(let d of Object.keys(o))c[d]=new Ve.CoordMap;let n=ue({...t,tiles:c});function l(d,a,k,S){c[k||i].set(d,a);let C=V(d,r,s,e.chunkSize);n.visible&&e.visibleChunks.current.get(C)&&n.putTileAt(d,a,k,S)}return{...n,putTileAt:l,tiles:c}}var ve=require("@latticexyz/utils");function de(t){let{layerConfig:{layers:e,defaultLayer:o},animationInterval:i,scene:r}=t,s=o,c=0,n={},l={};for(let b of Object.keys(e))l[b]=new ve.CoordMap;let d={};for(let b of Object.keys(e))d[b]=new ve.CoordMap;let a=me(t);function k(b,h){n[b]={frames:h,index:0}}function S(b,h,P=s){l[P].set(b,h)}function C(b,h=s){let P=l[h].get(b),p=P&&n[P];l[h].delete(b),p&&a.putTileAt(b,p.frames[0],h)}function x(b,h=s){let P=l[h].get(b);P&&(d[h].set(b,P),C(b,h))}function m(b,h=s){let P=d[h].get(b);P&&(d[h].delete(b),S(b,P,h))}function g(){for(let b of Object.keys(n)){let h=n[b];h&&(h.index=I(h.index+1,h.frames.length))}for(let b of Object.keys(l)){let h=l[b];for(let P of h.coords()){let p=h.get(P),T=p&&n[p];if(!T)continue;let O=T.frames[T.index];a.putTileAt(P,O,b)}}}function u(b){bo.current),(0,y.map)(()=>({pointer:t.manager?.activePointer})),(0,W.filterNullish)()),l=(0,y.fromEvent)(document,"mousedown").pipe((0,y.filter)(()=>o.current),(0,y.map)(p=>({pointer:t.manager?.activePointer,event:p})),(0,W.filterNullish)()),d=(0,y.fromEvent)(document,"mouseup").pipe((0,y.filter)(()=>o.current),(0,y.map)(p=>({pointer:t.manager?.activePointer,event:p})),(0,W.filterNullish)()),a=(0,y.merge)(l,d).pipe((0,y.filter)(()=>o.current),(0,y.map)(({event:p})=>[p.type==="mousedown"&&p.button===0,Date.now()]),(0,y.bufferCount)(2,1),(0,y.filter)(([p,T])=>p[0]&&!T[0]&&T[1]-p[1]<250),(0,y.map)(()=>t.manager?.activePointer),(0,W.filterNullish)()),k=l.pipe((0,y.filter)(()=>o.current),(0,y.map)(()=>Date.now()),(0,y.bufferCount)(2,1),(0,y.filter)(([p,T])=>T-p<500),(0,y.throttleTime)(500),(0,y.map)(()=>t.manager?.activePointer),(0,W.filterNullish)()),S=(0,y.merge)(l,d).pipe((0,y.filter)(({pointer:p})=>o.current&&p.rightButtonDown()),(0,y.map)(()=>t.manager?.activePointer),(0,W.filterNullish)()),C=(0,y.merge)(l.pipe((0,y.map)(()=>{})),(0,y.merge)(d,n).pipe((0,y.pairwise)(),(0,y.scan)((p,[{pointer:T},{pointer:O}])=>O.leftButtonDown()?T.leftButtonDown()&&p?{...p,width:O.worldX-p.x,height:O.worldY-p.y}:{x:O.worldX,y:O.worldY,width:0,height:0}:void 0,void 0),(0,W.filterNullish)(),(0,y.filter)(p=>Math.abs(p.width)>10&&Math.abs(p.height)>10))).pipe((0,y.filter)(()=>o.current),(0,y.distinctUntilChanged)()),x=(0,$.observable)(new Set),m=t.keyboard,g=new Map;for(let p of Object.keys(Phaser.Input.Keyboard.KeyCodes))b(p);let u=c.pipe((0,y.filter)(()=>o.current)).subscribe(p=>{let T=g.get(p.keyCode);T&&(0,$.runInAction)(()=>{p.isDown&&x.add(T),p.isUp&&x.delete(T)})});e.add(()=>u?.unsubscribe());let w=(0,y.merge)(l,d).subscribe(({pointer:p})=>{(0,$.runInAction)(()=>{p.leftButtonDown()?x.add("POINTER_LEFT"):x.delete("POINTER_LEFT"),p.rightButtonDown()?x.add("POINTER_RIGHT"):x.delete("POINTER_RIGHT")})});e.add(()=>w?.unsubscribe());function b(p){if(!m){console.warn(`Adding key ${p} failed. No phaser keyboard detected.`);return}let T=m.addKey(p,!1);g.set(T.keyCode,p),T.removeAllListeners(),T.emitOnRepeat=!0,T.on("down",O=>c.next(O)),T.on("up",O=>c.next(O))}function h(p,T){let O=(0,$.reaction)(()=>p(x),N=>{N&&T()},{fireImmediately:!0});e.add(O)}function P(){for(let p of e)p()}return{keyboard$:c.asObservable(),pointermove$:n,pointerdown$:l,pointerup$:d,click$:a,doubleClick$:k,rightClick$:S,drag$:C,pressedKeys:x,dispose:P,disableInput:i,enableInput:r,setCursor:s,enabled:o,onKeyPress:h}}var qe=require("@latticexyz/utils");async function at(t){let{scale:e,sceneConfig:o,cameraConfig:i,cullingChunkSize:r}=t,s=Object.keys(o).map(C=>{let{preload:x,create:m,update:g}=o[C];return ye({key:C,preload:x,create:m,update:g})}),c=Ce({scenes:s,scale:e}),n=new Phaser.Game(c),[l,,d]=(0,qe.deferred)();n.events.on("ready",l),c.type===Phaser.HEADLESS&&n.textures.emit("ready"),await d;function a(){let C=window.innerWidth/n.scale.zoom,x=window.innerHeight/n.scale.zoom;n.scale.resize(C,x)}a(),window.addEventListener("resize",a);let k={};for(let C of n.scene.getScenes(!1)){let x=C.scene.key,m=o[x];for(let[f,v]of Object.entries(o[x].assets))await ne(C,A=>{v.type===0?A.image(f,v.path):v.type===1?A.spritesheet(f,v.path,v.options):v.type===2&&A.multiatlas(f,v.path,v.options.imagePath)});let g=Te(C),u=he(C.cameras.main,i),w=ce(u.worldView$,r),b=xe(g,u,w);for(let f of m.animations)C.anims.create({key:f.key,frames:se(C.anims,f),frameRate:f.frameRate,repeat:f.repeat});let h=new Phaser.Tilemaps.Tilemap(C,new Phaser.Tilemaps.MapData),P={};for(let[f,{assetKey:v,tileWidth:A,tileHeight:j}]of Object.entries(o[x].tilesets)){let G=h.addTilesetImage(f,v,A,j);if(!G){console.error(`Adding tileset ${f} failed.`);continue}P[f]=G}let p=P,T={};for(let f of Object.keys(m.maps)){let{layers:v,backgroundTile:A,tileWidth:j,tileHeight:G,animationInterval:L,tileAnimations:M,chunkSize:R}=m.maps[f],J=ce(u.worldView$,R),H=de({scene:C,tilesets:p,layerConfig:v,chunks:J,tileWidth:j,tileHeight:G,backgroundTile:A,animationInterval:L});if(M)for(let[Q,pe]of Object.entries(M))H.registerAnimation(Q,pe);T[f]=H}let O=T,N=ke(C.input);k[x]={phaserScene:C,objectPool:g,camera:u,culling:b,maps:O,input:N,config:o[x]}}let S=k;return{game:n,scenes:S,dispose:()=>{n.destroy(!0);for(let C of Object.keys(S)){let x=S[C];x.camera.dispose(),x.culling.dispose(),x.input.dispose();for(let m of Object.values(x.maps))m.dispose()}window.removeEventListener("resize",a)}}}var Ne=require("@latticexyz/utils");function ct(){let t=Math.random()*255,e=Math.random()*255,o=Math.random()*255;return t*65535+e*255+o}function lt(t,e,o,i,r){let s={logViewport:!1,visualizeChunks:!0,visualizeViewport:!1,logNumVisibleChunks:!1,logObjectStats:!1,logMaps:!0},c=new Ne.CoordMap,n=o.add.rectangle(0,0,1,1,16711680,.2);n.setInteractive(),n.on("pointerup",()=>{console.log("clicked",n)}),t.worldView$.subscribe(l=>{s.logViewport&&console.log(l),s.visualizeViewport&&(n.setScale(l.width,l.height),n.setPosition(l.centerX,l.centerY)),s.logObjectStats&&console.log(`Entities: ${i.objects.size} / Pool size: ${Object.values(i.groups).reduce((d,a)=>d+a.getChildren().length,0)} / Pool active: ${Object.values(i.groups).reduce((d,a)=>d+a.countActive(),0)}`),s.logMaps&&console.log("Num maps",r.size())}),e.addedChunks$.subscribe(l=>{if(s.visualizeChunks){let d=_(l,e.chunkSize),a=o.add.rectangle(d.x+e.chunkSize/2,d.y+e.chunkSize/2,e.chunkSize,e.chunkSize,ct(),.5);a.setInteractive(),a.on("pointerup",()=>{console.log("clicked",a)}),c.set(l,a)}s.logNumVisibleChunks&&console.log("Number of visible chunks: ",c.size)}),e.removedChunks$.subscribe(l=>{s.visualizeChunks&&(c.get(l)?.destroy(),c.delete(l)),s.logNumVisibleChunks&&console.log("Number of visible chunks: ",c.size)})}0&&(module.exports={AssetType,GameObjectClasses,HueTintAndOutlineFXPipeline,MultiHueTintPipeline,ZERO_VECTOR,addCoords,chunkCoordToTileCoord,chunkToPixelCoord,coordEq,cornerTileCoordsFromRegionCoords,createAnimatedTilemap,createCamera,createChunkedTilemap,createChunks,createCulling,createDebugger,createInput,createObjectPool,createPhaserEngine,createVirtualTilemap,defineAssetsConfig,defineCameraConfig,defineMapConfig,definePhaserConfig,defineScaleConfig,defineScene,defineSceneConfig,generateFrames,getChunksInArea,getObjectsInArea,isRectangle,isSprite,isTileInArea,load,mod,pixelCoordToTileCoord,pixelToChunkCoord,removeAllTweens,tileCoordToChunkCoord,tileCoordToPixelCoord,tween}); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/packages/phaserx/dist/index.js.map b/packages/phaserx/dist/index.js.map new file mode 100644 index 0000000000..a7eb594cc3 --- /dev/null +++ b/packages/phaserx/dist/index.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/index.ts","../src/utils/tween.ts","../src/utils/math.ts","../src/utils/coords.ts","../src/utils/load.ts","../src/utils/chunks.ts","../src/utils/area.ts","../src/utils/generateFrames.ts","../src/pipelines/HueTintAndOutlineFXPipeline.ts","../src/pipelines/MultiHueTintPipeline.ts","../src/defineScene.ts","../src/definePhaserConfig.ts","../src/constants.ts","../src/createChunks.ts","../src/createCamera.ts","../src/createCulling.ts","../src/createEmbodiedEntity.ts","../src/guards.ts","../src/createObjectPool.ts","../src/tilemap/createChunkedTilemap.ts","../src/tilemap/createVirtualTilemap.ts","../src/tilemap/createAnimatedTilemap.ts","../src/createInput.ts","../src/createPhaserEngine.ts","../src/createDebugger.ts"],"sourcesContent":["import \"phaser\";\n\nexport * from \"./utils\";\nexport * from \"./createPhaserEngine\";\nexport * from \"./createObjectPool\";\nexport * from \"./definePhaserConfig\";\nexport * from \"./defineScene\";\nexport * from \"./createCamera\";\nexport * from \"./createChunks\";\nexport * from \"./createDebugger\";\nexport * from \"./createCulling\";\nexport * from \"./constants\";\nexport * from \"./guards\";\nexport * from \"./pipelines\";\nexport * from \"./tilemap\";\nexport * from \"./createInput\";\nexport type { Asset, Camera, Coord } from \"./types\";\nexport type { AnimatedTilemap, ChunkedTilemap, VirtualTilemap } from \"./tilemap\";\n","import { deferred } from \"@latticexyz/utils\";\n\ntype TweenBuilderConfig = { targets: Phaser.GameObjects.Sprite } & Omit<\n Phaser.Types.Tweens.TweenBuilderConfig,\n \"targets\"\n>;\n\n/**\n * Add a tween to the provided game object.\n * @returns Promise that resolves when the tween is done.\n */\nexport async function tween(config: TweenBuilderConfig, options?: { keepExistingTweens?: boolean }) {\n const [resolve, , promise] = deferred();\n const { targets } = config;\n if (!targets.scene || !targets.scene.tweens) return;\n\n // Kill old tweens\n if (!options?.keepExistingTweens) {\n removeAllTweens(targets);\n }\n\n // Add new tween\n targets.scene.tweens.add({\n ...config,\n onComplete: (tween, targets) => {\n config.onComplete && config.onComplete(tween, targets);\n resolve();\n },\n });\n return promise;\n}\n\nexport function removeAllTweens(gameObject: Phaser.GameObjects.GameObject) {\n const tweenManager = gameObject.scene.tweens;\n for (const tween of tweenManager.tweens) {\n if (tween.hasTarget(gameObject)) {\n tween.stop();\n }\n }\n}\n","export function mod(a: number, b: number) {\n return ((a % b) + b) % b;\n}\n","import { Area, ChunkCoord, Coord, PixelCoord, WorldCoord } from \"../types\";\n\nexport const ZERO_VECTOR: Coord = { x: 0, y: 0 };\n\nexport function cornerTileCoordsFromRegionCoords(regionCoords: WorldCoord[], regionLength: number) {\n const tileCoords: WorldCoord[] = [];\n\n regionCoords.forEach((regionCoord) => {\n const topLeft = { x: regionCoord.x * regionLength, y: regionCoord.y * regionLength };\n const topRight = { x: (regionCoord.x + 1) * regionLength - 1, y: regionCoord.y * regionLength };\n const bottomLeft = { x: regionCoord.x * regionLength, y: (regionCoord.y + 1) * regionLength - 1 };\n const bottomRight = { x: (regionCoord.x + 1) * regionLength - 1, y: (regionCoord.y + 1) * regionLength - 1 };\n tileCoords.push(topLeft, topRight, bottomLeft, bottomRight);\n });\n\n return tileCoords;\n}\n\nexport function isTileInArea(tileCoord: WorldCoord, area: Area) {\n return (\n tileCoord.x >= area.x &&\n tileCoord.x < area.x + area.width &&\n tileCoord.y >= area.x &&\n tileCoord.y < area.y + area.height\n );\n}\n\nexport function coordEq(a?: Coord, b?: Coord) {\n if (!a && !b) return true;\n if (!a || !b) return false;\n return a.x === b.x && a.y === b.y;\n}\n\nexport function addCoords(a: Coord, b: Coord) {\n return {\n x: a.x + b.x,\n y: a.y + b.y,\n };\n}\n\nexport function pixelToChunkCoord(pixelCoord: PixelCoord, chunkSize: number): ChunkCoord {\n return { x: Math.floor(pixelCoord.x / chunkSize), y: Math.floor(pixelCoord.y / chunkSize) };\n}\n\nexport function chunkToPixelCoord(chunkCoord: ChunkCoord, chunkSize: number): PixelCoord {\n return { x: chunkCoord.x * chunkSize, y: chunkCoord.y * chunkSize };\n}\n\nexport function pixelCoordToTileCoord(pixelCoord: PixelCoord, tileWidth: number, tileHeight: number): WorldCoord {\n return {\n x: Math.floor(pixelCoord.x / tileWidth),\n y: Math.floor(pixelCoord.y / tileHeight),\n };\n}\n\nexport function tileCoordToPixelCoord(tileCoord: WorldCoord, tileWidth: number, tileHeight: number): PixelCoord {\n return {\n x: tileCoord.x * tileWidth,\n y: tileCoord.y * tileHeight,\n };\n}\n\nexport function tileCoordToChunkCoord(\n tileCoord: WorldCoord,\n tileWidth: number,\n tileHeight: number,\n chunkSize: number\n): ChunkCoord {\n const pixelCoord = tileCoordToPixelCoord(tileCoord, tileWidth, tileHeight);\n return pixelToChunkCoord(pixelCoord, chunkSize);\n}\n\nexport function chunkCoordToTileCoord(\n chunkCoord: ChunkCoord,\n tileWidth: number,\n tileHeight: number,\n chunkSize: number\n): WorldCoord {\n const pixelCoord = chunkToPixelCoord(chunkCoord, chunkSize);\n return pixelCoordToTileCoord(pixelCoord, tileWidth, tileHeight);\n}\n","import { deferred } from \"@latticexyz/utils\";\n\nexport async function load(scene: Phaser.Scene, callback: (loader: Phaser.Loader.LoaderPlugin) => void) {\n const loader = scene.load;\n callback(loader);\n loader.start();\n const [resolve, , promise] = deferred();\n loader.on(\"complete\", () => {\n resolve();\n });\n return promise;\n}\n","import { CoordMap } from \"@latticexyz/utils\";\nimport { Area } from \"../types\";\nimport { pixelToChunkCoord } from \"./coords\";\n\nexport function getChunksInArea(area: Area, chunkSize: number) {\n const topLeft = { x: area.x, y: area.y };\n const bottomRight = { x: area.x + area.width, y: area.y + area.height };\n\n const topLeftChunk = pixelToChunkCoord(topLeft, chunkSize);\n const bottomRightChunk = pixelToChunkCoord(bottomRight, chunkSize);\n\n const numChunksX = bottomRightChunk.x - topLeftChunk.x + 1;\n const numChunksY = bottomRightChunk.y - topLeftChunk.y + 1;\n\n const chunksInArea = new CoordMap();\n\n for (let x = 0; x < numChunksX; x++) {\n for (let y = 0; y < numChunksY; y++) {\n chunksInArea.set(\n {\n x: topLeftChunk.x + x,\n y: topLeftChunk.y + y,\n },\n true\n );\n }\n }\n\n return chunksInArea;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nexport function getObjectsInArea(groups: Phaser.GameObjects.Group[], area: Phaser.Geom.Rectangle) {\n const ids = [];\n for (const group of groups) {\n for (const object of group.getChildren() as any[]) {\n if (object.active && \"x\" in object && \"y\" in object && area.contains(object.x, object.y)) {\n console.log(\"got one\", object);\n ids.push(object);\n }\n }\n }\n return ids.filter((x) => x !== undefined);\n}\n","import { Animation, Assets } from \"../types\";\n\nexport function generateFrames(\n anims: Phaser.Animations.AnimationManager,\n animation: Animation\n): Phaser.Types.Animations.AnimationFrame[] {\n if (animation.prefix && animation.suffix) {\n return anims.generateFrameNames(animation.assetKey, {\n start: animation.startFrame,\n end: animation.endFrame,\n prefix: animation.prefix,\n suffix: animation.suffix,\n });\n } else {\n return anims.generateFrameNumbers(animation.assetKey, { start: animation.startFrame, end: animation.endFrame });\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nconst SpritePipeline = Phaser.Renderer.WebGL.Pipelines.SpriteFXPipeline || Object;\nexport class HueTintAndOutlineFXPipeline extends SpritePipeline {\n public static readonly KEY = \"HueTintFXPipeline\";\n\n private _tintColor = new Phaser.Display.Color();\n\n private _outline = 0;\n private _outlineColor = new Phaser.Display.Color();\n\n constructor(game: Phaser.Game) {\n super({\n game: game,\n renderTarget: true,\n fragShader: `\n precision mediump float;\n uniform sampler2D uMainSampler;\n uniform vec2 uTextureSize;\n uniform vec3 tintColor;\n uniform int outline;\n uniform vec3 outlineColor;\n varying vec2 outTexCoord;\n \n vec3 rgb2hsv(vec3 c)\n {\n vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);\n vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));\n vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));\n float d = q.x - min(q.w, q.y);\n float e = 1.0e-10;\n return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);\n }\n \n void main(void)\n {\n vec4 srcColor;\n vec4 outColor;\n vec3 hsvColor;\n vec3 rgbColor;\n srcColor = texture2D(uMainSampler, outTexCoord);\n hsvColor = rgb2hsv(srcColor.rgb);\n if (hsvColor.g == 0.0 && !(tintColor.r == 0.0 && tintColor.g == 0.0 && tintColor.b == 0.0))\n {\n rgbColor = srcColor.rgb * tintColor;\n } else {\n rgbColor = srcColor.rgb;\n }\n outColor = vec4(rgbColor.r, rgbColor.g, rgbColor.b, srcColor.a);\n if(outline == 1) {\n vec2 distance = vec2(2.0, 2.0) / uTextureSize;\n float upAlpha = texture2D(uMainSampler, outTexCoord + vec2(0.0, distance.y)).a;\n float leftAlpha = texture2D(uMainSampler, outTexCoord + vec2(-distance.x, 0.0)).a;\n float downAlpha = texture2D(uMainSampler, outTexCoord + vec2(0.0, -distance.y)).a;\n float rightAlpha = texture2D(uMainSampler, outTexCoord + vec2(distance.x, 0.0)).a;\n if (srcColor.a == 0.0 && max(max(upAlpha, downAlpha), max(leftAlpha, rightAlpha)) == 1.0)\n {\n outColor = vec4(outlineColor, 1.0);\n }\n }\n gl_FragColor = outColor; \n }\n `,\n });\n }\n\n onDrawSprite(obj: Phaser.GameObjects.Sprite) {\n const hueTint = (obj.pipelineData as any).hueTint;\n\n const outline = (obj.pipelineData as any).outline;\n const outlineColor = (obj.pipelineData as any).outlineColor;\n\n let tintColor = hueTint ? hueTint : 0x000000;\n if (typeof tintColor === \"number\") {\n tintColor = Phaser.Display.Color.IntegerToRGB(tintColor);\n }\n\n if (outline) {\n this._outline = 1;\n\n let _outlineColor = outlineColor ?? 0x000000;\n if (typeof _outlineColor === \"number\") {\n _outlineColor = Phaser.Display.Color.IntegerToRGB(outlineColor);\n }\n\n this._outlineColor.setFromRGB(_outlineColor);\n } else {\n this._outline = 0;\n }\n\n this._tintColor.setFromRGB(tintColor);\n }\n\n onDraw(renderTarget: Phaser.Renderer.WebGL.RenderTarget) {\n this.set2f(\"uTextureSize\", this.renderer.width, this.renderer.height);\n this.set3f(\"tintColor\", this._tintColor.redGL, this._tintColor.greenGL, this._tintColor.blueGL);\n\n this.set1i(\"outline\", this._outline);\n this.set3f(\"outlineColor\", this._outlineColor.redGL, this._outlineColor.greenGL, this._outlineColor.blueGL);\n\n this.drawToGame(renderTarget);\n }\n}\n","export class MultiHueTintPipeline extends Phaser.Renderer.WebGL.Pipelines.MultiPipeline {\n public static readonly KEY = \"MultiHueTintPipeline\";\n constructor(game: Phaser.Game) {\n super({\n game: game,\n fragShader: `\n #define SHADER_NAME PHASER_MULTI_V2_FS\n #define numTextures %count%\n precision highp float;\n uniform sampler2D uMainSampler[%count%];\n varying vec2 outTexCoord;\n varying float outTexId;\n varying float outTintEffect;\n varying vec4 outTint;\n \n vec4 getSampler (int index, vec2 uv)\n {\n for (int i = 0; i < numTextures; ++i)\n {\n if (i == index)\n {\n return texture2D(uMainSampler[i], uv);\n }\n }\n \n // Return black\n return vec4(0);\n }\n vec3 rgb2hsv(vec3 c)\n {\n vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);\n vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));\n vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));\n float d = q.x - min(q.w, q.y);\n float e = 1.0e-10;\n return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);\n }\n vec3 hsv2rgb(vec3 c)\n {\n vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);\n vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);\n return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);\n }\n \n void main ()\n {\n vec4 srcColor;\n vec3 hsvColor;\n vec3 rgbColor;\n vec4 texel = vec4(outTint.bgr * outTint.a, outTint.a);\n srcColor = getSampler(int(outTexId), outTexCoord);\n vec4 color = srcColor * texel;\n // Multiply texture tint\n vec3 hueTintColor = outTint.bgr;\n if (hueTintColor != vec3(0.0, 0.0, 0.0)) {\n hsvColor = rgb2hsv(srcColor.rgb);\n if (hsvColor.g == 0.0 && srcColor.a == 1.)\n {\n vec3 color = hsv2rgb(hsvColor);\n rgbColor = color * hueTintColor;\n } else {\n rgbColor = hsv2rgb(hsvColor);\n }\n color = vec4(rgbColor.r, rgbColor.g, rgbColor.b, srcColor.a);\n }\n gl_FragColor = color;\n }\n `,\n });\n }\n}\n","import { HueTintAndOutlineFXPipeline, MultiHueTintPipeline } from \"./pipelines\";\n\nexport function defineScene(options: {\n key: string;\n preload?: (scene: Phaser.Scene) => void;\n create?: (scene: Phaser.Scene) => void;\n update?: (scene: Phaser.Scene) => void;\n}) {\n const { preload, create, update, key } = options;\n return class GameScene extends Phaser.Scene {\n constructor() {\n super({ key });\n }\n\n preload() {\n preload && preload(this);\n }\n\n create() {\n create && create(this);\n const renderer = this.renderer as Phaser.Renderer.WebGL.WebGLRenderer;\n if (renderer?.pipelines) {\n renderer.pipelines.add(HueTintAndOutlineFXPipeline.KEY, new HueTintAndOutlineFXPipeline(this.game));\n renderer.pipelines.add(MultiHueTintPipeline.KEY, new MultiHueTintPipeline(this.game));\n }\n }\n\n update() {\n update && update(this);\n }\n };\n}\n","import { GameScene } from \"./types\";\n\nexport function definePhaserConfig(options: {\n scenes: GameScene[];\n scale: Phaser.Types.Core.GameConfig[\"scale\"];\n}): Phaser.Types.Core.GameConfig {\n return {\n type: Phaser.WEBGL,\n scale: options.scale,\n pixelArt: true,\n autoFocus: true,\n render: {\n antialiasGL: false,\n pixelArt: true,\n },\n scene: options.scenes,\n };\n}\n","export enum AssetType {\n Image,\n SpriteSheet,\n MultiAtlas,\n}\n\nexport const GameObjectClasses = {\n Sprite: Phaser.GameObjects.Sprite,\n Rectangle: Phaser.GameObjects.Rectangle,\n Line: Phaser.GameObjects.Line,\n Text: Phaser.GameObjects.Text,\n};\n","import { map, Observable, Subject } from \"rxjs\";\nimport { Area, ChunkCoord } from \"./types\";\nimport { getChunksInArea } from \"./utils\";\nimport { CoordMap, subtract } from \"@latticexyz/utils\";\n\nexport function createChunks(worldView$: Observable, chunkSize: number, padding = 100) {\n const visibleChunks = { current: new CoordMap() };\n\n const addedChunks$ = new Subject();\n const removedChunks$ = new Subject();\n\n const visibleChunkStream = worldView$.pipe(\n map(({ x, y, width, height }) =>\n // Calculate current chunks from the world view\n getChunksInArea(\n {\n x: x - padding,\n y: y - padding,\n width: width + 2 * padding,\n height: height + 2 * padding,\n },\n chunkSize\n )\n )\n );\n\n visibleChunkStream.subscribe((newVisibleChunks) => {\n const added = subtract(newVisibleChunks, visibleChunks.current); // Chunks that are visible not but not before\n for (const coord of added.coords()) addedChunks$.next(coord);\n\n const removed = subtract(visibleChunks.current, newVisibleChunks); // Chunks that were visible before but not now\n for (const coord of removed.coords()) removedChunks$.next(coord);\n\n visibleChunks.current = newVisibleChunks;\n });\n\n return {\n addedChunks$: addedChunks$.asObservable(),\n removedChunks$: removedChunks$.asObservable(),\n chunkSize,\n visibleChunks,\n };\n}\n","import { Gesture } from \"@use-gesture/vanilla\";\nimport { BehaviorSubject, filter, map, sampleTime, scan, Subject, throttleTime } from \"rxjs\";\nimport { tileCoordToPixelCoord } from \"./utils\";\nimport { Camera, CameraConfig, Coord, GestureState, ObjectPool } from \"./types\";\n\nexport function createCamera(phaserCamera: Phaser.Cameras.Scene2D.Camera, options: CameraConfig): Camera {\n // Stop default gesture events to not collide with use-gesture\n // https://github.com/pmndrs/use-gesture/blob/404e2b2ac145a45aff179c1faf5097b97414731c/documentation/pages/docs/gestures.mdx#about-the-pinch-gesture\n document.addEventListener(\"gesturestart\", (e) => e.preventDefault());\n document.addEventListener(\"gesturechange\", (e) => e.preventDefault());\n\n const worldView$ = new BehaviorSubject(phaserCamera.worldView);\n const zoom$ = new BehaviorSubject(phaserCamera.zoom);\n const wheelStream$ = new Subject>();\n const pinchStream$ = new Subject>();\n\n const gesture = new Gesture(\n phaserCamera.scene.game.canvas,\n {\n onPinch: (state) => pinchStream$.next(state),\n onWheel: (state) => wheelStream$.next(state),\n },\n {}\n );\n\n // function getNearestLevel(currentZoom: number): number {\n // return Math.pow(2, Math.floor(Math.log(currentZoom * 2) / Math.log(2))) / 2;\n // }\n\n const onResize = () => {\n requestAnimationFrame(() => worldView$.next(phaserCamera.worldView));\n };\n phaserCamera.scene.scale.addListener(\"resize\", onResize);\n\n function setZoom(zoom: number) {\n phaserCamera.setZoom(zoom);\n worldView$.next(phaserCamera.worldView);\n zoom$.next(zoom);\n }\n\n const pinchSub = pinchStream$\n .pipe(\n throttleTime(10),\n map((state) => {\n // Because this event stream is throttled, we're dropping events which contain delta data, so we need to calculate the delta ourselves.\n const zoom = zoom$.getValue();\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const delta = state.offset[0] - zoom;\n const scaledDelta = delta * options.pinchSpeed;\n return zoom + scaledDelta;\n }), // Compute pinch speed\n map((zoom) => Math.min(Math.max(zoom, options.minZoom), options.maxZoom)), // Limit zoom values\n scan((acc, curr) => [acc[1], curr], [1, 1]) // keep track of the last value to offset the map position (not implemented yet)\n )\n .subscribe(([, zoom]) => {\n // Set the gesture zoom state to the current zoom value to avoid zooming beyond the max values\n if (gesture._ctrl.state.pinch) gesture._ctrl.state.pinch.offset[0] = zoom;\n setZoom(zoom);\n });\n\n const wheelSub = wheelStream$\n .pipe(\n filter((state) => !state.pinching),\n sampleTime(10),\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n map((state) => state.delta.map((x) => x * options.wheelSpeed)), // Compute wheel speed\n map((movement) => movement.map((m: number) => m / phaserCamera.zoom)), // Adjust for current zoom value\n map((movement) => [phaserCamera.scrollX + movement[0], phaserCamera.scrollY + movement[1]]) // Compute new pinch\n )\n .subscribe(([x, y]) => {\n phaserCamera.setScroll(x, y);\n worldView$.next(phaserCamera.worldView);\n });\n\n function ignore(objectPool: ObjectPool, ignore: boolean) {\n objectPool.ignoreCamera(phaserCamera.id, ignore);\n }\n\n function centerOnCoord(tileCoord: Coord, tileWidth: number, tileHeight: number) {\n const pixelCoord = tileCoordToPixelCoord(tileCoord, tileWidth, tileHeight);\n centerOn(pixelCoord.x, pixelCoord.y);\n }\n\n function centerOn(x: number, y: number) {\n phaserCamera.centerOn(x, y);\n requestAnimationFrame(() => worldView$.next(phaserCamera.worldView));\n }\n\n function setScroll(x: number, y: number) {\n phaserCamera.setScroll(x, y);\n requestAnimationFrame(() => worldView$.next(phaserCamera.worldView));\n }\n\n return {\n phaserCamera,\n worldView$,\n zoom$,\n ignore,\n dispose: () => {\n pinchSub.unsubscribe();\n wheelSub.unsubscribe();\n gesture.destroy();\n phaserCamera.scene.scale.removeListener(\"resize\", onResize);\n },\n centerOnCoord,\n centerOn,\n setScroll,\n setZoom,\n };\n}\n","import { computed, observe, reaction } from \"mobx\";\nimport { from, map, mergeMap, pipe } from \"rxjs\";\nimport { filterNullish } from \"@latticexyz/utils\";\nimport { Camera, ChunkCoord, Chunks, Coord, EmbodiedEntity, ObjectPool } from \"./types\";\nimport { pixelToChunkCoord, coordEq } from \"./utils\";\nimport { CoordMap } from \"@latticexyz/utils\";\n\nfunction createRegistry() {\n const coordToIds = new CoordMap>();\n const idToCoord = new Map();\n\n function get(coord: Coord): Set {\n let set = coordToIds.get(coord);\n if (!set) {\n set = new Set();\n coordToIds.set(coord, set);\n }\n return set;\n }\n\n function set(id: string, coord: Coord) {\n // Remove from prev set\n const prevCoord = idToCoord.get(id);\n const idsAtPrevCoord = prevCoord && get(prevCoord);\n idsAtPrevCoord?.delete(id);\n\n // Add to new set\n const idsAtNewCoord = get(coord);\n idsAtNewCoord.add(id);\n\n // Set new idToCoord mapping\n idToCoord.set(id, coord);\n }\n\n function remove(id: string) {\n const prevCoord = idToCoord.get(id);\n const idsAtCoord = prevCoord && get(prevCoord);\n idsAtCoord?.delete(id);\n idToCoord.delete(id);\n }\n\n return { set, remove, get };\n}\n\nexport function createCulling(objectPool: ObjectPool, camera: Camera, chunks: Chunks) {\n const chunkRegistry = createRegistry();\n const disposer = new Map void>();\n\n const chunkToEntity = pipe(\n map((chunk: ChunkCoord) => from(chunkRegistry.get(chunk))), // Map to streams of entityIds\n mergeMap((entities) => entities), // Flatten the stream of entities\n map((entityId) => objectPool.get(entityId, \"Existing\")), // Map entityId to embodiedEntity\n filterNullish()\n );\n\n // Spawn entities when their chunk appears in the viewport\n const addedChunkSub = chunks.addedChunks$.pipe(chunkToEntity).subscribe((entity) => entity.spawn());\n\n // Despawn entites when their chunk disappears from the viewport\n const removedChunkSub = chunks.removedChunks$.pipe(chunkToEntity).subscribe((entity) => entity.despawn());\n\n // Keep track of entity's chunk\n function trackEntity(entity: EmbodiedEntity) {\n if (disposer.get(entity.id)) console.error(\"Entity is being tracked multiple times\", entity);\n const chunk = computed(() => pixelToChunkCoord(entity.position, chunks.chunkSize), { equals: coordEq });\n const dispose = reaction(\n () => chunk.get(),\n (newChunk) => {\n // Register the new chunk position\n chunkRegistry.set(entity.id, newChunk);\n\n // Check whether entity is in the viewport if it switched chunks\n const visible = chunks.visibleChunks.current.get(newChunk);\n if (visible) {\n entity.spawn();\n } else {\n entity.despawn();\n }\n },\n { fireImmediately: true }\n );\n disposer.set(entity.id, dispose);\n }\n\n // Setup tracking of entity chunks\n const disposeObjectPoolObserver = observe(objectPool.objects, (change) => {\n if (change.type === \"add\") {\n trackEntity(change.newValue as EmbodiedEntity);\n }\n if (change.type === \"delete\") {\n chunkRegistry.remove(change.oldValue.id);\n const dispose = disposer.get(change.oldValue.id);\n if (dispose) dispose();\n disposer.delete(change.oldValue.id);\n }\n });\n\n return {\n dispose: () => {\n for (const d of disposer.values()) d();\n disposeObjectPoolObserver();\n addedChunkSub.unsubscribe();\n removedChunkSub.unsubscribe();\n },\n };\n}\n","import { observable, runInAction } from \"mobx\";\nimport { isRectangle, isSprite } from \"./guards\";\nimport {\n EmbodiedEntity,\n GameObject,\n GameObjectComponent,\n GameObjectFunction,\n GameObjectTypes,\n PixelCoord,\n} from \"./types\";\nimport { removeAllTweens } from \"./utils\";\n\nexport function createEmbodiedEntity(\n id: string,\n group: Phaser.GameObjects.Group,\n type: Type,\n currentCameraFilter = 0\n): EmbodiedEntity {\n const position: PixelCoord = observable({ x: 0, y: 0 });\n const onOnce = new Map>();\n const onUpdate = new Map>();\n let activeGameObject: GameObject | undefined;\n const cameraFilter = { current: currentCameraFilter };\n\n /**\n * Syncronizes updates to game object positions to the EmbodiedEntity's position\n */\n function trackPositionUpdates(func: GameObjectFunction): GameObjectFunction {\n if (!modifiesPosition(func)) return func;\n\n return (gameObject) => {\n func(gameObject);\n runInAction(() => {\n position.x = gameObject.x;\n position.y = gameObject.y;\n });\n };\n }\n\n /**\n * Stores and executes the component.\n * Once and Update functions are stored.\n * Now and Once functions are executed if there is an active game object.\n * Now is executed first and awaited, before Once is executed.\n * @param component: GameObjectComponent definition, including id, and optional functions for now, once and update\n */\n async function setComponent({ id, now, once, update }: GameObjectComponent) {\n // Handle position update when setting the component\n const newPosition = once && modifiesPosition(once);\n if (newPosition) {\n runInAction(() => {\n position.x = newPosition.x ?? position.x;\n position.y = newPosition.y ?? position.y;\n });\n }\n\n // Store functions\n once && onOnce.set(id, trackPositionUpdates(once));\n update && onUpdate.set(id, trackPositionUpdates(update));\n\n // Execute functions\n if (activeGameObject && now) await trackPositionUpdates(now)(activeGameObject);\n if (activeGameObject && once) once(activeGameObject);\n }\n\n function hasComponent(id: string): boolean {\n return onOnce.has(id) || onUpdate.has(id);\n }\n\n function removeComponent(id: string, stop?: boolean) {\n onOnce.delete(id);\n onUpdate.delete(id);\n\n // Reset the entity and reapply all onOnce components\n if (activeGameObject) {\n reset(activeGameObject, stop);\n executeGameObjectFunctions(activeGameObject, onOnce.values());\n }\n }\n\n function reset(gameObject: GameObject, stop = true) {\n if (stop) {\n if (isSprite(gameObject, type)) gameObject.stop();\n removeAllTweens(gameObject);\n }\n gameObject.setDepth(10);\n gameObject.cameraFilter = cameraFilter.current;\n gameObject.resetPipeline(true, true);\n gameObject.setScale(1, 1);\n gameObject.setOrigin(0, 0);\n gameObject.setAlpha(1);\n gameObject.setScrollFactor(1);\n gameObject.clearMask();\n gameObject.setData(\"objectPoolId\", null);\n if (isSprite(gameObject, type)) {\n gameObject.clearTint();\n gameObject.setTexture(\"\");\n }\n if (isRectangle(gameObject, type)) {\n gameObject.width = 0;\n gameObject.height = 0;\n }\n }\n\n function setCameraFilter(filter: number) {\n cameraFilter.current = filter;\n if (activeGameObject) activeGameObject.cameraFilter = filter;\n }\n\n function spawn() {\n if (activeGameObject) return;\n const gameObject: GameObject = group.get();\n reset(gameObject);\n\n // Run all functions that are supposed to run once\n executeGameObjectFunctions(gameObject, onOnce.values());\n\n // Bind all functions that are supposed to run on update\n // gameObject.onUpdate = () => executeGameObjectFunctions(gameObject, onUpdate.values());\n\n gameObject.setActive(true);\n gameObject.setVisible(true);\n gameObject.setData(\"objectPoolId\", id);\n activeGameObject = gameObject;\n }\n\n function despawn() {\n if (activeGameObject) {\n group.killAndHide(activeGameObject);\n }\n activeGameObject = undefined;\n }\n\n return { setComponent, hasComponent, removeComponent, spawn, despawn, position, id, setCameraFilter, type };\n}\n\nfunction executeGameObjectFunctions(\n gameObject: GameObject,\n functions: Iterable>\n) {\n if (!gameObject) return;\n for (const func of functions) {\n func(gameObject);\n }\n}\n\nfunction modifiesPosition(\n func: GameObjectFunction\n): Partial | undefined {\n let newPosition: Partial | undefined = undefined;\n const gameObjectProxy = new Proxy(\n { x: undefined, y: undefined },\n {\n get: (_, prop) => {\n if (prop === \"setPosition\") return (x: number, y: number) => (newPosition = { x, y });\n if (prop === \"setX\") return (x: number) => (newPosition = { x });\n if (prop === \"setY\") return (y: number) => (newPosition = { y });\n return () => void 0;\n },\n set: (_, prop, value) => {\n if (prop === \"x\") newPosition = newPosition ? { ...newPosition, x: value } : { x: value };\n if (prop === \"y\") newPosition = newPosition ? { ...newPosition, y: value } : { y: value };\n return true;\n },\n }\n );\n func(gameObjectProxy as GameObject);\n return newPosition;\n}\n","import {\n Assets,\n CameraConfig,\n LayerConfig,\n MapConfig,\n MapsConfig,\n SceneConfig,\n TilesetConfig,\n Animation,\n GameObjectTypes,\n GameObject,\n Sprite,\n} from \"./types\";\n\n// Add type safety to config definitions\n\nexport function defineAssetsConfig(assets: A) {\n return assets;\n}\n\nexport function defineMapConfig, L extends LayerConfig>(\n config: MapConfig\n) {\n return config;\n}\n\nexport function defineSceneConfig<\n A extends Assets,\n S extends { [key: string]: Sprite },\n T extends TilesetConfig,\n M extends MapsConfig,\n Ans extends Animation[]\n>(config: SceneConfig) {\n return config;\n}\n\nexport function defineScaleConfig(config: Phaser.Types.Core.ScaleConfig) {\n return config;\n}\n\nexport function defineCameraConfig(config: CameraConfig) {\n return config;\n}\n\nexport function isSprite(\n gameObject: Phaser.GameObjects.GameObject,\n type: keyof GameObjectTypes\n): gameObject is GameObject<\"Sprite\"> {\n return type === \"Sprite\";\n}\n\nexport function isRectangle(\n gameObject: Phaser.GameObjects.GameObject,\n type: keyof GameObjectTypes\n): gameObject is GameObject<\"Rectangle\"> {\n return type === \"Rectangle\";\n}\n","import { EmbodiedEntity, GameObjectTypes } from \"./types\";\nimport { createEmbodiedEntity } from \"./createEmbodiedEntity\";\nimport { observable } from \"mobx\";\nimport { mapObject } from \"@latticexyz/utils\";\nimport { GameObjectClasses } from \"./constants\";\n\ntype ObjectPoolReturnType = Type extends keyof GameObjectTypes\n ? EmbodiedEntity\n : EmbodiedEntity | undefined;\n\nfunction isGameObjectType(t: string): t is keyof GameObjectTypes {\n return Object.keys(GameObjectClasses).includes(t);\n}\n\nexport function createObjectPool(scene: Phaser.Scene) {\n const groups = mapObject(GameObjectClasses, (classType) => scene.add.group({ classType })) as {\n [key in keyof typeof GameObjectClasses]: Phaser.GameObjects.Group;\n };\n\n const objects = observable(new Map>());\n const cameraFilter = { current: 0 };\n\n function get(\n entity: number | string,\n type: Type\n ): ObjectPoolReturnType {\n if (typeof entity === \"number\") entity = String(entity);\n let embodiedEntity = objects.get(entity);\n if (!isGameObjectType(type)) {\n if (!embodiedEntity) return undefined as ObjectPoolReturnType;\n return embodiedEntity as ObjectPoolReturnType;\n }\n\n // If the entity doesn't exist yet, we create a new one and track its chunk\n if (!embodiedEntity) {\n embodiedEntity = createEmbodiedEntity(entity, groups[type], type, cameraFilter.current);\n }\n\n if (!objects.has(entity)) {\n objects.set(entity, embodiedEntity);\n }\n\n // Don't spawn here, let culling take care of spawning\n // embodiedEntity.spawn();\n\n return embodiedEntity as ObjectPoolReturnType;\n }\n\n function remove(entity: number | string) {\n if (typeof entity === \"number\") entity = String(entity);\n const object = objects.get(entity);\n if (object) object.despawn();\n objects.delete(entity);\n }\n\n function ignoreCamera(cameraId: number, ignore: boolean) {\n if (ignore) {\n cameraFilter.current |= cameraId;\n } else {\n cameraFilter.current &= ~cameraId;\n }\n\n for (const embodiedEntity of objects.values()) {\n embodiedEntity.setCameraFilter(cameraFilter.current);\n }\n }\n\n return { get, remove, objects, groups, ignoreCamera };\n}\n","import { ChunkedTilemap } from \"./types\";\nimport { ChunkCoord, Chunks, WorldCoord } from \"../types\";\nimport { mod, chunkToPixelCoord, tileCoordToChunkCoord, chunkCoordToTileCoord } from \"../utils\";\nimport { CoordMap } from \"@latticexyz/utils\";\nimport { MultiHueTintPipeline } from \"../pipelines\";\nimport { pickRandom } from \"@latticexyz/utils\";\n\nexport type ChunkedTilemapConfig = {\n scene: Phaser.Scene;\n tilesets: { [key: string]: Phaser.Tilemaps.Tileset };\n layerConfig: {\n layers: { [id in LayerKeys]: { tilesets: string[]; hasHueTintShader?: boolean } };\n defaultLayer: LayerKeys;\n };\n chunks: Chunks;\n backgroundTile: [number, ...number[]];\n tiles: { [layer in LayerKeys]: CoordMap };\n tileWidth: number;\n tileHeight: number;\n};\n\nexport function createChunkedTilemap(\n params: ChunkedTilemapConfig\n): ChunkedTilemap {\n const { scene, tilesets, layerConfig, chunks, backgroundTile, tiles, tileWidth, tileHeight } = params;\n const relevantTilesets = Object.keys(layerConfig.layers)\n .map((key) => layerConfig.layers[key as LayerKeys].tilesets)\n .flat();\n\n // Chunk pixel size must be a multiple of tile witdth and height.\n if (mod(chunks.chunkSize, tileWidth) !== 0 || mod(chunks.chunkSize, tileHeight) !== 0) {\n throw new Error(\"Chunks pixel size must be a multiple of tile width and height to be used with chunked tilemap\");\n }\n\n /*****************************************************\n Setup \n *****************************************************/\n\n const maps = new CoordMap();\n const chunkTileSize = { x: chunks.chunkSize / tileWidth, y: chunks.chunkSize / tileHeight };\n const disposer = new Set<() => void>();\n const visible = { current: true };\n\n // Render all current chunks\n for (const chunk of chunks.visibleChunks.current.coords()) {\n renderChunk(chunk);\n }\n // Render maps when they're in the viewport\n const addedChunkSub = chunks.addedChunks$.subscribe((chunk) => {\n renderChunk(chunk);\n });\n\n // Remove maps that are not in the viewport\n const removedChunkSub = chunks.removedChunks$.subscribe((chunk) => {\n destroyChunk(chunk);\n });\n\n disposer.add(() => addedChunkSub?.unsubscribe());\n disposer.add(() => removedChunkSub?.unsubscribe);\n\n /*****************************************************\n Functions \n *****************************************************/\n\n function createLayers(\n map: Phaser.Tilemaps.Tilemap,\n scene: Phaser.Scene,\n x: number,\n y: number,\n width: number,\n height: number\n ): {\n layers: Phaser.Tilemaps.TilemapLayer[];\n defaultLayer: Phaser.Tilemaps.TilemapLayer;\n } {\n const layers: { [key: string]: Phaser.Tilemaps.TilemapLayer } = {};\n\n for (const key of Object.keys(layerConfig.layers)) {\n const layer = layerConfig.layers[key as LayerKeys];\n const tilemapLayer = map.createBlankLayer(\n key,\n layer.tilesets.map((id) => tilesets[id]),\n x,\n y,\n width,\n height\n );\n if (!tilemapLayer) {\n console.error(`Adding tilemap layer ${key} failed.`);\n continue;\n }\n layers[key] = tilemapLayer;\n const renderer = scene.game.renderer as Phaser.Renderer.WebGL.WebGLRenderer;\n if (layer.hasHueTintShader && renderer?.pipelines) {\n layers[key].pipeline = renderer.pipelines.get(MultiHueTintPipeline.KEY);\n }\n }\n\n return { layers: Object.values(layers), defaultLayer: layers[layerConfig.defaultLayer] };\n }\n\n function createMap(chunkCoord: WorldCoord): Phaser.Tilemaps.Tilemap {\n const data: Phaser.Tilemaps.MapData = new Phaser.Tilemaps.MapData({\n tileHeight,\n tileWidth,\n width: chunkTileSize.x,\n height: chunkTileSize.y,\n tilesets: Object.entries(tilesets)\n .filter(([key]) => relevantTilesets.includes(key))\n .map(([, tileset]) => tileset),\n });\n\n const map = new Phaser.Tilemaps.Tilemap(scene, data);\n const topLeft = chunkToPixelCoord(chunkCoord, chunks.chunkSize);\n const { defaultLayer } = createLayers(map, scene, topLeft.x, topLeft.y, chunkTileSize.x, chunkTileSize.y);\n map.setLayer(defaultLayer);\n maps.set(chunkCoord, map);\n return map;\n }\n\n function getMapAtChunkCoord(chunkCoord: WorldCoord): Phaser.Tilemaps.Tilemap {\n return maps.get(chunkCoord) || createMap(chunkCoord);\n }\n\n function getMapAtTileCoord(tileCoord: WorldCoord): Phaser.Tilemaps.Tilemap {\n const chunkCoord = tileCoordToChunkCoord(tileCoord, tileWidth, tileHeight, chunks.chunkSize);\n return getMapAtChunkCoord(chunkCoord);\n }\n\n function destroyChunk(chunkCoord: WorldCoord, force?: boolean) {\n if ((!visible.current && !force) || !maps.has(chunkCoord)) return;\n const map = getMapAtChunkCoord(chunkCoord);\n map.destroy();\n maps.delete(chunkCoord);\n }\n\n function putTileAt(coord: WorldCoord, tile: number, layer?: string, tint?: number) {\n if (!visible.current) return;\n const map = getMapAtTileCoord(coord);\n const putTile = map.putTileAt(tile, mod(coord.x, chunkTileSize.x), mod(coord.y, chunkTileSize.y), undefined, layer);\n if (putTile == null) {\n throw new Error(\"putTileAt failed\");\n }\n\n putTile.width = map.tileWidth;\n putTile.height = map.tileHeight;\n\n if (tint) {\n putTile.tint = tint;\n }\n }\n\n function renderChunk(chunkCoord: ChunkCoord) {\n if (!visible.current) return;\n const map = getMapAtChunkCoord(chunkCoord);\n const topLeftCoord = chunkCoordToTileCoord(chunkCoord, tileWidth, tileHeight, chunks.chunkSize);\n\n for (const layer of Object.keys(layerConfig.layers))\n map.forEachTile(\n (tile) => {\n const coord = { x: topLeftCoord.x + tile.x, y: topLeftCoord.y + tile.y };\n const defaultIndex = layer === layerConfig.defaultLayer ? pickRandom(backgroundTile) : -1;\n const index = tiles[layer as LayerKeys].get(coord) || defaultIndex;\n tile.index = index;\n },\n undefined,\n undefined,\n undefined,\n undefined,\n undefined,\n undefined,\n layer\n );\n }\n\n function dispose() {\n for (const map of maps.values()) {\n map.destroy();\n }\n maps.clear();\n for (const d of disposer) {\n d();\n }\n }\n\n function size() {\n return maps.size;\n }\n\n function setVisible(v: boolean) {\n if (v === visible.current) return;\n visible.current = v;\n for (const chunk of chunks.visibleChunks.current.coords()) {\n visible.current ? renderChunk(chunk) : destroyChunk(chunk, true);\n }\n }\n\n return { size, putTileAt, dispose, setVisible, visible, tileWidth, tileHeight };\n}\n","import { VirtualTilemap } from \"./types\";\nimport { WorldCoord } from \"../types\";\nimport { tileCoordToChunkCoord } from \"../utils\";\nimport { CoordMap } from \"@latticexyz/utils\";\nimport { ChunkedTilemapConfig, createChunkedTilemap } from \"./createChunkedTilemap\";\n\nexport function createVirtualTilemap(\n config: Omit, \"tiles\">\n): VirtualTilemap {\n const {\n chunks,\n layerConfig: { layers, defaultLayer },\n tileWidth,\n tileHeight,\n } = config;\n\n const tiles: { [key in LayerKeys]: CoordMap } = {} as never;\n\n for (const layerKey of Object.keys(layers)) {\n tiles[layerKey as LayerKeys] = new CoordMap();\n }\n\n const chunkedTilemap = createChunkedTilemap({ ...config, tiles });\n\n function putTileAt(coord: WorldCoord, tile: TileKeys, layer?: LayerKeys, tint?: number) {\n // Update virtual tilemap\n tiles[layer || defaultLayer].set(coord, tile);\n\n // Immediately update the physical tile if the chunk is in view\n const chunk = tileCoordToChunkCoord(coord, tileWidth, tileHeight, chunks.chunkSize);\n if (chunkedTilemap.visible && chunks.visibleChunks.current.get(chunk)) {\n chunkedTilemap.putTileAt(coord, tile, layer, tint);\n }\n }\n\n return { ...chunkedTilemap, putTileAt, tiles };\n}\n","import { AnimatedTilemap } from \".\";\nimport { WorldCoord } from \"../types\";\nimport { mod } from \"../utils\";\nimport { CoordMap } from \"@latticexyz/utils\";\nimport { ChunkedTilemapConfig } from \"./createChunkedTilemap\";\nimport { createVirtualTilemap } from \"./createVirtualTilemap\";\nimport { TileAnimation } from \"./types\";\n\nexport function createAnimatedTilemap(\n config: Omit, \"tiles\"> & { animationInterval: number }\n): AnimatedTilemap {\n const {\n layerConfig: { layers, defaultLayer },\n animationInterval,\n scene,\n } = config;\n\n const defaultLayerKey = defaultLayer as LayerKeys;\n let lastStep = 0;\n const animations: { [key in AnimationKeys]?: { frames: TileAnimation; index: number } } = {};\n\n const animatedTiles: { [key in LayerKeys]: CoordMap } = {} as never;\n for (const layerKey of Object.keys(layers)) {\n animatedTiles[layerKey as LayerKeys] = new CoordMap();\n }\n\n const pausedAnimations: { [key in LayerKeys]: CoordMap } = {} as never;\n for (const layerKey of Object.keys(layers)) {\n pausedAnimations[layerKey as LayerKeys] = new CoordMap();\n }\n\n const virtualTilemap = createVirtualTilemap(config);\n\n function registerAnimation(animationKey: AnimationKeys, frames: TileAnimation) {\n animations[animationKey] = { frames, index: 0 };\n }\n\n function putAnimationAt(coord: WorldCoord, animationKey: AnimationKeys, layer: LayerKeys = defaultLayerKey) {\n animatedTiles[layer].set(coord, animationKey);\n }\n\n function removeAnimationAt(coord: WorldCoord, layer: LayerKeys = defaultLayerKey) {\n const animationKey = animatedTiles[layer].get(coord);\n const animation = animationKey && animations[animationKey];\n animatedTiles[layer].delete(coord);\n if (animation) virtualTilemap.putTileAt(coord, animation.frames[0], layer);\n }\n\n function pauseAnimationAt(coord: WorldCoord, layer: LayerKeys = defaultLayerKey) {\n const animationKey = animatedTiles[layer].get(coord);\n if (!animationKey) return;\n pausedAnimations[layer].set(coord, animationKey);\n removeAnimationAt(coord, layer);\n }\n\n function resumeAnimationAt(coord: WorldCoord, layer: LayerKeys = defaultLayerKey) {\n const animationKey = pausedAnimations[layer].get(coord);\n if (!animationKey) return;\n pausedAnimations[layer].delete(coord);\n putAnimationAt(coord, animationKey, layer);\n }\n\n function animationStep() {\n // Increase animation index for every animation\n for (const animationKey of Object.keys(animations) as AnimationKeys[]) {\n const animation = animations[animationKey];\n if (animation) animation.index = mod(animation.index + 1, animation.frames.length);\n }\n\n // Update every animated tile\n for (const layerKey of Object.keys(animatedTiles) as LayerKeys[]) {\n const layer = animatedTiles[layerKey];\n for (const coord of layer.coords()) {\n const animationKey = layer.get(coord);\n const animation = animationKey && animations[animationKey];\n if (!animation) continue;\n const currentFrame = animation.frames[animation.index];\n virtualTilemap.putTileAt(coord, currentFrame, layerKey);\n }\n }\n }\n\n function update(time: number) {\n if (time < lastStep + animationInterval) return;\n lastStep = time;\n animationStep();\n }\n\n function dispose() {\n scene.events.removeListener(\"update\", update);\n virtualTilemap.dispose();\n }\n\n scene.events.addListener(\"update\", update);\n\n return {\n ...virtualTilemap,\n putAnimationAt,\n removeAnimationAt,\n pauseAnimationAt,\n resumeAnimationAt,\n registerAnimation,\n dispose,\n } as unknown as AnimatedTilemap;\n}\n","import {\n bufferCount,\n distinctUntilChanged,\n filter,\n fromEvent,\n map,\n merge,\n Observable,\n pairwise,\n scan,\n Subject,\n throttleTime,\n} from \"rxjs\";\nimport { observable, reaction, runInAction } from \"mobx\";\nimport { Area } from \"./types\";\nimport { filterNullish } from \"@latticexyz/utils\";\n\nexport type Key = keyof typeof Phaser.Input.Keyboard.KeyCodes | \"POINTER_LEFT\" | \"POINTER_RIGHT\";\n\nexport function createInput(inputPlugin: Phaser.Input.InputPlugin) {\n const disposers = new Set<() => void>();\n const enabled = { current: true };\n\n inputPlugin.mouse?.disableContextMenu();\n\n function disableInput() {\n enabled.current = false;\n }\n\n function enableInput() {\n enabled.current = true;\n }\n\n function setCursor(cursor: string) {\n inputPlugin.setDefaultCursor(cursor);\n }\n\n const keyboard$ = new Subject();\n\n const pointermove$ = fromEvent(document, \"mousemove\").pipe(\n filter(() => enabled.current),\n map(() => {\n return { pointer: inputPlugin.manager?.activePointer };\n }),\n filterNullish()\n );\n\n const pointerdown$: Observable<{ pointer: Phaser.Input.Pointer; event: MouseEvent }> = fromEvent(\n document,\n \"mousedown\"\n ).pipe(\n filter(() => enabled.current),\n map((event) => ({ pointer: inputPlugin.manager?.activePointer, event: event as MouseEvent })),\n filterNullish()\n );\n\n const pointerup$: Observable<{ pointer: Phaser.Input.Pointer; event: MouseEvent }> = fromEvent(\n document,\n \"mouseup\"\n ).pipe(\n filter(() => enabled.current),\n map((event) => ({ pointer: inputPlugin.manager?.activePointer, event: event as MouseEvent })),\n filterNullish()\n );\n\n // Click stream\n const click$ = merge(pointerdown$, pointerup$).pipe(\n filter(() => enabled.current),\n map<{ pointer: Phaser.Input.Pointer; event: MouseEvent }, [boolean, number]>(({ event }) => [\n event.type === \"mousedown\" && event.button === 0,\n Date.now(),\n ]), // Map events to whether the left button is down and the current timestamp\n bufferCount(2, 1), // Store the last two timestamps\n filter(([prev, now]) => prev[0] && !now[0] && now[1] - prev[1] < 250), // Only care if button was pressed before and is not anymore and it happened within 500ms\n map(() => inputPlugin.manager?.activePointer), // Return the current pointer\n filterNullish()\n );\n\n // Double click stream\n const doubleClick$ = pointerdown$.pipe(\n filter(() => enabled.current),\n map(() => Date.now()), // Get current timestamp\n bufferCount(2, 1), // Store the last two timestamps\n filter(([prev, now]) => now - prev < 500), // Filter clicks with more than 500ms distance\n throttleTime(500), // A third click within 500ms is not counted as another double click\n map(() => inputPlugin.manager?.activePointer), // Return the current pointer\n filterNullish()\n );\n\n // Right click stream\n const rightClick$ = merge(pointerdown$, pointerup$).pipe(\n filter(({ pointer }) => enabled.current && pointer.rightButtonDown()),\n map(() => inputPlugin.manager?.activePointer), // Return the current pointer\n filterNullish()\n );\n\n // Drag stream\n const drag$ = merge(\n pointerdown$.pipe(map(() => undefined)), // Reset the drag on left click\n merge(pointerup$, pointermove$).pipe(\n pairwise(), // Take the last two move or pointerup events\n scan<[{ pointer: Phaser.Input.Pointer }, { pointer: Phaser.Input.Pointer }], Area | undefined>(\n (acc, [{ pointer: prev }, { pointer: curr }]) =>\n curr.leftButtonDown() // If the left butten is pressed...\n ? prev.leftButtonDown() && acc // If the previous event wasn't mouseup and if the drag already started...\n ? { ...acc, width: curr.worldX - acc.x, height: curr.worldY - acc.y } // Update the width/height\n : { x: curr.worldX, y: curr.worldY, width: 0, height: 0 } // Else start the drag\n : undefined,\n undefined\n ),\n filterNullish(),\n filter((area) => Math.abs(area.width) > 10 && Math.abs(area.height) > 10) // Prevent clicking to be mistaken as a drag\n )\n ).pipe(\n filter(() => enabled.current),\n distinctUntilChanged() // Prevent same value to be emitted in a row\n );\n\n const pressedKeys = observable(new Set());\n const phaserKeyboard = inputPlugin.keyboard;\n const codeToKey = new Map();\n\n // Listen to all keys\n for (const key of Object.keys(Phaser.Input.Keyboard.KeyCodes)) addKey(key);\n\n // Subscriptions\n const keySub = keyboard$.pipe(filter(() => enabled.current)).subscribe((key) => {\n const keyName = codeToKey.get(key.keyCode);\n if (!keyName) return;\n runInAction(() => {\n if (key.isDown) pressedKeys.add(keyName);\n if (key.isUp) pressedKeys.delete(keyName);\n });\n });\n disposers.add(() => keySub?.unsubscribe());\n\n const pointerSub = merge(pointerdown$, pointerup$).subscribe(({ pointer }) => {\n runInAction(() => {\n if (pointer.leftButtonDown()) pressedKeys.add(\"POINTER_LEFT\");\n else pressedKeys.delete(\"POINTER_LEFT\");\n\n if (pointer.rightButtonDown()) pressedKeys.add(\"POINTER_RIGHT\");\n else pressedKeys.delete(\"POINTER_RIGHT\");\n });\n //\n });\n disposers.add(() => pointerSub?.unsubscribe());\n\n // Adds a key to include in the state\n function addKey(key: string) {\n if (!phaserKeyboard) {\n console.warn(`Adding key ${key} failed. No phaser keyboard detected.`);\n return;\n }\n\n // Add the key to the phaser keyboard input plugin\n const keyObj = phaserKeyboard.addKey(key, false);\n // Store the cleartext key map\n codeToKey.set(keyObj.keyCode, key as Key);\n\n keyObj.removeAllListeners();\n keyObj.emitOnRepeat = true;\n keyObj.on(\"down\", (keyEvent: Phaser.Input.Keyboard.Key) => keyboard$.next(keyEvent));\n keyObj.on(\"up\", (keyEvent: Phaser.Input.Keyboard.Key) => keyboard$.next(keyEvent));\n }\n\n function onKeyPress(keySelector: (pressedKeys: Set) => boolean, callback: () => void) {\n const disposer = reaction(\n () => keySelector(pressedKeys),\n (passes) => {\n if (passes) callback();\n },\n { fireImmediately: true }\n );\n disposers.add(disposer);\n }\n\n function dispose() {\n for (const disposer of disposers) {\n disposer();\n }\n }\n\n return {\n keyboard$: keyboard$.asObservable(),\n pointermove$,\n pointerdown$,\n pointerup$,\n click$,\n doubleClick$,\n rightClick$,\n drag$,\n pressedKeys,\n dispose,\n disableInput,\n enableInput,\n setCursor,\n enabled,\n onKeyPress,\n };\n}\n","import { defineScene } from \"./defineScene\";\nimport { definePhaserConfig } from \"./definePhaserConfig\";\nimport { load } from \"./utils\";\nimport { AssetType } from \"./constants\";\nimport { Scenes, Maps, ScenesConfig, Tilesets, PhaserEngineConfig } from \"./types\";\nimport { createChunks } from \"./createChunks\";\nimport { createCamera } from \"./createCamera\";\nimport { createCulling } from \"./createCulling\";\nimport { createObjectPool } from \"./createObjectPool\";\nimport { createAnimatedTilemap } from \"./tilemap\";\nimport { generateFrames } from \"./utils\";\nimport { createInput } from \"./createInput\";\nimport { deferred } from \"@latticexyz/utils\";\n\nexport async function createPhaserEngine(options: PhaserEngineConfig) {\n const { scale, sceneConfig, cameraConfig, cullingChunkSize } = options;\n\n // Set up Phaser scenes\n const sceneConstructors = Object.keys(sceneConfig).map((key) => {\n const { preload, create, update } = sceneConfig[key];\n return defineScene({ key, preload, create, update });\n });\n\n const phaserConfig = definePhaserConfig({ scenes: sceneConstructors, scale });\n const game = new Phaser.Game(phaserConfig);\n\n // Wait for phaser to boot\n const [resolve, , promise] = deferred();\n\n game.events.on(\"ready\", resolve);\n\n // skip texture loading in headless mode for unit testing\n if (phaserConfig.type === Phaser.HEADLESS) {\n game.textures.emit(\"ready\");\n }\n\n await promise;\n\n // Bind the game's size to the window size\n function resize() {\n const width = window.innerWidth / game.scale.zoom;\n const height = window.innerHeight / game.scale.zoom;\n game.scale.resize(width, height);\n }\n resize();\n window.addEventListener(\"resize\", resize);\n\n // Create scenes object\n const partialScenes: Partial> = {};\n\n for (const phaserScene of game.scene.getScenes(false)) {\n const key = phaserScene.scene.key as keyof S;\n const config = sceneConfig[key];\n\n // Load assets\n for (const [assetKey, asset] of Object.entries(sceneConfig[key].assets)) {\n await load(phaserScene, (loader) => {\n if (asset.type === AssetType.Image) {\n loader.image(assetKey, asset.path);\n } else if (asset.type === AssetType.SpriteSheet) {\n loader.spritesheet(assetKey, asset.path, asset.options);\n } else if (asset.type === AssetType.MultiAtlas) {\n loader.multiatlas(assetKey, asset.path, asset.options.imagePath);\n }\n });\n }\n\n // Setup object pool\n const objectPool = createObjectPool(phaserScene);\n\n // Setup camera\n const camera = createCamera(phaserScene.cameras.main, cameraConfig);\n\n // Setup chunks for viewport culling\n const cullingChunks = createChunks(camera.worldView$, cullingChunkSize);\n\n // Setup viewport culling\n const culling = createCulling(objectPool, camera, cullingChunks);\n\n // Setup sprite animations\n for (const anim of config.animations) {\n phaserScene.anims.create({\n key: anim.key,\n frames: generateFrames(phaserScene.anims, anim),\n frameRate: anim.frameRate,\n repeat: anim.repeat,\n });\n }\n\n // Setup tilesets\n const emptyMap = new Phaser.Tilemaps.Tilemap(phaserScene, new Phaser.Tilemaps.MapData());\n const partialTilesets: Tilesets = {};\n for (const [tilesetKey, { assetKey, tileWidth, tileHeight }] of Object.entries(sceneConfig[key][\"tilesets\"])) {\n const tileset = emptyMap.addTilesetImage(tilesetKey, assetKey, tileWidth, tileHeight);\n if (!tileset) {\n console.error(`Adding tileset ${tilesetKey} failed.`);\n continue;\n }\n partialTilesets[tilesetKey] = tileset;\n }\n const tilesets = partialTilesets as Tilesets;\n\n // Setup maps\n const partialMaps: Partial> = {};\n for (const mapKey of Object.keys(config.maps)) {\n const { layers, backgroundTile, tileWidth, tileHeight, animationInterval, tileAnimations, chunkSize } =\n config.maps[mapKey];\n\n // Setup chunks\n const chunks = createChunks(camera.worldView$, chunkSize);\n\n const map = createAnimatedTilemap({\n scene: phaserScene,\n tilesets,\n layerConfig: layers,\n chunks,\n tileWidth,\n tileHeight,\n backgroundTile,\n animationInterval,\n });\n\n // Register tilemap animations\n if (tileAnimations) {\n for (const [key, frames] of Object.entries(tileAnimations)) {\n map.registerAnimation(key, frames);\n }\n }\n\n partialMaps[mapKey as keyof (typeof sceneConfig)[typeof key][\"maps\"]] = map;\n }\n const maps = partialMaps as Maps;\n\n const input = createInput(phaserScene.input);\n\n partialScenes[key] = { phaserScene, objectPool, camera, culling, maps, input, config: sceneConfig[key] };\n }\n const scenes = partialScenes as Scenes;\n\n return {\n game,\n scenes,\n dispose: () => {\n game.destroy(true);\n for (const key of Object.keys(scenes)) {\n const scene = scenes[key];\n scene.camera.dispose();\n scene.culling.dispose();\n scene.input.dispose();\n for (const map of Object.values(scene.maps)) {\n map.dispose();\n }\n }\n\n window.removeEventListener(\"resize\", resize);\n },\n };\n}\n","import { chunkToPixelCoord } from \"./utils\";\nimport { CoordMap } from \"@latticexyz/utils\";\nimport { Camera, Chunks, ObjectPool } from \"./types\";\nimport { AnimatedTilemap } from \"./tilemap\";\n\nfunction getRandomColor() {\n const red = Math.random() * 0xff;\n const green = Math.random() * 0xff;\n const blue = Math.random() * 0xff;\n return red * 0xffff + green * 0xff + blue;\n}\n\nexport function createDebugger(\n camera: Camera,\n chunks: Chunks,\n scene: Phaser.Scene,\n objectPool: ObjectPool,\n map: AnimatedTilemap\n) {\n const options = {\n logViewport: false,\n visualizeChunks: true,\n visualizeViewport: false,\n logNumVisibleChunks: false,\n logObjectStats: false,\n logMaps: true,\n };\n\n const visualChunks = new CoordMap();\n const worldViewRect = scene.add.rectangle(0, 0, 1, 1, 0xff0000, 0.2);\n worldViewRect.setInteractive();\n worldViewRect.on(\"pointerup\", () => {\n console.log(\"clicked\", worldViewRect);\n });\n\n camera.worldView$.subscribe((worldView) => {\n if (options.logViewport) {\n console.log(worldView);\n }\n\n if (options.visualizeViewport) {\n worldViewRect.setScale(worldView.width, worldView.height);\n worldViewRect.setPosition(worldView.centerX, worldView.centerY);\n }\n\n if (options.logObjectStats) {\n console.log(\n `Entities: ${objectPool.objects.size} / Pool size: ${Object.values(objectPool.groups).reduce(\n (acc, curr) => acc + curr.getChildren().length,\n 0\n )} / Pool active: ${Object.values(objectPool.groups).reduce((acc, curr) => acc + curr.countActive(), 0)}`\n );\n }\n\n if (options.logMaps) {\n console.log(\"Num maps\", map.size());\n }\n });\n\n chunks.addedChunks$.subscribe((chunk) => {\n if (options.visualizeChunks) {\n const pixelCoord = chunkToPixelCoord(chunk, chunks.chunkSize);\n const visualChunk = scene.add.rectangle(\n pixelCoord.x + chunks.chunkSize / 2,\n pixelCoord.y + chunks.chunkSize / 2,\n chunks.chunkSize,\n chunks.chunkSize,\n getRandomColor(),\n 0.5\n );\n visualChunk.setInteractive();\n visualChunk.on(\"pointerup\", () => {\n console.log(\"clicked\", visualChunk);\n });\n visualChunks.set(chunk, visualChunk);\n }\n\n if (options.logNumVisibleChunks) {\n console.log(\"Number of visible chunks: \", visualChunks.size);\n }\n });\n\n chunks.removedChunks$.subscribe((chunk) => {\n if (options.visualizeChunks) {\n visualChunks.get(chunk)?.destroy();\n visualChunks.delete(chunk);\n }\n\n if (options.logNumVisibleChunks) {\n console.log(\"Number of visible chunks: \", visualChunks.size);\n }\n });\n}\n"],"mappings":"ukBAAA,IAAAA,GAAA,GAAAC,GAAAD,GAAA,eAAAE,GAAA,sBAAAC,GAAA,gCAAAC,EAAA,yBAAAC,EAAA,gBAAAC,GAAA,cAAAC,GAAA,0BAAAC,GAAA,sBAAAC,EAAA,YAAAC,GAAA,qCAAAC,GAAA,0BAAAC,GAAA,iBAAAC,GAAA,yBAAAC,GAAA,iBAAAC,GAAA,kBAAAC,GAAA,mBAAAC,GAAA,gBAAAC,GAAA,qBAAAC,GAAA,uBAAAC,GAAA,yBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,oBAAAC,GAAA,uBAAAC,GAAA,sBAAAC,GAAA,gBAAAC,GAAA,sBAAAC,GAAA,mBAAAC,GAAA,oBAAAC,GAAA,qBAAAC,GAAA,gBAAAC,GAAA,aAAAC,GAAA,iBAAAC,GAAA,SAAAC,GAAA,QAAAC,EAAA,0BAAAC,GAAA,sBAAAC,EAAA,oBAAAC,EAAA,0BAAAC,EAAA,0BAAAC,EAAA,UAAAC,KAAA,eAAAC,GAAA3C,IAAA,IAAA4C,GAAO,kBCAP,IAAAC,GAAyB,6BAWzB,eAAsBC,GAAMC,EAA4BC,EAA4C,CAClG,GAAM,CAACC,EAAS,CAAEC,CAAO,KAAI,aAAe,EACtC,CAAE,QAAAC,CAAQ,EAAIJ,EACpB,GAAI,GAACI,EAAQ,OAAS,CAACA,EAAQ,MAAM,QAGrC,OAAKH,GAAS,oBACZI,EAAgBD,CAAO,EAIzBA,EAAQ,MAAM,OAAO,IAAI,CACvB,GAAGJ,EACH,WAAY,CAACD,EAAOK,IAAY,CAC9BJ,EAAO,YAAcA,EAAO,WAAWD,EAAOK,CAAO,EACrDF,EAAQ,CACV,CACF,CAAC,EACMC,CACT,CAEO,SAASE,EAAgBC,EAA2C,CACzE,IAAMC,EAAeD,EAAW,MAAM,OACtC,QAAWP,KAASQ,EAAa,OAC3BR,EAAM,UAAUO,CAAU,GAC5BP,EAAM,KAAK,CAGjB,CCvCO,SAASS,EAAIC,EAAWC,EAAW,CACxC,OAASD,EAAIC,EAAKA,GAAKA,CACzB,CCAO,IAAMC,GAAqB,CAAE,EAAG,EAAG,EAAG,CAAE,EAExC,SAASC,GAAiCC,EAA4BC,EAAsB,CACjG,IAAMC,EAA2B,CAAC,EAElC,OAAAF,EAAa,QAASG,GAAgB,CACpC,IAAMC,EAAU,CAAE,EAAGD,EAAY,EAAIF,EAAc,EAAGE,EAAY,EAAIF,CAAa,EAC7EI,EAAW,CAAE,GAAIF,EAAY,EAAI,GAAKF,EAAe,EAAG,EAAGE,EAAY,EAAIF,CAAa,EACxFK,EAAa,CAAE,EAAGH,EAAY,EAAIF,EAAc,GAAIE,EAAY,EAAI,GAAKF,EAAe,CAAE,EAC1FM,EAAc,CAAE,GAAIJ,EAAY,EAAI,GAAKF,EAAe,EAAG,GAAIE,EAAY,EAAI,GAAKF,EAAe,CAAE,EAC3GC,EAAW,KAAKE,EAASC,EAAUC,EAAYC,CAAW,CAC5D,CAAC,EAEML,CACT,CAEO,SAASM,GAAaC,EAAuBC,EAAY,CAC9D,OACED,EAAU,GAAKC,EAAK,GACpBD,EAAU,EAAIC,EAAK,EAAIA,EAAK,OAC5BD,EAAU,GAAKC,EAAK,GACpBD,EAAU,EAAIC,EAAK,EAAIA,EAAK,MAEhC,CAEO,SAASC,GAAQC,EAAWC,EAAW,CAC5C,MAAI,CAACD,GAAK,CAACC,EAAU,GACjB,CAACD,GAAK,CAACC,EAAU,GACdD,EAAE,IAAMC,EAAE,GAAKD,EAAE,IAAMC,EAAE,CAClC,CAEO,SAASC,GAAUF,EAAUC,EAAU,CAC5C,MAAO,CACL,EAAGD,EAAE,EAAIC,EAAE,EACX,EAAGD,EAAE,EAAIC,EAAE,CACb,CACF,CAEO,SAASE,EAAkBC,EAAwBC,EAA+B,CACvF,MAAO,CAAE,EAAG,KAAK,MAAMD,EAAW,EAAIC,CAAS,EAAG,EAAG,KAAK,MAAMD,EAAW,EAAIC,CAAS,CAAE,CAC5F,CAEO,SAASC,EAAkBC,EAAwBF,EAA+B,CACvF,MAAO,CAAE,EAAGE,EAAW,EAAIF,EAAW,EAAGE,EAAW,EAAIF,CAAU,CACpE,CAEO,SAASG,GAAsBJ,EAAwBK,EAAmBC,EAAgC,CAC/G,MAAO,CACL,EAAG,KAAK,MAAMN,EAAW,EAAIK,CAAS,EACtC,EAAG,KAAK,MAAML,EAAW,EAAIM,CAAU,CACzC,CACF,CAEO,SAASC,EAAsBd,EAAuBY,EAAmBC,EAAgC,CAC9G,MAAO,CACL,EAAGb,EAAU,EAAIY,EACjB,EAAGZ,EAAU,EAAIa,CACnB,CACF,CAEO,SAASE,EACdf,EACAY,EACAC,EACAL,EACY,CACZ,IAAMD,EAAaO,EAAsBd,EAAWY,EAAWC,CAAU,EACzE,OAAOP,EAAkBC,EAAYC,CAAS,CAChD,CAEO,SAASQ,GACdN,EACAE,EACAC,EACAL,EACY,CACZ,IAAMD,EAAaE,EAAkBC,EAAYF,CAAS,EAC1D,OAAOG,GAAsBJ,EAAYK,EAAWC,CAAU,CAChE,CChFA,IAAAI,GAAyB,6BAEzB,eAAsBC,GAAKC,EAAqBC,EAAwD,CACtG,IAAMC,EAASF,EAAM,KACrBC,EAASC,CAAM,EACfA,EAAO,MAAM,EACb,GAAM,CAACC,EAAS,CAAEC,CAAO,KAAI,aAAe,EAC5C,OAAAF,EAAO,GAAG,WAAY,IAAM,CAC1BC,EAAQ,CACV,CAAC,EACMC,CACT,CCXA,IAAAC,GAAyB,6BAIlB,SAASC,GAAgBC,EAAYC,EAAmB,CAC7D,IAAMC,EAAU,CAAE,EAAGF,EAAK,EAAG,EAAGA,EAAK,CAAE,EACjCG,EAAc,CAAE,EAAGH,EAAK,EAAIA,EAAK,MAAO,EAAGA,EAAK,EAAIA,EAAK,MAAO,EAEhEI,EAAeC,EAAkBH,EAASD,CAAS,EACnDK,EAAmBD,EAAkBF,EAAaF,CAAS,EAE3DM,EAAaD,EAAiB,EAAIF,EAAa,EAAI,EACnDI,EAAaF,EAAiB,EAAIF,EAAa,EAAI,EAEnDK,EAAe,IAAI,YAEzB,QAASC,EAAI,EAAGA,EAAIH,EAAYG,IAC9B,QAASC,EAAI,EAAGA,EAAIH,EAAYG,IAC9BF,EAAa,IACX,CACE,EAAGL,EAAa,EAAIM,EACpB,EAAGN,EAAa,EAAIO,CACtB,EACA,EACF,EAIJ,OAAOF,CACT,CC5BO,SAASG,GAAiBC,EAAoCC,EAA6B,CAChG,IAAMC,EAAM,CAAC,EACb,QAAWC,KAASH,EAClB,QAAWI,KAAUD,EAAM,YAAY,EACjCC,EAAO,QAAU,MAAOA,GAAU,MAAOA,GAAUH,EAAK,SAASG,EAAO,EAAGA,EAAO,CAAC,IACrF,QAAQ,IAAI,UAAWA,CAAM,EAC7BF,EAAI,KAAKE,CAAM,GAIrB,OAAOF,EAAI,OAAQG,GAAMA,IAAM,MAAS,CAC1C,CCVO,SAASC,GACdC,EACAC,EAC0C,CAC1C,OAAIA,EAAU,QAAUA,EAAU,OACzBD,EAAM,mBAAmBC,EAAU,SAAU,CAClD,MAAOA,EAAU,WACjB,IAAKA,EAAU,SACf,OAAQA,EAAU,OAClB,OAAQA,EAAU,MACpB,CAAC,EAEMD,EAAM,qBAAqBC,EAAU,SAAU,CAAE,MAAOA,EAAU,WAAY,IAAKA,EAAU,QAAS,CAAC,CAElH,CCfA,IAAMC,GAAiB,OAAO,SAAS,MAAM,UAAU,kBAAoB,OAC9DC,EAAN,cAA0CD,EAAe,CAGtD,WAAa,IAAI,OAAO,QAAQ,MAEhC,SAAW,EACX,cAAgB,IAAI,OAAO,QAAQ,MAE3C,YAAYE,EAAmB,CAC7B,MAAM,CACJ,KAAMA,EACN,aAAc,GACd,WAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAgDd,CAAC,CACH,CAEA,aAAaC,EAAgC,CAC3C,IAAMC,EAAWD,EAAI,aAAqB,QAEpCE,EAAWF,EAAI,aAAqB,QACpCG,EAAgBH,EAAI,aAAqB,aAE3CI,EAAYH,GAAoB,EAKpC,GAJI,OAAOG,GAAc,WACvBA,EAAY,OAAO,QAAQ,MAAM,aAAaA,CAAS,GAGrDF,EAAS,CACX,KAAK,SAAW,EAEhB,IAAIG,EAAgBF,GAAgB,EAChC,OAAOE,GAAkB,WAC3BA,EAAgB,OAAO,QAAQ,MAAM,aAAaF,CAAY,GAGhE,KAAK,cAAc,WAAWE,CAAa,OAE3C,KAAK,SAAW,EAGlB,KAAK,WAAW,WAAWD,CAAS,CACtC,CAEA,OAAOE,EAAkD,CACvD,KAAK,MAAM,eAAgB,KAAK,SAAS,MAAO,KAAK,SAAS,MAAM,EACpE,KAAK,MAAM,YAAa,KAAK,WAAW,MAAO,KAAK,WAAW,QAAS,KAAK,WAAW,MAAM,EAE9F,KAAK,MAAM,UAAW,KAAK,QAAQ,EACnC,KAAK,MAAM,eAAgB,KAAK,cAAc,MAAO,KAAK,cAAc,QAAS,KAAK,cAAc,MAAM,EAE1G,KAAK,WAAWA,CAAY,CAC9B,CACF,EAlGEC,GADWT,EACY,MAAM,qBCHxB,IAAMU,EAAN,cAAmC,OAAO,SAAS,MAAM,UAAU,aAAc,CAEtF,YAAYC,EAAmB,CAC7B,MAAM,CACJ,KAAMA,EACN,WAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SA+Dd,CAAC,CACH,CACF,EArEEC,GADWF,EACY,MAAM,wBCCxB,SAASG,GAAYC,EAKzB,CACD,GAAM,CAAE,QAAAC,EAAS,OAAAC,EAAQ,OAAAC,EAAQ,IAAAC,CAAI,EAAIJ,EACzC,OAAO,cAAwB,OAAO,KAAM,CAC1C,aAAc,CACZ,MAAM,CAAE,IAAAI,CAAI,CAAC,CACf,CAEA,SAAU,CACRH,GAAWA,EAAQ,IAAI,CACzB,CAEA,QAAS,CACPC,GAAUA,EAAO,IAAI,EACrB,IAAMG,EAAW,KAAK,SAClBA,GAAU,YACZA,EAAS,UAAU,IAAIC,EAA4B,IAAK,IAAIA,EAA4B,KAAK,IAAI,CAAC,EAClGD,EAAS,UAAU,IAAIE,EAAqB,IAAK,IAAIA,EAAqB,KAAK,IAAI,CAAC,EAExF,CAEA,QAAS,CACPJ,GAAUA,EAAO,IAAI,CACvB,CACF,CACF,CC7BO,SAASK,GAAmBC,EAGF,CAC/B,MAAO,CACL,KAAM,OAAO,MACb,MAAOA,EAAQ,MACf,SAAU,GACV,UAAW,GACX,OAAQ,CACN,YAAa,GACb,SAAU,EACZ,EACA,MAAOA,EAAQ,MACjB,CACF,CCjBO,IAAKC,QACVA,IAAA,iBACAA,IAAA,6BACAA,IAAA,2BAHUA,QAAA,IAMCC,GAAoB,CAC/B,OAAQ,OAAO,YAAY,OAC3B,UAAW,OAAO,YAAY,UAC9B,KAAM,OAAO,YAAY,KACzB,KAAM,OAAO,YAAY,IAC3B,ECXA,IAAAC,EAAyC,gBAGzC,IAAAC,EAAmC,6BAE5B,SAASC,GAAaC,EAA8BC,EAAmBC,EAAU,IAAK,CAC3F,IAAMC,EAAgB,CAAE,QAAS,IAAI,UAAoB,EAEnDC,EAAe,IAAI,UACnBC,EAAiB,IAAI,UAiB3B,OAf2BL,EAAW,QACpC,OAAI,CAAC,CAAE,EAAAM,EAAG,EAAAC,EAAG,MAAAC,EAAO,OAAAC,CAAO,IAEzBC,GACE,CACE,EAAGJ,EAAIJ,EACP,EAAGK,EAAIL,EACP,MAAOM,EAAQ,EAAIN,EACnB,OAAQO,EAAS,EAAIP,CACvB,EACAD,CACF,CACF,CACF,EAEmB,UAAWU,GAAqB,CACjD,IAAMC,KAAQ,YAASD,EAAkBR,EAAc,OAAO,EAC9D,QAAWU,KAASD,EAAM,OAAO,EAAGR,EAAa,KAAKS,CAAK,EAE3D,IAAMC,KAAU,YAASX,EAAc,QAASQ,CAAgB,EAChE,QAAWE,KAASC,EAAQ,OAAO,EAAGT,EAAe,KAAKQ,CAAK,EAE/DV,EAAc,QAAUQ,CAC1B,CAAC,EAEM,CACL,aAAcP,EAAa,aAAa,EACxC,eAAgBC,EAAe,aAAa,EAC5C,UAAAJ,EACA,cAAAE,CACF,CACF,CC1CA,IAAAY,GAAwB,gCACxBC,EAAsF,gBAI/E,SAASC,GAAaC,EAA6CC,EAA+B,CAGvG,SAAS,iBAAiB,eAAiBC,GAAMA,EAAE,eAAe,CAAC,EACnE,SAAS,iBAAiB,gBAAkBA,GAAMA,EAAE,eAAe,CAAC,EAEpE,IAAMC,EAAa,IAAI,kBAA4DH,EAAa,SAAS,EACnGI,EAAQ,IAAI,kBAAwBJ,EAAa,IAAI,EACrDK,EAAe,IAAI,UACnBC,EAAe,IAAI,UAEnBC,EAAU,IAAI,WAClBP,EAAa,MAAM,KAAK,OACxB,CACE,QAAUQ,GAAUF,EAAa,KAAKE,CAAK,EAC3C,QAAUA,GAAUH,EAAa,KAAKG,CAAK,CAC7C,EACA,CAAC,CACH,EAMMC,EAAW,IAAM,CACrB,sBAAsB,IAAMN,EAAW,KAAKH,EAAa,SAAS,CAAC,CACrE,EACAA,EAAa,MAAM,MAAM,YAAY,SAAUS,CAAQ,EAEvD,SAASC,EAAQC,EAAc,CAC7BX,EAAa,QAAQW,CAAI,EACzBR,EAAW,KAAKH,EAAa,SAAS,EACtCI,EAAM,KAAKO,CAAI,CACjB,CAEA,IAAMC,EAAWN,EACd,QACC,gBAAa,EAAE,KACf,OAAKE,GAAU,CAEb,IAAMG,EAAOP,EAAM,SAAS,EAItBS,GADQL,EAAM,OAAO,CAAC,EAAIG,GACJV,EAAQ,WACpC,OAAOU,EAAOE,CAChB,CAAC,KACD,OAAKF,GAAS,KAAK,IAAI,KAAK,IAAIA,EAAMV,EAAQ,OAAO,EAAGA,EAAQ,OAAO,CAAC,KACxE,QAAK,CAACa,EAAKC,IAAS,CAACD,EAAI,CAAC,EAAGC,CAAI,EAAG,CAAC,EAAG,CAAC,CAAC,CAC5C,EACC,UAAU,CAAC,CAAC,CAAEJ,CAAI,IAAM,CAEnBJ,EAAQ,MAAM,MAAM,QAAOA,EAAQ,MAAM,MAAM,MAAM,OAAO,CAAC,EAAII,GACrED,EAAQC,CAAI,CACd,CAAC,EAEGK,EAAWX,EACd,QACC,UAAQG,GAAU,CAACA,EAAM,QAAQ,KACjC,cAAW,EAAE,KAGb,OAAKA,GAAUA,EAAM,MAAM,IAAKS,GAAMA,EAAIhB,EAAQ,UAAU,CAAC,KAC7D,OAAKiB,GAAaA,EAAS,IAAKC,GAAcA,EAAInB,EAAa,IAAI,CAAC,KACpE,OAAKkB,GAAa,CAAClB,EAAa,QAAUkB,EAAS,CAAC,EAAGlB,EAAa,QAAUkB,EAAS,CAAC,CAAC,CAAC,CAC5F,EACC,UAAU,CAAC,CAACD,EAAGG,CAAC,IAAM,CACrBpB,EAAa,UAAUiB,EAAGG,CAAC,EAC3BjB,EAAW,KAAKH,EAAa,SAAS,CACxC,CAAC,EAEH,SAASqB,EAAOC,EAAwBD,EAAiB,CACvDC,EAAW,aAAatB,EAAa,GAAIqB,CAAM,CACjD,CAEA,SAASE,EAAcC,EAAkBC,EAAmBC,EAAoB,CAC9E,IAAMC,EAAaC,EAAsBJ,EAAWC,EAAWC,CAAU,EACzEG,EAASF,EAAW,EAAGA,EAAW,CAAC,CACrC,CAEA,SAASE,EAASZ,EAAWG,EAAW,CACtCpB,EAAa,SAASiB,EAAGG,CAAC,EAC1B,sBAAsB,IAAMjB,EAAW,KAAKH,EAAa,SAAS,CAAC,CACrE,CAEA,SAAS8B,EAAUb,EAAWG,EAAW,CACvCpB,EAAa,UAAUiB,EAAGG,CAAC,EAC3B,sBAAsB,IAAMjB,EAAW,KAAKH,EAAa,SAAS,CAAC,CACrE,CAEA,MAAO,CACL,aAAAA,EACA,WAAAG,EACA,MAAAC,EACA,OAAAiB,EACA,QAAS,IAAM,CACbT,EAAS,YAAY,EACrBI,EAAS,YAAY,EACrBT,EAAQ,QAAQ,EAChBP,EAAa,MAAM,MAAM,eAAe,SAAUS,CAAQ,CAC5D,EACA,cAAAc,EACA,SAAAM,EACA,UAAAC,EACA,QAAApB,CACF,CACF,CC/GA,IAAAqB,EAA4C,gBAC5CC,EAA0C,gBAC1CC,GAA8B,6BAG9B,IAAAC,GAAyB,6BAEzB,SAASC,IAAiB,CACxB,IAAMC,EAAa,IAAI,YACjBC,EAAY,IAAI,IAEtB,SAASC,EAAIC,EAA2B,CACtC,IAAIC,EAAMJ,EAAW,IAAIG,CAAK,EAC9B,OAAKC,IACHA,EAAM,IAAI,IACVJ,EAAW,IAAIG,EAAOC,CAAG,GAEpBA,CACT,CAEA,SAASA,EAAIC,EAAYF,EAAc,CAErC,IAAMG,EAAYL,EAAU,IAAII,CAAE,GACXC,GAAaJ,EAAII,CAAS,IACjC,OAAOD,CAAE,EAGHH,EAAIC,CAAK,EACjB,IAAIE,CAAE,EAGpBJ,EAAU,IAAII,EAAIF,CAAK,CACzB,CAEA,SAASI,EAAOF,EAAY,CAC1B,IAAMC,EAAYL,EAAU,IAAII,CAAE,GACfC,GAAaJ,EAAII,CAAS,IACjC,OAAOD,CAAE,EACrBJ,EAAU,OAAOI,CAAE,CACrB,CAEA,MAAO,CAAE,IAAAD,EAAK,OAAAG,EAAQ,IAAAL,CAAI,CAC5B,CAEO,SAASM,GAAcC,EAAwBC,EAAgBC,EAAgB,CACpF,IAAMC,EAAgBb,GAAe,EAC/Bc,EAAW,IAAI,IAEfC,KAAgB,WACpB,OAAKC,MAAsB,QAAKH,EAAc,IAAIG,CAAK,CAAC,CAAC,KACzD,YAAUC,GAAaA,CAAQ,KAC/B,OAAKC,GAAaR,EAAW,IAAIQ,EAAU,UAAU,CAAC,KACtD,kBAAc,CAChB,EAGMC,EAAgBP,EAAO,aAAa,KAAKG,CAAa,EAAE,UAAWK,GAAWA,EAAO,MAAM,CAAC,EAG5FC,EAAkBT,EAAO,eAAe,KAAKG,CAAa,EAAE,UAAWK,GAAWA,EAAO,QAAQ,CAAC,EAGxG,SAASE,EAAYF,EAA+B,CAC9CN,EAAS,IAAIM,EAAO,EAAE,GAAG,QAAQ,MAAM,yCAA0CA,CAAM,EAC3F,IAAMJ,KAAQ,YAAS,IAAMO,EAAkBH,EAAO,SAAUR,EAAO,SAAS,EAAG,CAAE,OAAQY,EAAQ,CAAC,EAChGC,KAAU,YACd,IAAMT,EAAM,IAAI,EACfU,GAAa,CAEZb,EAAc,IAAIO,EAAO,GAAIM,CAAQ,EAGrBd,EAAO,cAAc,QAAQ,IAAIc,CAAQ,EAEvDN,EAAO,MAAM,EAEbA,EAAO,QAAQ,CAEnB,EACA,CAAE,gBAAiB,EAAK,CAC1B,EACAN,EAAS,IAAIM,EAAO,GAAIK,CAAO,CACjC,CAGA,IAAME,KAA4B,WAAQjB,EAAW,QAAUkB,GAAW,CAIxE,GAHIA,EAAO,OAAS,OAClBN,EAAYM,EAAO,QAAiC,EAElDA,EAAO,OAAS,SAAU,CAC5Bf,EAAc,OAAOe,EAAO,SAAS,EAAE,EACvC,IAAMH,EAAUX,EAAS,IAAIc,EAAO,SAAS,EAAE,EAC3CH,GAASA,EAAQ,EACrBX,EAAS,OAAOc,EAAO,SAAS,EAAE,EAEtC,CAAC,EAED,MAAO,CACL,QAAS,IAAM,CACb,QAAWC,KAAKf,EAAS,OAAO,EAAGe,EAAE,EACrCF,EAA0B,EAC1BR,EAAc,YAAY,EAC1BE,EAAgB,YAAY,CAC9B,CACF,CACF,CCzGA,IAAAS,EAAwC,gBCgBjC,SAASC,GAAqCC,EAAW,CAC9D,OAAOA,CACT,CAEO,SAASC,GACdC,EACA,CACA,OAAOA,CACT,CAEO,SAASC,GAMdD,EAAsC,CACtC,OAAOA,CACT,CAEO,SAASE,GAAkBF,EAAuC,CACvE,OAAOA,CACT,CAEO,SAASG,GAAmBH,EAAsB,CACvD,OAAOA,CACT,CAEO,SAASI,GACdC,EACAC,EACoC,CACpC,OAAOA,IAAS,QAClB,CAEO,SAASC,GACdF,EACAC,EACuC,CACvC,OAAOA,IAAS,WAClB,CD5CO,SAASE,GACdC,EACAC,EACAC,EACAC,EAAsB,EACA,CACtB,IAAMC,KAAuB,cAAW,CAAE,EAAG,EAAG,EAAG,CAAE,CAAC,EAChDC,EAAS,IAAI,IACbC,EAAW,IAAI,IACjBC,EACEC,EAAe,CAAE,QAASL,CAAoB,EAKpD,SAASM,EAAqBC,EAA0D,CACtF,OAAKC,GAAiBD,CAAI,EAElBE,GAAe,CACrBF,EAAKE,CAAU,KACf,eAAY,IAAM,CAChBR,EAAS,EAAIQ,EAAW,EACxBR,EAAS,EAAIQ,EAAW,CAC1B,CAAC,CACH,EARoCF,CAStC,CASA,eAAeG,EAAa,CAAE,GAAAb,EAAI,IAAAc,EAAK,KAAAC,EAAM,OAAAC,CAAO,EAA8B,CAEhF,IAAMC,EAAcF,GAAQJ,GAAiBI,CAAI,EAC7CE,MACF,eAAY,IAAM,CAChBb,EAAS,EAAIa,EAAY,GAAKb,EAAS,EACvCA,EAAS,EAAIa,EAAY,GAAKb,EAAS,CACzC,CAAC,EAIHW,GAAQV,EAAO,IAAIL,EAAIS,EAAqBM,CAAI,CAAC,EACjDC,GAAUV,EAAS,IAAIN,EAAIS,EAAqBO,CAAM,CAAC,EAGnDT,GAAoBO,GAAK,MAAML,EAAqBK,CAAG,EAAEP,CAAgB,EACzEA,GAAoBQ,GAAMA,EAAKR,CAAgB,CACrD,CAEA,SAASW,EAAalB,EAAqB,CACzC,OAAOK,EAAO,IAAIL,CAAE,GAAKM,EAAS,IAAIN,CAAE,CAC1C,CAEA,SAASmB,EAAgBnB,EAAYoB,EAAgB,CACnDf,EAAO,OAAOL,CAAE,EAChBM,EAAS,OAAON,CAAE,EAGdO,IACFc,EAAMd,EAAkBa,CAAI,EAC5BE,GAA2Bf,EAAkBF,EAAO,OAAO,CAAC,EAEhE,CAEA,SAASgB,EAAMT,EAA8BQ,EAAO,GAAM,CACpDA,IACEG,GAASX,EAAYV,CAAI,GAAGU,EAAW,KAAK,EAChDY,EAAgBZ,CAAU,GAE5BA,EAAW,SAAS,EAAE,EACtBA,EAAW,aAAeJ,EAAa,QACvCI,EAAW,cAAc,GAAM,EAAI,EACnCA,EAAW,SAAS,EAAG,CAAC,EACxBA,EAAW,UAAU,EAAG,CAAC,EACzBA,EAAW,SAAS,CAAC,EACrBA,EAAW,gBAAgB,CAAC,EAC5BA,EAAW,UAAU,EACrBA,EAAW,QAAQ,eAAgB,IAAI,EACnCW,GAASX,EAAYV,CAAI,IAC3BU,EAAW,UAAU,EACrBA,EAAW,WAAW,EAAE,GAEtBa,GAAYb,EAAYV,CAAI,IAC9BU,EAAW,MAAQ,EACnBA,EAAW,OAAS,EAExB,CAEA,SAASc,EAAgBC,EAAgB,CACvCnB,EAAa,QAAUmB,EACnBpB,IAAkBA,EAAiB,aAAeoB,EACxD,CAEA,SAASC,GAAQ,CACf,GAAIrB,EAAkB,OACtB,IAAMK,EAA+BX,EAAM,IAAI,EAC/CoB,EAAMT,CAAU,EAGhBU,GAA2BV,EAAYP,EAAO,OAAO,CAAC,EAKtDO,EAAW,UAAU,EAAI,EACzBA,EAAW,WAAW,EAAI,EAC1BA,EAAW,QAAQ,eAAgBZ,CAAE,EACrCO,EAAmBK,CACrB,CAEA,SAASiB,GAAU,CACbtB,GACFN,EAAM,YAAYM,CAAgB,EAEpCA,EAAmB,MACrB,CAEA,MAAO,CAAE,aAAAM,EAAc,aAAAK,EAAc,gBAAAC,EAAiB,MAAAS,EAAO,QAAAC,EAAS,SAAAzB,EAAU,GAAAJ,EAAI,gBAAA0B,EAAiB,KAAAxB,CAAK,CAC5G,CAEA,SAASoB,GACPV,EACAkB,EACA,CACA,GAAKlB,EACL,QAAWF,KAAQoB,EACjBpB,EAAKE,CAAU,CAEnB,CAEA,SAASD,GACPD,EACiC,CACjC,IAAIO,EACEc,EAAkB,IAAI,MAC1B,CAAE,EAAG,OAAW,EAAG,MAAU,EAC7B,CACE,IAAK,CAACC,EAAGC,IACHA,IAAS,cAAsB,CAACC,EAAWC,IAAelB,EAAc,CAAE,EAAAiB,EAAG,EAAAC,CAAE,EAC/EF,IAAS,OAAgBC,GAAejB,EAAc,CAAE,EAAAiB,CAAE,EAC1DD,IAAS,OAAgBE,GAAelB,EAAc,CAAE,EAAAkB,CAAE,EACvD,IAAG,GAEZ,IAAK,CAACH,EAAGC,EAAMG,KACTH,IAAS,MAAKhB,EAAcA,EAAc,CAAE,GAAGA,EAAa,EAAGmB,CAAM,EAAI,CAAE,EAAGA,CAAM,GACpFH,IAAS,MAAKhB,EAAcA,EAAc,CAAE,GAAGA,EAAa,EAAGmB,CAAM,EAAI,CAAE,EAAGA,CAAM,GACjF,GAEX,CACF,EACA,OAAA1B,EAAKqB,CAAmC,EACjCd,CACT,CEtKA,IAAAoB,GAA2B,gBAC3BC,GAA0B,6BAO1B,SAASC,GAAiB,EAAuC,CAC/D,OAAO,OAAO,KAAKC,EAAiB,EAAE,SAAS,CAAC,CAClD,CAEO,SAASC,GAAiBC,EAAqB,CACpD,IAAMC,KAAS,cAAUH,GAAoBI,GAAcF,EAAM,IAAI,MAAM,CAAE,UAAAE,CAAU,CAAC,CAAC,EAInFC,KAAU,eAAW,IAAI,GAAoD,EAC7EC,EAAe,CAAE,QAAS,CAAE,EAElC,SAASC,EACPC,EACAC,EACmC,CAC/B,OAAOD,GAAW,WAAUA,EAAS,OAAOA,CAAM,GACtD,IAAIE,EAAiBL,EAAQ,IAAIG,CAAM,EACvC,OAAKT,GAAiBU,CAAI,GAMrBC,IACHA,EAAiBC,GAAkCH,EAAQL,EAAOM,CAAI,EAAGA,EAAMH,EAAa,OAAO,GAGhGD,EAAQ,IAAIG,CAAM,GACrBH,EAAQ,IAAIG,EAAQE,CAAc,EAM7BA,GAhBAA,GAAgB,MAiBzB,CAEA,SAASE,EAAOJ,EAAyB,CACnC,OAAOA,GAAW,WAAUA,EAAS,OAAOA,CAAM,GACtD,IAAMK,EAASR,EAAQ,IAAIG,CAAM,EAC7BK,GAAQA,EAAO,QAAQ,EAC3BR,EAAQ,OAAOG,CAAM,CACvB,CAEA,SAASM,EAAaC,EAAkBC,EAAiB,CACnDA,EACFV,EAAa,SAAWS,EAExBT,EAAa,SAAW,CAACS,EAG3B,QAAWL,KAAkBL,EAAQ,OAAO,EAC1CK,EAAe,gBAAgBJ,EAAa,OAAO,CAEvD,CAEA,MAAO,CAAE,IAAAC,EAAK,OAAAK,EAAQ,QAAAP,EAAS,OAAAF,EAAQ,aAAAW,CAAa,CACtD,CCjEA,IAAAG,GAAyB,6BAEzB,IAAAC,GAA2B,6BAgBpB,SAASC,GACdC,EACqC,CACrC,GAAM,CAAE,MAAAC,EAAO,SAAAC,EAAU,YAAAC,EAAa,OAAAC,EAAQ,eAAAC,EAAgB,MAAAC,EAAO,UAAAC,EAAW,WAAAC,CAAW,EAAIR,EACzFS,EAAmB,OAAO,KAAKN,EAAY,MAAM,EACpD,IAAKO,GAAQP,EAAY,OAAOO,CAAgB,EAAE,QAAQ,EAC1D,KAAK,EAGR,GAAIC,EAAIP,EAAO,UAAWG,CAAS,IAAM,GAAKI,EAAIP,EAAO,UAAWI,CAAU,IAAM,EAClF,MAAM,IAAI,MAAM,+FAA+F,EAOjH,IAAMI,EAAO,IAAI,YACXC,EAAgB,CAAE,EAAGT,EAAO,UAAYG,EAAW,EAAGH,EAAO,UAAYI,CAAW,EACpFM,EAAW,IAAI,IACfC,EAAU,CAAE,QAAS,EAAK,EAGhC,QAAWC,KAASZ,EAAO,cAAc,QAAQ,OAAO,EACtDa,EAAYD,CAAK,EAGnB,IAAME,EAAgBd,EAAO,aAAa,UAAWY,GAAU,CAC7DC,EAAYD,CAAK,CACnB,CAAC,EAGKG,EAAkBf,EAAO,eAAe,UAAWY,GAAU,CACjEI,EAAaJ,CAAK,CACpB,CAAC,EAEDF,EAAS,IAAI,IAAMI,GAAe,YAAY,CAAC,EAC/CJ,EAAS,IAAI,IAAMK,GAAiB,WAAW,EAM/C,SAASE,EACPC,EACArB,EACAsB,EACAC,EACAC,EACAC,EAIA,CACA,IAAMC,EAA0D,CAAC,EAEjE,QAAWjB,KAAO,OAAO,KAAKP,EAAY,MAAM,EAAG,CACjD,IAAMyB,EAAQzB,EAAY,OAAOO,CAAgB,EAC3CmB,EAAeP,EAAI,iBACvBZ,EACAkB,EAAM,SAAS,IAAKE,IAAO5B,EAAS4B,EAAE,CAAC,EACvCP,EACAC,EACAC,EACAC,CACF,EACA,GAAI,CAACG,EAAc,CACjB,QAAQ,MAAM,wBAAwBnB,WAAa,EACnD,SAEFiB,EAAOjB,CAAG,EAAImB,EACd,IAAME,EAAW9B,EAAM,KAAK,SACxB2B,EAAM,kBAAoBG,GAAU,YACtCJ,EAAOjB,CAAG,EAAE,SAAWqB,EAAS,UAAU,IAAIC,EAAqB,GAAG,GAI1E,MAAO,CAAE,OAAQ,OAAO,OAAOL,CAAM,EAAG,aAAcA,EAAOxB,EAAY,YAAY,CAAE,CACzF,CAEA,SAAS8B,EAAUC,EAAiD,CAClE,IAAMC,EAAgC,IAAI,OAAO,SAAS,QAAQ,CAChE,WAAA3B,EACA,UAAAD,EACA,MAAOM,EAAc,EACrB,OAAQA,EAAc,EACtB,SAAU,OAAO,QAAQX,CAAQ,EAC9B,OAAO,CAAC,CAACQ,CAAG,IAAMD,EAAiB,SAASC,CAAG,CAAC,EAChD,IAAI,CAAC,CAAC,CAAE0B,CAAO,IAAMA,CAAO,CACjC,CAAC,EAEKd,EAAM,IAAI,OAAO,SAAS,QAAQrB,EAAOkC,CAAI,EAC7CE,EAAUC,EAAkBJ,EAAY9B,EAAO,SAAS,EACxD,CAAE,aAAAmC,CAAa,EAAIlB,EAAaC,EAAKrB,EAAOoC,EAAQ,EAAGA,EAAQ,EAAGxB,EAAc,EAAGA,EAAc,CAAC,EACxG,OAAAS,EAAI,SAASiB,CAAY,EACzB3B,EAAK,IAAIsB,EAAYZ,CAAG,EACjBA,CACT,CAEA,SAASkB,EAAmBN,EAAiD,CAC3E,OAAOtB,EAAK,IAAIsB,CAAU,GAAKD,EAAUC,CAAU,CACrD,CAEA,SAASO,EAAkBC,EAAgD,CACzE,IAAMR,EAAaS,EAAsBD,EAAWnC,EAAWC,EAAYJ,EAAO,SAAS,EAC3F,OAAOoC,EAAmBN,CAAU,CACtC,CAEA,SAASd,EAAac,EAAwBU,EAAiB,CAC7D,GAAK,CAAC7B,EAAQ,SAAW,CAAC6B,GAAU,CAAChC,EAAK,IAAIsB,CAAU,EAAG,OAC/CM,EAAmBN,CAAU,EACrC,QAAQ,EACZtB,EAAK,OAAOsB,CAAU,CACxB,CAEA,SAASW,EAAUC,EAAmBC,EAAcnB,EAAgBoB,EAAe,CACjF,GAAI,CAACjC,EAAQ,QAAS,OACtB,IAAMO,EAAMmB,EAAkBK,CAAK,EAC7BG,EAAU3B,EAAI,UAAUyB,EAAMpC,EAAImC,EAAM,EAAGjC,EAAc,CAAC,EAAGF,EAAImC,EAAM,EAAGjC,EAAc,CAAC,EAAG,OAAWe,CAAK,EAClH,GAAIqB,GAAW,KACb,MAAM,IAAI,MAAM,kBAAkB,EAGpCA,EAAQ,MAAQ3B,EAAI,UACpB2B,EAAQ,OAAS3B,EAAI,WAEjB0B,IACFC,EAAQ,KAAOD,EAEnB,CAEA,SAAS/B,EAAYiB,EAAwB,CAC3C,GAAI,CAACnB,EAAQ,QAAS,OACtB,IAAMO,EAAMkB,EAAmBN,CAAU,EACnCgB,EAAeC,GAAsBjB,EAAY3B,EAAWC,EAAYJ,EAAO,SAAS,EAE9F,QAAWwB,KAAS,OAAO,KAAKzB,EAAY,MAAM,EAChDmB,EAAI,YACDyB,GAAS,CACR,IAAMD,EAAQ,CAAE,EAAGI,EAAa,EAAIH,EAAK,EAAG,EAAGG,EAAa,EAAIH,EAAK,CAAE,EACjEK,EAAexB,IAAUzB,EAAY,gBAAe,eAAWE,CAAc,EAAI,GACjFgD,EAAQ/C,EAAMsB,CAAkB,EAAE,IAAIkB,CAAK,GAAKM,EACtDL,EAAK,MAAQM,CACf,EACA,OACA,OACA,OACA,OACA,OACA,OACAzB,CACF,CACJ,CAEA,SAAS0B,GAAU,CACjB,QAAWhC,KAAOV,EAAK,OAAO,EAC5BU,EAAI,QAAQ,EAEdV,EAAK,MAAM,EACX,QAAW2C,KAAKzC,EACdyC,EAAE,CAEN,CAEA,SAASC,GAAO,CACd,OAAO5C,EAAK,IACd,CAEA,SAAS6C,EAAWC,EAAY,CAC9B,GAAIA,IAAM3C,EAAQ,QAClB,CAAAA,EAAQ,QAAU2C,EAClB,QAAW1C,KAASZ,EAAO,cAAc,QAAQ,OAAO,EACtDW,EAAQ,QAAUE,EAAYD,CAAK,EAAII,EAAaJ,EAAO,EAAI,EAEnE,CAEA,MAAO,CAAE,KAAAwC,EAAM,UAAAX,EAAW,QAAAS,EAAS,WAAAG,EAAY,QAAA1C,EAAS,UAAAR,EAAW,WAAAC,CAAW,CAChF,CCnMA,IAAAmD,GAAyB,6BAGlB,SAASC,GACdC,EACqC,CACrC,GAAM,CACJ,OAAAC,EACA,YAAa,CAAE,OAAAC,EAAQ,aAAAC,CAAa,EACpC,UAAAC,EACA,WAAAC,CACF,EAAIL,EAEEM,EAAoD,CAAC,EAE3D,QAAWC,KAAY,OAAO,KAAKL,CAAM,EACvCI,EAAMC,CAAqB,EAAI,IAAI,YAGrC,IAAMC,EAAiBC,GAAqB,CAAE,GAAGT,EAAQ,MAAAM,CAAM,CAAC,EAEhE,SAASI,EAAUC,EAAmBC,EAAgBC,EAAmBC,EAAe,CAEtFR,EAAMO,GAASV,CAAY,EAAE,IAAIQ,EAAOC,CAAI,EAG5C,IAAMG,EAAQC,EAAsBL,EAAOP,EAAWC,EAAYJ,EAAO,SAAS,EAC9EO,EAAe,SAAWP,EAAO,cAAc,QAAQ,IAAIc,CAAK,GAClEP,EAAe,UAAUG,EAAOC,EAAMC,EAAOC,CAAI,CAErD,CAEA,MAAO,CAAE,GAAGN,EAAgB,UAAAE,EAAW,MAAAJ,CAAM,CAC/C,CCjCA,IAAAW,GAAyB,6BAKlB,SAASC,GACdC,EACqD,CACrD,GAAM,CACJ,YAAa,CAAE,OAAAC,EAAQ,aAAAC,CAAa,EACpC,kBAAAC,EACA,MAAAC,CACF,EAAIJ,EAEEK,EAAkBH,EACpBI,EAAW,EACTC,EAA8F,CAAC,EAE/FC,EAAiE,CAAC,EACxE,QAAWC,KAAY,OAAO,KAAKR,CAAM,EACvCO,EAAcC,CAAqB,EAAI,IAAI,YAG7C,IAAMC,EAAoE,CAAC,EAC3E,QAAWD,KAAY,OAAO,KAAKR,CAAM,EACvCS,EAAiBD,CAAqB,EAAI,IAAI,YAGhD,IAAME,EAAiBC,GAAqBZ,CAAM,EAElD,SAASa,EAAkBC,EAA6BC,EAAiC,CACvFR,EAAWO,CAAY,EAAI,CAAE,OAAAC,EAAQ,MAAO,CAAE,CAChD,CAEA,SAASC,EAAeC,EAAmBH,EAA6BI,EAAmBb,EAAiB,CAC1GG,EAAcU,CAAK,EAAE,IAAID,EAAOH,CAAY,CAC9C,CAEA,SAASK,EAAkBF,EAAmBC,EAAmBb,EAAiB,CAChF,IAAMS,EAAeN,EAAcU,CAAK,EAAE,IAAID,CAAK,EAC7CG,EAAYN,GAAgBP,EAAWO,CAAY,EACzDN,EAAcU,CAAK,EAAE,OAAOD,CAAK,EAC7BG,GAAWT,EAAe,UAAUM,EAAOG,EAAU,OAAO,CAAC,EAAGF,CAAK,CAC3E,CAEA,SAASG,EAAiBJ,EAAmBC,EAAmBb,EAAiB,CAC/E,IAAMS,EAAeN,EAAcU,CAAK,EAAE,IAAID,CAAK,EAC9CH,IACLJ,EAAiBQ,CAAK,EAAE,IAAID,EAAOH,CAAY,EAC/CK,EAAkBF,EAAOC,CAAK,EAChC,CAEA,SAASI,EAAkBL,EAAmBC,EAAmBb,EAAiB,CAChF,IAAMS,EAAeJ,EAAiBQ,CAAK,EAAE,IAAID,CAAK,EACjDH,IACLJ,EAAiBQ,CAAK,EAAE,OAAOD,CAAK,EACpCD,EAAeC,EAAOH,EAAcI,CAAK,EAC3C,CAEA,SAASK,GAAgB,CAEvB,QAAWT,KAAgB,OAAO,KAAKP,CAAU,EAAsB,CACrE,IAAMa,EAAYb,EAAWO,CAAY,EACrCM,IAAWA,EAAU,MAAQI,EAAIJ,EAAU,MAAQ,EAAGA,EAAU,OAAO,MAAM,GAInF,QAAWX,KAAY,OAAO,KAAKD,CAAa,EAAkB,CAChE,IAAMU,EAAQV,EAAcC,CAAQ,EACpC,QAAWQ,KAASC,EAAM,OAAO,EAAG,CAClC,IAAMJ,EAAeI,EAAM,IAAID,CAAK,EAC9BG,EAAYN,GAAgBP,EAAWO,CAAY,EACzD,GAAI,CAACM,EAAW,SAChB,IAAMK,EAAeL,EAAU,OAAOA,EAAU,KAAK,EACrDT,EAAe,UAAUM,EAAOQ,EAAchB,CAAQ,GAG5D,CAEA,SAASiB,EAAOC,EAAc,CACxBA,EAAOrB,EAAWH,IACtBG,EAAWqB,EACXJ,EAAc,EAChB,CAEA,SAASK,GAAU,CACjBxB,EAAM,OAAO,eAAe,SAAUsB,CAAM,EAC5Cf,EAAe,QAAQ,CACzB,CAEA,OAAAP,EAAM,OAAO,YAAY,SAAUsB,CAAM,EAElC,CACL,GAAGf,EACH,eAAAK,EACA,kBAAAG,EACA,iBAAAE,EACA,kBAAAC,EACA,kBAAAT,EACA,QAAAe,CACF,CACF,CCxGA,IAAAC,EAYO,gBACPC,EAAkD,gBAElDC,EAA8B,6BAIvB,SAASC,GAAYC,EAAuC,CACjE,IAAMC,EAAY,IAAI,IAChBC,EAAU,CAAE,QAAS,EAAK,EAEhCF,EAAY,OAAO,mBAAmB,EAEtC,SAASG,GAAe,CACtBD,EAAQ,QAAU,EACpB,CAEA,SAASE,GAAc,CACrBF,EAAQ,QAAU,EACpB,CAEA,SAASG,EAAUC,EAAgB,CACjCN,EAAY,iBAAiBM,CAAM,CACrC,CAEA,IAAMC,EAAY,IAAI,UAEhBC,KAAe,aAAU,SAAU,WAAW,EAAE,QACpD,UAAO,IAAMN,EAAQ,OAAO,KAC5B,OAAI,KACK,CAAE,QAASF,EAAY,SAAS,aAAc,EACtD,KACD,iBAAc,CAChB,EAEMS,KAAiF,aACrF,SACA,WACF,EAAE,QACA,UAAO,IAAMP,EAAQ,OAAO,KAC5B,OAAKQ,IAAW,CAAE,QAASV,EAAY,SAAS,cAAe,MAAOU,CAAoB,EAAE,KAC5F,iBAAc,CAChB,EAEMC,KAA+E,aACnF,SACA,SACF,EAAE,QACA,UAAO,IAAMT,EAAQ,OAAO,KAC5B,OAAKQ,IAAW,CAAE,QAASV,EAAY,SAAS,cAAe,MAAOU,CAAoB,EAAE,KAC5F,iBAAc,CAChB,EAGME,KAAS,SAAMH,EAAcE,CAAU,EAAE,QAC7C,UAAO,IAAMT,EAAQ,OAAO,KAC5B,OAA6E,CAAC,CAAE,MAAAQ,CAAM,IAAM,CAC1FA,EAAM,OAAS,aAAeA,EAAM,SAAW,EAC/C,KAAK,IAAI,CACX,CAAC,KACD,eAAY,EAAG,CAAC,KAChB,UAAO,CAAC,CAACG,EAAMC,CAAG,IAAMD,EAAK,CAAC,GAAK,CAACC,EAAI,CAAC,GAAKA,EAAI,CAAC,EAAID,EAAK,CAAC,EAAI,GAAG,KACpE,OAAI,IAAMb,EAAY,SAAS,aAAa,KAC5C,iBAAc,CAChB,EAGMe,EAAeN,EAAa,QAChC,UAAO,IAAMP,EAAQ,OAAO,KAC5B,OAAI,IAAM,KAAK,IAAI,CAAC,KACpB,eAAY,EAAG,CAAC,KAChB,UAAO,CAAC,CAACW,EAAMC,CAAG,IAAMA,EAAMD,EAAO,GAAG,KACxC,gBAAa,GAAG,KAChB,OAAI,IAAMb,EAAY,SAAS,aAAa,KAC5C,iBAAc,CAChB,EAGMgB,KAAc,SAAMP,EAAcE,CAAU,EAAE,QAClD,UAAO,CAAC,CAAE,QAAAM,CAAQ,IAAMf,EAAQ,SAAWe,EAAQ,gBAAgB,CAAC,KACpE,OAAI,IAAMjB,EAAY,SAAS,aAAa,KAC5C,iBAAc,CAChB,EAGMkB,KAAQ,SACZT,EAAa,QAAK,OAAI,IAAG,EAAY,CAAC,KACtC,SAAME,EAAYH,CAAY,EAAE,QAC9B,YAAS,KACT,QACE,CAACW,EAAK,CAAC,CAAE,QAASN,CAAK,EAAG,CAAE,QAASO,CAAK,CAAC,IACzCA,EAAK,eAAe,EAChBP,EAAK,eAAe,GAAKM,EACvB,CAAE,GAAGA,EAAK,MAAOC,EAAK,OAASD,EAAI,EAAG,OAAQC,EAAK,OAASD,EAAI,CAAE,EAClE,CAAE,EAAGC,EAAK,OAAQ,EAAGA,EAAK,OAAQ,MAAO,EAAG,OAAQ,CAAE,EACxD,OACN,MACF,KACA,iBAAc,KACd,UAAQC,GAAS,KAAK,IAAIA,EAAK,KAAK,EAAI,IAAM,KAAK,IAAIA,EAAK,MAAM,EAAI,EAAE,CAC1E,CACF,EAAE,QACA,UAAO,IAAMnB,EAAQ,OAAO,KAC5B,wBAAqB,CACvB,EAEMoB,KAAc,cAAW,IAAI,GAAU,EACvCC,EAAiBvB,EAAY,SAC7BwB,EAAY,IAAI,IAGtB,QAAWC,KAAO,OAAO,KAAK,OAAO,MAAM,SAAS,QAAQ,EAAGC,EAAOD,CAAG,EAGzE,IAAME,EAASpB,EAAU,QAAK,UAAO,IAAML,EAAQ,OAAO,CAAC,EAAE,UAAWuB,GAAQ,CAC9E,IAAMG,EAAUJ,EAAU,IAAIC,EAAI,OAAO,EACpCG,MACL,eAAY,IAAM,CACZH,EAAI,QAAQH,EAAY,IAAIM,CAAO,EACnCH,EAAI,MAAMH,EAAY,OAAOM,CAAO,CAC1C,CAAC,CACH,CAAC,EACD3B,EAAU,IAAI,IAAM0B,GAAQ,YAAY,CAAC,EAEzC,IAAME,KAAa,SAAMpB,EAAcE,CAAU,EAAE,UAAU,CAAC,CAAE,QAAAM,CAAQ,IAAM,IAC5E,eAAY,IAAM,CACZA,EAAQ,eAAe,EAAGK,EAAY,IAAI,cAAc,EACvDA,EAAY,OAAO,cAAc,EAElCL,EAAQ,gBAAgB,EAAGK,EAAY,IAAI,eAAe,EACzDA,EAAY,OAAO,eAAe,CACzC,CAAC,CAEH,CAAC,EACDrB,EAAU,IAAI,IAAM4B,GAAY,YAAY,CAAC,EAG7C,SAASH,EAAOD,EAAa,CAC3B,GAAI,CAACF,EAAgB,CACnB,QAAQ,KAAK,cAAcE,wCAA0C,EACrE,OAIF,IAAMK,EAASP,EAAe,OAAOE,EAAK,EAAK,EAE/CD,EAAU,IAAIM,EAAO,QAASL,CAAU,EAExCK,EAAO,mBAAmB,EAC1BA,EAAO,aAAe,GACtBA,EAAO,GAAG,OAASC,GAAwCxB,EAAU,KAAKwB,CAAQ,CAAC,EACnFD,EAAO,GAAG,KAAOC,GAAwCxB,EAAU,KAAKwB,CAAQ,CAAC,CACnF,CAEA,SAASC,EAAWC,EAAiDC,EAAsB,CACzF,IAAMC,KAAW,YACf,IAAMF,EAAYX,CAAW,EAC5Bc,GAAW,CACNA,GAAQF,EAAS,CACvB,EACA,CAAE,gBAAiB,EAAK,CAC1B,EACAjC,EAAU,IAAIkC,CAAQ,CACxB,CAEA,SAASE,GAAU,CACjB,QAAWF,KAAYlC,EACrBkC,EAAS,CAEb,CAEA,MAAO,CACL,UAAW5B,EAAU,aAAa,EAClC,aAAAC,EACA,aAAAC,EACA,WAAAE,EACA,OAAAC,EACA,aAAAG,EACA,YAAAC,EACA,MAAAE,EACA,YAAAI,EACA,QAAAe,EACA,aAAAlC,EACA,YAAAC,EACA,UAAAC,EACA,QAAAH,EACA,WAAA8B,CACF,CACF,CC5LA,IAAAM,GAAyB,6BAEzB,eAAsBC,GAA2CC,EAAgC,CAC/F,GAAM,CAAE,MAAAC,EAAO,YAAAC,EAAa,aAAAC,EAAc,iBAAAC,CAAiB,EAAIJ,EAGzDK,EAAoB,OAAO,KAAKH,CAAW,EAAE,IAAKI,GAAQ,CAC9D,GAAM,CAAE,QAAAC,EAAS,OAAAC,EAAQ,OAAAC,CAAO,EAAIP,EAAYI,CAAG,EACnD,OAAOI,GAAY,CAAE,IAAAJ,EAAK,QAAAC,EAAS,OAAAC,EAAQ,OAAAC,CAAO,CAAC,CACrD,CAAC,EAEKE,EAAeC,GAAmB,CAAE,OAAQP,EAAmB,MAAAJ,CAAM,CAAC,EACtEY,EAAO,IAAI,OAAO,KAAKF,CAAY,EAGnC,CAACG,EAAS,CAAEC,CAAO,KAAI,aAAS,EAEtCF,EAAK,OAAO,GAAG,QAASC,CAAO,EAG3BH,EAAa,OAAS,OAAO,UAC/BE,EAAK,SAAS,KAAK,OAAO,EAG5B,MAAME,EAGN,SAASC,GAAS,CAChB,IAAMC,EAAQ,OAAO,WAAaJ,EAAK,MAAM,KACvCK,EAAS,OAAO,YAAcL,EAAK,MAAM,KAC/CA,EAAK,MAAM,OAAOI,EAAOC,CAAM,CACjC,CACAF,EAAO,EACP,OAAO,iBAAiB,SAAUA,CAAM,EAGxC,IAAMG,EAAoC,CAAC,EAE3C,QAAWC,KAAeP,EAAK,MAAM,UAAU,EAAK,EAAG,CACrD,IAAMP,EAAMc,EAAY,MAAM,IACxBC,EAASnB,EAAYI,CAAG,EAG9B,OAAW,CAACgB,EAAUC,CAAK,IAAK,OAAO,QAAQrB,EAAYI,CAAG,EAAE,MAAM,EACpE,MAAMkB,GAAKJ,EAAcK,GAAW,CAC9BF,EAAM,OAAS,EACjBE,EAAO,MAAMH,EAAUC,EAAM,IAAI,EACxBA,EAAM,OAAS,EACxBE,EAAO,YAAYH,EAAUC,EAAM,KAAMA,EAAM,OAAO,EAC7CA,EAAM,OAAS,GACxBE,EAAO,WAAWH,EAAUC,EAAM,KAAMA,EAAM,QAAQ,SAAS,CAEnE,CAAC,EAIH,IAAMG,EAAaC,GAAiBP,CAAW,EAGzCQ,EAASC,GAAaT,EAAY,QAAQ,KAAMjB,CAAY,EAG5D2B,EAAgBC,GAAaH,EAAO,WAAYxB,CAAgB,EAGhE4B,EAAUC,GAAcP,EAAYE,EAAQE,CAAa,EAG/D,QAAWI,KAAQb,EAAO,WACxBD,EAAY,MAAM,OAAO,CACvB,IAAKc,EAAK,IACV,OAAQC,GAAef,EAAY,MAAOc,CAAI,EAC9C,UAAWA,EAAK,UAChB,OAAQA,EAAK,MACf,CAAC,EAIH,IAAME,EAAW,IAAI,OAAO,SAAS,QAAQhB,EAAa,IAAI,OAAO,SAAS,OAAS,EACjFiB,EAAoC,CAAC,EAC3C,OAAW,CAACC,EAAY,CAAE,SAAAhB,EAAU,UAAAiB,EAAW,WAAAC,CAAW,CAAC,IAAK,OAAO,QAAQtC,EAAYI,CAAG,EAAE,QAAW,EAAG,CAC5G,IAAMmC,EAAUL,EAAS,gBAAgBE,EAAYhB,EAAUiB,EAAWC,CAAU,EACpF,GAAI,CAACC,EAAS,CACZ,QAAQ,MAAM,kBAAkBH,WAAoB,EACpD,SAEFD,EAAgBC,CAAU,EAAIG,EAEhC,IAAMC,EAAWL,EAGXM,EAA0D,CAAC,EACjE,QAAWC,KAAU,OAAO,KAAKvB,EAAO,IAAI,EAAG,CAC7C,GAAM,CAAE,OAAAwB,EAAQ,eAAAC,EAAgB,UAAAP,EAAW,WAAAC,EAAY,kBAAAO,EAAmB,eAAAC,EAAgB,UAAAC,CAAU,EAClG5B,EAAO,KAAKuB,CAAM,EAGdM,EAASnB,GAAaH,EAAO,WAAYqB,CAAS,EAElDE,EAAMC,GAAsB,CAChC,MAAOhC,EACP,SAAAsB,EACA,YAAaG,EACb,OAAAK,EACA,UAAAX,EACA,WAAAC,EACA,eAAAM,EACA,kBAAAC,CACF,CAAC,EAGD,GAAIC,EACF,OAAW,CAAC1C,EAAK+C,EAAM,IAAK,OAAO,QAAQL,CAAc,EACvDG,EAAI,kBAAkB7C,EAAK+C,EAAM,EAIrCV,EAAYC,CAAwD,EAAIO,EAE1E,IAAMG,EAAOX,EAEPY,EAAQC,GAAYpC,EAAY,KAAK,EAE3CD,EAAcb,CAAG,EAAI,CAAE,YAAAc,EAAa,WAAAM,EAAY,OAAAE,EAAQ,QAAAI,EAAS,KAAAsB,EAAM,MAAAC,EAAO,OAAQrD,EAAYI,CAAG,CAAE,EAEzG,IAAMmD,EAAStC,EAEf,MAAO,CACL,KAAAN,EACA,OAAA4C,EACA,QAAS,IAAM,CACb5C,EAAK,QAAQ,EAAI,EACjB,QAAWP,KAAO,OAAO,KAAKmD,CAAM,EAAG,CACrC,IAAMC,EAAQD,EAAOnD,CAAG,EACxBoD,EAAM,OAAO,QAAQ,EACrBA,EAAM,QAAQ,QAAQ,EACtBA,EAAM,MAAM,QAAQ,EACpB,QAAWP,KAAO,OAAO,OAAOO,EAAM,IAAI,EACxCP,EAAI,QAAQ,EAIhB,OAAO,oBAAoB,SAAUnC,CAAM,CAC7C,CACF,CACF,CC5JA,IAAA2C,GAAyB,6BAIzB,SAASC,IAAiB,CACxB,IAAMC,EAAM,KAAK,OAAO,EAAI,IACtBC,EAAQ,KAAK,OAAO,EAAI,IACxBC,EAAO,KAAK,OAAO,EAAI,IAC7B,OAAOF,EAAM,MAASC,EAAQ,IAAOC,CACvC,CAEO,SAASC,GACdC,EACAC,EACAC,EACAC,EACAC,EACA,CACA,IAAMC,EAAU,CACd,YAAa,GACb,gBAAiB,GACjB,kBAAmB,GACnB,oBAAqB,GACrB,eAAgB,GAChB,QAAS,EACX,EAEMC,EAAe,IAAI,YACnBC,EAAgBL,EAAM,IAAI,UAAU,EAAG,EAAG,EAAG,EAAG,SAAU,EAAG,EACnEK,EAAc,eAAe,EAC7BA,EAAc,GAAG,YAAa,IAAM,CAClC,QAAQ,IAAI,UAAWA,CAAa,CACtC,CAAC,EAEDP,EAAO,WAAW,UAAWQ,GAAc,CACrCH,EAAQ,aACV,QAAQ,IAAIG,CAAS,EAGnBH,EAAQ,oBACVE,EAAc,SAASC,EAAU,MAAOA,EAAU,MAAM,EACxDD,EAAc,YAAYC,EAAU,QAASA,EAAU,OAAO,GAG5DH,EAAQ,gBACV,QAAQ,IACN,aAAaF,EAAW,QAAQ,qBAAqB,OAAO,OAAOA,EAAW,MAAM,EAAE,OACpF,CAACM,EAAKC,IAASD,EAAMC,EAAK,YAAY,EAAE,OACxC,CACF,oBAAoB,OAAO,OAAOP,EAAW,MAAM,EAAE,OAAO,CAACM,EAAKC,IAASD,EAAMC,EAAK,YAAY,EAAG,CAAC,GACxG,EAGEL,EAAQ,SACV,QAAQ,IAAI,WAAYD,EAAI,KAAK,CAAC,CAEtC,CAAC,EAEDH,EAAO,aAAa,UAAWU,GAAU,CACvC,GAAIN,EAAQ,gBAAiB,CAC3B,IAAMO,EAAaC,EAAkBF,EAAOV,EAAO,SAAS,EACtDa,EAAcZ,EAAM,IAAI,UAC5BU,EAAW,EAAIX,EAAO,UAAY,EAClCW,EAAW,EAAIX,EAAO,UAAY,EAClCA,EAAO,UACPA,EAAO,UACPN,GAAe,EACf,EACF,EACAmB,EAAY,eAAe,EAC3BA,EAAY,GAAG,YAAa,IAAM,CAChC,QAAQ,IAAI,UAAWA,CAAW,CACpC,CAAC,EACDR,EAAa,IAAIK,EAAOG,CAAW,EAGjCT,EAAQ,qBACV,QAAQ,IAAI,6BAA8BC,EAAa,IAAI,CAE/D,CAAC,EAEDL,EAAO,eAAe,UAAWU,GAAU,CACrCN,EAAQ,kBACVC,EAAa,IAAIK,CAAK,GAAG,QAAQ,EACjCL,EAAa,OAAOK,CAAK,GAGvBN,EAAQ,qBACV,QAAQ,IAAI,6BAA8BC,EAAa,IAAI,CAE/D,CAAC,CACH","names":["src_exports","__export","AssetType","GameObjectClasses","HueTintAndOutlineFXPipeline","MultiHueTintPipeline","ZERO_VECTOR","addCoords","chunkCoordToTileCoord","chunkToPixelCoord","coordEq","cornerTileCoordsFromRegionCoords","createAnimatedTilemap","createCamera","createChunkedTilemap","createChunks","createCulling","createDebugger","createInput","createObjectPool","createPhaserEngine","createVirtualTilemap","defineAssetsConfig","defineCameraConfig","defineMapConfig","definePhaserConfig","defineScaleConfig","defineScene","defineSceneConfig","generateFrames","getChunksInArea","getObjectsInArea","isRectangle","isSprite","isTileInArea","load","mod","pixelCoordToTileCoord","pixelToChunkCoord","removeAllTweens","tileCoordToChunkCoord","tileCoordToPixelCoord","tween","__toCommonJS","import_phaser","import_utils","tween","config","options","resolve","promise","targets","removeAllTweens","gameObject","tweenManager","mod","a","b","ZERO_VECTOR","cornerTileCoordsFromRegionCoords","regionCoords","regionLength","tileCoords","regionCoord","topLeft","topRight","bottomLeft","bottomRight","isTileInArea","tileCoord","area","coordEq","a","b","addCoords","pixelToChunkCoord","pixelCoord","chunkSize","chunkToPixelCoord","chunkCoord","pixelCoordToTileCoord","tileWidth","tileHeight","tileCoordToPixelCoord","tileCoordToChunkCoord","chunkCoordToTileCoord","import_utils","load","scene","callback","loader","resolve","promise","import_utils","getChunksInArea","area","chunkSize","topLeft","bottomRight","topLeftChunk","pixelToChunkCoord","bottomRightChunk","numChunksX","numChunksY","chunksInArea","x","y","getObjectsInArea","groups","area","ids","group","object","x","generateFrames","anims","animation","SpritePipeline","HueTintAndOutlineFXPipeline","game","obj","hueTint","outline","outlineColor","tintColor","_outlineColor","renderTarget","__publicField","MultiHueTintPipeline","game","__publicField","defineScene","options","preload","create","update","key","renderer","HueTintAndOutlineFXPipeline","MultiHueTintPipeline","definePhaserConfig","options","AssetType","GameObjectClasses","import_rxjs","import_utils","createChunks","worldView$","chunkSize","padding","visibleChunks","addedChunks$","removedChunks$","x","y","width","height","getChunksInArea","newVisibleChunks","added","coord","removed","import_vanilla","import_rxjs","createCamera","phaserCamera","options","e","worldView$","zoom$","wheelStream$","pinchStream$","gesture","state","onResize","setZoom","zoom","pinchSub","scaledDelta","acc","curr","wheelSub","x","movement","m","y","ignore","objectPool","centerOnCoord","tileCoord","tileWidth","tileHeight","pixelCoord","tileCoordToPixelCoord","centerOn","setScroll","import_mobx","import_rxjs","import_utils","import_utils","createRegistry","coordToIds","idToCoord","get","coord","set","id","prevCoord","remove","createCulling","objectPool","camera","chunks","chunkRegistry","disposer","chunkToEntity","chunk","entities","entityId","addedChunkSub","entity","removedChunkSub","trackEntity","pixelToChunkCoord","coordEq","dispose","newChunk","disposeObjectPoolObserver","change","d","import_mobx","defineAssetsConfig","assets","defineMapConfig","config","defineSceneConfig","defineScaleConfig","defineCameraConfig","isSprite","gameObject","type","isRectangle","createEmbodiedEntity","id","group","type","currentCameraFilter","position","onOnce","onUpdate","activeGameObject","cameraFilter","trackPositionUpdates","func","modifiesPosition","gameObject","setComponent","now","once","update","newPosition","hasComponent","removeComponent","stop","reset","executeGameObjectFunctions","isSprite","removeAllTweens","isRectangle","setCameraFilter","filter","spawn","despawn","functions","gameObjectProxy","_","prop","x","y","value","import_mobx","import_utils","isGameObjectType","GameObjectClasses","createObjectPool","scene","groups","classType","objects","cameraFilter","get","entity","type","embodiedEntity","createEmbodiedEntity","remove","object","ignoreCamera","cameraId","ignore","import_utils","import_utils","createChunkedTilemap","params","scene","tilesets","layerConfig","chunks","backgroundTile","tiles","tileWidth","tileHeight","relevantTilesets","key","mod","maps","chunkTileSize","disposer","visible","chunk","renderChunk","addedChunkSub","removedChunkSub","destroyChunk","createLayers","map","x","y","width","height","layers","layer","tilemapLayer","id","renderer","MultiHueTintPipeline","createMap","chunkCoord","data","tileset","topLeft","chunkToPixelCoord","defaultLayer","getMapAtChunkCoord","getMapAtTileCoord","tileCoord","tileCoordToChunkCoord","force","putTileAt","coord","tile","tint","putTile","topLeftCoord","chunkCoordToTileCoord","defaultIndex","index","dispose","d","size","setVisible","v","import_utils","createVirtualTilemap","config","chunks","layers","defaultLayer","tileWidth","tileHeight","tiles","layerKey","chunkedTilemap","createChunkedTilemap","putTileAt","coord","tile","layer","tint","chunk","tileCoordToChunkCoord","import_utils","createAnimatedTilemap","config","layers","defaultLayer","animationInterval","scene","defaultLayerKey","lastStep","animations","animatedTiles","layerKey","pausedAnimations","virtualTilemap","createVirtualTilemap","registerAnimation","animationKey","frames","putAnimationAt","coord","layer","removeAnimationAt","animation","pauseAnimationAt","resumeAnimationAt","animationStep","mod","currentFrame","update","time","dispose","import_rxjs","import_mobx","import_utils","createInput","inputPlugin","disposers","enabled","disableInput","enableInput","setCursor","cursor","keyboard$","pointermove$","pointerdown$","event","pointerup$","click$","prev","now","doubleClick$","rightClick$","pointer","drag$","acc","curr","area","pressedKeys","phaserKeyboard","codeToKey","key","addKey","keySub","keyName","pointerSub","keyObj","keyEvent","onKeyPress","keySelector","callback","disposer","passes","dispose","import_utils","createPhaserEngine","options","scale","sceneConfig","cameraConfig","cullingChunkSize","sceneConstructors","key","preload","create","update","defineScene","phaserConfig","definePhaserConfig","game","resolve","promise","resize","width","height","partialScenes","phaserScene","config","assetKey","asset","load","loader","objectPool","createObjectPool","camera","createCamera","cullingChunks","createChunks","culling","createCulling","anim","generateFrames","emptyMap","partialTilesets","tilesetKey","tileWidth","tileHeight","tileset","tilesets","partialMaps","mapKey","layers","backgroundTile","animationInterval","tileAnimations","chunkSize","chunks","map","createAnimatedTilemap","frames","maps","input","createInput","scenes","scene","import_utils","getRandomColor","red","green","blue","createDebugger","camera","chunks","scene","objectPool","map","options","visualChunks","worldViewRect","worldView","acc","curr","chunk","pixelCoord","chunkToPixelCoord","visualChunk"]} \ No newline at end of file diff --git a/packages/phaserx/dist/index.mjs b/packages/phaserx/dist/index.mjs new file mode 100644 index 0000000000..c329ece45c --- /dev/null +++ b/packages/phaserx/dist/index.mjs @@ -0,0 +1,111 @@ +var je=Object.defineProperty;var Le=(t,e,o)=>e in t?je(t,e,{enumerable:!0,configurable:!0,writable:!0,value:o}):t[e]=o;var Y=(t,e,o)=>(Le(t,typeof e!="symbol"?e+"":e,o),o);import"phaser";import{deferred as Ee}from"@latticexyz/utils";async function Me(t,e){let[o,,i]=Ee(),{targets:n}=t;if(!(!n.scene||!n.scene.tweens))return e?.keepExistingTweens||X(n),n.scene.tweens.add({...t,onComplete:(s,c)=>{t.onComplete&&t.onComplete(s,c),o()}}),i}function X(t){let e=t.scene.tweens;for(let o of e.tweens)o.hasTarget(t)&&o.stop()}function I(t,e){return(t%e+e)%e}var Re={x:0,y:0};function Ie(t,e){let o=[];return t.forEach(i=>{let n={x:i.x*e,y:i.y*e},s={x:(i.x+1)*e-1,y:i.y*e},c={x:i.x*e,y:(i.y+1)*e-1},r={x:(i.x+1)*e-1,y:(i.y+1)*e-1};o.push(n,s,c,r)}),o}function ze(t,e){return t.x>=e.x&&t.x=e.x&&t.y{i()}),n}import{CoordMap as We}from"@latticexyz/utils";function te(t,e){let o={x:t.x,y:t.y},i={x:t.x+t.width,y:t.y+t.height},n=z(o,e),s=z(i,e),c=s.x-n.x+1,r=s.y-n.y+1,l=new We;for(let d=0;di!==void 0)}function oe(t,e){return e.prefix&&e.suffix?t.generateFrameNames(e.assetKey,{start:e.startFrame,end:e.endFrame,prefix:e.prefix,suffix:e.suffix}):t.generateFrameNumbers(e.assetKey,{start:e.startFrame,end:e.endFrame})}var $e=Phaser.Renderer.WebGL.Pipelines.SpriteFXPipeline||Object,F=class extends $e{_tintColor=new Phaser.Display.Color;_outline=0;_outlineColor=new Phaser.Display.Color;constructor(e){super({game:e,renderTarget:!0,fragShader:` + precision mediump float; + uniform sampler2D uMainSampler; + uniform vec2 uTextureSize; + uniform vec3 tintColor; + uniform int outline; + uniform vec3 outlineColor; + varying vec2 outTexCoord; + + vec3 rgb2hsv(vec3 c) + { + vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); + vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g)); + vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r)); + float d = q.x - min(q.w, q.y); + float e = 1.0e-10; + return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x); + } + + void main(void) + { + vec4 srcColor; + vec4 outColor; + vec3 hsvColor; + vec3 rgbColor; + srcColor = texture2D(uMainSampler, outTexCoord); + hsvColor = rgb2hsv(srcColor.rgb); + if (hsvColor.g == 0.0 && !(tintColor.r == 0.0 && tintColor.g == 0.0 && tintColor.b == 0.0)) + { + rgbColor = srcColor.rgb * tintColor; + } else { + rgbColor = srcColor.rgb; + } + outColor = vec4(rgbColor.r, rgbColor.g, rgbColor.b, srcColor.a); + if(outline == 1) { + vec2 distance = vec2(2.0, 2.0) / uTextureSize; + float upAlpha = texture2D(uMainSampler, outTexCoord + vec2(0.0, distance.y)).a; + float leftAlpha = texture2D(uMainSampler, outTexCoord + vec2(-distance.x, 0.0)).a; + float downAlpha = texture2D(uMainSampler, outTexCoord + vec2(0.0, -distance.y)).a; + float rightAlpha = texture2D(uMainSampler, outTexCoord + vec2(distance.x, 0.0)).a; + if (srcColor.a == 0.0 && max(max(upAlpha, downAlpha), max(leftAlpha, rightAlpha)) == 1.0) + { + outColor = vec4(outlineColor, 1.0); + } + } + gl_FragColor = outColor; + } + `})}onDrawSprite(e){let o=e.pipelineData.hueTint,i=e.pipelineData.outline,n=e.pipelineData.outlineColor,s=o||0;if(typeof s=="number"&&(s=Phaser.Display.Color.IntegerToRGB(s)),i){this._outline=1;let c=n??0;typeof c=="number"&&(c=Phaser.Display.Color.IntegerToRGB(n)),this._outlineColor.setFromRGB(c)}else this._outline=0;this._tintColor.setFromRGB(s)}onDraw(e){this.set2f("uTextureSize",this.renderer.width,this.renderer.height),this.set3f("tintColor",this._tintColor.redGL,this._tintColor.greenGL,this._tintColor.blueGL),this.set1i("outline",this._outline),this.set3f("outlineColor",this._outlineColor.redGL,this._outlineColor.greenGL,this._outlineColor.blueGL),this.drawToGame(e)}};Y(F,"KEY","HueTintFXPipeline");var M=class extends Phaser.Renderer.WebGL.Pipelines.MultiPipeline{constructor(e){super({game:e,fragShader:` + #define SHADER_NAME PHASER_MULTI_V2_FS + #define numTextures %count% + precision highp float; + uniform sampler2D uMainSampler[%count%]; + varying vec2 outTexCoord; + varying float outTexId; + varying float outTintEffect; + varying vec4 outTint; + + vec4 getSampler (int index, vec2 uv) + { + for (int i = 0; i < numTextures; ++i) + { + if (i == index) + { + return texture2D(uMainSampler[i], uv); + } + } + + // Return black + return vec4(0); + } + vec3 rgb2hsv(vec3 c) + { + vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); + vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g)); + vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r)); + float d = q.x - min(q.w, q.y); + float e = 1.0e-10; + return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x); + } + vec3 hsv2rgb(vec3 c) + { + vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); + vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); + return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); + } + + void main () + { + vec4 srcColor; + vec3 hsvColor; + vec3 rgbColor; + vec4 texel = vec4(outTint.bgr * outTint.a, outTint.a); + srcColor = getSampler(int(outTexId), outTexCoord); + vec4 color = srcColor * texel; + // Multiply texture tint + vec3 hueTintColor = outTint.bgr; + if (hueTintColor != vec3(0.0, 0.0, 0.0)) { + hsvColor = rgb2hsv(srcColor.rgb); + if (hsvColor.g == 0.0 && srcColor.a == 1.) + { + vec3 color = hsv2rgb(hsvColor); + rgbColor = color * hueTintColor; + } else { + rgbColor = hsv2rgb(hsvColor); + } + color = vec4(rgbColor.r, rgbColor.g, rgbColor.b, srcColor.a); + } + gl_FragColor = color; + } + `})}};Y(M,"KEY","MultiHueTintPipeline");function me(t){let{preload:e,create:o,update:i,key:n}=t;return class extends Phaser.Scene{constructor(){super({key:n})}preload(){e&&e(this)}create(){o&&o(this);let c=this.renderer;c?.pipelines&&(c.pipelines.add(F.KEY,new F(this.game)),c.pipelines.add(M.KEY,new M(this.game)))}update(){i&&i(this)}}}function de(t){return{type:Phaser.WEBGL,scale:t.scale,pixelArt:!0,autoFocus:!0,render:{antialiasGL:!1,pixelArt:!0},scene:t.scenes}}var pe=(i=>(i[i.Image=0]="Image",i[i.SpriteSheet=1]="SpriteSheet",i[i.MultiAtlas=2]="MultiAtlas",i))(pe||{}),re={Sprite:Phaser.GameObjects.Sprite,Rectangle:Phaser.GameObjects.Rectangle,Line:Phaser.GameObjects.Line,Text:Phaser.GameObjects.Text};import{map as Ve,Subject as fe}from"rxjs";import{CoordMap as qe,subtract as ye}from"@latticexyz/utils";function ne(t,e,o=100){let i={current:new qe},n=new fe,s=new fe;return t.pipe(Ve(({x:r,y:l,width:d,height:a})=>te({x:r-o,y:l-o,width:d+2*o,height:a+2*o},e))).subscribe(r=>{let l=ye(r,i.current);for(let a of l.coords())n.next(a);let d=ye(i.current,r);for(let a of d.coords())s.next(a);i.current=r}),{addedChunks$:n.asObservable(),removedChunks$:s.asObservable(),chunkSize:e,visibleChunks:i}}import{Gesture as Ne}from"@use-gesture/vanilla";import{BehaviorSubject as Ce,filter as He,map as q,sampleTime as Be,scan as Ye,Subject as be,throttleTime as Xe}from"rxjs";function he(t,e){document.addEventListener("gesturestart",m=>m.preventDefault()),document.addEventListener("gesturechange",m=>m.preventDefault());let o=new Ce(t.worldView),i=new Ce(t.zoom),n=new be,s=new be,c=new Ne(t.scene.game.canvas,{onPinch:m=>s.next(m),onWheel:m=>n.next(m)},{}),r=()=>{requestAnimationFrame(()=>o.next(t.worldView))};t.scene.scale.addListener("resize",r);function l(m){t.setZoom(m),o.next(t.worldView),i.next(m)}let d=s.pipe(Xe(10),q(m=>{let x=i.getValue(),k=(m.offset[0]-x)*e.pinchSpeed;return x+k}),q(m=>Math.min(Math.max(m,e.minZoom),e.maxZoom)),Ye((m,x)=>[m[1],x],[1,1])).subscribe(([,m])=>{c._ctrl.state.pinch&&(c._ctrl.state.pinch.offset[0]=m),l(m)}),a=n.pipe(He(m=>!m.pinching),Be(10),q(m=>m.delta.map(x=>x*e.wheelSpeed)),q(m=>m.map(x=>x/t.zoom)),q(m=>[t.scrollX+m[0],t.scrollY+m[1]])).subscribe(([m,x])=>{t.setScroll(m,x),o.next(t.worldView)});function v(m,x){m.ignoreCamera(t.id,x)}function P(m,x,u){let k=Z(m,x,u);y(k.x,k.y)}function y(m,x){t.centerOn(m,x),requestAnimationFrame(()=>o.next(t.worldView))}function h(m,x){t.setScroll(m,x),requestAnimationFrame(()=>o.next(t.worldView))}return{phaserCamera:t,worldView$:o,zoom$:i,ignore:v,dispose:()=>{d.unsubscribe(),a.unsubscribe(),c.destroy(),t.scene.scale.removeListener("resize",r)},centerOnCoord:P,centerOn:y,setScroll:h,setZoom:l}}import{computed as Ze,observe as Ue,reaction as Je}from"mobx";import{from as Qe,map as xe,mergeMap as et,pipe as tt}from"rxjs";import{filterNullish as ot}from"@latticexyz/utils";import{CoordMap as rt}from"@latticexyz/utils";function nt(){let t=new rt,e=new Map;function o(s){let c=t.get(s);return c||(c=new Set,t.set(s,c)),c}function i(s,c){let r=e.get(s);(r&&o(r))?.delete(s),o(c).add(s),e.set(s,c)}function n(s){let c=e.get(s);(c&&o(c))?.delete(s),e.delete(s)}return{set:i,remove:n,get:o}}function ge(t,e,o){let i=nt(),n=new Map,s=tt(xe(a=>Qe(i.get(a))),et(a=>a),xe(a=>t.get(a,"Existing")),ot()),c=o.addedChunks$.pipe(s).subscribe(a=>a.spawn()),r=o.removedChunks$.pipe(s).subscribe(a=>a.despawn());function l(a){n.get(a.id)&&console.error("Entity is being tracked multiple times",a);let v=Ze(()=>z(a.position,o.chunkSize),{equals:J}),P=Je(()=>v.get(),y=>{i.set(a.id,y),o.visibleChunks.current.get(y)?a.spawn():a.despawn()},{fireImmediately:!0});n.set(a.id,P)}let d=Ue(t.objects,a=>{if(a.type==="add"&&l(a.newValue),a.type==="delete"){i.remove(a.oldValue.id);let v=n.get(a.oldValue.id);v&&v(),n.delete(a.oldValue.id)}});return{dispose:()=>{for(let a of n.values())a();d(),c.unsubscribe(),r.unsubscribe()}}}import{observable as it,runInAction as ve}from"mobx";function Co(t){return t}function bo(t){return t}function ho(t){return t}function xo(t){return t}function go(t){return t}function ie(t,e){return e==="Sprite"}function Te(t,e){return e==="Rectangle"}function Pe(t,e,o,i=0){let n=it({x:0,y:0}),s=new Map,c=new Map,r,l={current:i};function d(u){return we(u)?k=>{u(k),ve(()=>{n.x=k.x,n.y=k.y})}:u}async function a({id:u,now:k,once:C,update:b}){let w=C&&we(C);w&&ve(()=>{n.x=w.x??n.x,n.y=w.y??n.y}),C&&s.set(u,d(C)),b&&c.set(u,d(b)),r&&k&&await d(k)(r),r&&C&&C(r)}function v(u){return s.has(u)||c.has(u)}function P(u,k){s.delete(u),c.delete(u),r&&(y(r,k),ke(r,s.values()))}function y(u,k=!0){k&&(ie(u,o)&&u.stop(),X(u)),u.setDepth(10),u.cameraFilter=l.current,u.resetPipeline(!0,!0),u.setScale(1,1),u.setOrigin(0,0),u.setAlpha(1),u.setScrollFactor(1),u.clearMask(),u.setData("objectPoolId",null),ie(u,o)&&(u.clearTint(),u.setTexture("")),Te(u,o)&&(u.width=0,u.height=0)}function h(u){l.current=u,r&&(r.cameraFilter=u)}function m(){if(r)return;let u=e.get();y(u),ke(u,s.values()),u.setActive(!0),u.setVisible(!0),u.setData("objectPoolId",t),r=u}function x(){r&&e.killAndHide(r),r=void 0}return{setComponent:a,hasComponent:v,removeComponent:P,spawn:m,despawn:x,position:n,id:t,setCameraFilter:h,type:o}}function ke(t,e){if(t)for(let o of e)o(t)}function we(t){let e,o=new Proxy({x:void 0,y:void 0},{get:(i,n)=>n==="setPosition"?(s,c)=>e={x:s,y:c}:n==="setX"?s=>e={x:s}:n==="setY"?s=>e={y:s}:()=>{},set:(i,n,s)=>(n==="x"&&(e=e?{...e,x:s}:{x:s}),n==="y"&&(e=e?{...e,y:s}:{y:s}),!0)});return t(o),e}import{observable as st}from"mobx";import{mapObject as at}from"@latticexyz/utils";function ct(t){return Object.keys(re).includes(t)}function Se(t){let e=at(re,r=>t.add.group({classType:r})),o=st(new Map),i={current:0};function n(r,l){typeof r=="number"&&(r=String(r));let d=o.get(r);return ct(l)?(d||(d=Pe(r,e[l],l,i.current)),o.has(r)||o.set(r,d),d):d||void 0}function s(r){typeof r=="number"&&(r=String(r));let l=o.get(r);l&&l.despawn(),o.delete(r)}function c(r,l){l?i.current|=r:i.current&=~r;for(let d of o.values())d.setCameraFilter(i.current)}return{get:n,remove:s,objects:o,groups:e,ignoreCamera:c}}import{CoordMap as lt}from"@latticexyz/utils";import{pickRandom as ut}from"@latticexyz/utils";function se(t){let{scene:e,tilesets:o,layerConfig:i,chunks:n,backgroundTile:s,tiles:c,tileWidth:r,tileHeight:l}=t,d=Object.keys(i.layers).map(f=>i.layers[f].tilesets).flat();if(I(n.chunkSize,r)!==0||I(n.chunkSize,l)!==0)throw new Error("Chunks pixel size must be a multiple of tile width and height to be used with chunked tilemap");let a=new lt,v={x:n.chunkSize/r,y:n.chunkSize/l},P=new Set,y={current:!0};for(let f of n.visibleChunks.current.coords())p(f);let h=n.addedChunks$.subscribe(f=>{p(f)}),m=n.removedChunks$.subscribe(f=>{b(f)});P.add(()=>h?.unsubscribe()),P.add(()=>m?.unsubscribe);function x(f,T,S,O,K,G){let L={};for(let E of Object.keys(i.layers)){let H=i.layers[E],$=f.createBlankLayer(E,H.tilesets.map(U=>o[U]),S,O,K,G);if(!$){console.error(`Adding tilemap layer ${E} failed.`);continue}L[E]=$;let B=T.game.renderer;H.hasHueTintShader&&B?.pipelines&&(L[E].pipeline=B.pipelines.get(M.KEY))}return{layers:Object.values(L),defaultLayer:L[i.defaultLayer]}}function u(f){let T=new Phaser.Tilemaps.MapData({tileHeight:l,tileWidth:r,width:v.x,height:v.y,tilesets:Object.entries(o).filter(([G])=>d.includes(G)).map(([,G])=>G)}),S=new Phaser.Tilemaps.Tilemap(e,T),O=W(f,n.chunkSize),{defaultLayer:K}=x(S,e,O.x,O.y,v.x,v.y);return S.setLayer(K),a.set(f,S),S}function k(f){return a.get(f)||u(f)}function C(f){let T=V(f,r,l,n.chunkSize);return k(T)}function b(f,T){if(!y.current&&!T||!a.has(f))return;k(f).destroy(),a.delete(f)}function w(f,T,S,O){if(!y.current)return;let K=C(f),G=K.putTileAt(T,I(f.x,v.x),I(f.y,v.y),void 0,S);if(G==null)throw new Error("putTileAt failed");G.width=K.tileWidth,G.height=K.tileHeight,O&&(G.tint=O)}function p(f){if(!y.current)return;let T=k(f),S=Q(f,r,l,n.chunkSize);for(let O of Object.keys(i.layers))T.forEachTile(K=>{let G={x:S.x+K.x,y:S.y+K.y},L=O===i.defaultLayer?ut(s):-1,E=c[O].get(G)||L;K.index=E},void 0,void 0,void 0,void 0,void 0,void 0,O)}function g(){for(let f of a.values())f.destroy();a.clear();for(let f of P)f()}function A(){return a.size}function _(f){if(f!==y.current){y.current=f;for(let T of n.visibleChunks.current.coords())y.current?p(T):b(T,!0)}}return{size:A,putTileAt:w,dispose:g,setVisible:_,visible:y,tileWidth:r,tileHeight:l}}import{CoordMap as mt}from"@latticexyz/utils";function ae(t){let{chunks:e,layerConfig:{layers:o,defaultLayer:i},tileWidth:n,tileHeight:s}=t,c={};for(let d of Object.keys(o))c[d]=new mt;let r=se({...t,tiles:c});function l(d,a,v,P){c[v||i].set(d,a);let y=V(d,n,s,e.chunkSize);r.visible&&e.visibleChunks.current.get(y)&&r.putTileAt(d,a,v,P)}return{...r,putTileAt:l,tiles:c}}import{CoordMap as Ae}from"@latticexyz/utils";function ce(t){let{layerConfig:{layers:e,defaultLayer:o},animationInterval:i,scene:n}=t,s=o,c=0,r={},l={};for(let C of Object.keys(e))l[C]=new Ae;let d={};for(let C of Object.keys(e))d[C]=new Ae;let a=ae(t);function v(C,b){r[C]={frames:b,index:0}}function P(C,b,w=s){l[w].set(C,b)}function y(C,b=s){let w=l[b].get(C),p=w&&r[w];l[b].delete(C),p&&a.putTileAt(C,p.frames[0],b)}function h(C,b=s){let w=l[b].get(C);w&&(d[b].set(C,w),y(C,b))}function m(C,b=s){let w=d[b].get(C);w&&(d[b].delete(C),P(C,w,b))}function x(){for(let C of Object.keys(r)){let b=r[C];b&&(b.index=I(b.index+1,b.frames.length))}for(let C of Object.keys(l)){let b=l[C];for(let w of b.coords()){let p=b.get(w),g=p&&r[p];if(!g)continue;let A=g.frames[g.index];a.putTileAt(w,A,C)}}}function u(C){Co.current),R(()=>({pointer:t.manager?.activePointer})),D()),l=le(document,"mousedown").pipe(j(()=>o.current),R(p=>({pointer:t.manager?.activePointer,event:p})),D()),d=le(document,"mouseup").pipe(j(()=>o.current),R(p=>({pointer:t.manager?.activePointer,event:p})),D()),a=N(l,d).pipe(j(()=>o.current),R(({event:p})=>[p.type==="mousedown"&&p.button===0,Date.now()]),Ke(2,1),j(([p,g])=>p[0]&&!g[0]&&g[1]-p[1]<250),R(()=>t.manager?.activePointer),D()),v=l.pipe(j(()=>o.current),R(()=>Date.now()),Ke(2,1),j(([p,g])=>g-p<500),Ct(500),R(()=>t.manager?.activePointer),D()),P=N(l,d).pipe(j(({pointer:p})=>o.current&&p.rightButtonDown()),R(()=>t.manager?.activePointer),D()),y=N(l.pipe(R(()=>{})),N(d,r).pipe(pt(),ft((p,[{pointer:g},{pointer:A}])=>A.leftButtonDown()?g.leftButtonDown()&&p?{...p,width:A.worldX-p.x,height:A.worldY-p.y}:{x:A.worldX,y:A.worldY,width:0,height:0}:void 0,void 0),D(),j(p=>Math.abs(p.width)>10&&Math.abs(p.height)>10))).pipe(j(()=>o.current),dt()),h=bt(new Set),m=t.keyboard,x=new Map;for(let p of Object.keys(Phaser.Input.Keyboard.KeyCodes))C(p);let u=c.pipe(j(()=>o.current)).subscribe(p=>{let g=x.get(p.keyCode);g&&Oe(()=>{p.isDown&&h.add(g),p.isUp&&h.delete(g)})});e.add(()=>u?.unsubscribe());let k=N(l,d).subscribe(({pointer:p})=>{Oe(()=>{p.leftButtonDown()?h.add("POINTER_LEFT"):h.delete("POINTER_LEFT"),p.rightButtonDown()?h.add("POINTER_RIGHT"):h.delete("POINTER_RIGHT")})});e.add(()=>k?.unsubscribe());function C(p){if(!m){console.warn(`Adding key ${p} failed. No phaser keyboard detected.`);return}let g=m.addKey(p,!1);x.set(g.keyCode,p),g.removeAllListeners(),g.emitOnRepeat=!0,g.on("down",A=>c.next(A)),g.on("up",A=>c.next(A))}function b(p,g){let A=ht(()=>p(h),_=>{_&&g()},{fireImmediately:!0});e.add(A)}function w(){for(let p of e)p()}return{keyboard$:c.asObservable(),pointermove$:r,pointerdown$:l,pointerup$:d,click$:a,doubleClick$:v,rightClick$:P,drag$:y,pressedKeys:h,dispose:w,disableInput:i,enableInput:n,setCursor:s,enabled:o,onKeyPress:b}}import{deferred as xt}from"@latticexyz/utils";async function dr(t){let{scale:e,sceneConfig:o,cameraConfig:i,cullingChunkSize:n}=t,s=Object.keys(o).map(y=>{let{preload:h,create:m,update:x}=o[y];return me({key:y,preload:h,create:m,update:x})}),c=de({scenes:s,scale:e}),r=new Phaser.Game(c),[l,,d]=xt();r.events.on("ready",l),c.type===Phaser.HEADLESS&&r.textures.emit("ready"),await d;function a(){let y=window.innerWidth/r.scale.zoom,h=window.innerHeight/r.scale.zoom;r.scale.resize(y,h)}a(),window.addEventListener("resize",a);let v={};for(let y of r.scene.getScenes(!1)){let h=y.scene.key,m=o[h];for(let[f,T]of Object.entries(o[h].assets))await ee(y,S=>{T.type===0?S.image(f,T.path):T.type===1?S.spritesheet(f,T.path,T.options):T.type===2&&S.multiatlas(f,T.path,T.options.imagePath)});let x=Se(y),u=he(y.cameras.main,i),k=ne(u.worldView$,n),C=ge(x,u,k);for(let f of m.animations)y.anims.create({key:f.key,frames:oe(y.anims,f),frameRate:f.frameRate,repeat:f.repeat});let b=new Phaser.Tilemaps.Tilemap(y,new Phaser.Tilemaps.MapData),w={};for(let[f,{assetKey:T,tileWidth:S,tileHeight:O}]of Object.entries(o[h].tilesets)){let K=b.addTilesetImage(f,T,S,O);if(!K){console.error(`Adding tileset ${f} failed.`);continue}w[f]=K}let p=w,g={};for(let f of Object.keys(m.maps)){let{layers:T,backgroundTile:S,tileWidth:O,tileHeight:K,animationInterval:G,tileAnimations:L,chunkSize:E}=m.maps[f],H=ne(u.worldView$,E),$=ce({scene:y,tilesets:p,layerConfig:T,chunks:H,tileWidth:O,tileHeight:K,backgroundTile:S,animationInterval:G});if(L)for(let[B,U]of Object.entries(L))$.registerAnimation(B,U);g[f]=$}let A=g,_=Ge(y.input);v[h]={phaserScene:y,objectPool:x,camera:u,culling:C,maps:A,input:_,config:o[h]}}let P=v;return{game:r,scenes:P,dispose:()=>{r.destroy(!0);for(let y of Object.keys(P)){let h=P[y];h.camera.dispose(),h.culling.dispose(),h.input.dispose();for(let m of Object.values(h.maps))m.dispose()}window.removeEventListener("resize",a)}}}import{CoordMap as gt}from"@latticexyz/utils";function Tt(){let t=Math.random()*255,e=Math.random()*255,o=Math.random()*255;return t*65535+e*255+o}function Cr(t,e,o,i,n){let s={logViewport:!1,visualizeChunks:!0,visualizeViewport:!1,logNumVisibleChunks:!1,logObjectStats:!1,logMaps:!0},c=new gt,r=o.add.rectangle(0,0,1,1,16711680,.2);r.setInteractive(),r.on("pointerup",()=>{console.log("clicked",r)}),t.worldView$.subscribe(l=>{s.logViewport&&console.log(l),s.visualizeViewport&&(r.setScale(l.width,l.height),r.setPosition(l.centerX,l.centerY)),s.logObjectStats&&console.log(`Entities: ${i.objects.size} / Pool size: ${Object.values(i.groups).reduce((d,a)=>d+a.getChildren().length,0)} / Pool active: ${Object.values(i.groups).reduce((d,a)=>d+a.countActive(),0)}`),s.logMaps&&console.log("Num maps",n.size())}),e.addedChunks$.subscribe(l=>{if(s.visualizeChunks){let d=W(l,e.chunkSize),a=o.add.rectangle(d.x+e.chunkSize/2,d.y+e.chunkSize/2,e.chunkSize,e.chunkSize,Tt(),.5);a.setInteractive(),a.on("pointerup",()=>{console.log("clicked",a)}),c.set(l,a)}s.logNumVisibleChunks&&console.log("Number of visible chunks: ",c.size)}),e.removedChunks$.subscribe(l=>{s.visualizeChunks&&(c.get(l)?.destroy(),c.delete(l)),s.logNumVisibleChunks&&console.log("Number of visible chunks: ",c.size)})}export{pe as AssetType,re as GameObjectClasses,F as HueTintAndOutlineFXPipeline,M as MultiHueTintPipeline,Re as ZERO_VECTOR,Fe as addCoords,Q as chunkCoordToTileCoord,W as chunkToPixelCoord,J as coordEq,Ie as cornerTileCoordsFromRegionCoords,ce as createAnimatedTilemap,he as createCamera,se as createChunkedTilemap,ne as createChunks,ge as createCulling,Cr as createDebugger,Ge as createInput,Se as createObjectPool,dr as createPhaserEngine,ae as createVirtualTilemap,Co as defineAssetsConfig,go as defineCameraConfig,bo as defineMapConfig,de as definePhaserConfig,xo as defineScaleConfig,me as defineScene,ho as defineSceneConfig,oe as generateFrames,te as getChunksInArea,_e as getObjectsInArea,Te as isRectangle,ie as isSprite,ze as isTileInArea,ee as load,I as mod,ue as pixelCoordToTileCoord,z as pixelToChunkCoord,X as removeAllTweens,V as tileCoordToChunkCoord,Z as tileCoordToPixelCoord,Me as tween}; +//# sourceMappingURL=index.mjs.map \ No newline at end of file diff --git a/packages/phaserx/dist/index.mjs.map b/packages/phaserx/dist/index.mjs.map new file mode 100644 index 0000000000..bc43b5ed5a --- /dev/null +++ b/packages/phaserx/dist/index.mjs.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/index.ts","../src/utils/tween.ts","../src/utils/math.ts","../src/utils/coords.ts","../src/utils/load.ts","../src/utils/chunks.ts","../src/utils/area.ts","../src/utils/generateFrames.ts","../src/pipelines/HueTintAndOutlineFXPipeline.ts","../src/pipelines/MultiHueTintPipeline.ts","../src/defineScene.ts","../src/definePhaserConfig.ts","../src/constants.ts","../src/createChunks.ts","../src/createCamera.ts","../src/createCulling.ts","../src/createEmbodiedEntity.ts","../src/guards.ts","../src/createObjectPool.ts","../src/tilemap/createChunkedTilemap.ts","../src/tilemap/createVirtualTilemap.ts","../src/tilemap/createAnimatedTilemap.ts","../src/createInput.ts","../src/createPhaserEngine.ts","../src/createDebugger.ts"],"sourcesContent":["import \"phaser\";\n\nexport * from \"./utils\";\nexport * from \"./createPhaserEngine\";\nexport * from \"./createObjectPool\";\nexport * from \"./definePhaserConfig\";\nexport * from \"./defineScene\";\nexport * from \"./createCamera\";\nexport * from \"./createChunks\";\nexport * from \"./createDebugger\";\nexport * from \"./createCulling\";\nexport * from \"./constants\";\nexport * from \"./guards\";\nexport * from \"./pipelines\";\nexport * from \"./tilemap\";\nexport * from \"./createInput\";\nexport type { Asset, Camera, Coord } from \"./types\";\nexport type { AnimatedTilemap, ChunkedTilemap, VirtualTilemap } from \"./tilemap\";\n","import { deferred } from \"@latticexyz/utils\";\n\ntype TweenBuilderConfig = { targets: Phaser.GameObjects.Sprite } & Omit<\n Phaser.Types.Tweens.TweenBuilderConfig,\n \"targets\"\n>;\n\n/**\n * Add a tween to the provided game object.\n * @returns Promise that resolves when the tween is done.\n */\nexport async function tween(config: TweenBuilderConfig, options?: { keepExistingTweens?: boolean }) {\n const [resolve, , promise] = deferred();\n const { targets } = config;\n if (!targets.scene || !targets.scene.tweens) return;\n\n // Kill old tweens\n if (!options?.keepExistingTweens) {\n removeAllTweens(targets);\n }\n\n // Add new tween\n targets.scene.tweens.add({\n ...config,\n onComplete: (tween, targets) => {\n config.onComplete && config.onComplete(tween, targets);\n resolve();\n },\n });\n return promise;\n}\n\nexport function removeAllTweens(gameObject: Phaser.GameObjects.GameObject) {\n const tweenManager = gameObject.scene.tweens;\n for (const tween of tweenManager.tweens) {\n if (tween.hasTarget(gameObject)) {\n tween.stop();\n }\n }\n}\n","export function mod(a: number, b: number) {\n return ((a % b) + b) % b;\n}\n","import { Area, ChunkCoord, Coord, PixelCoord, WorldCoord } from \"../types\";\n\nexport const ZERO_VECTOR: Coord = { x: 0, y: 0 };\n\nexport function cornerTileCoordsFromRegionCoords(regionCoords: WorldCoord[], regionLength: number) {\n const tileCoords: WorldCoord[] = [];\n\n regionCoords.forEach((regionCoord) => {\n const topLeft = { x: regionCoord.x * regionLength, y: regionCoord.y * regionLength };\n const topRight = { x: (regionCoord.x + 1) * regionLength - 1, y: regionCoord.y * regionLength };\n const bottomLeft = { x: regionCoord.x * regionLength, y: (regionCoord.y + 1) * regionLength - 1 };\n const bottomRight = { x: (regionCoord.x + 1) * regionLength - 1, y: (regionCoord.y + 1) * regionLength - 1 };\n tileCoords.push(topLeft, topRight, bottomLeft, bottomRight);\n });\n\n return tileCoords;\n}\n\nexport function isTileInArea(tileCoord: WorldCoord, area: Area) {\n return (\n tileCoord.x >= area.x &&\n tileCoord.x < area.x + area.width &&\n tileCoord.y >= area.x &&\n tileCoord.y < area.y + area.height\n );\n}\n\nexport function coordEq(a?: Coord, b?: Coord) {\n if (!a && !b) return true;\n if (!a || !b) return false;\n return a.x === b.x && a.y === b.y;\n}\n\nexport function addCoords(a: Coord, b: Coord) {\n return {\n x: a.x + b.x,\n y: a.y + b.y,\n };\n}\n\nexport function pixelToChunkCoord(pixelCoord: PixelCoord, chunkSize: number): ChunkCoord {\n return { x: Math.floor(pixelCoord.x / chunkSize), y: Math.floor(pixelCoord.y / chunkSize) };\n}\n\nexport function chunkToPixelCoord(chunkCoord: ChunkCoord, chunkSize: number): PixelCoord {\n return { x: chunkCoord.x * chunkSize, y: chunkCoord.y * chunkSize };\n}\n\nexport function pixelCoordToTileCoord(pixelCoord: PixelCoord, tileWidth: number, tileHeight: number): WorldCoord {\n return {\n x: Math.floor(pixelCoord.x / tileWidth),\n y: Math.floor(pixelCoord.y / tileHeight),\n };\n}\n\nexport function tileCoordToPixelCoord(tileCoord: WorldCoord, tileWidth: number, tileHeight: number): PixelCoord {\n return {\n x: tileCoord.x * tileWidth,\n y: tileCoord.y * tileHeight,\n };\n}\n\nexport function tileCoordToChunkCoord(\n tileCoord: WorldCoord,\n tileWidth: number,\n tileHeight: number,\n chunkSize: number\n): ChunkCoord {\n const pixelCoord = tileCoordToPixelCoord(tileCoord, tileWidth, tileHeight);\n return pixelToChunkCoord(pixelCoord, chunkSize);\n}\n\nexport function chunkCoordToTileCoord(\n chunkCoord: ChunkCoord,\n tileWidth: number,\n tileHeight: number,\n chunkSize: number\n): WorldCoord {\n const pixelCoord = chunkToPixelCoord(chunkCoord, chunkSize);\n return pixelCoordToTileCoord(pixelCoord, tileWidth, tileHeight);\n}\n","import { deferred } from \"@latticexyz/utils\";\n\nexport async function load(scene: Phaser.Scene, callback: (loader: Phaser.Loader.LoaderPlugin) => void) {\n const loader = scene.load;\n callback(loader);\n loader.start();\n const [resolve, , promise] = deferred();\n loader.on(\"complete\", () => {\n resolve();\n });\n return promise;\n}\n","import { CoordMap } from \"@latticexyz/utils\";\nimport { Area } from \"../types\";\nimport { pixelToChunkCoord } from \"./coords\";\n\nexport function getChunksInArea(area: Area, chunkSize: number) {\n const topLeft = { x: area.x, y: area.y };\n const bottomRight = { x: area.x + area.width, y: area.y + area.height };\n\n const topLeftChunk = pixelToChunkCoord(topLeft, chunkSize);\n const bottomRightChunk = pixelToChunkCoord(bottomRight, chunkSize);\n\n const numChunksX = bottomRightChunk.x - topLeftChunk.x + 1;\n const numChunksY = bottomRightChunk.y - topLeftChunk.y + 1;\n\n const chunksInArea = new CoordMap();\n\n for (let x = 0; x < numChunksX; x++) {\n for (let y = 0; y < numChunksY; y++) {\n chunksInArea.set(\n {\n x: topLeftChunk.x + x,\n y: topLeftChunk.y + y,\n },\n true\n );\n }\n }\n\n return chunksInArea;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nexport function getObjectsInArea(groups: Phaser.GameObjects.Group[], area: Phaser.Geom.Rectangle) {\n const ids = [];\n for (const group of groups) {\n for (const object of group.getChildren() as any[]) {\n if (object.active && \"x\" in object && \"y\" in object && area.contains(object.x, object.y)) {\n console.log(\"got one\", object);\n ids.push(object);\n }\n }\n }\n return ids.filter((x) => x !== undefined);\n}\n","import { Animation, Assets } from \"../types\";\n\nexport function generateFrames(\n anims: Phaser.Animations.AnimationManager,\n animation: Animation\n): Phaser.Types.Animations.AnimationFrame[] {\n if (animation.prefix && animation.suffix) {\n return anims.generateFrameNames(animation.assetKey, {\n start: animation.startFrame,\n end: animation.endFrame,\n prefix: animation.prefix,\n suffix: animation.suffix,\n });\n } else {\n return anims.generateFrameNumbers(animation.assetKey, { start: animation.startFrame, end: animation.endFrame });\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nconst SpritePipeline = Phaser.Renderer.WebGL.Pipelines.SpriteFXPipeline || Object;\nexport class HueTintAndOutlineFXPipeline extends SpritePipeline {\n public static readonly KEY = \"HueTintFXPipeline\";\n\n private _tintColor = new Phaser.Display.Color();\n\n private _outline = 0;\n private _outlineColor = new Phaser.Display.Color();\n\n constructor(game: Phaser.Game) {\n super({\n game: game,\n renderTarget: true,\n fragShader: `\n precision mediump float;\n uniform sampler2D uMainSampler;\n uniform vec2 uTextureSize;\n uniform vec3 tintColor;\n uniform int outline;\n uniform vec3 outlineColor;\n varying vec2 outTexCoord;\n \n vec3 rgb2hsv(vec3 c)\n {\n vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);\n vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));\n vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));\n float d = q.x - min(q.w, q.y);\n float e = 1.0e-10;\n return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);\n }\n \n void main(void)\n {\n vec4 srcColor;\n vec4 outColor;\n vec3 hsvColor;\n vec3 rgbColor;\n srcColor = texture2D(uMainSampler, outTexCoord);\n hsvColor = rgb2hsv(srcColor.rgb);\n if (hsvColor.g == 0.0 && !(tintColor.r == 0.0 && tintColor.g == 0.0 && tintColor.b == 0.0))\n {\n rgbColor = srcColor.rgb * tintColor;\n } else {\n rgbColor = srcColor.rgb;\n }\n outColor = vec4(rgbColor.r, rgbColor.g, rgbColor.b, srcColor.a);\n if(outline == 1) {\n vec2 distance = vec2(2.0, 2.0) / uTextureSize;\n float upAlpha = texture2D(uMainSampler, outTexCoord + vec2(0.0, distance.y)).a;\n float leftAlpha = texture2D(uMainSampler, outTexCoord + vec2(-distance.x, 0.0)).a;\n float downAlpha = texture2D(uMainSampler, outTexCoord + vec2(0.0, -distance.y)).a;\n float rightAlpha = texture2D(uMainSampler, outTexCoord + vec2(distance.x, 0.0)).a;\n if (srcColor.a == 0.0 && max(max(upAlpha, downAlpha), max(leftAlpha, rightAlpha)) == 1.0)\n {\n outColor = vec4(outlineColor, 1.0);\n }\n }\n gl_FragColor = outColor; \n }\n `,\n });\n }\n\n onDrawSprite(obj: Phaser.GameObjects.Sprite) {\n const hueTint = (obj.pipelineData as any).hueTint;\n\n const outline = (obj.pipelineData as any).outline;\n const outlineColor = (obj.pipelineData as any).outlineColor;\n\n let tintColor = hueTint ? hueTint : 0x000000;\n if (typeof tintColor === \"number\") {\n tintColor = Phaser.Display.Color.IntegerToRGB(tintColor);\n }\n\n if (outline) {\n this._outline = 1;\n\n let _outlineColor = outlineColor ?? 0x000000;\n if (typeof _outlineColor === \"number\") {\n _outlineColor = Phaser.Display.Color.IntegerToRGB(outlineColor);\n }\n\n this._outlineColor.setFromRGB(_outlineColor);\n } else {\n this._outline = 0;\n }\n\n this._tintColor.setFromRGB(tintColor);\n }\n\n onDraw(renderTarget: Phaser.Renderer.WebGL.RenderTarget) {\n this.set2f(\"uTextureSize\", this.renderer.width, this.renderer.height);\n this.set3f(\"tintColor\", this._tintColor.redGL, this._tintColor.greenGL, this._tintColor.blueGL);\n\n this.set1i(\"outline\", this._outline);\n this.set3f(\"outlineColor\", this._outlineColor.redGL, this._outlineColor.greenGL, this._outlineColor.blueGL);\n\n this.drawToGame(renderTarget);\n }\n}\n","export class MultiHueTintPipeline extends Phaser.Renderer.WebGL.Pipelines.MultiPipeline {\n public static readonly KEY = \"MultiHueTintPipeline\";\n constructor(game: Phaser.Game) {\n super({\n game: game,\n fragShader: `\n #define SHADER_NAME PHASER_MULTI_V2_FS\n #define numTextures %count%\n precision highp float;\n uniform sampler2D uMainSampler[%count%];\n varying vec2 outTexCoord;\n varying float outTexId;\n varying float outTintEffect;\n varying vec4 outTint;\n \n vec4 getSampler (int index, vec2 uv)\n {\n for (int i = 0; i < numTextures; ++i)\n {\n if (i == index)\n {\n return texture2D(uMainSampler[i], uv);\n }\n }\n \n // Return black\n return vec4(0);\n }\n vec3 rgb2hsv(vec3 c)\n {\n vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);\n vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));\n vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));\n float d = q.x - min(q.w, q.y);\n float e = 1.0e-10;\n return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);\n }\n vec3 hsv2rgb(vec3 c)\n {\n vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);\n vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);\n return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);\n }\n \n void main ()\n {\n vec4 srcColor;\n vec3 hsvColor;\n vec3 rgbColor;\n vec4 texel = vec4(outTint.bgr * outTint.a, outTint.a);\n srcColor = getSampler(int(outTexId), outTexCoord);\n vec4 color = srcColor * texel;\n // Multiply texture tint\n vec3 hueTintColor = outTint.bgr;\n if (hueTintColor != vec3(0.0, 0.0, 0.0)) {\n hsvColor = rgb2hsv(srcColor.rgb);\n if (hsvColor.g == 0.0 && srcColor.a == 1.)\n {\n vec3 color = hsv2rgb(hsvColor);\n rgbColor = color * hueTintColor;\n } else {\n rgbColor = hsv2rgb(hsvColor);\n }\n color = vec4(rgbColor.r, rgbColor.g, rgbColor.b, srcColor.a);\n }\n gl_FragColor = color;\n }\n `,\n });\n }\n}\n","import { HueTintAndOutlineFXPipeline, MultiHueTintPipeline } from \"./pipelines\";\n\nexport function defineScene(options: {\n key: string;\n preload?: (scene: Phaser.Scene) => void;\n create?: (scene: Phaser.Scene) => void;\n update?: (scene: Phaser.Scene) => void;\n}) {\n const { preload, create, update, key } = options;\n return class GameScene extends Phaser.Scene {\n constructor() {\n super({ key });\n }\n\n preload() {\n preload && preload(this);\n }\n\n create() {\n create && create(this);\n const renderer = this.renderer as Phaser.Renderer.WebGL.WebGLRenderer;\n if (renderer?.pipelines) {\n renderer.pipelines.add(HueTintAndOutlineFXPipeline.KEY, new HueTintAndOutlineFXPipeline(this.game));\n renderer.pipelines.add(MultiHueTintPipeline.KEY, new MultiHueTintPipeline(this.game));\n }\n }\n\n update() {\n update && update(this);\n }\n };\n}\n","import { GameScene } from \"./types\";\n\nexport function definePhaserConfig(options: {\n scenes: GameScene[];\n scale: Phaser.Types.Core.GameConfig[\"scale\"];\n}): Phaser.Types.Core.GameConfig {\n return {\n type: Phaser.WEBGL,\n scale: options.scale,\n pixelArt: true,\n autoFocus: true,\n render: {\n antialiasGL: false,\n pixelArt: true,\n },\n scene: options.scenes,\n };\n}\n","export enum AssetType {\n Image,\n SpriteSheet,\n MultiAtlas,\n}\n\nexport const GameObjectClasses = {\n Sprite: Phaser.GameObjects.Sprite,\n Rectangle: Phaser.GameObjects.Rectangle,\n Line: Phaser.GameObjects.Line,\n Text: Phaser.GameObjects.Text,\n};\n","import { map, Observable, Subject } from \"rxjs\";\nimport { Area, ChunkCoord } from \"./types\";\nimport { getChunksInArea } from \"./utils\";\nimport { CoordMap, subtract } from \"@latticexyz/utils\";\n\nexport function createChunks(worldView$: Observable, chunkSize: number, padding = 100) {\n const visibleChunks = { current: new CoordMap() };\n\n const addedChunks$ = new Subject();\n const removedChunks$ = new Subject();\n\n const visibleChunkStream = worldView$.pipe(\n map(({ x, y, width, height }) =>\n // Calculate current chunks from the world view\n getChunksInArea(\n {\n x: x - padding,\n y: y - padding,\n width: width + 2 * padding,\n height: height + 2 * padding,\n },\n chunkSize\n )\n )\n );\n\n visibleChunkStream.subscribe((newVisibleChunks) => {\n const added = subtract(newVisibleChunks, visibleChunks.current); // Chunks that are visible not but not before\n for (const coord of added.coords()) addedChunks$.next(coord);\n\n const removed = subtract(visibleChunks.current, newVisibleChunks); // Chunks that were visible before but not now\n for (const coord of removed.coords()) removedChunks$.next(coord);\n\n visibleChunks.current = newVisibleChunks;\n });\n\n return {\n addedChunks$: addedChunks$.asObservable(),\n removedChunks$: removedChunks$.asObservable(),\n chunkSize,\n visibleChunks,\n };\n}\n","import { Gesture } from \"@use-gesture/vanilla\";\nimport { BehaviorSubject, filter, map, sampleTime, scan, Subject, throttleTime } from \"rxjs\";\nimport { tileCoordToPixelCoord } from \"./utils\";\nimport { Camera, CameraConfig, Coord, GestureState, ObjectPool } from \"./types\";\n\nexport function createCamera(phaserCamera: Phaser.Cameras.Scene2D.Camera, options: CameraConfig): Camera {\n // Stop default gesture events to not collide with use-gesture\n // https://github.com/pmndrs/use-gesture/blob/404e2b2ac145a45aff179c1faf5097b97414731c/documentation/pages/docs/gestures.mdx#about-the-pinch-gesture\n document.addEventListener(\"gesturestart\", (e) => e.preventDefault());\n document.addEventListener(\"gesturechange\", (e) => e.preventDefault());\n\n const worldView$ = new BehaviorSubject(phaserCamera.worldView);\n const zoom$ = new BehaviorSubject(phaserCamera.zoom);\n const wheelStream$ = new Subject>();\n const pinchStream$ = new Subject>();\n\n const gesture = new Gesture(\n phaserCamera.scene.game.canvas,\n {\n onPinch: (state) => pinchStream$.next(state),\n onWheel: (state) => wheelStream$.next(state),\n },\n {}\n );\n\n // function getNearestLevel(currentZoom: number): number {\n // return Math.pow(2, Math.floor(Math.log(currentZoom * 2) / Math.log(2))) / 2;\n // }\n\n const onResize = () => {\n requestAnimationFrame(() => worldView$.next(phaserCamera.worldView));\n };\n phaserCamera.scene.scale.addListener(\"resize\", onResize);\n\n function setZoom(zoom: number) {\n phaserCamera.setZoom(zoom);\n worldView$.next(phaserCamera.worldView);\n zoom$.next(zoom);\n }\n\n const pinchSub = pinchStream$\n .pipe(\n throttleTime(10),\n map((state) => {\n // Because this event stream is throttled, we're dropping events which contain delta data, so we need to calculate the delta ourselves.\n const zoom = zoom$.getValue();\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const delta = state.offset[0] - zoom;\n const scaledDelta = delta * options.pinchSpeed;\n return zoom + scaledDelta;\n }), // Compute pinch speed\n map((zoom) => Math.min(Math.max(zoom, options.minZoom), options.maxZoom)), // Limit zoom values\n scan((acc, curr) => [acc[1], curr], [1, 1]) // keep track of the last value to offset the map position (not implemented yet)\n )\n .subscribe(([, zoom]) => {\n // Set the gesture zoom state to the current zoom value to avoid zooming beyond the max values\n if (gesture._ctrl.state.pinch) gesture._ctrl.state.pinch.offset[0] = zoom;\n setZoom(zoom);\n });\n\n const wheelSub = wheelStream$\n .pipe(\n filter((state) => !state.pinching),\n sampleTime(10),\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n map((state) => state.delta.map((x) => x * options.wheelSpeed)), // Compute wheel speed\n map((movement) => movement.map((m: number) => m / phaserCamera.zoom)), // Adjust for current zoom value\n map((movement) => [phaserCamera.scrollX + movement[0], phaserCamera.scrollY + movement[1]]) // Compute new pinch\n )\n .subscribe(([x, y]) => {\n phaserCamera.setScroll(x, y);\n worldView$.next(phaserCamera.worldView);\n });\n\n function ignore(objectPool: ObjectPool, ignore: boolean) {\n objectPool.ignoreCamera(phaserCamera.id, ignore);\n }\n\n function centerOnCoord(tileCoord: Coord, tileWidth: number, tileHeight: number) {\n const pixelCoord = tileCoordToPixelCoord(tileCoord, tileWidth, tileHeight);\n centerOn(pixelCoord.x, pixelCoord.y);\n }\n\n function centerOn(x: number, y: number) {\n phaserCamera.centerOn(x, y);\n requestAnimationFrame(() => worldView$.next(phaserCamera.worldView));\n }\n\n function setScroll(x: number, y: number) {\n phaserCamera.setScroll(x, y);\n requestAnimationFrame(() => worldView$.next(phaserCamera.worldView));\n }\n\n return {\n phaserCamera,\n worldView$,\n zoom$,\n ignore,\n dispose: () => {\n pinchSub.unsubscribe();\n wheelSub.unsubscribe();\n gesture.destroy();\n phaserCamera.scene.scale.removeListener(\"resize\", onResize);\n },\n centerOnCoord,\n centerOn,\n setScroll,\n setZoom,\n };\n}\n","import { computed, observe, reaction } from \"mobx\";\nimport { from, map, mergeMap, pipe } from \"rxjs\";\nimport { filterNullish } from \"@latticexyz/utils\";\nimport { Camera, ChunkCoord, Chunks, Coord, EmbodiedEntity, ObjectPool } from \"./types\";\nimport { pixelToChunkCoord, coordEq } from \"./utils\";\nimport { CoordMap } from \"@latticexyz/utils\";\n\nfunction createRegistry() {\n const coordToIds = new CoordMap>();\n const idToCoord = new Map();\n\n function get(coord: Coord): Set {\n let set = coordToIds.get(coord);\n if (!set) {\n set = new Set();\n coordToIds.set(coord, set);\n }\n return set;\n }\n\n function set(id: string, coord: Coord) {\n // Remove from prev set\n const prevCoord = idToCoord.get(id);\n const idsAtPrevCoord = prevCoord && get(prevCoord);\n idsAtPrevCoord?.delete(id);\n\n // Add to new set\n const idsAtNewCoord = get(coord);\n idsAtNewCoord.add(id);\n\n // Set new idToCoord mapping\n idToCoord.set(id, coord);\n }\n\n function remove(id: string) {\n const prevCoord = idToCoord.get(id);\n const idsAtCoord = prevCoord && get(prevCoord);\n idsAtCoord?.delete(id);\n idToCoord.delete(id);\n }\n\n return { set, remove, get };\n}\n\nexport function createCulling(objectPool: ObjectPool, camera: Camera, chunks: Chunks) {\n const chunkRegistry = createRegistry();\n const disposer = new Map void>();\n\n const chunkToEntity = pipe(\n map((chunk: ChunkCoord) => from(chunkRegistry.get(chunk))), // Map to streams of entityIds\n mergeMap((entities) => entities), // Flatten the stream of entities\n map((entityId) => objectPool.get(entityId, \"Existing\")), // Map entityId to embodiedEntity\n filterNullish()\n );\n\n // Spawn entities when their chunk appears in the viewport\n const addedChunkSub = chunks.addedChunks$.pipe(chunkToEntity).subscribe((entity) => entity.spawn());\n\n // Despawn entites when their chunk disappears from the viewport\n const removedChunkSub = chunks.removedChunks$.pipe(chunkToEntity).subscribe((entity) => entity.despawn());\n\n // Keep track of entity's chunk\n function trackEntity(entity: EmbodiedEntity) {\n if (disposer.get(entity.id)) console.error(\"Entity is being tracked multiple times\", entity);\n const chunk = computed(() => pixelToChunkCoord(entity.position, chunks.chunkSize), { equals: coordEq });\n const dispose = reaction(\n () => chunk.get(),\n (newChunk) => {\n // Register the new chunk position\n chunkRegistry.set(entity.id, newChunk);\n\n // Check whether entity is in the viewport if it switched chunks\n const visible = chunks.visibleChunks.current.get(newChunk);\n if (visible) {\n entity.spawn();\n } else {\n entity.despawn();\n }\n },\n { fireImmediately: true }\n );\n disposer.set(entity.id, dispose);\n }\n\n // Setup tracking of entity chunks\n const disposeObjectPoolObserver = observe(objectPool.objects, (change) => {\n if (change.type === \"add\") {\n trackEntity(change.newValue as EmbodiedEntity);\n }\n if (change.type === \"delete\") {\n chunkRegistry.remove(change.oldValue.id);\n const dispose = disposer.get(change.oldValue.id);\n if (dispose) dispose();\n disposer.delete(change.oldValue.id);\n }\n });\n\n return {\n dispose: () => {\n for (const d of disposer.values()) d();\n disposeObjectPoolObserver();\n addedChunkSub.unsubscribe();\n removedChunkSub.unsubscribe();\n },\n };\n}\n","import { observable, runInAction } from \"mobx\";\nimport { isRectangle, isSprite } from \"./guards\";\nimport {\n EmbodiedEntity,\n GameObject,\n GameObjectComponent,\n GameObjectFunction,\n GameObjectTypes,\n PixelCoord,\n} from \"./types\";\nimport { removeAllTweens } from \"./utils\";\n\nexport function createEmbodiedEntity(\n id: string,\n group: Phaser.GameObjects.Group,\n type: Type,\n currentCameraFilter = 0\n): EmbodiedEntity {\n const position: PixelCoord = observable({ x: 0, y: 0 });\n const onOnce = new Map>();\n const onUpdate = new Map>();\n let activeGameObject: GameObject | undefined;\n const cameraFilter = { current: currentCameraFilter };\n\n /**\n * Syncronizes updates to game object positions to the EmbodiedEntity's position\n */\n function trackPositionUpdates(func: GameObjectFunction): GameObjectFunction {\n if (!modifiesPosition(func)) return func;\n\n return (gameObject) => {\n func(gameObject);\n runInAction(() => {\n position.x = gameObject.x;\n position.y = gameObject.y;\n });\n };\n }\n\n /**\n * Stores and executes the component.\n * Once and Update functions are stored.\n * Now and Once functions are executed if there is an active game object.\n * Now is executed first and awaited, before Once is executed.\n * @param component: GameObjectComponent definition, including id, and optional functions for now, once and update\n */\n async function setComponent({ id, now, once, update }: GameObjectComponent) {\n // Handle position update when setting the component\n const newPosition = once && modifiesPosition(once);\n if (newPosition) {\n runInAction(() => {\n position.x = newPosition.x ?? position.x;\n position.y = newPosition.y ?? position.y;\n });\n }\n\n // Store functions\n once && onOnce.set(id, trackPositionUpdates(once));\n update && onUpdate.set(id, trackPositionUpdates(update));\n\n // Execute functions\n if (activeGameObject && now) await trackPositionUpdates(now)(activeGameObject);\n if (activeGameObject && once) once(activeGameObject);\n }\n\n function hasComponent(id: string): boolean {\n return onOnce.has(id) || onUpdate.has(id);\n }\n\n function removeComponent(id: string, stop?: boolean) {\n onOnce.delete(id);\n onUpdate.delete(id);\n\n // Reset the entity and reapply all onOnce components\n if (activeGameObject) {\n reset(activeGameObject, stop);\n executeGameObjectFunctions(activeGameObject, onOnce.values());\n }\n }\n\n function reset(gameObject: GameObject, stop = true) {\n if (stop) {\n if (isSprite(gameObject, type)) gameObject.stop();\n removeAllTweens(gameObject);\n }\n gameObject.setDepth(10);\n gameObject.cameraFilter = cameraFilter.current;\n gameObject.resetPipeline(true, true);\n gameObject.setScale(1, 1);\n gameObject.setOrigin(0, 0);\n gameObject.setAlpha(1);\n gameObject.setScrollFactor(1);\n gameObject.clearMask();\n gameObject.setData(\"objectPoolId\", null);\n if (isSprite(gameObject, type)) {\n gameObject.clearTint();\n gameObject.setTexture(\"\");\n }\n if (isRectangle(gameObject, type)) {\n gameObject.width = 0;\n gameObject.height = 0;\n }\n }\n\n function setCameraFilter(filter: number) {\n cameraFilter.current = filter;\n if (activeGameObject) activeGameObject.cameraFilter = filter;\n }\n\n function spawn() {\n if (activeGameObject) return;\n const gameObject: GameObject = group.get();\n reset(gameObject);\n\n // Run all functions that are supposed to run once\n executeGameObjectFunctions(gameObject, onOnce.values());\n\n // Bind all functions that are supposed to run on update\n // gameObject.onUpdate = () => executeGameObjectFunctions(gameObject, onUpdate.values());\n\n gameObject.setActive(true);\n gameObject.setVisible(true);\n gameObject.setData(\"objectPoolId\", id);\n activeGameObject = gameObject;\n }\n\n function despawn() {\n if (activeGameObject) {\n group.killAndHide(activeGameObject);\n }\n activeGameObject = undefined;\n }\n\n return { setComponent, hasComponent, removeComponent, spawn, despawn, position, id, setCameraFilter, type };\n}\n\nfunction executeGameObjectFunctions(\n gameObject: GameObject,\n functions: Iterable>\n) {\n if (!gameObject) return;\n for (const func of functions) {\n func(gameObject);\n }\n}\n\nfunction modifiesPosition(\n func: GameObjectFunction\n): Partial | undefined {\n let newPosition: Partial | undefined = undefined;\n const gameObjectProxy = new Proxy(\n { x: undefined, y: undefined },\n {\n get: (_, prop) => {\n if (prop === \"setPosition\") return (x: number, y: number) => (newPosition = { x, y });\n if (prop === \"setX\") return (x: number) => (newPosition = { x });\n if (prop === \"setY\") return (y: number) => (newPosition = { y });\n return () => void 0;\n },\n set: (_, prop, value) => {\n if (prop === \"x\") newPosition = newPosition ? { ...newPosition, x: value } : { x: value };\n if (prop === \"y\") newPosition = newPosition ? { ...newPosition, y: value } : { y: value };\n return true;\n },\n }\n );\n func(gameObjectProxy as GameObject);\n return newPosition;\n}\n","import {\n Assets,\n CameraConfig,\n LayerConfig,\n MapConfig,\n MapsConfig,\n SceneConfig,\n TilesetConfig,\n Animation,\n GameObjectTypes,\n GameObject,\n Sprite,\n} from \"./types\";\n\n// Add type safety to config definitions\n\nexport function defineAssetsConfig(assets: A) {\n return assets;\n}\n\nexport function defineMapConfig, L extends LayerConfig>(\n config: MapConfig\n) {\n return config;\n}\n\nexport function defineSceneConfig<\n A extends Assets,\n S extends { [key: string]: Sprite },\n T extends TilesetConfig,\n M extends MapsConfig,\n Ans extends Animation[]\n>(config: SceneConfig) {\n return config;\n}\n\nexport function defineScaleConfig(config: Phaser.Types.Core.ScaleConfig) {\n return config;\n}\n\nexport function defineCameraConfig(config: CameraConfig) {\n return config;\n}\n\nexport function isSprite(\n gameObject: Phaser.GameObjects.GameObject,\n type: keyof GameObjectTypes\n): gameObject is GameObject<\"Sprite\"> {\n return type === \"Sprite\";\n}\n\nexport function isRectangle(\n gameObject: Phaser.GameObjects.GameObject,\n type: keyof GameObjectTypes\n): gameObject is GameObject<\"Rectangle\"> {\n return type === \"Rectangle\";\n}\n","import { EmbodiedEntity, GameObjectTypes } from \"./types\";\nimport { createEmbodiedEntity } from \"./createEmbodiedEntity\";\nimport { observable } from \"mobx\";\nimport { mapObject } from \"@latticexyz/utils\";\nimport { GameObjectClasses } from \"./constants\";\n\ntype ObjectPoolReturnType = Type extends keyof GameObjectTypes\n ? EmbodiedEntity\n : EmbodiedEntity | undefined;\n\nfunction isGameObjectType(t: string): t is keyof GameObjectTypes {\n return Object.keys(GameObjectClasses).includes(t);\n}\n\nexport function createObjectPool(scene: Phaser.Scene) {\n const groups = mapObject(GameObjectClasses, (classType) => scene.add.group({ classType })) as {\n [key in keyof typeof GameObjectClasses]: Phaser.GameObjects.Group;\n };\n\n const objects = observable(new Map>());\n const cameraFilter = { current: 0 };\n\n function get(\n entity: number | string,\n type: Type\n ): ObjectPoolReturnType {\n if (typeof entity === \"number\") entity = String(entity);\n let embodiedEntity = objects.get(entity);\n if (!isGameObjectType(type)) {\n if (!embodiedEntity) return undefined as ObjectPoolReturnType;\n return embodiedEntity as ObjectPoolReturnType;\n }\n\n // If the entity doesn't exist yet, we create a new one and track its chunk\n if (!embodiedEntity) {\n embodiedEntity = createEmbodiedEntity(entity, groups[type], type, cameraFilter.current);\n }\n\n if (!objects.has(entity)) {\n objects.set(entity, embodiedEntity);\n }\n\n // Don't spawn here, let culling take care of spawning\n // embodiedEntity.spawn();\n\n return embodiedEntity as ObjectPoolReturnType;\n }\n\n function remove(entity: number | string) {\n if (typeof entity === \"number\") entity = String(entity);\n const object = objects.get(entity);\n if (object) object.despawn();\n objects.delete(entity);\n }\n\n function ignoreCamera(cameraId: number, ignore: boolean) {\n if (ignore) {\n cameraFilter.current |= cameraId;\n } else {\n cameraFilter.current &= ~cameraId;\n }\n\n for (const embodiedEntity of objects.values()) {\n embodiedEntity.setCameraFilter(cameraFilter.current);\n }\n }\n\n return { get, remove, objects, groups, ignoreCamera };\n}\n","import { ChunkedTilemap } from \"./types\";\nimport { ChunkCoord, Chunks, WorldCoord } from \"../types\";\nimport { mod, chunkToPixelCoord, tileCoordToChunkCoord, chunkCoordToTileCoord } from \"../utils\";\nimport { CoordMap } from \"@latticexyz/utils\";\nimport { MultiHueTintPipeline } from \"../pipelines\";\nimport { pickRandom } from \"@latticexyz/utils\";\n\nexport type ChunkedTilemapConfig = {\n scene: Phaser.Scene;\n tilesets: { [key: string]: Phaser.Tilemaps.Tileset };\n layerConfig: {\n layers: { [id in LayerKeys]: { tilesets: string[]; hasHueTintShader?: boolean } };\n defaultLayer: LayerKeys;\n };\n chunks: Chunks;\n backgroundTile: [number, ...number[]];\n tiles: { [layer in LayerKeys]: CoordMap };\n tileWidth: number;\n tileHeight: number;\n};\n\nexport function createChunkedTilemap(\n params: ChunkedTilemapConfig\n): ChunkedTilemap {\n const { scene, tilesets, layerConfig, chunks, backgroundTile, tiles, tileWidth, tileHeight } = params;\n const relevantTilesets = Object.keys(layerConfig.layers)\n .map((key) => layerConfig.layers[key as LayerKeys].tilesets)\n .flat();\n\n // Chunk pixel size must be a multiple of tile witdth and height.\n if (mod(chunks.chunkSize, tileWidth) !== 0 || mod(chunks.chunkSize, tileHeight) !== 0) {\n throw new Error(\"Chunks pixel size must be a multiple of tile width and height to be used with chunked tilemap\");\n }\n\n /*****************************************************\n Setup \n *****************************************************/\n\n const maps = new CoordMap();\n const chunkTileSize = { x: chunks.chunkSize / tileWidth, y: chunks.chunkSize / tileHeight };\n const disposer = new Set<() => void>();\n const visible = { current: true };\n\n // Render all current chunks\n for (const chunk of chunks.visibleChunks.current.coords()) {\n renderChunk(chunk);\n }\n // Render maps when they're in the viewport\n const addedChunkSub = chunks.addedChunks$.subscribe((chunk) => {\n renderChunk(chunk);\n });\n\n // Remove maps that are not in the viewport\n const removedChunkSub = chunks.removedChunks$.subscribe((chunk) => {\n destroyChunk(chunk);\n });\n\n disposer.add(() => addedChunkSub?.unsubscribe());\n disposer.add(() => removedChunkSub?.unsubscribe);\n\n /*****************************************************\n Functions \n *****************************************************/\n\n function createLayers(\n map: Phaser.Tilemaps.Tilemap,\n scene: Phaser.Scene,\n x: number,\n y: number,\n width: number,\n height: number\n ): {\n layers: Phaser.Tilemaps.TilemapLayer[];\n defaultLayer: Phaser.Tilemaps.TilemapLayer;\n } {\n const layers: { [key: string]: Phaser.Tilemaps.TilemapLayer } = {};\n\n for (const key of Object.keys(layerConfig.layers)) {\n const layer = layerConfig.layers[key as LayerKeys];\n const tilemapLayer = map.createBlankLayer(\n key,\n layer.tilesets.map((id) => tilesets[id]),\n x,\n y,\n width,\n height\n );\n if (!tilemapLayer) {\n console.error(`Adding tilemap layer ${key} failed.`);\n continue;\n }\n layers[key] = tilemapLayer;\n const renderer = scene.game.renderer as Phaser.Renderer.WebGL.WebGLRenderer;\n if (layer.hasHueTintShader && renderer?.pipelines) {\n layers[key].pipeline = renderer.pipelines.get(MultiHueTintPipeline.KEY);\n }\n }\n\n return { layers: Object.values(layers), defaultLayer: layers[layerConfig.defaultLayer] };\n }\n\n function createMap(chunkCoord: WorldCoord): Phaser.Tilemaps.Tilemap {\n const data: Phaser.Tilemaps.MapData = new Phaser.Tilemaps.MapData({\n tileHeight,\n tileWidth,\n width: chunkTileSize.x,\n height: chunkTileSize.y,\n tilesets: Object.entries(tilesets)\n .filter(([key]) => relevantTilesets.includes(key))\n .map(([, tileset]) => tileset),\n });\n\n const map = new Phaser.Tilemaps.Tilemap(scene, data);\n const topLeft = chunkToPixelCoord(chunkCoord, chunks.chunkSize);\n const { defaultLayer } = createLayers(map, scene, topLeft.x, topLeft.y, chunkTileSize.x, chunkTileSize.y);\n map.setLayer(defaultLayer);\n maps.set(chunkCoord, map);\n return map;\n }\n\n function getMapAtChunkCoord(chunkCoord: WorldCoord): Phaser.Tilemaps.Tilemap {\n return maps.get(chunkCoord) || createMap(chunkCoord);\n }\n\n function getMapAtTileCoord(tileCoord: WorldCoord): Phaser.Tilemaps.Tilemap {\n const chunkCoord = tileCoordToChunkCoord(tileCoord, tileWidth, tileHeight, chunks.chunkSize);\n return getMapAtChunkCoord(chunkCoord);\n }\n\n function destroyChunk(chunkCoord: WorldCoord, force?: boolean) {\n if ((!visible.current && !force) || !maps.has(chunkCoord)) return;\n const map = getMapAtChunkCoord(chunkCoord);\n map.destroy();\n maps.delete(chunkCoord);\n }\n\n function putTileAt(coord: WorldCoord, tile: number, layer?: string, tint?: number) {\n if (!visible.current) return;\n const map = getMapAtTileCoord(coord);\n const putTile = map.putTileAt(tile, mod(coord.x, chunkTileSize.x), mod(coord.y, chunkTileSize.y), undefined, layer);\n if (putTile == null) {\n throw new Error(\"putTileAt failed\");\n }\n\n putTile.width = map.tileWidth;\n putTile.height = map.tileHeight;\n\n if (tint) {\n putTile.tint = tint;\n }\n }\n\n function renderChunk(chunkCoord: ChunkCoord) {\n if (!visible.current) return;\n const map = getMapAtChunkCoord(chunkCoord);\n const topLeftCoord = chunkCoordToTileCoord(chunkCoord, tileWidth, tileHeight, chunks.chunkSize);\n\n for (const layer of Object.keys(layerConfig.layers))\n map.forEachTile(\n (tile) => {\n const coord = { x: topLeftCoord.x + tile.x, y: topLeftCoord.y + tile.y };\n const defaultIndex = layer === layerConfig.defaultLayer ? pickRandom(backgroundTile) : -1;\n const index = tiles[layer as LayerKeys].get(coord) || defaultIndex;\n tile.index = index;\n },\n undefined,\n undefined,\n undefined,\n undefined,\n undefined,\n undefined,\n layer\n );\n }\n\n function dispose() {\n for (const map of maps.values()) {\n map.destroy();\n }\n maps.clear();\n for (const d of disposer) {\n d();\n }\n }\n\n function size() {\n return maps.size;\n }\n\n function setVisible(v: boolean) {\n if (v === visible.current) return;\n visible.current = v;\n for (const chunk of chunks.visibleChunks.current.coords()) {\n visible.current ? renderChunk(chunk) : destroyChunk(chunk, true);\n }\n }\n\n return { size, putTileAt, dispose, setVisible, visible, tileWidth, tileHeight };\n}\n","import { VirtualTilemap } from \"./types\";\nimport { WorldCoord } from \"../types\";\nimport { tileCoordToChunkCoord } from \"../utils\";\nimport { CoordMap } from \"@latticexyz/utils\";\nimport { ChunkedTilemapConfig, createChunkedTilemap } from \"./createChunkedTilemap\";\n\nexport function createVirtualTilemap(\n config: Omit, \"tiles\">\n): VirtualTilemap {\n const {\n chunks,\n layerConfig: { layers, defaultLayer },\n tileWidth,\n tileHeight,\n } = config;\n\n const tiles: { [key in LayerKeys]: CoordMap } = {} as never;\n\n for (const layerKey of Object.keys(layers)) {\n tiles[layerKey as LayerKeys] = new CoordMap();\n }\n\n const chunkedTilemap = createChunkedTilemap({ ...config, tiles });\n\n function putTileAt(coord: WorldCoord, tile: TileKeys, layer?: LayerKeys, tint?: number) {\n // Update virtual tilemap\n tiles[layer || defaultLayer].set(coord, tile);\n\n // Immediately update the physical tile if the chunk is in view\n const chunk = tileCoordToChunkCoord(coord, tileWidth, tileHeight, chunks.chunkSize);\n if (chunkedTilemap.visible && chunks.visibleChunks.current.get(chunk)) {\n chunkedTilemap.putTileAt(coord, tile, layer, tint);\n }\n }\n\n return { ...chunkedTilemap, putTileAt, tiles };\n}\n","import { AnimatedTilemap } from \".\";\nimport { WorldCoord } from \"../types\";\nimport { mod } from \"../utils\";\nimport { CoordMap } from \"@latticexyz/utils\";\nimport { ChunkedTilemapConfig } from \"./createChunkedTilemap\";\nimport { createVirtualTilemap } from \"./createVirtualTilemap\";\nimport { TileAnimation } from \"./types\";\n\nexport function createAnimatedTilemap(\n config: Omit, \"tiles\"> & { animationInterval: number }\n): AnimatedTilemap {\n const {\n layerConfig: { layers, defaultLayer },\n animationInterval,\n scene,\n } = config;\n\n const defaultLayerKey = defaultLayer as LayerKeys;\n let lastStep = 0;\n const animations: { [key in AnimationKeys]?: { frames: TileAnimation; index: number } } = {};\n\n const animatedTiles: { [key in LayerKeys]: CoordMap } = {} as never;\n for (const layerKey of Object.keys(layers)) {\n animatedTiles[layerKey as LayerKeys] = new CoordMap();\n }\n\n const pausedAnimations: { [key in LayerKeys]: CoordMap } = {} as never;\n for (const layerKey of Object.keys(layers)) {\n pausedAnimations[layerKey as LayerKeys] = new CoordMap();\n }\n\n const virtualTilemap = createVirtualTilemap(config);\n\n function registerAnimation(animationKey: AnimationKeys, frames: TileAnimation) {\n animations[animationKey] = { frames, index: 0 };\n }\n\n function putAnimationAt(coord: WorldCoord, animationKey: AnimationKeys, layer: LayerKeys = defaultLayerKey) {\n animatedTiles[layer].set(coord, animationKey);\n }\n\n function removeAnimationAt(coord: WorldCoord, layer: LayerKeys = defaultLayerKey) {\n const animationKey = animatedTiles[layer].get(coord);\n const animation = animationKey && animations[animationKey];\n animatedTiles[layer].delete(coord);\n if (animation) virtualTilemap.putTileAt(coord, animation.frames[0], layer);\n }\n\n function pauseAnimationAt(coord: WorldCoord, layer: LayerKeys = defaultLayerKey) {\n const animationKey = animatedTiles[layer].get(coord);\n if (!animationKey) return;\n pausedAnimations[layer].set(coord, animationKey);\n removeAnimationAt(coord, layer);\n }\n\n function resumeAnimationAt(coord: WorldCoord, layer: LayerKeys = defaultLayerKey) {\n const animationKey = pausedAnimations[layer].get(coord);\n if (!animationKey) return;\n pausedAnimations[layer].delete(coord);\n putAnimationAt(coord, animationKey, layer);\n }\n\n function animationStep() {\n // Increase animation index for every animation\n for (const animationKey of Object.keys(animations) as AnimationKeys[]) {\n const animation = animations[animationKey];\n if (animation) animation.index = mod(animation.index + 1, animation.frames.length);\n }\n\n // Update every animated tile\n for (const layerKey of Object.keys(animatedTiles) as LayerKeys[]) {\n const layer = animatedTiles[layerKey];\n for (const coord of layer.coords()) {\n const animationKey = layer.get(coord);\n const animation = animationKey && animations[animationKey];\n if (!animation) continue;\n const currentFrame = animation.frames[animation.index];\n virtualTilemap.putTileAt(coord, currentFrame, layerKey);\n }\n }\n }\n\n function update(time: number) {\n if (time < lastStep + animationInterval) return;\n lastStep = time;\n animationStep();\n }\n\n function dispose() {\n scene.events.removeListener(\"update\", update);\n virtualTilemap.dispose();\n }\n\n scene.events.addListener(\"update\", update);\n\n return {\n ...virtualTilemap,\n putAnimationAt,\n removeAnimationAt,\n pauseAnimationAt,\n resumeAnimationAt,\n registerAnimation,\n dispose,\n } as unknown as AnimatedTilemap;\n}\n","import {\n bufferCount,\n distinctUntilChanged,\n filter,\n fromEvent,\n map,\n merge,\n Observable,\n pairwise,\n scan,\n Subject,\n throttleTime,\n} from \"rxjs\";\nimport { observable, reaction, runInAction } from \"mobx\";\nimport { Area } from \"./types\";\nimport { filterNullish } from \"@latticexyz/utils\";\n\nexport type Key = keyof typeof Phaser.Input.Keyboard.KeyCodes | \"POINTER_LEFT\" | \"POINTER_RIGHT\";\n\nexport function createInput(inputPlugin: Phaser.Input.InputPlugin) {\n const disposers = new Set<() => void>();\n const enabled = { current: true };\n\n inputPlugin.mouse?.disableContextMenu();\n\n function disableInput() {\n enabled.current = false;\n }\n\n function enableInput() {\n enabled.current = true;\n }\n\n function setCursor(cursor: string) {\n inputPlugin.setDefaultCursor(cursor);\n }\n\n const keyboard$ = new Subject();\n\n const pointermove$ = fromEvent(document, \"mousemove\").pipe(\n filter(() => enabled.current),\n map(() => {\n return { pointer: inputPlugin.manager?.activePointer };\n }),\n filterNullish()\n );\n\n const pointerdown$: Observable<{ pointer: Phaser.Input.Pointer; event: MouseEvent }> = fromEvent(\n document,\n \"mousedown\"\n ).pipe(\n filter(() => enabled.current),\n map((event) => ({ pointer: inputPlugin.manager?.activePointer, event: event as MouseEvent })),\n filterNullish()\n );\n\n const pointerup$: Observable<{ pointer: Phaser.Input.Pointer; event: MouseEvent }> = fromEvent(\n document,\n \"mouseup\"\n ).pipe(\n filter(() => enabled.current),\n map((event) => ({ pointer: inputPlugin.manager?.activePointer, event: event as MouseEvent })),\n filterNullish()\n );\n\n // Click stream\n const click$ = merge(pointerdown$, pointerup$).pipe(\n filter(() => enabled.current),\n map<{ pointer: Phaser.Input.Pointer; event: MouseEvent }, [boolean, number]>(({ event }) => [\n event.type === \"mousedown\" && event.button === 0,\n Date.now(),\n ]), // Map events to whether the left button is down and the current timestamp\n bufferCount(2, 1), // Store the last two timestamps\n filter(([prev, now]) => prev[0] && !now[0] && now[1] - prev[1] < 250), // Only care if button was pressed before and is not anymore and it happened within 500ms\n map(() => inputPlugin.manager?.activePointer), // Return the current pointer\n filterNullish()\n );\n\n // Double click stream\n const doubleClick$ = pointerdown$.pipe(\n filter(() => enabled.current),\n map(() => Date.now()), // Get current timestamp\n bufferCount(2, 1), // Store the last two timestamps\n filter(([prev, now]) => now - prev < 500), // Filter clicks with more than 500ms distance\n throttleTime(500), // A third click within 500ms is not counted as another double click\n map(() => inputPlugin.manager?.activePointer), // Return the current pointer\n filterNullish()\n );\n\n // Right click stream\n const rightClick$ = merge(pointerdown$, pointerup$).pipe(\n filter(({ pointer }) => enabled.current && pointer.rightButtonDown()),\n map(() => inputPlugin.manager?.activePointer), // Return the current pointer\n filterNullish()\n );\n\n // Drag stream\n const drag$ = merge(\n pointerdown$.pipe(map(() => undefined)), // Reset the drag on left click\n merge(pointerup$, pointermove$).pipe(\n pairwise(), // Take the last two move or pointerup events\n scan<[{ pointer: Phaser.Input.Pointer }, { pointer: Phaser.Input.Pointer }], Area | undefined>(\n (acc, [{ pointer: prev }, { pointer: curr }]) =>\n curr.leftButtonDown() // If the left butten is pressed...\n ? prev.leftButtonDown() && acc // If the previous event wasn't mouseup and if the drag already started...\n ? { ...acc, width: curr.worldX - acc.x, height: curr.worldY - acc.y } // Update the width/height\n : { x: curr.worldX, y: curr.worldY, width: 0, height: 0 } // Else start the drag\n : undefined,\n undefined\n ),\n filterNullish(),\n filter((area) => Math.abs(area.width) > 10 && Math.abs(area.height) > 10) // Prevent clicking to be mistaken as a drag\n )\n ).pipe(\n filter(() => enabled.current),\n distinctUntilChanged() // Prevent same value to be emitted in a row\n );\n\n const pressedKeys = observable(new Set());\n const phaserKeyboard = inputPlugin.keyboard;\n const codeToKey = new Map();\n\n // Listen to all keys\n for (const key of Object.keys(Phaser.Input.Keyboard.KeyCodes)) addKey(key);\n\n // Subscriptions\n const keySub = keyboard$.pipe(filter(() => enabled.current)).subscribe((key) => {\n const keyName = codeToKey.get(key.keyCode);\n if (!keyName) return;\n runInAction(() => {\n if (key.isDown) pressedKeys.add(keyName);\n if (key.isUp) pressedKeys.delete(keyName);\n });\n });\n disposers.add(() => keySub?.unsubscribe());\n\n const pointerSub = merge(pointerdown$, pointerup$).subscribe(({ pointer }) => {\n runInAction(() => {\n if (pointer.leftButtonDown()) pressedKeys.add(\"POINTER_LEFT\");\n else pressedKeys.delete(\"POINTER_LEFT\");\n\n if (pointer.rightButtonDown()) pressedKeys.add(\"POINTER_RIGHT\");\n else pressedKeys.delete(\"POINTER_RIGHT\");\n });\n //\n });\n disposers.add(() => pointerSub?.unsubscribe());\n\n // Adds a key to include in the state\n function addKey(key: string) {\n if (!phaserKeyboard) {\n console.warn(`Adding key ${key} failed. No phaser keyboard detected.`);\n return;\n }\n\n // Add the key to the phaser keyboard input plugin\n const keyObj = phaserKeyboard.addKey(key, false);\n // Store the cleartext key map\n codeToKey.set(keyObj.keyCode, key as Key);\n\n keyObj.removeAllListeners();\n keyObj.emitOnRepeat = true;\n keyObj.on(\"down\", (keyEvent: Phaser.Input.Keyboard.Key) => keyboard$.next(keyEvent));\n keyObj.on(\"up\", (keyEvent: Phaser.Input.Keyboard.Key) => keyboard$.next(keyEvent));\n }\n\n function onKeyPress(keySelector: (pressedKeys: Set) => boolean, callback: () => void) {\n const disposer = reaction(\n () => keySelector(pressedKeys),\n (passes) => {\n if (passes) callback();\n },\n { fireImmediately: true }\n );\n disposers.add(disposer);\n }\n\n function dispose() {\n for (const disposer of disposers) {\n disposer();\n }\n }\n\n return {\n keyboard$: keyboard$.asObservable(),\n pointermove$,\n pointerdown$,\n pointerup$,\n click$,\n doubleClick$,\n rightClick$,\n drag$,\n pressedKeys,\n dispose,\n disableInput,\n enableInput,\n setCursor,\n enabled,\n onKeyPress,\n };\n}\n","import { defineScene } from \"./defineScene\";\nimport { definePhaserConfig } from \"./definePhaserConfig\";\nimport { load } from \"./utils\";\nimport { AssetType } from \"./constants\";\nimport { Scenes, Maps, ScenesConfig, Tilesets, PhaserEngineConfig } from \"./types\";\nimport { createChunks } from \"./createChunks\";\nimport { createCamera } from \"./createCamera\";\nimport { createCulling } from \"./createCulling\";\nimport { createObjectPool } from \"./createObjectPool\";\nimport { createAnimatedTilemap } from \"./tilemap\";\nimport { generateFrames } from \"./utils\";\nimport { createInput } from \"./createInput\";\nimport { deferred } from \"@latticexyz/utils\";\n\nexport async function createPhaserEngine(options: PhaserEngineConfig) {\n const { scale, sceneConfig, cameraConfig, cullingChunkSize } = options;\n\n // Set up Phaser scenes\n const sceneConstructors = Object.keys(sceneConfig).map((key) => {\n const { preload, create, update } = sceneConfig[key];\n return defineScene({ key, preload, create, update });\n });\n\n const phaserConfig = definePhaserConfig({ scenes: sceneConstructors, scale });\n const game = new Phaser.Game(phaserConfig);\n\n // Wait for phaser to boot\n const [resolve, , promise] = deferred();\n\n game.events.on(\"ready\", resolve);\n\n // skip texture loading in headless mode for unit testing\n if (phaserConfig.type === Phaser.HEADLESS) {\n game.textures.emit(\"ready\");\n }\n\n await promise;\n\n // Bind the game's size to the window size\n function resize() {\n const width = window.innerWidth / game.scale.zoom;\n const height = window.innerHeight / game.scale.zoom;\n game.scale.resize(width, height);\n }\n resize();\n window.addEventListener(\"resize\", resize);\n\n // Create scenes object\n const partialScenes: Partial> = {};\n\n for (const phaserScene of game.scene.getScenes(false)) {\n const key = phaserScene.scene.key as keyof S;\n const config = sceneConfig[key];\n\n // Load assets\n for (const [assetKey, asset] of Object.entries(sceneConfig[key].assets)) {\n await load(phaserScene, (loader) => {\n if (asset.type === AssetType.Image) {\n loader.image(assetKey, asset.path);\n } else if (asset.type === AssetType.SpriteSheet) {\n loader.spritesheet(assetKey, asset.path, asset.options);\n } else if (asset.type === AssetType.MultiAtlas) {\n loader.multiatlas(assetKey, asset.path, asset.options.imagePath);\n }\n });\n }\n\n // Setup object pool\n const objectPool = createObjectPool(phaserScene);\n\n // Setup camera\n const camera = createCamera(phaserScene.cameras.main, cameraConfig);\n\n // Setup chunks for viewport culling\n const cullingChunks = createChunks(camera.worldView$, cullingChunkSize);\n\n // Setup viewport culling\n const culling = createCulling(objectPool, camera, cullingChunks);\n\n // Setup sprite animations\n for (const anim of config.animations) {\n phaserScene.anims.create({\n key: anim.key,\n frames: generateFrames(phaserScene.anims, anim),\n frameRate: anim.frameRate,\n repeat: anim.repeat,\n });\n }\n\n // Setup tilesets\n const emptyMap = new Phaser.Tilemaps.Tilemap(phaserScene, new Phaser.Tilemaps.MapData());\n const partialTilesets: Tilesets = {};\n for (const [tilesetKey, { assetKey, tileWidth, tileHeight }] of Object.entries(sceneConfig[key][\"tilesets\"])) {\n const tileset = emptyMap.addTilesetImage(tilesetKey, assetKey, tileWidth, tileHeight);\n if (!tileset) {\n console.error(`Adding tileset ${tilesetKey} failed.`);\n continue;\n }\n partialTilesets[tilesetKey] = tileset;\n }\n const tilesets = partialTilesets as Tilesets;\n\n // Setup maps\n const partialMaps: Partial> = {};\n for (const mapKey of Object.keys(config.maps)) {\n const { layers, backgroundTile, tileWidth, tileHeight, animationInterval, tileAnimations, chunkSize } =\n config.maps[mapKey];\n\n // Setup chunks\n const chunks = createChunks(camera.worldView$, chunkSize);\n\n const map = createAnimatedTilemap({\n scene: phaserScene,\n tilesets,\n layerConfig: layers,\n chunks,\n tileWidth,\n tileHeight,\n backgroundTile,\n animationInterval,\n });\n\n // Register tilemap animations\n if (tileAnimations) {\n for (const [key, frames] of Object.entries(tileAnimations)) {\n map.registerAnimation(key, frames);\n }\n }\n\n partialMaps[mapKey as keyof (typeof sceneConfig)[typeof key][\"maps\"]] = map;\n }\n const maps = partialMaps as Maps;\n\n const input = createInput(phaserScene.input);\n\n partialScenes[key] = { phaserScene, objectPool, camera, culling, maps, input, config: sceneConfig[key] };\n }\n const scenes = partialScenes as Scenes;\n\n return {\n game,\n scenes,\n dispose: () => {\n game.destroy(true);\n for (const key of Object.keys(scenes)) {\n const scene = scenes[key];\n scene.camera.dispose();\n scene.culling.dispose();\n scene.input.dispose();\n for (const map of Object.values(scene.maps)) {\n map.dispose();\n }\n }\n\n window.removeEventListener(\"resize\", resize);\n },\n };\n}\n","import { chunkToPixelCoord } from \"./utils\";\nimport { CoordMap } from \"@latticexyz/utils\";\nimport { Camera, Chunks, ObjectPool } from \"./types\";\nimport { AnimatedTilemap } from \"./tilemap\";\n\nfunction getRandomColor() {\n const red = Math.random() * 0xff;\n const green = Math.random() * 0xff;\n const blue = Math.random() * 0xff;\n return red * 0xffff + green * 0xff + blue;\n}\n\nexport function createDebugger(\n camera: Camera,\n chunks: Chunks,\n scene: Phaser.Scene,\n objectPool: ObjectPool,\n map: AnimatedTilemap\n) {\n const options = {\n logViewport: false,\n visualizeChunks: true,\n visualizeViewport: false,\n logNumVisibleChunks: false,\n logObjectStats: false,\n logMaps: true,\n };\n\n const visualChunks = new CoordMap();\n const worldViewRect = scene.add.rectangle(0, 0, 1, 1, 0xff0000, 0.2);\n worldViewRect.setInteractive();\n worldViewRect.on(\"pointerup\", () => {\n console.log(\"clicked\", worldViewRect);\n });\n\n camera.worldView$.subscribe((worldView) => {\n if (options.logViewport) {\n console.log(worldView);\n }\n\n if (options.visualizeViewport) {\n worldViewRect.setScale(worldView.width, worldView.height);\n worldViewRect.setPosition(worldView.centerX, worldView.centerY);\n }\n\n if (options.logObjectStats) {\n console.log(\n `Entities: ${objectPool.objects.size} / Pool size: ${Object.values(objectPool.groups).reduce(\n (acc, curr) => acc + curr.getChildren().length,\n 0\n )} / Pool active: ${Object.values(objectPool.groups).reduce((acc, curr) => acc + curr.countActive(), 0)}`\n );\n }\n\n if (options.logMaps) {\n console.log(\"Num maps\", map.size());\n }\n });\n\n chunks.addedChunks$.subscribe((chunk) => {\n if (options.visualizeChunks) {\n const pixelCoord = chunkToPixelCoord(chunk, chunks.chunkSize);\n const visualChunk = scene.add.rectangle(\n pixelCoord.x + chunks.chunkSize / 2,\n pixelCoord.y + chunks.chunkSize / 2,\n chunks.chunkSize,\n chunks.chunkSize,\n getRandomColor(),\n 0.5\n );\n visualChunk.setInteractive();\n visualChunk.on(\"pointerup\", () => {\n console.log(\"clicked\", visualChunk);\n });\n visualChunks.set(chunk, visualChunk);\n }\n\n if (options.logNumVisibleChunks) {\n console.log(\"Number of visible chunks: \", visualChunks.size);\n }\n });\n\n chunks.removedChunks$.subscribe((chunk) => {\n if (options.visualizeChunks) {\n visualChunks.get(chunk)?.destroy();\n visualChunks.delete(chunk);\n }\n\n if (options.logNumVisibleChunks) {\n console.log(\"Number of visible chunks: \", visualChunks.size);\n }\n });\n}\n"],"mappings":"4KAAA,MAAO,SCAP,OAAS,YAAAA,OAAgB,oBAWzB,eAAsBC,GAAMC,EAA4BC,EAA4C,CAClG,GAAM,CAACC,EAAS,CAAEC,CAAO,EAAIL,GAAe,EACtC,CAAE,QAAAM,CAAQ,EAAIJ,EACpB,GAAI,GAACI,EAAQ,OAAS,CAACA,EAAQ,MAAM,QAGrC,OAAKH,GAAS,oBACZI,EAAgBD,CAAO,EAIzBA,EAAQ,MAAM,OAAO,IAAI,CACvB,GAAGJ,EACH,WAAY,CAACD,EAAOK,IAAY,CAC9BJ,EAAO,YAAcA,EAAO,WAAWD,EAAOK,CAAO,EACrDF,EAAQ,CACV,CACF,CAAC,EACMC,CACT,CAEO,SAASE,EAAgBC,EAA2C,CACzE,IAAMC,EAAeD,EAAW,MAAM,OACtC,QAAWP,KAASQ,EAAa,OAC3BR,EAAM,UAAUO,CAAU,GAC5BP,EAAM,KAAK,CAGjB,CCvCO,SAASS,EAAIC,EAAWC,EAAW,CACxC,OAASD,EAAIC,EAAKA,GAAKA,CACzB,CCAO,IAAMC,GAAqB,CAAE,EAAG,EAAG,EAAG,CAAE,EAExC,SAASC,GAAiCC,EAA4BC,EAAsB,CACjG,IAAMC,EAA2B,CAAC,EAElC,OAAAF,EAAa,QAASG,GAAgB,CACpC,IAAMC,EAAU,CAAE,EAAGD,EAAY,EAAIF,EAAc,EAAGE,EAAY,EAAIF,CAAa,EAC7EI,EAAW,CAAE,GAAIF,EAAY,EAAI,GAAKF,EAAe,EAAG,EAAGE,EAAY,EAAIF,CAAa,EACxFK,EAAa,CAAE,EAAGH,EAAY,EAAIF,EAAc,GAAIE,EAAY,EAAI,GAAKF,EAAe,CAAE,EAC1FM,EAAc,CAAE,GAAIJ,EAAY,EAAI,GAAKF,EAAe,EAAG,GAAIE,EAAY,EAAI,GAAKF,EAAe,CAAE,EAC3GC,EAAW,KAAKE,EAASC,EAAUC,EAAYC,CAAW,CAC5D,CAAC,EAEML,CACT,CAEO,SAASM,GAAaC,EAAuBC,EAAY,CAC9D,OACED,EAAU,GAAKC,EAAK,GACpBD,EAAU,EAAIC,EAAK,EAAIA,EAAK,OAC5BD,EAAU,GAAKC,EAAK,GACpBD,EAAU,EAAIC,EAAK,EAAIA,EAAK,MAEhC,CAEO,SAASC,EAAQC,EAAWC,EAAW,CAC5C,MAAI,CAACD,GAAK,CAACC,EAAU,GACjB,CAACD,GAAK,CAACC,EAAU,GACdD,EAAE,IAAMC,EAAE,GAAKD,EAAE,IAAMC,EAAE,CAClC,CAEO,SAASC,GAAUF,EAAUC,EAAU,CAC5C,MAAO,CACL,EAAGD,EAAE,EAAIC,EAAE,EACX,EAAGD,EAAE,EAAIC,EAAE,CACb,CACF,CAEO,SAASE,EAAkBC,EAAwBC,EAA+B,CACvF,MAAO,CAAE,EAAG,KAAK,MAAMD,EAAW,EAAIC,CAAS,EAAG,EAAG,KAAK,MAAMD,EAAW,EAAIC,CAAS,CAAE,CAC5F,CAEO,SAASC,EAAkBC,EAAwBF,EAA+B,CACvF,MAAO,CAAE,EAAGE,EAAW,EAAIF,EAAW,EAAGE,EAAW,EAAIF,CAAU,CACpE,CAEO,SAASG,GAAsBJ,EAAwBK,EAAmBC,EAAgC,CAC/G,MAAO,CACL,EAAG,KAAK,MAAMN,EAAW,EAAIK,CAAS,EACtC,EAAG,KAAK,MAAML,EAAW,EAAIM,CAAU,CACzC,CACF,CAEO,SAASC,EAAsBd,EAAuBY,EAAmBC,EAAgC,CAC9G,MAAO,CACL,EAAGb,EAAU,EAAIY,EACjB,EAAGZ,EAAU,EAAIa,CACnB,CACF,CAEO,SAASE,EACdf,EACAY,EACAC,EACAL,EACY,CACZ,IAAMD,EAAaO,EAAsBd,EAAWY,EAAWC,CAAU,EACzE,OAAOP,EAAkBC,EAAYC,CAAS,CAChD,CAEO,SAASQ,EACdN,EACAE,EACAC,EACAL,EACY,CACZ,IAAMD,EAAaE,EAAkBC,EAAYF,CAAS,EAC1D,OAAOG,GAAsBJ,EAAYK,EAAWC,CAAU,CAChE,CChFA,OAAS,YAAAI,OAAgB,oBAEzB,eAAsBC,GAAKC,EAAqBC,EAAwD,CACtG,IAAMC,EAASF,EAAM,KACrBC,EAASC,CAAM,EACfA,EAAO,MAAM,EACb,GAAM,CAACC,EAAS,CAAEC,CAAO,EAAIN,GAAe,EAC5C,OAAAI,EAAO,GAAG,WAAY,IAAM,CAC1BC,EAAQ,CACV,CAAC,EACMC,CACT,CCXA,OAAS,YAAAC,OAAgB,oBAIlB,SAASC,GAAgBC,EAAYC,EAAmB,CAC7D,IAAMC,EAAU,CAAE,EAAGF,EAAK,EAAG,EAAGA,EAAK,CAAE,EACjCG,EAAc,CAAE,EAAGH,EAAK,EAAIA,EAAK,MAAO,EAAGA,EAAK,EAAIA,EAAK,MAAO,EAEhEI,EAAeC,EAAkBH,EAASD,CAAS,EACnDK,EAAmBD,EAAkBF,EAAaF,CAAS,EAE3DM,EAAaD,EAAiB,EAAIF,EAAa,EAAI,EACnDI,EAAaF,EAAiB,EAAIF,EAAa,EAAI,EAEnDK,EAAe,IAAIC,GAEzB,QAASC,EAAI,EAAGA,EAAIJ,EAAYI,IAC9B,QAASC,EAAI,EAAGA,EAAIJ,EAAYI,IAC9BH,EAAa,IACX,CACE,EAAGL,EAAa,EAAIO,EACpB,EAAGP,EAAa,EAAIQ,CACtB,EACA,EACF,EAIJ,OAAOH,CACT,CC5BO,SAASI,GAAiBC,EAAoCC,EAA6B,CAChG,IAAMC,EAAM,CAAC,EACb,QAAWC,KAASH,EAClB,QAAWI,KAAUD,EAAM,YAAY,EACjCC,EAAO,QAAU,MAAOA,GAAU,MAAOA,GAAUH,EAAK,SAASG,EAAO,EAAGA,EAAO,CAAC,IACrF,QAAQ,IAAI,UAAWA,CAAM,EAC7BF,EAAI,KAAKE,CAAM,GAIrB,OAAOF,EAAI,OAAQG,GAAMA,IAAM,MAAS,CAC1C,CCVO,SAASC,GACdC,EACAC,EAC0C,CAC1C,OAAIA,EAAU,QAAUA,EAAU,OACzBD,EAAM,mBAAmBC,EAAU,SAAU,CAClD,MAAOA,EAAU,WACjB,IAAKA,EAAU,SACf,OAAQA,EAAU,OAClB,OAAQA,EAAU,MACpB,CAAC,EAEMD,EAAM,qBAAqBC,EAAU,SAAU,CAAE,MAAOA,EAAU,WAAY,IAAKA,EAAU,QAAS,CAAC,CAElH,CCfA,IAAMC,GAAiB,OAAO,SAAS,MAAM,UAAU,kBAAoB,OAC9DC,EAAN,cAA0CD,EAAe,CAGtD,WAAa,IAAI,OAAO,QAAQ,MAEhC,SAAW,EACX,cAAgB,IAAI,OAAO,QAAQ,MAE3C,YAAYE,EAAmB,CAC7B,MAAM,CACJ,KAAMA,EACN,aAAc,GACd,WAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAgDd,CAAC,CACH,CAEA,aAAaC,EAAgC,CAC3C,IAAMC,EAAWD,EAAI,aAAqB,QAEpCE,EAAWF,EAAI,aAAqB,QACpCG,EAAgBH,EAAI,aAAqB,aAE3CI,EAAYH,GAAoB,EAKpC,GAJI,OAAOG,GAAc,WACvBA,EAAY,OAAO,QAAQ,MAAM,aAAaA,CAAS,GAGrDF,EAAS,CACX,KAAK,SAAW,EAEhB,IAAIG,EAAgBF,GAAgB,EAChC,OAAOE,GAAkB,WAC3BA,EAAgB,OAAO,QAAQ,MAAM,aAAaF,CAAY,GAGhE,KAAK,cAAc,WAAWE,CAAa,OAE3C,KAAK,SAAW,EAGlB,KAAK,WAAW,WAAWD,CAAS,CACtC,CAEA,OAAOE,EAAkD,CACvD,KAAK,MAAM,eAAgB,KAAK,SAAS,MAAO,KAAK,SAAS,MAAM,EACpE,KAAK,MAAM,YAAa,KAAK,WAAW,MAAO,KAAK,WAAW,QAAS,KAAK,WAAW,MAAM,EAE9F,KAAK,MAAM,UAAW,KAAK,QAAQ,EACnC,KAAK,MAAM,eAAgB,KAAK,cAAc,MAAO,KAAK,cAAc,QAAS,KAAK,cAAc,MAAM,EAE1G,KAAK,WAAWA,CAAY,CAC9B,CACF,EAlGEC,EADWT,EACY,MAAM,qBCHxB,IAAMU,EAAN,cAAmC,OAAO,SAAS,MAAM,UAAU,aAAc,CAEtF,YAAYC,EAAmB,CAC7B,MAAM,CACJ,KAAMA,EACN,WAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SA+Dd,CAAC,CACH,CACF,EArEEC,EADWF,EACY,MAAM,wBCCxB,SAASG,GAAYC,EAKzB,CACD,GAAM,CAAE,QAAAC,EAAS,OAAAC,EAAQ,OAAAC,EAAQ,IAAAC,CAAI,EAAIJ,EACzC,OAAO,cAAwB,OAAO,KAAM,CAC1C,aAAc,CACZ,MAAM,CAAE,IAAAI,CAAI,CAAC,CACf,CAEA,SAAU,CACRH,GAAWA,EAAQ,IAAI,CACzB,CAEA,QAAS,CACPC,GAAUA,EAAO,IAAI,EACrB,IAAMG,EAAW,KAAK,SAClBA,GAAU,YACZA,EAAS,UAAU,IAAIC,EAA4B,IAAK,IAAIA,EAA4B,KAAK,IAAI,CAAC,EAClGD,EAAS,UAAU,IAAIE,EAAqB,IAAK,IAAIA,EAAqB,KAAK,IAAI,CAAC,EAExF,CAEA,QAAS,CACPJ,GAAUA,EAAO,IAAI,CACvB,CACF,CACF,CC7BO,SAASK,GAAmBC,EAGF,CAC/B,MAAO,CACL,KAAM,OAAO,MACb,MAAOA,EAAQ,MACf,SAAU,GACV,UAAW,GACX,OAAQ,CACN,YAAa,GACb,SAAU,EACZ,EACA,MAAOA,EAAQ,MACjB,CACF,CCjBO,IAAKC,QACVA,IAAA,iBACAA,IAAA,6BACAA,IAAA,2BAHUA,QAAA,IAMCC,GAAoB,CAC/B,OAAQ,OAAO,YAAY,OAC3B,UAAW,OAAO,YAAY,UAC9B,KAAM,OAAO,YAAY,KACzB,KAAM,OAAO,YAAY,IAC3B,ECXA,OAAS,OAAAC,GAAiB,WAAAC,OAAe,OAGzC,OAAS,YAAAC,GAAU,YAAAC,OAAgB,oBAE5B,SAASC,GAAaC,EAA8BC,EAAmBC,EAAU,IAAK,CAC3F,IAAMC,EAAgB,CAAE,QAAS,IAAIN,EAAoB,EAEnDO,EAAe,IAAIC,GACnBC,EAAiB,IAAID,GAiB3B,OAf2BL,EAAW,KACpCO,GAAI,CAAC,CAAE,EAAAC,EAAG,EAAAC,EAAG,MAAAC,EAAO,OAAAC,CAAO,IAEzBC,GACE,CACE,EAAGJ,EAAIN,EACP,EAAGO,EAAIP,EACP,MAAOQ,EAAQ,EAAIR,EACnB,OAAQS,EAAS,EAAIT,CACvB,EACAD,CACF,CACF,CACF,EAEmB,UAAWY,GAAqB,CACjD,IAAMC,EAAQhB,GAASe,EAAkBV,EAAc,OAAO,EAC9D,QAAWY,KAASD,EAAM,OAAO,EAAGV,EAAa,KAAKW,CAAK,EAE3D,IAAMC,EAAUlB,GAASK,EAAc,QAASU,CAAgB,EAChE,QAAWE,KAASC,EAAQ,OAAO,EAAGV,EAAe,KAAKS,CAAK,EAE/DZ,EAAc,QAAUU,CAC1B,CAAC,EAEM,CACL,aAAcT,EAAa,aAAa,EACxC,eAAgBE,EAAe,aAAa,EAC5C,UAAAL,EACA,cAAAE,CACF,CACF,CC1CA,OAAS,WAAAc,OAAe,uBACxB,OAAS,mBAAAC,GAAiB,UAAAC,GAAQ,OAAAC,EAAK,cAAAC,GAAY,QAAAC,GAAM,WAAAC,GAAS,gBAAAC,OAAoB,OAI/E,SAASC,GAAaC,EAA6CC,EAA+B,CAGvG,SAAS,iBAAiB,eAAiBC,GAAMA,EAAE,eAAe,CAAC,EACnE,SAAS,iBAAiB,gBAAkBA,GAAMA,EAAE,eAAe,CAAC,EAEpE,IAAMC,EAAa,IAAIC,GAA4DJ,EAAa,SAAS,EACnGK,EAAQ,IAAID,GAAwBJ,EAAa,IAAI,EACrDM,EAAe,IAAIC,GACnBC,EAAe,IAAID,GAEnBE,EAAU,IAAIC,GAClBV,EAAa,MAAM,KAAK,OACxB,CACE,QAAUW,GAAUH,EAAa,KAAKG,CAAK,EAC3C,QAAUA,GAAUL,EAAa,KAAKK,CAAK,CAC7C,EACA,CAAC,CACH,EAMMC,EAAW,IAAM,CACrB,sBAAsB,IAAMT,EAAW,KAAKH,EAAa,SAAS,CAAC,CACrE,EACAA,EAAa,MAAM,MAAM,YAAY,SAAUY,CAAQ,EAEvD,SAASC,EAAQC,EAAc,CAC7Bd,EAAa,QAAQc,CAAI,EACzBX,EAAW,KAAKH,EAAa,SAAS,EACtCK,EAAM,KAAKS,CAAI,CACjB,CAEA,IAAMC,EAAWP,EACd,KACCQ,GAAa,EAAE,EACfC,EAAKN,GAAU,CAEb,IAAMG,EAAOT,EAAM,SAAS,EAItBa,GADQP,EAAM,OAAO,CAAC,EAAIG,GACJb,EAAQ,WACpC,OAAOa,EAAOI,CAChB,CAAC,EACDD,EAAKH,GAAS,KAAK,IAAI,KAAK,IAAIA,EAAMb,EAAQ,OAAO,EAAGA,EAAQ,OAAO,CAAC,EACxEkB,GAAK,CAACC,EAAKC,IAAS,CAACD,EAAI,CAAC,EAAGC,CAAI,EAAG,CAAC,EAAG,CAAC,CAAC,CAC5C,EACC,UAAU,CAAC,CAAC,CAAEP,CAAI,IAAM,CAEnBL,EAAQ,MAAM,MAAM,QAAOA,EAAQ,MAAM,MAAM,MAAM,OAAO,CAAC,EAAIK,GACrED,EAAQC,CAAI,CACd,CAAC,EAEGQ,EAAWhB,EACd,KACCiB,GAAQZ,GAAU,CAACA,EAAM,QAAQ,EACjCa,GAAW,EAAE,EAGbP,EAAKN,GAAUA,EAAM,MAAM,IAAK,GAAM,EAAIV,EAAQ,UAAU,CAAC,EAC7DgB,EAAKQ,GAAaA,EAAS,IAAKC,GAAcA,EAAI1B,EAAa,IAAI,CAAC,EACpEiB,EAAKQ,GAAa,CAACzB,EAAa,QAAUyB,EAAS,CAAC,EAAGzB,EAAa,QAAUyB,EAAS,CAAC,CAAC,CAAC,CAC5F,EACC,UAAU,CAAC,CAACE,EAAGC,CAAC,IAAM,CACrB5B,EAAa,UAAU2B,EAAGC,CAAC,EAC3BzB,EAAW,KAAKH,EAAa,SAAS,CACxC,CAAC,EAEH,SAAS6B,EAAOC,EAAwBD,EAAiB,CACvDC,EAAW,aAAa9B,EAAa,GAAI6B,CAAM,CACjD,CAEA,SAASE,EAAcC,EAAkBC,EAAmBC,EAAoB,CAC9E,IAAMC,EAAaC,EAAsBJ,EAAWC,EAAWC,CAAU,EACzEG,EAASF,EAAW,EAAGA,EAAW,CAAC,CACrC,CAEA,SAASE,EAASV,EAAWC,EAAW,CACtC5B,EAAa,SAAS2B,EAAGC,CAAC,EAC1B,sBAAsB,IAAMzB,EAAW,KAAKH,EAAa,SAAS,CAAC,CACrE,CAEA,SAASsC,EAAUX,EAAWC,EAAW,CACvC5B,EAAa,UAAU2B,EAAGC,CAAC,EAC3B,sBAAsB,IAAMzB,EAAW,KAAKH,EAAa,SAAS,CAAC,CACrE,CAEA,MAAO,CACL,aAAAA,EACA,WAAAG,EACA,MAAAE,EACA,OAAAwB,EACA,QAAS,IAAM,CACbd,EAAS,YAAY,EACrBO,EAAS,YAAY,EACrBb,EAAQ,QAAQ,EAChBT,EAAa,MAAM,MAAM,eAAe,SAAUY,CAAQ,CAC5D,EACA,cAAAmB,EACA,SAAAM,EACA,UAAAC,EACA,QAAAzB,CACF,CACF,CC/GA,OAAS,YAAA0B,GAAU,WAAAC,GAAS,YAAAC,OAAgB,OAC5C,OAAS,QAAAC,GAAM,OAAAC,GAAK,YAAAC,GAAU,QAAAC,OAAY,OAC1C,OAAS,iBAAAC,OAAqB,oBAG9B,OAAS,YAAAC,OAAgB,oBAEzB,SAASC,IAAiB,CACxB,IAAMC,EAAa,IAAIF,GACjBG,EAAY,IAAI,IAEtB,SAASC,EAAIC,EAA2B,CACtC,IAAIC,EAAMJ,EAAW,IAAIG,CAAK,EAC9B,OAAKC,IACHA,EAAM,IAAI,IACVJ,EAAW,IAAIG,EAAOC,CAAG,GAEpBA,CACT,CAEA,SAASA,EAAIC,EAAYF,EAAc,CAErC,IAAMG,EAAYL,EAAU,IAAII,CAAE,GACXC,GAAaJ,EAAII,CAAS,IACjC,OAAOD,CAAE,EAGHH,EAAIC,CAAK,EACjB,IAAIE,CAAE,EAGpBJ,EAAU,IAAII,EAAIF,CAAK,CACzB,CAEA,SAASI,EAAOF,EAAY,CAC1B,IAAMC,EAAYL,EAAU,IAAII,CAAE,GACfC,GAAaJ,EAAII,CAAS,IACjC,OAAOD,CAAE,EACrBJ,EAAU,OAAOI,CAAE,CACrB,CAEA,MAAO,CAAE,IAAAD,EAAK,OAAAG,EAAQ,IAAAL,CAAI,CAC5B,CAEO,SAASM,GAAcC,EAAwBC,EAAgBC,EAAgB,CACpF,IAAMC,EAAgBb,GAAe,EAC/Bc,EAAW,IAAI,IAEfC,EAAgBC,GACpBC,GAAKC,GAAsBC,GAAKN,EAAc,IAAIK,CAAK,CAAC,CAAC,EACzDE,GAAUC,GAAaA,CAAQ,EAC/BJ,GAAKK,GAAaZ,EAAW,IAAIY,EAAU,UAAU,CAAC,EACtDC,GAAc,CAChB,EAGMC,EAAgBZ,EAAO,aAAa,KAAKG,CAAa,EAAE,UAAWU,GAAWA,EAAO,MAAM,CAAC,EAG5FC,EAAkBd,EAAO,eAAe,KAAKG,CAAa,EAAE,UAAWU,GAAWA,EAAO,QAAQ,CAAC,EAGxG,SAASE,EAAYF,EAA+B,CAC9CX,EAAS,IAAIW,EAAO,EAAE,GAAG,QAAQ,MAAM,yCAA0CA,CAAM,EAC3F,IAAMP,EAAQU,GAAS,IAAMC,EAAkBJ,EAAO,SAAUb,EAAO,SAAS,EAAG,CAAE,OAAQkB,CAAQ,CAAC,EAChGC,EAAUC,GACd,IAAMd,EAAM,IAAI,EACfe,GAAa,CAEZpB,EAAc,IAAIY,EAAO,GAAIQ,CAAQ,EAGrBrB,EAAO,cAAc,QAAQ,IAAIqB,CAAQ,EAEvDR,EAAO,MAAM,EAEbA,EAAO,QAAQ,CAEnB,EACA,CAAE,gBAAiB,EAAK,CAC1B,EACAX,EAAS,IAAIW,EAAO,GAAIM,CAAO,CACjC,CAGA,IAAMG,EAA4BC,GAAQzB,EAAW,QAAU0B,GAAW,CAIxE,GAHIA,EAAO,OAAS,OAClBT,EAAYS,EAAO,QAAiC,EAElDA,EAAO,OAAS,SAAU,CAC5BvB,EAAc,OAAOuB,EAAO,SAAS,EAAE,EACvC,IAAML,EAAUjB,EAAS,IAAIsB,EAAO,SAAS,EAAE,EAC3CL,GAASA,EAAQ,EACrBjB,EAAS,OAAOsB,EAAO,SAAS,EAAE,EAEtC,CAAC,EAED,MAAO,CACL,QAAS,IAAM,CACb,QAAWC,KAAKvB,EAAS,OAAO,EAAGuB,EAAE,EACrCH,EAA0B,EAC1BV,EAAc,YAAY,EAC1BE,EAAgB,YAAY,CAC9B,CACF,CACF,CCzGA,OAAS,cAAAY,GAAY,eAAAC,OAAmB,OCgBjC,SAASC,GAAqCC,EAAW,CAC9D,OAAOA,CACT,CAEO,SAASC,GACdC,EACA,CACA,OAAOA,CACT,CAEO,SAASC,GAMdD,EAAsC,CACtC,OAAOA,CACT,CAEO,SAASE,GAAkBF,EAAuC,CACvE,OAAOA,CACT,CAEO,SAASG,GAAmBH,EAAsB,CACvD,OAAOA,CACT,CAEO,SAASI,GACdC,EACAC,EACoC,CACpC,OAAOA,IAAS,QAClB,CAEO,SAASC,GACdF,EACAC,EACuC,CACvC,OAAOA,IAAS,WAClB,CD5CO,SAASE,GACdC,EACAC,EACAC,EACAC,EAAsB,EACA,CACtB,IAAMC,EAAuBC,GAAW,CAAE,EAAG,EAAG,EAAG,CAAE,CAAC,EAChDC,EAAS,IAAI,IACbC,EAAW,IAAI,IACjBC,EACEC,EAAe,CAAE,QAASN,CAAoB,EAKpD,SAASO,EAAqBC,EAA0D,CACtF,OAAKC,GAAiBD,CAAI,EAElBE,GAAe,CACrBF,EAAKE,CAAU,EACfC,GAAY,IAAM,CAChBV,EAAS,EAAIS,EAAW,EACxBT,EAAS,EAAIS,EAAW,CAC1B,CAAC,CACH,EARoCF,CAStC,CASA,eAAeI,EAAa,CAAE,GAAAf,EAAI,IAAAgB,EAAK,KAAAC,EAAM,OAAAC,CAAO,EAA8B,CAEhF,IAAMC,EAAcF,GAAQL,GAAiBK,CAAI,EAC7CE,GACFL,GAAY,IAAM,CAChBV,EAAS,EAAIe,EAAY,GAAKf,EAAS,EACvCA,EAAS,EAAIe,EAAY,GAAKf,EAAS,CACzC,CAAC,EAIHa,GAAQX,EAAO,IAAIN,EAAIU,EAAqBO,CAAI,CAAC,EACjDC,GAAUX,EAAS,IAAIP,EAAIU,EAAqBQ,CAAM,CAAC,EAGnDV,GAAoBQ,GAAK,MAAMN,EAAqBM,CAAG,EAAER,CAAgB,EACzEA,GAAoBS,GAAMA,EAAKT,CAAgB,CACrD,CAEA,SAASY,EAAapB,EAAqB,CACzC,OAAOM,EAAO,IAAIN,CAAE,GAAKO,EAAS,IAAIP,CAAE,CAC1C,CAEA,SAASqB,EAAgBrB,EAAYsB,EAAgB,CACnDhB,EAAO,OAAON,CAAE,EAChBO,EAAS,OAAOP,CAAE,EAGdQ,IACFe,EAAMf,EAAkBc,CAAI,EAC5BE,GAA2BhB,EAAkBF,EAAO,OAAO,CAAC,EAEhE,CAEA,SAASiB,EAAMV,EAA8BS,EAAO,GAAM,CACpDA,IACEG,GAASZ,EAAYX,CAAI,GAAGW,EAAW,KAAK,EAChDa,EAAgBb,CAAU,GAE5BA,EAAW,SAAS,EAAE,EACtBA,EAAW,aAAeJ,EAAa,QACvCI,EAAW,cAAc,GAAM,EAAI,EACnCA,EAAW,SAAS,EAAG,CAAC,EACxBA,EAAW,UAAU,EAAG,CAAC,EACzBA,EAAW,SAAS,CAAC,EACrBA,EAAW,gBAAgB,CAAC,EAC5BA,EAAW,UAAU,EACrBA,EAAW,QAAQ,eAAgB,IAAI,EACnCY,GAASZ,EAAYX,CAAI,IAC3BW,EAAW,UAAU,EACrBA,EAAW,WAAW,EAAE,GAEtBc,GAAYd,EAAYX,CAAI,IAC9BW,EAAW,MAAQ,EACnBA,EAAW,OAAS,EAExB,CAEA,SAASe,EAAgBC,EAAgB,CACvCpB,EAAa,QAAUoB,EACnBrB,IAAkBA,EAAiB,aAAeqB,EACxD,CAEA,SAASC,GAAQ,CACf,GAAItB,EAAkB,OACtB,IAAMK,EAA+BZ,EAAM,IAAI,EAC/CsB,EAAMV,CAAU,EAGhBW,GAA2BX,EAAYP,EAAO,OAAO,CAAC,EAKtDO,EAAW,UAAU,EAAI,EACzBA,EAAW,WAAW,EAAI,EAC1BA,EAAW,QAAQ,eAAgBb,CAAE,EACrCQ,EAAmBK,CACrB,CAEA,SAASkB,GAAU,CACbvB,GACFP,EAAM,YAAYO,CAAgB,EAEpCA,EAAmB,MACrB,CAEA,MAAO,CAAE,aAAAO,EAAc,aAAAK,EAAc,gBAAAC,EAAiB,MAAAS,EAAO,QAAAC,EAAS,SAAA3B,EAAU,GAAAJ,EAAI,gBAAA4B,EAAiB,KAAA1B,CAAK,CAC5G,CAEA,SAASsB,GACPX,EACAmB,EACA,CACA,GAAKnB,EACL,QAAWF,KAAQqB,EACjBrB,EAAKE,CAAU,CAEnB,CAEA,SAASD,GACPD,EACiC,CACjC,IAAIQ,EACEc,EAAkB,IAAI,MAC1B,CAAE,EAAG,OAAW,EAAG,MAAU,EAC7B,CACE,IAAK,CAACC,EAAGC,IACHA,IAAS,cAAsB,CAACC,EAAWC,IAAelB,EAAc,CAAE,EAAAiB,EAAG,EAAAC,CAAE,EAC/EF,IAAS,OAAgBC,GAAejB,EAAc,CAAE,EAAAiB,CAAE,EAC1DD,IAAS,OAAgBE,GAAelB,EAAc,CAAE,EAAAkB,CAAE,EACvD,IAAG,GAEZ,IAAK,CAACH,EAAGC,EAAMG,KACTH,IAAS,MAAKhB,EAAcA,EAAc,CAAE,GAAGA,EAAa,EAAGmB,CAAM,EAAI,CAAE,EAAGA,CAAM,GACpFH,IAAS,MAAKhB,EAAcA,EAAc,CAAE,GAAGA,EAAa,EAAGmB,CAAM,EAAI,CAAE,EAAGA,CAAM,GACjF,GAEX,CACF,EACA,OAAA3B,EAAKsB,CAAmC,EACjCd,CACT,CEtKA,OAAS,cAAAoB,OAAkB,OAC3B,OAAS,aAAAC,OAAiB,oBAO1B,SAASC,GAAiB,EAAuC,CAC/D,OAAO,OAAO,KAAKC,EAAiB,EAAE,SAAS,CAAC,CAClD,CAEO,SAASC,GAAiBC,EAAqB,CACpD,IAAMC,EAASC,GAAUJ,GAAoBK,GAAcH,EAAM,IAAI,MAAM,CAAE,UAAAG,CAAU,CAAC,CAAC,EAInFC,EAAUC,GAAW,IAAI,GAAoD,EAC7EC,EAAe,CAAE,QAAS,CAAE,EAElC,SAASC,EACPC,EACAC,EACmC,CAC/B,OAAOD,GAAW,WAAUA,EAAS,OAAOA,CAAM,GACtD,IAAIE,EAAiBN,EAAQ,IAAII,CAAM,EACvC,OAAKX,GAAiBY,CAAI,GAMrBC,IACHA,EAAiBC,GAAkCH,EAAQP,EAAOQ,CAAI,EAAGA,EAAMH,EAAa,OAAO,GAGhGF,EAAQ,IAAII,CAAM,GACrBJ,EAAQ,IAAII,EAAQE,CAAc,EAM7BA,GAhBAA,GAAgB,MAiBzB,CAEA,SAASE,EAAOJ,EAAyB,CACnC,OAAOA,GAAW,WAAUA,EAAS,OAAOA,CAAM,GACtD,IAAMK,EAAST,EAAQ,IAAII,CAAM,EAC7BK,GAAQA,EAAO,QAAQ,EAC3BT,EAAQ,OAAOI,CAAM,CACvB,CAEA,SAASM,EAAaC,EAAkBC,EAAiB,CACnDA,EACFV,EAAa,SAAWS,EAExBT,EAAa,SAAW,CAACS,EAG3B,QAAWL,KAAkBN,EAAQ,OAAO,EAC1CM,EAAe,gBAAgBJ,EAAa,OAAO,CAEvD,CAEA,MAAO,CAAE,IAAAC,EAAK,OAAAK,EAAQ,QAAAR,EAAS,OAAAH,EAAQ,aAAAa,CAAa,CACtD,CCjEA,OAAS,YAAAG,OAAgB,oBAEzB,OAAS,cAAAC,OAAkB,oBAgBpB,SAASC,GACdC,EACqC,CACrC,GAAM,CAAE,MAAAC,EAAO,SAAAC,EAAU,YAAAC,EAAa,OAAAC,EAAQ,eAAAC,EAAgB,MAAAC,EAAO,UAAAC,EAAW,WAAAC,CAAW,EAAIR,EACzFS,EAAmB,OAAO,KAAKN,EAAY,MAAM,EACpD,IAAKO,GAAQP,EAAY,OAAOO,CAAgB,EAAE,QAAQ,EAC1D,KAAK,EAGR,GAAIC,EAAIP,EAAO,UAAWG,CAAS,IAAM,GAAKI,EAAIP,EAAO,UAAWI,CAAU,IAAM,EAClF,MAAM,IAAI,MAAM,+FAA+F,EAOjH,IAAMI,EAAO,IAAIC,GACXC,EAAgB,CAAE,EAAGV,EAAO,UAAYG,EAAW,EAAGH,EAAO,UAAYI,CAAW,EACpFO,EAAW,IAAI,IACfC,EAAU,CAAE,QAAS,EAAK,EAGhC,QAAWC,KAASb,EAAO,cAAc,QAAQ,OAAO,EACtDc,EAAYD,CAAK,EAGnB,IAAME,EAAgBf,EAAO,aAAa,UAAWa,GAAU,CAC7DC,EAAYD,CAAK,CACnB,CAAC,EAGKG,EAAkBhB,EAAO,eAAe,UAAWa,GAAU,CACjEI,EAAaJ,CAAK,CACpB,CAAC,EAEDF,EAAS,IAAI,IAAMI,GAAe,YAAY,CAAC,EAC/CJ,EAAS,IAAI,IAAMK,GAAiB,WAAW,EAM/C,SAASE,EACPC,EACAtB,EACAuB,EACAC,EACAC,EACAC,EAIA,CACA,IAAMC,EAA0D,CAAC,EAEjE,QAAWlB,KAAO,OAAO,KAAKP,EAAY,MAAM,EAAG,CACjD,IAAM0B,EAAQ1B,EAAY,OAAOO,CAAgB,EAC3CoB,EAAeP,EAAI,iBACvBb,EACAmB,EAAM,SAAS,IAAKE,GAAO7B,EAAS6B,CAAE,CAAC,EACvCP,EACAC,EACAC,EACAC,CACF,EACA,GAAI,CAACG,EAAc,CACjB,QAAQ,MAAM,wBAAwBpB,WAAa,EACnD,SAEFkB,EAAOlB,CAAG,EAAIoB,EACd,IAAME,EAAW/B,EAAM,KAAK,SACxB4B,EAAM,kBAAoBG,GAAU,YACtCJ,EAAOlB,CAAG,EAAE,SAAWsB,EAAS,UAAU,IAAIC,EAAqB,GAAG,GAI1E,MAAO,CAAE,OAAQ,OAAO,OAAOL,CAAM,EAAG,aAAcA,EAAOzB,EAAY,YAAY,CAAE,CACzF,CAEA,SAAS+B,EAAUC,EAAiD,CAClE,IAAMC,EAAgC,IAAI,OAAO,SAAS,QAAQ,CAChE,WAAA5B,EACA,UAAAD,EACA,MAAOO,EAAc,EACrB,OAAQA,EAAc,EACtB,SAAU,OAAO,QAAQZ,CAAQ,EAC9B,OAAO,CAAC,CAACQ,CAAG,IAAMD,EAAiB,SAASC,CAAG,CAAC,EAChD,IAAI,CAAC,CAAC,CAAE2B,CAAO,IAAMA,CAAO,CACjC,CAAC,EAEKd,EAAM,IAAI,OAAO,SAAS,QAAQtB,EAAOmC,CAAI,EAC7CE,EAAUC,EAAkBJ,EAAY/B,EAAO,SAAS,EACxD,CAAE,aAAAoC,CAAa,EAAIlB,EAAaC,EAAKtB,EAAOqC,EAAQ,EAAGA,EAAQ,EAAGxB,EAAc,EAAGA,EAAc,CAAC,EACxG,OAAAS,EAAI,SAASiB,CAAY,EACzB5B,EAAK,IAAIuB,EAAYZ,CAAG,EACjBA,CACT,CAEA,SAASkB,EAAmBN,EAAiD,CAC3E,OAAOvB,EAAK,IAAIuB,CAAU,GAAKD,EAAUC,CAAU,CACrD,CAEA,SAASO,EAAkBC,EAAgD,CACzE,IAAMR,EAAaS,EAAsBD,EAAWpC,EAAWC,EAAYJ,EAAO,SAAS,EAC3F,OAAOqC,EAAmBN,CAAU,CACtC,CAEA,SAASd,EAAac,EAAwBU,EAAiB,CAC7D,GAAK,CAAC7B,EAAQ,SAAW,CAAC6B,GAAU,CAACjC,EAAK,IAAIuB,CAAU,EAAG,OAC/CM,EAAmBN,CAAU,EACrC,QAAQ,EACZvB,EAAK,OAAOuB,CAAU,CACxB,CAEA,SAASW,EAAUC,EAAmBC,EAAcnB,EAAgBoB,EAAe,CACjF,GAAI,CAACjC,EAAQ,QAAS,OACtB,IAAMO,EAAMmB,EAAkBK,CAAK,EAC7BG,EAAU3B,EAAI,UAAUyB,EAAMrC,EAAIoC,EAAM,EAAGjC,EAAc,CAAC,EAAGH,EAAIoC,EAAM,EAAGjC,EAAc,CAAC,EAAG,OAAWe,CAAK,EAClH,GAAIqB,GAAW,KACb,MAAM,IAAI,MAAM,kBAAkB,EAGpCA,EAAQ,MAAQ3B,EAAI,UACpB2B,EAAQ,OAAS3B,EAAI,WAEjB0B,IACFC,EAAQ,KAAOD,EAEnB,CAEA,SAAS/B,EAAYiB,EAAwB,CAC3C,GAAI,CAACnB,EAAQ,QAAS,OACtB,IAAMO,EAAMkB,EAAmBN,CAAU,EACnCgB,EAAeC,EAAsBjB,EAAY5B,EAAWC,EAAYJ,EAAO,SAAS,EAE9F,QAAWyB,KAAS,OAAO,KAAK1B,EAAY,MAAM,EAChDoB,EAAI,YACDyB,GAAS,CACR,IAAMD,EAAQ,CAAE,EAAGI,EAAa,EAAIH,EAAK,EAAG,EAAGG,EAAa,EAAIH,EAAK,CAAE,EACjEK,EAAexB,IAAU1B,EAAY,aAAeL,GAAWO,CAAc,EAAI,GACjFiD,EAAQhD,EAAMuB,CAAkB,EAAE,IAAIkB,CAAK,GAAKM,EACtDL,EAAK,MAAQM,CACf,EACA,OACA,OACA,OACA,OACA,OACA,OACAzB,CACF,CACJ,CAEA,SAAS0B,GAAU,CACjB,QAAWhC,KAAOX,EAAK,OAAO,EAC5BW,EAAI,QAAQ,EAEdX,EAAK,MAAM,EACX,QAAW4C,KAAKzC,EACdyC,EAAE,CAEN,CAEA,SAASC,GAAO,CACd,OAAO7C,EAAK,IACd,CAEA,SAAS8C,EAAWC,EAAY,CAC9B,GAAIA,IAAM3C,EAAQ,QAClB,CAAAA,EAAQ,QAAU2C,EAClB,QAAW1C,KAASb,EAAO,cAAc,QAAQ,OAAO,EACtDY,EAAQ,QAAUE,EAAYD,CAAK,EAAII,EAAaJ,EAAO,EAAI,EAEnE,CAEA,MAAO,CAAE,KAAAwC,EAAM,UAAAX,EAAW,QAAAS,EAAS,WAAAG,EAAY,QAAA1C,EAAS,UAAAT,EAAW,WAAAC,CAAW,CAChF,CCnMA,OAAS,YAAAoD,OAAgB,oBAGlB,SAASC,GACdC,EACqC,CACrC,GAAM,CACJ,OAAAC,EACA,YAAa,CAAE,OAAAC,EAAQ,aAAAC,CAAa,EACpC,UAAAC,EACA,WAAAC,CACF,EAAIL,EAEEM,EAAoD,CAAC,EAE3D,QAAWC,KAAY,OAAO,KAAKL,CAAM,EACvCI,EAAMC,CAAqB,EAAI,IAAIC,GAGrC,IAAMC,EAAiBC,GAAqB,CAAE,GAAGV,EAAQ,MAAAM,CAAM,CAAC,EAEhE,SAASK,EAAUC,EAAmBC,EAAgBC,EAAmBC,EAAe,CAEtFT,EAAMQ,GAASX,CAAY,EAAE,IAAIS,EAAOC,CAAI,EAG5C,IAAMG,EAAQC,EAAsBL,EAAOR,EAAWC,EAAYJ,EAAO,SAAS,EAC9EQ,EAAe,SAAWR,EAAO,cAAc,QAAQ,IAAIe,CAAK,GAClEP,EAAe,UAAUG,EAAOC,EAAMC,EAAOC,CAAI,CAErD,CAEA,MAAO,CAAE,GAAGN,EAAgB,UAAAE,EAAW,MAAAL,CAAM,CAC/C,CCjCA,OAAS,YAAAY,OAAgB,oBAKlB,SAASC,GACdC,EACqD,CACrD,GAAM,CACJ,YAAa,CAAE,OAAAC,EAAQ,aAAAC,CAAa,EACpC,kBAAAC,EACA,MAAAC,CACF,EAAIJ,EAEEK,EAAkBH,EACpBI,EAAW,EACTC,EAA8F,CAAC,EAE/FC,EAAiE,CAAC,EACxE,QAAWC,KAAY,OAAO,KAAKR,CAAM,EACvCO,EAAcC,CAAqB,EAAI,IAAIC,GAG7C,IAAMC,EAAoE,CAAC,EAC3E,QAAWF,KAAY,OAAO,KAAKR,CAAM,EACvCU,EAAiBF,CAAqB,EAAI,IAAIC,GAGhD,IAAME,EAAiBC,GAAqBb,CAAM,EAElD,SAASc,EAAkBC,EAA6BC,EAAiC,CACvFT,EAAWQ,CAAY,EAAI,CAAE,OAAAC,EAAQ,MAAO,CAAE,CAChD,CAEA,SAASC,EAAeC,EAAmBH,EAA6BI,EAAmBd,EAAiB,CAC1GG,EAAcW,CAAK,EAAE,IAAID,EAAOH,CAAY,CAC9C,CAEA,SAASK,EAAkBF,EAAmBC,EAAmBd,EAAiB,CAChF,IAAMU,EAAeP,EAAcW,CAAK,EAAE,IAAID,CAAK,EAC7CG,EAAYN,GAAgBR,EAAWQ,CAAY,EACzDP,EAAcW,CAAK,EAAE,OAAOD,CAAK,EAC7BG,GAAWT,EAAe,UAAUM,EAAOG,EAAU,OAAO,CAAC,EAAGF,CAAK,CAC3E,CAEA,SAASG,EAAiBJ,EAAmBC,EAAmBd,EAAiB,CAC/E,IAAMU,EAAeP,EAAcW,CAAK,EAAE,IAAID,CAAK,EAC9CH,IACLJ,EAAiBQ,CAAK,EAAE,IAAID,EAAOH,CAAY,EAC/CK,EAAkBF,EAAOC,CAAK,EAChC,CAEA,SAASI,EAAkBL,EAAmBC,EAAmBd,EAAiB,CAChF,IAAMU,EAAeJ,EAAiBQ,CAAK,EAAE,IAAID,CAAK,EACjDH,IACLJ,EAAiBQ,CAAK,EAAE,OAAOD,CAAK,EACpCD,EAAeC,EAAOH,EAAcI,CAAK,EAC3C,CAEA,SAASK,GAAgB,CAEvB,QAAWT,KAAgB,OAAO,KAAKR,CAAU,EAAsB,CACrE,IAAMc,EAAYd,EAAWQ,CAAY,EACrCM,IAAWA,EAAU,MAAQI,EAAIJ,EAAU,MAAQ,EAAGA,EAAU,OAAO,MAAM,GAInF,QAAWZ,KAAY,OAAO,KAAKD,CAAa,EAAkB,CAChE,IAAMW,EAAQX,EAAcC,CAAQ,EACpC,QAAWS,KAASC,EAAM,OAAO,EAAG,CAClC,IAAMJ,EAAeI,EAAM,IAAID,CAAK,EAC9BG,EAAYN,GAAgBR,EAAWQ,CAAY,EACzD,GAAI,CAACM,EAAW,SAChB,IAAMK,EAAeL,EAAU,OAAOA,EAAU,KAAK,EACrDT,EAAe,UAAUM,EAAOQ,EAAcjB,CAAQ,GAG5D,CAEA,SAASkB,EAAOC,EAAc,CACxBA,EAAOtB,EAAWH,IACtBG,EAAWsB,EACXJ,EAAc,EAChB,CAEA,SAASK,GAAU,CACjBzB,EAAM,OAAO,eAAe,SAAUuB,CAAM,EAC5Cf,EAAe,QAAQ,CACzB,CAEA,OAAAR,EAAM,OAAO,YAAY,SAAUuB,CAAM,EAElC,CACL,GAAGf,EACH,eAAAK,EACA,kBAAAG,EACA,iBAAAE,EACA,kBAAAC,EACA,kBAAAT,EACA,QAAAe,CACF,CACF,CCxGA,OACE,eAAAC,GACA,wBAAAC,GACA,UAAAC,EACA,aAAAC,GACA,OAAAC,EACA,SAAAC,EAEA,YAAAC,GACA,QAAAC,GACA,WAAAC,GACA,gBAAAC,OACK,OACP,OAAS,cAAAC,GAAY,YAAAC,GAAU,eAAAC,OAAmB,OAElD,OAAS,iBAAAC,MAAqB,oBAIvB,SAASC,GAAYC,EAAuC,CACjE,IAAMC,EAAY,IAAI,IAChBC,EAAU,CAAE,QAAS,EAAK,EAEhCF,EAAY,OAAO,mBAAmB,EAEtC,SAASG,GAAe,CACtBD,EAAQ,QAAU,EACpB,CAEA,SAASE,GAAc,CACrBF,EAAQ,QAAU,EACpB,CAEA,SAASG,EAAUC,EAAgB,CACjCN,EAAY,iBAAiBM,CAAM,CACrC,CAEA,IAAMC,EAAY,IAAId,GAEhBe,EAAepB,GAAU,SAAU,WAAW,EAAE,KACpDD,EAAO,IAAMe,EAAQ,OAAO,EAC5Bb,EAAI,KACK,CAAE,QAASW,EAAY,SAAS,aAAc,EACtD,EACDF,EAAc,CAChB,EAEMW,EAAiFrB,GACrF,SACA,WACF,EAAE,KACAD,EAAO,IAAMe,EAAQ,OAAO,EAC5Bb,EAAKqB,IAAW,CAAE,QAASV,EAAY,SAAS,cAAe,MAAOU,CAAoB,EAAE,EAC5FZ,EAAc,CAChB,EAEMa,EAA+EvB,GACnF,SACA,SACF,EAAE,KACAD,EAAO,IAAMe,EAAQ,OAAO,EAC5Bb,EAAKqB,IAAW,CAAE,QAASV,EAAY,SAAS,cAAe,MAAOU,CAAoB,EAAE,EAC5FZ,EAAc,CAChB,EAGMc,EAAStB,EAAMmB,EAAcE,CAAU,EAAE,KAC7CxB,EAAO,IAAMe,EAAQ,OAAO,EAC5Bb,EAA6E,CAAC,CAAE,MAAAqB,CAAM,IAAM,CAC1FA,EAAM,OAAS,aAAeA,EAAM,SAAW,EAC/C,KAAK,IAAI,CACX,CAAC,EACDzB,GAAY,EAAG,CAAC,EAChBE,EAAO,CAAC,CAAC0B,EAAMC,CAAG,IAAMD,EAAK,CAAC,GAAK,CAACC,EAAI,CAAC,GAAKA,EAAI,CAAC,EAAID,EAAK,CAAC,EAAI,GAAG,EACpExB,EAAI,IAAMW,EAAY,SAAS,aAAa,EAC5CF,EAAc,CAChB,EAGMiB,EAAeN,EAAa,KAChCtB,EAAO,IAAMe,EAAQ,OAAO,EAC5Bb,EAAI,IAAM,KAAK,IAAI,CAAC,EACpBJ,GAAY,EAAG,CAAC,EAChBE,EAAO,CAAC,CAAC0B,EAAMC,CAAG,IAAMA,EAAMD,EAAO,GAAG,EACxCnB,GAAa,GAAG,EAChBL,EAAI,IAAMW,EAAY,SAAS,aAAa,EAC5CF,EAAc,CAChB,EAGMkB,EAAc1B,EAAMmB,EAAcE,CAAU,EAAE,KAClDxB,EAAO,CAAC,CAAE,QAAA8B,CAAQ,IAAMf,EAAQ,SAAWe,EAAQ,gBAAgB,CAAC,EACpE5B,EAAI,IAAMW,EAAY,SAAS,aAAa,EAC5CF,EAAc,CAChB,EAGMoB,EAAQ5B,EACZmB,EAAa,KAAKpB,EAAI,IAAG,EAAY,CAAC,EACtCC,EAAMqB,EAAYH,CAAY,EAAE,KAC9BjB,GAAS,EACTC,GACE,CAAC2B,EAAK,CAAC,CAAE,QAASN,CAAK,EAAG,CAAE,QAASO,CAAK,CAAC,IACzCA,EAAK,eAAe,EAChBP,EAAK,eAAe,GAAKM,EACvB,CAAE,GAAGA,EAAK,MAAOC,EAAK,OAASD,EAAI,EAAG,OAAQC,EAAK,OAASD,EAAI,CAAE,EAClE,CAAE,EAAGC,EAAK,OAAQ,EAAGA,EAAK,OAAQ,MAAO,EAAG,OAAQ,CAAE,EACxD,OACN,MACF,EACAtB,EAAc,EACdX,EAAQkC,GAAS,KAAK,IAAIA,EAAK,KAAK,EAAI,IAAM,KAAK,IAAIA,EAAK,MAAM,EAAI,EAAE,CAC1E,CACF,EAAE,KACAlC,EAAO,IAAMe,EAAQ,OAAO,EAC5BhB,GAAqB,CACvB,EAEMoC,EAAc3B,GAAW,IAAI,GAAU,EACvC4B,EAAiBvB,EAAY,SAC7BwB,EAAY,IAAI,IAGtB,QAAWC,KAAO,OAAO,KAAK,OAAO,MAAM,SAAS,QAAQ,EAAGC,EAAOD,CAAG,EAGzE,IAAME,EAASpB,EAAU,KAAKpB,EAAO,IAAMe,EAAQ,OAAO,CAAC,EAAE,UAAWuB,GAAQ,CAC9E,IAAMG,EAAUJ,EAAU,IAAIC,EAAI,OAAO,EACpCG,GACL/B,GAAY,IAAM,CACZ4B,EAAI,QAAQH,EAAY,IAAIM,CAAO,EACnCH,EAAI,MAAMH,EAAY,OAAOM,CAAO,CAC1C,CAAC,CACH,CAAC,EACD3B,EAAU,IAAI,IAAM0B,GAAQ,YAAY,CAAC,EAEzC,IAAME,EAAavC,EAAMmB,EAAcE,CAAU,EAAE,UAAU,CAAC,CAAE,QAAAM,CAAQ,IAAM,CAC5EpB,GAAY,IAAM,CACZoB,EAAQ,eAAe,EAAGK,EAAY,IAAI,cAAc,EACvDA,EAAY,OAAO,cAAc,EAElCL,EAAQ,gBAAgB,EAAGK,EAAY,IAAI,eAAe,EACzDA,EAAY,OAAO,eAAe,CACzC,CAAC,CAEH,CAAC,EACDrB,EAAU,IAAI,IAAM4B,GAAY,YAAY,CAAC,EAG7C,SAASH,EAAOD,EAAa,CAC3B,GAAI,CAACF,EAAgB,CACnB,QAAQ,KAAK,cAAcE,wCAA0C,EACrE,OAIF,IAAMK,EAASP,EAAe,OAAOE,EAAK,EAAK,EAE/CD,EAAU,IAAIM,EAAO,QAASL,CAAU,EAExCK,EAAO,mBAAmB,EAC1BA,EAAO,aAAe,GACtBA,EAAO,GAAG,OAASC,GAAwCxB,EAAU,KAAKwB,CAAQ,CAAC,EACnFD,EAAO,GAAG,KAAOC,GAAwCxB,EAAU,KAAKwB,CAAQ,CAAC,CACnF,CAEA,SAASC,EAAWC,EAAiDC,EAAsB,CACzF,IAAMC,EAAWvC,GACf,IAAMqC,EAAYX,CAAW,EAC5Bc,GAAW,CACNA,GAAQF,EAAS,CACvB,EACA,CAAE,gBAAiB,EAAK,CAC1B,EACAjC,EAAU,IAAIkC,CAAQ,CACxB,CAEA,SAASE,GAAU,CACjB,QAAWF,KAAYlC,EACrBkC,EAAS,CAEb,CAEA,MAAO,CACL,UAAW5B,EAAU,aAAa,EAClC,aAAAC,EACA,aAAAC,EACA,WAAAE,EACA,OAAAC,EACA,aAAAG,EACA,YAAAC,EACA,MAAAE,EACA,YAAAI,EACA,QAAAe,EACA,aAAAlC,EACA,YAAAC,EACA,UAAAC,EACA,QAAAH,EACA,WAAA8B,CACF,CACF,CC5LA,OAAS,YAAAM,OAAgB,oBAEzB,eAAsBC,GAA2CC,EAAgC,CAC/F,GAAM,CAAE,MAAAC,EAAO,YAAAC,EAAa,aAAAC,EAAc,iBAAAC,CAAiB,EAAIJ,EAGzDK,EAAoB,OAAO,KAAKH,CAAW,EAAE,IAAKI,GAAQ,CAC9D,GAAM,CAAE,QAAAC,EAAS,OAAAC,EAAQ,OAAAC,CAAO,EAAIP,EAAYI,CAAG,EACnD,OAAOI,GAAY,CAAE,IAAAJ,EAAK,QAAAC,EAAS,OAAAC,EAAQ,OAAAC,CAAO,CAAC,CACrD,CAAC,EAEKE,EAAeC,GAAmB,CAAE,OAAQP,EAAmB,MAAAJ,CAAM,CAAC,EACtEY,EAAO,IAAI,OAAO,KAAKF,CAAY,EAGnC,CAACG,EAAS,CAAEC,CAAO,EAAIjB,GAAS,EAEtCe,EAAK,OAAO,GAAG,QAASC,CAAO,EAG3BH,EAAa,OAAS,OAAO,UAC/BE,EAAK,SAAS,KAAK,OAAO,EAG5B,MAAME,EAGN,SAASC,GAAS,CAChB,IAAMC,EAAQ,OAAO,WAAaJ,EAAK,MAAM,KACvCK,EAAS,OAAO,YAAcL,EAAK,MAAM,KAC/CA,EAAK,MAAM,OAAOI,EAAOC,CAAM,CACjC,CACAF,EAAO,EACP,OAAO,iBAAiB,SAAUA,CAAM,EAGxC,IAAMG,EAAoC,CAAC,EAE3C,QAAWC,KAAeP,EAAK,MAAM,UAAU,EAAK,EAAG,CACrD,IAAMP,EAAMc,EAAY,MAAM,IACxBC,EAASnB,EAAYI,CAAG,EAG9B,OAAW,CAACgB,EAAUC,CAAK,IAAK,OAAO,QAAQrB,EAAYI,CAAG,EAAE,MAAM,EACpE,MAAMkB,GAAKJ,EAAcK,GAAW,CAC9BF,EAAM,OAAS,EACjBE,EAAO,MAAMH,EAAUC,EAAM,IAAI,EACxBA,EAAM,OAAS,EACxBE,EAAO,YAAYH,EAAUC,EAAM,KAAMA,EAAM,OAAO,EAC7CA,EAAM,OAAS,GACxBE,EAAO,WAAWH,EAAUC,EAAM,KAAMA,EAAM,QAAQ,SAAS,CAEnE,CAAC,EAIH,IAAMG,EAAaC,GAAiBP,CAAW,EAGzCQ,EAASC,GAAaT,EAAY,QAAQ,KAAMjB,CAAY,EAG5D2B,EAAgBC,GAAaH,EAAO,WAAYxB,CAAgB,EAGhE4B,EAAUC,GAAcP,EAAYE,EAAQE,CAAa,EAG/D,QAAWI,KAAQb,EAAO,WACxBD,EAAY,MAAM,OAAO,CACvB,IAAKc,EAAK,IACV,OAAQC,GAAef,EAAY,MAAOc,CAAI,EAC9C,UAAWA,EAAK,UAChB,OAAQA,EAAK,MACf,CAAC,EAIH,IAAME,EAAW,IAAI,OAAO,SAAS,QAAQhB,EAAa,IAAI,OAAO,SAAS,OAAS,EACjFiB,EAAoC,CAAC,EAC3C,OAAW,CAACC,EAAY,CAAE,SAAAhB,EAAU,UAAAiB,EAAW,WAAAC,CAAW,CAAC,IAAK,OAAO,QAAQtC,EAAYI,CAAG,EAAE,QAAW,EAAG,CAC5G,IAAMmC,EAAUL,EAAS,gBAAgBE,EAAYhB,EAAUiB,EAAWC,CAAU,EACpF,GAAI,CAACC,EAAS,CACZ,QAAQ,MAAM,kBAAkBH,WAAoB,EACpD,SAEFD,EAAgBC,CAAU,EAAIG,EAEhC,IAAMC,EAAWL,EAGXM,EAA0D,CAAC,EACjE,QAAWC,KAAU,OAAO,KAAKvB,EAAO,IAAI,EAAG,CAC7C,GAAM,CAAE,OAAAwB,EAAQ,eAAAC,EAAgB,UAAAP,EAAW,WAAAC,EAAY,kBAAAO,EAAmB,eAAAC,EAAgB,UAAAC,CAAU,EAClG5B,EAAO,KAAKuB,CAAM,EAGdM,EAASnB,GAAaH,EAAO,WAAYqB,CAAS,EAElDE,EAAMC,GAAsB,CAChC,MAAOhC,EACP,SAAAsB,EACA,YAAaG,EACb,OAAAK,EACA,UAAAX,EACA,WAAAC,EACA,eAAAM,EACA,kBAAAC,CACF,CAAC,EAGD,GAAIC,EACF,OAAW,CAAC1C,EAAK+C,CAAM,IAAK,OAAO,QAAQL,CAAc,EACvDG,EAAI,kBAAkB7C,EAAK+C,CAAM,EAIrCV,EAAYC,CAAwD,EAAIO,EAE1E,IAAMG,EAAOX,EAEPY,EAAQC,GAAYpC,EAAY,KAAK,EAE3CD,EAAcb,CAAG,EAAI,CAAE,YAAAc,EAAa,WAAAM,EAAY,OAAAE,EAAQ,QAAAI,EAAS,KAAAsB,EAAM,MAAAC,EAAO,OAAQrD,EAAYI,CAAG,CAAE,EAEzG,IAAMmD,EAAStC,EAEf,MAAO,CACL,KAAAN,EACA,OAAA4C,EACA,QAAS,IAAM,CACb5C,EAAK,QAAQ,EAAI,EACjB,QAAWP,KAAO,OAAO,KAAKmD,CAAM,EAAG,CACrC,IAAMC,EAAQD,EAAOnD,CAAG,EACxBoD,EAAM,OAAO,QAAQ,EACrBA,EAAM,QAAQ,QAAQ,EACtBA,EAAM,MAAM,QAAQ,EACpB,QAAWP,KAAO,OAAO,OAAOO,EAAM,IAAI,EACxCP,EAAI,QAAQ,EAIhB,OAAO,oBAAoB,SAAUnC,CAAM,CAC7C,CACF,CACF,CC5JA,OAAS,YAAA2C,OAAgB,oBAIzB,SAASC,IAAiB,CACxB,IAAMC,EAAM,KAAK,OAAO,EAAI,IACtBC,EAAQ,KAAK,OAAO,EAAI,IACxBC,EAAO,KAAK,OAAO,EAAI,IAC7B,OAAOF,EAAM,MAASC,EAAQ,IAAOC,CACvC,CAEO,SAASC,GACdC,EACAC,EACAC,EACAC,EACAC,EACA,CACA,IAAMC,EAAU,CACd,YAAa,GACb,gBAAiB,GACjB,kBAAmB,GACnB,oBAAqB,GACrB,eAAgB,GAChB,QAAS,EACX,EAEMC,EAAe,IAAIZ,GACnBa,EAAgBL,EAAM,IAAI,UAAU,EAAG,EAAG,EAAG,EAAG,SAAU,EAAG,EACnEK,EAAc,eAAe,EAC7BA,EAAc,GAAG,YAAa,IAAM,CAClC,QAAQ,IAAI,UAAWA,CAAa,CACtC,CAAC,EAEDP,EAAO,WAAW,UAAWQ,GAAc,CACrCH,EAAQ,aACV,QAAQ,IAAIG,CAAS,EAGnBH,EAAQ,oBACVE,EAAc,SAASC,EAAU,MAAOA,EAAU,MAAM,EACxDD,EAAc,YAAYC,EAAU,QAASA,EAAU,OAAO,GAG5DH,EAAQ,gBACV,QAAQ,IACN,aAAaF,EAAW,QAAQ,qBAAqB,OAAO,OAAOA,EAAW,MAAM,EAAE,OACpF,CAACM,EAAKC,IAASD,EAAMC,EAAK,YAAY,EAAE,OACxC,CACF,oBAAoB,OAAO,OAAOP,EAAW,MAAM,EAAE,OAAO,CAACM,EAAKC,IAASD,EAAMC,EAAK,YAAY,EAAG,CAAC,GACxG,EAGEL,EAAQ,SACV,QAAQ,IAAI,WAAYD,EAAI,KAAK,CAAC,CAEtC,CAAC,EAEDH,EAAO,aAAa,UAAWU,GAAU,CACvC,GAAIN,EAAQ,gBAAiB,CAC3B,IAAMO,EAAaC,EAAkBF,EAAOV,EAAO,SAAS,EACtDa,EAAcZ,EAAM,IAAI,UAC5BU,EAAW,EAAIX,EAAO,UAAY,EAClCW,EAAW,EAAIX,EAAO,UAAY,EAClCA,EAAO,UACPA,EAAO,UACPN,GAAe,EACf,EACF,EACAmB,EAAY,eAAe,EAC3BA,EAAY,GAAG,YAAa,IAAM,CAChC,QAAQ,IAAI,UAAWA,CAAW,CACpC,CAAC,EACDR,EAAa,IAAIK,EAAOG,CAAW,EAGjCT,EAAQ,qBACV,QAAQ,IAAI,6BAA8BC,EAAa,IAAI,CAE/D,CAAC,EAEDL,EAAO,eAAe,UAAWU,GAAU,CACrCN,EAAQ,kBACVC,EAAa,IAAIK,CAAK,GAAG,QAAQ,EACjCL,EAAa,OAAOK,CAAK,GAGvBN,EAAQ,qBACV,QAAQ,IAAI,6BAA8BC,EAAa,IAAI,CAE/D,CAAC,CACH","names":["deferred","tween","config","options","resolve","promise","targets","removeAllTweens","gameObject","tweenManager","mod","a","b","ZERO_VECTOR","cornerTileCoordsFromRegionCoords","regionCoords","regionLength","tileCoords","regionCoord","topLeft","topRight","bottomLeft","bottomRight","isTileInArea","tileCoord","area","coordEq","a","b","addCoords","pixelToChunkCoord","pixelCoord","chunkSize","chunkToPixelCoord","chunkCoord","pixelCoordToTileCoord","tileWidth","tileHeight","tileCoordToPixelCoord","tileCoordToChunkCoord","chunkCoordToTileCoord","deferred","load","scene","callback","loader","resolve","promise","CoordMap","getChunksInArea","area","chunkSize","topLeft","bottomRight","topLeftChunk","pixelToChunkCoord","bottomRightChunk","numChunksX","numChunksY","chunksInArea","CoordMap","x","y","getObjectsInArea","groups","area","ids","group","object","x","generateFrames","anims","animation","SpritePipeline","HueTintAndOutlineFXPipeline","game","obj","hueTint","outline","outlineColor","tintColor","_outlineColor","renderTarget","__publicField","MultiHueTintPipeline","game","__publicField","defineScene","options","preload","create","update","key","renderer","HueTintAndOutlineFXPipeline","MultiHueTintPipeline","definePhaserConfig","options","AssetType","GameObjectClasses","map","Subject","CoordMap","subtract","createChunks","worldView$","chunkSize","padding","visibleChunks","addedChunks$","Subject","removedChunks$","map","x","y","width","height","getChunksInArea","newVisibleChunks","added","coord","removed","Gesture","BehaviorSubject","filter","map","sampleTime","scan","Subject","throttleTime","createCamera","phaserCamera","options","e","worldView$","BehaviorSubject","zoom$","wheelStream$","Subject","pinchStream$","gesture","Gesture","state","onResize","setZoom","zoom","pinchSub","throttleTime","map","scaledDelta","scan","acc","curr","wheelSub","filter","sampleTime","movement","m","x","y","ignore","objectPool","centerOnCoord","tileCoord","tileWidth","tileHeight","pixelCoord","tileCoordToPixelCoord","centerOn","setScroll","computed","observe","reaction","from","map","mergeMap","pipe","filterNullish","CoordMap","createRegistry","coordToIds","idToCoord","get","coord","set","id","prevCoord","remove","createCulling","objectPool","camera","chunks","chunkRegistry","disposer","chunkToEntity","pipe","map","chunk","from","mergeMap","entities","entityId","filterNullish","addedChunkSub","entity","removedChunkSub","trackEntity","computed","pixelToChunkCoord","coordEq","dispose","reaction","newChunk","disposeObjectPoolObserver","observe","change","d","observable","runInAction","defineAssetsConfig","assets","defineMapConfig","config","defineSceneConfig","defineScaleConfig","defineCameraConfig","isSprite","gameObject","type","isRectangle","createEmbodiedEntity","id","group","type","currentCameraFilter","position","observable","onOnce","onUpdate","activeGameObject","cameraFilter","trackPositionUpdates","func","modifiesPosition","gameObject","runInAction","setComponent","now","once","update","newPosition","hasComponent","removeComponent","stop","reset","executeGameObjectFunctions","isSprite","removeAllTweens","isRectangle","setCameraFilter","filter","spawn","despawn","functions","gameObjectProxy","_","prop","x","y","value","observable","mapObject","isGameObjectType","GameObjectClasses","createObjectPool","scene","groups","mapObject","classType","objects","observable","cameraFilter","get","entity","type","embodiedEntity","createEmbodiedEntity","remove","object","ignoreCamera","cameraId","ignore","CoordMap","pickRandom","createChunkedTilemap","params","scene","tilesets","layerConfig","chunks","backgroundTile","tiles","tileWidth","tileHeight","relevantTilesets","key","mod","maps","CoordMap","chunkTileSize","disposer","visible","chunk","renderChunk","addedChunkSub","removedChunkSub","destroyChunk","createLayers","map","x","y","width","height","layers","layer","tilemapLayer","id","renderer","MultiHueTintPipeline","createMap","chunkCoord","data","tileset","topLeft","chunkToPixelCoord","defaultLayer","getMapAtChunkCoord","getMapAtTileCoord","tileCoord","tileCoordToChunkCoord","force","putTileAt","coord","tile","tint","putTile","topLeftCoord","chunkCoordToTileCoord","defaultIndex","index","dispose","d","size","setVisible","v","CoordMap","createVirtualTilemap","config","chunks","layers","defaultLayer","tileWidth","tileHeight","tiles","layerKey","CoordMap","chunkedTilemap","createChunkedTilemap","putTileAt","coord","tile","layer","tint","chunk","tileCoordToChunkCoord","CoordMap","createAnimatedTilemap","config","layers","defaultLayer","animationInterval","scene","defaultLayerKey","lastStep","animations","animatedTiles","layerKey","CoordMap","pausedAnimations","virtualTilemap","createVirtualTilemap","registerAnimation","animationKey","frames","putAnimationAt","coord","layer","removeAnimationAt","animation","pauseAnimationAt","resumeAnimationAt","animationStep","mod","currentFrame","update","time","dispose","bufferCount","distinctUntilChanged","filter","fromEvent","map","merge","pairwise","scan","Subject","throttleTime","observable","reaction","runInAction","filterNullish","createInput","inputPlugin","disposers","enabled","disableInput","enableInput","setCursor","cursor","keyboard$","pointermove$","pointerdown$","event","pointerup$","click$","prev","now","doubleClick$","rightClick$","pointer","drag$","acc","curr","area","pressedKeys","phaserKeyboard","codeToKey","key","addKey","keySub","keyName","pointerSub","keyObj","keyEvent","onKeyPress","keySelector","callback","disposer","passes","dispose","deferred","createPhaserEngine","options","scale","sceneConfig","cameraConfig","cullingChunkSize","sceneConstructors","key","preload","create","update","defineScene","phaserConfig","definePhaserConfig","game","resolve","promise","resize","width","height","partialScenes","phaserScene","config","assetKey","asset","load","loader","objectPool","createObjectPool","camera","createCamera","cullingChunks","createChunks","culling","createCulling","anim","generateFrames","emptyMap","partialTilesets","tilesetKey","tileWidth","tileHeight","tileset","tilesets","partialMaps","mapKey","layers","backgroundTile","animationInterval","tileAnimations","chunkSize","chunks","map","createAnimatedTilemap","frames","maps","input","createInput","scenes","scene","CoordMap","getRandomColor","red","green","blue","createDebugger","camera","chunks","scene","objectPool","map","options","visualChunks","worldViewRect","worldView","acc","curr","chunk","pixelCoord","chunkToPixelCoord","visualChunk"]} \ No newline at end of file diff --git a/packages/phaserx/package.json b/packages/phaserx/package.json new file mode 100644 index 0000000000..8b384f5cf5 --- /dev/null +++ b/packages/phaserx/package.json @@ -0,0 +1,5 @@ +{ + "name": "@latticexyz/phaserx", + "version": "2.0.0", + "private": true +} \ No newline at end of file diff --git a/packages/protocol-parser/package.json b/packages/protocol-parser/package.json index 16463188d4..eb7b6e7718 100644 --- a/packages/protocol-parser/package.json +++ b/packages/protocol-parser/package.json @@ -8,7 +8,6 @@ "directory": "packages/protocol-parser" }, "license": "MIT", - "type": "module", "exports": { ".": "./dist/index.js", "./internal": "./dist/internal.js" diff --git a/packages/protocol-parser/tsup.config.ts b/packages/protocol-parser/tsup.config.ts index 709f21cd88..94ab8beb28 100644 --- a/packages/protocol-parser/tsup.config.ts +++ b/packages/protocol-parser/tsup.config.ts @@ -6,7 +6,7 @@ export default defineConfig({ internal: "src/exports/internal.ts", }, target: "esnext", - format: ["esm"], + format: ["esm", "cjs"], dts: !process.env.TSUP_SKIP_DTS, sourcemap: true, clean: true, diff --git a/packages/query/tsup.config.ts b/packages/query/tsup.config.ts index 709f21cd88..94ab8beb28 100644 --- a/packages/query/tsup.config.ts +++ b/packages/query/tsup.config.ts @@ -6,7 +6,7 @@ export default defineConfig({ internal: "src/exports/internal.ts", }, target: "esnext", - format: ["esm"], + format: ["esm", "cjs"], dts: !process.env.TSUP_SKIP_DTS, sourcemap: true, clean: true, diff --git a/packages/react/package.json b/packages/react/package.json index 7b33c114e7..b541c86bac 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -8,7 +8,6 @@ "directory": "packages/react" }, "license": "MIT", - "type": "module", "exports": { ".": "./dist/index.js" }, diff --git a/packages/react/tsup.config.ts b/packages/react/tsup.config.ts index 86fe9a5339..af92ad0d25 100644 --- a/packages/react/tsup.config.ts +++ b/packages/react/tsup.config.ts @@ -3,7 +3,7 @@ import { defineConfig } from "tsup"; export default defineConfig({ entry: ["src/index.ts"], target: "esnext", - format: ["esm"], + format: ["esm", "cjs"], dts: !process.env.TSUP_SKIP_DTS, sourcemap: true, clean: true, diff --git a/packages/recs/package.json b/packages/recs/package.json index 58d8e5fbe3..f3b21ee0dc 100644 --- a/packages/recs/package.json +++ b/packages/recs/package.json @@ -7,7 +7,6 @@ "directory": "packages/recs" }, "license": "MIT", - "type": "module", "exports": { ".": "./dist/index.js", "./deprecated": "./dist/deprecated/index.js" diff --git a/packages/recs/tsup.config.ts b/packages/recs/tsup.config.ts index 7bd5468d6d..0344fc975f 100644 --- a/packages/recs/tsup.config.ts +++ b/packages/recs/tsup.config.ts @@ -3,7 +3,7 @@ import { defineConfig } from "tsup"; export default defineConfig({ entry: ["src/index.ts", "src/deprecated/index.ts"], target: "esnext", - format: ["esm"], + format: ["esm", "cjs"], dts: !process.env.TSUP_SKIP_DTS, sourcemap: true, clean: true, diff --git a/packages/schema-type/package.json b/packages/schema-type/package.json index dd9a4629eb..002baf99da 100644 --- a/packages/schema-type/package.json +++ b/packages/schema-type/package.json @@ -8,7 +8,6 @@ "directory": "packages/schema-type" }, "license": "MIT", - "type": "module", "exports": { ".": "./dist/index.js", "./internal": "./dist/internal.js", diff --git a/packages/schema-type/tsup.config.ts b/packages/schema-type/tsup.config.ts index 785c99b7cc..2d871c1d92 100644 --- a/packages/schema-type/tsup.config.ts +++ b/packages/schema-type/tsup.config.ts @@ -8,7 +8,7 @@ export default defineConfig({ }, outDir: "dist", target: "esnext", - format: ["esm"], + format: ["esm", "cjs"], dts: !process.env.TSUP_SKIP_DTS, sourcemap: true, clean: true, diff --git a/packages/services/package.json b/packages/services/package.json index e1847052d5..7cb492dc3e 100644 --- a/packages/services/package.json +++ b/packages/services/package.json @@ -8,7 +8,6 @@ "directory": "packages/services" }, "license": "MIT", - "type": "module", "exports": { "./faucet": "./dist/faucet.js" }, diff --git a/packages/services/tsup.config.ts b/packages/services/tsup.config.ts index 92aa8b823d..5e67d24593 100644 --- a/packages/services/tsup.config.ts +++ b/packages/services/tsup.config.ts @@ -5,7 +5,7 @@ export default defineConfig({ faucet: "ts/faucet/index.ts", }, target: "esnext", - format: ["esm"], + format: ["esm", "cjs"], dts: !process.env.TSUP_SKIP_DTS, sourcemap: true, clean: true, diff --git a/packages/store-indexer/bin/postgres-decoded-indexer.ts b/packages/store-indexer/bin/postgres-decoded-indexer.ts index 70bce8a446..19909ca995 100644 --- a/packages/store-indexer/bin/postgres-decoded-indexer.ts +++ b/packages/store-indexer/bin/postgres-decoded-indexer.ts @@ -14,24 +14,25 @@ import { sentry } from "../src/koa-middleware/sentry"; import { healthcheck } from "../src/koa-middleware/healthcheck"; import { helloWorld } from "../src/koa-middleware/helloWorld"; -const env = parseEnv( - z.intersection( - indexerEnvSchema, - z.object({ - DATABASE_URL: z.string(), - HEALTHCHECK_HOST: z.string().optional(), - HEALTHCHECK_PORT: z.coerce.number().optional(), - SENTRY_DSN: z.string().optional(), - }), - ), -); +(async (): Promise => { + const env = parseEnv( + z.intersection( + indexerEnvSchema, + z.object({ + DATABASE_URL: z.string(), + HEALTHCHECK_HOST: z.string().optional(), + HEALTHCHECK_PORT: z.coerce.number().optional(), + SENTRY_DSN: z.string().optional(), + }) + ) + ); -const transports: Transport[] = [ - // prefer WS when specified - env.RPC_WS_URL ? webSocket(env.RPC_WS_URL) : undefined, - // otherwise use or fallback to HTTP - env.RPC_HTTP_URL ? http(env.RPC_HTTP_URL) : undefined, -].filter(isDefined); + const transports: Transport[] = [ + // prefer WS when specified + env.RPC_WS_URL ? webSocket(env.RPC_WS_URL) : undefined, + // otherwise use or fallback to HTTP + env.RPC_HTTP_URL ? http(env.RPC_HTTP_URL) : undefined, + ].filter(isDefined); const publicClient = createPublicClient({ transport: fallback(transports), @@ -91,14 +92,32 @@ combineLatest([latestBlockNumber$, storedBlockLogs$]) console.log("all caught up"); }); -if (env.HEALTHCHECK_HOST != null || env.HEALTHCHECK_PORT != null) { - const { default: Koa } = await import("koa"); - const { default: cors } = await import("@koa/cors"); - - const server = new Koa(); - - if (env.SENTRY_DSN) { - server.use(sentry(env.SENTRY_DSN)); + const chainId = await publicClient.getChainId(); + const database = drizzle(postgres(env.DATABASE_URL, { prepare: false })); + + const { storageAdapter, tables } = await createStorageAdapter({ database, publicClient }); + + let startBlock = env.START_BLOCK; + + // Resume from latest block stored in DB. This will throw if the DB doesn't exist yet, so we wrap in a try/catch and ignore the error. + // TODO: query if the DB exists instead of try/catch + try { + const chainState = await database + .select() + .from(tables.configTable) + .where(eq(tables.configTable.chainId, chainId)) + .limit(1) + .execute() + // Get the first record in a way that returns a possible `undefined` + // TODO: move this to `.findFirst` after upgrading drizzle or `rows[0]` after enabling `noUncheckedIndexedAccess: true` + .then((rows) => rows.find(() => true)); + + if (chainState?.blockNumber != null) { + startBlock = chainState.blockNumber + 1n; + console.log("resuming from block number", startBlock); + } + } catch (error) { + // ignore errors for now } server.use(cors()); @@ -113,4 +132,4 @@ if (env.HEALTHCHECK_HOST != null || env.HEALTHCHECK_PORT != null) { console.log( `postgres indexer healthcheck server listening on http://${env.HEALTHCHECK_HOST}:${env.HEALTHCHECK_PORT}`, ); -} +})(); \ No newline at end of file diff --git a/packages/store-indexer/bin/postgres-indexer.ts b/packages/store-indexer/bin/postgres-indexer.ts index ba4b7cc6b6..c0d6e0048d 100644 --- a/packages/store-indexer/bin/postgres-indexer.ts +++ b/packages/store-indexer/bin/postgres-indexer.ts @@ -11,119 +11,121 @@ import { cleanDatabase, createStorageAdapter, shouldCleanDatabase } from "@latti import { createStoreSync } from "@latticexyz/store-sync"; import { indexerEnvSchema, parseEnv } from "./parseEnv"; -const env = parseEnv( - z.intersection( - indexerEnvSchema, - z.object({ - DATABASE_URL: z.string(), - HEALTHCHECK_HOST: z.string().optional(), - HEALTHCHECK_PORT: z.coerce.number().optional(), - }), - ), -); - -const transports: Transport[] = [ - // prefer WS when specified - env.RPC_WS_URL ? webSocket(env.RPC_WS_URL) : undefined, - // otherwise use or fallback to HTTP - env.RPC_HTTP_URL ? http(env.RPC_HTTP_URL) : undefined, -].filter(isDefined); - -const publicClient = createPublicClient({ - transport: fallback(transports), - pollingInterval: env.POLLING_INTERVAL, -}); - -const chainId = await publicClient.getChainId(); -const database = drizzle(postgres(env.DATABASE_URL, { prepare: false })); - -if (await shouldCleanDatabase(database, chainId)) { - console.log("outdated database detected, clearing data to start fresh"); - await cleanDatabase(database); -} - -const { storageAdapter, tables } = await createStorageAdapter({ database, publicClient }); - -let startBlock = env.START_BLOCK; - -async function getLatestStoredBlockNumber(): Promise { - // Fetch latest block stored in DB. This will throw if the DB doesn't exist yet, so we wrap in a try/catch and ignore the error. - // TODO: query if the DB exists instead of try/catch - try { - const chainState = await database - .select() - .from(tables.configTable) - .where(eq(tables.configTable.chainId, chainId)) - .limit(1) - .execute() - // Get the first record in a way that returns a possible `undefined` - // TODO: move this to `.findFirst` after upgrading drizzle or `rows[0]` after enabling `noUncheckedIndexedAccess: true` - .then((rows) => rows.find(() => true)); - - return chainState?.blockNumber; - } catch (error) { - // ignore errors for now - } -} - -const latestStoredBlockNumber = await getLatestStoredBlockNumber(); -if (latestStoredBlockNumber != null) { - startBlock = latestStoredBlockNumber + 1n; - console.log("resuming from block number", startBlock); -} - -const { latestBlockNumber$, storedBlockLogs$ } = await createStoreSync({ - storageAdapter, - publicClient, - followBlockTag: env.FOLLOW_BLOCK_TAG, - startBlock, - maxBlockRange: env.MAX_BLOCK_RANGE, - address: env.STORE_ADDRESS, -}); - -storedBlockLogs$.subscribe(); - -let isCaughtUp = false; -combineLatest([latestBlockNumber$, storedBlockLogs$]) - .pipe( - filter( - ([latestBlockNumber, { blockNumber: lastBlockNumberProcessed }]) => - latestBlockNumber === lastBlockNumberProcessed, +(async (): Promise => { + const env = parseEnv( + z.intersection( + indexerEnvSchema, + z.object({ + DATABASE_URL: z.string(), + HEALTHCHECK_HOST: z.string().optional(), + HEALTHCHECK_PORT: z.coerce.number().optional(), + }), ), - first(), - ) - .subscribe(() => { - isCaughtUp = true; - console.log("all caught up"); + ); + + const transports: Transport[] = [ + // prefer WS when specified + env.RPC_WS_URL ? webSocket(env.RPC_WS_URL) : undefined, + // otherwise use or fallback to HTTP + env.RPC_HTTP_URL ? http(env.RPC_HTTP_URL) : undefined, + ].filter(isDefined); + + const publicClient = createPublicClient({ + transport: fallback(transports), + pollingInterval: env.POLLING_INTERVAL, }); -if (env.HEALTHCHECK_HOST != null || env.HEALTHCHECK_PORT != null) { - const { default: Koa } = await import("koa"); - const { default: cors } = await import("@koa/cors"); - const { healthcheck } = await import("../src/koa-middleware/healthcheck"); - const { metrics } = await import("../src/koa-middleware/metrics"); - const { helloWorld } = await import("../src/koa-middleware/helloWorld"); + const chainId = await publicClient.getChainId(); + const database = drizzle(postgres(env.DATABASE_URL, { prepare: false })); - const server = new Koa(); + if (await shouldCleanDatabase(database, chainId)) { + console.log("outdated database detected, clearing data to start fresh"); + await cleanDatabase(database); + } - server.use(cors()); - server.use( - healthcheck({ - isReady: () => isCaughtUp, - }), - ); - server.use( - metrics({ - isHealthy: () => true, - isReady: () => isCaughtUp, - getLatestStoredBlockNumber, - followBlockTag: env.FOLLOW_BLOCK_TAG, - }), - ); - server.use(helloWorld()); + const { storageAdapter, tables } = await createStorageAdapter({ database, publicClient }); + + let startBlock = env.START_BLOCK; + + async function getLatestStoredBlockNumber(): Promise { + // Fetch latest block stored in DB. This will throw if the DB doesn't exist yet, so we wrap in a try/catch and ignore the error. + // TODO: query if the DB exists instead of try/catch + try { + const chainState = await database + .select() + .from(tables.configTable) + .where(eq(tables.configTable.chainId, chainId)) + .limit(1) + .execute() + // Get the first record in a way that returns a possible `undefined` + // TODO: move this to `.findFirst` after upgrading drizzle or `rows[0]` after enabling `noUncheckedIndexedAccess: true` + .then((rows) => rows.find(() => true)); + + return chainState?.blockNumber; + } catch (error) { + // ignore errors for now + } + } - server.listen({ host: env.HEALTHCHECK_HOST, port: env.HEALTHCHECK_PORT }); - console.log( - `postgres indexer healthcheck server listening on http://${env.HEALTHCHECK_HOST}:${env.HEALTHCHECK_PORT}`, - ); -} + const latestStoredBlockNumber = await getLatestStoredBlockNumber(); + if (latestStoredBlockNumber != null) { + startBlock = latestStoredBlockNumber + 1n; + console.log("resuming from block number", startBlock); + } + + const { latestBlockNumber$, storedBlockLogs$ } = await createStoreSync({ + storageAdapter, + publicClient, + followBlockTag: env.FOLLOW_BLOCK_TAG, + startBlock, + maxBlockRange: env.MAX_BLOCK_RANGE, + address: env.STORE_ADDRESS, + }); + + storedBlockLogs$.subscribe(); + + let isCaughtUp = false; + combineLatest([latestBlockNumber$, storedBlockLogs$]) + .pipe( + filter( + ([latestBlockNumber, { blockNumber: lastBlockNumberProcessed }]) => + latestBlockNumber === lastBlockNumberProcessed, + ), + first(), + ) + .subscribe(() => { + isCaughtUp = true; + console.log("all caught up"); + }); + + if (env.HEALTHCHECK_HOST != null || env.HEALTHCHECK_PORT != null) { + const { default: Koa } = await import("koa"); + const { default: cors } = await import("@koa/cors"); + const { healthcheck } = await import("../src/koa-middleware/healthcheck"); + const { metrics } = await import("../src/koa-middleware/metrics"); + const { helloWorld } = await import("../src/koa-middleware/helloWorld"); + + const server = new Koa(); + + server.use(cors()); + server.use( + healthcheck({ + isReady: () => isCaughtUp, + }), + ); + server.use( + metrics({ + isHealthy: () => true, + isReady: () => isCaughtUp, + getLatestStoredBlockNumber, + followBlockTag: env.FOLLOW_BLOCK_TAG, + }), + ); + server.use(helloWorld()); + + server.listen({ host: env.HEALTHCHECK_HOST, port: env.HEALTHCHECK_PORT }); + console.log( + `postgres indexer healthcheck server listening on http://${env.HEALTHCHECK_HOST}:${env.HEALTHCHECK_PORT}`, + ); + } +})(); \ No newline at end of file diff --git a/packages/store-indexer/bin/sqlite-indexer.ts b/packages/store-indexer/bin/sqlite-indexer.ts index 61d9ca02a1..3e79e61e42 100644 --- a/packages/store-indexer/bin/sqlite-indexer.ts +++ b/packages/store-indexer/bin/sqlite-indexer.ts @@ -21,6 +21,7 @@ import { apiRoutes } from "../src/sqlite/apiRoutes"; import { sentry } from "../src/koa-middleware/sentry"; import { metrics } from "../src/koa-middleware/metrics"; +(async (): Promise => { const env = parseEnv( z.intersection( z.intersection(indexerEnvSchema, frontendEnvSchema), @@ -31,12 +32,12 @@ const env = parseEnv( ), ); -const transports: Transport[] = [ - // prefer WS when specified - env.RPC_WS_URL ? webSocket(env.RPC_WS_URL) : undefined, - // otherwise use or fallback to HTTP - env.RPC_HTTP_URL ? http(env.RPC_HTTP_URL) : undefined, -].filter(isDefined); + const transports: Transport[] = [ + // prefer WS when specified + env.RPC_WS_URL ? webSocket(env.RPC_WS_URL) : undefined, + // otherwise use or fallback to HTTP + env.RPC_HTTP_URL ? http(env.RPC_HTTP_URL) : undefined, + ].filter(isDefined); const publicClient = createPublicClient({ transport: fallback(transports), @@ -115,11 +116,10 @@ combineLatest([latestBlockNumber$, storedBlockLogs$]) console.log("all caught up"); }); -const server = new Koa(); + const chainId = await publicClient.getChainId(); + const database = drizzle(new Database(env.SQLITE_FILENAME)); -if (env.SENTRY_DSN) { - server.use(sentry(env.SENTRY_DSN)); -} + let startBlock = env.START_BLOCK; server.use(cors()); server.use( @@ -148,5 +148,53 @@ server.use( }), ); -server.listen({ host: env.HOST, port: env.PORT }); -console.log(`sqlite indexer frontend listening on http://${env.HOST}:${env.PORT}`); + const { latestBlockNumber$, storedBlockLogs$ } = await syncToSqlite({ + database, + publicClient, + startBlock, + maxBlockRange: env.MAX_BLOCK_RANGE, + address: env.STORE_ADDRESS, + }); + + let isCaughtUp = false; + combineLatest([latestBlockNumber$, storedBlockLogs$]) + .pipe( + filter( + ([latestBlockNumber, { blockNumber: lastBlockNumberProcessed }]) => + latestBlockNumber === lastBlockNumberProcessed + ), + first() + ) + .subscribe(() => { + isCaughtUp = true; + console.log("all caught up"); + }); + + const server = new Koa(); + + if (env.SENTRY_DSN) { + server.use(sentry(env.SENTRY_DSN)); + } + + server.use(cors()); + server.use( + healthcheck({ + isReady: () => isCaughtUp, + }) + ); + server.use(helloWorld()); + server.use(apiRoutes(database)); + + server.use( + createKoaMiddleware({ + prefix: "/trpc", + router: createAppRouter(), + createContext: async () => ({ + queryAdapter: await createQueryAdapter(database), + }), + }) + ); + + server.listen({ host: env.HOST, port: env.PORT }); + console.log(`sqlite indexer frontend listening on http://${env.HOST}:${env.PORT}`); +})(); diff --git a/packages/store-indexer/package.json b/packages/store-indexer/package.json index c2255aea13..ef52f51f1a 100644 --- a/packages/store-indexer/package.json +++ b/packages/store-indexer/package.json @@ -8,7 +8,6 @@ "directory": "packages/store-indexer" }, "license": "MIT", - "type": "module", "exports": { ".": "./dist/index.js" }, diff --git a/packages/store-indexer/tsup.config.ts b/packages/store-indexer/tsup.config.ts index 9b3595745c..001e4d2260 100644 --- a/packages/store-indexer/tsup.config.ts +++ b/packages/store-indexer/tsup.config.ts @@ -9,7 +9,7 @@ export default defineConfig({ "bin/sqlite-indexer.ts", ], target: "esnext", - format: ["esm"], + format: ["esm", "cjs"], dts: !process.env.TSUP_SKIP_DTS, sourcemap: true, clean: true, diff --git a/packages/store-sync/package.json b/packages/store-sync/package.json index 18c2c83408..1ca5a01413 100644 --- a/packages/store-sync/package.json +++ b/packages/store-sync/package.json @@ -8,7 +8,6 @@ "directory": "packages/store-sync" }, "license": "MIT", - "type": "module", "exports": { ".": "./dist/index.js", "./indexer-client": "./dist/indexer-client/index.js", diff --git a/packages/store-sync/tsup.config.ts b/packages/store-sync/tsup.config.ts index d8f6860bea..c5d0b3568a 100644 --- a/packages/store-sync/tsup.config.ts +++ b/packages/store-sync/tsup.config.ts @@ -12,7 +12,7 @@ export default defineConfig({ "src/zustand/index.ts", ], target: "esnext", - format: ["esm"], + format: ["esm", "cjs"], dts: !process.env.TSUP_SKIP_DTS, sourcemap: true, clean: true, diff --git a/packages/store/package.json b/packages/store/package.json index e68f53dc39..20fe8dd76f 100644 --- a/packages/store/package.json +++ b/packages/store/package.json @@ -8,7 +8,6 @@ "directory": "packages/store" }, "license": "MIT", - "type": "module", "exports": { ".": "./dist/index.js", "./internal": "./dist/internal.js", diff --git a/packages/store/ts/scripts/generate-test-tables.ts b/packages/store/ts/scripts/generate-test-tables.ts index b54bd841cf..854223fed0 100644 --- a/packages/store/ts/scripts/generate-test-tables.ts +++ b/packages/store/ts/scripts/generate-test-tables.ts @@ -50,7 +50,9 @@ const config = defineStore({ }, }); -const srcDir = await getSrcDirectory(); -const remappings = await getRemappings(); +(async () => { + const srcDir = await getSrcDirectory(); + const remappings = await getRemappings(); -await tablegen(config, path.join(srcDir, config.codegen.outputDirectory), remappings); + await tablegen(config, path.join(srcDir, config.codegen.outputDirectory), remappings); +})(); \ No newline at end of file diff --git a/packages/store/ts/scripts/generate-tightcoder.ts b/packages/store/ts/scripts/generate-tightcoder.ts index d4f0a56579..bc5b104c52 100644 --- a/packages/store/ts/scripts/generate-tightcoder.ts +++ b/packages/store/ts/scripts/generate-tightcoder.ts @@ -1,10 +1,12 @@ import { formatAndWriteSolidity } from "@latticexyz/common/codegen"; import { renderDecodeSlice, renderEncodeArray, renderTightCoderAutoTest } from "../codegen/tightcoder"; -await formatAndWriteSolidity(renderDecodeSlice(), "src/tightcoder/DecodeSlice.sol", "Generated DecodeSlice"); -await formatAndWriteSolidity(renderEncodeArray(), "src/tightcoder/EncodeArray.sol", "Generated EncodeArray"); -await formatAndWriteSolidity( - renderTightCoderAutoTest(), - "test/tightcoder/TightCoderAuto.t.sol", - "Generated TightCoderAutoTest", -); +(async () => { + await formatAndWriteSolidity(renderDecodeSlice(), "src/tightcoder/DecodeSlice.sol", "Generated DecodeSlice"); + await formatAndWriteSolidity(renderEncodeArray(), "src/tightcoder/EncodeArray.sol", "Generated EncodeArray"); + await formatAndWriteSolidity( + renderTightCoderAutoTest(), + "test/tightcoder/TightCoderAuto.t.sol", + "Generated TightCoderAutoTest" + ); +})(); diff --git a/packages/store/ts/scripts/tablegen.ts b/packages/store/ts/scripts/tablegen.ts index a0a413b894..4819bb2803 100644 --- a/packages/store/ts/scripts/tablegen.ts +++ b/packages/store/ts/scripts/tablegen.ts @@ -4,8 +4,10 @@ import { getRemappings, getSrcDirectory } from "@latticexyz/common/foundry"; import { tablegen } from "../codegen"; import { Store as StoreConfig } from "../config/v2/output"; -const config = (await loadConfig()) as StoreConfig; -const srcDir = await getSrcDirectory(); -const remappings = await getRemappings(); +(async () => { + const config = (await loadConfig()) as StoreConfig; + const srcDir = await getSrcDirectory(); + const remappings = await getRemappings(); -await tablegen(config, path.join(srcDir, config.codegen.outputDirectory), remappings); + await tablegen(config, path.join(srcDir, config.codegen.outputDirectory), remappings); +})(); diff --git a/packages/store/tsup.config.ts b/packages/store/tsup.config.ts index 569cd72017..887651005f 100644 --- a/packages/store/tsup.config.ts +++ b/packages/store/tsup.config.ts @@ -11,7 +11,7 @@ export default defineConfig({ register: "ts/register/index.ts", }, target: "esnext", - format: ["esm"], + format: ["esm", "cjs"], dts: !process.env.TSUP_SKIP_DTS, sourcemap: true, clean: true, diff --git a/packages/utils/package.json b/packages/utils/package.json index 24bc85a3c1..c49dd7c013 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -7,7 +7,6 @@ "directory": "packages/utils" }, "license": "MIT", - "type": "module", "exports": { ".": "./dist/index.js" }, diff --git a/packages/utils/tsup.config.ts b/packages/utils/tsup.config.ts index 86fe9a5339..af92ad0d25 100644 --- a/packages/utils/tsup.config.ts +++ b/packages/utils/tsup.config.ts @@ -3,7 +3,7 @@ import { defineConfig } from "tsup"; export default defineConfig({ entry: ["src/index.ts"], target: "esnext", - format: ["esm"], + format: ["esm", "cjs"], dts: !process.env.TSUP_SKIP_DTS, sourcemap: true, clean: true, diff --git a/packages/world-modules/package.json b/packages/world-modules/package.json index 4df7786b5f..3065d37b4d 100644 --- a/packages/world-modules/package.json +++ b/packages/world-modules/package.json @@ -8,7 +8,6 @@ "directory": "packages/world-modules" }, "license": "MIT", - "type": "module", "exports": { "./internal/mud.config": "./dist/mud.config.js", "./out/*": "./out/*" diff --git a/packages/world-modules/ts/scripts/tablegen.ts b/packages/world-modules/ts/scripts/tablegen.ts index eff4998f7e..b15cc2071c 100644 --- a/packages/world-modules/ts/scripts/tablegen.ts +++ b/packages/world-modules/ts/scripts/tablegen.ts @@ -4,8 +4,10 @@ import { getRemappings, getSrcDirectory } from "@latticexyz/common/foundry"; import { Store as StoreConfig } from "@latticexyz/store"; import { tablegen } from "@latticexyz/store/codegen"; -const config = (await loadConfig()) as StoreConfig; -const srcDir = await getSrcDirectory(); -const remappings = await getRemappings(); +(async () => { + const config = (await loadConfig()) as StoreConfig; + const srcDir = await getSrcDirectory(); + const remappings = await getRemappings(); -await tablegen(config, path.join(srcDir, config.codegen.outputDirectory), remappings); + await tablegen(config, path.join(srcDir, config.codegen.outputDirectory), remappings); +})(); diff --git a/packages/world-modules/ts/scripts/worldgen.ts b/packages/world-modules/ts/scripts/worldgen.ts index 47b895c05b..1ce2c55c8e 100644 --- a/packages/world-modules/ts/scripts/worldgen.ts +++ b/packages/world-modules/ts/scripts/worldgen.ts @@ -6,26 +6,28 @@ import { getSrcDirectory } from "@latticexyz/common/foundry"; import { World as WorldConfig } from "@latticexyz/world"; import { worldgen } from "@latticexyz/world/node"; -// TODO dedupe this and cli's worldgen command -const configPath = undefined; -const clean = false; -const srcDir = await getSrcDirectory(); +(async () => { + // TODO dedupe this and cli's worldgen command + const configPath = undefined; + const clean = false; + const srcDir = await getSrcDirectory(); -// Get a list of all contract names -const existingContracts = glob.sync(`${srcDir}/**/*.sol`).map((path) => ({ - path, - basename: basename(path, ".sol"), -})); + // Get a list of all contract names + const existingContracts = glob.sync(`${srcDir}/**/*.sol`).map((path) => ({ + path, + basename: basename(path, ".sol"), + })); -// Load and resolve the config -const mudConfig = (await loadConfig(configPath)) as WorldConfig; + // Load and resolve the config + const mudConfig = (await loadConfig(configPath)) as WorldConfig; -const outputBaseDirectory = path.join(srcDir, mudConfig.codegen.outputDirectory); + const outputBaseDirectory = path.join(srcDir, mudConfig.codegen.outputDirectory); -// clear the worldgen directory -if (clean) { - rmSync(path.join(outputBaseDirectory, mudConfig.codegen.worldgenDirectory), { recursive: true, force: true }); -} + // clear the worldgen directory + if (clean) { + rmSync(path.join(outputBaseDirectory, mudConfig.codegen.worldgenDirectory), { recursive: true, force: true }); + } -// generate new interfaces -await worldgen(mudConfig, existingContracts, outputBaseDirectory); + // generate new interfaces + await worldgen(mudConfig, existingContracts, outputBaseDirectory); +})(); diff --git a/packages/world-modules/tsup.config.ts b/packages/world-modules/tsup.config.ts index a89281f3d6..5296d1cc4e 100644 --- a/packages/world-modules/tsup.config.ts +++ b/packages/world-modules/tsup.config.ts @@ -5,7 +5,7 @@ export default defineConfig({ "mud.config": "mud.config.ts", }, target: "esnext", - format: ["esm"], + format: ["esm", "cjs"], dts: !process.env.TSUP_SKIP_DTS, sourcemap: true, clean: true, diff --git a/packages/world/package.json b/packages/world/package.json index e68e5f0393..7a1273acc8 100644 --- a/packages/world/package.json +++ b/packages/world/package.json @@ -8,7 +8,6 @@ "directory": "packages/world" }, "license": "MIT", - "type": "module", "exports": { ".": "./dist/index.js", "./internal": "./dist/internal.js", diff --git a/packages/world/ts/scripts/generate-test-tables.ts b/packages/world/ts/scripts/generate-test-tables.ts index 8c70024133..5f16c75767 100644 --- a/packages/world/ts/scripts/generate-test-tables.ts +++ b/packages/world/ts/scripts/generate-test-tables.ts @@ -33,8 +33,9 @@ const config = defineWorld({ }, }, }); +(async () => { + const srcDir = await getSrcDirectory(); + const remappings = await getRemappings(); -const srcDir = await getSrcDirectory(); -const remappings = await getRemappings(); - -await tablegen(config, path.join(srcDir, config.codegen.outputDirectory), remappings); + await tablegen(config, path.join(srcDir, config.codegen.outputDirectory), remappings); +})(); diff --git a/packages/world/ts/scripts/tablegen.ts b/packages/world/ts/scripts/tablegen.ts index eff4998f7e..302da58628 100644 --- a/packages/world/ts/scripts/tablegen.ts +++ b/packages/world/ts/scripts/tablegen.ts @@ -4,8 +4,10 @@ import { getRemappings, getSrcDirectory } from "@latticexyz/common/foundry"; import { Store as StoreConfig } from "@latticexyz/store"; import { tablegen } from "@latticexyz/store/codegen"; -const config = (await loadConfig()) as StoreConfig; -const srcDir = await getSrcDirectory(); -const remappings = await getRemappings(); +(async () => { + const config = (await loadConfig()) as StoreConfig; + const srcDir = await getSrcDirectory(); + const remappings = await getRemappings(); -await tablegen(config, path.join(srcDir, config.codegen.outputDirectory), remappings); + await tablegen(config, path.join(srcDir, config.codegen.outputDirectory), remappings); +})(); \ No newline at end of file diff --git a/packages/world/ts/scripts/worldgen.ts b/packages/world/ts/scripts/worldgen.ts index 90955971b3..77912cc5bd 100644 --- a/packages/world/ts/scripts/worldgen.ts +++ b/packages/world/ts/scripts/worldgen.ts @@ -6,28 +6,30 @@ import { getSrcDirectory } from "@latticexyz/common/foundry"; import { worldgen } from "../node"; import { World as WorldConfig } from "../config/v2/output"; -// TODO dedupe this and cli's worldgen command -const configPath = undefined; -const clean = false; -const srcDir = await getSrcDirectory(); +(async () => { + // TODO dedupe this and cli's worldgen command + const configPath = undefined; + const clean = false; + const srcDir = await getSrcDirectory(); -// Get a list of all contract names -const existingContracts = glob.sync(`${srcDir}/**/*.sol`).map((path) => ({ - path, - basename: basename(path, ".sol"), -})); + // Get a list of all contract names + const existingContracts = glob.sync(`${srcDir}/**/*.sol`).map((path) => ({ + path, + basename: basename(path, ".sol"), + })); -// Load and resolve the config -const mudConfig = (await loadConfig(configPath)) as WorldConfig; + // Load and resolve the config + const mudConfig = (await loadConfig(configPath)) as WorldConfig; -const outputBaseDirectory = path.join(srcDir, mudConfig.codegen.outputDirectory); + const outputBaseDirectory = path.join(srcDir, mudConfig.codegen.outputDirectory); -// clear the worldgen directory -if (clean) { - rmSync(path.join(outputBaseDirectory, mudConfig.codegen.worldgenDirectory), { recursive: true, force: true }); -} + // clear the worldgen directory + if (clean) { + rmSync(path.join(outputBaseDirectory, mudConfig.codegen.worldgenDirectory), { recursive: true, force: true }); + } -// generate new interfaces -// override the namespace to be the root namespace for generating the core system interface -const rootMudConfig = { ...mudConfig, namespace: "" }; -await worldgen(rootMudConfig, existingContracts, outputBaseDirectory); + // generate new interfaces + // override the namespace to be the root namespace for generating the core system interface + const rootMudConfig = { ...mudConfig, namespace: "" }; + await worldgen(rootMudConfig, existingContracts, outputBaseDirectory); +})(); diff --git a/packages/world/tsup.config.ts b/packages/world/tsup.config.ts index 8ea323c621..b7b4bb3910 100644 --- a/packages/world/tsup.config.ts +++ b/packages/world/tsup.config.ts @@ -10,7 +10,7 @@ export default defineConfig({ node: "ts/node/index.ts", }, target: "esnext", - format: ["esm"], + format: ["esm", "cjs"], dts: !process.env.TSUP_SKIP_DTS, sourcemap: true, clean: true, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8b7bd87c9f..11c1e5a64b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -30,14 +30,14 @@ importers: specifier: ^1.0.11 version: 1.0.11 chalk: - specifier: ^5.2.0 - version: 5.2.0 + specifier: 4.1.2 + version: 4.1.2 eslint: specifier: 8.57.0 version: 8.57.0 execa: - specifier: ^7.0.0 - version: 7.0.0 + specifier: ^5.1.1 + version: 5.1.1 glob: specifier: ^8.0.3 version: 8.0.3 @@ -66,14 +66,14 @@ importers: packages/abi-ts: dependencies: chalk: - specifier: ^5.3.0 - version: 5.3.0 + specifier: 4.1.2 + version: 4.1.2 debug: specifier: ^4.3.4 - version: 4.3.4 + version: 4.3.4(supports-color@8.1.1) execa: - specifier: ^7.0.0 - version: 7.0.0 + specifier: ^5.1.1 + version: 5.1.1 glob: specifier: ^8.0.3 version: 8.0.3 @@ -110,7 +110,7 @@ importers: version: 1.0.0(typescript@5.4.2)(zod@3.21.4) debug: specifier: ^4.3.4 - version: 4.3.4 + version: 4.3.4(supports-color@8.1.1) rxjs: specifier: 7.5.5 version: 7.5.5 @@ -182,14 +182,14 @@ importers: specifier: ^5.4.1 version: 5.4.1 chalk: - specifier: ^5.0.1 - version: 5.2.0 + specifier: 4.1.2 + version: 4.1.2 chokidar: specifier: ^3.5.3 version: 3.5.3 debug: specifier: ^4.3.4 - version: 4.3.4 + version: 4.3.4(supports-color@8.1.1) dotenv: specifier: ^16.0.3 version: 16.0.3 @@ -200,8 +200,8 @@ importers: specifier: ^5.7.2 version: 5.7.2 execa: - specifier: ^7.0.0 - version: 7.0.0 + specifier: ^5.1.1 + version: 5.1.1 glob: specifier: ^8.0.3 version: 8.0.3 @@ -215,8 +215,8 @@ importers: specifier: ^7.4.1 version: 7.4.1 p-retry: - specifier: ^5.1.2 - version: 5.1.2 + specifier: 4.6.2 + version: 4.6.2 path: specifier: ^0.12.7 version: 0.12.7 @@ -301,18 +301,18 @@ importers: version: 5.4.1 debug: specifier: ^4.3.4 - version: 4.3.4 + version: 4.3.4(supports-color@8.1.1) execa: - specifier: ^7.0.0 - version: 7.0.0 + specifier: ^5.1.1 + version: 5.1.1 p-queue: - specifier: ^7.4.1 - version: 7.4.1 + specifier: 6.6.2 + version: 6.6.2 p-retry: - specifier: ^5.1.2 - version: 5.1.2 + specifier: 4.6.2 + version: 4.6.2 prettier: - specifier: 3.2.5 + specifier: ^3.2.5 version: 3.2.5 prettier-plugin-solidity: specifier: 1.3.1 @@ -349,8 +349,8 @@ importers: specifier: ^0.17.15 version: 0.17.15 find-up: - specifier: ^6.3.0 - version: 6.3.0 + specifier: 5.0.0 + version: 5.0.0 viem: specifier: 2.9.20 version: 2.9.20(typescript@5.4.2)(zod@3.21.4) @@ -473,7 +473,7 @@ importers: version: 10.34.0 debug: specifier: ^4.3.4 - version: 4.3.4 + version: 4.3.4(supports-color@8.1.1) dotenv: specifier: ^16.0.3 version: 16.0.3 @@ -503,20 +503,20 @@ importers: packages/gas-report: dependencies: chalk: - specifier: ^5.3.0 - version: 5.3.0 + specifier: 4.1.2 + version: 4.1.2 dotenv: specifier: ^16.0.3 version: 16.0.3 execa: - specifier: ^7.0.0 - version: 7.0.0 + specifier: ^5.1.1 + version: 5.1.1 stream-to-array: specifier: ^2.3.0 version: 2.3.0 strip-ansi: - specifier: ^7.1.0 - version: 7.1.0 + specifier: 6.0.1 + version: 6.0.1 table: specifier: ^6.8.1 version: 6.8.1 @@ -546,6 +546,54 @@ importers: specifier: 0.34.6 version: 0.34.6(jsdom@22.1.0) + packages/noise: + dependencies: + abdk-libraries-solidity: + specifier: ^3.0.0 + version: 3.2.0 + ds-test: + specifier: https://github.com/dapphub/ds-test.git#e282159d5170298eb2455a6c05280ab5a73a4ef0 + version: github.com/dapphub/ds-test/e282159d5170298eb2455a6c05280ab5a73a4ef0 + forge-std: + specifier: https://github.com/foundry-rs/forge-std.git#74cfb77e308dd188d2f58864aaf44963ae6b88b1 + version: github.com/foundry-rs/forge-std/74cfb77e308dd188d2f58864aaf44963ae6b88b1 + devDependencies: + '@nomicfoundation/hardhat-chai-matchers': + specifier: ^1.0.3 + version: 1.0.6(@nomiclabs/hardhat-ethers@2.2.3)(chai@4.4.1)(ethers@5.7.2)(hardhat@2.22.0) + '@nomiclabs/hardhat-ethers': + specifier: ^2.1.1 + version: 2.2.3(ethers@5.7.2)(hardhat@2.22.0) + '@types/chai': + specifier: ^4.3.5 + version: 4.3.5 + '@types/node-fetch': + specifier: ^2.6.2 + version: 2.6.11 + assemblyscript: + specifier: ^0.21.2 + version: 0.21.7 + chai: + specifier: ^4.3.6 + version: 4.4.1 + ethers: + specifier: ^5.7.2 + version: 5.7.2 + hardhat: + specifier: ^2.10.2 + version: 2.22.0(typescript@5.4.2) + keccak-wasm: + specifier: ^0.10.3 + version: 0.10.3(buffer-lite@1.1.0) + tsup: + specifier: ^6.7.0 + version: 6.7.0(postcss@8.4.23)(typescript@5.4.2) + web3-utils: + specifier: ^1.8.0 + version: 1.10.4 + + packages/phaserx: {} + packages/protocol-parser: dependencies: '@latticexyz/common': @@ -861,7 +909,7 @@ importers: version: 8.6.0 debug: specifier: ^4.3.4 - version: 4.3.4 + version: 4.3.4(supports-color@8.1.1) dotenv: specifier: ^16.0.3 version: 16.0.3 @@ -970,7 +1018,7 @@ importers: version: 5.2.0 debug: specifier: ^4.3.4 - version: 4.3.4 + version: 4.3.4(supports-color@8.1.1) drizzle-orm: specifier: ^0.28.5 version: 0.28.5(@types/sql.js@1.4.4)(kysely@0.26.3)(postgres@3.3.5)(sql.js@1.8.0) @@ -1804,7 +1852,7 @@ packages: '@babel/traverse': 7.21.4 '@babel/types': 7.21.4 convert-source-map: 1.9.0 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.0 @@ -1827,7 +1875,7 @@ packages: '@babel/traverse': 7.24.1 '@babel/types': 7.24.0 convert-source-map: 2.0.0 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -2269,7 +2317,7 @@ packages: '@babel/helper-split-export-declaration': 7.18.6 '@babel/parser': 7.21.4 '@babel/types': 7.21.4 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -2287,7 +2335,7 @@ packages: '@babel/helper-split-export-declaration': 7.22.6 '@babel/parser': 7.24.4 '@babel/types': 7.24.0 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -2936,7 +2984,7 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) espree: 9.6.1 globals: 13.20.0 ignore: 5.2.4 @@ -2953,6 +3001,21 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true + /@ethereumjs/rlp@4.0.1: + resolution: {integrity: sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==} + engines: {node: '>=14'} + hasBin: true + dev: true + + /@ethereumjs/util@8.1.0: + resolution: {integrity: sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==} + engines: {node: '>=14'} + dependencies: + '@ethereumjs/rlp': 4.0.1 + ethereum-cryptography: 2.1.3 + micro-ftch: 0.3.1 + dev: true + /@ethersproject/abi@5.7.0: resolution: {integrity: sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==} dependencies: @@ -2965,7 +3028,6 @@ packages: '@ethersproject/logger': 5.7.0 '@ethersproject/properties': 5.7.0 '@ethersproject/strings': 5.7.0 - dev: false /@ethersproject/abstract-provider@5.7.0: resolution: {integrity: sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==} @@ -2977,7 +3039,6 @@ packages: '@ethersproject/properties': 5.7.0 '@ethersproject/transactions': 5.7.0 '@ethersproject/web': 5.7.1 - dev: false /@ethersproject/abstract-signer@5.7.0: resolution: {integrity: sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==} @@ -2987,7 +3048,6 @@ packages: '@ethersproject/bytes': 5.7.0 '@ethersproject/logger': 5.7.0 '@ethersproject/properties': 5.7.0 - dev: false /@ethersproject/address@5.7.0: resolution: {integrity: sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==} @@ -2997,20 +3057,17 @@ packages: '@ethersproject/keccak256': 5.7.0 '@ethersproject/logger': 5.7.0 '@ethersproject/rlp': 5.7.0 - dev: false /@ethersproject/base64@5.7.0: resolution: {integrity: sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==} dependencies: '@ethersproject/bytes': 5.7.0 - dev: false /@ethersproject/basex@5.7.0: resolution: {integrity: sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==} dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/properties': 5.7.0 - dev: false /@ethersproject/bignumber@5.7.0: resolution: {integrity: sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==} @@ -3018,19 +3075,16 @@ packages: '@ethersproject/bytes': 5.7.0 '@ethersproject/logger': 5.7.0 bn.js: 5.2.1 - dev: false /@ethersproject/bytes@5.7.0: resolution: {integrity: sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==} dependencies: '@ethersproject/logger': 5.7.0 - dev: false /@ethersproject/constants@5.7.0: resolution: {integrity: sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==} dependencies: '@ethersproject/bignumber': 5.7.0 - dev: false /@ethersproject/contracts@5.7.0: resolution: {integrity: sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==} @@ -3045,7 +3099,6 @@ packages: '@ethersproject/logger': 5.7.0 '@ethersproject/properties': 5.7.0 '@ethersproject/transactions': 5.7.0 - dev: false /@ethersproject/hash@5.7.0: resolution: {integrity: sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==} @@ -3059,7 +3112,6 @@ packages: '@ethersproject/logger': 5.7.0 '@ethersproject/properties': 5.7.0 '@ethersproject/strings': 5.7.0 - dev: false /@ethersproject/hdnode@5.7.0: resolution: {integrity: sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==} @@ -3076,7 +3128,6 @@ packages: '@ethersproject/strings': 5.7.0 '@ethersproject/transactions': 5.7.0 '@ethersproject/wordlists': 5.7.0 - dev: false /@ethersproject/json-wallets@5.7.0: resolution: {integrity: sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==} @@ -3094,37 +3145,31 @@ packages: '@ethersproject/transactions': 5.7.0 aes-js: 3.0.0 scrypt-js: 3.0.1 - dev: false /@ethersproject/keccak256@5.7.0: resolution: {integrity: sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==} dependencies: '@ethersproject/bytes': 5.7.0 js-sha3: 0.8.0 - dev: false /@ethersproject/logger@5.7.0: resolution: {integrity: sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==} - dev: false /@ethersproject/networks@5.7.1: resolution: {integrity: sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==} dependencies: '@ethersproject/logger': 5.7.0 - dev: false /@ethersproject/pbkdf2@5.7.0: resolution: {integrity: sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==} dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/sha2': 5.7.0 - dev: false /@ethersproject/properties@5.7.0: resolution: {integrity: sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==} dependencies: '@ethersproject/logger': 5.7.0 - dev: false /@ethersproject/providers@5.7.2: resolution: {integrity: sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==} @@ -3152,21 +3197,18 @@ packages: transitivePeerDependencies: - bufferutil - utf-8-validate - dev: false /@ethersproject/random@5.7.0: resolution: {integrity: sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==} dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/logger': 5.7.0 - dev: false /@ethersproject/rlp@5.7.0: resolution: {integrity: sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==} dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/logger': 5.7.0 - dev: false /@ethersproject/sha2@5.7.0: resolution: {integrity: sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==} @@ -3174,7 +3216,6 @@ packages: '@ethersproject/bytes': 5.7.0 '@ethersproject/logger': 5.7.0 hash.js: 1.1.7 - dev: false /@ethersproject/signing-key@5.7.0: resolution: {integrity: sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==} @@ -3185,7 +3226,6 @@ packages: bn.js: 5.2.1 elliptic: 6.5.4 hash.js: 1.1.7 - dev: false /@ethersproject/solidity@5.7.0: resolution: {integrity: sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==} @@ -3196,7 +3236,6 @@ packages: '@ethersproject/logger': 5.7.0 '@ethersproject/sha2': 5.7.0 '@ethersproject/strings': 5.7.0 - dev: false /@ethersproject/strings@5.7.0: resolution: {integrity: sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==} @@ -3204,7 +3243,6 @@ packages: '@ethersproject/bytes': 5.7.0 '@ethersproject/constants': 5.7.0 '@ethersproject/logger': 5.7.0 - dev: false /@ethersproject/transactions@5.7.0: resolution: {integrity: sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==} @@ -3218,7 +3256,6 @@ packages: '@ethersproject/properties': 5.7.0 '@ethersproject/rlp': 5.7.0 '@ethersproject/signing-key': 5.7.0 - dev: false /@ethersproject/units@5.7.0: resolution: {integrity: sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==} @@ -3226,7 +3263,6 @@ packages: '@ethersproject/bignumber': 5.7.0 '@ethersproject/constants': 5.7.0 '@ethersproject/logger': 5.7.0 - dev: false /@ethersproject/wallet@5.7.0: resolution: {integrity: sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==} @@ -3246,7 +3282,6 @@ packages: '@ethersproject/signing-key': 5.7.0 '@ethersproject/transactions': 5.7.0 '@ethersproject/wordlists': 5.7.0 - dev: false /@ethersproject/web@5.7.1: resolution: {integrity: sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==} @@ -3256,7 +3291,6 @@ packages: '@ethersproject/logger': 5.7.0 '@ethersproject/properties': 5.7.0 '@ethersproject/strings': 5.7.0 - dev: false /@ethersproject/wordlists@5.7.0: resolution: {integrity: sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==} @@ -3266,7 +3300,6 @@ packages: '@ethersproject/logger': 5.7.0 '@ethersproject/properties': 5.7.0 '@ethersproject/strings': 5.7.0 - dev: false /@fastify/accept-negotiator@1.1.0: resolution: {integrity: sha512-OIHZrb2ImZ7XG85HXOONLcJWGosv7sIvM2ifAPQVhg9Lv7qdmMBNVaai4QTdyuaqbKM5eO6sLSQOYI7wEQeCJQ==} @@ -3281,6 +3314,11 @@ packages: fast-uri: 2.2.0 dev: false + /@fastify/busboy@2.1.1: + resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} + engines: {node: '>=14'} + dev: true + /@fastify/compress@6.5.0: resolution: {integrity: sha512-AqUOK714jY7qkzbQbS4zyI4yNFgnRoOJ3eH/oV1T9f5fFdPDRdrFxm5de1ya5n+as4bvitjwU9EY7zvtT9pI2A==} dependencies: @@ -3324,7 +3362,7 @@ packages: engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 2.0.2 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -3656,7 +3694,7 @@ packages: resolution: {integrity: sha512-ribfPYfHb+Uw3b27Eiw6NPqjhIhTpVFzEWLwyc/1Xp+DCdwRRyIlAUODX+9bPARF6aQtUu1+/PHzdNvRzcs/+Q==} engines: {node: '>= 12'} dependencies: - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) http-errors: 2.0.0 koa-compose: 4.1.0 methods: 1.1.2 @@ -3685,17 +3723,47 @@ packages: read-yaml-file: 1.1.0 dev: true + /@metamask/eth-sig-util@4.0.1: + resolution: {integrity: sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ==} + engines: {node: '>=12.0.0'} + dependencies: + ethereumjs-abi: 0.6.8 + ethereumjs-util: 6.2.1 + ethjs-util: 0.1.6 + tweetnacl: 1.0.3 + tweetnacl-util: 0.15.1 + dev: true + /@noble/curves@1.2.0: resolution: {integrity: sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==} dependencies: '@noble/hashes': 1.3.2 dev: false + /@noble/curves@1.3.0: + resolution: {integrity: sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA==} + dependencies: + '@noble/hashes': 1.3.3 + dev: true + + /@noble/hashes@1.2.0: + resolution: {integrity: sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==} + dev: true + /@noble/hashes@1.3.2: resolution: {integrity: sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==} engines: {node: '>= 16'} dev: false + /@noble/hashes@1.3.3: + resolution: {integrity: sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==} + engines: {node: '>= 16'} + dev: true + + /@noble/secp256k1@1.7.1: + resolution: {integrity: sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==} + dev: true + /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -3714,6 +3782,279 @@ packages: '@nodelib/fs.scandir': 2.1.5 fastq: 1.15.0 + /@nomicfoundation/edr-darwin-arm64@0.3.0: + resolution: {integrity: sha512-Gg3jB1NJtqSXHjivSs5tws17r4w0V1aEW6/G6qJFYIGH+EnuNXCDXmNuYQ6++rQ7xBp56wueq93ILmtbyeGLwA==} + engines: {node: '>= 18'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@nomicfoundation/edr-darwin-x64@0.3.0: + resolution: {integrity: sha512-9leJCZx8jTdb0mIxY/pHypZViToZ7bS49CpwG8TTAi37HhgSUlM/iA4vrC7dA2LiBG+bXx/9BPJ0M/x0xP7EvQ==} + engines: {node: '>= 18'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@nomicfoundation/edr-linux-arm64-gnu@0.3.0: + resolution: {integrity: sha512-fU3zE94J3IeFZArpMeOdX4+cPZ2+rJlqd7clIlxI8zAxcTNDE9tV8jQsugQEI6ufi1ibEPuG26kJorEvIhBQgw==} + engines: {node: '>= 18'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@nomicfoundation/edr-linux-arm64-musl@0.3.0: + resolution: {integrity: sha512-ya+kvEazgGZ+4HeJ/dc12je3DdiE0fzW4HVVkFreWPh1ZVKlH3nXtGN8I5FXO6eOMvvD0gdph6mDLo7z6S2NTg==} + engines: {node: '>= 18'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@nomicfoundation/edr-linux-x64-gnu@0.3.0: + resolution: {integrity: sha512-ODi6NytOIYJLaKypzbgb7lWvR/YAOj6MhVdj0ZlySjyG/r+4yLfEdWXalYeMtTPw7oWwo7cncZNT7vaxcboSfQ==} + engines: {node: '>= 18'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@nomicfoundation/edr-linux-x64-musl@0.3.0: + resolution: {integrity: sha512-4+5kcETwTrrrRKl7Xi2RsEgN391w1ZyPlZWSC73z3zqHtllriSiynn7yeJedpLOPMUTvZKaoZHf6Ahguj6/UaA==} + engines: {node: '>= 18'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@nomicfoundation/edr-win32-arm64-msvc@0.3.0: + resolution: {integrity: sha512-8Tmn2kwnx0ZEuj3E4zlP4CH9hMeuZStq4E1Q1um3LyuZ9f+0XdZoHvgSjskeTwxmkHcp4A5S3yg/noP1Auc8IA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@nomicfoundation/edr-win32-ia32-msvc@0.3.0: + resolution: {integrity: sha512-6SRzowPhYeE0dU7oTpHePj0YCHwhZ+VvjHuJh0pJS+FmzduOJgzKX+tU7wLRCtYCMrb9/7sIr9HqsUsD/pTrVg==} + engines: {node: '>= 18'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@nomicfoundation/edr-win32-x64-msvc@0.3.0: + resolution: {integrity: sha512-f54/qch6q9E5G2zVi5TqONZSwz9ILJckRg2pAbiZlofZMVplef9iEkPT4Q6A40YWdB9Oo+hDfpC3OaYLzcf5OQ==} + engines: {node: '>= 18'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@nomicfoundation/edr@0.3.0: + resolution: {integrity: sha512-ygGAHss97Ii1TqPEo7lz1vfVKe/NhvvDK+78ehayOULhb1dxro+zP5PwVtXEgf5Qpum2TLIu2vZ7EqI9ft9ZwQ==} + engines: {node: '>= 18'} + optionalDependencies: + '@nomicfoundation/edr-darwin-arm64': 0.3.0 + '@nomicfoundation/edr-darwin-x64': 0.3.0 + '@nomicfoundation/edr-linux-arm64-gnu': 0.3.0 + '@nomicfoundation/edr-linux-arm64-musl': 0.3.0 + '@nomicfoundation/edr-linux-x64-gnu': 0.3.0 + '@nomicfoundation/edr-linux-x64-musl': 0.3.0 + '@nomicfoundation/edr-win32-arm64-msvc': 0.3.0 + '@nomicfoundation/edr-win32-ia32-msvc': 0.3.0 + '@nomicfoundation/edr-win32-x64-msvc': 0.3.0 + dev: true + + /@nomicfoundation/ethereumjs-common@4.0.4: + resolution: {integrity: sha512-9Rgb658lcWsjiicr5GzNCjI1llow/7r0k50dLL95OJ+6iZJcVbi15r3Y0xh2cIO+zgX0WIHcbzIu6FeQf9KPrg==} + dependencies: + '@nomicfoundation/ethereumjs-util': 9.0.4 + transitivePeerDependencies: + - c-kzg + dev: true + + /@nomicfoundation/ethereumjs-rlp@5.0.4: + resolution: {integrity: sha512-8H1S3s8F6QueOc/X92SdrA4RDenpiAEqMg5vJH99kcQaCy/a3Q6fgseo75mgWlbanGJXSlAPtnCeG9jvfTYXlw==} + engines: {node: '>=18'} + hasBin: true + dev: true + + /@nomicfoundation/ethereumjs-tx@5.0.4: + resolution: {integrity: sha512-Xjv8wAKJGMrP1f0n2PeyfFCCojHd7iS3s/Ab7qzF1S64kxZ8Z22LCMynArYsVqiFx6rzYy548HNVEyI+AYN/kw==} + engines: {node: '>=18'} + peerDependencies: + c-kzg: ^2.1.2 + peerDependenciesMeta: + c-kzg: + optional: true + dependencies: + '@nomicfoundation/ethereumjs-common': 4.0.4 + '@nomicfoundation/ethereumjs-rlp': 5.0.4 + '@nomicfoundation/ethereumjs-util': 9.0.4 + ethereum-cryptography: 0.1.3 + dev: true + + /@nomicfoundation/ethereumjs-util@9.0.4: + resolution: {integrity: sha512-sLOzjnSrlx9Bb9EFNtHzK/FJFsfg2re6bsGqinFinH1gCqVfz9YYlXiMWwDM4C/L4ywuHFCYwfKTVr/QHQcU0Q==} + engines: {node: '>=18'} + peerDependencies: + c-kzg: ^2.1.2 + peerDependenciesMeta: + c-kzg: + optional: true + dependencies: + '@nomicfoundation/ethereumjs-rlp': 5.0.4 + ethereum-cryptography: 0.1.3 + dev: true + + /@nomicfoundation/hardhat-chai-matchers@1.0.6(@nomiclabs/hardhat-ethers@2.2.3)(chai@4.4.1)(ethers@5.7.2)(hardhat@2.22.0): + resolution: {integrity: sha512-f5ZMNmabZeZegEfuxn/0kW+mm7+yV7VNDxLpMOMGXWFJ2l/Ct3QShujzDRF9cOkK9Ui/hbDeOWGZqyQALDXVCQ==} + peerDependencies: + '@nomiclabs/hardhat-ethers': ^2.0.0 + chai: ^4.2.0 + ethers: ^5.0.0 + hardhat: ^2.9.4 + dependencies: + '@ethersproject/abi': 5.7.0 + '@nomiclabs/hardhat-ethers': 2.2.3(ethers@5.7.2)(hardhat@2.22.0) + '@types/chai-as-promised': 7.1.8 + chai: 4.4.1 + chai-as-promised: 7.1.1(chai@4.4.1) + deep-eql: 4.1.3 + ethers: 5.7.2 + hardhat: 2.22.0(typescript@5.4.2) + ordinal: 1.0.3 + dev: true + + /@nomicfoundation/solidity-analyzer-darwin-arm64@0.1.1: + resolution: {integrity: sha512-KcTodaQw8ivDZyF+D76FokN/HdpgGpfjc/gFCImdLUyqB6eSWVaZPazMbeAjmfhx3R0zm/NYVzxwAokFKgrc0w==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@nomicfoundation/solidity-analyzer-darwin-x64@0.1.1: + resolution: {integrity: sha512-XhQG4BaJE6cIbjAVtzGOGbK3sn1BO9W29uhk9J8y8fZF1DYz0Doj8QDMfpMu+A6TjPDs61lbsmeYodIDnfveSA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@nomicfoundation/solidity-analyzer-freebsd-x64@0.1.1: + resolution: {integrity: sha512-GHF1VKRdHW3G8CndkwdaeLkVBi5A9u2jwtlS7SLhBc8b5U/GcoL39Q+1CSO3hYqePNP+eV5YI7Zgm0ea6kMHoA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@nomicfoundation/solidity-analyzer-linux-arm64-gnu@0.1.1: + resolution: {integrity: sha512-g4Cv2fO37ZsUENQ2vwPnZc2zRenHyAxHcyBjKcjaSmmkKrFr64yvzeNO8S3GBFCo90rfochLs99wFVGT/0owpg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@nomicfoundation/solidity-analyzer-linux-arm64-musl@0.1.1: + resolution: {integrity: sha512-WJ3CE5Oek25OGE3WwzK7oaopY8xMw9Lhb0mlYuJl/maZVo+WtP36XoQTb7bW/i8aAdHW5Z+BqrHMux23pvxG3w==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@nomicfoundation/solidity-analyzer-linux-x64-gnu@0.1.1: + resolution: {integrity: sha512-5WN7leSr5fkUBBjE4f3wKENUy9HQStu7HmWqbtknfXkkil+eNWiBV275IOlpXku7v3uLsXTOKpnnGHJYI2qsdA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@nomicfoundation/solidity-analyzer-linux-x64-musl@0.1.1: + resolution: {integrity: sha512-KdYMkJOq0SYPQMmErv/63CwGwMm5XHenEna9X9aB8mQmhDBrYrlAOSsIPgFCUSL0hjxE3xHP65/EPXR/InD2+w==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@nomicfoundation/solidity-analyzer-win32-arm64-msvc@0.1.1: + resolution: {integrity: sha512-VFZASBfl4qiBYwW5xeY20exWhmv6ww9sWu/krWSesv3q5hA0o1JuzmPHR4LPN6SUZj5vcqci0O6JOL8BPw+APg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@nomicfoundation/solidity-analyzer-win32-ia32-msvc@0.1.1: + resolution: {integrity: sha512-JnFkYuyCSA70j6Si6cS1A9Gh1aHTEb8kOTBApp/c7NRTFGNMH8eaInKlyuuiIbvYFhlXW4LicqyYuWNNq9hkpQ==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@nomicfoundation/solidity-analyzer-win32-x64-msvc@0.1.1: + resolution: {integrity: sha512-HrVJr6+WjIXGnw3Q9u6KQcbZCtk0caVWhCdFADySvRyUxJ8PnzlaP+MhwNE8oyT8OZ6ejHBRrrgjSqDCFXGirw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@nomicfoundation/solidity-analyzer@0.1.1: + resolution: {integrity: sha512-1LMtXj1puAxyFusBgUIy5pZk3073cNXYnXUpuNKFghHbIit/xZgbk0AokpUADbNm3gyD6bFWl3LRFh3dhVdREg==} + engines: {node: '>= 12'} + optionalDependencies: + '@nomicfoundation/solidity-analyzer-darwin-arm64': 0.1.1 + '@nomicfoundation/solidity-analyzer-darwin-x64': 0.1.1 + '@nomicfoundation/solidity-analyzer-freebsd-x64': 0.1.1 + '@nomicfoundation/solidity-analyzer-linux-arm64-gnu': 0.1.1 + '@nomicfoundation/solidity-analyzer-linux-arm64-musl': 0.1.1 + '@nomicfoundation/solidity-analyzer-linux-x64-gnu': 0.1.1 + '@nomicfoundation/solidity-analyzer-linux-x64-musl': 0.1.1 + '@nomicfoundation/solidity-analyzer-win32-arm64-msvc': 0.1.1 + '@nomicfoundation/solidity-analyzer-win32-ia32-msvc': 0.1.1 + '@nomicfoundation/solidity-analyzer-win32-x64-msvc': 0.1.1 + dev: true + + /@nomiclabs/hardhat-ethers@2.2.3(ethers@5.7.2)(hardhat@2.22.0): + resolution: {integrity: sha512-YhzPdzb612X591FOe68q+qXVXGG2ANZRvDo0RRUtimev85rCrAlv/TLMEZw5c+kq9AbzocLTVX/h2jVIFPL9Xg==} + peerDependencies: + ethers: ^5.0.0 + hardhat: ^2.0.0 + dependencies: + ethers: 5.7.2 + hardhat: 2.22.0(typescript@5.4.2) + dev: true + /@npmcli/fs@2.1.2: resolution: {integrity: sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} @@ -3840,10 +4181,26 @@ packages: - zenObservable dev: true + /@scure/base@1.1.3: + resolution: {integrity: sha512-/+SgoRjLq7Xlf0CWuLHq2LUZeL/w65kfzAPG5NH9pcmBhs+nunQTn4gvdwgMTIXnt9b2C/1SeL2XiysZEyIC9Q==} + dev: true + + /@scure/base@1.1.5: + resolution: {integrity: sha512-Brj9FiG2W1MRQSTB212YVPRrcbjkv48FoZi/u4l/zds/ieRrqsh7aUf6CLwkAq61oKXr/ZlTzlY66gLIj3TFTQ==} + dev: true + /@scure/base@1.1.6: resolution: {integrity: sha512-ok9AWwhcgYuGG3Zfhyqg+zwl+Wn5uE+dwC0NV/2qQkx4dABbb/bx96vWu8NSj+BNjjSjno+JRYRjle1jV08k3g==} dev: false + /@scure/bip32@1.1.5: + resolution: {integrity: sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==} + dependencies: + '@noble/hashes': 1.2.0 + '@noble/secp256k1': 1.7.1 + '@scure/base': 1.1.3 + dev: true + /@scure/bip32@1.3.2: resolution: {integrity: sha512-N1ZhksgwD3OBlwTv3R6KFEcPojl/W4ElJOeCZdi+vuI5QmTFwLq3OFf2zd2ROpKvxFdgZ6hUpb0dx9bVNEwYCA==} dependencies: @@ -3852,6 +4209,21 @@ packages: '@scure/base': 1.1.6 dev: false + /@scure/bip32@1.3.3: + resolution: {integrity: sha512-LJaN3HwRbfQK0X1xFSi0Q9amqOgzQnnDngIt+ZlsBC3Bm7/nE7K0kwshZHyaru79yIVRv/e1mQAjZyuZG6jOFQ==} + dependencies: + '@noble/curves': 1.3.0 + '@noble/hashes': 1.3.3 + '@scure/base': 1.1.5 + dev: true + + /@scure/bip39@1.1.1: + resolution: {integrity: sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==} + dependencies: + '@noble/hashes': 1.2.0 + '@scure/base': 1.1.3 + dev: true + /@scure/bip39@1.2.1: resolution: {integrity: sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==} dependencies: @@ -3859,8 +4231,15 @@ packages: '@scure/base': 1.1.6 dev: false - /@sentry-internal/tracing@7.86.0: - resolution: {integrity: sha512-b4dUsNWlPWRwakGwR7bhOkqiFlqQszH1hhVFwrm/8s3kqEBZ+E4CeIfCvuHBHQ1cM/fx55xpXX/BU163cy+3iQ==} + /@scure/bip39@1.2.2: + resolution: {integrity: sha512-HYf9TUXG80beW+hGAt3TRM8wU6pQoYur9iNypTROm42dorCGmLnFe3eWjz3gOq6G62H2WRh0FCzAR1PI+29zIA==} + dependencies: + '@noble/hashes': 1.3.3 + '@scure/base': 1.1.5 + dev: true + + /@sentry-internal/tracing@7.86.0: + resolution: {integrity: sha512-b4dUsNWlPWRwakGwR7bhOkqiFlqQszH1hhVFwrm/8s3kqEBZ+E4CeIfCvuHBHQ1cM/fx55xpXX/BU163cy+3iQ==} engines: {node: '>=8'} dependencies: '@sentry/core': 7.86.0 @@ -3868,6 +4247,17 @@ packages: '@sentry/utils': 7.86.0 dev: false + /@sentry/core@5.30.0: + resolution: {integrity: sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg==} + engines: {node: '>=6'} + dependencies: + '@sentry/hub': 5.30.0 + '@sentry/minimal': 5.30.0 + '@sentry/types': 5.30.0 + '@sentry/utils': 5.30.0 + tslib: 1.14.1 + dev: true + /@sentry/core@7.86.0: resolution: {integrity: sha512-SbLvqd1bRYzhDS42u7GMnmbDMfth/zRiLElQWbLK/shmuZzTcfQSwNNdF4Yj+VfjOkqPFgGmICHSHVUc9dh01g==} engines: {node: '>=8'} @@ -3876,6 +4266,15 @@ packages: '@sentry/utils': 7.86.0 dev: false + /@sentry/hub@5.30.0: + resolution: {integrity: sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ==} + engines: {node: '>=6'} + dependencies: + '@sentry/types': 5.30.0 + '@sentry/utils': 5.30.0 + tslib: 1.14.1 + dev: true + /@sentry/hub@7.86.0: resolution: {integrity: sha512-tS9g+yoD/Zs4OS/gCO4/ccT0m90o3brkCIm/gRzPqI5dq2hEE1qn8bF7HM/vLQARM+bsmTEzPzZy19104U5Btg==} engines: {node: '>=8'} @@ -3885,6 +4284,32 @@ packages: '@sentry/utils': 7.86.0 dev: false + /@sentry/minimal@5.30.0: + resolution: {integrity: sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw==} + engines: {node: '>=6'} + dependencies: + '@sentry/hub': 5.30.0 + '@sentry/types': 5.30.0 + tslib: 1.14.1 + dev: true + + /@sentry/node@5.30.0: + resolution: {integrity: sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg==} + engines: {node: '>=6'} + dependencies: + '@sentry/core': 5.30.0 + '@sentry/hub': 5.30.0 + '@sentry/tracing': 5.30.0 + '@sentry/types': 5.30.0 + '@sentry/utils': 5.30.0 + cookie: 0.4.2 + https-proxy-agent: 5.0.1 + lru_map: 0.3.3 + tslib: 1.14.1 + transitivePeerDependencies: + - supports-color + dev: true + /@sentry/node@7.86.0: resolution: {integrity: sha512-cB1bn/LMn2Km97Y3hv63xwWxT50/G5ixGuSxTZ3dCQM6VDhmZoCuC5NGT3itVvaRd6upQXRZa5W0Zgyh0HXKig==} engines: {node: '>=8'} @@ -3917,11 +4342,35 @@ packages: - supports-color dev: false + /@sentry/tracing@5.30.0: + resolution: {integrity: sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw==} + engines: {node: '>=6'} + dependencies: + '@sentry/hub': 5.30.0 + '@sentry/minimal': 5.30.0 + '@sentry/types': 5.30.0 + '@sentry/utils': 5.30.0 + tslib: 1.14.1 + dev: true + + /@sentry/types@5.30.0: + resolution: {integrity: sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw==} + engines: {node: '>=6'} + dev: true + /@sentry/types@7.86.0: resolution: {integrity: sha512-pGAt0+bMfWgo0KG2epthfNV4Wae03tURpoxNjGo5Fr4cXxvLTSijSAQ6rmmO4bXBJ7+rErEjX30g30o/eEdP9g==} engines: {node: '>=8'} dev: false + /@sentry/utils@5.30.0: + resolution: {integrity: sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww==} + engines: {node: '>=6'} + dependencies: + '@sentry/types': 5.30.0 + tslib: 1.14.1 + dev: true + /@sentry/utils@7.86.0: resolution: {integrity: sha512-6PejFtw9VTFFy5vu0ks+U7Ozkqz+eMt+HN8AZKBKErYzX5/xs0kpkOcSRpu3ETdTYcZf8VAmLVgFgE2BE+3WuQ==} engines: {node: '>=8'} @@ -4402,6 +4851,18 @@ packages: dependencies: '@types/node': 18.15.11 + /@types/bn.js@4.11.6: + resolution: {integrity: sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==} + dependencies: + '@types/node': 18.15.11 + dev: true + + /@types/bn.js@5.1.5: + resolution: {integrity: sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A==} + dependencies: + '@types/node': 18.15.11 + dev: true + /@types/body-parser@1.19.5: resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} dependencies: @@ -4409,6 +4870,12 @@ packages: '@types/node': 18.15.11 dev: true + /@types/chai-as-promised@7.1.8: + resolution: {integrity: sha512-ThlRVIJhr69FLlh6IctTXFkmhtP3NpMZ2QGq69StYLyKZFp/HOp1VdKZj7RvfNWYYcJ1xlbLGLLWj1UvP5u/Gw==} + dependencies: + '@types/chai': 4.3.5 + dev: true + /@types/chai-subset@1.3.3: resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} dependencies: @@ -4562,6 +5029,10 @@ packages: resolution: {integrity: sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==} dev: true + /@types/lru-cache@5.1.1: + resolution: {integrity: sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==} + dev: true + /@types/mime@1.3.5: resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} dev: true @@ -4586,6 +5057,13 @@ packages: resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} dev: true + /@types/node-fetch@2.6.11: + resolution: {integrity: sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==} + dependencies: + '@types/node': 18.15.11 + form-data: 4.0.0 + dev: true + /@types/node@12.20.55: resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} dev: true @@ -4611,6 +5089,12 @@ packages: resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} dev: true + /@types/pbkdf2@3.1.2: + resolution: {integrity: sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew==} + dependencies: + '@types/node': 18.15.11 + dev: true + /@types/prettier@2.7.2: resolution: {integrity: sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==} dev: true @@ -4641,14 +5125,20 @@ packages: csstype: 3.1.2 dev: true - /@types/retry@0.12.1: - resolution: {integrity: sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==} + /@types/retry@0.12.0: + resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} dev: false /@types/scheduler@0.16.3: resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==} dev: true + /@types/secp256k1@4.0.6: + resolution: {integrity: sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ==} + dependencies: + '@types/node': 18.15.11 + dev: true + /@types/semver@6.2.3: resolution: {integrity: sha512-KQf+QAMWKMrtBMsB8/24w53tEsxllMj6TuA80TT/5igJalLI/zm0L3oXRbIAl4Ohfc85gyHX/jhMwsVkmhLU4A==} dev: true @@ -4743,7 +5233,7 @@ packages: '@typescript-eslint/type-utils': 7.1.1(eslint@8.57.0)(typescript@5.4.2) '@typescript-eslint/utils': 7.1.1(eslint@8.57.0)(typescript@5.4.2) '@typescript-eslint/visitor-keys': 7.1.1 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) eslint: 8.57.0 graphemer: 1.4.0 ignore: 5.2.4 @@ -4769,7 +5259,7 @@ packages: '@typescript-eslint/types': 7.1.1 '@typescript-eslint/typescript-estree': 7.1.1(typescript@5.4.2) '@typescript-eslint/visitor-keys': 7.1.1 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) eslint: 8.57.0 typescript: 5.4.2 transitivePeerDependencies: @@ -4796,7 +5286,7 @@ packages: dependencies: '@typescript-eslint/typescript-estree': 7.1.1(typescript@5.4.2) '@typescript-eslint/utils': 7.1.1(eslint@8.57.0)(typescript@5.4.2) - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) eslint: 8.57.0 ts-api-utils: 1.2.1(typescript@5.4.2) typescript: 5.4.2 @@ -4820,7 +5310,7 @@ packages: dependencies: '@typescript-eslint/types': 7.1.1 '@typescript-eslint/visitor-keys': 7.1.1 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.3 @@ -4875,7 +5365,7 @@ packages: /@typescript/vfs@1.5.0: resolution: {integrity: sha512-AJS307bPgbsZZ9ggCT3wwpg3VbTKMFNHfaY/uF0ahSkYYrPF2dSSKDNIDIQAHm9qJqbLvCsSJH7yN4Vs/CsMMg==} dependencies: - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) transitivePeerDependencies: - supports-color dev: true @@ -4958,6 +5448,10 @@ packages: resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} dev: false + /abdk-libraries-solidity@3.2.0: + resolution: {integrity: sha512-JyedKxyqsszb9qCTX+YCOQHA4m0YAq9p77Qvumiy8LJLLrm1FfA9D3pdSAZN5wrmi3PSv0y3Svy8c/C+8S9K8g==} + dev: false + /abind@1.0.5: resolution: {integrity: sha512-dbaEZphdPje0ihqSdWg36Sb8S20TuqQomiz2593oIx+enQ9Q4vDZRjIzhnkWltGRKVKqC28kTribkgRLBexWVQ==} engines: {node: '>=6', npm: '>=3'} @@ -5034,15 +5528,19 @@ packages: hasBin: true dev: true + /adm-zip@0.4.16: + resolution: {integrity: sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==} + engines: {node: '>=0.3.0'} + dev: true + /aes-js@3.0.0: resolution: {integrity: sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==} - dev: false /agent-base@6.0.2: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} dependencies: - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -5059,7 +5557,6 @@ packages: dependencies: clean-stack: 2.2.0 indent-string: 4.0.0 - dev: false /ajv-formats@2.1.1(ajv@8.12.0): resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} @@ -5090,6 +5587,17 @@ packages: uri-js: 4.4.1 dev: false + /ansi-align@3.0.1: + resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} + dependencies: + string-width: 4.2.3 + dev: true + + /ansi-colors@4.1.1: + resolution: {integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==} + engines: {node: '>=6'} + dev: true + /ansi-colors@4.1.3: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} engines: {node: '>=6'} @@ -5123,11 +5631,6 @@ packages: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - /ansi-regex@6.0.1: - resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} - engines: {node: '>=12'} - dev: false - /ansi-styles@2.2.1: resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==} engines: {node: '>=0.10.0'} @@ -5310,6 +5813,15 @@ packages: safer-buffer: 2.1.2 dev: false + /assemblyscript@0.21.7: + resolution: {integrity: sha512-GPKavCMUVZbrU31KTBMtnsRZa9pPN10ApfkPGNdL70Qpu/rORbTCte/37dnIUnQdXHm+5vHmG+iGRWmwJO5hvA==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + hasBin: true + dependencies: + binaryen: 110.0.0-nightly.20221006 + long: 5.2.1 + dev: true + /assertion-error@1.1.0: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} dev: true @@ -5364,7 +5876,7 @@ packages: resolution: {integrity: sha512-TAlMYvOuwGyLK3PfBb5WKBXZmXz2fVCgv23d6zZFdle/q3gPjmxBaeuC0pY0Dzs5PWMSgfqqEZkrye19GlDTgw==} dependencies: archy: 1.0.0 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) fastq: 1.15.0 transitivePeerDependencies: - supports-color @@ -5452,13 +5964,18 @@ packages: /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + /base-x@3.0.9: + resolution: {integrity: sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==} + dependencies: + safe-buffer: 5.2.1 + dev: true + /base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} dev: false /bech32@1.1.4: resolution: {integrity: sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==} - dev: false /better-path-resolve@1.0.0: resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} @@ -5479,6 +5996,11 @@ packages: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} + /binaryen@110.0.0-nightly.20221006: + resolution: {integrity: sha512-yC7ZLoaZmXhm5cB0+g3rZkz5ujPSlhX+FEQtgaQHVxcL78D8cTXdRSdajhgQD345BVPsooOrSxqhX6tnULgBWg==} + hasBin: true + dev: true + /bindings@1.5.0: resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} dependencies: @@ -5497,18 +6019,38 @@ packages: readable-stream: 3.6.0 dev: false + /blakejs@1.2.1: + resolution: {integrity: sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==} + dev: true + + /bn.js@4.11.6: + resolution: {integrity: sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==} + dev: true + /bn.js@4.12.0: resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==} - dev: false /bn.js@5.2.1: resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} - dev: false /bowser@2.11.0: resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==} dev: false + /boxen@5.1.2: + resolution: {integrity: sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==} + engines: {node: '>=10'} + dependencies: + ansi-align: 3.0.1 + camelcase: 6.3.0 + chalk: 4.1.2 + cli-boxes: 2.2.1 + string-width: 4.2.3 + type-fest: 0.20.2 + widest-line: 3.1.0 + wrap-ansi: 7.0.0 + dev: true + /brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: @@ -5534,12 +6076,26 @@ packages: /brorand@1.1.0: resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} - dev: false /browser-headers@0.4.1: resolution: {integrity: sha512-CA9hsySZVo9371qEHjHZtYxV2cFtVj5Wj/ZHi8ooEsrtm4vOnl9Y9HmyYWk9q+05d7K3rdoAE0j3MVEFVvtQtg==} dev: false + /browser-stdout@1.3.1: + resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} + dev: true + + /browserify-aes@1.2.0: + resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} + dependencies: + buffer-xor: 1.0.3 + cipher-base: 1.0.4 + create-hash: 1.2.0 + evp_bytestokey: 1.0.3 + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true + /browserslist@4.23.0: resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -5558,6 +6114,20 @@ packages: fast-json-stable-stringify: 2.1.0 dev: true + /bs58@4.0.1: + resolution: {integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==} + dependencies: + base-x: 3.0.9 + dev: true + + /bs58check@2.1.2: + resolution: {integrity: sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==} + dependencies: + bs58: 4.0.1 + create-hash: 1.2.0 + safe-buffer: 5.2.1 + dev: true + /bser@2.1.1: resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} dependencies: @@ -5567,6 +6137,14 @@ packages: /buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + /buffer-lite@1.1.0: + resolution: {integrity: sha512-oU0QAzHknj4a3PNzTznNUN61r6OdAqqJJdzTm422yyIM3QyK5/7zi8wPVFooCwoPKk90ybCm9qnvkk+tsQt5sg==} + dev: true + + /buffer-xor@1.0.3: + resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} + dev: true + /buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} dependencies: @@ -5606,6 +6184,11 @@ packages: load-tsconfig: 0.2.5 dev: true + /bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + dev: true + /cac@6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} @@ -5708,6 +6291,15 @@ packages: engines: {node: '>=12.13'} dev: true + /chai-as-promised@7.1.1(chai@4.4.1): + resolution: {integrity: sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==} + peerDependencies: + chai: '>= 2.1.2 < 5' + dependencies: + chai: 4.4.1 + check-error: 1.0.3 + dev: true + /chai@4.4.1: resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==} engines: {node: '>=4'} @@ -5756,15 +6348,6 @@ packages: ansi-styles: 4.3.0 supports-color: 7.2.0 - /chalk@5.2.0: - resolution: {integrity: sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - - /chalk@5.3.0: - resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - dev: false - /change-case@5.2.0: resolution: {integrity: sha512-L6VzznESnMIKKdKhVzCG+KPz4+x1FWbjOs1AdhoHStV3qo8aySMRGPUoqC0aL1ThKaQNGhAu6ZfHL/QAyQRuiw==} dev: false @@ -5806,11 +6389,22 @@ packages: engines: {node: '>=10'} dev: false + /ci-info@2.0.0: + resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} + dev: true + /ci-info@3.8.0: resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} engines: {node: '>=8'} dev: true + /cipher-base@1.0.4: + resolution: {integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==} + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true + /cjs-module-lexer@1.2.2: resolution: {integrity: sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==} dev: true @@ -5818,7 +6412,11 @@ packages: /clean-stack@2.2.0: resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} engines: {node: '>=6'} - dev: false + + /cli-boxes@2.2.1: + resolution: {integrity: sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==} + engines: {node: '>=6'} + dev: true /cli-color@1.4.0: resolution: {integrity: sha512-xu6RvQqqrWEo6MPR1eixqGPywhYBHRs653F9jfXB2Hx4jdM/3WxiNE1vppRmxtMIfl16SFYTpYlrnqH/HsK/2w==} @@ -5941,10 +6539,18 @@ packages: delayed-stream: 1.0.0 dev: true + /command-exists@1.2.9: + resolution: {integrity: sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==} + dev: true + /commander@2.18.0: resolution: {integrity: sha512-6CYPa+JP2ftfRU2qkDK+UTVeQYosOg/2GbcjIcKPHfinyOLPVGXu/ovN86RP49Re5ndJK1N0kuiidFFuepc4ZQ==} dev: true + /commander@3.0.2: + resolution: {integrity: sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==} + dev: true + /commander@4.1.1: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} engines: {node: '>= 6'} @@ -5993,6 +6599,11 @@ packages: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} dev: true + /cookie@0.4.2: + resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} + engines: {node: '>= 0.6'} + dev: true + /cookie@0.5.0: resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} engines: {node: '>= 0.6'} @@ -6044,6 +6655,27 @@ packages: yaml: 1.10.2 dev: true + /create-hash@1.2.0: + resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} + dependencies: + cipher-base: 1.0.4 + inherits: 2.0.4 + md5.js: 1.3.5 + ripemd160: 2.0.2 + sha.js: 2.4.11 + dev: true + + /create-hmac@1.1.7: + resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==} + dependencies: + cipher-base: 1.0.4 + create-hash: 1.2.0 + inherits: 2.0.4 + ripemd160: 2.0.2 + safe-buffer: 5.2.1 + sha.js: 2.4.11 + dev: true + /cross-spawn@5.1.0: resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} dependencies: @@ -6141,7 +6773,7 @@ packages: '@babel/runtime': 7.21.0 dev: true - /debug@4.3.4: + /debug@4.3.4(supports-color@8.1.1): resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} peerDependencies: @@ -6151,6 +6783,7 @@ packages: optional: true dependencies: ms: 2.1.2 + supports-color: 8.1.1 /decamelize-keys@1.1.1: resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} @@ -6164,6 +6797,11 @@ packages: resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} engines: {node: '>=0.10.0'} + /decamelize@4.0.0: + resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} + engines: {node: '>=10'} + dev: true + /decimal.js@10.4.3: resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} dev: true @@ -6235,7 +6873,6 @@ packages: /depd@2.0.0: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} - dev: false /destroy@1.2.0: resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} @@ -6277,6 +6914,11 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true + /diff@5.0.0: + resolution: {integrity: sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==} + engines: {node: '>=0.3.1'} + dev: true + /dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} @@ -6501,7 +7143,6 @@ packages: inherits: 2.0.4 minimalistic-assert: 1.0.1 minimalistic-crypto-utils: 1.0.1 - dev: false /emittery@0.13.1: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} @@ -6547,7 +7188,6 @@ packages: /env-paths@2.2.1: resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} engines: {node: '>=6'} - dev: false /envinfo@7.8.1: resolution: {integrity: sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==} @@ -6818,7 +7458,7 @@ packages: ajv: 6.12.6 chalk: 2.4.2 cross-spawn: 6.0.5 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) doctrine: 3.0.0 eslint-scope: 4.0.3 eslint-utils: 1.4.3 @@ -6870,7 +7510,7 @@ packages: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.2 @@ -6954,6 +7594,69 @@ packages: engines: {node: '>=0.10.0'} dev: true + /ethereum-bloom-filters@1.0.10: + resolution: {integrity: sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA==} + dependencies: + js-sha3: 0.8.0 + dev: true + + /ethereum-cryptography@0.1.3: + resolution: {integrity: sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==} + dependencies: + '@types/pbkdf2': 3.1.2 + '@types/secp256k1': 4.0.6 + blakejs: 1.2.1 + browserify-aes: 1.2.0 + bs58check: 2.1.2 + create-hash: 1.2.0 + create-hmac: 1.1.7 + hash.js: 1.1.7 + keccak: 3.0.4 + pbkdf2: 3.1.2 + randombytes: 2.1.0 + safe-buffer: 5.2.1 + scrypt-js: 3.0.1 + secp256k1: 4.0.3 + setimmediate: 1.0.5 + dev: true + + /ethereum-cryptography@1.2.0: + resolution: {integrity: sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==} + dependencies: + '@noble/hashes': 1.2.0 + '@noble/secp256k1': 1.7.1 + '@scure/bip32': 1.1.5 + '@scure/bip39': 1.1.1 + dev: true + + /ethereum-cryptography@2.1.3: + resolution: {integrity: sha512-BlwbIL7/P45W8FGW2r7LGuvoEZ+7PWsniMvQ4p5s2xCyw9tmaDlpfsN9HjAucbF+t/qpVHwZUisgfK24TCW8aA==} + dependencies: + '@noble/curves': 1.3.0 + '@noble/hashes': 1.3.3 + '@scure/bip32': 1.3.3 + '@scure/bip39': 1.2.2 + dev: true + + /ethereumjs-abi@0.6.8: + resolution: {integrity: sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==} + dependencies: + bn.js: 4.12.0 + ethereumjs-util: 6.2.1 + dev: true + + /ethereumjs-util@6.2.1: + resolution: {integrity: sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==} + dependencies: + '@types/bn.js': 4.11.6 + bn.js: 4.12.0 + create-hash: 1.2.0 + elliptic: 6.5.4 + ethereum-cryptography: 0.1.3 + ethjs-util: 0.1.6 + rlp: 2.2.7 + dev: true + /ethers@5.7.2: resolution: {integrity: sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==} dependencies: @@ -6990,7 +7693,22 @@ packages: transitivePeerDependencies: - bufferutil - utf-8-validate - dev: false + + /ethjs-unit@0.1.6: + resolution: {integrity: sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==} + engines: {node: '>=6.5.0', npm: '>=3'} + dependencies: + bn.js: 4.11.6 + number-to-bn: 1.7.0 + dev: true + + /ethjs-util@0.1.6: + resolution: {integrity: sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==} + engines: {node: '>=6.5.0', npm: '>=3'} + dependencies: + is-hex-prefixed: 1.0.0 + strip-hex-prefix: 1.0.0 + dev: true /event-emitter@0.3.5: resolution: {integrity: sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==} @@ -7006,7 +7724,6 @@ packages: /eventemitter3@4.0.7: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} - dev: true /eventemitter3@5.0.1: resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} @@ -7017,6 +7734,13 @@ packages: engines: {node: '>=0.8.x'} dev: false + /evp_bytestokey@1.0.3: + resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} + dependencies: + md5.js: 1.3.5 + safe-buffer: 5.2.1 + dev: true + /execa@3.4.0: resolution: {integrity: sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g==} engines: {node: ^8.12.0 || >=9.7.0} @@ -7047,20 +7771,6 @@ packages: signal-exit: 3.0.7 strip-final-newline: 2.0.0 - /execa@7.0.0: - resolution: {integrity: sha512-tQbH0pH/8LHTnwTrsKWideqi6rFB/QNUawEwrn+WHyz7PX1Tuz2u7wfTvbaNBdP5JD5LVWxNo8/A8CHNZ3bV6g==} - engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} - dependencies: - cross-spawn: 7.0.3 - get-stream: 6.0.1 - human-signals: 4.3.1 - is-stream: 3.0.0 - merge-stream: 2.0.0 - npm-run-path: 5.1.0 - onetime: 6.0.0 - signal-exit: 3.0.7 - strip-final-newline: 3.0.0 - /execa@7.2.0: resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} @@ -7298,6 +8008,13 @@ packages: safe-regex2: 2.0.0 dev: false + /find-up@2.1.0: + resolution: {integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==} + engines: {node: '>=4'} + dependencies: + locate-path: 2.0.0 + dev: true + /find-up@3.0.0: resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} engines: {node: '>=6'} @@ -7319,15 +8036,6 @@ packages: dependencies: locate-path: 6.0.0 path-exists: 4.0.0 - dev: true - - /find-up@6.3.0: - resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - locate-path: 7.2.0 - path-exists: 5.0.0 - dev: false /find-yarn-workspace-root2@1.2.16: resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} @@ -7358,6 +8066,11 @@ packages: rimraf: 3.0.2 dev: true + /flat@5.0.2: + resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} + hasBin: true + dev: true + /flatted@2.0.2: resolution: {integrity: sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==} dev: true @@ -7375,7 +8088,7 @@ packages: debug: optional: true dependencies: - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) dev: true /form-data@4.0.0: @@ -7392,6 +8105,10 @@ packages: engines: {node: '>= 0.6'} dev: false + /fp-ts@1.19.3: + resolution: {integrity: sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==} + dev: true + /fraction.js@4.2.0: resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==} dev: true @@ -7412,6 +8129,16 @@ packages: resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} dev: false + /fs-extra@0.30.0: + resolution: {integrity: sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA==} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 2.4.0 + klaw: 1.3.1 + path-is-absolute: 1.0.1 + rimraf: 2.6.3 + dev: true + /fs-extra@7.0.1: resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} engines: {node: '>=6 <7 || >=8'} @@ -7492,10 +8219,6 @@ packages: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} - /get-func-name@2.0.0: - resolution: {integrity: sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==} - dev: true - /get-func-name@2.0.2: resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} dev: true @@ -7586,6 +8309,17 @@ packages: path-is-absolute: 1.0.1 dev: true + /glob@7.2.0: + resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + /glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} dependencies: @@ -7606,6 +8340,17 @@ packages: minimatch: 5.1.6 once: 1.4.0 + /glob@8.1.0: + resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} + engines: {node: '>=12'} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 5.1.6 + once: 1.4.0 + dev: true + /globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} @@ -7669,6 +8414,69 @@ packages: engines: {node: '>=6'} dev: true + /hardhat@2.22.0(typescript@5.4.2): + resolution: {integrity: sha512-t1J+ThxNYANL6ub6yM5XC84RY38vhfG7ODBtVRNQFQozdALo3qZUjxDzyGQU0U0eswe6orK49hq9UpdB7nPXNQ==} + hasBin: true + peerDependencies: + ts-node: '*' + typescript: '*' + peerDependenciesMeta: + ts-node: + optional: true + typescript: + optional: true + dependencies: + '@ethersproject/abi': 5.7.0 + '@metamask/eth-sig-util': 4.0.1 + '@nomicfoundation/edr': 0.3.0 + '@nomicfoundation/ethereumjs-common': 4.0.4 + '@nomicfoundation/ethereumjs-tx': 5.0.4 + '@nomicfoundation/ethereumjs-util': 9.0.4 + '@nomicfoundation/solidity-analyzer': 0.1.1 + '@sentry/node': 5.30.0 + '@types/bn.js': 5.1.5 + '@types/lru-cache': 5.1.1 + adm-zip: 0.4.16 + aggregate-error: 3.1.0 + ansi-escapes: 4.3.2 + boxen: 5.1.2 + chalk: 2.4.2 + chokidar: 3.5.3 + ci-info: 2.0.0 + debug: 4.3.4(supports-color@8.1.1) + enquirer: 2.3.6 + env-paths: 2.2.1 + ethereum-cryptography: 1.2.0 + ethereumjs-abi: 0.6.8 + find-up: 2.1.0 + fp-ts: 1.19.3 + fs-extra: 7.0.1 + glob: 7.2.0 + immutable: 4.3.5 + io-ts: 1.10.4 + keccak: 3.0.4 + lodash: 4.17.21 + mnemonist: 0.38.5 + mocha: 10.3.0 + p-map: 4.0.0 + raw-body: 2.5.2 + resolve: 1.17.0 + semver: 6.3.0 + solc: 0.7.3(debug@4.3.4) + source-map-support: 0.5.21 + stacktrace-parser: 0.1.10 + tsort: 0.0.1 + typescript: 5.4.2 + undici: 5.28.3 + uuid: 8.3.2 + ws: 7.4.6 + transitivePeerDependencies: + - bufferutil + - c-kzg + - supports-color + - utf-8-validate + dev: true + /has-ansi@2.0.0: resolution: {integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==} engines: {node: '>=0.10.0'} @@ -7723,12 +8531,25 @@ packages: async: 1.5.2 dev: false + /hash-base@3.1.0: + resolution: {integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==} + engines: {node: '>=4'} + dependencies: + inherits: 2.0.4 + readable-stream: 3.6.0 + safe-buffer: 5.2.1 + dev: true + /hash.js@1.1.7: resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} dependencies: inherits: 2.0.4 minimalistic-assert: 1.0.1 - dev: false + + /he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + dev: true /hmac-drbg@1.0.1: resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} @@ -7736,7 +8557,6 @@ packages: hash.js: 1.1.7 minimalistic-assert: 1.0.1 minimalistic-crypto-utils: 1.0.1 - dev: false /hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} @@ -7785,7 +8605,6 @@ packages: setprototypeof: 1.2.0 statuses: 2.0.1 toidentifier: 1.0.1 - dev: false /http-proxy-agent@5.0.0: resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} @@ -7793,7 +8612,7 @@ packages: dependencies: '@tootallnate/once': 2.0.0 agent-base: 6.0.2 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -7813,7 +8632,7 @@ packages: engines: {node: '>= 6'} dependencies: agent-base: 6.0.2 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -7833,6 +8652,7 @@ packages: /human-signals@4.3.1: resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} engines: {node: '>=14.18.0'} + dev: true /humanize-ms@1.2.1: resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} @@ -7882,6 +8702,10 @@ packages: resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} engines: {node: '>= 4'} + /immutable@4.3.5: + resolution: {integrity: sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==} + dev: true + /import-fresh@2.0.0: resolution: {integrity: sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==} engines: {node: '>=4'} @@ -7996,6 +8820,12 @@ packages: p-is-promise: 3.0.0 dev: false + /io-ts@1.10.4: + resolution: {integrity: sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g==} + dependencies: + fp-ts: 1.19.3 + dev: true + /ip@2.0.0: resolution: {integrity: sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==} dev: false @@ -8096,6 +8926,11 @@ packages: dependencies: is-extglob: 2.1.1 + /is-hex-prefixed@1.0.0: + resolution: {integrity: sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==} + engines: {node: '>=6.5.0', npm: '>=3'} + dev: true + /is-lambda@1.0.1: resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} dev: false @@ -8138,6 +8973,11 @@ packages: engines: {node: '>=0.10.0'} dev: true + /is-plain-obj@2.1.0: + resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} + engines: {node: '>=8'} + dev: true + /is-potential-custom-element-name@1.0.1: resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} dev: true @@ -8176,6 +9016,7 @@ packages: /is-stream@3.0.0: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true /is-string@1.0.7: resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} @@ -8198,6 +9039,11 @@ packages: has-symbols: 1.0.3 dev: true + /is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + dev: true + /is-utf8@0.2.1: resolution: {integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==} dev: false @@ -8264,7 +9110,7 @@ packages: resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} dependencies: - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) istanbul-lib-coverage: 3.2.0 source-map: 0.6.1 transitivePeerDependencies: @@ -8739,7 +9585,6 @@ packages: /js-sha3@0.8.0: resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} - dev: false /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -8833,6 +9678,12 @@ packages: resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} dev: true + /jsonfile@2.4.0: + resolution: {integrity: sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==} + optionalDependencies: + graceful-fs: 4.2.11 + dev: true + /jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} optionalDependencies: @@ -8861,6 +9712,25 @@ packages: object.assign: 4.1.4 dev: true + /keccak-wasm@0.10.3(buffer-lite@1.1.0): + resolution: {integrity: sha512-HMbeV9BX+hGmrPk5C1PdZBPAGIAVyGzKywQt4OnU9cG+7sI1/moZmH7DXRd3XQBhR6z04LdMXkA15roVINmMsA==} + requiresBuild: true + peerDependencies: + buffer-lite: ^1.0.0 + dependencies: + buffer-lite: 1.1.0 + dev: true + + /keccak@3.0.4: + resolution: {integrity: sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==} + engines: {node: '>=10.0.0'} + requiresBuild: true + dependencies: + node-addon-api: 2.0.2 + node-gyp-build: 4.8.0 + readable-stream: 3.6.0 + dev: true + /keygrip@1.1.0: resolution: {integrity: sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==} engines: {node: '>= 0.6'} @@ -8873,6 +9743,12 @@ packages: engines: {node: '>=0.10.0'} dev: true + /klaw@1.3.1: + resolution: {integrity: sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==} + optionalDependencies: + graceful-fs: 4.2.11 + dev: true + /kleur@3.0.3: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} engines: {node: '>=6'} @@ -8904,7 +9780,7 @@ packages: content-disposition: 0.5.4 content-type: 1.0.5 cookies: 0.8.0 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) delegates: 1.0.0 depd: 2.0.0 destroy: 1.2.0 @@ -8983,7 +9859,7 @@ packages: chalk: 3.0.0 commander: 4.1.1 cosmiconfig: 6.0.0 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) dedent: 0.7.0 execa: 3.4.0 listr: 0.14.3 @@ -9068,6 +9944,14 @@ packages: engines: {node: '>=14'} dev: true + /locate-path@2.0.0: + resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==} + engines: {node: '>=4'} + dependencies: + p-locate: 2.0.0 + path-exists: 3.0.0 + dev: true + /locate-path@3.0.0: resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} engines: {node: '>=6'} @@ -9088,14 +9972,6 @@ packages: engines: {node: '>=10'} dependencies: p-locate: 5.0.0 - dev: true - - /locate-path@7.2.0: - resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - p-locate: 6.0.0 - dev: false /lodash.get@4.4.2: resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} @@ -9138,6 +10014,14 @@ packages: chalk: 2.4.2 dev: true + /log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + dev: true + /log-update@2.3.0: resolution: {integrity: sha512-vlP11XfFGyeNQlmEn9tJ66rEW1coA/79m5z6BCkudjbAGE83uhAcGYrBFwfs3AdLiLzGRusRPAbSPK9xZteCmg==} engines: {node: '>=4'} @@ -9153,7 +10037,6 @@ packages: /long@5.2.1: resolution: {integrity: sha512-GKSNGeNAtw8IryjjkhZxuKB3JzlcLTwjtiQCHKvqQet81I93kXslhDQruGI/QsddO83mcDToBVy7GqGS/zYf/A==} - dev: false /loose-envify@1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} @@ -9165,7 +10048,7 @@ packages: resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==} deprecated: Please upgrade to 2.3.7 which fixes GHSA-4q6p-r6v2-jvc5 dependencies: - get-func-name: 2.0.0 + get-func-name: 2.0.2 dev: true /lru-cache@4.1.5: @@ -9198,6 +10081,10 @@ packages: es5-ext: 0.10.62 dev: false + /lru_map@0.3.3: + resolution: {integrity: sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==} + dev: true + /magic-string@0.30.5: resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} engines: {node: '>=12'} @@ -9257,6 +10144,14 @@ packages: engines: {node: '>=8'} dev: true + /md5.js@1.3.5: + resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} + dependencies: + hash-base: 3.1.0 + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true + /media-typer@0.3.0: resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} engines: {node: '>= 0.6'} @@ -9275,6 +10170,11 @@ packages: timers-ext: 0.1.7 dev: false + /memorystream@0.3.1: + resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} + engines: {node: '>= 0.10.0'} + dev: true + /meow@6.1.1: resolution: {integrity: sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==} engines: {node: '>=8'} @@ -9304,6 +10204,10 @@ packages: engines: {node: '>= 0.6'} dev: false + /micro-ftch@0.3.1: + resolution: {integrity: sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==} + dev: true + /micromatch@4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} @@ -9333,6 +10237,7 @@ packages: /mimic-fn@4.0.0: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} engines: {node: '>=12'} + dev: true /mimic-response@3.1.0: resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} @@ -9346,17 +10251,22 @@ packages: /minimalistic-assert@1.0.1: resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} - dev: false /minimalistic-crypto-utils@1.0.1: resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} - dev: false /minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 + /minimatch@5.0.1: + resolution: {integrity: sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 2.0.1 + dev: true + /minimatch@5.1.6: resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} engines: {node: '>=10'} @@ -9477,6 +10387,12 @@ packages: ufo: 1.3.2 dev: true + /mnemonist@0.38.5: + resolution: {integrity: sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==} + dependencies: + obliterator: 2.0.4 + dev: true + /mnemonist@0.39.5: resolution: {integrity: sha512-FPUtkhtJ0efmEFGpU14x7jGbTB+s18LrzRL2KgoWz9YvcY3cPomz8tih01GbHwnGk/OmkOKfqd/RAQoc8Lm7DQ==} dependencies: @@ -9487,12 +10403,38 @@ packages: resolution: {integrity: sha512-HdKewQEREEJgsWnErClfbFoVebze6rGazxFLU/XUyrII8dORfVszN1V0BMRnQSzcgsNNtkX8DHj3nC6cdWE9YQ==} dev: false + /mocha@10.3.0: + resolution: {integrity: sha512-uF2XJs+7xSLsrmIvn37i/wnc91nw7XjOQB8ccyx5aEgdnohr7n+rEiZP23WkCYHjilR6+EboEnbq/ZQDz4LSbg==} + engines: {node: '>= 14.0.0'} + hasBin: true + dependencies: + ansi-colors: 4.1.1 + browser-stdout: 1.3.1 + chokidar: 3.5.3 + debug: 4.3.4(supports-color@8.1.1) + diff: 5.0.0 + escape-string-regexp: 4.0.0 + find-up: 5.0.0 + glob: 8.1.0 + he: 1.2.0 + js-yaml: 4.1.0 + log-symbols: 4.1.0 + minimatch: 5.0.1 + ms: 2.1.3 + serialize-javascript: 6.0.0 + strip-json-comments: 3.1.1 + supports-color: 8.1.1 + workerpool: 6.2.1 + yargs: 16.2.0 + yargs-parser: 20.2.4 + yargs-unparser: 2.0.0 + dev: true + /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} /ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - dev: false /mute-stream@0.0.7: resolution: {integrity: sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==} @@ -9572,6 +10514,10 @@ packages: semver: 7.5.0 dev: false + /node-addon-api@2.0.2: + resolution: {integrity: sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==} + dev: true + /node-fetch@2.6.9: resolution: {integrity: sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==} engines: {node: 4.x || >=6.0.0} @@ -9584,6 +10530,11 @@ packages: whatwg-url: 5.0.0 dev: false + /node-gyp-build@4.8.0: + resolution: {integrity: sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==} + hasBin: true + dev: true + /node-gyp@9.4.1: resolution: {integrity: sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ==} engines: {node: ^12.13 || ^14.13 || >=16} @@ -9650,6 +10601,7 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: path-key: 4.0.0 + dev: true /npmlog@6.0.2: resolution: {integrity: sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==} @@ -9666,6 +10618,14 @@ packages: engines: {node: '>=0.10.0'} dev: true + /number-to-bn@1.7.0: + resolution: {integrity: sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==} + engines: {node: '>=6.5.0', npm: '>=3'} + dependencies: + bn.js: 4.11.6 + strip-hex-prefix: 1.0.0 + dev: true + /nwsapi@2.2.7: resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==} dev: true @@ -9749,7 +10709,6 @@ packages: /obliterator@2.0.4: resolution: {integrity: sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==} - dev: false /on-exit-leak-free@2.1.0: resolution: {integrity: sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w==} @@ -9785,6 +10744,7 @@ packages: engines: {node: '>=12'} dependencies: mimic-fn: 4.0.0 + dev: true /only@0.0.2: resolution: {integrity: sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==} @@ -9818,6 +10778,10 @@ packages: type-check: 0.4.0 dev: true + /ordinal@1.0.3: + resolution: {integrity: sha512-cMddMgb2QElm8G7vdaa02jhUNbTSrhsgAGUz1OokD83uJTwSUn+nKoNoKVVaRa08yF6sgfO7Maou1+bgLd9rdQ==} + dev: true + /os-tmpdir@1.0.2: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} @@ -9833,6 +10797,11 @@ packages: p-map: 2.1.0 dev: true + /p-finally@1.0.0: + resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} + engines: {node: '>=4'} + dev: false + /p-finally@2.0.1: resolution: {integrity: sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==} engines: {node: '>=8'} @@ -9843,6 +10812,13 @@ packages: engines: {node: '>=8'} dev: false + /p-limit@1.3.0: + resolution: {integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==} + engines: {node: '>=4'} + dependencies: + p-try: 1.0.0 + dev: true + /p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} @@ -9854,13 +10830,20 @@ packages: engines: {node: '>=10'} dependencies: yocto-queue: 0.1.0 - dev: true /p-limit@4.0.0: resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: yocto-queue: 1.0.0 + dev: true + + /p-locate@2.0.0: + resolution: {integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==} + engines: {node: '>=4'} + dependencies: + p-limit: 1.3.0 + dev: true /p-locate@3.0.0: resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} @@ -9881,14 +10864,6 @@ packages: engines: {node: '>=10'} dependencies: p-limit: 3.1.0 - dev: true - - /p-locate@6.0.0: - resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - p-limit: 4.0.0 - dev: false /p-map@2.1.0: resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} @@ -9900,6 +10875,13 @@ packages: engines: {node: '>=10'} dependencies: aggregate-error: 3.1.0 + + /p-queue@6.6.2: + resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==} + engines: {node: '>=8'} + dependencies: + eventemitter3: 4.0.7 + p-timeout: 3.2.0 dev: false /p-queue@7.4.1: @@ -9910,19 +10892,31 @@ packages: p-timeout: 5.1.0 dev: false - /p-retry@5.1.2: - resolution: {integrity: sha512-couX95waDu98NfNZV+i/iLt+fdVxmI7CbrrdC2uDWfPdUAApyxT4wmDlyOtR5KtTDmkDO0zDScDjDou9YHhd9g==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + /p-retry@4.6.2: + resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} + engines: {node: '>=8'} dependencies: - '@types/retry': 0.12.1 + '@types/retry': 0.12.0 retry: 0.13.1 dev: false + /p-timeout@3.2.0: + resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} + engines: {node: '>=8'} + dependencies: + p-finally: 1.0.0 + dev: false + /p-timeout@5.1.0: resolution: {integrity: sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew==} engines: {node: '>=12'} dev: false + /p-try@1.0.0: + resolution: {integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==} + engines: {node: '>=4'} + dev: true + /p-try@2.2.0: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} @@ -9966,17 +10960,10 @@ packages: /path-exists@3.0.0: resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} engines: {node: '>=4'} - dev: false /path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} - dev: true - - /path-exists@5.0.0: - resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: false /path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} @@ -9998,6 +10985,7 @@ packages: /path-key@4.0.0: resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} engines: {node: '>=12'} + dev: true /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} @@ -10026,6 +11014,17 @@ packages: resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} dev: true + /pbkdf2@3.1.2: + resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==} + engines: {node: '>=0.12'} + dependencies: + create-hash: 1.2.0 + create-hmac: 1.1.7 + ripemd160: 2.0.2 + safe-buffer: 5.2.1 + sha.js: 2.4.11 + dev: true + /peek-stream@1.1.3: resolution: {integrity: sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA==} dependencies: @@ -10452,6 +11451,22 @@ packages: engines: {node: '>=8'} dev: true + /randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /raw-body@2.5.2: + resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} + engines: {node: '>= 0.8'} + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + dev: true + /rc@1.2.8: resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} hasBin: true @@ -10662,7 +11677,6 @@ packages: /require-from-string@2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} - dev: false /require-main-filename@2.0.0: resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} @@ -10698,6 +11712,12 @@ packages: engines: {node: '>=10'} dev: true + /resolve@1.17.0: + resolution: {integrity: sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==} + dependencies: + path-parse: 1.0.7 + dev: true + /resolve@1.22.2: resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} hasBin: true @@ -10768,6 +11788,20 @@ packages: dependencies: glob: 7.2.3 + /ripemd160@2.0.2: + resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} + dependencies: + hash-base: 3.1.0 + inherits: 2.0.4 + dev: true + + /rlp@2.2.7: + resolution: {integrity: sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==} + hasBin: true + dependencies: + bn.js: 5.2.1 + dev: true + /rollup@3.21.8: resolution: {integrity: sha512-SSFV2T2fWtQ/vvBip85u2Nr0GNKireabH9d7nXswBg+XSH+jbVDSYptRAEbCEsquhs503rpPA9POYAp0/Jhasw==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} @@ -10850,7 +11884,16 @@ packages: /scrypt-js@3.0.1: resolution: {integrity: sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==} - dev: false + + /secp256k1@4.0.3: + resolution: {integrity: sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==} + engines: {node: '>=10.0.0'} + requiresBuild: true + dependencies: + elliptic: 6.5.4 + node-addon-api: 2.0.2 + node-gyp-build: 4.8.0 + dev: true /secure-json-parse@2.7.0: resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} @@ -10889,6 +11932,12 @@ packages: dependencies: lru-cache: 6.0.0 + /serialize-javascript@6.0.0: + resolution: {integrity: sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==} + dependencies: + randombytes: 2.1.0 + dev: true + /set-blocking@2.0.0: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} @@ -10896,9 +11945,20 @@ packages: resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} dev: false + /setimmediate@1.0.5: + resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} + dev: true + /setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - dev: false + + /sha.js@2.4.11: + resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} + hasBin: true + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true /shebang-command@1.2.0: resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} @@ -11007,7 +12067,7 @@ packages: engines: {node: '>= 10'} dependencies: agent-base: 6.0.2 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) socks: 2.7.1 transitivePeerDependencies: - supports-color @@ -11021,6 +12081,24 @@ packages: smart-buffer: 4.2.0 dev: false + /solc@0.7.3(debug@4.3.4): + resolution: {integrity: sha512-GAsWNAjGzIDg7VxzP6mPjdurby3IkGCjQcM8GFYZT6RyaoUZKmMU6Y7YwG+tFGhv7dwZ8rmR4iwFDrrD99JwqA==} + engines: {node: '>=8.0.0'} + hasBin: true + dependencies: + command-exists: 1.2.9 + commander: 3.0.2 + follow-redirects: 1.15.2(debug@4.3.4) + fs-extra: 0.30.0 + js-sha3: 0.8.0 + memorystream: 0.3.1 + require-from-string: 2.0.2 + semver: 5.7.1 + tmp: 0.0.33 + transitivePeerDependencies: + - debug + dev: true + /solhint@3.3.7: resolution: {integrity: sha512-NjjjVmXI3ehKkb3aNtRJWw55SUVJ8HMKKodwe0HnejA+k0d2kmhw7jvpa+MCTbcEgt8IWSwx0Hu6aCo/iYOZzQ==} hasBin: true @@ -11154,6 +12232,13 @@ packages: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} dev: true + /stacktrace-parser@0.1.10: + resolution: {integrity: sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==} + engines: {node: '>=6'} + dependencies: + type-fest: 0.7.1 + dev: true + /statuses@1.5.0: resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} engines: {node: '>= 0.6'} @@ -11162,7 +12247,6 @@ packages: /statuses@2.0.1: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} - dev: false /std-env@3.7.0: resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} @@ -11305,13 +12389,6 @@ packages: dependencies: ansi-regex: 5.0.1 - /strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} - engines: {node: '>=12'} - dependencies: - ansi-regex: 6.0.1 - dev: false - /strip-bom@3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} @@ -11329,6 +12406,14 @@ packages: /strip-final-newline@3.0.0: resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} engines: {node: '>=12'} + dev: true + + /strip-hex-prefix@1.0.0: + resolution: {integrity: sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==} + engines: {node: '>=6.5.0', npm: '>=3'} + dependencies: + is-hex-prefixed: 1.0.0 + dev: true /strip-indent@3.0.0: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} @@ -11400,7 +12485,6 @@ packages: engines: {node: '>=10'} dependencies: has-flag: 4.0.0 - dev: true /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} @@ -11619,7 +12703,6 @@ packages: /toidentifier@1.0.1: resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} engines: {node: '>=0.6'} - dev: false /toposort@2.0.2: resolution: {integrity: sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==} @@ -11765,6 +12848,10 @@ packages: /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + /tsort@0.0.1: + resolution: {integrity: sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==} + dev: true + /tsscmp@1.0.6: resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==} engines: {node: '>=0.6.x'} @@ -11789,7 +12876,7 @@ packages: bundle-require: 4.0.1(esbuild@0.17.17) cac: 6.7.14 chokidar: 3.5.3 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) esbuild: 0.17.17 execa: 5.1.1 globby: 11.1.0 @@ -11899,6 +12986,14 @@ packages: turbo-windows-arm64: 1.9.3 dev: true + /tweetnacl-util@0.15.1: + resolution: {integrity: sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==} + dev: true + + /tweetnacl@1.0.3: + resolution: {integrity: sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==} + dev: true + /type-check@0.3.2: resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} engines: {node: '>= 0.8.0'} @@ -11937,6 +13032,11 @@ packages: engines: {node: '>=8'} dev: true + /type-fest@0.7.1: + resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} + engines: {node: '>=8'} + dev: true + /type-fest@0.8.1: resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} engines: {node: '>=8'} @@ -11989,6 +13089,13 @@ packages: which-boxed-primitive: 1.0.2 dev: true + /undici@5.28.3: + resolution: {integrity: sha512-3ItfzbrhDlINjaP0duwnNsKpDQk3acHI3gVJ1z4fmwMK31k5G9OVIAMLSIaP6w4FaGkaAkN6zaQO9LUvZ1t7VA==} + engines: {node: '>=14.0'} + dependencies: + '@fastify/busboy': 2.1.1 + dev: true + /unique-filename@2.0.1: resolution: {integrity: sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} @@ -12013,6 +13120,11 @@ packages: engines: {node: '>= 4.0.0'} dev: true + /unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + dev: true + /update-browserslist-db@1.0.13(browserslist@4.23.0): resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} hasBin: true @@ -12055,6 +13167,10 @@ packages: react: 18.2.0 dev: false + /utf8@3.0.0: + resolution: {integrity: sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==} + dev: true + /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} @@ -12067,7 +13183,6 @@ packages: /uuid@8.3.2: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true - dev: false /uuid@9.0.1: resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} @@ -12124,7 +13239,7 @@ packages: hasBin: true dependencies: cac: 6.7.14 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) mlly: 1.5.0 pathe: 1.1.2 picocolors: 1.0.0 @@ -12215,7 +13330,7 @@ packages: acorn-walk: 8.3.2 cac: 6.7.14 chai: 4.4.1 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) jsdom: 22.1.0 local-pkg: 0.4.3 magic-string: 0.30.5 @@ -12256,6 +13371,20 @@ packages: defaults: 1.0.4 dev: true + /web3-utils@1.10.4: + resolution: {integrity: sha512-tsu8FiKJLk2PzhDl9fXbGUWTkkVXYhtTA+SmEFkKft+9BgwLxfCRpU96sWv7ICC8zixBNd3JURVoiR3dUXgP8A==} + engines: {node: '>=8.0.0'} + dependencies: + '@ethereumjs/util': 8.1.0 + bn.js: 5.2.1 + ethereum-bloom-filters: 1.0.10 + ethereum-cryptography: 2.1.3 + ethjs-unit: 0.1.6 + number-to-bn: 1.7.0 + randombytes: 2.1.0 + utf8: 3.0.0 + dev: true + /webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} dev: false @@ -12354,6 +13483,13 @@ packages: string-width: 4.2.3 dev: false + /widest-line@3.1.0: + resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==} + engines: {node: '>=8'} + dependencies: + string-width: 4.2.3 + dev: true + /word-wrap@1.2.3: resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} engines: {node: '>=0.10.0'} @@ -12363,6 +13499,10 @@ packages: resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} dev: false + /workerpool@6.2.1: + resolution: {integrity: sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==} + dev: true + /wrap-ansi@3.0.1: resolution: {integrity: sha512-iXR3tDXpbnTpzjKSylUJRkLuOrEC7hwEB221cgn6wtF8wpmz28puFXAEfPT5zrjM3wahygB//VuWEr1vTkDcNQ==} engines: {node: '>=4'} @@ -12426,7 +13566,6 @@ packages: optional: true utf-8-validate: optional: true - dev: false /ws@8.13.0: resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} @@ -12505,6 +13644,11 @@ packages: decamelize: 1.2.0 dev: true + /yargs-parser@20.2.4: + resolution: {integrity: sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==} + engines: {node: '>=10'} + dev: true + /yargs-parser@20.2.9: resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} engines: {node: '>=10'} @@ -12514,6 +13658,16 @@ packages: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} + /yargs-unparser@2.0.0: + resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==} + engines: {node: '>=10'} + dependencies: + camelcase: 6.3.0 + decamelize: 4.0.0 + flat: 5.0.2 + is-plain-obj: 2.1.0 + dev: true + /yargs@14.2.3: resolution: {integrity: sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg==} dependencies: @@ -12594,11 +13748,11 @@ packages: /yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} - dev: true /yocto-queue@1.0.0: resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} engines: {node: '>=12.20'} + dev: true /zod-validation-error@1.3.0(zod@3.21.4): resolution: {integrity: sha512-4WoQnuWnj06kwKR4A+cykRxFmy+CTvwMQO5ogTXLiVx1AuvYYmMjixh7sbkSsQTr1Fvtss6d5kVz8PGeMPUQjQ==} @@ -12633,13 +13787,11 @@ packages: resolution: {tarball: https://codeload.github.com/dapphub/ds-test/tar.gz/e282159d5170298eb2455a6c05280ab5a73a4ef0} name: ds-test version: 1.0.0 - dev: true github.com/foundry-rs/forge-std/74cfb77e308dd188d2f58864aaf44963ae6b88b1: resolution: {tarball: https://codeload.github.com/foundry-rs/forge-std/tar.gz/74cfb77e308dd188d2f58864aaf44963ae6b88b1} name: forge-std version: 1.6.0 - dev: true github.com/holic/create-create-app/74376c59b48a04aabbe94d9cacfe9cb1cecccd63: resolution: {tarball: https://codeload.github.com/holic/create-create-app/tar.gz/74376c59b48a04aabbe94d9cacfe9cb1cecccd63} diff --git a/scripts/changelog.ts b/scripts/changelog.ts index 842249578f..88d3316bb2 100644 --- a/scripts/changelog.ts +++ b/scripts/changelog.ts @@ -3,7 +3,7 @@ * central changelog (https://github.com/changesets/changesets/issues/1059). */ -import { execa } from "execa"; +import execa from "execa"; import { readFileSync, writeFileSync } from "node:fs"; import path from "path"; import glob from "glob"; diff --git a/scripts/render-api-docs.ts b/scripts/render-api-docs.ts index 8ae48ff7f3..769b454777 100644 --- a/scripts/render-api-docs.ts +++ b/scripts/render-api-docs.ts @@ -2,7 +2,7 @@ * Parse raw `forge doc` output from contract packages, clean it up, and render as markdown in docs. */ -import { execa } from "execa"; +import execa from "execa"; import prettier from "prettier"; import { readFileSync, readdirSync, writeFileSync } from "fs"; import path from "path"; diff --git a/templates/phaser/packages/client/package.json b/templates/phaser/packages/client/package.json index 285ce6eb37..8ea540cac2 100644 --- a/templates/phaser/packages/client/package.json +++ b/templates/phaser/packages/client/package.json @@ -3,7 +3,6 @@ "version": "0.0.0", "private": true, "license": "MIT", - "type": "module", "scripts": { "build": "vite build", "dev": "wait-port localhost:8545 && vite", diff --git a/templates/react-ecs/packages/client/package.json b/templates/react-ecs/packages/client/package.json index 18098bbb19..d2612b7eb2 100644 --- a/templates/react-ecs/packages/client/package.json +++ b/templates/react-ecs/packages/client/package.json @@ -3,7 +3,6 @@ "version": "0.0.0", "private": true, "license": "MIT", - "type": "module", "scripts": { "build": "vite build", "dev": "wait-port localhost:8545 && vite", diff --git a/templates/react/packages/client/package.json b/templates/react/packages/client/package.json index 66cefb659d..56a1c37abb 100644 --- a/templates/react/packages/client/package.json +++ b/templates/react/packages/client/package.json @@ -3,7 +3,6 @@ "version": "0.0.0", "private": true, "license": "MIT", - "type": "module", "scripts": { "build": "vite build", "dev": "wait-port localhost:8545 && vite", diff --git a/templates/threejs/packages/client/package.json b/templates/threejs/packages/client/package.json index caaa39d369..7b4f071714 100644 --- a/templates/threejs/packages/client/package.json +++ b/templates/threejs/packages/client/package.json @@ -3,7 +3,6 @@ "version": "0.0.0", "private": true, "license": "MIT", - "type": "module", "scripts": { "build": "vite build", "dev": "wait-port localhost:8545 && vite", diff --git a/templates/vanilla/packages/client/package.json b/templates/vanilla/packages/client/package.json index 5992b7704e..f0fb617622 100644 --- a/templates/vanilla/packages/client/package.json +++ b/templates/vanilla/packages/client/package.json @@ -3,7 +3,6 @@ "version": "0.0.0", "private": true, "license": "MIT", - "type": "module", "scripts": { "build": "vite build", "dev": "wait-port localhost:8545 && vite", From 140b96348bb88fbe39890fd886e1f77459cff93c Mon Sep 17 00:00:00 2001 From: Dhvani Patel Date: Sat, 2 Mar 2024 17:36:02 +0000 Subject: [PATCH 07/32] fix: add fallbacks for error instanceof --- packages/common/src/createNonceManager.ts | 9 ++++--- packages/store-sync/src/createStoreSync.ts | 29 ++++++++++++++++++---- 2 files changed, 30 insertions(+), 8 deletions(-) diff --git a/packages/common/src/createNonceManager.ts b/packages/common/src/createNonceManager.ts index 87806ec578..68f0b4b200 100644 --- a/packages/common/src/createNonceManager.ts +++ b/packages/common/src/createNonceManager.ts @@ -71,10 +71,13 @@ export function createNonceManager({ debug("reset nonce to", nonceRef.current); } - function shouldResetNonce(error: unknown): boolean { + function shouldResetNonce(error: any): boolean { return ( - error instanceof BaseError && - error.walk((e) => e instanceof NonceTooLowError || e instanceof NonceTooHighError) != null + (error instanceof BaseError && + error.walk((e) => e instanceof NonceTooLowError || e instanceof NonceTooHighError) != null) || + error.name === "NonceTooLowError" || + error.name === "NonceTooHighError" || + (error.name === "TransactionExecutionError" && error.message && error.message.includes("nonce")) ); } diff --git a/packages/store-sync/src/createStoreSync.ts b/packages/store-sync/src/createStoreSync.ts index c14f6e68fa..e64d3d5d0c 100644 --- a/packages/store-sync/src/createStoreSync.ts +++ b/packages/store-sync/src/createStoreSync.ts @@ -1,5 +1,26 @@ +import { createBlockStream } from "@latticexyz/block-logs-stream"; +import { bigIntMax, chunk, isDefined, waitForIdle } from "@latticexyz/common/utils"; import { storeEventsAbi } from "@latticexyz/store"; +import { + catchError, + combineLatest, + concat, + concatMap, + defer, + filter, + firstValueFrom, + from, + identity, + map, + of, + scan, + share, + shareReplay, + tap, + mergeMap, +} from "rxjs"; import { Hex, TransactionReceiptNotFoundError } from "viem"; +import { SyncStep } from "./SyncStep"; import { StorageAdapter, StorageAdapterBlock, @@ -29,11 +50,9 @@ import { mergeMap, } from "rxjs"; import { debug as parentDebug } from "./debug"; -import { SyncStep } from "./SyncStep"; -import { bigIntMax, chunk, isDefined, waitForIdle } from "@latticexyz/common/utils"; -import { getSnapshot } from "./getSnapshot"; import { fetchAndStoreLogs } from "./fetchAndStoreLogs"; import { Store as StoreConfig } from "@latticexyz/store"; +import { getSnapshot } from "./getSnapshot"; const debug = parentDebug.extend("createStoreSync"); @@ -282,8 +301,8 @@ export async function createStoreSync( if (lastBlock.blockNumber >= blockNumber) { return { status, blockNumber, transactionHash }; } - } catch (error) { - if (error instanceof TransactionReceiptNotFoundError) { + } catch (error: any) { + if (error instanceof TransactionReceiptNotFoundError || error.name === "TransactionReceiptNotFoundError") { return; } throw error; From f2a8ff3632750473df464dceb11578d054e51f4a Mon Sep 17 00:00:00 2001 From: Dhvani Patel Date: Sun, 3 Mar 2024 15:30:22 +0000 Subject: [PATCH 08/32] fix: cjs fallback for import.meta.url --- packages/noise/ts/index.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/noise/ts/index.ts b/packages/noise/ts/index.ts index 3c8e2632a1..228ddab7ab 100644 --- a/packages/noise/ts/index.ts +++ b/packages/noise/ts/index.ts @@ -1,4 +1,5 @@ import fs from "fs"; +import path from "path"; // import * as buffer from "buffer"; // const { Buffer } = buffer; @@ -7,7 +8,7 @@ import fs from "fs"; // return buffer; // } -export async function fetchAndCompileWasmModule(url: URL) { +export async function fetchAndCompileWasmModule(url: URL | string) { try { return await WebAssembly.compileStreaming(fetch(url)); } catch { @@ -41,7 +42,11 @@ export function createSplines(splines: [number, number][]): (x: number) => numbe export type Perlin = (_x: number, _y: number, _z: number, denom: number) => number; export async function createPerlin(): Promise { - const wasmModule = await fetchAndCompileWasmModule(new URL("../build/release.wasm", import.meta.url)); + const wasmModule = await fetchAndCompileWasmModule( + import.meta.url + ? new URL("../build/release.wasm", import.meta.url) + : path.resolve(__dirname, "../build/release.wasm") + ); const wasmInstance = await WebAssembly.instantiate(wasmModule, { env: { abort: (e: string) => { From 91622fbc264da49edecf31a30f5f3fc6fa936f6b Mon Sep 17 00:00:00 2001 From: Dhvani Patel Date: Thu, 14 Mar 2024 11:40:08 +0000 Subject: [PATCH 09/32] fix: merge changes --- packages/phaserx/dist/index.d.ts | 414 ---------------------------- packages/phaserx/dist/index.js | 111 -------- packages/phaserx/dist/index.js.map | 1 - packages/phaserx/dist/index.mjs | 111 -------- packages/phaserx/dist/index.mjs.map | 1 - packages/phaserx/package.json | 2 +- 6 files changed, 1 insertion(+), 639 deletions(-) delete mode 100644 packages/phaserx/dist/index.d.ts delete mode 100644 packages/phaserx/dist/index.js delete mode 100644 packages/phaserx/dist/index.js.map delete mode 100644 packages/phaserx/dist/index.mjs delete mode 100644 packages/phaserx/dist/index.mjs.map diff --git a/packages/phaserx/dist/index.d.ts b/packages/phaserx/dist/index.d.ts deleted file mode 100644 index 71fa9c5680..0000000000 --- a/packages/phaserx/dist/index.d.ts +++ /dev/null @@ -1,414 +0,0 @@ -import { Observable } from 'rxjs'; -import { CoordMap } from '@latticexyz/utils'; -import * as mobx from 'mobx'; - -type TweenBuilderConfig = { - targets: Phaser.GameObjects.Sprite; -} & Omit; -/** - * Add a tween to the provided game object. - * @returns Promise that resolves when the tween is done. - */ -declare function tween(config: TweenBuilderConfig, options?: { - keepExistingTweens?: boolean; -}): Promise; -declare function removeAllTweens(gameObject: Phaser.GameObjects.GameObject): void; - -declare function mod(a: number, b: number): number; - -declare function defineScene(options: { - key: string; - preload?: (scene: Phaser.Scene) => void; - create?: (scene: Phaser.Scene) => void; - update?: (scene: Phaser.Scene) => void; -}): { - new (): { - preload(): void; - create(): void; - update(): void; - sys: Phaser.Scenes.Systems; - game: Phaser.Game; - anims: Phaser.Animations.AnimationManager; - cache: Phaser.Cache.CacheManager; - registry: Phaser.Data.DataManager; - sound: Phaser.Sound.NoAudioSoundManager | Phaser.Sound.HTML5AudioSoundManager | Phaser.Sound.WebAudioSoundManager; - textures: Phaser.Textures.TextureManager; - events: Phaser.Events.EventEmitter; - cameras: Phaser.Cameras.Scene2D.CameraManager; - add: Phaser.GameObjects.GameObjectFactory; - make: Phaser.GameObjects.GameObjectCreator; - scene: Phaser.Scenes.ScenePlugin; - children: Phaser.GameObjects.DisplayList; - lights: Phaser.GameObjects.LightsManager; - data: Phaser.Data.DataManager; - input: Phaser.Input.InputPlugin; - load: Phaser.Loader.LoaderPlugin; - time: Phaser.Time.Clock; - tweens: Phaser.Tweens.TweenManager; - physics: Phaser.Physics.Arcade.ArcadePhysics; - matter: Phaser.Physics.Matter.MatterPhysics; - facebook: Phaser.FacebookInstantGamesPlugin; - scale: Phaser.Scale.ScaleManager; - plugins: Phaser.Plugins.PluginManager; - renderer: Phaser.Renderer.WebGL.WebGLRenderer | Phaser.Renderer.Canvas.CanvasRenderer; - }; -}; - -declare function createChunks(worldView$: Observable, chunkSize: number, padding?: number): { - addedChunks$: Observable; - removedChunks$: Observable; - chunkSize: number; - visibleChunks: { - current: CoordMap; - }; -}; - -type ObjectPoolReturnType = Type extends keyof GameObjectTypes ? EmbodiedEntity : EmbodiedEntity | undefined; -declare function createObjectPool(scene: Phaser.Scene): { - get: (entity: number | string, type: Type) => ObjectPoolReturnType; - remove: (entity: number | string) => void; - objects: mobx.ObservableMap>; - groups: { - Sprite: Phaser.GameObjects.Group; - Rectangle: Phaser.GameObjects.Group; - Line: Phaser.GameObjects.Group; - Text: Phaser.GameObjects.Group; - }; - ignoreCamera: (cameraId: number, ignore: boolean) => void; -}; - -declare enum AssetType { - Image = 0, - SpriteSheet = 1, - MultiAtlas = 2 -} -declare const GameObjectClasses: { - Sprite: typeof Phaser.GameObjects.Sprite; - Rectangle: typeof Phaser.GameObjects.Rectangle; - Line: typeof Phaser.GameObjects.Line; - Text: typeof Phaser.GameObjects.Text; -}; - -declare function createCulling(objectPool: ObjectPool, camera: Camera, chunks: Chunks): { - dispose: () => void; -}; - -interface ChunkedTilemap { - size: () => number; - putTileAt: (coord: WorldCoord, tile: TileKeys, layer?: LayerKeys, tint?: number) => void; - dispose: () => void; - setVisible: (visible: boolean) => void; - visible: { - current: boolean; - }; - tileWidth: number; - tileHeight: number; -} -interface VirtualTilemap extends ChunkedTilemap { - tiles: { - [key in LayerKeys]: CoordMap; - }; -} -interface AnimatedTilemap extends VirtualTilemap { - putAnimationAt: (coord: WorldCoord, animationKey: AnimationKeys, layer?: LayerKeys) => void; - removeAnimationAt: (coord: WorldCoord, layer?: LayerKeys) => void; - pauseAnimationAt: (coord: WorldCoord, layer?: LayerKeys) => void; - resumeAnimationAt: (coord: WorldCoord, layer?: LayerKeys) => void; - registerAnimation: (animationKey: AnimationKeys, frames: TileAnimation) => void; -} -type TileAnimation = TileKeys[]; - -type ChunkedTilemapConfig = { - scene: Phaser.Scene; - tilesets: { - [key: string]: Phaser.Tilemaps.Tileset; - }; - layerConfig: { - layers: { - [id in LayerKeys]: { - tilesets: string[]; - hasHueTintShader?: boolean; - }; - }; - defaultLayer: LayerKeys; - }; - chunks: Chunks; - backgroundTile: [number, ...number[]]; - tiles: { - [layer in LayerKeys]: CoordMap; - }; - tileWidth: number; - tileHeight: number; -}; -declare function createChunkedTilemap(params: ChunkedTilemapConfig): ChunkedTilemap; - -declare function createVirtualTilemap(config: Omit, "tiles">): VirtualTilemap; - -declare function createAnimatedTilemap(config: Omit, "tiles"> & { - animationInterval: number; -}): AnimatedTilemap; - -type Key = keyof typeof Phaser.Input.Keyboard.KeyCodes | "POINTER_LEFT" | "POINTER_RIGHT"; -declare function createInput(inputPlugin: Phaser.Input.InputPlugin): { - keyboard$: Observable; - pointermove$: Observable<{ - pointer: Phaser.Input.Pointer; - }>; - pointerdown$: Observable<{ - pointer: Phaser.Input.Pointer; - event: MouseEvent; - }>; - pointerup$: Observable<{ - pointer: Phaser.Input.Pointer; - event: MouseEvent; - }>; - click$: Observable; - doubleClick$: Observable; - rightClick$: Observable; - drag$: Observable; - pressedKeys: mobx.ObservableSet; - dispose: () => void; - disableInput: () => void; - enableInput: () => void; - setCursor: (cursor: string) => void; - enabled: { - current: boolean; - }; - onKeyPress: (keySelector: (pressedKeys: Set) => boolean, callback: () => void) => void; -}; - -type Camera = { - phaserCamera: Phaser.Cameras.Scene2D.Camera; - worldView$: Observable; - zoom$: Observable; - ignore: (objectPool: ObjectPool, ignore: boolean) => void; - dispose: () => void; - centerOnCoord: (tileCoord: Coord, tileWidth: number, tileHeight: number) => void; - centerOn: (x: number, y: number) => void; - setScroll: (x: number, y: number) => void; - setZoom: (zoom: number) => void; -}; -type GameObjectTypes = typeof GameObjectClasses; -type GameObject = InstanceType; -type GameObjectFunction = (gameObject: GameObject) => Promise | void; -type GameScene = ReturnType; -/** - * @id: Unique id of the component to handle updating the same component - * @now: Use for things like visual effects that are only relevant in this moment - * @once: Use for setting parameters that should be set when initializing - * @update: Use for adding update functions that are called at 60 FPS - */ -type GameObjectComponent = { - id: string; - now?: GameObjectFunction; - once?: GameObjectFunction; - update?: GameObjectFunction; -}; -type Area = { - x: number; - y: number; - width: number; - height: number; -}; -type Coord = { - x: number; - y: number; -}; -type PixelCoord = Coord; -type ChunkCoord = Coord; -type WorldCoord = Coord; -type Chunks = ReturnType; -type ObjectPool = ReturnType; -type Culling = ReturnType; -type Input = ReturnType; -type EmbodiedEntity = { - setComponent: (component: GameObjectComponent) => void; - hasComponent: (id: string) => boolean; - removeComponent: (id: string, stop?: boolean) => void; - spawn: () => void; - despawn: () => void; - position: Coord; - id: string; - setCameraFilter: (filter: number) => void; - type: Type; -}; -type Assets = { - [key: string]: Asset; -}; -type TilesetConfig = { - [key: string]: { - assetKey: keyof A & string; - tileWidth: number; - tileHeight: number; - }; -}; -type LayerConfig> = { - [key: string]: { - tilesets: (keyof T & string)[]; - hasHueTintShader?: boolean; - }; -}; -type MapConfig, L extends LayerConfig> = { - chunkSize: number; - tileWidth: number; - tileHeight: number; - layers: { - layers: L; - defaultLayer: keyof L & string; - }; - backgroundTile: [number, ...number[]]; - animationInterval: number; - tileAnimations?: { - [key: string]: TileAnimation; - }; -}; -type AnyMapConfig> = MapConfig>; -type AnyTilesetConfig = TilesetConfig; -type AnySceneConfig = SceneConfig; -}, AnyTilesetConfig, MapsConfig, Animation[]>; -type MapsConfig> = { - [key: string]: AnyMapConfig; -}; -type Sprite = { - assetKey: keyof A & string; - frame?: string | number; -}; -type Animation = { - key: string; - assetKey: keyof A & string; - startFrame: number; - endFrame: number; - frameRate: number; - repeat: number; - prefix?: string; - suffix?: string; -}; -type SceneConfig; -}, T extends TilesetConfig, M extends MapsConfig, Ans extends Animation[]> = { - preload?: (scene: Phaser.Scene) => void; - create?: (scene: Phaser.Scene) => void; - update?: (scene: Phaser.Scene) => void; - assets: A; - sprites: S; - tilesets: T; - maps: M; - animations: Ans; -}; -type ScenesConfig = { - [key: string]: AnySceneConfig; -}; -type Scene = { - phaserScene: Phaser.Scene; - objectPool: ObjectPool; - camera: Camera; - culling: Culling; - maps: Maps; - input: Input; - config: C; -}; -type Scenes = { - [key in keyof C]: Scene; -}; -type Maps = { - [key in Keys]: AnimatedTilemap; -}; -type Asset = { - type: AssetType.Image; - key: string; - path: string; -} | { - type: AssetType.SpriteSheet; - key: string; - path: string; - options: { - frameWidth: number; - frameHeight: number; - }; -} | { - type: AssetType.MultiAtlas; - key: string; - path: string; - options: { - imagePath: string; - }; -}; -type CameraConfig = { - pinchSpeed: number; - wheelSpeed: number; - minZoom: number; - maxZoom: number; -}; -type PhaserEngineConfig = { - sceneConfig: S; - scale: Phaser.Types.Core.ScaleConfig; - cameraConfig: CameraConfig; - cullingChunkSize: number; -}; - -declare const ZERO_VECTOR: Coord; -declare function cornerTileCoordsFromRegionCoords(regionCoords: WorldCoord[], regionLength: number): Coord[]; -declare function isTileInArea(tileCoord: WorldCoord, area: Area): boolean; -declare function coordEq(a?: Coord, b?: Coord): boolean; -declare function addCoords(a: Coord, b: Coord): { - x: number; - y: number; -}; -declare function pixelToChunkCoord(pixelCoord: PixelCoord, chunkSize: number): ChunkCoord; -declare function chunkToPixelCoord(chunkCoord: ChunkCoord, chunkSize: number): PixelCoord; -declare function pixelCoordToTileCoord(pixelCoord: PixelCoord, tileWidth: number, tileHeight: number): WorldCoord; -declare function tileCoordToPixelCoord(tileCoord: WorldCoord, tileWidth: number, tileHeight: number): PixelCoord; -declare function tileCoordToChunkCoord(tileCoord: WorldCoord, tileWidth: number, tileHeight: number, chunkSize: number): ChunkCoord; -declare function chunkCoordToTileCoord(chunkCoord: ChunkCoord, tileWidth: number, tileHeight: number, chunkSize: number): WorldCoord; - -declare function load(scene: Phaser.Scene, callback: (loader: Phaser.Loader.LoaderPlugin) => void): Promise; - -declare function getChunksInArea(area: Area, chunkSize: number): CoordMap; - -declare function getObjectsInArea(groups: Phaser.GameObjects.Group[], area: Phaser.Geom.Rectangle): any[]; - -declare function generateFrames(anims: Phaser.Animations.AnimationManager, animation: Animation): Phaser.Types.Animations.AnimationFrame[]; - -declare function createPhaserEngine(options: PhaserEngineConfig): Promise<{ - game: Phaser.Game; - scenes: Scenes; - dispose: () => void; -}>; - -declare function definePhaserConfig(options: { - scenes: GameScene[]; - scale: Phaser.Types.Core.GameConfig["scale"]; -}): Phaser.Types.Core.GameConfig; - -declare function createCamera(phaserCamera: Phaser.Cameras.Scene2D.Camera, options: CameraConfig): Camera; - -declare function createDebugger(camera: Camera, chunks: Chunks, scene: Phaser.Scene, objectPool: ObjectPool, map: AnimatedTilemap): void; - -declare function defineAssetsConfig(assets: A): A; -declare function defineMapConfig, L extends LayerConfig>(config: MapConfig): MapConfig; -declare function defineSceneConfig; -}, T extends TilesetConfig, M extends MapsConfig, Ans extends Animation[]>(config: SceneConfig): SceneConfig; -declare function defineScaleConfig(config: Phaser.Types.Core.ScaleConfig): Phaser.Types.Core.ScaleConfig; -declare function defineCameraConfig(config: CameraConfig): CameraConfig; -declare function isSprite(gameObject: Phaser.GameObjects.GameObject, type: keyof GameObjectTypes): gameObject is GameObject<"Sprite">; -declare function isRectangle(gameObject: Phaser.GameObjects.GameObject, type: keyof GameObjectTypes): gameObject is GameObject<"Rectangle">; - -declare const SpritePipeline: typeof Phaser.Renderer.WebGL.Pipelines.SpriteFXPipeline; -declare class HueTintAndOutlineFXPipeline extends SpritePipeline { - static readonly KEY = "HueTintFXPipeline"; - private _tintColor; - private _outline; - private _outlineColor; - constructor(game: Phaser.Game); - onDrawSprite(obj: Phaser.GameObjects.Sprite): void; - onDraw(renderTarget: Phaser.Renderer.WebGL.RenderTarget): void; -} - -declare class MultiHueTintPipeline extends Phaser.Renderer.WebGL.Pipelines.MultiPipeline { - static readonly KEY = "MultiHueTintPipeline"; - constructor(game: Phaser.Game); -} - -export { AnimatedTilemap, Asset, AssetType, Camera, ChunkedTilemap, Coord, GameObjectClasses, HueTintAndOutlineFXPipeline, Key, MultiHueTintPipeline, TileAnimation, VirtualTilemap, ZERO_VECTOR, addCoords, chunkCoordToTileCoord, chunkToPixelCoord, coordEq, cornerTileCoordsFromRegionCoords, createAnimatedTilemap, createCamera, createChunkedTilemap, createChunks, createCulling, createDebugger, createInput, createObjectPool, createPhaserEngine, createVirtualTilemap, defineAssetsConfig, defineCameraConfig, defineMapConfig, definePhaserConfig, defineScaleConfig, defineScene, defineSceneConfig, generateFrames, getChunksInArea, getObjectsInArea, isRectangle, isSprite, isTileInArea, load, mod, pixelCoordToTileCoord, pixelToChunkCoord, removeAllTweens, tileCoordToChunkCoord, tileCoordToPixelCoord, tween }; diff --git a/packages/phaserx/dist/index.js b/packages/phaserx/dist/index.js deleted file mode 100644 index b732de721e..0000000000 --- a/packages/phaserx/dist/index.js +++ /dev/null @@ -1,111 +0,0 @@ -"use strict";var ee=Object.defineProperty;var He=Object.getOwnPropertyDescriptor;var Be=Object.getOwnPropertyNames;var Ye=Object.prototype.hasOwnProperty;var Xe=(t,e,o)=>e in t?ee(t,e,{enumerable:!0,configurable:!0,writable:!0,value:o}):t[e]=o;var Ze=(t,e)=>{for(var o in e)ee(t,o,{get:e[o],enumerable:!0})},Ue=(t,e,o,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Be(e))!Ye.call(t,r)&&r!==o&&ee(t,r,{get:()=>e[r],enumerable:!(i=He(e,r))||i.enumerable});return t};var Je=t=>Ue(ee({},"__esModule",{value:!0}),t);var te=(t,e,o)=>(Xe(t,typeof e!="symbol"?e+"":e,o),o);var ut={};Ze(ut,{AssetType:()=>be,GameObjectClasses:()=>ae,HueTintAndOutlineFXPipeline:()=>D,MultiHueTintPipeline:()=>E,ZERO_VECTOR:()=>Se,addCoords:()=>Oe,chunkCoordToTileCoord:()=>re,chunkToPixelCoord:()=>_,coordEq:()=>oe,cornerTileCoordsFromRegionCoords:()=>Ae,createAnimatedTilemap:()=>de,createCamera:()=>he,createChunkedTilemap:()=>ue,createChunks:()=>ce,createCulling:()=>xe,createDebugger:()=>lt,createInput:()=>ke,createObjectPool:()=>Te,createPhaserEngine:()=>at,createVirtualTilemap:()=>me,defineAssetsConfig:()=>tt,defineCameraConfig:()=>it,defineMapConfig:()=>ot,definePhaserConfig:()=>Ce,defineScaleConfig:()=>nt,defineScene:()=>ye,defineSceneConfig:()=>rt,generateFrames:()=>se,getChunksInArea:()=>ie,getObjectsInArea:()=>Le,isRectangle:()=>ge,isSprite:()=>le,isTileInArea:()=>Ke,load:()=>ne,mod:()=>I,pixelCoordToTileCoord:()=>fe,pixelToChunkCoord:()=>F,removeAllTweens:()=>B,tileCoordToChunkCoord:()=>V,tileCoordToPixelCoord:()=>Y,tween:()=>Pe});module.exports=Je(ut);var jo=require("phaser");var we=require("@latticexyz/utils");async function Pe(t,e){let[o,,i]=(0,we.deferred)(),{targets:r}=t;if(!(!r.scene||!r.scene.tweens))return e?.keepExistingTweens||B(r),r.scene.tweens.add({...t,onComplete:(s,c)=>{t.onComplete&&t.onComplete(s,c),o()}}),i}function B(t){let e=t.scene.tweens;for(let o of e.tweens)o.hasTarget(t)&&o.stop()}function I(t,e){return(t%e+e)%e}var Se={x:0,y:0};function Ae(t,e){let o=[];return t.forEach(i=>{let r={x:i.x*e,y:i.y*e},s={x:(i.x+1)*e-1,y:i.y*e},c={x:i.x*e,y:(i.y+1)*e-1},n={x:(i.x+1)*e-1,y:(i.y+1)*e-1};o.push(r,s,c,n)}),o}function Ke(t,e){return t.x>=e.x&&t.x=e.x&&t.y{i()}),r}var je=require("@latticexyz/utils");function ie(t,e){let o={x:t.x,y:t.y},i={x:t.x+t.width,y:t.y+t.height},r=F(o,e),s=F(i,e),c=s.x-r.x+1,n=s.y-r.y+1,l=new je.CoordMap;for(let d=0;di!==void 0)}function se(t,e){return e.prefix&&e.suffix?t.generateFrameNames(e.assetKey,{start:e.startFrame,end:e.endFrame,prefix:e.prefix,suffix:e.suffix}):t.generateFrameNumbers(e.assetKey,{start:e.startFrame,end:e.endFrame})}var Qe=Phaser.Renderer.WebGL.Pipelines.SpriteFXPipeline||Object,D=class extends Qe{_tintColor=new Phaser.Display.Color;_outline=0;_outlineColor=new Phaser.Display.Color;constructor(e){super({game:e,renderTarget:!0,fragShader:` - precision mediump float; - uniform sampler2D uMainSampler; - uniform vec2 uTextureSize; - uniform vec3 tintColor; - uniform int outline; - uniform vec3 outlineColor; - varying vec2 outTexCoord; - - vec3 rgb2hsv(vec3 c) - { - vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); - vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g)); - vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r)); - float d = q.x - min(q.w, q.y); - float e = 1.0e-10; - return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x); - } - - void main(void) - { - vec4 srcColor; - vec4 outColor; - vec3 hsvColor; - vec3 rgbColor; - srcColor = texture2D(uMainSampler, outTexCoord); - hsvColor = rgb2hsv(srcColor.rgb); - if (hsvColor.g == 0.0 && !(tintColor.r == 0.0 && tintColor.g == 0.0 && tintColor.b == 0.0)) - { - rgbColor = srcColor.rgb * tintColor; - } else { - rgbColor = srcColor.rgb; - } - outColor = vec4(rgbColor.r, rgbColor.g, rgbColor.b, srcColor.a); - if(outline == 1) { - vec2 distance = vec2(2.0, 2.0) / uTextureSize; - float upAlpha = texture2D(uMainSampler, outTexCoord + vec2(0.0, distance.y)).a; - float leftAlpha = texture2D(uMainSampler, outTexCoord + vec2(-distance.x, 0.0)).a; - float downAlpha = texture2D(uMainSampler, outTexCoord + vec2(0.0, -distance.y)).a; - float rightAlpha = texture2D(uMainSampler, outTexCoord + vec2(distance.x, 0.0)).a; - if (srcColor.a == 0.0 && max(max(upAlpha, downAlpha), max(leftAlpha, rightAlpha)) == 1.0) - { - outColor = vec4(outlineColor, 1.0); - } - } - gl_FragColor = outColor; - } - `})}onDrawSprite(e){let o=e.pipelineData.hueTint,i=e.pipelineData.outline,r=e.pipelineData.outlineColor,s=o||0;if(typeof s=="number"&&(s=Phaser.Display.Color.IntegerToRGB(s)),i){this._outline=1;let c=r??0;typeof c=="number"&&(c=Phaser.Display.Color.IntegerToRGB(r)),this._outlineColor.setFromRGB(c)}else this._outline=0;this._tintColor.setFromRGB(s)}onDraw(e){this.set2f("uTextureSize",this.renderer.width,this.renderer.height),this.set3f("tintColor",this._tintColor.redGL,this._tintColor.greenGL,this._tintColor.blueGL),this.set1i("outline",this._outline),this.set3f("outlineColor",this._outlineColor.redGL,this._outlineColor.greenGL,this._outlineColor.blueGL),this.drawToGame(e)}};te(D,"KEY","HueTintFXPipeline");var E=class extends Phaser.Renderer.WebGL.Pipelines.MultiPipeline{constructor(e){super({game:e,fragShader:` - #define SHADER_NAME PHASER_MULTI_V2_FS - #define numTextures %count% - precision highp float; - uniform sampler2D uMainSampler[%count%]; - varying vec2 outTexCoord; - varying float outTexId; - varying float outTintEffect; - varying vec4 outTint; - - vec4 getSampler (int index, vec2 uv) - { - for (int i = 0; i < numTextures; ++i) - { - if (i == index) - { - return texture2D(uMainSampler[i], uv); - } - } - - // Return black - return vec4(0); - } - vec3 rgb2hsv(vec3 c) - { - vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); - vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g)); - vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r)); - float d = q.x - min(q.w, q.y); - float e = 1.0e-10; - return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x); - } - vec3 hsv2rgb(vec3 c) - { - vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); - vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); - return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); - } - - void main () - { - vec4 srcColor; - vec3 hsvColor; - vec3 rgbColor; - vec4 texel = vec4(outTint.bgr * outTint.a, outTint.a); - srcColor = getSampler(int(outTexId), outTexCoord); - vec4 color = srcColor * texel; - // Multiply texture tint - vec3 hueTintColor = outTint.bgr; - if (hueTintColor != vec3(0.0, 0.0, 0.0)) { - hsvColor = rgb2hsv(srcColor.rgb); - if (hsvColor.g == 0.0 && srcColor.a == 1.) - { - vec3 color = hsv2rgb(hsvColor); - rgbColor = color * hueTintColor; - } else { - rgbColor = hsv2rgb(hsvColor); - } - color = vec4(rgbColor.r, rgbColor.g, rgbColor.b, srcColor.a); - } - gl_FragColor = color; - } - `})}};te(E,"KEY","MultiHueTintPipeline");function ye(t){let{preload:e,create:o,update:i,key:r}=t;return class extends Phaser.Scene{constructor(){super({key:r})}preload(){e&&e(this)}create(){o&&o(this);let c=this.renderer;c?.pipelines&&(c.pipelines.add(D.KEY,new D(this.game)),c.pipelines.add(E.KEY,new E(this.game)))}update(){i&&i(this)}}}function Ce(t){return{type:Phaser.WEBGL,scale:t.scale,pixelArt:!0,autoFocus:!0,render:{antialiasGL:!1,pixelArt:!0},scene:t.scenes}}var be=(i=>(i[i.Image=0]="Image",i[i.SpriteSheet=1]="SpriteSheet",i[i.MultiAtlas=2]="MultiAtlas",i))(be||{}),ae={Sprite:Phaser.GameObjects.Sprite,Rectangle:Phaser.GameObjects.Rectangle,Line:Phaser.GameObjects.Line,Text:Phaser.GameObjects.Text};var X=require("rxjs");var Z=require("@latticexyz/utils");function ce(t,e,o=100){let i={current:new Z.CoordMap},r=new X.Subject,s=new X.Subject;return t.pipe((0,X.map)(({x:n,y:l,width:d,height:a})=>ie({x:n-o,y:l-o,width:d+2*o,height:a+2*o},e))).subscribe(n=>{let l=(0,Z.subtract)(n,i.current);for(let a of l.coords())r.next(a);let d=(0,Z.subtract)(i.current,n);for(let a of d.coords())s.next(a);i.current=n}),{addedChunks$:r.asObservable(),removedChunks$:s.asObservable(),chunkSize:e,visibleChunks:i}}var Ee=require("@use-gesture/vanilla"),K=require("rxjs");function he(t,e){document.addEventListener("gesturestart",m=>m.preventDefault()),document.addEventListener("gesturechange",m=>m.preventDefault());let o=new K.BehaviorSubject(t.worldView),i=new K.BehaviorSubject(t.zoom),r=new K.Subject,s=new K.Subject,c=new Ee.Gesture(t.scene.game.canvas,{onPinch:m=>s.next(m),onWheel:m=>r.next(m)},{}),n=()=>{requestAnimationFrame(()=>o.next(t.worldView))};t.scene.scale.addListener("resize",n);function l(m){t.setZoom(m),o.next(t.worldView),i.next(m)}let d=s.pipe((0,K.throttleTime)(10),(0,K.map)(m=>{let g=i.getValue(),w=(m.offset[0]-g)*e.pinchSpeed;return g+w}),(0,K.map)(m=>Math.min(Math.max(m,e.minZoom),e.maxZoom)),(0,K.scan)((m,g)=>[m[1],g],[1,1])).subscribe(([,m])=>{c._ctrl.state.pinch&&(c._ctrl.state.pinch.offset[0]=m),l(m)}),a=r.pipe((0,K.filter)(m=>!m.pinching),(0,K.sampleTime)(10),(0,K.map)(m=>m.delta.map(g=>g*e.wheelSpeed)),(0,K.map)(m=>m.map(g=>g/t.zoom)),(0,K.map)(m=>[t.scrollX+m[0],t.scrollY+m[1]])).subscribe(([m,g])=>{t.setScroll(m,g),o.next(t.worldView)});function k(m,g){m.ignoreCamera(t.id,g)}function S(m,g,u){let w=Y(m,g,u);C(w.x,w.y)}function C(m,g){t.centerOn(m,g),requestAnimationFrame(()=>o.next(t.worldView))}function x(m,g){t.setScroll(m,g),requestAnimationFrame(()=>o.next(t.worldView))}return{phaserCamera:t,worldView$:o,zoom$:i,ignore:k,dispose:()=>{d.unsubscribe(),a.unsubscribe(),c.destroy(),t.scene.scale.removeListener("resize",n)},centerOnCoord:S,centerOn:C,setScroll:x,setZoom:l}}var q=require("mobx"),z=require("rxjs"),Me=require("@latticexyz/utils");var Re=require("@latticexyz/utils");function et(){let t=new Re.CoordMap,e=new Map;function o(s){let c=t.get(s);return c||(c=new Set,t.set(s,c)),c}function i(s,c){let n=e.get(s);(n&&o(n))?.delete(s),o(c).add(s),e.set(s,c)}function r(s){let c=e.get(s);(c&&o(c))?.delete(s),e.delete(s)}return{set:i,remove:r,get:o}}function xe(t,e,o){let i=et(),r=new Map,s=(0,z.pipe)((0,z.map)(a=>(0,z.from)(i.get(a))),(0,z.mergeMap)(a=>a),(0,z.map)(a=>t.get(a,"Existing")),(0,Me.filterNullish)()),c=o.addedChunks$.pipe(s).subscribe(a=>a.spawn()),n=o.removedChunks$.pipe(s).subscribe(a=>a.despawn());function l(a){r.get(a.id)&&console.error("Entity is being tracked multiple times",a);let k=(0,q.computed)(()=>F(a.position,o.chunkSize),{equals:oe}),S=(0,q.reaction)(()=>k.get(),C=>{i.set(a.id,C),o.visibleChunks.current.get(C)?a.spawn():a.despawn()},{fireImmediately:!0});r.set(a.id,S)}let d=(0,q.observe)(t.objects,a=>{if(a.type==="add"&&l(a.newValue),a.type==="delete"){i.remove(a.oldValue.id);let k=r.get(a.oldValue.id);k&&k(),r.delete(a.oldValue.id)}});return{dispose:()=>{for(let a of r.values())a();d(),c.unsubscribe(),n.unsubscribe()}}}var U=require("mobx");function tt(t){return t}function ot(t){return t}function rt(t){return t}function nt(t){return t}function it(t){return t}function le(t,e){return e==="Sprite"}function ge(t,e){return e==="Rectangle"}function Fe(t,e,o,i=0){let r=(0,U.observable)({x:0,y:0}),s=new Map,c=new Map,n,l={current:i};function d(u){return ze(u)?w=>{u(w),(0,U.runInAction)(()=>{r.x=w.x,r.y=w.y})}:u}async function a({id:u,now:w,once:b,update:h}){let P=b&&ze(b);P&&(0,U.runInAction)(()=>{r.x=P.x??r.x,r.y=P.y??r.y}),b&&s.set(u,d(b)),h&&c.set(u,d(h)),n&&w&&await d(w)(n),n&&b&&b(n)}function k(u){return s.has(u)||c.has(u)}function S(u,w){s.delete(u),c.delete(u),n&&(C(n,w),Ie(n,s.values()))}function C(u,w=!0){w&&(le(u,o)&&u.stop(),B(u)),u.setDepth(10),u.cameraFilter=l.current,u.resetPipeline(!0,!0),u.setScale(1,1),u.setOrigin(0,0),u.setAlpha(1),u.setScrollFactor(1),u.clearMask(),u.setData("objectPoolId",null),le(u,o)&&(u.clearTint(),u.setTexture("")),ge(u,o)&&(u.width=0,u.height=0)}function x(u){l.current=u,n&&(n.cameraFilter=u)}function m(){if(n)return;let u=e.get();C(u),Ie(u,s.values()),u.setActive(!0),u.setVisible(!0),u.setData("objectPoolId",t),n=u}function g(){n&&e.killAndHide(n),n=void 0}return{setComponent:a,hasComponent:k,removeComponent:S,spawn:m,despawn:g,position:r,id:t,setCameraFilter:x,type:o}}function Ie(t,e){if(t)for(let o of e)o(t)}function ze(t){let e,o=new Proxy({x:void 0,y:void 0},{get:(i,r)=>r==="setPosition"?(s,c)=>e={x:s,y:c}:r==="setX"?s=>e={x:s}:r==="setY"?s=>e={y:s}:()=>{},set:(i,r,s)=>(r==="x"&&(e=e?{...e,x:s}:{x:s}),r==="y"&&(e=e?{...e,y:s}:{y:s}),!0)});return t(o),e}var De=require("mobx"),We=require("@latticexyz/utils");function st(t){return Object.keys(ae).includes(t)}function Te(t){let e=(0,We.mapObject)(ae,n=>t.add.group({classType:n})),o=(0,De.observable)(new Map),i={current:0};function r(n,l){typeof n=="number"&&(n=String(n));let d=o.get(n);return st(l)?(d||(d=Fe(n,e[l],l,i.current)),o.has(n)||o.set(n,d),d):d||void 0}function s(n){typeof n=="number"&&(n=String(n));let l=o.get(n);l&&l.despawn(),o.delete(n)}function c(n,l){l?i.current|=n:i.current&=~n;for(let d of o.values())d.setCameraFilter(i.current)}return{get:r,remove:s,objects:o,groups:e,ignoreCamera:c}}var _e=require("@latticexyz/utils");var $e=require("@latticexyz/utils");function ue(t){let{scene:e,tilesets:o,layerConfig:i,chunks:r,backgroundTile:s,tiles:c,tileWidth:n,tileHeight:l}=t,d=Object.keys(i.layers).map(f=>i.layers[f].tilesets).flat();if(I(r.chunkSize,n)!==0||I(r.chunkSize,l)!==0)throw new Error("Chunks pixel size must be a multiple of tile width and height to be used with chunked tilemap");let a=new _e.CoordMap,k={x:r.chunkSize/n,y:r.chunkSize/l},S=new Set,C={current:!0};for(let f of r.visibleChunks.current.coords())p(f);let x=r.addedChunks$.subscribe(f=>{p(f)}),m=r.removedChunks$.subscribe(f=>{h(f)});S.add(()=>x?.unsubscribe()),S.add(()=>m?.unsubscribe);function g(f,v,A,j,G,L){let M={};for(let R of Object.keys(i.layers)){let J=i.layers[R],H=f.createBlankLayer(R,J.tilesets.map(pe=>o[pe]),A,j,G,L);if(!H){console.error(`Adding tilemap layer ${R} failed.`);continue}M[R]=H;let Q=v.game.renderer;J.hasHueTintShader&&Q?.pipelines&&(M[R].pipeline=Q.pipelines.get(E.KEY))}return{layers:Object.values(M),defaultLayer:M[i.defaultLayer]}}function u(f){let v=new Phaser.Tilemaps.MapData({tileHeight:l,tileWidth:n,width:k.x,height:k.y,tilesets:Object.entries(o).filter(([L])=>d.includes(L)).map(([,L])=>L)}),A=new Phaser.Tilemaps.Tilemap(e,v),j=_(f,r.chunkSize),{defaultLayer:G}=g(A,e,j.x,j.y,k.x,k.y);return A.setLayer(G),a.set(f,A),A}function w(f){return a.get(f)||u(f)}function b(f){let v=V(f,n,l,r.chunkSize);return w(v)}function h(f,v){if(!C.current&&!v||!a.has(f))return;w(f).destroy(),a.delete(f)}function P(f,v,A,j){if(!C.current)return;let G=b(f),L=G.putTileAt(v,I(f.x,k.x),I(f.y,k.y),void 0,A);if(L==null)throw new Error("putTileAt failed");L.width=G.tileWidth,L.height=G.tileHeight,j&&(L.tint=j)}function p(f){if(!C.current)return;let v=w(f),A=re(f,n,l,r.chunkSize);for(let j of Object.keys(i.layers))v.forEachTile(G=>{let L={x:A.x+G.x,y:A.y+G.y},M=j===i.defaultLayer?(0,$e.pickRandom)(s):-1,R=c[j].get(L)||M;G.index=R},void 0,void 0,void 0,void 0,void 0,void 0,j)}function T(){for(let f of a.values())f.destroy();a.clear();for(let f of S)f()}function O(){return a.size}function N(f){if(f!==C.current){C.current=f;for(let v of r.visibleChunks.current.coords())C.current?p(v):h(v,!0)}}return{size:O,putTileAt:P,dispose:T,setVisible:N,visible:C,tileWidth:n,tileHeight:l}}var Ve=require("@latticexyz/utils");function me(t){let{chunks:e,layerConfig:{layers:o,defaultLayer:i},tileWidth:r,tileHeight:s}=t,c={};for(let d of Object.keys(o))c[d]=new Ve.CoordMap;let n=ue({...t,tiles:c});function l(d,a,k,S){c[k||i].set(d,a);let C=V(d,r,s,e.chunkSize);n.visible&&e.visibleChunks.current.get(C)&&n.putTileAt(d,a,k,S)}return{...n,putTileAt:l,tiles:c}}var ve=require("@latticexyz/utils");function de(t){let{layerConfig:{layers:e,defaultLayer:o},animationInterval:i,scene:r}=t,s=o,c=0,n={},l={};for(let b of Object.keys(e))l[b]=new ve.CoordMap;let d={};for(let b of Object.keys(e))d[b]=new ve.CoordMap;let a=me(t);function k(b,h){n[b]={frames:h,index:0}}function S(b,h,P=s){l[P].set(b,h)}function C(b,h=s){let P=l[h].get(b),p=P&&n[P];l[h].delete(b),p&&a.putTileAt(b,p.frames[0],h)}function x(b,h=s){let P=l[h].get(b);P&&(d[h].set(b,P),C(b,h))}function m(b,h=s){let P=d[h].get(b);P&&(d[h].delete(b),S(b,P,h))}function g(){for(let b of Object.keys(n)){let h=n[b];h&&(h.index=I(h.index+1,h.frames.length))}for(let b of Object.keys(l)){let h=l[b];for(let P of h.coords()){let p=h.get(P),T=p&&n[p];if(!T)continue;let O=T.frames[T.index];a.putTileAt(P,O,b)}}}function u(b){bo.current),(0,y.map)(()=>({pointer:t.manager?.activePointer})),(0,W.filterNullish)()),l=(0,y.fromEvent)(document,"mousedown").pipe((0,y.filter)(()=>o.current),(0,y.map)(p=>({pointer:t.manager?.activePointer,event:p})),(0,W.filterNullish)()),d=(0,y.fromEvent)(document,"mouseup").pipe((0,y.filter)(()=>o.current),(0,y.map)(p=>({pointer:t.manager?.activePointer,event:p})),(0,W.filterNullish)()),a=(0,y.merge)(l,d).pipe((0,y.filter)(()=>o.current),(0,y.map)(({event:p})=>[p.type==="mousedown"&&p.button===0,Date.now()]),(0,y.bufferCount)(2,1),(0,y.filter)(([p,T])=>p[0]&&!T[0]&&T[1]-p[1]<250),(0,y.map)(()=>t.manager?.activePointer),(0,W.filterNullish)()),k=l.pipe((0,y.filter)(()=>o.current),(0,y.map)(()=>Date.now()),(0,y.bufferCount)(2,1),(0,y.filter)(([p,T])=>T-p<500),(0,y.throttleTime)(500),(0,y.map)(()=>t.manager?.activePointer),(0,W.filterNullish)()),S=(0,y.merge)(l,d).pipe((0,y.filter)(({pointer:p})=>o.current&&p.rightButtonDown()),(0,y.map)(()=>t.manager?.activePointer),(0,W.filterNullish)()),C=(0,y.merge)(l.pipe((0,y.map)(()=>{})),(0,y.merge)(d,n).pipe((0,y.pairwise)(),(0,y.scan)((p,[{pointer:T},{pointer:O}])=>O.leftButtonDown()?T.leftButtonDown()&&p?{...p,width:O.worldX-p.x,height:O.worldY-p.y}:{x:O.worldX,y:O.worldY,width:0,height:0}:void 0,void 0),(0,W.filterNullish)(),(0,y.filter)(p=>Math.abs(p.width)>10&&Math.abs(p.height)>10))).pipe((0,y.filter)(()=>o.current),(0,y.distinctUntilChanged)()),x=(0,$.observable)(new Set),m=t.keyboard,g=new Map;for(let p of Object.keys(Phaser.Input.Keyboard.KeyCodes))b(p);let u=c.pipe((0,y.filter)(()=>o.current)).subscribe(p=>{let T=g.get(p.keyCode);T&&(0,$.runInAction)(()=>{p.isDown&&x.add(T),p.isUp&&x.delete(T)})});e.add(()=>u?.unsubscribe());let w=(0,y.merge)(l,d).subscribe(({pointer:p})=>{(0,$.runInAction)(()=>{p.leftButtonDown()?x.add("POINTER_LEFT"):x.delete("POINTER_LEFT"),p.rightButtonDown()?x.add("POINTER_RIGHT"):x.delete("POINTER_RIGHT")})});e.add(()=>w?.unsubscribe());function b(p){if(!m){console.warn(`Adding key ${p} failed. No phaser keyboard detected.`);return}let T=m.addKey(p,!1);g.set(T.keyCode,p),T.removeAllListeners(),T.emitOnRepeat=!0,T.on("down",O=>c.next(O)),T.on("up",O=>c.next(O))}function h(p,T){let O=(0,$.reaction)(()=>p(x),N=>{N&&T()},{fireImmediately:!0});e.add(O)}function P(){for(let p of e)p()}return{keyboard$:c.asObservable(),pointermove$:n,pointerdown$:l,pointerup$:d,click$:a,doubleClick$:k,rightClick$:S,drag$:C,pressedKeys:x,dispose:P,disableInput:i,enableInput:r,setCursor:s,enabled:o,onKeyPress:h}}var qe=require("@latticexyz/utils");async function at(t){let{scale:e,sceneConfig:o,cameraConfig:i,cullingChunkSize:r}=t,s=Object.keys(o).map(C=>{let{preload:x,create:m,update:g}=o[C];return ye({key:C,preload:x,create:m,update:g})}),c=Ce({scenes:s,scale:e}),n=new Phaser.Game(c),[l,,d]=(0,qe.deferred)();n.events.on("ready",l),c.type===Phaser.HEADLESS&&n.textures.emit("ready"),await d;function a(){let C=window.innerWidth/n.scale.zoom,x=window.innerHeight/n.scale.zoom;n.scale.resize(C,x)}a(),window.addEventListener("resize",a);let k={};for(let C of n.scene.getScenes(!1)){let x=C.scene.key,m=o[x];for(let[f,v]of Object.entries(o[x].assets))await ne(C,A=>{v.type===0?A.image(f,v.path):v.type===1?A.spritesheet(f,v.path,v.options):v.type===2&&A.multiatlas(f,v.path,v.options.imagePath)});let g=Te(C),u=he(C.cameras.main,i),w=ce(u.worldView$,r),b=xe(g,u,w);for(let f of m.animations)C.anims.create({key:f.key,frames:se(C.anims,f),frameRate:f.frameRate,repeat:f.repeat});let h=new Phaser.Tilemaps.Tilemap(C,new Phaser.Tilemaps.MapData),P={};for(let[f,{assetKey:v,tileWidth:A,tileHeight:j}]of Object.entries(o[x].tilesets)){let G=h.addTilesetImage(f,v,A,j);if(!G){console.error(`Adding tileset ${f} failed.`);continue}P[f]=G}let p=P,T={};for(let f of Object.keys(m.maps)){let{layers:v,backgroundTile:A,tileWidth:j,tileHeight:G,animationInterval:L,tileAnimations:M,chunkSize:R}=m.maps[f],J=ce(u.worldView$,R),H=de({scene:C,tilesets:p,layerConfig:v,chunks:J,tileWidth:j,tileHeight:G,backgroundTile:A,animationInterval:L});if(M)for(let[Q,pe]of Object.entries(M))H.registerAnimation(Q,pe);T[f]=H}let O=T,N=ke(C.input);k[x]={phaserScene:C,objectPool:g,camera:u,culling:b,maps:O,input:N,config:o[x]}}let S=k;return{game:n,scenes:S,dispose:()=>{n.destroy(!0);for(let C of Object.keys(S)){let x=S[C];x.camera.dispose(),x.culling.dispose(),x.input.dispose();for(let m of Object.values(x.maps))m.dispose()}window.removeEventListener("resize",a)}}}var Ne=require("@latticexyz/utils");function ct(){let t=Math.random()*255,e=Math.random()*255,o=Math.random()*255;return t*65535+e*255+o}function lt(t,e,o,i,r){let s={logViewport:!1,visualizeChunks:!0,visualizeViewport:!1,logNumVisibleChunks:!1,logObjectStats:!1,logMaps:!0},c=new Ne.CoordMap,n=o.add.rectangle(0,0,1,1,16711680,.2);n.setInteractive(),n.on("pointerup",()=>{console.log("clicked",n)}),t.worldView$.subscribe(l=>{s.logViewport&&console.log(l),s.visualizeViewport&&(n.setScale(l.width,l.height),n.setPosition(l.centerX,l.centerY)),s.logObjectStats&&console.log(`Entities: ${i.objects.size} / Pool size: ${Object.values(i.groups).reduce((d,a)=>d+a.getChildren().length,0)} / Pool active: ${Object.values(i.groups).reduce((d,a)=>d+a.countActive(),0)}`),s.logMaps&&console.log("Num maps",r.size())}),e.addedChunks$.subscribe(l=>{if(s.visualizeChunks){let d=_(l,e.chunkSize),a=o.add.rectangle(d.x+e.chunkSize/2,d.y+e.chunkSize/2,e.chunkSize,e.chunkSize,ct(),.5);a.setInteractive(),a.on("pointerup",()=>{console.log("clicked",a)}),c.set(l,a)}s.logNumVisibleChunks&&console.log("Number of visible chunks: ",c.size)}),e.removedChunks$.subscribe(l=>{s.visualizeChunks&&(c.get(l)?.destroy(),c.delete(l)),s.logNumVisibleChunks&&console.log("Number of visible chunks: ",c.size)})}0&&(module.exports={AssetType,GameObjectClasses,HueTintAndOutlineFXPipeline,MultiHueTintPipeline,ZERO_VECTOR,addCoords,chunkCoordToTileCoord,chunkToPixelCoord,coordEq,cornerTileCoordsFromRegionCoords,createAnimatedTilemap,createCamera,createChunkedTilemap,createChunks,createCulling,createDebugger,createInput,createObjectPool,createPhaserEngine,createVirtualTilemap,defineAssetsConfig,defineCameraConfig,defineMapConfig,definePhaserConfig,defineScaleConfig,defineScene,defineSceneConfig,generateFrames,getChunksInArea,getObjectsInArea,isRectangle,isSprite,isTileInArea,load,mod,pixelCoordToTileCoord,pixelToChunkCoord,removeAllTweens,tileCoordToChunkCoord,tileCoordToPixelCoord,tween}); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/packages/phaserx/dist/index.js.map b/packages/phaserx/dist/index.js.map deleted file mode 100644 index a7eb594cc3..0000000000 --- a/packages/phaserx/dist/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../src/index.ts","../src/utils/tween.ts","../src/utils/math.ts","../src/utils/coords.ts","../src/utils/load.ts","../src/utils/chunks.ts","../src/utils/area.ts","../src/utils/generateFrames.ts","../src/pipelines/HueTintAndOutlineFXPipeline.ts","../src/pipelines/MultiHueTintPipeline.ts","../src/defineScene.ts","../src/definePhaserConfig.ts","../src/constants.ts","../src/createChunks.ts","../src/createCamera.ts","../src/createCulling.ts","../src/createEmbodiedEntity.ts","../src/guards.ts","../src/createObjectPool.ts","../src/tilemap/createChunkedTilemap.ts","../src/tilemap/createVirtualTilemap.ts","../src/tilemap/createAnimatedTilemap.ts","../src/createInput.ts","../src/createPhaserEngine.ts","../src/createDebugger.ts"],"sourcesContent":["import \"phaser\";\n\nexport * from \"./utils\";\nexport * from \"./createPhaserEngine\";\nexport * from \"./createObjectPool\";\nexport * from \"./definePhaserConfig\";\nexport * from \"./defineScene\";\nexport * from \"./createCamera\";\nexport * from \"./createChunks\";\nexport * from \"./createDebugger\";\nexport * from \"./createCulling\";\nexport * from \"./constants\";\nexport * from \"./guards\";\nexport * from \"./pipelines\";\nexport * from \"./tilemap\";\nexport * from \"./createInput\";\nexport type { Asset, Camera, Coord } from \"./types\";\nexport type { AnimatedTilemap, ChunkedTilemap, VirtualTilemap } from \"./tilemap\";\n","import { deferred } from \"@latticexyz/utils\";\n\ntype TweenBuilderConfig = { targets: Phaser.GameObjects.Sprite } & Omit<\n Phaser.Types.Tweens.TweenBuilderConfig,\n \"targets\"\n>;\n\n/**\n * Add a tween to the provided game object.\n * @returns Promise that resolves when the tween is done.\n */\nexport async function tween(config: TweenBuilderConfig, options?: { keepExistingTweens?: boolean }) {\n const [resolve, , promise] = deferred();\n const { targets } = config;\n if (!targets.scene || !targets.scene.tweens) return;\n\n // Kill old tweens\n if (!options?.keepExistingTweens) {\n removeAllTweens(targets);\n }\n\n // Add new tween\n targets.scene.tweens.add({\n ...config,\n onComplete: (tween, targets) => {\n config.onComplete && config.onComplete(tween, targets);\n resolve();\n },\n });\n return promise;\n}\n\nexport function removeAllTweens(gameObject: Phaser.GameObjects.GameObject) {\n const tweenManager = gameObject.scene.tweens;\n for (const tween of tweenManager.tweens) {\n if (tween.hasTarget(gameObject)) {\n tween.stop();\n }\n }\n}\n","export function mod(a: number, b: number) {\n return ((a % b) + b) % b;\n}\n","import { Area, ChunkCoord, Coord, PixelCoord, WorldCoord } from \"../types\";\n\nexport const ZERO_VECTOR: Coord = { x: 0, y: 0 };\n\nexport function cornerTileCoordsFromRegionCoords(regionCoords: WorldCoord[], regionLength: number) {\n const tileCoords: WorldCoord[] = [];\n\n regionCoords.forEach((regionCoord) => {\n const topLeft = { x: regionCoord.x * regionLength, y: regionCoord.y * regionLength };\n const topRight = { x: (regionCoord.x + 1) * regionLength - 1, y: regionCoord.y * regionLength };\n const bottomLeft = { x: regionCoord.x * regionLength, y: (regionCoord.y + 1) * regionLength - 1 };\n const bottomRight = { x: (regionCoord.x + 1) * regionLength - 1, y: (regionCoord.y + 1) * regionLength - 1 };\n tileCoords.push(topLeft, topRight, bottomLeft, bottomRight);\n });\n\n return tileCoords;\n}\n\nexport function isTileInArea(tileCoord: WorldCoord, area: Area) {\n return (\n tileCoord.x >= area.x &&\n tileCoord.x < area.x + area.width &&\n tileCoord.y >= area.x &&\n tileCoord.y < area.y + area.height\n );\n}\n\nexport function coordEq(a?: Coord, b?: Coord) {\n if (!a && !b) return true;\n if (!a || !b) return false;\n return a.x === b.x && a.y === b.y;\n}\n\nexport function addCoords(a: Coord, b: Coord) {\n return {\n x: a.x + b.x,\n y: a.y + b.y,\n };\n}\n\nexport function pixelToChunkCoord(pixelCoord: PixelCoord, chunkSize: number): ChunkCoord {\n return { x: Math.floor(pixelCoord.x / chunkSize), y: Math.floor(pixelCoord.y / chunkSize) };\n}\n\nexport function chunkToPixelCoord(chunkCoord: ChunkCoord, chunkSize: number): PixelCoord {\n return { x: chunkCoord.x * chunkSize, y: chunkCoord.y * chunkSize };\n}\n\nexport function pixelCoordToTileCoord(pixelCoord: PixelCoord, tileWidth: number, tileHeight: number): WorldCoord {\n return {\n x: Math.floor(pixelCoord.x / tileWidth),\n y: Math.floor(pixelCoord.y / tileHeight),\n };\n}\n\nexport function tileCoordToPixelCoord(tileCoord: WorldCoord, tileWidth: number, tileHeight: number): PixelCoord {\n return {\n x: tileCoord.x * tileWidth,\n y: tileCoord.y * tileHeight,\n };\n}\n\nexport function tileCoordToChunkCoord(\n tileCoord: WorldCoord,\n tileWidth: number,\n tileHeight: number,\n chunkSize: number\n): ChunkCoord {\n const pixelCoord = tileCoordToPixelCoord(tileCoord, tileWidth, tileHeight);\n return pixelToChunkCoord(pixelCoord, chunkSize);\n}\n\nexport function chunkCoordToTileCoord(\n chunkCoord: ChunkCoord,\n tileWidth: number,\n tileHeight: number,\n chunkSize: number\n): WorldCoord {\n const pixelCoord = chunkToPixelCoord(chunkCoord, chunkSize);\n return pixelCoordToTileCoord(pixelCoord, tileWidth, tileHeight);\n}\n","import { deferred } from \"@latticexyz/utils\";\n\nexport async function load(scene: Phaser.Scene, callback: (loader: Phaser.Loader.LoaderPlugin) => void) {\n const loader = scene.load;\n callback(loader);\n loader.start();\n const [resolve, , promise] = deferred();\n loader.on(\"complete\", () => {\n resolve();\n });\n return promise;\n}\n","import { CoordMap } from \"@latticexyz/utils\";\nimport { Area } from \"../types\";\nimport { pixelToChunkCoord } from \"./coords\";\n\nexport function getChunksInArea(area: Area, chunkSize: number) {\n const topLeft = { x: area.x, y: area.y };\n const bottomRight = { x: area.x + area.width, y: area.y + area.height };\n\n const topLeftChunk = pixelToChunkCoord(topLeft, chunkSize);\n const bottomRightChunk = pixelToChunkCoord(bottomRight, chunkSize);\n\n const numChunksX = bottomRightChunk.x - topLeftChunk.x + 1;\n const numChunksY = bottomRightChunk.y - topLeftChunk.y + 1;\n\n const chunksInArea = new CoordMap();\n\n for (let x = 0; x < numChunksX; x++) {\n for (let y = 0; y < numChunksY; y++) {\n chunksInArea.set(\n {\n x: topLeftChunk.x + x,\n y: topLeftChunk.y + y,\n },\n true\n );\n }\n }\n\n return chunksInArea;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nexport function getObjectsInArea(groups: Phaser.GameObjects.Group[], area: Phaser.Geom.Rectangle) {\n const ids = [];\n for (const group of groups) {\n for (const object of group.getChildren() as any[]) {\n if (object.active && \"x\" in object && \"y\" in object && area.contains(object.x, object.y)) {\n console.log(\"got one\", object);\n ids.push(object);\n }\n }\n }\n return ids.filter((x) => x !== undefined);\n}\n","import { Animation, Assets } from \"../types\";\n\nexport function generateFrames(\n anims: Phaser.Animations.AnimationManager,\n animation: Animation\n): Phaser.Types.Animations.AnimationFrame[] {\n if (animation.prefix && animation.suffix) {\n return anims.generateFrameNames(animation.assetKey, {\n start: animation.startFrame,\n end: animation.endFrame,\n prefix: animation.prefix,\n suffix: animation.suffix,\n });\n } else {\n return anims.generateFrameNumbers(animation.assetKey, { start: animation.startFrame, end: animation.endFrame });\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nconst SpritePipeline = Phaser.Renderer.WebGL.Pipelines.SpriteFXPipeline || Object;\nexport class HueTintAndOutlineFXPipeline extends SpritePipeline {\n public static readonly KEY = \"HueTintFXPipeline\";\n\n private _tintColor = new Phaser.Display.Color();\n\n private _outline = 0;\n private _outlineColor = new Phaser.Display.Color();\n\n constructor(game: Phaser.Game) {\n super({\n game: game,\n renderTarget: true,\n fragShader: `\n precision mediump float;\n uniform sampler2D uMainSampler;\n uniform vec2 uTextureSize;\n uniform vec3 tintColor;\n uniform int outline;\n uniform vec3 outlineColor;\n varying vec2 outTexCoord;\n \n vec3 rgb2hsv(vec3 c)\n {\n vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);\n vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));\n vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));\n float d = q.x - min(q.w, q.y);\n float e = 1.0e-10;\n return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);\n }\n \n void main(void)\n {\n vec4 srcColor;\n vec4 outColor;\n vec3 hsvColor;\n vec3 rgbColor;\n srcColor = texture2D(uMainSampler, outTexCoord);\n hsvColor = rgb2hsv(srcColor.rgb);\n if (hsvColor.g == 0.0 && !(tintColor.r == 0.0 && tintColor.g == 0.0 && tintColor.b == 0.0))\n {\n rgbColor = srcColor.rgb * tintColor;\n } else {\n rgbColor = srcColor.rgb;\n }\n outColor = vec4(rgbColor.r, rgbColor.g, rgbColor.b, srcColor.a);\n if(outline == 1) {\n vec2 distance = vec2(2.0, 2.0) / uTextureSize;\n float upAlpha = texture2D(uMainSampler, outTexCoord + vec2(0.0, distance.y)).a;\n float leftAlpha = texture2D(uMainSampler, outTexCoord + vec2(-distance.x, 0.0)).a;\n float downAlpha = texture2D(uMainSampler, outTexCoord + vec2(0.0, -distance.y)).a;\n float rightAlpha = texture2D(uMainSampler, outTexCoord + vec2(distance.x, 0.0)).a;\n if (srcColor.a == 0.0 && max(max(upAlpha, downAlpha), max(leftAlpha, rightAlpha)) == 1.0)\n {\n outColor = vec4(outlineColor, 1.0);\n }\n }\n gl_FragColor = outColor; \n }\n `,\n });\n }\n\n onDrawSprite(obj: Phaser.GameObjects.Sprite) {\n const hueTint = (obj.pipelineData as any).hueTint;\n\n const outline = (obj.pipelineData as any).outline;\n const outlineColor = (obj.pipelineData as any).outlineColor;\n\n let tintColor = hueTint ? hueTint : 0x000000;\n if (typeof tintColor === \"number\") {\n tintColor = Phaser.Display.Color.IntegerToRGB(tintColor);\n }\n\n if (outline) {\n this._outline = 1;\n\n let _outlineColor = outlineColor ?? 0x000000;\n if (typeof _outlineColor === \"number\") {\n _outlineColor = Phaser.Display.Color.IntegerToRGB(outlineColor);\n }\n\n this._outlineColor.setFromRGB(_outlineColor);\n } else {\n this._outline = 0;\n }\n\n this._tintColor.setFromRGB(tintColor);\n }\n\n onDraw(renderTarget: Phaser.Renderer.WebGL.RenderTarget) {\n this.set2f(\"uTextureSize\", this.renderer.width, this.renderer.height);\n this.set3f(\"tintColor\", this._tintColor.redGL, this._tintColor.greenGL, this._tintColor.blueGL);\n\n this.set1i(\"outline\", this._outline);\n this.set3f(\"outlineColor\", this._outlineColor.redGL, this._outlineColor.greenGL, this._outlineColor.blueGL);\n\n this.drawToGame(renderTarget);\n }\n}\n","export class MultiHueTintPipeline extends Phaser.Renderer.WebGL.Pipelines.MultiPipeline {\n public static readonly KEY = \"MultiHueTintPipeline\";\n constructor(game: Phaser.Game) {\n super({\n game: game,\n fragShader: `\n #define SHADER_NAME PHASER_MULTI_V2_FS\n #define numTextures %count%\n precision highp float;\n uniform sampler2D uMainSampler[%count%];\n varying vec2 outTexCoord;\n varying float outTexId;\n varying float outTintEffect;\n varying vec4 outTint;\n \n vec4 getSampler (int index, vec2 uv)\n {\n for (int i = 0; i < numTextures; ++i)\n {\n if (i == index)\n {\n return texture2D(uMainSampler[i], uv);\n }\n }\n \n // Return black\n return vec4(0);\n }\n vec3 rgb2hsv(vec3 c)\n {\n vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);\n vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));\n vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));\n float d = q.x - min(q.w, q.y);\n float e = 1.0e-10;\n return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);\n }\n vec3 hsv2rgb(vec3 c)\n {\n vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);\n vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);\n return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);\n }\n \n void main ()\n {\n vec4 srcColor;\n vec3 hsvColor;\n vec3 rgbColor;\n vec4 texel = vec4(outTint.bgr * outTint.a, outTint.a);\n srcColor = getSampler(int(outTexId), outTexCoord);\n vec4 color = srcColor * texel;\n // Multiply texture tint\n vec3 hueTintColor = outTint.bgr;\n if (hueTintColor != vec3(0.0, 0.0, 0.0)) {\n hsvColor = rgb2hsv(srcColor.rgb);\n if (hsvColor.g == 0.0 && srcColor.a == 1.)\n {\n vec3 color = hsv2rgb(hsvColor);\n rgbColor = color * hueTintColor;\n } else {\n rgbColor = hsv2rgb(hsvColor);\n }\n color = vec4(rgbColor.r, rgbColor.g, rgbColor.b, srcColor.a);\n }\n gl_FragColor = color;\n }\n `,\n });\n }\n}\n","import { HueTintAndOutlineFXPipeline, MultiHueTintPipeline } from \"./pipelines\";\n\nexport function defineScene(options: {\n key: string;\n preload?: (scene: Phaser.Scene) => void;\n create?: (scene: Phaser.Scene) => void;\n update?: (scene: Phaser.Scene) => void;\n}) {\n const { preload, create, update, key } = options;\n return class GameScene extends Phaser.Scene {\n constructor() {\n super({ key });\n }\n\n preload() {\n preload && preload(this);\n }\n\n create() {\n create && create(this);\n const renderer = this.renderer as Phaser.Renderer.WebGL.WebGLRenderer;\n if (renderer?.pipelines) {\n renderer.pipelines.add(HueTintAndOutlineFXPipeline.KEY, new HueTintAndOutlineFXPipeline(this.game));\n renderer.pipelines.add(MultiHueTintPipeline.KEY, new MultiHueTintPipeline(this.game));\n }\n }\n\n update() {\n update && update(this);\n }\n };\n}\n","import { GameScene } from \"./types\";\n\nexport function definePhaserConfig(options: {\n scenes: GameScene[];\n scale: Phaser.Types.Core.GameConfig[\"scale\"];\n}): Phaser.Types.Core.GameConfig {\n return {\n type: Phaser.WEBGL,\n scale: options.scale,\n pixelArt: true,\n autoFocus: true,\n render: {\n antialiasGL: false,\n pixelArt: true,\n },\n scene: options.scenes,\n };\n}\n","export enum AssetType {\n Image,\n SpriteSheet,\n MultiAtlas,\n}\n\nexport const GameObjectClasses = {\n Sprite: Phaser.GameObjects.Sprite,\n Rectangle: Phaser.GameObjects.Rectangle,\n Line: Phaser.GameObjects.Line,\n Text: Phaser.GameObjects.Text,\n};\n","import { map, Observable, Subject } from \"rxjs\";\nimport { Area, ChunkCoord } from \"./types\";\nimport { getChunksInArea } from \"./utils\";\nimport { CoordMap, subtract } from \"@latticexyz/utils\";\n\nexport function createChunks(worldView$: Observable, chunkSize: number, padding = 100) {\n const visibleChunks = { current: new CoordMap() };\n\n const addedChunks$ = new Subject();\n const removedChunks$ = new Subject();\n\n const visibleChunkStream = worldView$.pipe(\n map(({ x, y, width, height }) =>\n // Calculate current chunks from the world view\n getChunksInArea(\n {\n x: x - padding,\n y: y - padding,\n width: width + 2 * padding,\n height: height + 2 * padding,\n },\n chunkSize\n )\n )\n );\n\n visibleChunkStream.subscribe((newVisibleChunks) => {\n const added = subtract(newVisibleChunks, visibleChunks.current); // Chunks that are visible not but not before\n for (const coord of added.coords()) addedChunks$.next(coord);\n\n const removed = subtract(visibleChunks.current, newVisibleChunks); // Chunks that were visible before but not now\n for (const coord of removed.coords()) removedChunks$.next(coord);\n\n visibleChunks.current = newVisibleChunks;\n });\n\n return {\n addedChunks$: addedChunks$.asObservable(),\n removedChunks$: removedChunks$.asObservable(),\n chunkSize,\n visibleChunks,\n };\n}\n","import { Gesture } from \"@use-gesture/vanilla\";\nimport { BehaviorSubject, filter, map, sampleTime, scan, Subject, throttleTime } from \"rxjs\";\nimport { tileCoordToPixelCoord } from \"./utils\";\nimport { Camera, CameraConfig, Coord, GestureState, ObjectPool } from \"./types\";\n\nexport function createCamera(phaserCamera: Phaser.Cameras.Scene2D.Camera, options: CameraConfig): Camera {\n // Stop default gesture events to not collide with use-gesture\n // https://github.com/pmndrs/use-gesture/blob/404e2b2ac145a45aff179c1faf5097b97414731c/documentation/pages/docs/gestures.mdx#about-the-pinch-gesture\n document.addEventListener(\"gesturestart\", (e) => e.preventDefault());\n document.addEventListener(\"gesturechange\", (e) => e.preventDefault());\n\n const worldView$ = new BehaviorSubject(phaserCamera.worldView);\n const zoom$ = new BehaviorSubject(phaserCamera.zoom);\n const wheelStream$ = new Subject>();\n const pinchStream$ = new Subject>();\n\n const gesture = new Gesture(\n phaserCamera.scene.game.canvas,\n {\n onPinch: (state) => pinchStream$.next(state),\n onWheel: (state) => wheelStream$.next(state),\n },\n {}\n );\n\n // function getNearestLevel(currentZoom: number): number {\n // return Math.pow(2, Math.floor(Math.log(currentZoom * 2) / Math.log(2))) / 2;\n // }\n\n const onResize = () => {\n requestAnimationFrame(() => worldView$.next(phaserCamera.worldView));\n };\n phaserCamera.scene.scale.addListener(\"resize\", onResize);\n\n function setZoom(zoom: number) {\n phaserCamera.setZoom(zoom);\n worldView$.next(phaserCamera.worldView);\n zoom$.next(zoom);\n }\n\n const pinchSub = pinchStream$\n .pipe(\n throttleTime(10),\n map((state) => {\n // Because this event stream is throttled, we're dropping events which contain delta data, so we need to calculate the delta ourselves.\n const zoom = zoom$.getValue();\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const delta = state.offset[0] - zoom;\n const scaledDelta = delta * options.pinchSpeed;\n return zoom + scaledDelta;\n }), // Compute pinch speed\n map((zoom) => Math.min(Math.max(zoom, options.minZoom), options.maxZoom)), // Limit zoom values\n scan((acc, curr) => [acc[1], curr], [1, 1]) // keep track of the last value to offset the map position (not implemented yet)\n )\n .subscribe(([, zoom]) => {\n // Set the gesture zoom state to the current zoom value to avoid zooming beyond the max values\n if (gesture._ctrl.state.pinch) gesture._ctrl.state.pinch.offset[0] = zoom;\n setZoom(zoom);\n });\n\n const wheelSub = wheelStream$\n .pipe(\n filter((state) => !state.pinching),\n sampleTime(10),\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n map((state) => state.delta.map((x) => x * options.wheelSpeed)), // Compute wheel speed\n map((movement) => movement.map((m: number) => m / phaserCamera.zoom)), // Adjust for current zoom value\n map((movement) => [phaserCamera.scrollX + movement[0], phaserCamera.scrollY + movement[1]]) // Compute new pinch\n )\n .subscribe(([x, y]) => {\n phaserCamera.setScroll(x, y);\n worldView$.next(phaserCamera.worldView);\n });\n\n function ignore(objectPool: ObjectPool, ignore: boolean) {\n objectPool.ignoreCamera(phaserCamera.id, ignore);\n }\n\n function centerOnCoord(tileCoord: Coord, tileWidth: number, tileHeight: number) {\n const pixelCoord = tileCoordToPixelCoord(tileCoord, tileWidth, tileHeight);\n centerOn(pixelCoord.x, pixelCoord.y);\n }\n\n function centerOn(x: number, y: number) {\n phaserCamera.centerOn(x, y);\n requestAnimationFrame(() => worldView$.next(phaserCamera.worldView));\n }\n\n function setScroll(x: number, y: number) {\n phaserCamera.setScroll(x, y);\n requestAnimationFrame(() => worldView$.next(phaserCamera.worldView));\n }\n\n return {\n phaserCamera,\n worldView$,\n zoom$,\n ignore,\n dispose: () => {\n pinchSub.unsubscribe();\n wheelSub.unsubscribe();\n gesture.destroy();\n phaserCamera.scene.scale.removeListener(\"resize\", onResize);\n },\n centerOnCoord,\n centerOn,\n setScroll,\n setZoom,\n };\n}\n","import { computed, observe, reaction } from \"mobx\";\nimport { from, map, mergeMap, pipe } from \"rxjs\";\nimport { filterNullish } from \"@latticexyz/utils\";\nimport { Camera, ChunkCoord, Chunks, Coord, EmbodiedEntity, ObjectPool } from \"./types\";\nimport { pixelToChunkCoord, coordEq } from \"./utils\";\nimport { CoordMap } from \"@latticexyz/utils\";\n\nfunction createRegistry() {\n const coordToIds = new CoordMap>();\n const idToCoord = new Map();\n\n function get(coord: Coord): Set {\n let set = coordToIds.get(coord);\n if (!set) {\n set = new Set();\n coordToIds.set(coord, set);\n }\n return set;\n }\n\n function set(id: string, coord: Coord) {\n // Remove from prev set\n const prevCoord = idToCoord.get(id);\n const idsAtPrevCoord = prevCoord && get(prevCoord);\n idsAtPrevCoord?.delete(id);\n\n // Add to new set\n const idsAtNewCoord = get(coord);\n idsAtNewCoord.add(id);\n\n // Set new idToCoord mapping\n idToCoord.set(id, coord);\n }\n\n function remove(id: string) {\n const prevCoord = idToCoord.get(id);\n const idsAtCoord = prevCoord && get(prevCoord);\n idsAtCoord?.delete(id);\n idToCoord.delete(id);\n }\n\n return { set, remove, get };\n}\n\nexport function createCulling(objectPool: ObjectPool, camera: Camera, chunks: Chunks) {\n const chunkRegistry = createRegistry();\n const disposer = new Map void>();\n\n const chunkToEntity = pipe(\n map((chunk: ChunkCoord) => from(chunkRegistry.get(chunk))), // Map to streams of entityIds\n mergeMap((entities) => entities), // Flatten the stream of entities\n map((entityId) => objectPool.get(entityId, \"Existing\")), // Map entityId to embodiedEntity\n filterNullish()\n );\n\n // Spawn entities when their chunk appears in the viewport\n const addedChunkSub = chunks.addedChunks$.pipe(chunkToEntity).subscribe((entity) => entity.spawn());\n\n // Despawn entites when their chunk disappears from the viewport\n const removedChunkSub = chunks.removedChunks$.pipe(chunkToEntity).subscribe((entity) => entity.despawn());\n\n // Keep track of entity's chunk\n function trackEntity(entity: EmbodiedEntity) {\n if (disposer.get(entity.id)) console.error(\"Entity is being tracked multiple times\", entity);\n const chunk = computed(() => pixelToChunkCoord(entity.position, chunks.chunkSize), { equals: coordEq });\n const dispose = reaction(\n () => chunk.get(),\n (newChunk) => {\n // Register the new chunk position\n chunkRegistry.set(entity.id, newChunk);\n\n // Check whether entity is in the viewport if it switched chunks\n const visible = chunks.visibleChunks.current.get(newChunk);\n if (visible) {\n entity.spawn();\n } else {\n entity.despawn();\n }\n },\n { fireImmediately: true }\n );\n disposer.set(entity.id, dispose);\n }\n\n // Setup tracking of entity chunks\n const disposeObjectPoolObserver = observe(objectPool.objects, (change) => {\n if (change.type === \"add\") {\n trackEntity(change.newValue as EmbodiedEntity);\n }\n if (change.type === \"delete\") {\n chunkRegistry.remove(change.oldValue.id);\n const dispose = disposer.get(change.oldValue.id);\n if (dispose) dispose();\n disposer.delete(change.oldValue.id);\n }\n });\n\n return {\n dispose: () => {\n for (const d of disposer.values()) d();\n disposeObjectPoolObserver();\n addedChunkSub.unsubscribe();\n removedChunkSub.unsubscribe();\n },\n };\n}\n","import { observable, runInAction } from \"mobx\";\nimport { isRectangle, isSprite } from \"./guards\";\nimport {\n EmbodiedEntity,\n GameObject,\n GameObjectComponent,\n GameObjectFunction,\n GameObjectTypes,\n PixelCoord,\n} from \"./types\";\nimport { removeAllTweens } from \"./utils\";\n\nexport function createEmbodiedEntity(\n id: string,\n group: Phaser.GameObjects.Group,\n type: Type,\n currentCameraFilter = 0\n): EmbodiedEntity {\n const position: PixelCoord = observable({ x: 0, y: 0 });\n const onOnce = new Map>();\n const onUpdate = new Map>();\n let activeGameObject: GameObject | undefined;\n const cameraFilter = { current: currentCameraFilter };\n\n /**\n * Syncronizes updates to game object positions to the EmbodiedEntity's position\n */\n function trackPositionUpdates(func: GameObjectFunction): GameObjectFunction {\n if (!modifiesPosition(func)) return func;\n\n return (gameObject) => {\n func(gameObject);\n runInAction(() => {\n position.x = gameObject.x;\n position.y = gameObject.y;\n });\n };\n }\n\n /**\n * Stores and executes the component.\n * Once and Update functions are stored.\n * Now and Once functions are executed if there is an active game object.\n * Now is executed first and awaited, before Once is executed.\n * @param component: GameObjectComponent definition, including id, and optional functions for now, once and update\n */\n async function setComponent({ id, now, once, update }: GameObjectComponent) {\n // Handle position update when setting the component\n const newPosition = once && modifiesPosition(once);\n if (newPosition) {\n runInAction(() => {\n position.x = newPosition.x ?? position.x;\n position.y = newPosition.y ?? position.y;\n });\n }\n\n // Store functions\n once && onOnce.set(id, trackPositionUpdates(once));\n update && onUpdate.set(id, trackPositionUpdates(update));\n\n // Execute functions\n if (activeGameObject && now) await trackPositionUpdates(now)(activeGameObject);\n if (activeGameObject && once) once(activeGameObject);\n }\n\n function hasComponent(id: string): boolean {\n return onOnce.has(id) || onUpdate.has(id);\n }\n\n function removeComponent(id: string, stop?: boolean) {\n onOnce.delete(id);\n onUpdate.delete(id);\n\n // Reset the entity and reapply all onOnce components\n if (activeGameObject) {\n reset(activeGameObject, stop);\n executeGameObjectFunctions(activeGameObject, onOnce.values());\n }\n }\n\n function reset(gameObject: GameObject, stop = true) {\n if (stop) {\n if (isSprite(gameObject, type)) gameObject.stop();\n removeAllTweens(gameObject);\n }\n gameObject.setDepth(10);\n gameObject.cameraFilter = cameraFilter.current;\n gameObject.resetPipeline(true, true);\n gameObject.setScale(1, 1);\n gameObject.setOrigin(0, 0);\n gameObject.setAlpha(1);\n gameObject.setScrollFactor(1);\n gameObject.clearMask();\n gameObject.setData(\"objectPoolId\", null);\n if (isSprite(gameObject, type)) {\n gameObject.clearTint();\n gameObject.setTexture(\"\");\n }\n if (isRectangle(gameObject, type)) {\n gameObject.width = 0;\n gameObject.height = 0;\n }\n }\n\n function setCameraFilter(filter: number) {\n cameraFilter.current = filter;\n if (activeGameObject) activeGameObject.cameraFilter = filter;\n }\n\n function spawn() {\n if (activeGameObject) return;\n const gameObject: GameObject = group.get();\n reset(gameObject);\n\n // Run all functions that are supposed to run once\n executeGameObjectFunctions(gameObject, onOnce.values());\n\n // Bind all functions that are supposed to run on update\n // gameObject.onUpdate = () => executeGameObjectFunctions(gameObject, onUpdate.values());\n\n gameObject.setActive(true);\n gameObject.setVisible(true);\n gameObject.setData(\"objectPoolId\", id);\n activeGameObject = gameObject;\n }\n\n function despawn() {\n if (activeGameObject) {\n group.killAndHide(activeGameObject);\n }\n activeGameObject = undefined;\n }\n\n return { setComponent, hasComponent, removeComponent, spawn, despawn, position, id, setCameraFilter, type };\n}\n\nfunction executeGameObjectFunctions(\n gameObject: GameObject,\n functions: Iterable>\n) {\n if (!gameObject) return;\n for (const func of functions) {\n func(gameObject);\n }\n}\n\nfunction modifiesPosition(\n func: GameObjectFunction\n): Partial | undefined {\n let newPosition: Partial | undefined = undefined;\n const gameObjectProxy = new Proxy(\n { x: undefined, y: undefined },\n {\n get: (_, prop) => {\n if (prop === \"setPosition\") return (x: number, y: number) => (newPosition = { x, y });\n if (prop === \"setX\") return (x: number) => (newPosition = { x });\n if (prop === \"setY\") return (y: number) => (newPosition = { y });\n return () => void 0;\n },\n set: (_, prop, value) => {\n if (prop === \"x\") newPosition = newPosition ? { ...newPosition, x: value } : { x: value };\n if (prop === \"y\") newPosition = newPosition ? { ...newPosition, y: value } : { y: value };\n return true;\n },\n }\n );\n func(gameObjectProxy as GameObject);\n return newPosition;\n}\n","import {\n Assets,\n CameraConfig,\n LayerConfig,\n MapConfig,\n MapsConfig,\n SceneConfig,\n TilesetConfig,\n Animation,\n GameObjectTypes,\n GameObject,\n Sprite,\n} from \"./types\";\n\n// Add type safety to config definitions\n\nexport function defineAssetsConfig(assets: A) {\n return assets;\n}\n\nexport function defineMapConfig, L extends LayerConfig>(\n config: MapConfig\n) {\n return config;\n}\n\nexport function defineSceneConfig<\n A extends Assets,\n S extends { [key: string]: Sprite },\n T extends TilesetConfig,\n M extends MapsConfig,\n Ans extends Animation[]\n>(config: SceneConfig) {\n return config;\n}\n\nexport function defineScaleConfig(config: Phaser.Types.Core.ScaleConfig) {\n return config;\n}\n\nexport function defineCameraConfig(config: CameraConfig) {\n return config;\n}\n\nexport function isSprite(\n gameObject: Phaser.GameObjects.GameObject,\n type: keyof GameObjectTypes\n): gameObject is GameObject<\"Sprite\"> {\n return type === \"Sprite\";\n}\n\nexport function isRectangle(\n gameObject: Phaser.GameObjects.GameObject,\n type: keyof GameObjectTypes\n): gameObject is GameObject<\"Rectangle\"> {\n return type === \"Rectangle\";\n}\n","import { EmbodiedEntity, GameObjectTypes } from \"./types\";\nimport { createEmbodiedEntity } from \"./createEmbodiedEntity\";\nimport { observable } from \"mobx\";\nimport { mapObject } from \"@latticexyz/utils\";\nimport { GameObjectClasses } from \"./constants\";\n\ntype ObjectPoolReturnType = Type extends keyof GameObjectTypes\n ? EmbodiedEntity\n : EmbodiedEntity | undefined;\n\nfunction isGameObjectType(t: string): t is keyof GameObjectTypes {\n return Object.keys(GameObjectClasses).includes(t);\n}\n\nexport function createObjectPool(scene: Phaser.Scene) {\n const groups = mapObject(GameObjectClasses, (classType) => scene.add.group({ classType })) as {\n [key in keyof typeof GameObjectClasses]: Phaser.GameObjects.Group;\n };\n\n const objects = observable(new Map>());\n const cameraFilter = { current: 0 };\n\n function get(\n entity: number | string,\n type: Type\n ): ObjectPoolReturnType {\n if (typeof entity === \"number\") entity = String(entity);\n let embodiedEntity = objects.get(entity);\n if (!isGameObjectType(type)) {\n if (!embodiedEntity) return undefined as ObjectPoolReturnType;\n return embodiedEntity as ObjectPoolReturnType;\n }\n\n // If the entity doesn't exist yet, we create a new one and track its chunk\n if (!embodiedEntity) {\n embodiedEntity = createEmbodiedEntity(entity, groups[type], type, cameraFilter.current);\n }\n\n if (!objects.has(entity)) {\n objects.set(entity, embodiedEntity);\n }\n\n // Don't spawn here, let culling take care of spawning\n // embodiedEntity.spawn();\n\n return embodiedEntity as ObjectPoolReturnType;\n }\n\n function remove(entity: number | string) {\n if (typeof entity === \"number\") entity = String(entity);\n const object = objects.get(entity);\n if (object) object.despawn();\n objects.delete(entity);\n }\n\n function ignoreCamera(cameraId: number, ignore: boolean) {\n if (ignore) {\n cameraFilter.current |= cameraId;\n } else {\n cameraFilter.current &= ~cameraId;\n }\n\n for (const embodiedEntity of objects.values()) {\n embodiedEntity.setCameraFilter(cameraFilter.current);\n }\n }\n\n return { get, remove, objects, groups, ignoreCamera };\n}\n","import { ChunkedTilemap } from \"./types\";\nimport { ChunkCoord, Chunks, WorldCoord } from \"../types\";\nimport { mod, chunkToPixelCoord, tileCoordToChunkCoord, chunkCoordToTileCoord } from \"../utils\";\nimport { CoordMap } from \"@latticexyz/utils\";\nimport { MultiHueTintPipeline } from \"../pipelines\";\nimport { pickRandom } from \"@latticexyz/utils\";\n\nexport type ChunkedTilemapConfig = {\n scene: Phaser.Scene;\n tilesets: { [key: string]: Phaser.Tilemaps.Tileset };\n layerConfig: {\n layers: { [id in LayerKeys]: { tilesets: string[]; hasHueTintShader?: boolean } };\n defaultLayer: LayerKeys;\n };\n chunks: Chunks;\n backgroundTile: [number, ...number[]];\n tiles: { [layer in LayerKeys]: CoordMap };\n tileWidth: number;\n tileHeight: number;\n};\n\nexport function createChunkedTilemap(\n params: ChunkedTilemapConfig\n): ChunkedTilemap {\n const { scene, tilesets, layerConfig, chunks, backgroundTile, tiles, tileWidth, tileHeight } = params;\n const relevantTilesets = Object.keys(layerConfig.layers)\n .map((key) => layerConfig.layers[key as LayerKeys].tilesets)\n .flat();\n\n // Chunk pixel size must be a multiple of tile witdth and height.\n if (mod(chunks.chunkSize, tileWidth) !== 0 || mod(chunks.chunkSize, tileHeight) !== 0) {\n throw new Error(\"Chunks pixel size must be a multiple of tile width and height to be used with chunked tilemap\");\n }\n\n /*****************************************************\n Setup \n *****************************************************/\n\n const maps = new CoordMap();\n const chunkTileSize = { x: chunks.chunkSize / tileWidth, y: chunks.chunkSize / tileHeight };\n const disposer = new Set<() => void>();\n const visible = { current: true };\n\n // Render all current chunks\n for (const chunk of chunks.visibleChunks.current.coords()) {\n renderChunk(chunk);\n }\n // Render maps when they're in the viewport\n const addedChunkSub = chunks.addedChunks$.subscribe((chunk) => {\n renderChunk(chunk);\n });\n\n // Remove maps that are not in the viewport\n const removedChunkSub = chunks.removedChunks$.subscribe((chunk) => {\n destroyChunk(chunk);\n });\n\n disposer.add(() => addedChunkSub?.unsubscribe());\n disposer.add(() => removedChunkSub?.unsubscribe);\n\n /*****************************************************\n Functions \n *****************************************************/\n\n function createLayers(\n map: Phaser.Tilemaps.Tilemap,\n scene: Phaser.Scene,\n x: number,\n y: number,\n width: number,\n height: number\n ): {\n layers: Phaser.Tilemaps.TilemapLayer[];\n defaultLayer: Phaser.Tilemaps.TilemapLayer;\n } {\n const layers: { [key: string]: Phaser.Tilemaps.TilemapLayer } = {};\n\n for (const key of Object.keys(layerConfig.layers)) {\n const layer = layerConfig.layers[key as LayerKeys];\n const tilemapLayer = map.createBlankLayer(\n key,\n layer.tilesets.map((id) => tilesets[id]),\n x,\n y,\n width,\n height\n );\n if (!tilemapLayer) {\n console.error(`Adding tilemap layer ${key} failed.`);\n continue;\n }\n layers[key] = tilemapLayer;\n const renderer = scene.game.renderer as Phaser.Renderer.WebGL.WebGLRenderer;\n if (layer.hasHueTintShader && renderer?.pipelines) {\n layers[key].pipeline = renderer.pipelines.get(MultiHueTintPipeline.KEY);\n }\n }\n\n return { layers: Object.values(layers), defaultLayer: layers[layerConfig.defaultLayer] };\n }\n\n function createMap(chunkCoord: WorldCoord): Phaser.Tilemaps.Tilemap {\n const data: Phaser.Tilemaps.MapData = new Phaser.Tilemaps.MapData({\n tileHeight,\n tileWidth,\n width: chunkTileSize.x,\n height: chunkTileSize.y,\n tilesets: Object.entries(tilesets)\n .filter(([key]) => relevantTilesets.includes(key))\n .map(([, tileset]) => tileset),\n });\n\n const map = new Phaser.Tilemaps.Tilemap(scene, data);\n const topLeft = chunkToPixelCoord(chunkCoord, chunks.chunkSize);\n const { defaultLayer } = createLayers(map, scene, topLeft.x, topLeft.y, chunkTileSize.x, chunkTileSize.y);\n map.setLayer(defaultLayer);\n maps.set(chunkCoord, map);\n return map;\n }\n\n function getMapAtChunkCoord(chunkCoord: WorldCoord): Phaser.Tilemaps.Tilemap {\n return maps.get(chunkCoord) || createMap(chunkCoord);\n }\n\n function getMapAtTileCoord(tileCoord: WorldCoord): Phaser.Tilemaps.Tilemap {\n const chunkCoord = tileCoordToChunkCoord(tileCoord, tileWidth, tileHeight, chunks.chunkSize);\n return getMapAtChunkCoord(chunkCoord);\n }\n\n function destroyChunk(chunkCoord: WorldCoord, force?: boolean) {\n if ((!visible.current && !force) || !maps.has(chunkCoord)) return;\n const map = getMapAtChunkCoord(chunkCoord);\n map.destroy();\n maps.delete(chunkCoord);\n }\n\n function putTileAt(coord: WorldCoord, tile: number, layer?: string, tint?: number) {\n if (!visible.current) return;\n const map = getMapAtTileCoord(coord);\n const putTile = map.putTileAt(tile, mod(coord.x, chunkTileSize.x), mod(coord.y, chunkTileSize.y), undefined, layer);\n if (putTile == null) {\n throw new Error(\"putTileAt failed\");\n }\n\n putTile.width = map.tileWidth;\n putTile.height = map.tileHeight;\n\n if (tint) {\n putTile.tint = tint;\n }\n }\n\n function renderChunk(chunkCoord: ChunkCoord) {\n if (!visible.current) return;\n const map = getMapAtChunkCoord(chunkCoord);\n const topLeftCoord = chunkCoordToTileCoord(chunkCoord, tileWidth, tileHeight, chunks.chunkSize);\n\n for (const layer of Object.keys(layerConfig.layers))\n map.forEachTile(\n (tile) => {\n const coord = { x: topLeftCoord.x + tile.x, y: topLeftCoord.y + tile.y };\n const defaultIndex = layer === layerConfig.defaultLayer ? pickRandom(backgroundTile) : -1;\n const index = tiles[layer as LayerKeys].get(coord) || defaultIndex;\n tile.index = index;\n },\n undefined,\n undefined,\n undefined,\n undefined,\n undefined,\n undefined,\n layer\n );\n }\n\n function dispose() {\n for (const map of maps.values()) {\n map.destroy();\n }\n maps.clear();\n for (const d of disposer) {\n d();\n }\n }\n\n function size() {\n return maps.size;\n }\n\n function setVisible(v: boolean) {\n if (v === visible.current) return;\n visible.current = v;\n for (const chunk of chunks.visibleChunks.current.coords()) {\n visible.current ? renderChunk(chunk) : destroyChunk(chunk, true);\n }\n }\n\n return { size, putTileAt, dispose, setVisible, visible, tileWidth, tileHeight };\n}\n","import { VirtualTilemap } from \"./types\";\nimport { WorldCoord } from \"../types\";\nimport { tileCoordToChunkCoord } from \"../utils\";\nimport { CoordMap } from \"@latticexyz/utils\";\nimport { ChunkedTilemapConfig, createChunkedTilemap } from \"./createChunkedTilemap\";\n\nexport function createVirtualTilemap(\n config: Omit, \"tiles\">\n): VirtualTilemap {\n const {\n chunks,\n layerConfig: { layers, defaultLayer },\n tileWidth,\n tileHeight,\n } = config;\n\n const tiles: { [key in LayerKeys]: CoordMap } = {} as never;\n\n for (const layerKey of Object.keys(layers)) {\n tiles[layerKey as LayerKeys] = new CoordMap();\n }\n\n const chunkedTilemap = createChunkedTilemap({ ...config, tiles });\n\n function putTileAt(coord: WorldCoord, tile: TileKeys, layer?: LayerKeys, tint?: number) {\n // Update virtual tilemap\n tiles[layer || defaultLayer].set(coord, tile);\n\n // Immediately update the physical tile if the chunk is in view\n const chunk = tileCoordToChunkCoord(coord, tileWidth, tileHeight, chunks.chunkSize);\n if (chunkedTilemap.visible && chunks.visibleChunks.current.get(chunk)) {\n chunkedTilemap.putTileAt(coord, tile, layer, tint);\n }\n }\n\n return { ...chunkedTilemap, putTileAt, tiles };\n}\n","import { AnimatedTilemap } from \".\";\nimport { WorldCoord } from \"../types\";\nimport { mod } from \"../utils\";\nimport { CoordMap } from \"@latticexyz/utils\";\nimport { ChunkedTilemapConfig } from \"./createChunkedTilemap\";\nimport { createVirtualTilemap } from \"./createVirtualTilemap\";\nimport { TileAnimation } from \"./types\";\n\nexport function createAnimatedTilemap(\n config: Omit, \"tiles\"> & { animationInterval: number }\n): AnimatedTilemap {\n const {\n layerConfig: { layers, defaultLayer },\n animationInterval,\n scene,\n } = config;\n\n const defaultLayerKey = defaultLayer as LayerKeys;\n let lastStep = 0;\n const animations: { [key in AnimationKeys]?: { frames: TileAnimation; index: number } } = {};\n\n const animatedTiles: { [key in LayerKeys]: CoordMap } = {} as never;\n for (const layerKey of Object.keys(layers)) {\n animatedTiles[layerKey as LayerKeys] = new CoordMap();\n }\n\n const pausedAnimations: { [key in LayerKeys]: CoordMap } = {} as never;\n for (const layerKey of Object.keys(layers)) {\n pausedAnimations[layerKey as LayerKeys] = new CoordMap();\n }\n\n const virtualTilemap = createVirtualTilemap(config);\n\n function registerAnimation(animationKey: AnimationKeys, frames: TileAnimation) {\n animations[animationKey] = { frames, index: 0 };\n }\n\n function putAnimationAt(coord: WorldCoord, animationKey: AnimationKeys, layer: LayerKeys = defaultLayerKey) {\n animatedTiles[layer].set(coord, animationKey);\n }\n\n function removeAnimationAt(coord: WorldCoord, layer: LayerKeys = defaultLayerKey) {\n const animationKey = animatedTiles[layer].get(coord);\n const animation = animationKey && animations[animationKey];\n animatedTiles[layer].delete(coord);\n if (animation) virtualTilemap.putTileAt(coord, animation.frames[0], layer);\n }\n\n function pauseAnimationAt(coord: WorldCoord, layer: LayerKeys = defaultLayerKey) {\n const animationKey = animatedTiles[layer].get(coord);\n if (!animationKey) return;\n pausedAnimations[layer].set(coord, animationKey);\n removeAnimationAt(coord, layer);\n }\n\n function resumeAnimationAt(coord: WorldCoord, layer: LayerKeys = defaultLayerKey) {\n const animationKey = pausedAnimations[layer].get(coord);\n if (!animationKey) return;\n pausedAnimations[layer].delete(coord);\n putAnimationAt(coord, animationKey, layer);\n }\n\n function animationStep() {\n // Increase animation index for every animation\n for (const animationKey of Object.keys(animations) as AnimationKeys[]) {\n const animation = animations[animationKey];\n if (animation) animation.index = mod(animation.index + 1, animation.frames.length);\n }\n\n // Update every animated tile\n for (const layerKey of Object.keys(animatedTiles) as LayerKeys[]) {\n const layer = animatedTiles[layerKey];\n for (const coord of layer.coords()) {\n const animationKey = layer.get(coord);\n const animation = animationKey && animations[animationKey];\n if (!animation) continue;\n const currentFrame = animation.frames[animation.index];\n virtualTilemap.putTileAt(coord, currentFrame, layerKey);\n }\n }\n }\n\n function update(time: number) {\n if (time < lastStep + animationInterval) return;\n lastStep = time;\n animationStep();\n }\n\n function dispose() {\n scene.events.removeListener(\"update\", update);\n virtualTilemap.dispose();\n }\n\n scene.events.addListener(\"update\", update);\n\n return {\n ...virtualTilemap,\n putAnimationAt,\n removeAnimationAt,\n pauseAnimationAt,\n resumeAnimationAt,\n registerAnimation,\n dispose,\n } as unknown as AnimatedTilemap;\n}\n","import {\n bufferCount,\n distinctUntilChanged,\n filter,\n fromEvent,\n map,\n merge,\n Observable,\n pairwise,\n scan,\n Subject,\n throttleTime,\n} from \"rxjs\";\nimport { observable, reaction, runInAction } from \"mobx\";\nimport { Area } from \"./types\";\nimport { filterNullish } from \"@latticexyz/utils\";\n\nexport type Key = keyof typeof Phaser.Input.Keyboard.KeyCodes | \"POINTER_LEFT\" | \"POINTER_RIGHT\";\n\nexport function createInput(inputPlugin: Phaser.Input.InputPlugin) {\n const disposers = new Set<() => void>();\n const enabled = { current: true };\n\n inputPlugin.mouse?.disableContextMenu();\n\n function disableInput() {\n enabled.current = false;\n }\n\n function enableInput() {\n enabled.current = true;\n }\n\n function setCursor(cursor: string) {\n inputPlugin.setDefaultCursor(cursor);\n }\n\n const keyboard$ = new Subject();\n\n const pointermove$ = fromEvent(document, \"mousemove\").pipe(\n filter(() => enabled.current),\n map(() => {\n return { pointer: inputPlugin.manager?.activePointer };\n }),\n filterNullish()\n );\n\n const pointerdown$: Observable<{ pointer: Phaser.Input.Pointer; event: MouseEvent }> = fromEvent(\n document,\n \"mousedown\"\n ).pipe(\n filter(() => enabled.current),\n map((event) => ({ pointer: inputPlugin.manager?.activePointer, event: event as MouseEvent })),\n filterNullish()\n );\n\n const pointerup$: Observable<{ pointer: Phaser.Input.Pointer; event: MouseEvent }> = fromEvent(\n document,\n \"mouseup\"\n ).pipe(\n filter(() => enabled.current),\n map((event) => ({ pointer: inputPlugin.manager?.activePointer, event: event as MouseEvent })),\n filterNullish()\n );\n\n // Click stream\n const click$ = merge(pointerdown$, pointerup$).pipe(\n filter(() => enabled.current),\n map<{ pointer: Phaser.Input.Pointer; event: MouseEvent }, [boolean, number]>(({ event }) => [\n event.type === \"mousedown\" && event.button === 0,\n Date.now(),\n ]), // Map events to whether the left button is down and the current timestamp\n bufferCount(2, 1), // Store the last two timestamps\n filter(([prev, now]) => prev[0] && !now[0] && now[1] - prev[1] < 250), // Only care if button was pressed before and is not anymore and it happened within 500ms\n map(() => inputPlugin.manager?.activePointer), // Return the current pointer\n filterNullish()\n );\n\n // Double click stream\n const doubleClick$ = pointerdown$.pipe(\n filter(() => enabled.current),\n map(() => Date.now()), // Get current timestamp\n bufferCount(2, 1), // Store the last two timestamps\n filter(([prev, now]) => now - prev < 500), // Filter clicks with more than 500ms distance\n throttleTime(500), // A third click within 500ms is not counted as another double click\n map(() => inputPlugin.manager?.activePointer), // Return the current pointer\n filterNullish()\n );\n\n // Right click stream\n const rightClick$ = merge(pointerdown$, pointerup$).pipe(\n filter(({ pointer }) => enabled.current && pointer.rightButtonDown()),\n map(() => inputPlugin.manager?.activePointer), // Return the current pointer\n filterNullish()\n );\n\n // Drag stream\n const drag$ = merge(\n pointerdown$.pipe(map(() => undefined)), // Reset the drag on left click\n merge(pointerup$, pointermove$).pipe(\n pairwise(), // Take the last two move or pointerup events\n scan<[{ pointer: Phaser.Input.Pointer }, { pointer: Phaser.Input.Pointer }], Area | undefined>(\n (acc, [{ pointer: prev }, { pointer: curr }]) =>\n curr.leftButtonDown() // If the left butten is pressed...\n ? prev.leftButtonDown() && acc // If the previous event wasn't mouseup and if the drag already started...\n ? { ...acc, width: curr.worldX - acc.x, height: curr.worldY - acc.y } // Update the width/height\n : { x: curr.worldX, y: curr.worldY, width: 0, height: 0 } // Else start the drag\n : undefined,\n undefined\n ),\n filterNullish(),\n filter((area) => Math.abs(area.width) > 10 && Math.abs(area.height) > 10) // Prevent clicking to be mistaken as a drag\n )\n ).pipe(\n filter(() => enabled.current),\n distinctUntilChanged() // Prevent same value to be emitted in a row\n );\n\n const pressedKeys = observable(new Set());\n const phaserKeyboard = inputPlugin.keyboard;\n const codeToKey = new Map();\n\n // Listen to all keys\n for (const key of Object.keys(Phaser.Input.Keyboard.KeyCodes)) addKey(key);\n\n // Subscriptions\n const keySub = keyboard$.pipe(filter(() => enabled.current)).subscribe((key) => {\n const keyName = codeToKey.get(key.keyCode);\n if (!keyName) return;\n runInAction(() => {\n if (key.isDown) pressedKeys.add(keyName);\n if (key.isUp) pressedKeys.delete(keyName);\n });\n });\n disposers.add(() => keySub?.unsubscribe());\n\n const pointerSub = merge(pointerdown$, pointerup$).subscribe(({ pointer }) => {\n runInAction(() => {\n if (pointer.leftButtonDown()) pressedKeys.add(\"POINTER_LEFT\");\n else pressedKeys.delete(\"POINTER_LEFT\");\n\n if (pointer.rightButtonDown()) pressedKeys.add(\"POINTER_RIGHT\");\n else pressedKeys.delete(\"POINTER_RIGHT\");\n });\n //\n });\n disposers.add(() => pointerSub?.unsubscribe());\n\n // Adds a key to include in the state\n function addKey(key: string) {\n if (!phaserKeyboard) {\n console.warn(`Adding key ${key} failed. No phaser keyboard detected.`);\n return;\n }\n\n // Add the key to the phaser keyboard input plugin\n const keyObj = phaserKeyboard.addKey(key, false);\n // Store the cleartext key map\n codeToKey.set(keyObj.keyCode, key as Key);\n\n keyObj.removeAllListeners();\n keyObj.emitOnRepeat = true;\n keyObj.on(\"down\", (keyEvent: Phaser.Input.Keyboard.Key) => keyboard$.next(keyEvent));\n keyObj.on(\"up\", (keyEvent: Phaser.Input.Keyboard.Key) => keyboard$.next(keyEvent));\n }\n\n function onKeyPress(keySelector: (pressedKeys: Set) => boolean, callback: () => void) {\n const disposer = reaction(\n () => keySelector(pressedKeys),\n (passes) => {\n if (passes) callback();\n },\n { fireImmediately: true }\n );\n disposers.add(disposer);\n }\n\n function dispose() {\n for (const disposer of disposers) {\n disposer();\n }\n }\n\n return {\n keyboard$: keyboard$.asObservable(),\n pointermove$,\n pointerdown$,\n pointerup$,\n click$,\n doubleClick$,\n rightClick$,\n drag$,\n pressedKeys,\n dispose,\n disableInput,\n enableInput,\n setCursor,\n enabled,\n onKeyPress,\n };\n}\n","import { defineScene } from \"./defineScene\";\nimport { definePhaserConfig } from \"./definePhaserConfig\";\nimport { load } from \"./utils\";\nimport { AssetType } from \"./constants\";\nimport { Scenes, Maps, ScenesConfig, Tilesets, PhaserEngineConfig } from \"./types\";\nimport { createChunks } from \"./createChunks\";\nimport { createCamera } from \"./createCamera\";\nimport { createCulling } from \"./createCulling\";\nimport { createObjectPool } from \"./createObjectPool\";\nimport { createAnimatedTilemap } from \"./tilemap\";\nimport { generateFrames } from \"./utils\";\nimport { createInput } from \"./createInput\";\nimport { deferred } from \"@latticexyz/utils\";\n\nexport async function createPhaserEngine(options: PhaserEngineConfig) {\n const { scale, sceneConfig, cameraConfig, cullingChunkSize } = options;\n\n // Set up Phaser scenes\n const sceneConstructors = Object.keys(sceneConfig).map((key) => {\n const { preload, create, update } = sceneConfig[key];\n return defineScene({ key, preload, create, update });\n });\n\n const phaserConfig = definePhaserConfig({ scenes: sceneConstructors, scale });\n const game = new Phaser.Game(phaserConfig);\n\n // Wait for phaser to boot\n const [resolve, , promise] = deferred();\n\n game.events.on(\"ready\", resolve);\n\n // skip texture loading in headless mode for unit testing\n if (phaserConfig.type === Phaser.HEADLESS) {\n game.textures.emit(\"ready\");\n }\n\n await promise;\n\n // Bind the game's size to the window size\n function resize() {\n const width = window.innerWidth / game.scale.zoom;\n const height = window.innerHeight / game.scale.zoom;\n game.scale.resize(width, height);\n }\n resize();\n window.addEventListener(\"resize\", resize);\n\n // Create scenes object\n const partialScenes: Partial> = {};\n\n for (const phaserScene of game.scene.getScenes(false)) {\n const key = phaserScene.scene.key as keyof S;\n const config = sceneConfig[key];\n\n // Load assets\n for (const [assetKey, asset] of Object.entries(sceneConfig[key].assets)) {\n await load(phaserScene, (loader) => {\n if (asset.type === AssetType.Image) {\n loader.image(assetKey, asset.path);\n } else if (asset.type === AssetType.SpriteSheet) {\n loader.spritesheet(assetKey, asset.path, asset.options);\n } else if (asset.type === AssetType.MultiAtlas) {\n loader.multiatlas(assetKey, asset.path, asset.options.imagePath);\n }\n });\n }\n\n // Setup object pool\n const objectPool = createObjectPool(phaserScene);\n\n // Setup camera\n const camera = createCamera(phaserScene.cameras.main, cameraConfig);\n\n // Setup chunks for viewport culling\n const cullingChunks = createChunks(camera.worldView$, cullingChunkSize);\n\n // Setup viewport culling\n const culling = createCulling(objectPool, camera, cullingChunks);\n\n // Setup sprite animations\n for (const anim of config.animations) {\n phaserScene.anims.create({\n key: anim.key,\n frames: generateFrames(phaserScene.anims, anim),\n frameRate: anim.frameRate,\n repeat: anim.repeat,\n });\n }\n\n // Setup tilesets\n const emptyMap = new Phaser.Tilemaps.Tilemap(phaserScene, new Phaser.Tilemaps.MapData());\n const partialTilesets: Tilesets = {};\n for (const [tilesetKey, { assetKey, tileWidth, tileHeight }] of Object.entries(sceneConfig[key][\"tilesets\"])) {\n const tileset = emptyMap.addTilesetImage(tilesetKey, assetKey, tileWidth, tileHeight);\n if (!tileset) {\n console.error(`Adding tileset ${tilesetKey} failed.`);\n continue;\n }\n partialTilesets[tilesetKey] = tileset;\n }\n const tilesets = partialTilesets as Tilesets;\n\n // Setup maps\n const partialMaps: Partial> = {};\n for (const mapKey of Object.keys(config.maps)) {\n const { layers, backgroundTile, tileWidth, tileHeight, animationInterval, tileAnimations, chunkSize } =\n config.maps[mapKey];\n\n // Setup chunks\n const chunks = createChunks(camera.worldView$, chunkSize);\n\n const map = createAnimatedTilemap({\n scene: phaserScene,\n tilesets,\n layerConfig: layers,\n chunks,\n tileWidth,\n tileHeight,\n backgroundTile,\n animationInterval,\n });\n\n // Register tilemap animations\n if (tileAnimations) {\n for (const [key, frames] of Object.entries(tileAnimations)) {\n map.registerAnimation(key, frames);\n }\n }\n\n partialMaps[mapKey as keyof (typeof sceneConfig)[typeof key][\"maps\"]] = map;\n }\n const maps = partialMaps as Maps;\n\n const input = createInput(phaserScene.input);\n\n partialScenes[key] = { phaserScene, objectPool, camera, culling, maps, input, config: sceneConfig[key] };\n }\n const scenes = partialScenes as Scenes;\n\n return {\n game,\n scenes,\n dispose: () => {\n game.destroy(true);\n for (const key of Object.keys(scenes)) {\n const scene = scenes[key];\n scene.camera.dispose();\n scene.culling.dispose();\n scene.input.dispose();\n for (const map of Object.values(scene.maps)) {\n map.dispose();\n }\n }\n\n window.removeEventListener(\"resize\", resize);\n },\n };\n}\n","import { chunkToPixelCoord } from \"./utils\";\nimport { CoordMap } from \"@latticexyz/utils\";\nimport { Camera, Chunks, ObjectPool } from \"./types\";\nimport { AnimatedTilemap } from \"./tilemap\";\n\nfunction getRandomColor() {\n const red = Math.random() * 0xff;\n const green = Math.random() * 0xff;\n const blue = Math.random() * 0xff;\n return red * 0xffff + green * 0xff + blue;\n}\n\nexport function createDebugger(\n camera: Camera,\n chunks: Chunks,\n scene: Phaser.Scene,\n objectPool: ObjectPool,\n map: AnimatedTilemap\n) {\n const options = {\n logViewport: false,\n visualizeChunks: true,\n visualizeViewport: false,\n logNumVisibleChunks: false,\n logObjectStats: false,\n logMaps: true,\n };\n\n const visualChunks = new CoordMap();\n const worldViewRect = scene.add.rectangle(0, 0, 1, 1, 0xff0000, 0.2);\n worldViewRect.setInteractive();\n worldViewRect.on(\"pointerup\", () => {\n console.log(\"clicked\", worldViewRect);\n });\n\n camera.worldView$.subscribe((worldView) => {\n if (options.logViewport) {\n console.log(worldView);\n }\n\n if (options.visualizeViewport) {\n worldViewRect.setScale(worldView.width, worldView.height);\n worldViewRect.setPosition(worldView.centerX, worldView.centerY);\n }\n\n if (options.logObjectStats) {\n console.log(\n `Entities: ${objectPool.objects.size} / Pool size: ${Object.values(objectPool.groups).reduce(\n (acc, curr) => acc + curr.getChildren().length,\n 0\n )} / Pool active: ${Object.values(objectPool.groups).reduce((acc, curr) => acc + curr.countActive(), 0)}`\n );\n }\n\n if (options.logMaps) {\n console.log(\"Num maps\", map.size());\n }\n });\n\n chunks.addedChunks$.subscribe((chunk) => {\n if (options.visualizeChunks) {\n const pixelCoord = chunkToPixelCoord(chunk, chunks.chunkSize);\n const visualChunk = scene.add.rectangle(\n pixelCoord.x + chunks.chunkSize / 2,\n pixelCoord.y + chunks.chunkSize / 2,\n chunks.chunkSize,\n chunks.chunkSize,\n getRandomColor(),\n 0.5\n );\n visualChunk.setInteractive();\n visualChunk.on(\"pointerup\", () => {\n console.log(\"clicked\", visualChunk);\n });\n visualChunks.set(chunk, visualChunk);\n }\n\n if (options.logNumVisibleChunks) {\n console.log(\"Number of visible chunks: \", visualChunks.size);\n }\n });\n\n chunks.removedChunks$.subscribe((chunk) => {\n if (options.visualizeChunks) {\n visualChunks.get(chunk)?.destroy();\n visualChunks.delete(chunk);\n }\n\n if (options.logNumVisibleChunks) {\n console.log(\"Number of visible chunks: \", visualChunks.size);\n }\n });\n}\n"],"mappings":"ukBAAA,IAAAA,GAAA,GAAAC,GAAAD,GAAA,eAAAE,GAAA,sBAAAC,GAAA,gCAAAC,EAAA,yBAAAC,EAAA,gBAAAC,GAAA,cAAAC,GAAA,0BAAAC,GAAA,sBAAAC,EAAA,YAAAC,GAAA,qCAAAC,GAAA,0BAAAC,GAAA,iBAAAC,GAAA,yBAAAC,GAAA,iBAAAC,GAAA,kBAAAC,GAAA,mBAAAC,GAAA,gBAAAC,GAAA,qBAAAC,GAAA,uBAAAC,GAAA,yBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,oBAAAC,GAAA,uBAAAC,GAAA,sBAAAC,GAAA,gBAAAC,GAAA,sBAAAC,GAAA,mBAAAC,GAAA,oBAAAC,GAAA,qBAAAC,GAAA,gBAAAC,GAAA,aAAAC,GAAA,iBAAAC,GAAA,SAAAC,GAAA,QAAAC,EAAA,0BAAAC,GAAA,sBAAAC,EAAA,oBAAAC,EAAA,0BAAAC,EAAA,0BAAAC,EAAA,UAAAC,KAAA,eAAAC,GAAA3C,IAAA,IAAA4C,GAAO,kBCAP,IAAAC,GAAyB,6BAWzB,eAAsBC,GAAMC,EAA4BC,EAA4C,CAClG,GAAM,CAACC,EAAS,CAAEC,CAAO,KAAI,aAAe,EACtC,CAAE,QAAAC,CAAQ,EAAIJ,EACpB,GAAI,GAACI,EAAQ,OAAS,CAACA,EAAQ,MAAM,QAGrC,OAAKH,GAAS,oBACZI,EAAgBD,CAAO,EAIzBA,EAAQ,MAAM,OAAO,IAAI,CACvB,GAAGJ,EACH,WAAY,CAACD,EAAOK,IAAY,CAC9BJ,EAAO,YAAcA,EAAO,WAAWD,EAAOK,CAAO,EACrDF,EAAQ,CACV,CACF,CAAC,EACMC,CACT,CAEO,SAASE,EAAgBC,EAA2C,CACzE,IAAMC,EAAeD,EAAW,MAAM,OACtC,QAAWP,KAASQ,EAAa,OAC3BR,EAAM,UAAUO,CAAU,GAC5BP,EAAM,KAAK,CAGjB,CCvCO,SAASS,EAAIC,EAAWC,EAAW,CACxC,OAASD,EAAIC,EAAKA,GAAKA,CACzB,CCAO,IAAMC,GAAqB,CAAE,EAAG,EAAG,EAAG,CAAE,EAExC,SAASC,GAAiCC,EAA4BC,EAAsB,CACjG,IAAMC,EAA2B,CAAC,EAElC,OAAAF,EAAa,QAASG,GAAgB,CACpC,IAAMC,EAAU,CAAE,EAAGD,EAAY,EAAIF,EAAc,EAAGE,EAAY,EAAIF,CAAa,EAC7EI,EAAW,CAAE,GAAIF,EAAY,EAAI,GAAKF,EAAe,EAAG,EAAGE,EAAY,EAAIF,CAAa,EACxFK,EAAa,CAAE,EAAGH,EAAY,EAAIF,EAAc,GAAIE,EAAY,EAAI,GAAKF,EAAe,CAAE,EAC1FM,EAAc,CAAE,GAAIJ,EAAY,EAAI,GAAKF,EAAe,EAAG,GAAIE,EAAY,EAAI,GAAKF,EAAe,CAAE,EAC3GC,EAAW,KAAKE,EAASC,EAAUC,EAAYC,CAAW,CAC5D,CAAC,EAEML,CACT,CAEO,SAASM,GAAaC,EAAuBC,EAAY,CAC9D,OACED,EAAU,GAAKC,EAAK,GACpBD,EAAU,EAAIC,EAAK,EAAIA,EAAK,OAC5BD,EAAU,GAAKC,EAAK,GACpBD,EAAU,EAAIC,EAAK,EAAIA,EAAK,MAEhC,CAEO,SAASC,GAAQC,EAAWC,EAAW,CAC5C,MAAI,CAACD,GAAK,CAACC,EAAU,GACjB,CAACD,GAAK,CAACC,EAAU,GACdD,EAAE,IAAMC,EAAE,GAAKD,EAAE,IAAMC,EAAE,CAClC,CAEO,SAASC,GAAUF,EAAUC,EAAU,CAC5C,MAAO,CACL,EAAGD,EAAE,EAAIC,EAAE,EACX,EAAGD,EAAE,EAAIC,EAAE,CACb,CACF,CAEO,SAASE,EAAkBC,EAAwBC,EAA+B,CACvF,MAAO,CAAE,EAAG,KAAK,MAAMD,EAAW,EAAIC,CAAS,EAAG,EAAG,KAAK,MAAMD,EAAW,EAAIC,CAAS,CAAE,CAC5F,CAEO,SAASC,EAAkBC,EAAwBF,EAA+B,CACvF,MAAO,CAAE,EAAGE,EAAW,EAAIF,EAAW,EAAGE,EAAW,EAAIF,CAAU,CACpE,CAEO,SAASG,GAAsBJ,EAAwBK,EAAmBC,EAAgC,CAC/G,MAAO,CACL,EAAG,KAAK,MAAMN,EAAW,EAAIK,CAAS,EACtC,EAAG,KAAK,MAAML,EAAW,EAAIM,CAAU,CACzC,CACF,CAEO,SAASC,EAAsBd,EAAuBY,EAAmBC,EAAgC,CAC9G,MAAO,CACL,EAAGb,EAAU,EAAIY,EACjB,EAAGZ,EAAU,EAAIa,CACnB,CACF,CAEO,SAASE,EACdf,EACAY,EACAC,EACAL,EACY,CACZ,IAAMD,EAAaO,EAAsBd,EAAWY,EAAWC,CAAU,EACzE,OAAOP,EAAkBC,EAAYC,CAAS,CAChD,CAEO,SAASQ,GACdN,EACAE,EACAC,EACAL,EACY,CACZ,IAAMD,EAAaE,EAAkBC,EAAYF,CAAS,EAC1D,OAAOG,GAAsBJ,EAAYK,EAAWC,CAAU,CAChE,CChFA,IAAAI,GAAyB,6BAEzB,eAAsBC,GAAKC,EAAqBC,EAAwD,CACtG,IAAMC,EAASF,EAAM,KACrBC,EAASC,CAAM,EACfA,EAAO,MAAM,EACb,GAAM,CAACC,EAAS,CAAEC,CAAO,KAAI,aAAe,EAC5C,OAAAF,EAAO,GAAG,WAAY,IAAM,CAC1BC,EAAQ,CACV,CAAC,EACMC,CACT,CCXA,IAAAC,GAAyB,6BAIlB,SAASC,GAAgBC,EAAYC,EAAmB,CAC7D,IAAMC,EAAU,CAAE,EAAGF,EAAK,EAAG,EAAGA,EAAK,CAAE,EACjCG,EAAc,CAAE,EAAGH,EAAK,EAAIA,EAAK,MAAO,EAAGA,EAAK,EAAIA,EAAK,MAAO,EAEhEI,EAAeC,EAAkBH,EAASD,CAAS,EACnDK,EAAmBD,EAAkBF,EAAaF,CAAS,EAE3DM,EAAaD,EAAiB,EAAIF,EAAa,EAAI,EACnDI,EAAaF,EAAiB,EAAIF,EAAa,EAAI,EAEnDK,EAAe,IAAI,YAEzB,QAASC,EAAI,EAAGA,EAAIH,EAAYG,IAC9B,QAASC,EAAI,EAAGA,EAAIH,EAAYG,IAC9BF,EAAa,IACX,CACE,EAAGL,EAAa,EAAIM,EACpB,EAAGN,EAAa,EAAIO,CACtB,EACA,EACF,EAIJ,OAAOF,CACT,CC5BO,SAASG,GAAiBC,EAAoCC,EAA6B,CAChG,IAAMC,EAAM,CAAC,EACb,QAAWC,KAASH,EAClB,QAAWI,KAAUD,EAAM,YAAY,EACjCC,EAAO,QAAU,MAAOA,GAAU,MAAOA,GAAUH,EAAK,SAASG,EAAO,EAAGA,EAAO,CAAC,IACrF,QAAQ,IAAI,UAAWA,CAAM,EAC7BF,EAAI,KAAKE,CAAM,GAIrB,OAAOF,EAAI,OAAQG,GAAMA,IAAM,MAAS,CAC1C,CCVO,SAASC,GACdC,EACAC,EAC0C,CAC1C,OAAIA,EAAU,QAAUA,EAAU,OACzBD,EAAM,mBAAmBC,EAAU,SAAU,CAClD,MAAOA,EAAU,WACjB,IAAKA,EAAU,SACf,OAAQA,EAAU,OAClB,OAAQA,EAAU,MACpB,CAAC,EAEMD,EAAM,qBAAqBC,EAAU,SAAU,CAAE,MAAOA,EAAU,WAAY,IAAKA,EAAU,QAAS,CAAC,CAElH,CCfA,IAAMC,GAAiB,OAAO,SAAS,MAAM,UAAU,kBAAoB,OAC9DC,EAAN,cAA0CD,EAAe,CAGtD,WAAa,IAAI,OAAO,QAAQ,MAEhC,SAAW,EACX,cAAgB,IAAI,OAAO,QAAQ,MAE3C,YAAYE,EAAmB,CAC7B,MAAM,CACJ,KAAMA,EACN,aAAc,GACd,WAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAgDd,CAAC,CACH,CAEA,aAAaC,EAAgC,CAC3C,IAAMC,EAAWD,EAAI,aAAqB,QAEpCE,EAAWF,EAAI,aAAqB,QACpCG,EAAgBH,EAAI,aAAqB,aAE3CI,EAAYH,GAAoB,EAKpC,GAJI,OAAOG,GAAc,WACvBA,EAAY,OAAO,QAAQ,MAAM,aAAaA,CAAS,GAGrDF,EAAS,CACX,KAAK,SAAW,EAEhB,IAAIG,EAAgBF,GAAgB,EAChC,OAAOE,GAAkB,WAC3BA,EAAgB,OAAO,QAAQ,MAAM,aAAaF,CAAY,GAGhE,KAAK,cAAc,WAAWE,CAAa,OAE3C,KAAK,SAAW,EAGlB,KAAK,WAAW,WAAWD,CAAS,CACtC,CAEA,OAAOE,EAAkD,CACvD,KAAK,MAAM,eAAgB,KAAK,SAAS,MAAO,KAAK,SAAS,MAAM,EACpE,KAAK,MAAM,YAAa,KAAK,WAAW,MAAO,KAAK,WAAW,QAAS,KAAK,WAAW,MAAM,EAE9F,KAAK,MAAM,UAAW,KAAK,QAAQ,EACnC,KAAK,MAAM,eAAgB,KAAK,cAAc,MAAO,KAAK,cAAc,QAAS,KAAK,cAAc,MAAM,EAE1G,KAAK,WAAWA,CAAY,CAC9B,CACF,EAlGEC,GADWT,EACY,MAAM,qBCHxB,IAAMU,EAAN,cAAmC,OAAO,SAAS,MAAM,UAAU,aAAc,CAEtF,YAAYC,EAAmB,CAC7B,MAAM,CACJ,KAAMA,EACN,WAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SA+Dd,CAAC,CACH,CACF,EArEEC,GADWF,EACY,MAAM,wBCCxB,SAASG,GAAYC,EAKzB,CACD,GAAM,CAAE,QAAAC,EAAS,OAAAC,EAAQ,OAAAC,EAAQ,IAAAC,CAAI,EAAIJ,EACzC,OAAO,cAAwB,OAAO,KAAM,CAC1C,aAAc,CACZ,MAAM,CAAE,IAAAI,CAAI,CAAC,CACf,CAEA,SAAU,CACRH,GAAWA,EAAQ,IAAI,CACzB,CAEA,QAAS,CACPC,GAAUA,EAAO,IAAI,EACrB,IAAMG,EAAW,KAAK,SAClBA,GAAU,YACZA,EAAS,UAAU,IAAIC,EAA4B,IAAK,IAAIA,EAA4B,KAAK,IAAI,CAAC,EAClGD,EAAS,UAAU,IAAIE,EAAqB,IAAK,IAAIA,EAAqB,KAAK,IAAI,CAAC,EAExF,CAEA,QAAS,CACPJ,GAAUA,EAAO,IAAI,CACvB,CACF,CACF,CC7BO,SAASK,GAAmBC,EAGF,CAC/B,MAAO,CACL,KAAM,OAAO,MACb,MAAOA,EAAQ,MACf,SAAU,GACV,UAAW,GACX,OAAQ,CACN,YAAa,GACb,SAAU,EACZ,EACA,MAAOA,EAAQ,MACjB,CACF,CCjBO,IAAKC,QACVA,IAAA,iBACAA,IAAA,6BACAA,IAAA,2BAHUA,QAAA,IAMCC,GAAoB,CAC/B,OAAQ,OAAO,YAAY,OAC3B,UAAW,OAAO,YAAY,UAC9B,KAAM,OAAO,YAAY,KACzB,KAAM,OAAO,YAAY,IAC3B,ECXA,IAAAC,EAAyC,gBAGzC,IAAAC,EAAmC,6BAE5B,SAASC,GAAaC,EAA8BC,EAAmBC,EAAU,IAAK,CAC3F,IAAMC,EAAgB,CAAE,QAAS,IAAI,UAAoB,EAEnDC,EAAe,IAAI,UACnBC,EAAiB,IAAI,UAiB3B,OAf2BL,EAAW,QACpC,OAAI,CAAC,CAAE,EAAAM,EAAG,EAAAC,EAAG,MAAAC,EAAO,OAAAC,CAAO,IAEzBC,GACE,CACE,EAAGJ,EAAIJ,EACP,EAAGK,EAAIL,EACP,MAAOM,EAAQ,EAAIN,EACnB,OAAQO,EAAS,EAAIP,CACvB,EACAD,CACF,CACF,CACF,EAEmB,UAAWU,GAAqB,CACjD,IAAMC,KAAQ,YAASD,EAAkBR,EAAc,OAAO,EAC9D,QAAWU,KAASD,EAAM,OAAO,EAAGR,EAAa,KAAKS,CAAK,EAE3D,IAAMC,KAAU,YAASX,EAAc,QAASQ,CAAgB,EAChE,QAAWE,KAASC,EAAQ,OAAO,EAAGT,EAAe,KAAKQ,CAAK,EAE/DV,EAAc,QAAUQ,CAC1B,CAAC,EAEM,CACL,aAAcP,EAAa,aAAa,EACxC,eAAgBC,EAAe,aAAa,EAC5C,UAAAJ,EACA,cAAAE,CACF,CACF,CC1CA,IAAAY,GAAwB,gCACxBC,EAAsF,gBAI/E,SAASC,GAAaC,EAA6CC,EAA+B,CAGvG,SAAS,iBAAiB,eAAiBC,GAAMA,EAAE,eAAe,CAAC,EACnE,SAAS,iBAAiB,gBAAkBA,GAAMA,EAAE,eAAe,CAAC,EAEpE,IAAMC,EAAa,IAAI,kBAA4DH,EAAa,SAAS,EACnGI,EAAQ,IAAI,kBAAwBJ,EAAa,IAAI,EACrDK,EAAe,IAAI,UACnBC,EAAe,IAAI,UAEnBC,EAAU,IAAI,WAClBP,EAAa,MAAM,KAAK,OACxB,CACE,QAAUQ,GAAUF,EAAa,KAAKE,CAAK,EAC3C,QAAUA,GAAUH,EAAa,KAAKG,CAAK,CAC7C,EACA,CAAC,CACH,EAMMC,EAAW,IAAM,CACrB,sBAAsB,IAAMN,EAAW,KAAKH,EAAa,SAAS,CAAC,CACrE,EACAA,EAAa,MAAM,MAAM,YAAY,SAAUS,CAAQ,EAEvD,SAASC,EAAQC,EAAc,CAC7BX,EAAa,QAAQW,CAAI,EACzBR,EAAW,KAAKH,EAAa,SAAS,EACtCI,EAAM,KAAKO,CAAI,CACjB,CAEA,IAAMC,EAAWN,EACd,QACC,gBAAa,EAAE,KACf,OAAKE,GAAU,CAEb,IAAMG,EAAOP,EAAM,SAAS,EAItBS,GADQL,EAAM,OAAO,CAAC,EAAIG,GACJV,EAAQ,WACpC,OAAOU,EAAOE,CAChB,CAAC,KACD,OAAKF,GAAS,KAAK,IAAI,KAAK,IAAIA,EAAMV,EAAQ,OAAO,EAAGA,EAAQ,OAAO,CAAC,KACxE,QAAK,CAACa,EAAKC,IAAS,CAACD,EAAI,CAAC,EAAGC,CAAI,EAAG,CAAC,EAAG,CAAC,CAAC,CAC5C,EACC,UAAU,CAAC,CAAC,CAAEJ,CAAI,IAAM,CAEnBJ,EAAQ,MAAM,MAAM,QAAOA,EAAQ,MAAM,MAAM,MAAM,OAAO,CAAC,EAAII,GACrED,EAAQC,CAAI,CACd,CAAC,EAEGK,EAAWX,EACd,QACC,UAAQG,GAAU,CAACA,EAAM,QAAQ,KACjC,cAAW,EAAE,KAGb,OAAKA,GAAUA,EAAM,MAAM,IAAKS,GAAMA,EAAIhB,EAAQ,UAAU,CAAC,KAC7D,OAAKiB,GAAaA,EAAS,IAAKC,GAAcA,EAAInB,EAAa,IAAI,CAAC,KACpE,OAAKkB,GAAa,CAAClB,EAAa,QAAUkB,EAAS,CAAC,EAAGlB,EAAa,QAAUkB,EAAS,CAAC,CAAC,CAAC,CAC5F,EACC,UAAU,CAAC,CAACD,EAAGG,CAAC,IAAM,CACrBpB,EAAa,UAAUiB,EAAGG,CAAC,EAC3BjB,EAAW,KAAKH,EAAa,SAAS,CACxC,CAAC,EAEH,SAASqB,EAAOC,EAAwBD,EAAiB,CACvDC,EAAW,aAAatB,EAAa,GAAIqB,CAAM,CACjD,CAEA,SAASE,EAAcC,EAAkBC,EAAmBC,EAAoB,CAC9E,IAAMC,EAAaC,EAAsBJ,EAAWC,EAAWC,CAAU,EACzEG,EAASF,EAAW,EAAGA,EAAW,CAAC,CACrC,CAEA,SAASE,EAASZ,EAAWG,EAAW,CACtCpB,EAAa,SAASiB,EAAGG,CAAC,EAC1B,sBAAsB,IAAMjB,EAAW,KAAKH,EAAa,SAAS,CAAC,CACrE,CAEA,SAAS8B,EAAUb,EAAWG,EAAW,CACvCpB,EAAa,UAAUiB,EAAGG,CAAC,EAC3B,sBAAsB,IAAMjB,EAAW,KAAKH,EAAa,SAAS,CAAC,CACrE,CAEA,MAAO,CACL,aAAAA,EACA,WAAAG,EACA,MAAAC,EACA,OAAAiB,EACA,QAAS,IAAM,CACbT,EAAS,YAAY,EACrBI,EAAS,YAAY,EACrBT,EAAQ,QAAQ,EAChBP,EAAa,MAAM,MAAM,eAAe,SAAUS,CAAQ,CAC5D,EACA,cAAAc,EACA,SAAAM,EACA,UAAAC,EACA,QAAApB,CACF,CACF,CC/GA,IAAAqB,EAA4C,gBAC5CC,EAA0C,gBAC1CC,GAA8B,6BAG9B,IAAAC,GAAyB,6BAEzB,SAASC,IAAiB,CACxB,IAAMC,EAAa,IAAI,YACjBC,EAAY,IAAI,IAEtB,SAASC,EAAIC,EAA2B,CACtC,IAAIC,EAAMJ,EAAW,IAAIG,CAAK,EAC9B,OAAKC,IACHA,EAAM,IAAI,IACVJ,EAAW,IAAIG,EAAOC,CAAG,GAEpBA,CACT,CAEA,SAASA,EAAIC,EAAYF,EAAc,CAErC,IAAMG,EAAYL,EAAU,IAAII,CAAE,GACXC,GAAaJ,EAAII,CAAS,IACjC,OAAOD,CAAE,EAGHH,EAAIC,CAAK,EACjB,IAAIE,CAAE,EAGpBJ,EAAU,IAAII,EAAIF,CAAK,CACzB,CAEA,SAASI,EAAOF,EAAY,CAC1B,IAAMC,EAAYL,EAAU,IAAII,CAAE,GACfC,GAAaJ,EAAII,CAAS,IACjC,OAAOD,CAAE,EACrBJ,EAAU,OAAOI,CAAE,CACrB,CAEA,MAAO,CAAE,IAAAD,EAAK,OAAAG,EAAQ,IAAAL,CAAI,CAC5B,CAEO,SAASM,GAAcC,EAAwBC,EAAgBC,EAAgB,CACpF,IAAMC,EAAgBb,GAAe,EAC/Bc,EAAW,IAAI,IAEfC,KAAgB,WACpB,OAAKC,MAAsB,QAAKH,EAAc,IAAIG,CAAK,CAAC,CAAC,KACzD,YAAUC,GAAaA,CAAQ,KAC/B,OAAKC,GAAaR,EAAW,IAAIQ,EAAU,UAAU,CAAC,KACtD,kBAAc,CAChB,EAGMC,EAAgBP,EAAO,aAAa,KAAKG,CAAa,EAAE,UAAWK,GAAWA,EAAO,MAAM,CAAC,EAG5FC,EAAkBT,EAAO,eAAe,KAAKG,CAAa,EAAE,UAAWK,GAAWA,EAAO,QAAQ,CAAC,EAGxG,SAASE,EAAYF,EAA+B,CAC9CN,EAAS,IAAIM,EAAO,EAAE,GAAG,QAAQ,MAAM,yCAA0CA,CAAM,EAC3F,IAAMJ,KAAQ,YAAS,IAAMO,EAAkBH,EAAO,SAAUR,EAAO,SAAS,EAAG,CAAE,OAAQY,EAAQ,CAAC,EAChGC,KAAU,YACd,IAAMT,EAAM,IAAI,EACfU,GAAa,CAEZb,EAAc,IAAIO,EAAO,GAAIM,CAAQ,EAGrBd,EAAO,cAAc,QAAQ,IAAIc,CAAQ,EAEvDN,EAAO,MAAM,EAEbA,EAAO,QAAQ,CAEnB,EACA,CAAE,gBAAiB,EAAK,CAC1B,EACAN,EAAS,IAAIM,EAAO,GAAIK,CAAO,CACjC,CAGA,IAAME,KAA4B,WAAQjB,EAAW,QAAUkB,GAAW,CAIxE,GAHIA,EAAO,OAAS,OAClBN,EAAYM,EAAO,QAAiC,EAElDA,EAAO,OAAS,SAAU,CAC5Bf,EAAc,OAAOe,EAAO,SAAS,EAAE,EACvC,IAAMH,EAAUX,EAAS,IAAIc,EAAO,SAAS,EAAE,EAC3CH,GAASA,EAAQ,EACrBX,EAAS,OAAOc,EAAO,SAAS,EAAE,EAEtC,CAAC,EAED,MAAO,CACL,QAAS,IAAM,CACb,QAAWC,KAAKf,EAAS,OAAO,EAAGe,EAAE,EACrCF,EAA0B,EAC1BR,EAAc,YAAY,EAC1BE,EAAgB,YAAY,CAC9B,CACF,CACF,CCzGA,IAAAS,EAAwC,gBCgBjC,SAASC,GAAqCC,EAAW,CAC9D,OAAOA,CACT,CAEO,SAASC,GACdC,EACA,CACA,OAAOA,CACT,CAEO,SAASC,GAMdD,EAAsC,CACtC,OAAOA,CACT,CAEO,SAASE,GAAkBF,EAAuC,CACvE,OAAOA,CACT,CAEO,SAASG,GAAmBH,EAAsB,CACvD,OAAOA,CACT,CAEO,SAASI,GACdC,EACAC,EACoC,CACpC,OAAOA,IAAS,QAClB,CAEO,SAASC,GACdF,EACAC,EACuC,CACvC,OAAOA,IAAS,WAClB,CD5CO,SAASE,GACdC,EACAC,EACAC,EACAC,EAAsB,EACA,CACtB,IAAMC,KAAuB,cAAW,CAAE,EAAG,EAAG,EAAG,CAAE,CAAC,EAChDC,EAAS,IAAI,IACbC,EAAW,IAAI,IACjBC,EACEC,EAAe,CAAE,QAASL,CAAoB,EAKpD,SAASM,EAAqBC,EAA0D,CACtF,OAAKC,GAAiBD,CAAI,EAElBE,GAAe,CACrBF,EAAKE,CAAU,KACf,eAAY,IAAM,CAChBR,EAAS,EAAIQ,EAAW,EACxBR,EAAS,EAAIQ,EAAW,CAC1B,CAAC,CACH,EARoCF,CAStC,CASA,eAAeG,EAAa,CAAE,GAAAb,EAAI,IAAAc,EAAK,KAAAC,EAAM,OAAAC,CAAO,EAA8B,CAEhF,IAAMC,EAAcF,GAAQJ,GAAiBI,CAAI,EAC7CE,MACF,eAAY,IAAM,CAChBb,EAAS,EAAIa,EAAY,GAAKb,EAAS,EACvCA,EAAS,EAAIa,EAAY,GAAKb,EAAS,CACzC,CAAC,EAIHW,GAAQV,EAAO,IAAIL,EAAIS,EAAqBM,CAAI,CAAC,EACjDC,GAAUV,EAAS,IAAIN,EAAIS,EAAqBO,CAAM,CAAC,EAGnDT,GAAoBO,GAAK,MAAML,EAAqBK,CAAG,EAAEP,CAAgB,EACzEA,GAAoBQ,GAAMA,EAAKR,CAAgB,CACrD,CAEA,SAASW,EAAalB,EAAqB,CACzC,OAAOK,EAAO,IAAIL,CAAE,GAAKM,EAAS,IAAIN,CAAE,CAC1C,CAEA,SAASmB,EAAgBnB,EAAYoB,EAAgB,CACnDf,EAAO,OAAOL,CAAE,EAChBM,EAAS,OAAON,CAAE,EAGdO,IACFc,EAAMd,EAAkBa,CAAI,EAC5BE,GAA2Bf,EAAkBF,EAAO,OAAO,CAAC,EAEhE,CAEA,SAASgB,EAAMT,EAA8BQ,EAAO,GAAM,CACpDA,IACEG,GAASX,EAAYV,CAAI,GAAGU,EAAW,KAAK,EAChDY,EAAgBZ,CAAU,GAE5BA,EAAW,SAAS,EAAE,EACtBA,EAAW,aAAeJ,EAAa,QACvCI,EAAW,cAAc,GAAM,EAAI,EACnCA,EAAW,SAAS,EAAG,CAAC,EACxBA,EAAW,UAAU,EAAG,CAAC,EACzBA,EAAW,SAAS,CAAC,EACrBA,EAAW,gBAAgB,CAAC,EAC5BA,EAAW,UAAU,EACrBA,EAAW,QAAQ,eAAgB,IAAI,EACnCW,GAASX,EAAYV,CAAI,IAC3BU,EAAW,UAAU,EACrBA,EAAW,WAAW,EAAE,GAEtBa,GAAYb,EAAYV,CAAI,IAC9BU,EAAW,MAAQ,EACnBA,EAAW,OAAS,EAExB,CAEA,SAASc,EAAgBC,EAAgB,CACvCnB,EAAa,QAAUmB,EACnBpB,IAAkBA,EAAiB,aAAeoB,EACxD,CAEA,SAASC,GAAQ,CACf,GAAIrB,EAAkB,OACtB,IAAMK,EAA+BX,EAAM,IAAI,EAC/CoB,EAAMT,CAAU,EAGhBU,GAA2BV,EAAYP,EAAO,OAAO,CAAC,EAKtDO,EAAW,UAAU,EAAI,EACzBA,EAAW,WAAW,EAAI,EAC1BA,EAAW,QAAQ,eAAgBZ,CAAE,EACrCO,EAAmBK,CACrB,CAEA,SAASiB,GAAU,CACbtB,GACFN,EAAM,YAAYM,CAAgB,EAEpCA,EAAmB,MACrB,CAEA,MAAO,CAAE,aAAAM,EAAc,aAAAK,EAAc,gBAAAC,EAAiB,MAAAS,EAAO,QAAAC,EAAS,SAAAzB,EAAU,GAAAJ,EAAI,gBAAA0B,EAAiB,KAAAxB,CAAK,CAC5G,CAEA,SAASoB,GACPV,EACAkB,EACA,CACA,GAAKlB,EACL,QAAWF,KAAQoB,EACjBpB,EAAKE,CAAU,CAEnB,CAEA,SAASD,GACPD,EACiC,CACjC,IAAIO,EACEc,EAAkB,IAAI,MAC1B,CAAE,EAAG,OAAW,EAAG,MAAU,EAC7B,CACE,IAAK,CAACC,EAAGC,IACHA,IAAS,cAAsB,CAACC,EAAWC,IAAelB,EAAc,CAAE,EAAAiB,EAAG,EAAAC,CAAE,EAC/EF,IAAS,OAAgBC,GAAejB,EAAc,CAAE,EAAAiB,CAAE,EAC1DD,IAAS,OAAgBE,GAAelB,EAAc,CAAE,EAAAkB,CAAE,EACvD,IAAG,GAEZ,IAAK,CAACH,EAAGC,EAAMG,KACTH,IAAS,MAAKhB,EAAcA,EAAc,CAAE,GAAGA,EAAa,EAAGmB,CAAM,EAAI,CAAE,EAAGA,CAAM,GACpFH,IAAS,MAAKhB,EAAcA,EAAc,CAAE,GAAGA,EAAa,EAAGmB,CAAM,EAAI,CAAE,EAAGA,CAAM,GACjF,GAEX,CACF,EACA,OAAA1B,EAAKqB,CAAmC,EACjCd,CACT,CEtKA,IAAAoB,GAA2B,gBAC3BC,GAA0B,6BAO1B,SAASC,GAAiB,EAAuC,CAC/D,OAAO,OAAO,KAAKC,EAAiB,EAAE,SAAS,CAAC,CAClD,CAEO,SAASC,GAAiBC,EAAqB,CACpD,IAAMC,KAAS,cAAUH,GAAoBI,GAAcF,EAAM,IAAI,MAAM,CAAE,UAAAE,CAAU,CAAC,CAAC,EAInFC,KAAU,eAAW,IAAI,GAAoD,EAC7EC,EAAe,CAAE,QAAS,CAAE,EAElC,SAASC,EACPC,EACAC,EACmC,CAC/B,OAAOD,GAAW,WAAUA,EAAS,OAAOA,CAAM,GACtD,IAAIE,EAAiBL,EAAQ,IAAIG,CAAM,EACvC,OAAKT,GAAiBU,CAAI,GAMrBC,IACHA,EAAiBC,GAAkCH,EAAQL,EAAOM,CAAI,EAAGA,EAAMH,EAAa,OAAO,GAGhGD,EAAQ,IAAIG,CAAM,GACrBH,EAAQ,IAAIG,EAAQE,CAAc,EAM7BA,GAhBAA,GAAgB,MAiBzB,CAEA,SAASE,EAAOJ,EAAyB,CACnC,OAAOA,GAAW,WAAUA,EAAS,OAAOA,CAAM,GACtD,IAAMK,EAASR,EAAQ,IAAIG,CAAM,EAC7BK,GAAQA,EAAO,QAAQ,EAC3BR,EAAQ,OAAOG,CAAM,CACvB,CAEA,SAASM,EAAaC,EAAkBC,EAAiB,CACnDA,EACFV,EAAa,SAAWS,EAExBT,EAAa,SAAW,CAACS,EAG3B,QAAWL,KAAkBL,EAAQ,OAAO,EAC1CK,EAAe,gBAAgBJ,EAAa,OAAO,CAEvD,CAEA,MAAO,CAAE,IAAAC,EAAK,OAAAK,EAAQ,QAAAP,EAAS,OAAAF,EAAQ,aAAAW,CAAa,CACtD,CCjEA,IAAAG,GAAyB,6BAEzB,IAAAC,GAA2B,6BAgBpB,SAASC,GACdC,EACqC,CACrC,GAAM,CAAE,MAAAC,EAAO,SAAAC,EAAU,YAAAC,EAAa,OAAAC,EAAQ,eAAAC,EAAgB,MAAAC,EAAO,UAAAC,EAAW,WAAAC,CAAW,EAAIR,EACzFS,EAAmB,OAAO,KAAKN,EAAY,MAAM,EACpD,IAAKO,GAAQP,EAAY,OAAOO,CAAgB,EAAE,QAAQ,EAC1D,KAAK,EAGR,GAAIC,EAAIP,EAAO,UAAWG,CAAS,IAAM,GAAKI,EAAIP,EAAO,UAAWI,CAAU,IAAM,EAClF,MAAM,IAAI,MAAM,+FAA+F,EAOjH,IAAMI,EAAO,IAAI,YACXC,EAAgB,CAAE,EAAGT,EAAO,UAAYG,EAAW,EAAGH,EAAO,UAAYI,CAAW,EACpFM,EAAW,IAAI,IACfC,EAAU,CAAE,QAAS,EAAK,EAGhC,QAAWC,KAASZ,EAAO,cAAc,QAAQ,OAAO,EACtDa,EAAYD,CAAK,EAGnB,IAAME,EAAgBd,EAAO,aAAa,UAAWY,GAAU,CAC7DC,EAAYD,CAAK,CACnB,CAAC,EAGKG,EAAkBf,EAAO,eAAe,UAAWY,GAAU,CACjEI,EAAaJ,CAAK,CACpB,CAAC,EAEDF,EAAS,IAAI,IAAMI,GAAe,YAAY,CAAC,EAC/CJ,EAAS,IAAI,IAAMK,GAAiB,WAAW,EAM/C,SAASE,EACPC,EACArB,EACAsB,EACAC,EACAC,EACAC,EAIA,CACA,IAAMC,EAA0D,CAAC,EAEjE,QAAWjB,KAAO,OAAO,KAAKP,EAAY,MAAM,EAAG,CACjD,IAAMyB,EAAQzB,EAAY,OAAOO,CAAgB,EAC3CmB,EAAeP,EAAI,iBACvBZ,EACAkB,EAAM,SAAS,IAAKE,IAAO5B,EAAS4B,EAAE,CAAC,EACvCP,EACAC,EACAC,EACAC,CACF,EACA,GAAI,CAACG,EAAc,CACjB,QAAQ,MAAM,wBAAwBnB,WAAa,EACnD,SAEFiB,EAAOjB,CAAG,EAAImB,EACd,IAAME,EAAW9B,EAAM,KAAK,SACxB2B,EAAM,kBAAoBG,GAAU,YACtCJ,EAAOjB,CAAG,EAAE,SAAWqB,EAAS,UAAU,IAAIC,EAAqB,GAAG,GAI1E,MAAO,CAAE,OAAQ,OAAO,OAAOL,CAAM,EAAG,aAAcA,EAAOxB,EAAY,YAAY,CAAE,CACzF,CAEA,SAAS8B,EAAUC,EAAiD,CAClE,IAAMC,EAAgC,IAAI,OAAO,SAAS,QAAQ,CAChE,WAAA3B,EACA,UAAAD,EACA,MAAOM,EAAc,EACrB,OAAQA,EAAc,EACtB,SAAU,OAAO,QAAQX,CAAQ,EAC9B,OAAO,CAAC,CAACQ,CAAG,IAAMD,EAAiB,SAASC,CAAG,CAAC,EAChD,IAAI,CAAC,CAAC,CAAE0B,CAAO,IAAMA,CAAO,CACjC,CAAC,EAEKd,EAAM,IAAI,OAAO,SAAS,QAAQrB,EAAOkC,CAAI,EAC7CE,EAAUC,EAAkBJ,EAAY9B,EAAO,SAAS,EACxD,CAAE,aAAAmC,CAAa,EAAIlB,EAAaC,EAAKrB,EAAOoC,EAAQ,EAAGA,EAAQ,EAAGxB,EAAc,EAAGA,EAAc,CAAC,EACxG,OAAAS,EAAI,SAASiB,CAAY,EACzB3B,EAAK,IAAIsB,EAAYZ,CAAG,EACjBA,CACT,CAEA,SAASkB,EAAmBN,EAAiD,CAC3E,OAAOtB,EAAK,IAAIsB,CAAU,GAAKD,EAAUC,CAAU,CACrD,CAEA,SAASO,EAAkBC,EAAgD,CACzE,IAAMR,EAAaS,EAAsBD,EAAWnC,EAAWC,EAAYJ,EAAO,SAAS,EAC3F,OAAOoC,EAAmBN,CAAU,CACtC,CAEA,SAASd,EAAac,EAAwBU,EAAiB,CAC7D,GAAK,CAAC7B,EAAQ,SAAW,CAAC6B,GAAU,CAAChC,EAAK,IAAIsB,CAAU,EAAG,OAC/CM,EAAmBN,CAAU,EACrC,QAAQ,EACZtB,EAAK,OAAOsB,CAAU,CACxB,CAEA,SAASW,EAAUC,EAAmBC,EAAcnB,EAAgBoB,EAAe,CACjF,GAAI,CAACjC,EAAQ,QAAS,OACtB,IAAMO,EAAMmB,EAAkBK,CAAK,EAC7BG,EAAU3B,EAAI,UAAUyB,EAAMpC,EAAImC,EAAM,EAAGjC,EAAc,CAAC,EAAGF,EAAImC,EAAM,EAAGjC,EAAc,CAAC,EAAG,OAAWe,CAAK,EAClH,GAAIqB,GAAW,KACb,MAAM,IAAI,MAAM,kBAAkB,EAGpCA,EAAQ,MAAQ3B,EAAI,UACpB2B,EAAQ,OAAS3B,EAAI,WAEjB0B,IACFC,EAAQ,KAAOD,EAEnB,CAEA,SAAS/B,EAAYiB,EAAwB,CAC3C,GAAI,CAACnB,EAAQ,QAAS,OACtB,IAAMO,EAAMkB,EAAmBN,CAAU,EACnCgB,EAAeC,GAAsBjB,EAAY3B,EAAWC,EAAYJ,EAAO,SAAS,EAE9F,QAAWwB,KAAS,OAAO,KAAKzB,EAAY,MAAM,EAChDmB,EAAI,YACDyB,GAAS,CACR,IAAMD,EAAQ,CAAE,EAAGI,EAAa,EAAIH,EAAK,EAAG,EAAGG,EAAa,EAAIH,EAAK,CAAE,EACjEK,EAAexB,IAAUzB,EAAY,gBAAe,eAAWE,CAAc,EAAI,GACjFgD,EAAQ/C,EAAMsB,CAAkB,EAAE,IAAIkB,CAAK,GAAKM,EACtDL,EAAK,MAAQM,CACf,EACA,OACA,OACA,OACA,OACA,OACA,OACAzB,CACF,CACJ,CAEA,SAAS0B,GAAU,CACjB,QAAWhC,KAAOV,EAAK,OAAO,EAC5BU,EAAI,QAAQ,EAEdV,EAAK,MAAM,EACX,QAAW2C,KAAKzC,EACdyC,EAAE,CAEN,CAEA,SAASC,GAAO,CACd,OAAO5C,EAAK,IACd,CAEA,SAAS6C,EAAWC,EAAY,CAC9B,GAAIA,IAAM3C,EAAQ,QAClB,CAAAA,EAAQ,QAAU2C,EAClB,QAAW1C,KAASZ,EAAO,cAAc,QAAQ,OAAO,EACtDW,EAAQ,QAAUE,EAAYD,CAAK,EAAII,EAAaJ,EAAO,EAAI,EAEnE,CAEA,MAAO,CAAE,KAAAwC,EAAM,UAAAX,EAAW,QAAAS,EAAS,WAAAG,EAAY,QAAA1C,EAAS,UAAAR,EAAW,WAAAC,CAAW,CAChF,CCnMA,IAAAmD,GAAyB,6BAGlB,SAASC,GACdC,EACqC,CACrC,GAAM,CACJ,OAAAC,EACA,YAAa,CAAE,OAAAC,EAAQ,aAAAC,CAAa,EACpC,UAAAC,EACA,WAAAC,CACF,EAAIL,EAEEM,EAAoD,CAAC,EAE3D,QAAWC,KAAY,OAAO,KAAKL,CAAM,EACvCI,EAAMC,CAAqB,EAAI,IAAI,YAGrC,IAAMC,EAAiBC,GAAqB,CAAE,GAAGT,EAAQ,MAAAM,CAAM,CAAC,EAEhE,SAASI,EAAUC,EAAmBC,EAAgBC,EAAmBC,EAAe,CAEtFR,EAAMO,GAASV,CAAY,EAAE,IAAIQ,EAAOC,CAAI,EAG5C,IAAMG,EAAQC,EAAsBL,EAAOP,EAAWC,EAAYJ,EAAO,SAAS,EAC9EO,EAAe,SAAWP,EAAO,cAAc,QAAQ,IAAIc,CAAK,GAClEP,EAAe,UAAUG,EAAOC,EAAMC,EAAOC,CAAI,CAErD,CAEA,MAAO,CAAE,GAAGN,EAAgB,UAAAE,EAAW,MAAAJ,CAAM,CAC/C,CCjCA,IAAAW,GAAyB,6BAKlB,SAASC,GACdC,EACqD,CACrD,GAAM,CACJ,YAAa,CAAE,OAAAC,EAAQ,aAAAC,CAAa,EACpC,kBAAAC,EACA,MAAAC,CACF,EAAIJ,EAEEK,EAAkBH,EACpBI,EAAW,EACTC,EAA8F,CAAC,EAE/FC,EAAiE,CAAC,EACxE,QAAWC,KAAY,OAAO,KAAKR,CAAM,EACvCO,EAAcC,CAAqB,EAAI,IAAI,YAG7C,IAAMC,EAAoE,CAAC,EAC3E,QAAWD,KAAY,OAAO,KAAKR,CAAM,EACvCS,EAAiBD,CAAqB,EAAI,IAAI,YAGhD,IAAME,EAAiBC,GAAqBZ,CAAM,EAElD,SAASa,EAAkBC,EAA6BC,EAAiC,CACvFR,EAAWO,CAAY,EAAI,CAAE,OAAAC,EAAQ,MAAO,CAAE,CAChD,CAEA,SAASC,EAAeC,EAAmBH,EAA6BI,EAAmBb,EAAiB,CAC1GG,EAAcU,CAAK,EAAE,IAAID,EAAOH,CAAY,CAC9C,CAEA,SAASK,EAAkBF,EAAmBC,EAAmBb,EAAiB,CAChF,IAAMS,EAAeN,EAAcU,CAAK,EAAE,IAAID,CAAK,EAC7CG,EAAYN,GAAgBP,EAAWO,CAAY,EACzDN,EAAcU,CAAK,EAAE,OAAOD,CAAK,EAC7BG,GAAWT,EAAe,UAAUM,EAAOG,EAAU,OAAO,CAAC,EAAGF,CAAK,CAC3E,CAEA,SAASG,EAAiBJ,EAAmBC,EAAmBb,EAAiB,CAC/E,IAAMS,EAAeN,EAAcU,CAAK,EAAE,IAAID,CAAK,EAC9CH,IACLJ,EAAiBQ,CAAK,EAAE,IAAID,EAAOH,CAAY,EAC/CK,EAAkBF,EAAOC,CAAK,EAChC,CAEA,SAASI,EAAkBL,EAAmBC,EAAmBb,EAAiB,CAChF,IAAMS,EAAeJ,EAAiBQ,CAAK,EAAE,IAAID,CAAK,EACjDH,IACLJ,EAAiBQ,CAAK,EAAE,OAAOD,CAAK,EACpCD,EAAeC,EAAOH,EAAcI,CAAK,EAC3C,CAEA,SAASK,GAAgB,CAEvB,QAAWT,KAAgB,OAAO,KAAKP,CAAU,EAAsB,CACrE,IAAMa,EAAYb,EAAWO,CAAY,EACrCM,IAAWA,EAAU,MAAQI,EAAIJ,EAAU,MAAQ,EAAGA,EAAU,OAAO,MAAM,GAInF,QAAWX,KAAY,OAAO,KAAKD,CAAa,EAAkB,CAChE,IAAMU,EAAQV,EAAcC,CAAQ,EACpC,QAAWQ,KAASC,EAAM,OAAO,EAAG,CAClC,IAAMJ,EAAeI,EAAM,IAAID,CAAK,EAC9BG,EAAYN,GAAgBP,EAAWO,CAAY,EACzD,GAAI,CAACM,EAAW,SAChB,IAAMK,EAAeL,EAAU,OAAOA,EAAU,KAAK,EACrDT,EAAe,UAAUM,EAAOQ,EAAchB,CAAQ,GAG5D,CAEA,SAASiB,EAAOC,EAAc,CACxBA,EAAOrB,EAAWH,IACtBG,EAAWqB,EACXJ,EAAc,EAChB,CAEA,SAASK,GAAU,CACjBxB,EAAM,OAAO,eAAe,SAAUsB,CAAM,EAC5Cf,EAAe,QAAQ,CACzB,CAEA,OAAAP,EAAM,OAAO,YAAY,SAAUsB,CAAM,EAElC,CACL,GAAGf,EACH,eAAAK,EACA,kBAAAG,EACA,iBAAAE,EACA,kBAAAC,EACA,kBAAAT,EACA,QAAAe,CACF,CACF,CCxGA,IAAAC,EAYO,gBACPC,EAAkD,gBAElDC,EAA8B,6BAIvB,SAASC,GAAYC,EAAuC,CACjE,IAAMC,EAAY,IAAI,IAChBC,EAAU,CAAE,QAAS,EAAK,EAEhCF,EAAY,OAAO,mBAAmB,EAEtC,SAASG,GAAe,CACtBD,EAAQ,QAAU,EACpB,CAEA,SAASE,GAAc,CACrBF,EAAQ,QAAU,EACpB,CAEA,SAASG,EAAUC,EAAgB,CACjCN,EAAY,iBAAiBM,CAAM,CACrC,CAEA,IAAMC,EAAY,IAAI,UAEhBC,KAAe,aAAU,SAAU,WAAW,EAAE,QACpD,UAAO,IAAMN,EAAQ,OAAO,KAC5B,OAAI,KACK,CAAE,QAASF,EAAY,SAAS,aAAc,EACtD,KACD,iBAAc,CAChB,EAEMS,KAAiF,aACrF,SACA,WACF,EAAE,QACA,UAAO,IAAMP,EAAQ,OAAO,KAC5B,OAAKQ,IAAW,CAAE,QAASV,EAAY,SAAS,cAAe,MAAOU,CAAoB,EAAE,KAC5F,iBAAc,CAChB,EAEMC,KAA+E,aACnF,SACA,SACF,EAAE,QACA,UAAO,IAAMT,EAAQ,OAAO,KAC5B,OAAKQ,IAAW,CAAE,QAASV,EAAY,SAAS,cAAe,MAAOU,CAAoB,EAAE,KAC5F,iBAAc,CAChB,EAGME,KAAS,SAAMH,EAAcE,CAAU,EAAE,QAC7C,UAAO,IAAMT,EAAQ,OAAO,KAC5B,OAA6E,CAAC,CAAE,MAAAQ,CAAM,IAAM,CAC1FA,EAAM,OAAS,aAAeA,EAAM,SAAW,EAC/C,KAAK,IAAI,CACX,CAAC,KACD,eAAY,EAAG,CAAC,KAChB,UAAO,CAAC,CAACG,EAAMC,CAAG,IAAMD,EAAK,CAAC,GAAK,CAACC,EAAI,CAAC,GAAKA,EAAI,CAAC,EAAID,EAAK,CAAC,EAAI,GAAG,KACpE,OAAI,IAAMb,EAAY,SAAS,aAAa,KAC5C,iBAAc,CAChB,EAGMe,EAAeN,EAAa,QAChC,UAAO,IAAMP,EAAQ,OAAO,KAC5B,OAAI,IAAM,KAAK,IAAI,CAAC,KACpB,eAAY,EAAG,CAAC,KAChB,UAAO,CAAC,CAACW,EAAMC,CAAG,IAAMA,EAAMD,EAAO,GAAG,KACxC,gBAAa,GAAG,KAChB,OAAI,IAAMb,EAAY,SAAS,aAAa,KAC5C,iBAAc,CAChB,EAGMgB,KAAc,SAAMP,EAAcE,CAAU,EAAE,QAClD,UAAO,CAAC,CAAE,QAAAM,CAAQ,IAAMf,EAAQ,SAAWe,EAAQ,gBAAgB,CAAC,KACpE,OAAI,IAAMjB,EAAY,SAAS,aAAa,KAC5C,iBAAc,CAChB,EAGMkB,KAAQ,SACZT,EAAa,QAAK,OAAI,IAAG,EAAY,CAAC,KACtC,SAAME,EAAYH,CAAY,EAAE,QAC9B,YAAS,KACT,QACE,CAACW,EAAK,CAAC,CAAE,QAASN,CAAK,EAAG,CAAE,QAASO,CAAK,CAAC,IACzCA,EAAK,eAAe,EAChBP,EAAK,eAAe,GAAKM,EACvB,CAAE,GAAGA,EAAK,MAAOC,EAAK,OAASD,EAAI,EAAG,OAAQC,EAAK,OAASD,EAAI,CAAE,EAClE,CAAE,EAAGC,EAAK,OAAQ,EAAGA,EAAK,OAAQ,MAAO,EAAG,OAAQ,CAAE,EACxD,OACN,MACF,KACA,iBAAc,KACd,UAAQC,GAAS,KAAK,IAAIA,EAAK,KAAK,EAAI,IAAM,KAAK,IAAIA,EAAK,MAAM,EAAI,EAAE,CAC1E,CACF,EAAE,QACA,UAAO,IAAMnB,EAAQ,OAAO,KAC5B,wBAAqB,CACvB,EAEMoB,KAAc,cAAW,IAAI,GAAU,EACvCC,EAAiBvB,EAAY,SAC7BwB,EAAY,IAAI,IAGtB,QAAWC,KAAO,OAAO,KAAK,OAAO,MAAM,SAAS,QAAQ,EAAGC,EAAOD,CAAG,EAGzE,IAAME,EAASpB,EAAU,QAAK,UAAO,IAAML,EAAQ,OAAO,CAAC,EAAE,UAAWuB,GAAQ,CAC9E,IAAMG,EAAUJ,EAAU,IAAIC,EAAI,OAAO,EACpCG,MACL,eAAY,IAAM,CACZH,EAAI,QAAQH,EAAY,IAAIM,CAAO,EACnCH,EAAI,MAAMH,EAAY,OAAOM,CAAO,CAC1C,CAAC,CACH,CAAC,EACD3B,EAAU,IAAI,IAAM0B,GAAQ,YAAY,CAAC,EAEzC,IAAME,KAAa,SAAMpB,EAAcE,CAAU,EAAE,UAAU,CAAC,CAAE,QAAAM,CAAQ,IAAM,IAC5E,eAAY,IAAM,CACZA,EAAQ,eAAe,EAAGK,EAAY,IAAI,cAAc,EACvDA,EAAY,OAAO,cAAc,EAElCL,EAAQ,gBAAgB,EAAGK,EAAY,IAAI,eAAe,EACzDA,EAAY,OAAO,eAAe,CACzC,CAAC,CAEH,CAAC,EACDrB,EAAU,IAAI,IAAM4B,GAAY,YAAY,CAAC,EAG7C,SAASH,EAAOD,EAAa,CAC3B,GAAI,CAACF,EAAgB,CACnB,QAAQ,KAAK,cAAcE,wCAA0C,EACrE,OAIF,IAAMK,EAASP,EAAe,OAAOE,EAAK,EAAK,EAE/CD,EAAU,IAAIM,EAAO,QAASL,CAAU,EAExCK,EAAO,mBAAmB,EAC1BA,EAAO,aAAe,GACtBA,EAAO,GAAG,OAASC,GAAwCxB,EAAU,KAAKwB,CAAQ,CAAC,EACnFD,EAAO,GAAG,KAAOC,GAAwCxB,EAAU,KAAKwB,CAAQ,CAAC,CACnF,CAEA,SAASC,EAAWC,EAAiDC,EAAsB,CACzF,IAAMC,KAAW,YACf,IAAMF,EAAYX,CAAW,EAC5Bc,GAAW,CACNA,GAAQF,EAAS,CACvB,EACA,CAAE,gBAAiB,EAAK,CAC1B,EACAjC,EAAU,IAAIkC,CAAQ,CACxB,CAEA,SAASE,GAAU,CACjB,QAAWF,KAAYlC,EACrBkC,EAAS,CAEb,CAEA,MAAO,CACL,UAAW5B,EAAU,aAAa,EAClC,aAAAC,EACA,aAAAC,EACA,WAAAE,EACA,OAAAC,EACA,aAAAG,EACA,YAAAC,EACA,MAAAE,EACA,YAAAI,EACA,QAAAe,EACA,aAAAlC,EACA,YAAAC,EACA,UAAAC,EACA,QAAAH,EACA,WAAA8B,CACF,CACF,CC5LA,IAAAM,GAAyB,6BAEzB,eAAsBC,GAA2CC,EAAgC,CAC/F,GAAM,CAAE,MAAAC,EAAO,YAAAC,EAAa,aAAAC,EAAc,iBAAAC,CAAiB,EAAIJ,EAGzDK,EAAoB,OAAO,KAAKH,CAAW,EAAE,IAAKI,GAAQ,CAC9D,GAAM,CAAE,QAAAC,EAAS,OAAAC,EAAQ,OAAAC,CAAO,EAAIP,EAAYI,CAAG,EACnD,OAAOI,GAAY,CAAE,IAAAJ,EAAK,QAAAC,EAAS,OAAAC,EAAQ,OAAAC,CAAO,CAAC,CACrD,CAAC,EAEKE,EAAeC,GAAmB,CAAE,OAAQP,EAAmB,MAAAJ,CAAM,CAAC,EACtEY,EAAO,IAAI,OAAO,KAAKF,CAAY,EAGnC,CAACG,EAAS,CAAEC,CAAO,KAAI,aAAS,EAEtCF,EAAK,OAAO,GAAG,QAASC,CAAO,EAG3BH,EAAa,OAAS,OAAO,UAC/BE,EAAK,SAAS,KAAK,OAAO,EAG5B,MAAME,EAGN,SAASC,GAAS,CAChB,IAAMC,EAAQ,OAAO,WAAaJ,EAAK,MAAM,KACvCK,EAAS,OAAO,YAAcL,EAAK,MAAM,KAC/CA,EAAK,MAAM,OAAOI,EAAOC,CAAM,CACjC,CACAF,EAAO,EACP,OAAO,iBAAiB,SAAUA,CAAM,EAGxC,IAAMG,EAAoC,CAAC,EAE3C,QAAWC,KAAeP,EAAK,MAAM,UAAU,EAAK,EAAG,CACrD,IAAMP,EAAMc,EAAY,MAAM,IACxBC,EAASnB,EAAYI,CAAG,EAG9B,OAAW,CAACgB,EAAUC,CAAK,IAAK,OAAO,QAAQrB,EAAYI,CAAG,EAAE,MAAM,EACpE,MAAMkB,GAAKJ,EAAcK,GAAW,CAC9BF,EAAM,OAAS,EACjBE,EAAO,MAAMH,EAAUC,EAAM,IAAI,EACxBA,EAAM,OAAS,EACxBE,EAAO,YAAYH,EAAUC,EAAM,KAAMA,EAAM,OAAO,EAC7CA,EAAM,OAAS,GACxBE,EAAO,WAAWH,EAAUC,EAAM,KAAMA,EAAM,QAAQ,SAAS,CAEnE,CAAC,EAIH,IAAMG,EAAaC,GAAiBP,CAAW,EAGzCQ,EAASC,GAAaT,EAAY,QAAQ,KAAMjB,CAAY,EAG5D2B,EAAgBC,GAAaH,EAAO,WAAYxB,CAAgB,EAGhE4B,EAAUC,GAAcP,EAAYE,EAAQE,CAAa,EAG/D,QAAWI,KAAQb,EAAO,WACxBD,EAAY,MAAM,OAAO,CACvB,IAAKc,EAAK,IACV,OAAQC,GAAef,EAAY,MAAOc,CAAI,EAC9C,UAAWA,EAAK,UAChB,OAAQA,EAAK,MACf,CAAC,EAIH,IAAME,EAAW,IAAI,OAAO,SAAS,QAAQhB,EAAa,IAAI,OAAO,SAAS,OAAS,EACjFiB,EAAoC,CAAC,EAC3C,OAAW,CAACC,EAAY,CAAE,SAAAhB,EAAU,UAAAiB,EAAW,WAAAC,CAAW,CAAC,IAAK,OAAO,QAAQtC,EAAYI,CAAG,EAAE,QAAW,EAAG,CAC5G,IAAMmC,EAAUL,EAAS,gBAAgBE,EAAYhB,EAAUiB,EAAWC,CAAU,EACpF,GAAI,CAACC,EAAS,CACZ,QAAQ,MAAM,kBAAkBH,WAAoB,EACpD,SAEFD,EAAgBC,CAAU,EAAIG,EAEhC,IAAMC,EAAWL,EAGXM,EAA0D,CAAC,EACjE,QAAWC,KAAU,OAAO,KAAKvB,EAAO,IAAI,EAAG,CAC7C,GAAM,CAAE,OAAAwB,EAAQ,eAAAC,EAAgB,UAAAP,EAAW,WAAAC,EAAY,kBAAAO,EAAmB,eAAAC,EAAgB,UAAAC,CAAU,EAClG5B,EAAO,KAAKuB,CAAM,EAGdM,EAASnB,GAAaH,EAAO,WAAYqB,CAAS,EAElDE,EAAMC,GAAsB,CAChC,MAAOhC,EACP,SAAAsB,EACA,YAAaG,EACb,OAAAK,EACA,UAAAX,EACA,WAAAC,EACA,eAAAM,EACA,kBAAAC,CACF,CAAC,EAGD,GAAIC,EACF,OAAW,CAAC1C,EAAK+C,EAAM,IAAK,OAAO,QAAQL,CAAc,EACvDG,EAAI,kBAAkB7C,EAAK+C,EAAM,EAIrCV,EAAYC,CAAwD,EAAIO,EAE1E,IAAMG,EAAOX,EAEPY,EAAQC,GAAYpC,EAAY,KAAK,EAE3CD,EAAcb,CAAG,EAAI,CAAE,YAAAc,EAAa,WAAAM,EAAY,OAAAE,EAAQ,QAAAI,EAAS,KAAAsB,EAAM,MAAAC,EAAO,OAAQrD,EAAYI,CAAG,CAAE,EAEzG,IAAMmD,EAAStC,EAEf,MAAO,CACL,KAAAN,EACA,OAAA4C,EACA,QAAS,IAAM,CACb5C,EAAK,QAAQ,EAAI,EACjB,QAAWP,KAAO,OAAO,KAAKmD,CAAM,EAAG,CACrC,IAAMC,EAAQD,EAAOnD,CAAG,EACxBoD,EAAM,OAAO,QAAQ,EACrBA,EAAM,QAAQ,QAAQ,EACtBA,EAAM,MAAM,QAAQ,EACpB,QAAWP,KAAO,OAAO,OAAOO,EAAM,IAAI,EACxCP,EAAI,QAAQ,EAIhB,OAAO,oBAAoB,SAAUnC,CAAM,CAC7C,CACF,CACF,CC5JA,IAAA2C,GAAyB,6BAIzB,SAASC,IAAiB,CACxB,IAAMC,EAAM,KAAK,OAAO,EAAI,IACtBC,EAAQ,KAAK,OAAO,EAAI,IACxBC,EAAO,KAAK,OAAO,EAAI,IAC7B,OAAOF,EAAM,MAASC,EAAQ,IAAOC,CACvC,CAEO,SAASC,GACdC,EACAC,EACAC,EACAC,EACAC,EACA,CACA,IAAMC,EAAU,CACd,YAAa,GACb,gBAAiB,GACjB,kBAAmB,GACnB,oBAAqB,GACrB,eAAgB,GAChB,QAAS,EACX,EAEMC,EAAe,IAAI,YACnBC,EAAgBL,EAAM,IAAI,UAAU,EAAG,EAAG,EAAG,EAAG,SAAU,EAAG,EACnEK,EAAc,eAAe,EAC7BA,EAAc,GAAG,YAAa,IAAM,CAClC,QAAQ,IAAI,UAAWA,CAAa,CACtC,CAAC,EAEDP,EAAO,WAAW,UAAWQ,GAAc,CACrCH,EAAQ,aACV,QAAQ,IAAIG,CAAS,EAGnBH,EAAQ,oBACVE,EAAc,SAASC,EAAU,MAAOA,EAAU,MAAM,EACxDD,EAAc,YAAYC,EAAU,QAASA,EAAU,OAAO,GAG5DH,EAAQ,gBACV,QAAQ,IACN,aAAaF,EAAW,QAAQ,qBAAqB,OAAO,OAAOA,EAAW,MAAM,EAAE,OACpF,CAACM,EAAKC,IAASD,EAAMC,EAAK,YAAY,EAAE,OACxC,CACF,oBAAoB,OAAO,OAAOP,EAAW,MAAM,EAAE,OAAO,CAACM,EAAKC,IAASD,EAAMC,EAAK,YAAY,EAAG,CAAC,GACxG,EAGEL,EAAQ,SACV,QAAQ,IAAI,WAAYD,EAAI,KAAK,CAAC,CAEtC,CAAC,EAEDH,EAAO,aAAa,UAAWU,GAAU,CACvC,GAAIN,EAAQ,gBAAiB,CAC3B,IAAMO,EAAaC,EAAkBF,EAAOV,EAAO,SAAS,EACtDa,EAAcZ,EAAM,IAAI,UAC5BU,EAAW,EAAIX,EAAO,UAAY,EAClCW,EAAW,EAAIX,EAAO,UAAY,EAClCA,EAAO,UACPA,EAAO,UACPN,GAAe,EACf,EACF,EACAmB,EAAY,eAAe,EAC3BA,EAAY,GAAG,YAAa,IAAM,CAChC,QAAQ,IAAI,UAAWA,CAAW,CACpC,CAAC,EACDR,EAAa,IAAIK,EAAOG,CAAW,EAGjCT,EAAQ,qBACV,QAAQ,IAAI,6BAA8BC,EAAa,IAAI,CAE/D,CAAC,EAEDL,EAAO,eAAe,UAAWU,GAAU,CACrCN,EAAQ,kBACVC,EAAa,IAAIK,CAAK,GAAG,QAAQ,EACjCL,EAAa,OAAOK,CAAK,GAGvBN,EAAQ,qBACV,QAAQ,IAAI,6BAA8BC,EAAa,IAAI,CAE/D,CAAC,CACH","names":["src_exports","__export","AssetType","GameObjectClasses","HueTintAndOutlineFXPipeline","MultiHueTintPipeline","ZERO_VECTOR","addCoords","chunkCoordToTileCoord","chunkToPixelCoord","coordEq","cornerTileCoordsFromRegionCoords","createAnimatedTilemap","createCamera","createChunkedTilemap","createChunks","createCulling","createDebugger","createInput","createObjectPool","createPhaserEngine","createVirtualTilemap","defineAssetsConfig","defineCameraConfig","defineMapConfig","definePhaserConfig","defineScaleConfig","defineScene","defineSceneConfig","generateFrames","getChunksInArea","getObjectsInArea","isRectangle","isSprite","isTileInArea","load","mod","pixelCoordToTileCoord","pixelToChunkCoord","removeAllTweens","tileCoordToChunkCoord","tileCoordToPixelCoord","tween","__toCommonJS","import_phaser","import_utils","tween","config","options","resolve","promise","targets","removeAllTweens","gameObject","tweenManager","mod","a","b","ZERO_VECTOR","cornerTileCoordsFromRegionCoords","regionCoords","regionLength","tileCoords","regionCoord","topLeft","topRight","bottomLeft","bottomRight","isTileInArea","tileCoord","area","coordEq","a","b","addCoords","pixelToChunkCoord","pixelCoord","chunkSize","chunkToPixelCoord","chunkCoord","pixelCoordToTileCoord","tileWidth","tileHeight","tileCoordToPixelCoord","tileCoordToChunkCoord","chunkCoordToTileCoord","import_utils","load","scene","callback","loader","resolve","promise","import_utils","getChunksInArea","area","chunkSize","topLeft","bottomRight","topLeftChunk","pixelToChunkCoord","bottomRightChunk","numChunksX","numChunksY","chunksInArea","x","y","getObjectsInArea","groups","area","ids","group","object","x","generateFrames","anims","animation","SpritePipeline","HueTintAndOutlineFXPipeline","game","obj","hueTint","outline","outlineColor","tintColor","_outlineColor","renderTarget","__publicField","MultiHueTintPipeline","game","__publicField","defineScene","options","preload","create","update","key","renderer","HueTintAndOutlineFXPipeline","MultiHueTintPipeline","definePhaserConfig","options","AssetType","GameObjectClasses","import_rxjs","import_utils","createChunks","worldView$","chunkSize","padding","visibleChunks","addedChunks$","removedChunks$","x","y","width","height","getChunksInArea","newVisibleChunks","added","coord","removed","import_vanilla","import_rxjs","createCamera","phaserCamera","options","e","worldView$","zoom$","wheelStream$","pinchStream$","gesture","state","onResize","setZoom","zoom","pinchSub","scaledDelta","acc","curr","wheelSub","x","movement","m","y","ignore","objectPool","centerOnCoord","tileCoord","tileWidth","tileHeight","pixelCoord","tileCoordToPixelCoord","centerOn","setScroll","import_mobx","import_rxjs","import_utils","import_utils","createRegistry","coordToIds","idToCoord","get","coord","set","id","prevCoord","remove","createCulling","objectPool","camera","chunks","chunkRegistry","disposer","chunkToEntity","chunk","entities","entityId","addedChunkSub","entity","removedChunkSub","trackEntity","pixelToChunkCoord","coordEq","dispose","newChunk","disposeObjectPoolObserver","change","d","import_mobx","defineAssetsConfig","assets","defineMapConfig","config","defineSceneConfig","defineScaleConfig","defineCameraConfig","isSprite","gameObject","type","isRectangle","createEmbodiedEntity","id","group","type","currentCameraFilter","position","onOnce","onUpdate","activeGameObject","cameraFilter","trackPositionUpdates","func","modifiesPosition","gameObject","setComponent","now","once","update","newPosition","hasComponent","removeComponent","stop","reset","executeGameObjectFunctions","isSprite","removeAllTweens","isRectangle","setCameraFilter","filter","spawn","despawn","functions","gameObjectProxy","_","prop","x","y","value","import_mobx","import_utils","isGameObjectType","GameObjectClasses","createObjectPool","scene","groups","classType","objects","cameraFilter","get","entity","type","embodiedEntity","createEmbodiedEntity","remove","object","ignoreCamera","cameraId","ignore","import_utils","import_utils","createChunkedTilemap","params","scene","tilesets","layerConfig","chunks","backgroundTile","tiles","tileWidth","tileHeight","relevantTilesets","key","mod","maps","chunkTileSize","disposer","visible","chunk","renderChunk","addedChunkSub","removedChunkSub","destroyChunk","createLayers","map","x","y","width","height","layers","layer","tilemapLayer","id","renderer","MultiHueTintPipeline","createMap","chunkCoord","data","tileset","topLeft","chunkToPixelCoord","defaultLayer","getMapAtChunkCoord","getMapAtTileCoord","tileCoord","tileCoordToChunkCoord","force","putTileAt","coord","tile","tint","putTile","topLeftCoord","chunkCoordToTileCoord","defaultIndex","index","dispose","d","size","setVisible","v","import_utils","createVirtualTilemap","config","chunks","layers","defaultLayer","tileWidth","tileHeight","tiles","layerKey","chunkedTilemap","createChunkedTilemap","putTileAt","coord","tile","layer","tint","chunk","tileCoordToChunkCoord","import_utils","createAnimatedTilemap","config","layers","defaultLayer","animationInterval","scene","defaultLayerKey","lastStep","animations","animatedTiles","layerKey","pausedAnimations","virtualTilemap","createVirtualTilemap","registerAnimation","animationKey","frames","putAnimationAt","coord","layer","removeAnimationAt","animation","pauseAnimationAt","resumeAnimationAt","animationStep","mod","currentFrame","update","time","dispose","import_rxjs","import_mobx","import_utils","createInput","inputPlugin","disposers","enabled","disableInput","enableInput","setCursor","cursor","keyboard$","pointermove$","pointerdown$","event","pointerup$","click$","prev","now","doubleClick$","rightClick$","pointer","drag$","acc","curr","area","pressedKeys","phaserKeyboard","codeToKey","key","addKey","keySub","keyName","pointerSub","keyObj","keyEvent","onKeyPress","keySelector","callback","disposer","passes","dispose","import_utils","createPhaserEngine","options","scale","sceneConfig","cameraConfig","cullingChunkSize","sceneConstructors","key","preload","create","update","defineScene","phaserConfig","definePhaserConfig","game","resolve","promise","resize","width","height","partialScenes","phaserScene","config","assetKey","asset","load","loader","objectPool","createObjectPool","camera","createCamera","cullingChunks","createChunks","culling","createCulling","anim","generateFrames","emptyMap","partialTilesets","tilesetKey","tileWidth","tileHeight","tileset","tilesets","partialMaps","mapKey","layers","backgroundTile","animationInterval","tileAnimations","chunkSize","chunks","map","createAnimatedTilemap","frames","maps","input","createInput","scenes","scene","import_utils","getRandomColor","red","green","blue","createDebugger","camera","chunks","scene","objectPool","map","options","visualChunks","worldViewRect","worldView","acc","curr","chunk","pixelCoord","chunkToPixelCoord","visualChunk"]} \ No newline at end of file diff --git a/packages/phaserx/dist/index.mjs b/packages/phaserx/dist/index.mjs deleted file mode 100644 index c329ece45c..0000000000 --- a/packages/phaserx/dist/index.mjs +++ /dev/null @@ -1,111 +0,0 @@ -var je=Object.defineProperty;var Le=(t,e,o)=>e in t?je(t,e,{enumerable:!0,configurable:!0,writable:!0,value:o}):t[e]=o;var Y=(t,e,o)=>(Le(t,typeof e!="symbol"?e+"":e,o),o);import"phaser";import{deferred as Ee}from"@latticexyz/utils";async function Me(t,e){let[o,,i]=Ee(),{targets:n}=t;if(!(!n.scene||!n.scene.tweens))return e?.keepExistingTweens||X(n),n.scene.tweens.add({...t,onComplete:(s,c)=>{t.onComplete&&t.onComplete(s,c),o()}}),i}function X(t){let e=t.scene.tweens;for(let o of e.tweens)o.hasTarget(t)&&o.stop()}function I(t,e){return(t%e+e)%e}var Re={x:0,y:0};function Ie(t,e){let o=[];return t.forEach(i=>{let n={x:i.x*e,y:i.y*e},s={x:(i.x+1)*e-1,y:i.y*e},c={x:i.x*e,y:(i.y+1)*e-1},r={x:(i.x+1)*e-1,y:(i.y+1)*e-1};o.push(n,s,c,r)}),o}function ze(t,e){return t.x>=e.x&&t.x=e.x&&t.y{i()}),n}import{CoordMap as We}from"@latticexyz/utils";function te(t,e){let o={x:t.x,y:t.y},i={x:t.x+t.width,y:t.y+t.height},n=z(o,e),s=z(i,e),c=s.x-n.x+1,r=s.y-n.y+1,l=new We;for(let d=0;di!==void 0)}function oe(t,e){return e.prefix&&e.suffix?t.generateFrameNames(e.assetKey,{start:e.startFrame,end:e.endFrame,prefix:e.prefix,suffix:e.suffix}):t.generateFrameNumbers(e.assetKey,{start:e.startFrame,end:e.endFrame})}var $e=Phaser.Renderer.WebGL.Pipelines.SpriteFXPipeline||Object,F=class extends $e{_tintColor=new Phaser.Display.Color;_outline=0;_outlineColor=new Phaser.Display.Color;constructor(e){super({game:e,renderTarget:!0,fragShader:` - precision mediump float; - uniform sampler2D uMainSampler; - uniform vec2 uTextureSize; - uniform vec3 tintColor; - uniform int outline; - uniform vec3 outlineColor; - varying vec2 outTexCoord; - - vec3 rgb2hsv(vec3 c) - { - vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); - vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g)); - vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r)); - float d = q.x - min(q.w, q.y); - float e = 1.0e-10; - return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x); - } - - void main(void) - { - vec4 srcColor; - vec4 outColor; - vec3 hsvColor; - vec3 rgbColor; - srcColor = texture2D(uMainSampler, outTexCoord); - hsvColor = rgb2hsv(srcColor.rgb); - if (hsvColor.g == 0.0 && !(tintColor.r == 0.0 && tintColor.g == 0.0 && tintColor.b == 0.0)) - { - rgbColor = srcColor.rgb * tintColor; - } else { - rgbColor = srcColor.rgb; - } - outColor = vec4(rgbColor.r, rgbColor.g, rgbColor.b, srcColor.a); - if(outline == 1) { - vec2 distance = vec2(2.0, 2.0) / uTextureSize; - float upAlpha = texture2D(uMainSampler, outTexCoord + vec2(0.0, distance.y)).a; - float leftAlpha = texture2D(uMainSampler, outTexCoord + vec2(-distance.x, 0.0)).a; - float downAlpha = texture2D(uMainSampler, outTexCoord + vec2(0.0, -distance.y)).a; - float rightAlpha = texture2D(uMainSampler, outTexCoord + vec2(distance.x, 0.0)).a; - if (srcColor.a == 0.0 && max(max(upAlpha, downAlpha), max(leftAlpha, rightAlpha)) == 1.0) - { - outColor = vec4(outlineColor, 1.0); - } - } - gl_FragColor = outColor; - } - `})}onDrawSprite(e){let o=e.pipelineData.hueTint,i=e.pipelineData.outline,n=e.pipelineData.outlineColor,s=o||0;if(typeof s=="number"&&(s=Phaser.Display.Color.IntegerToRGB(s)),i){this._outline=1;let c=n??0;typeof c=="number"&&(c=Phaser.Display.Color.IntegerToRGB(n)),this._outlineColor.setFromRGB(c)}else this._outline=0;this._tintColor.setFromRGB(s)}onDraw(e){this.set2f("uTextureSize",this.renderer.width,this.renderer.height),this.set3f("tintColor",this._tintColor.redGL,this._tintColor.greenGL,this._tintColor.blueGL),this.set1i("outline",this._outline),this.set3f("outlineColor",this._outlineColor.redGL,this._outlineColor.greenGL,this._outlineColor.blueGL),this.drawToGame(e)}};Y(F,"KEY","HueTintFXPipeline");var M=class extends Phaser.Renderer.WebGL.Pipelines.MultiPipeline{constructor(e){super({game:e,fragShader:` - #define SHADER_NAME PHASER_MULTI_V2_FS - #define numTextures %count% - precision highp float; - uniform sampler2D uMainSampler[%count%]; - varying vec2 outTexCoord; - varying float outTexId; - varying float outTintEffect; - varying vec4 outTint; - - vec4 getSampler (int index, vec2 uv) - { - for (int i = 0; i < numTextures; ++i) - { - if (i == index) - { - return texture2D(uMainSampler[i], uv); - } - } - - // Return black - return vec4(0); - } - vec3 rgb2hsv(vec3 c) - { - vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); - vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g)); - vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r)); - float d = q.x - min(q.w, q.y); - float e = 1.0e-10; - return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x); - } - vec3 hsv2rgb(vec3 c) - { - vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); - vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); - return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); - } - - void main () - { - vec4 srcColor; - vec3 hsvColor; - vec3 rgbColor; - vec4 texel = vec4(outTint.bgr * outTint.a, outTint.a); - srcColor = getSampler(int(outTexId), outTexCoord); - vec4 color = srcColor * texel; - // Multiply texture tint - vec3 hueTintColor = outTint.bgr; - if (hueTintColor != vec3(0.0, 0.0, 0.0)) { - hsvColor = rgb2hsv(srcColor.rgb); - if (hsvColor.g == 0.0 && srcColor.a == 1.) - { - vec3 color = hsv2rgb(hsvColor); - rgbColor = color * hueTintColor; - } else { - rgbColor = hsv2rgb(hsvColor); - } - color = vec4(rgbColor.r, rgbColor.g, rgbColor.b, srcColor.a); - } - gl_FragColor = color; - } - `})}};Y(M,"KEY","MultiHueTintPipeline");function me(t){let{preload:e,create:o,update:i,key:n}=t;return class extends Phaser.Scene{constructor(){super({key:n})}preload(){e&&e(this)}create(){o&&o(this);let c=this.renderer;c?.pipelines&&(c.pipelines.add(F.KEY,new F(this.game)),c.pipelines.add(M.KEY,new M(this.game)))}update(){i&&i(this)}}}function de(t){return{type:Phaser.WEBGL,scale:t.scale,pixelArt:!0,autoFocus:!0,render:{antialiasGL:!1,pixelArt:!0},scene:t.scenes}}var pe=(i=>(i[i.Image=0]="Image",i[i.SpriteSheet=1]="SpriteSheet",i[i.MultiAtlas=2]="MultiAtlas",i))(pe||{}),re={Sprite:Phaser.GameObjects.Sprite,Rectangle:Phaser.GameObjects.Rectangle,Line:Phaser.GameObjects.Line,Text:Phaser.GameObjects.Text};import{map as Ve,Subject as fe}from"rxjs";import{CoordMap as qe,subtract as ye}from"@latticexyz/utils";function ne(t,e,o=100){let i={current:new qe},n=new fe,s=new fe;return t.pipe(Ve(({x:r,y:l,width:d,height:a})=>te({x:r-o,y:l-o,width:d+2*o,height:a+2*o},e))).subscribe(r=>{let l=ye(r,i.current);for(let a of l.coords())n.next(a);let d=ye(i.current,r);for(let a of d.coords())s.next(a);i.current=r}),{addedChunks$:n.asObservable(),removedChunks$:s.asObservable(),chunkSize:e,visibleChunks:i}}import{Gesture as Ne}from"@use-gesture/vanilla";import{BehaviorSubject as Ce,filter as He,map as q,sampleTime as Be,scan as Ye,Subject as be,throttleTime as Xe}from"rxjs";function he(t,e){document.addEventListener("gesturestart",m=>m.preventDefault()),document.addEventListener("gesturechange",m=>m.preventDefault());let o=new Ce(t.worldView),i=new Ce(t.zoom),n=new be,s=new be,c=new Ne(t.scene.game.canvas,{onPinch:m=>s.next(m),onWheel:m=>n.next(m)},{}),r=()=>{requestAnimationFrame(()=>o.next(t.worldView))};t.scene.scale.addListener("resize",r);function l(m){t.setZoom(m),o.next(t.worldView),i.next(m)}let d=s.pipe(Xe(10),q(m=>{let x=i.getValue(),k=(m.offset[0]-x)*e.pinchSpeed;return x+k}),q(m=>Math.min(Math.max(m,e.minZoom),e.maxZoom)),Ye((m,x)=>[m[1],x],[1,1])).subscribe(([,m])=>{c._ctrl.state.pinch&&(c._ctrl.state.pinch.offset[0]=m),l(m)}),a=n.pipe(He(m=>!m.pinching),Be(10),q(m=>m.delta.map(x=>x*e.wheelSpeed)),q(m=>m.map(x=>x/t.zoom)),q(m=>[t.scrollX+m[0],t.scrollY+m[1]])).subscribe(([m,x])=>{t.setScroll(m,x),o.next(t.worldView)});function v(m,x){m.ignoreCamera(t.id,x)}function P(m,x,u){let k=Z(m,x,u);y(k.x,k.y)}function y(m,x){t.centerOn(m,x),requestAnimationFrame(()=>o.next(t.worldView))}function h(m,x){t.setScroll(m,x),requestAnimationFrame(()=>o.next(t.worldView))}return{phaserCamera:t,worldView$:o,zoom$:i,ignore:v,dispose:()=>{d.unsubscribe(),a.unsubscribe(),c.destroy(),t.scene.scale.removeListener("resize",r)},centerOnCoord:P,centerOn:y,setScroll:h,setZoom:l}}import{computed as Ze,observe as Ue,reaction as Je}from"mobx";import{from as Qe,map as xe,mergeMap as et,pipe as tt}from"rxjs";import{filterNullish as ot}from"@latticexyz/utils";import{CoordMap as rt}from"@latticexyz/utils";function nt(){let t=new rt,e=new Map;function o(s){let c=t.get(s);return c||(c=new Set,t.set(s,c)),c}function i(s,c){let r=e.get(s);(r&&o(r))?.delete(s),o(c).add(s),e.set(s,c)}function n(s){let c=e.get(s);(c&&o(c))?.delete(s),e.delete(s)}return{set:i,remove:n,get:o}}function ge(t,e,o){let i=nt(),n=new Map,s=tt(xe(a=>Qe(i.get(a))),et(a=>a),xe(a=>t.get(a,"Existing")),ot()),c=o.addedChunks$.pipe(s).subscribe(a=>a.spawn()),r=o.removedChunks$.pipe(s).subscribe(a=>a.despawn());function l(a){n.get(a.id)&&console.error("Entity is being tracked multiple times",a);let v=Ze(()=>z(a.position,o.chunkSize),{equals:J}),P=Je(()=>v.get(),y=>{i.set(a.id,y),o.visibleChunks.current.get(y)?a.spawn():a.despawn()},{fireImmediately:!0});n.set(a.id,P)}let d=Ue(t.objects,a=>{if(a.type==="add"&&l(a.newValue),a.type==="delete"){i.remove(a.oldValue.id);let v=n.get(a.oldValue.id);v&&v(),n.delete(a.oldValue.id)}});return{dispose:()=>{for(let a of n.values())a();d(),c.unsubscribe(),r.unsubscribe()}}}import{observable as it,runInAction as ve}from"mobx";function Co(t){return t}function bo(t){return t}function ho(t){return t}function xo(t){return t}function go(t){return t}function ie(t,e){return e==="Sprite"}function Te(t,e){return e==="Rectangle"}function Pe(t,e,o,i=0){let n=it({x:0,y:0}),s=new Map,c=new Map,r,l={current:i};function d(u){return we(u)?k=>{u(k),ve(()=>{n.x=k.x,n.y=k.y})}:u}async function a({id:u,now:k,once:C,update:b}){let w=C&&we(C);w&&ve(()=>{n.x=w.x??n.x,n.y=w.y??n.y}),C&&s.set(u,d(C)),b&&c.set(u,d(b)),r&&k&&await d(k)(r),r&&C&&C(r)}function v(u){return s.has(u)||c.has(u)}function P(u,k){s.delete(u),c.delete(u),r&&(y(r,k),ke(r,s.values()))}function y(u,k=!0){k&&(ie(u,o)&&u.stop(),X(u)),u.setDepth(10),u.cameraFilter=l.current,u.resetPipeline(!0,!0),u.setScale(1,1),u.setOrigin(0,0),u.setAlpha(1),u.setScrollFactor(1),u.clearMask(),u.setData("objectPoolId",null),ie(u,o)&&(u.clearTint(),u.setTexture("")),Te(u,o)&&(u.width=0,u.height=0)}function h(u){l.current=u,r&&(r.cameraFilter=u)}function m(){if(r)return;let u=e.get();y(u),ke(u,s.values()),u.setActive(!0),u.setVisible(!0),u.setData("objectPoolId",t),r=u}function x(){r&&e.killAndHide(r),r=void 0}return{setComponent:a,hasComponent:v,removeComponent:P,spawn:m,despawn:x,position:n,id:t,setCameraFilter:h,type:o}}function ke(t,e){if(t)for(let o of e)o(t)}function we(t){let e,o=new Proxy({x:void 0,y:void 0},{get:(i,n)=>n==="setPosition"?(s,c)=>e={x:s,y:c}:n==="setX"?s=>e={x:s}:n==="setY"?s=>e={y:s}:()=>{},set:(i,n,s)=>(n==="x"&&(e=e?{...e,x:s}:{x:s}),n==="y"&&(e=e?{...e,y:s}:{y:s}),!0)});return t(o),e}import{observable as st}from"mobx";import{mapObject as at}from"@latticexyz/utils";function ct(t){return Object.keys(re).includes(t)}function Se(t){let e=at(re,r=>t.add.group({classType:r})),o=st(new Map),i={current:0};function n(r,l){typeof r=="number"&&(r=String(r));let d=o.get(r);return ct(l)?(d||(d=Pe(r,e[l],l,i.current)),o.has(r)||o.set(r,d),d):d||void 0}function s(r){typeof r=="number"&&(r=String(r));let l=o.get(r);l&&l.despawn(),o.delete(r)}function c(r,l){l?i.current|=r:i.current&=~r;for(let d of o.values())d.setCameraFilter(i.current)}return{get:n,remove:s,objects:o,groups:e,ignoreCamera:c}}import{CoordMap as lt}from"@latticexyz/utils";import{pickRandom as ut}from"@latticexyz/utils";function se(t){let{scene:e,tilesets:o,layerConfig:i,chunks:n,backgroundTile:s,tiles:c,tileWidth:r,tileHeight:l}=t,d=Object.keys(i.layers).map(f=>i.layers[f].tilesets).flat();if(I(n.chunkSize,r)!==0||I(n.chunkSize,l)!==0)throw new Error("Chunks pixel size must be a multiple of tile width and height to be used with chunked tilemap");let a=new lt,v={x:n.chunkSize/r,y:n.chunkSize/l},P=new Set,y={current:!0};for(let f of n.visibleChunks.current.coords())p(f);let h=n.addedChunks$.subscribe(f=>{p(f)}),m=n.removedChunks$.subscribe(f=>{b(f)});P.add(()=>h?.unsubscribe()),P.add(()=>m?.unsubscribe);function x(f,T,S,O,K,G){let L={};for(let E of Object.keys(i.layers)){let H=i.layers[E],$=f.createBlankLayer(E,H.tilesets.map(U=>o[U]),S,O,K,G);if(!$){console.error(`Adding tilemap layer ${E} failed.`);continue}L[E]=$;let B=T.game.renderer;H.hasHueTintShader&&B?.pipelines&&(L[E].pipeline=B.pipelines.get(M.KEY))}return{layers:Object.values(L),defaultLayer:L[i.defaultLayer]}}function u(f){let T=new Phaser.Tilemaps.MapData({tileHeight:l,tileWidth:r,width:v.x,height:v.y,tilesets:Object.entries(o).filter(([G])=>d.includes(G)).map(([,G])=>G)}),S=new Phaser.Tilemaps.Tilemap(e,T),O=W(f,n.chunkSize),{defaultLayer:K}=x(S,e,O.x,O.y,v.x,v.y);return S.setLayer(K),a.set(f,S),S}function k(f){return a.get(f)||u(f)}function C(f){let T=V(f,r,l,n.chunkSize);return k(T)}function b(f,T){if(!y.current&&!T||!a.has(f))return;k(f).destroy(),a.delete(f)}function w(f,T,S,O){if(!y.current)return;let K=C(f),G=K.putTileAt(T,I(f.x,v.x),I(f.y,v.y),void 0,S);if(G==null)throw new Error("putTileAt failed");G.width=K.tileWidth,G.height=K.tileHeight,O&&(G.tint=O)}function p(f){if(!y.current)return;let T=k(f),S=Q(f,r,l,n.chunkSize);for(let O of Object.keys(i.layers))T.forEachTile(K=>{let G={x:S.x+K.x,y:S.y+K.y},L=O===i.defaultLayer?ut(s):-1,E=c[O].get(G)||L;K.index=E},void 0,void 0,void 0,void 0,void 0,void 0,O)}function g(){for(let f of a.values())f.destroy();a.clear();for(let f of P)f()}function A(){return a.size}function _(f){if(f!==y.current){y.current=f;for(let T of n.visibleChunks.current.coords())y.current?p(T):b(T,!0)}}return{size:A,putTileAt:w,dispose:g,setVisible:_,visible:y,tileWidth:r,tileHeight:l}}import{CoordMap as mt}from"@latticexyz/utils";function ae(t){let{chunks:e,layerConfig:{layers:o,defaultLayer:i},tileWidth:n,tileHeight:s}=t,c={};for(let d of Object.keys(o))c[d]=new mt;let r=se({...t,tiles:c});function l(d,a,v,P){c[v||i].set(d,a);let y=V(d,n,s,e.chunkSize);r.visible&&e.visibleChunks.current.get(y)&&r.putTileAt(d,a,v,P)}return{...r,putTileAt:l,tiles:c}}import{CoordMap as Ae}from"@latticexyz/utils";function ce(t){let{layerConfig:{layers:e,defaultLayer:o},animationInterval:i,scene:n}=t,s=o,c=0,r={},l={};for(let C of Object.keys(e))l[C]=new Ae;let d={};for(let C of Object.keys(e))d[C]=new Ae;let a=ae(t);function v(C,b){r[C]={frames:b,index:0}}function P(C,b,w=s){l[w].set(C,b)}function y(C,b=s){let w=l[b].get(C),p=w&&r[w];l[b].delete(C),p&&a.putTileAt(C,p.frames[0],b)}function h(C,b=s){let w=l[b].get(C);w&&(d[b].set(C,w),y(C,b))}function m(C,b=s){let w=d[b].get(C);w&&(d[b].delete(C),P(C,w,b))}function x(){for(let C of Object.keys(r)){let b=r[C];b&&(b.index=I(b.index+1,b.frames.length))}for(let C of Object.keys(l)){let b=l[C];for(let w of b.coords()){let p=b.get(w),g=p&&r[p];if(!g)continue;let A=g.frames[g.index];a.putTileAt(w,A,C)}}}function u(C){Co.current),R(()=>({pointer:t.manager?.activePointer})),D()),l=le(document,"mousedown").pipe(j(()=>o.current),R(p=>({pointer:t.manager?.activePointer,event:p})),D()),d=le(document,"mouseup").pipe(j(()=>o.current),R(p=>({pointer:t.manager?.activePointer,event:p})),D()),a=N(l,d).pipe(j(()=>o.current),R(({event:p})=>[p.type==="mousedown"&&p.button===0,Date.now()]),Ke(2,1),j(([p,g])=>p[0]&&!g[0]&&g[1]-p[1]<250),R(()=>t.manager?.activePointer),D()),v=l.pipe(j(()=>o.current),R(()=>Date.now()),Ke(2,1),j(([p,g])=>g-p<500),Ct(500),R(()=>t.manager?.activePointer),D()),P=N(l,d).pipe(j(({pointer:p})=>o.current&&p.rightButtonDown()),R(()=>t.manager?.activePointer),D()),y=N(l.pipe(R(()=>{})),N(d,r).pipe(pt(),ft((p,[{pointer:g},{pointer:A}])=>A.leftButtonDown()?g.leftButtonDown()&&p?{...p,width:A.worldX-p.x,height:A.worldY-p.y}:{x:A.worldX,y:A.worldY,width:0,height:0}:void 0,void 0),D(),j(p=>Math.abs(p.width)>10&&Math.abs(p.height)>10))).pipe(j(()=>o.current),dt()),h=bt(new Set),m=t.keyboard,x=new Map;for(let p of Object.keys(Phaser.Input.Keyboard.KeyCodes))C(p);let u=c.pipe(j(()=>o.current)).subscribe(p=>{let g=x.get(p.keyCode);g&&Oe(()=>{p.isDown&&h.add(g),p.isUp&&h.delete(g)})});e.add(()=>u?.unsubscribe());let k=N(l,d).subscribe(({pointer:p})=>{Oe(()=>{p.leftButtonDown()?h.add("POINTER_LEFT"):h.delete("POINTER_LEFT"),p.rightButtonDown()?h.add("POINTER_RIGHT"):h.delete("POINTER_RIGHT")})});e.add(()=>k?.unsubscribe());function C(p){if(!m){console.warn(`Adding key ${p} failed. No phaser keyboard detected.`);return}let g=m.addKey(p,!1);x.set(g.keyCode,p),g.removeAllListeners(),g.emitOnRepeat=!0,g.on("down",A=>c.next(A)),g.on("up",A=>c.next(A))}function b(p,g){let A=ht(()=>p(h),_=>{_&&g()},{fireImmediately:!0});e.add(A)}function w(){for(let p of e)p()}return{keyboard$:c.asObservable(),pointermove$:r,pointerdown$:l,pointerup$:d,click$:a,doubleClick$:v,rightClick$:P,drag$:y,pressedKeys:h,dispose:w,disableInput:i,enableInput:n,setCursor:s,enabled:o,onKeyPress:b}}import{deferred as xt}from"@latticexyz/utils";async function dr(t){let{scale:e,sceneConfig:o,cameraConfig:i,cullingChunkSize:n}=t,s=Object.keys(o).map(y=>{let{preload:h,create:m,update:x}=o[y];return me({key:y,preload:h,create:m,update:x})}),c=de({scenes:s,scale:e}),r=new Phaser.Game(c),[l,,d]=xt();r.events.on("ready",l),c.type===Phaser.HEADLESS&&r.textures.emit("ready"),await d;function a(){let y=window.innerWidth/r.scale.zoom,h=window.innerHeight/r.scale.zoom;r.scale.resize(y,h)}a(),window.addEventListener("resize",a);let v={};for(let y of r.scene.getScenes(!1)){let h=y.scene.key,m=o[h];for(let[f,T]of Object.entries(o[h].assets))await ee(y,S=>{T.type===0?S.image(f,T.path):T.type===1?S.spritesheet(f,T.path,T.options):T.type===2&&S.multiatlas(f,T.path,T.options.imagePath)});let x=Se(y),u=he(y.cameras.main,i),k=ne(u.worldView$,n),C=ge(x,u,k);for(let f of m.animations)y.anims.create({key:f.key,frames:oe(y.anims,f),frameRate:f.frameRate,repeat:f.repeat});let b=new Phaser.Tilemaps.Tilemap(y,new Phaser.Tilemaps.MapData),w={};for(let[f,{assetKey:T,tileWidth:S,tileHeight:O}]of Object.entries(o[h].tilesets)){let K=b.addTilesetImage(f,T,S,O);if(!K){console.error(`Adding tileset ${f} failed.`);continue}w[f]=K}let p=w,g={};for(let f of Object.keys(m.maps)){let{layers:T,backgroundTile:S,tileWidth:O,tileHeight:K,animationInterval:G,tileAnimations:L,chunkSize:E}=m.maps[f],H=ne(u.worldView$,E),$=ce({scene:y,tilesets:p,layerConfig:T,chunks:H,tileWidth:O,tileHeight:K,backgroundTile:S,animationInterval:G});if(L)for(let[B,U]of Object.entries(L))$.registerAnimation(B,U);g[f]=$}let A=g,_=Ge(y.input);v[h]={phaserScene:y,objectPool:x,camera:u,culling:C,maps:A,input:_,config:o[h]}}let P=v;return{game:r,scenes:P,dispose:()=>{r.destroy(!0);for(let y of Object.keys(P)){let h=P[y];h.camera.dispose(),h.culling.dispose(),h.input.dispose();for(let m of Object.values(h.maps))m.dispose()}window.removeEventListener("resize",a)}}}import{CoordMap as gt}from"@latticexyz/utils";function Tt(){let t=Math.random()*255,e=Math.random()*255,o=Math.random()*255;return t*65535+e*255+o}function Cr(t,e,o,i,n){let s={logViewport:!1,visualizeChunks:!0,visualizeViewport:!1,logNumVisibleChunks:!1,logObjectStats:!1,logMaps:!0},c=new gt,r=o.add.rectangle(0,0,1,1,16711680,.2);r.setInteractive(),r.on("pointerup",()=>{console.log("clicked",r)}),t.worldView$.subscribe(l=>{s.logViewport&&console.log(l),s.visualizeViewport&&(r.setScale(l.width,l.height),r.setPosition(l.centerX,l.centerY)),s.logObjectStats&&console.log(`Entities: ${i.objects.size} / Pool size: ${Object.values(i.groups).reduce((d,a)=>d+a.getChildren().length,0)} / Pool active: ${Object.values(i.groups).reduce((d,a)=>d+a.countActive(),0)}`),s.logMaps&&console.log("Num maps",n.size())}),e.addedChunks$.subscribe(l=>{if(s.visualizeChunks){let d=W(l,e.chunkSize),a=o.add.rectangle(d.x+e.chunkSize/2,d.y+e.chunkSize/2,e.chunkSize,e.chunkSize,Tt(),.5);a.setInteractive(),a.on("pointerup",()=>{console.log("clicked",a)}),c.set(l,a)}s.logNumVisibleChunks&&console.log("Number of visible chunks: ",c.size)}),e.removedChunks$.subscribe(l=>{s.visualizeChunks&&(c.get(l)?.destroy(),c.delete(l)),s.logNumVisibleChunks&&console.log("Number of visible chunks: ",c.size)})}export{pe as AssetType,re as GameObjectClasses,F as HueTintAndOutlineFXPipeline,M as MultiHueTintPipeline,Re as ZERO_VECTOR,Fe as addCoords,Q as chunkCoordToTileCoord,W as chunkToPixelCoord,J as coordEq,Ie as cornerTileCoordsFromRegionCoords,ce as createAnimatedTilemap,he as createCamera,se as createChunkedTilemap,ne as createChunks,ge as createCulling,Cr as createDebugger,Ge as createInput,Se as createObjectPool,dr as createPhaserEngine,ae as createVirtualTilemap,Co as defineAssetsConfig,go as defineCameraConfig,bo as defineMapConfig,de as definePhaserConfig,xo as defineScaleConfig,me as defineScene,ho as defineSceneConfig,oe as generateFrames,te as getChunksInArea,_e as getObjectsInArea,Te as isRectangle,ie as isSprite,ze as isTileInArea,ee as load,I as mod,ue as pixelCoordToTileCoord,z as pixelToChunkCoord,X as removeAllTweens,V as tileCoordToChunkCoord,Z as tileCoordToPixelCoord,Me as tween}; -//# sourceMappingURL=index.mjs.map \ No newline at end of file diff --git a/packages/phaserx/dist/index.mjs.map b/packages/phaserx/dist/index.mjs.map deleted file mode 100644 index bc43b5ed5a..0000000000 --- a/packages/phaserx/dist/index.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../src/index.ts","../src/utils/tween.ts","../src/utils/math.ts","../src/utils/coords.ts","../src/utils/load.ts","../src/utils/chunks.ts","../src/utils/area.ts","../src/utils/generateFrames.ts","../src/pipelines/HueTintAndOutlineFXPipeline.ts","../src/pipelines/MultiHueTintPipeline.ts","../src/defineScene.ts","../src/definePhaserConfig.ts","../src/constants.ts","../src/createChunks.ts","../src/createCamera.ts","../src/createCulling.ts","../src/createEmbodiedEntity.ts","../src/guards.ts","../src/createObjectPool.ts","../src/tilemap/createChunkedTilemap.ts","../src/tilemap/createVirtualTilemap.ts","../src/tilemap/createAnimatedTilemap.ts","../src/createInput.ts","../src/createPhaserEngine.ts","../src/createDebugger.ts"],"sourcesContent":["import \"phaser\";\n\nexport * from \"./utils\";\nexport * from \"./createPhaserEngine\";\nexport * from \"./createObjectPool\";\nexport * from \"./definePhaserConfig\";\nexport * from \"./defineScene\";\nexport * from \"./createCamera\";\nexport * from \"./createChunks\";\nexport * from \"./createDebugger\";\nexport * from \"./createCulling\";\nexport * from \"./constants\";\nexport * from \"./guards\";\nexport * from \"./pipelines\";\nexport * from \"./tilemap\";\nexport * from \"./createInput\";\nexport type { Asset, Camera, Coord } from \"./types\";\nexport type { AnimatedTilemap, ChunkedTilemap, VirtualTilemap } from \"./tilemap\";\n","import { deferred } from \"@latticexyz/utils\";\n\ntype TweenBuilderConfig = { targets: Phaser.GameObjects.Sprite } & Omit<\n Phaser.Types.Tweens.TweenBuilderConfig,\n \"targets\"\n>;\n\n/**\n * Add a tween to the provided game object.\n * @returns Promise that resolves when the tween is done.\n */\nexport async function tween(config: TweenBuilderConfig, options?: { keepExistingTweens?: boolean }) {\n const [resolve, , promise] = deferred();\n const { targets } = config;\n if (!targets.scene || !targets.scene.tweens) return;\n\n // Kill old tweens\n if (!options?.keepExistingTweens) {\n removeAllTweens(targets);\n }\n\n // Add new tween\n targets.scene.tweens.add({\n ...config,\n onComplete: (tween, targets) => {\n config.onComplete && config.onComplete(tween, targets);\n resolve();\n },\n });\n return promise;\n}\n\nexport function removeAllTweens(gameObject: Phaser.GameObjects.GameObject) {\n const tweenManager = gameObject.scene.tweens;\n for (const tween of tweenManager.tweens) {\n if (tween.hasTarget(gameObject)) {\n tween.stop();\n }\n }\n}\n","export function mod(a: number, b: number) {\n return ((a % b) + b) % b;\n}\n","import { Area, ChunkCoord, Coord, PixelCoord, WorldCoord } from \"../types\";\n\nexport const ZERO_VECTOR: Coord = { x: 0, y: 0 };\n\nexport function cornerTileCoordsFromRegionCoords(regionCoords: WorldCoord[], regionLength: number) {\n const tileCoords: WorldCoord[] = [];\n\n regionCoords.forEach((regionCoord) => {\n const topLeft = { x: regionCoord.x * regionLength, y: regionCoord.y * regionLength };\n const topRight = { x: (regionCoord.x + 1) * regionLength - 1, y: regionCoord.y * regionLength };\n const bottomLeft = { x: regionCoord.x * regionLength, y: (regionCoord.y + 1) * regionLength - 1 };\n const bottomRight = { x: (regionCoord.x + 1) * regionLength - 1, y: (regionCoord.y + 1) * regionLength - 1 };\n tileCoords.push(topLeft, topRight, bottomLeft, bottomRight);\n });\n\n return tileCoords;\n}\n\nexport function isTileInArea(tileCoord: WorldCoord, area: Area) {\n return (\n tileCoord.x >= area.x &&\n tileCoord.x < area.x + area.width &&\n tileCoord.y >= area.x &&\n tileCoord.y < area.y + area.height\n );\n}\n\nexport function coordEq(a?: Coord, b?: Coord) {\n if (!a && !b) return true;\n if (!a || !b) return false;\n return a.x === b.x && a.y === b.y;\n}\n\nexport function addCoords(a: Coord, b: Coord) {\n return {\n x: a.x + b.x,\n y: a.y + b.y,\n };\n}\n\nexport function pixelToChunkCoord(pixelCoord: PixelCoord, chunkSize: number): ChunkCoord {\n return { x: Math.floor(pixelCoord.x / chunkSize), y: Math.floor(pixelCoord.y / chunkSize) };\n}\n\nexport function chunkToPixelCoord(chunkCoord: ChunkCoord, chunkSize: number): PixelCoord {\n return { x: chunkCoord.x * chunkSize, y: chunkCoord.y * chunkSize };\n}\n\nexport function pixelCoordToTileCoord(pixelCoord: PixelCoord, tileWidth: number, tileHeight: number): WorldCoord {\n return {\n x: Math.floor(pixelCoord.x / tileWidth),\n y: Math.floor(pixelCoord.y / tileHeight),\n };\n}\n\nexport function tileCoordToPixelCoord(tileCoord: WorldCoord, tileWidth: number, tileHeight: number): PixelCoord {\n return {\n x: tileCoord.x * tileWidth,\n y: tileCoord.y * tileHeight,\n };\n}\n\nexport function tileCoordToChunkCoord(\n tileCoord: WorldCoord,\n tileWidth: number,\n tileHeight: number,\n chunkSize: number\n): ChunkCoord {\n const pixelCoord = tileCoordToPixelCoord(tileCoord, tileWidth, tileHeight);\n return pixelToChunkCoord(pixelCoord, chunkSize);\n}\n\nexport function chunkCoordToTileCoord(\n chunkCoord: ChunkCoord,\n tileWidth: number,\n tileHeight: number,\n chunkSize: number\n): WorldCoord {\n const pixelCoord = chunkToPixelCoord(chunkCoord, chunkSize);\n return pixelCoordToTileCoord(pixelCoord, tileWidth, tileHeight);\n}\n","import { deferred } from \"@latticexyz/utils\";\n\nexport async function load(scene: Phaser.Scene, callback: (loader: Phaser.Loader.LoaderPlugin) => void) {\n const loader = scene.load;\n callback(loader);\n loader.start();\n const [resolve, , promise] = deferred();\n loader.on(\"complete\", () => {\n resolve();\n });\n return promise;\n}\n","import { CoordMap } from \"@latticexyz/utils\";\nimport { Area } from \"../types\";\nimport { pixelToChunkCoord } from \"./coords\";\n\nexport function getChunksInArea(area: Area, chunkSize: number) {\n const topLeft = { x: area.x, y: area.y };\n const bottomRight = { x: area.x + area.width, y: area.y + area.height };\n\n const topLeftChunk = pixelToChunkCoord(topLeft, chunkSize);\n const bottomRightChunk = pixelToChunkCoord(bottomRight, chunkSize);\n\n const numChunksX = bottomRightChunk.x - topLeftChunk.x + 1;\n const numChunksY = bottomRightChunk.y - topLeftChunk.y + 1;\n\n const chunksInArea = new CoordMap();\n\n for (let x = 0; x < numChunksX; x++) {\n for (let y = 0; y < numChunksY; y++) {\n chunksInArea.set(\n {\n x: topLeftChunk.x + x,\n y: topLeftChunk.y + y,\n },\n true\n );\n }\n }\n\n return chunksInArea;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nexport function getObjectsInArea(groups: Phaser.GameObjects.Group[], area: Phaser.Geom.Rectangle) {\n const ids = [];\n for (const group of groups) {\n for (const object of group.getChildren() as any[]) {\n if (object.active && \"x\" in object && \"y\" in object && area.contains(object.x, object.y)) {\n console.log(\"got one\", object);\n ids.push(object);\n }\n }\n }\n return ids.filter((x) => x !== undefined);\n}\n","import { Animation, Assets } from \"../types\";\n\nexport function generateFrames(\n anims: Phaser.Animations.AnimationManager,\n animation: Animation\n): Phaser.Types.Animations.AnimationFrame[] {\n if (animation.prefix && animation.suffix) {\n return anims.generateFrameNames(animation.assetKey, {\n start: animation.startFrame,\n end: animation.endFrame,\n prefix: animation.prefix,\n suffix: animation.suffix,\n });\n } else {\n return anims.generateFrameNumbers(animation.assetKey, { start: animation.startFrame, end: animation.endFrame });\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nconst SpritePipeline = Phaser.Renderer.WebGL.Pipelines.SpriteFXPipeline || Object;\nexport class HueTintAndOutlineFXPipeline extends SpritePipeline {\n public static readonly KEY = \"HueTintFXPipeline\";\n\n private _tintColor = new Phaser.Display.Color();\n\n private _outline = 0;\n private _outlineColor = new Phaser.Display.Color();\n\n constructor(game: Phaser.Game) {\n super({\n game: game,\n renderTarget: true,\n fragShader: `\n precision mediump float;\n uniform sampler2D uMainSampler;\n uniform vec2 uTextureSize;\n uniform vec3 tintColor;\n uniform int outline;\n uniform vec3 outlineColor;\n varying vec2 outTexCoord;\n \n vec3 rgb2hsv(vec3 c)\n {\n vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);\n vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));\n vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));\n float d = q.x - min(q.w, q.y);\n float e = 1.0e-10;\n return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);\n }\n \n void main(void)\n {\n vec4 srcColor;\n vec4 outColor;\n vec3 hsvColor;\n vec3 rgbColor;\n srcColor = texture2D(uMainSampler, outTexCoord);\n hsvColor = rgb2hsv(srcColor.rgb);\n if (hsvColor.g == 0.0 && !(tintColor.r == 0.0 && tintColor.g == 0.0 && tintColor.b == 0.0))\n {\n rgbColor = srcColor.rgb * tintColor;\n } else {\n rgbColor = srcColor.rgb;\n }\n outColor = vec4(rgbColor.r, rgbColor.g, rgbColor.b, srcColor.a);\n if(outline == 1) {\n vec2 distance = vec2(2.0, 2.0) / uTextureSize;\n float upAlpha = texture2D(uMainSampler, outTexCoord + vec2(0.0, distance.y)).a;\n float leftAlpha = texture2D(uMainSampler, outTexCoord + vec2(-distance.x, 0.0)).a;\n float downAlpha = texture2D(uMainSampler, outTexCoord + vec2(0.0, -distance.y)).a;\n float rightAlpha = texture2D(uMainSampler, outTexCoord + vec2(distance.x, 0.0)).a;\n if (srcColor.a == 0.0 && max(max(upAlpha, downAlpha), max(leftAlpha, rightAlpha)) == 1.0)\n {\n outColor = vec4(outlineColor, 1.0);\n }\n }\n gl_FragColor = outColor; \n }\n `,\n });\n }\n\n onDrawSprite(obj: Phaser.GameObjects.Sprite) {\n const hueTint = (obj.pipelineData as any).hueTint;\n\n const outline = (obj.pipelineData as any).outline;\n const outlineColor = (obj.pipelineData as any).outlineColor;\n\n let tintColor = hueTint ? hueTint : 0x000000;\n if (typeof tintColor === \"number\") {\n tintColor = Phaser.Display.Color.IntegerToRGB(tintColor);\n }\n\n if (outline) {\n this._outline = 1;\n\n let _outlineColor = outlineColor ?? 0x000000;\n if (typeof _outlineColor === \"number\") {\n _outlineColor = Phaser.Display.Color.IntegerToRGB(outlineColor);\n }\n\n this._outlineColor.setFromRGB(_outlineColor);\n } else {\n this._outline = 0;\n }\n\n this._tintColor.setFromRGB(tintColor);\n }\n\n onDraw(renderTarget: Phaser.Renderer.WebGL.RenderTarget) {\n this.set2f(\"uTextureSize\", this.renderer.width, this.renderer.height);\n this.set3f(\"tintColor\", this._tintColor.redGL, this._tintColor.greenGL, this._tintColor.blueGL);\n\n this.set1i(\"outline\", this._outline);\n this.set3f(\"outlineColor\", this._outlineColor.redGL, this._outlineColor.greenGL, this._outlineColor.blueGL);\n\n this.drawToGame(renderTarget);\n }\n}\n","export class MultiHueTintPipeline extends Phaser.Renderer.WebGL.Pipelines.MultiPipeline {\n public static readonly KEY = \"MultiHueTintPipeline\";\n constructor(game: Phaser.Game) {\n super({\n game: game,\n fragShader: `\n #define SHADER_NAME PHASER_MULTI_V2_FS\n #define numTextures %count%\n precision highp float;\n uniform sampler2D uMainSampler[%count%];\n varying vec2 outTexCoord;\n varying float outTexId;\n varying float outTintEffect;\n varying vec4 outTint;\n \n vec4 getSampler (int index, vec2 uv)\n {\n for (int i = 0; i < numTextures; ++i)\n {\n if (i == index)\n {\n return texture2D(uMainSampler[i], uv);\n }\n }\n \n // Return black\n return vec4(0);\n }\n vec3 rgb2hsv(vec3 c)\n {\n vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);\n vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));\n vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));\n float d = q.x - min(q.w, q.y);\n float e = 1.0e-10;\n return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);\n }\n vec3 hsv2rgb(vec3 c)\n {\n vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);\n vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);\n return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);\n }\n \n void main ()\n {\n vec4 srcColor;\n vec3 hsvColor;\n vec3 rgbColor;\n vec4 texel = vec4(outTint.bgr * outTint.a, outTint.a);\n srcColor = getSampler(int(outTexId), outTexCoord);\n vec4 color = srcColor * texel;\n // Multiply texture tint\n vec3 hueTintColor = outTint.bgr;\n if (hueTintColor != vec3(0.0, 0.0, 0.0)) {\n hsvColor = rgb2hsv(srcColor.rgb);\n if (hsvColor.g == 0.0 && srcColor.a == 1.)\n {\n vec3 color = hsv2rgb(hsvColor);\n rgbColor = color * hueTintColor;\n } else {\n rgbColor = hsv2rgb(hsvColor);\n }\n color = vec4(rgbColor.r, rgbColor.g, rgbColor.b, srcColor.a);\n }\n gl_FragColor = color;\n }\n `,\n });\n }\n}\n","import { HueTintAndOutlineFXPipeline, MultiHueTintPipeline } from \"./pipelines\";\n\nexport function defineScene(options: {\n key: string;\n preload?: (scene: Phaser.Scene) => void;\n create?: (scene: Phaser.Scene) => void;\n update?: (scene: Phaser.Scene) => void;\n}) {\n const { preload, create, update, key } = options;\n return class GameScene extends Phaser.Scene {\n constructor() {\n super({ key });\n }\n\n preload() {\n preload && preload(this);\n }\n\n create() {\n create && create(this);\n const renderer = this.renderer as Phaser.Renderer.WebGL.WebGLRenderer;\n if (renderer?.pipelines) {\n renderer.pipelines.add(HueTintAndOutlineFXPipeline.KEY, new HueTintAndOutlineFXPipeline(this.game));\n renderer.pipelines.add(MultiHueTintPipeline.KEY, new MultiHueTintPipeline(this.game));\n }\n }\n\n update() {\n update && update(this);\n }\n };\n}\n","import { GameScene } from \"./types\";\n\nexport function definePhaserConfig(options: {\n scenes: GameScene[];\n scale: Phaser.Types.Core.GameConfig[\"scale\"];\n}): Phaser.Types.Core.GameConfig {\n return {\n type: Phaser.WEBGL,\n scale: options.scale,\n pixelArt: true,\n autoFocus: true,\n render: {\n antialiasGL: false,\n pixelArt: true,\n },\n scene: options.scenes,\n };\n}\n","export enum AssetType {\n Image,\n SpriteSheet,\n MultiAtlas,\n}\n\nexport const GameObjectClasses = {\n Sprite: Phaser.GameObjects.Sprite,\n Rectangle: Phaser.GameObjects.Rectangle,\n Line: Phaser.GameObjects.Line,\n Text: Phaser.GameObjects.Text,\n};\n","import { map, Observable, Subject } from \"rxjs\";\nimport { Area, ChunkCoord } from \"./types\";\nimport { getChunksInArea } from \"./utils\";\nimport { CoordMap, subtract } from \"@latticexyz/utils\";\n\nexport function createChunks(worldView$: Observable, chunkSize: number, padding = 100) {\n const visibleChunks = { current: new CoordMap() };\n\n const addedChunks$ = new Subject();\n const removedChunks$ = new Subject();\n\n const visibleChunkStream = worldView$.pipe(\n map(({ x, y, width, height }) =>\n // Calculate current chunks from the world view\n getChunksInArea(\n {\n x: x - padding,\n y: y - padding,\n width: width + 2 * padding,\n height: height + 2 * padding,\n },\n chunkSize\n )\n )\n );\n\n visibleChunkStream.subscribe((newVisibleChunks) => {\n const added = subtract(newVisibleChunks, visibleChunks.current); // Chunks that are visible not but not before\n for (const coord of added.coords()) addedChunks$.next(coord);\n\n const removed = subtract(visibleChunks.current, newVisibleChunks); // Chunks that were visible before but not now\n for (const coord of removed.coords()) removedChunks$.next(coord);\n\n visibleChunks.current = newVisibleChunks;\n });\n\n return {\n addedChunks$: addedChunks$.asObservable(),\n removedChunks$: removedChunks$.asObservable(),\n chunkSize,\n visibleChunks,\n };\n}\n","import { Gesture } from \"@use-gesture/vanilla\";\nimport { BehaviorSubject, filter, map, sampleTime, scan, Subject, throttleTime } from \"rxjs\";\nimport { tileCoordToPixelCoord } from \"./utils\";\nimport { Camera, CameraConfig, Coord, GestureState, ObjectPool } from \"./types\";\n\nexport function createCamera(phaserCamera: Phaser.Cameras.Scene2D.Camera, options: CameraConfig): Camera {\n // Stop default gesture events to not collide with use-gesture\n // https://github.com/pmndrs/use-gesture/blob/404e2b2ac145a45aff179c1faf5097b97414731c/documentation/pages/docs/gestures.mdx#about-the-pinch-gesture\n document.addEventListener(\"gesturestart\", (e) => e.preventDefault());\n document.addEventListener(\"gesturechange\", (e) => e.preventDefault());\n\n const worldView$ = new BehaviorSubject(phaserCamera.worldView);\n const zoom$ = new BehaviorSubject(phaserCamera.zoom);\n const wheelStream$ = new Subject>();\n const pinchStream$ = new Subject>();\n\n const gesture = new Gesture(\n phaserCamera.scene.game.canvas,\n {\n onPinch: (state) => pinchStream$.next(state),\n onWheel: (state) => wheelStream$.next(state),\n },\n {}\n );\n\n // function getNearestLevel(currentZoom: number): number {\n // return Math.pow(2, Math.floor(Math.log(currentZoom * 2) / Math.log(2))) / 2;\n // }\n\n const onResize = () => {\n requestAnimationFrame(() => worldView$.next(phaserCamera.worldView));\n };\n phaserCamera.scene.scale.addListener(\"resize\", onResize);\n\n function setZoom(zoom: number) {\n phaserCamera.setZoom(zoom);\n worldView$.next(phaserCamera.worldView);\n zoom$.next(zoom);\n }\n\n const pinchSub = pinchStream$\n .pipe(\n throttleTime(10),\n map((state) => {\n // Because this event stream is throttled, we're dropping events which contain delta data, so we need to calculate the delta ourselves.\n const zoom = zoom$.getValue();\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const delta = state.offset[0] - zoom;\n const scaledDelta = delta * options.pinchSpeed;\n return zoom + scaledDelta;\n }), // Compute pinch speed\n map((zoom) => Math.min(Math.max(zoom, options.minZoom), options.maxZoom)), // Limit zoom values\n scan((acc, curr) => [acc[1], curr], [1, 1]) // keep track of the last value to offset the map position (not implemented yet)\n )\n .subscribe(([, zoom]) => {\n // Set the gesture zoom state to the current zoom value to avoid zooming beyond the max values\n if (gesture._ctrl.state.pinch) gesture._ctrl.state.pinch.offset[0] = zoom;\n setZoom(zoom);\n });\n\n const wheelSub = wheelStream$\n .pipe(\n filter((state) => !state.pinching),\n sampleTime(10),\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n map((state) => state.delta.map((x) => x * options.wheelSpeed)), // Compute wheel speed\n map((movement) => movement.map((m: number) => m / phaserCamera.zoom)), // Adjust for current zoom value\n map((movement) => [phaserCamera.scrollX + movement[0], phaserCamera.scrollY + movement[1]]) // Compute new pinch\n )\n .subscribe(([x, y]) => {\n phaserCamera.setScroll(x, y);\n worldView$.next(phaserCamera.worldView);\n });\n\n function ignore(objectPool: ObjectPool, ignore: boolean) {\n objectPool.ignoreCamera(phaserCamera.id, ignore);\n }\n\n function centerOnCoord(tileCoord: Coord, tileWidth: number, tileHeight: number) {\n const pixelCoord = tileCoordToPixelCoord(tileCoord, tileWidth, tileHeight);\n centerOn(pixelCoord.x, pixelCoord.y);\n }\n\n function centerOn(x: number, y: number) {\n phaserCamera.centerOn(x, y);\n requestAnimationFrame(() => worldView$.next(phaserCamera.worldView));\n }\n\n function setScroll(x: number, y: number) {\n phaserCamera.setScroll(x, y);\n requestAnimationFrame(() => worldView$.next(phaserCamera.worldView));\n }\n\n return {\n phaserCamera,\n worldView$,\n zoom$,\n ignore,\n dispose: () => {\n pinchSub.unsubscribe();\n wheelSub.unsubscribe();\n gesture.destroy();\n phaserCamera.scene.scale.removeListener(\"resize\", onResize);\n },\n centerOnCoord,\n centerOn,\n setScroll,\n setZoom,\n };\n}\n","import { computed, observe, reaction } from \"mobx\";\nimport { from, map, mergeMap, pipe } from \"rxjs\";\nimport { filterNullish } from \"@latticexyz/utils\";\nimport { Camera, ChunkCoord, Chunks, Coord, EmbodiedEntity, ObjectPool } from \"./types\";\nimport { pixelToChunkCoord, coordEq } from \"./utils\";\nimport { CoordMap } from \"@latticexyz/utils\";\n\nfunction createRegistry() {\n const coordToIds = new CoordMap>();\n const idToCoord = new Map();\n\n function get(coord: Coord): Set {\n let set = coordToIds.get(coord);\n if (!set) {\n set = new Set();\n coordToIds.set(coord, set);\n }\n return set;\n }\n\n function set(id: string, coord: Coord) {\n // Remove from prev set\n const prevCoord = idToCoord.get(id);\n const idsAtPrevCoord = prevCoord && get(prevCoord);\n idsAtPrevCoord?.delete(id);\n\n // Add to new set\n const idsAtNewCoord = get(coord);\n idsAtNewCoord.add(id);\n\n // Set new idToCoord mapping\n idToCoord.set(id, coord);\n }\n\n function remove(id: string) {\n const prevCoord = idToCoord.get(id);\n const idsAtCoord = prevCoord && get(prevCoord);\n idsAtCoord?.delete(id);\n idToCoord.delete(id);\n }\n\n return { set, remove, get };\n}\n\nexport function createCulling(objectPool: ObjectPool, camera: Camera, chunks: Chunks) {\n const chunkRegistry = createRegistry();\n const disposer = new Map void>();\n\n const chunkToEntity = pipe(\n map((chunk: ChunkCoord) => from(chunkRegistry.get(chunk))), // Map to streams of entityIds\n mergeMap((entities) => entities), // Flatten the stream of entities\n map((entityId) => objectPool.get(entityId, \"Existing\")), // Map entityId to embodiedEntity\n filterNullish()\n );\n\n // Spawn entities when their chunk appears in the viewport\n const addedChunkSub = chunks.addedChunks$.pipe(chunkToEntity).subscribe((entity) => entity.spawn());\n\n // Despawn entites when their chunk disappears from the viewport\n const removedChunkSub = chunks.removedChunks$.pipe(chunkToEntity).subscribe((entity) => entity.despawn());\n\n // Keep track of entity's chunk\n function trackEntity(entity: EmbodiedEntity) {\n if (disposer.get(entity.id)) console.error(\"Entity is being tracked multiple times\", entity);\n const chunk = computed(() => pixelToChunkCoord(entity.position, chunks.chunkSize), { equals: coordEq });\n const dispose = reaction(\n () => chunk.get(),\n (newChunk) => {\n // Register the new chunk position\n chunkRegistry.set(entity.id, newChunk);\n\n // Check whether entity is in the viewport if it switched chunks\n const visible = chunks.visibleChunks.current.get(newChunk);\n if (visible) {\n entity.spawn();\n } else {\n entity.despawn();\n }\n },\n { fireImmediately: true }\n );\n disposer.set(entity.id, dispose);\n }\n\n // Setup tracking of entity chunks\n const disposeObjectPoolObserver = observe(objectPool.objects, (change) => {\n if (change.type === \"add\") {\n trackEntity(change.newValue as EmbodiedEntity);\n }\n if (change.type === \"delete\") {\n chunkRegistry.remove(change.oldValue.id);\n const dispose = disposer.get(change.oldValue.id);\n if (dispose) dispose();\n disposer.delete(change.oldValue.id);\n }\n });\n\n return {\n dispose: () => {\n for (const d of disposer.values()) d();\n disposeObjectPoolObserver();\n addedChunkSub.unsubscribe();\n removedChunkSub.unsubscribe();\n },\n };\n}\n","import { observable, runInAction } from \"mobx\";\nimport { isRectangle, isSprite } from \"./guards\";\nimport {\n EmbodiedEntity,\n GameObject,\n GameObjectComponent,\n GameObjectFunction,\n GameObjectTypes,\n PixelCoord,\n} from \"./types\";\nimport { removeAllTweens } from \"./utils\";\n\nexport function createEmbodiedEntity(\n id: string,\n group: Phaser.GameObjects.Group,\n type: Type,\n currentCameraFilter = 0\n): EmbodiedEntity {\n const position: PixelCoord = observable({ x: 0, y: 0 });\n const onOnce = new Map>();\n const onUpdate = new Map>();\n let activeGameObject: GameObject | undefined;\n const cameraFilter = { current: currentCameraFilter };\n\n /**\n * Syncronizes updates to game object positions to the EmbodiedEntity's position\n */\n function trackPositionUpdates(func: GameObjectFunction): GameObjectFunction {\n if (!modifiesPosition(func)) return func;\n\n return (gameObject) => {\n func(gameObject);\n runInAction(() => {\n position.x = gameObject.x;\n position.y = gameObject.y;\n });\n };\n }\n\n /**\n * Stores and executes the component.\n * Once and Update functions are stored.\n * Now and Once functions are executed if there is an active game object.\n * Now is executed first and awaited, before Once is executed.\n * @param component: GameObjectComponent definition, including id, and optional functions for now, once and update\n */\n async function setComponent({ id, now, once, update }: GameObjectComponent) {\n // Handle position update when setting the component\n const newPosition = once && modifiesPosition(once);\n if (newPosition) {\n runInAction(() => {\n position.x = newPosition.x ?? position.x;\n position.y = newPosition.y ?? position.y;\n });\n }\n\n // Store functions\n once && onOnce.set(id, trackPositionUpdates(once));\n update && onUpdate.set(id, trackPositionUpdates(update));\n\n // Execute functions\n if (activeGameObject && now) await trackPositionUpdates(now)(activeGameObject);\n if (activeGameObject && once) once(activeGameObject);\n }\n\n function hasComponent(id: string): boolean {\n return onOnce.has(id) || onUpdate.has(id);\n }\n\n function removeComponent(id: string, stop?: boolean) {\n onOnce.delete(id);\n onUpdate.delete(id);\n\n // Reset the entity and reapply all onOnce components\n if (activeGameObject) {\n reset(activeGameObject, stop);\n executeGameObjectFunctions(activeGameObject, onOnce.values());\n }\n }\n\n function reset(gameObject: GameObject, stop = true) {\n if (stop) {\n if (isSprite(gameObject, type)) gameObject.stop();\n removeAllTweens(gameObject);\n }\n gameObject.setDepth(10);\n gameObject.cameraFilter = cameraFilter.current;\n gameObject.resetPipeline(true, true);\n gameObject.setScale(1, 1);\n gameObject.setOrigin(0, 0);\n gameObject.setAlpha(1);\n gameObject.setScrollFactor(1);\n gameObject.clearMask();\n gameObject.setData(\"objectPoolId\", null);\n if (isSprite(gameObject, type)) {\n gameObject.clearTint();\n gameObject.setTexture(\"\");\n }\n if (isRectangle(gameObject, type)) {\n gameObject.width = 0;\n gameObject.height = 0;\n }\n }\n\n function setCameraFilter(filter: number) {\n cameraFilter.current = filter;\n if (activeGameObject) activeGameObject.cameraFilter = filter;\n }\n\n function spawn() {\n if (activeGameObject) return;\n const gameObject: GameObject = group.get();\n reset(gameObject);\n\n // Run all functions that are supposed to run once\n executeGameObjectFunctions(gameObject, onOnce.values());\n\n // Bind all functions that are supposed to run on update\n // gameObject.onUpdate = () => executeGameObjectFunctions(gameObject, onUpdate.values());\n\n gameObject.setActive(true);\n gameObject.setVisible(true);\n gameObject.setData(\"objectPoolId\", id);\n activeGameObject = gameObject;\n }\n\n function despawn() {\n if (activeGameObject) {\n group.killAndHide(activeGameObject);\n }\n activeGameObject = undefined;\n }\n\n return { setComponent, hasComponent, removeComponent, spawn, despawn, position, id, setCameraFilter, type };\n}\n\nfunction executeGameObjectFunctions(\n gameObject: GameObject,\n functions: Iterable>\n) {\n if (!gameObject) return;\n for (const func of functions) {\n func(gameObject);\n }\n}\n\nfunction modifiesPosition(\n func: GameObjectFunction\n): Partial | undefined {\n let newPosition: Partial | undefined = undefined;\n const gameObjectProxy = new Proxy(\n { x: undefined, y: undefined },\n {\n get: (_, prop) => {\n if (prop === \"setPosition\") return (x: number, y: number) => (newPosition = { x, y });\n if (prop === \"setX\") return (x: number) => (newPosition = { x });\n if (prop === \"setY\") return (y: number) => (newPosition = { y });\n return () => void 0;\n },\n set: (_, prop, value) => {\n if (prop === \"x\") newPosition = newPosition ? { ...newPosition, x: value } : { x: value };\n if (prop === \"y\") newPosition = newPosition ? { ...newPosition, y: value } : { y: value };\n return true;\n },\n }\n );\n func(gameObjectProxy as GameObject);\n return newPosition;\n}\n","import {\n Assets,\n CameraConfig,\n LayerConfig,\n MapConfig,\n MapsConfig,\n SceneConfig,\n TilesetConfig,\n Animation,\n GameObjectTypes,\n GameObject,\n Sprite,\n} from \"./types\";\n\n// Add type safety to config definitions\n\nexport function defineAssetsConfig(assets: A) {\n return assets;\n}\n\nexport function defineMapConfig, L extends LayerConfig>(\n config: MapConfig\n) {\n return config;\n}\n\nexport function defineSceneConfig<\n A extends Assets,\n S extends { [key: string]: Sprite },\n T extends TilesetConfig,\n M extends MapsConfig,\n Ans extends Animation[]\n>(config: SceneConfig) {\n return config;\n}\n\nexport function defineScaleConfig(config: Phaser.Types.Core.ScaleConfig) {\n return config;\n}\n\nexport function defineCameraConfig(config: CameraConfig) {\n return config;\n}\n\nexport function isSprite(\n gameObject: Phaser.GameObjects.GameObject,\n type: keyof GameObjectTypes\n): gameObject is GameObject<\"Sprite\"> {\n return type === \"Sprite\";\n}\n\nexport function isRectangle(\n gameObject: Phaser.GameObjects.GameObject,\n type: keyof GameObjectTypes\n): gameObject is GameObject<\"Rectangle\"> {\n return type === \"Rectangle\";\n}\n","import { EmbodiedEntity, GameObjectTypes } from \"./types\";\nimport { createEmbodiedEntity } from \"./createEmbodiedEntity\";\nimport { observable } from \"mobx\";\nimport { mapObject } from \"@latticexyz/utils\";\nimport { GameObjectClasses } from \"./constants\";\n\ntype ObjectPoolReturnType = Type extends keyof GameObjectTypes\n ? EmbodiedEntity\n : EmbodiedEntity | undefined;\n\nfunction isGameObjectType(t: string): t is keyof GameObjectTypes {\n return Object.keys(GameObjectClasses).includes(t);\n}\n\nexport function createObjectPool(scene: Phaser.Scene) {\n const groups = mapObject(GameObjectClasses, (classType) => scene.add.group({ classType })) as {\n [key in keyof typeof GameObjectClasses]: Phaser.GameObjects.Group;\n };\n\n const objects = observable(new Map>());\n const cameraFilter = { current: 0 };\n\n function get(\n entity: number | string,\n type: Type\n ): ObjectPoolReturnType {\n if (typeof entity === \"number\") entity = String(entity);\n let embodiedEntity = objects.get(entity);\n if (!isGameObjectType(type)) {\n if (!embodiedEntity) return undefined as ObjectPoolReturnType;\n return embodiedEntity as ObjectPoolReturnType;\n }\n\n // If the entity doesn't exist yet, we create a new one and track its chunk\n if (!embodiedEntity) {\n embodiedEntity = createEmbodiedEntity(entity, groups[type], type, cameraFilter.current);\n }\n\n if (!objects.has(entity)) {\n objects.set(entity, embodiedEntity);\n }\n\n // Don't spawn here, let culling take care of spawning\n // embodiedEntity.spawn();\n\n return embodiedEntity as ObjectPoolReturnType;\n }\n\n function remove(entity: number | string) {\n if (typeof entity === \"number\") entity = String(entity);\n const object = objects.get(entity);\n if (object) object.despawn();\n objects.delete(entity);\n }\n\n function ignoreCamera(cameraId: number, ignore: boolean) {\n if (ignore) {\n cameraFilter.current |= cameraId;\n } else {\n cameraFilter.current &= ~cameraId;\n }\n\n for (const embodiedEntity of objects.values()) {\n embodiedEntity.setCameraFilter(cameraFilter.current);\n }\n }\n\n return { get, remove, objects, groups, ignoreCamera };\n}\n","import { ChunkedTilemap } from \"./types\";\nimport { ChunkCoord, Chunks, WorldCoord } from \"../types\";\nimport { mod, chunkToPixelCoord, tileCoordToChunkCoord, chunkCoordToTileCoord } from \"../utils\";\nimport { CoordMap } from \"@latticexyz/utils\";\nimport { MultiHueTintPipeline } from \"../pipelines\";\nimport { pickRandom } from \"@latticexyz/utils\";\n\nexport type ChunkedTilemapConfig = {\n scene: Phaser.Scene;\n tilesets: { [key: string]: Phaser.Tilemaps.Tileset };\n layerConfig: {\n layers: { [id in LayerKeys]: { tilesets: string[]; hasHueTintShader?: boolean } };\n defaultLayer: LayerKeys;\n };\n chunks: Chunks;\n backgroundTile: [number, ...number[]];\n tiles: { [layer in LayerKeys]: CoordMap };\n tileWidth: number;\n tileHeight: number;\n};\n\nexport function createChunkedTilemap(\n params: ChunkedTilemapConfig\n): ChunkedTilemap {\n const { scene, tilesets, layerConfig, chunks, backgroundTile, tiles, tileWidth, tileHeight } = params;\n const relevantTilesets = Object.keys(layerConfig.layers)\n .map((key) => layerConfig.layers[key as LayerKeys].tilesets)\n .flat();\n\n // Chunk pixel size must be a multiple of tile witdth and height.\n if (mod(chunks.chunkSize, tileWidth) !== 0 || mod(chunks.chunkSize, tileHeight) !== 0) {\n throw new Error(\"Chunks pixel size must be a multiple of tile width and height to be used with chunked tilemap\");\n }\n\n /*****************************************************\n Setup \n *****************************************************/\n\n const maps = new CoordMap();\n const chunkTileSize = { x: chunks.chunkSize / tileWidth, y: chunks.chunkSize / tileHeight };\n const disposer = new Set<() => void>();\n const visible = { current: true };\n\n // Render all current chunks\n for (const chunk of chunks.visibleChunks.current.coords()) {\n renderChunk(chunk);\n }\n // Render maps when they're in the viewport\n const addedChunkSub = chunks.addedChunks$.subscribe((chunk) => {\n renderChunk(chunk);\n });\n\n // Remove maps that are not in the viewport\n const removedChunkSub = chunks.removedChunks$.subscribe((chunk) => {\n destroyChunk(chunk);\n });\n\n disposer.add(() => addedChunkSub?.unsubscribe());\n disposer.add(() => removedChunkSub?.unsubscribe);\n\n /*****************************************************\n Functions \n *****************************************************/\n\n function createLayers(\n map: Phaser.Tilemaps.Tilemap,\n scene: Phaser.Scene,\n x: number,\n y: number,\n width: number,\n height: number\n ): {\n layers: Phaser.Tilemaps.TilemapLayer[];\n defaultLayer: Phaser.Tilemaps.TilemapLayer;\n } {\n const layers: { [key: string]: Phaser.Tilemaps.TilemapLayer } = {};\n\n for (const key of Object.keys(layerConfig.layers)) {\n const layer = layerConfig.layers[key as LayerKeys];\n const tilemapLayer = map.createBlankLayer(\n key,\n layer.tilesets.map((id) => tilesets[id]),\n x,\n y,\n width,\n height\n );\n if (!tilemapLayer) {\n console.error(`Adding tilemap layer ${key} failed.`);\n continue;\n }\n layers[key] = tilemapLayer;\n const renderer = scene.game.renderer as Phaser.Renderer.WebGL.WebGLRenderer;\n if (layer.hasHueTintShader && renderer?.pipelines) {\n layers[key].pipeline = renderer.pipelines.get(MultiHueTintPipeline.KEY);\n }\n }\n\n return { layers: Object.values(layers), defaultLayer: layers[layerConfig.defaultLayer] };\n }\n\n function createMap(chunkCoord: WorldCoord): Phaser.Tilemaps.Tilemap {\n const data: Phaser.Tilemaps.MapData = new Phaser.Tilemaps.MapData({\n tileHeight,\n tileWidth,\n width: chunkTileSize.x,\n height: chunkTileSize.y,\n tilesets: Object.entries(tilesets)\n .filter(([key]) => relevantTilesets.includes(key))\n .map(([, tileset]) => tileset),\n });\n\n const map = new Phaser.Tilemaps.Tilemap(scene, data);\n const topLeft = chunkToPixelCoord(chunkCoord, chunks.chunkSize);\n const { defaultLayer } = createLayers(map, scene, topLeft.x, topLeft.y, chunkTileSize.x, chunkTileSize.y);\n map.setLayer(defaultLayer);\n maps.set(chunkCoord, map);\n return map;\n }\n\n function getMapAtChunkCoord(chunkCoord: WorldCoord): Phaser.Tilemaps.Tilemap {\n return maps.get(chunkCoord) || createMap(chunkCoord);\n }\n\n function getMapAtTileCoord(tileCoord: WorldCoord): Phaser.Tilemaps.Tilemap {\n const chunkCoord = tileCoordToChunkCoord(tileCoord, tileWidth, tileHeight, chunks.chunkSize);\n return getMapAtChunkCoord(chunkCoord);\n }\n\n function destroyChunk(chunkCoord: WorldCoord, force?: boolean) {\n if ((!visible.current && !force) || !maps.has(chunkCoord)) return;\n const map = getMapAtChunkCoord(chunkCoord);\n map.destroy();\n maps.delete(chunkCoord);\n }\n\n function putTileAt(coord: WorldCoord, tile: number, layer?: string, tint?: number) {\n if (!visible.current) return;\n const map = getMapAtTileCoord(coord);\n const putTile = map.putTileAt(tile, mod(coord.x, chunkTileSize.x), mod(coord.y, chunkTileSize.y), undefined, layer);\n if (putTile == null) {\n throw new Error(\"putTileAt failed\");\n }\n\n putTile.width = map.tileWidth;\n putTile.height = map.tileHeight;\n\n if (tint) {\n putTile.tint = tint;\n }\n }\n\n function renderChunk(chunkCoord: ChunkCoord) {\n if (!visible.current) return;\n const map = getMapAtChunkCoord(chunkCoord);\n const topLeftCoord = chunkCoordToTileCoord(chunkCoord, tileWidth, tileHeight, chunks.chunkSize);\n\n for (const layer of Object.keys(layerConfig.layers))\n map.forEachTile(\n (tile) => {\n const coord = { x: topLeftCoord.x + tile.x, y: topLeftCoord.y + tile.y };\n const defaultIndex = layer === layerConfig.defaultLayer ? pickRandom(backgroundTile) : -1;\n const index = tiles[layer as LayerKeys].get(coord) || defaultIndex;\n tile.index = index;\n },\n undefined,\n undefined,\n undefined,\n undefined,\n undefined,\n undefined,\n layer\n );\n }\n\n function dispose() {\n for (const map of maps.values()) {\n map.destroy();\n }\n maps.clear();\n for (const d of disposer) {\n d();\n }\n }\n\n function size() {\n return maps.size;\n }\n\n function setVisible(v: boolean) {\n if (v === visible.current) return;\n visible.current = v;\n for (const chunk of chunks.visibleChunks.current.coords()) {\n visible.current ? renderChunk(chunk) : destroyChunk(chunk, true);\n }\n }\n\n return { size, putTileAt, dispose, setVisible, visible, tileWidth, tileHeight };\n}\n","import { VirtualTilemap } from \"./types\";\nimport { WorldCoord } from \"../types\";\nimport { tileCoordToChunkCoord } from \"../utils\";\nimport { CoordMap } from \"@latticexyz/utils\";\nimport { ChunkedTilemapConfig, createChunkedTilemap } from \"./createChunkedTilemap\";\n\nexport function createVirtualTilemap(\n config: Omit, \"tiles\">\n): VirtualTilemap {\n const {\n chunks,\n layerConfig: { layers, defaultLayer },\n tileWidth,\n tileHeight,\n } = config;\n\n const tiles: { [key in LayerKeys]: CoordMap } = {} as never;\n\n for (const layerKey of Object.keys(layers)) {\n tiles[layerKey as LayerKeys] = new CoordMap();\n }\n\n const chunkedTilemap = createChunkedTilemap({ ...config, tiles });\n\n function putTileAt(coord: WorldCoord, tile: TileKeys, layer?: LayerKeys, tint?: number) {\n // Update virtual tilemap\n tiles[layer || defaultLayer].set(coord, tile);\n\n // Immediately update the physical tile if the chunk is in view\n const chunk = tileCoordToChunkCoord(coord, tileWidth, tileHeight, chunks.chunkSize);\n if (chunkedTilemap.visible && chunks.visibleChunks.current.get(chunk)) {\n chunkedTilemap.putTileAt(coord, tile, layer, tint);\n }\n }\n\n return { ...chunkedTilemap, putTileAt, tiles };\n}\n","import { AnimatedTilemap } from \".\";\nimport { WorldCoord } from \"../types\";\nimport { mod } from \"../utils\";\nimport { CoordMap } from \"@latticexyz/utils\";\nimport { ChunkedTilemapConfig } from \"./createChunkedTilemap\";\nimport { createVirtualTilemap } from \"./createVirtualTilemap\";\nimport { TileAnimation } from \"./types\";\n\nexport function createAnimatedTilemap(\n config: Omit, \"tiles\"> & { animationInterval: number }\n): AnimatedTilemap {\n const {\n layerConfig: { layers, defaultLayer },\n animationInterval,\n scene,\n } = config;\n\n const defaultLayerKey = defaultLayer as LayerKeys;\n let lastStep = 0;\n const animations: { [key in AnimationKeys]?: { frames: TileAnimation; index: number } } = {};\n\n const animatedTiles: { [key in LayerKeys]: CoordMap } = {} as never;\n for (const layerKey of Object.keys(layers)) {\n animatedTiles[layerKey as LayerKeys] = new CoordMap();\n }\n\n const pausedAnimations: { [key in LayerKeys]: CoordMap } = {} as never;\n for (const layerKey of Object.keys(layers)) {\n pausedAnimations[layerKey as LayerKeys] = new CoordMap();\n }\n\n const virtualTilemap = createVirtualTilemap(config);\n\n function registerAnimation(animationKey: AnimationKeys, frames: TileAnimation) {\n animations[animationKey] = { frames, index: 0 };\n }\n\n function putAnimationAt(coord: WorldCoord, animationKey: AnimationKeys, layer: LayerKeys = defaultLayerKey) {\n animatedTiles[layer].set(coord, animationKey);\n }\n\n function removeAnimationAt(coord: WorldCoord, layer: LayerKeys = defaultLayerKey) {\n const animationKey = animatedTiles[layer].get(coord);\n const animation = animationKey && animations[animationKey];\n animatedTiles[layer].delete(coord);\n if (animation) virtualTilemap.putTileAt(coord, animation.frames[0], layer);\n }\n\n function pauseAnimationAt(coord: WorldCoord, layer: LayerKeys = defaultLayerKey) {\n const animationKey = animatedTiles[layer].get(coord);\n if (!animationKey) return;\n pausedAnimations[layer].set(coord, animationKey);\n removeAnimationAt(coord, layer);\n }\n\n function resumeAnimationAt(coord: WorldCoord, layer: LayerKeys = defaultLayerKey) {\n const animationKey = pausedAnimations[layer].get(coord);\n if (!animationKey) return;\n pausedAnimations[layer].delete(coord);\n putAnimationAt(coord, animationKey, layer);\n }\n\n function animationStep() {\n // Increase animation index for every animation\n for (const animationKey of Object.keys(animations) as AnimationKeys[]) {\n const animation = animations[animationKey];\n if (animation) animation.index = mod(animation.index + 1, animation.frames.length);\n }\n\n // Update every animated tile\n for (const layerKey of Object.keys(animatedTiles) as LayerKeys[]) {\n const layer = animatedTiles[layerKey];\n for (const coord of layer.coords()) {\n const animationKey = layer.get(coord);\n const animation = animationKey && animations[animationKey];\n if (!animation) continue;\n const currentFrame = animation.frames[animation.index];\n virtualTilemap.putTileAt(coord, currentFrame, layerKey);\n }\n }\n }\n\n function update(time: number) {\n if (time < lastStep + animationInterval) return;\n lastStep = time;\n animationStep();\n }\n\n function dispose() {\n scene.events.removeListener(\"update\", update);\n virtualTilemap.dispose();\n }\n\n scene.events.addListener(\"update\", update);\n\n return {\n ...virtualTilemap,\n putAnimationAt,\n removeAnimationAt,\n pauseAnimationAt,\n resumeAnimationAt,\n registerAnimation,\n dispose,\n } as unknown as AnimatedTilemap;\n}\n","import {\n bufferCount,\n distinctUntilChanged,\n filter,\n fromEvent,\n map,\n merge,\n Observable,\n pairwise,\n scan,\n Subject,\n throttleTime,\n} from \"rxjs\";\nimport { observable, reaction, runInAction } from \"mobx\";\nimport { Area } from \"./types\";\nimport { filterNullish } from \"@latticexyz/utils\";\n\nexport type Key = keyof typeof Phaser.Input.Keyboard.KeyCodes | \"POINTER_LEFT\" | \"POINTER_RIGHT\";\n\nexport function createInput(inputPlugin: Phaser.Input.InputPlugin) {\n const disposers = new Set<() => void>();\n const enabled = { current: true };\n\n inputPlugin.mouse?.disableContextMenu();\n\n function disableInput() {\n enabled.current = false;\n }\n\n function enableInput() {\n enabled.current = true;\n }\n\n function setCursor(cursor: string) {\n inputPlugin.setDefaultCursor(cursor);\n }\n\n const keyboard$ = new Subject();\n\n const pointermove$ = fromEvent(document, \"mousemove\").pipe(\n filter(() => enabled.current),\n map(() => {\n return { pointer: inputPlugin.manager?.activePointer };\n }),\n filterNullish()\n );\n\n const pointerdown$: Observable<{ pointer: Phaser.Input.Pointer; event: MouseEvent }> = fromEvent(\n document,\n \"mousedown\"\n ).pipe(\n filter(() => enabled.current),\n map((event) => ({ pointer: inputPlugin.manager?.activePointer, event: event as MouseEvent })),\n filterNullish()\n );\n\n const pointerup$: Observable<{ pointer: Phaser.Input.Pointer; event: MouseEvent }> = fromEvent(\n document,\n \"mouseup\"\n ).pipe(\n filter(() => enabled.current),\n map((event) => ({ pointer: inputPlugin.manager?.activePointer, event: event as MouseEvent })),\n filterNullish()\n );\n\n // Click stream\n const click$ = merge(pointerdown$, pointerup$).pipe(\n filter(() => enabled.current),\n map<{ pointer: Phaser.Input.Pointer; event: MouseEvent }, [boolean, number]>(({ event }) => [\n event.type === \"mousedown\" && event.button === 0,\n Date.now(),\n ]), // Map events to whether the left button is down and the current timestamp\n bufferCount(2, 1), // Store the last two timestamps\n filter(([prev, now]) => prev[0] && !now[0] && now[1] - prev[1] < 250), // Only care if button was pressed before and is not anymore and it happened within 500ms\n map(() => inputPlugin.manager?.activePointer), // Return the current pointer\n filterNullish()\n );\n\n // Double click stream\n const doubleClick$ = pointerdown$.pipe(\n filter(() => enabled.current),\n map(() => Date.now()), // Get current timestamp\n bufferCount(2, 1), // Store the last two timestamps\n filter(([prev, now]) => now - prev < 500), // Filter clicks with more than 500ms distance\n throttleTime(500), // A third click within 500ms is not counted as another double click\n map(() => inputPlugin.manager?.activePointer), // Return the current pointer\n filterNullish()\n );\n\n // Right click stream\n const rightClick$ = merge(pointerdown$, pointerup$).pipe(\n filter(({ pointer }) => enabled.current && pointer.rightButtonDown()),\n map(() => inputPlugin.manager?.activePointer), // Return the current pointer\n filterNullish()\n );\n\n // Drag stream\n const drag$ = merge(\n pointerdown$.pipe(map(() => undefined)), // Reset the drag on left click\n merge(pointerup$, pointermove$).pipe(\n pairwise(), // Take the last two move or pointerup events\n scan<[{ pointer: Phaser.Input.Pointer }, { pointer: Phaser.Input.Pointer }], Area | undefined>(\n (acc, [{ pointer: prev }, { pointer: curr }]) =>\n curr.leftButtonDown() // If the left butten is pressed...\n ? prev.leftButtonDown() && acc // If the previous event wasn't mouseup and if the drag already started...\n ? { ...acc, width: curr.worldX - acc.x, height: curr.worldY - acc.y } // Update the width/height\n : { x: curr.worldX, y: curr.worldY, width: 0, height: 0 } // Else start the drag\n : undefined,\n undefined\n ),\n filterNullish(),\n filter((area) => Math.abs(area.width) > 10 && Math.abs(area.height) > 10) // Prevent clicking to be mistaken as a drag\n )\n ).pipe(\n filter(() => enabled.current),\n distinctUntilChanged() // Prevent same value to be emitted in a row\n );\n\n const pressedKeys = observable(new Set());\n const phaserKeyboard = inputPlugin.keyboard;\n const codeToKey = new Map();\n\n // Listen to all keys\n for (const key of Object.keys(Phaser.Input.Keyboard.KeyCodes)) addKey(key);\n\n // Subscriptions\n const keySub = keyboard$.pipe(filter(() => enabled.current)).subscribe((key) => {\n const keyName = codeToKey.get(key.keyCode);\n if (!keyName) return;\n runInAction(() => {\n if (key.isDown) pressedKeys.add(keyName);\n if (key.isUp) pressedKeys.delete(keyName);\n });\n });\n disposers.add(() => keySub?.unsubscribe());\n\n const pointerSub = merge(pointerdown$, pointerup$).subscribe(({ pointer }) => {\n runInAction(() => {\n if (pointer.leftButtonDown()) pressedKeys.add(\"POINTER_LEFT\");\n else pressedKeys.delete(\"POINTER_LEFT\");\n\n if (pointer.rightButtonDown()) pressedKeys.add(\"POINTER_RIGHT\");\n else pressedKeys.delete(\"POINTER_RIGHT\");\n });\n //\n });\n disposers.add(() => pointerSub?.unsubscribe());\n\n // Adds a key to include in the state\n function addKey(key: string) {\n if (!phaserKeyboard) {\n console.warn(`Adding key ${key} failed. No phaser keyboard detected.`);\n return;\n }\n\n // Add the key to the phaser keyboard input plugin\n const keyObj = phaserKeyboard.addKey(key, false);\n // Store the cleartext key map\n codeToKey.set(keyObj.keyCode, key as Key);\n\n keyObj.removeAllListeners();\n keyObj.emitOnRepeat = true;\n keyObj.on(\"down\", (keyEvent: Phaser.Input.Keyboard.Key) => keyboard$.next(keyEvent));\n keyObj.on(\"up\", (keyEvent: Phaser.Input.Keyboard.Key) => keyboard$.next(keyEvent));\n }\n\n function onKeyPress(keySelector: (pressedKeys: Set) => boolean, callback: () => void) {\n const disposer = reaction(\n () => keySelector(pressedKeys),\n (passes) => {\n if (passes) callback();\n },\n { fireImmediately: true }\n );\n disposers.add(disposer);\n }\n\n function dispose() {\n for (const disposer of disposers) {\n disposer();\n }\n }\n\n return {\n keyboard$: keyboard$.asObservable(),\n pointermove$,\n pointerdown$,\n pointerup$,\n click$,\n doubleClick$,\n rightClick$,\n drag$,\n pressedKeys,\n dispose,\n disableInput,\n enableInput,\n setCursor,\n enabled,\n onKeyPress,\n };\n}\n","import { defineScene } from \"./defineScene\";\nimport { definePhaserConfig } from \"./definePhaserConfig\";\nimport { load } from \"./utils\";\nimport { AssetType } from \"./constants\";\nimport { Scenes, Maps, ScenesConfig, Tilesets, PhaserEngineConfig } from \"./types\";\nimport { createChunks } from \"./createChunks\";\nimport { createCamera } from \"./createCamera\";\nimport { createCulling } from \"./createCulling\";\nimport { createObjectPool } from \"./createObjectPool\";\nimport { createAnimatedTilemap } from \"./tilemap\";\nimport { generateFrames } from \"./utils\";\nimport { createInput } from \"./createInput\";\nimport { deferred } from \"@latticexyz/utils\";\n\nexport async function createPhaserEngine(options: PhaserEngineConfig) {\n const { scale, sceneConfig, cameraConfig, cullingChunkSize } = options;\n\n // Set up Phaser scenes\n const sceneConstructors = Object.keys(sceneConfig).map((key) => {\n const { preload, create, update } = sceneConfig[key];\n return defineScene({ key, preload, create, update });\n });\n\n const phaserConfig = definePhaserConfig({ scenes: sceneConstructors, scale });\n const game = new Phaser.Game(phaserConfig);\n\n // Wait for phaser to boot\n const [resolve, , promise] = deferred();\n\n game.events.on(\"ready\", resolve);\n\n // skip texture loading in headless mode for unit testing\n if (phaserConfig.type === Phaser.HEADLESS) {\n game.textures.emit(\"ready\");\n }\n\n await promise;\n\n // Bind the game's size to the window size\n function resize() {\n const width = window.innerWidth / game.scale.zoom;\n const height = window.innerHeight / game.scale.zoom;\n game.scale.resize(width, height);\n }\n resize();\n window.addEventListener(\"resize\", resize);\n\n // Create scenes object\n const partialScenes: Partial> = {};\n\n for (const phaserScene of game.scene.getScenes(false)) {\n const key = phaserScene.scene.key as keyof S;\n const config = sceneConfig[key];\n\n // Load assets\n for (const [assetKey, asset] of Object.entries(sceneConfig[key].assets)) {\n await load(phaserScene, (loader) => {\n if (asset.type === AssetType.Image) {\n loader.image(assetKey, asset.path);\n } else if (asset.type === AssetType.SpriteSheet) {\n loader.spritesheet(assetKey, asset.path, asset.options);\n } else if (asset.type === AssetType.MultiAtlas) {\n loader.multiatlas(assetKey, asset.path, asset.options.imagePath);\n }\n });\n }\n\n // Setup object pool\n const objectPool = createObjectPool(phaserScene);\n\n // Setup camera\n const camera = createCamera(phaserScene.cameras.main, cameraConfig);\n\n // Setup chunks for viewport culling\n const cullingChunks = createChunks(camera.worldView$, cullingChunkSize);\n\n // Setup viewport culling\n const culling = createCulling(objectPool, camera, cullingChunks);\n\n // Setup sprite animations\n for (const anim of config.animations) {\n phaserScene.anims.create({\n key: anim.key,\n frames: generateFrames(phaserScene.anims, anim),\n frameRate: anim.frameRate,\n repeat: anim.repeat,\n });\n }\n\n // Setup tilesets\n const emptyMap = new Phaser.Tilemaps.Tilemap(phaserScene, new Phaser.Tilemaps.MapData());\n const partialTilesets: Tilesets = {};\n for (const [tilesetKey, { assetKey, tileWidth, tileHeight }] of Object.entries(sceneConfig[key][\"tilesets\"])) {\n const tileset = emptyMap.addTilesetImage(tilesetKey, assetKey, tileWidth, tileHeight);\n if (!tileset) {\n console.error(`Adding tileset ${tilesetKey} failed.`);\n continue;\n }\n partialTilesets[tilesetKey] = tileset;\n }\n const tilesets = partialTilesets as Tilesets;\n\n // Setup maps\n const partialMaps: Partial> = {};\n for (const mapKey of Object.keys(config.maps)) {\n const { layers, backgroundTile, tileWidth, tileHeight, animationInterval, tileAnimations, chunkSize } =\n config.maps[mapKey];\n\n // Setup chunks\n const chunks = createChunks(camera.worldView$, chunkSize);\n\n const map = createAnimatedTilemap({\n scene: phaserScene,\n tilesets,\n layerConfig: layers,\n chunks,\n tileWidth,\n tileHeight,\n backgroundTile,\n animationInterval,\n });\n\n // Register tilemap animations\n if (tileAnimations) {\n for (const [key, frames] of Object.entries(tileAnimations)) {\n map.registerAnimation(key, frames);\n }\n }\n\n partialMaps[mapKey as keyof (typeof sceneConfig)[typeof key][\"maps\"]] = map;\n }\n const maps = partialMaps as Maps;\n\n const input = createInput(phaserScene.input);\n\n partialScenes[key] = { phaserScene, objectPool, camera, culling, maps, input, config: sceneConfig[key] };\n }\n const scenes = partialScenes as Scenes;\n\n return {\n game,\n scenes,\n dispose: () => {\n game.destroy(true);\n for (const key of Object.keys(scenes)) {\n const scene = scenes[key];\n scene.camera.dispose();\n scene.culling.dispose();\n scene.input.dispose();\n for (const map of Object.values(scene.maps)) {\n map.dispose();\n }\n }\n\n window.removeEventListener(\"resize\", resize);\n },\n };\n}\n","import { chunkToPixelCoord } from \"./utils\";\nimport { CoordMap } from \"@latticexyz/utils\";\nimport { Camera, Chunks, ObjectPool } from \"./types\";\nimport { AnimatedTilemap } from \"./tilemap\";\n\nfunction getRandomColor() {\n const red = Math.random() * 0xff;\n const green = Math.random() * 0xff;\n const blue = Math.random() * 0xff;\n return red * 0xffff + green * 0xff + blue;\n}\n\nexport function createDebugger(\n camera: Camera,\n chunks: Chunks,\n scene: Phaser.Scene,\n objectPool: ObjectPool,\n map: AnimatedTilemap\n) {\n const options = {\n logViewport: false,\n visualizeChunks: true,\n visualizeViewport: false,\n logNumVisibleChunks: false,\n logObjectStats: false,\n logMaps: true,\n };\n\n const visualChunks = new CoordMap();\n const worldViewRect = scene.add.rectangle(0, 0, 1, 1, 0xff0000, 0.2);\n worldViewRect.setInteractive();\n worldViewRect.on(\"pointerup\", () => {\n console.log(\"clicked\", worldViewRect);\n });\n\n camera.worldView$.subscribe((worldView) => {\n if (options.logViewport) {\n console.log(worldView);\n }\n\n if (options.visualizeViewport) {\n worldViewRect.setScale(worldView.width, worldView.height);\n worldViewRect.setPosition(worldView.centerX, worldView.centerY);\n }\n\n if (options.logObjectStats) {\n console.log(\n `Entities: ${objectPool.objects.size} / Pool size: ${Object.values(objectPool.groups).reduce(\n (acc, curr) => acc + curr.getChildren().length,\n 0\n )} / Pool active: ${Object.values(objectPool.groups).reduce((acc, curr) => acc + curr.countActive(), 0)}`\n );\n }\n\n if (options.logMaps) {\n console.log(\"Num maps\", map.size());\n }\n });\n\n chunks.addedChunks$.subscribe((chunk) => {\n if (options.visualizeChunks) {\n const pixelCoord = chunkToPixelCoord(chunk, chunks.chunkSize);\n const visualChunk = scene.add.rectangle(\n pixelCoord.x + chunks.chunkSize / 2,\n pixelCoord.y + chunks.chunkSize / 2,\n chunks.chunkSize,\n chunks.chunkSize,\n getRandomColor(),\n 0.5\n );\n visualChunk.setInteractive();\n visualChunk.on(\"pointerup\", () => {\n console.log(\"clicked\", visualChunk);\n });\n visualChunks.set(chunk, visualChunk);\n }\n\n if (options.logNumVisibleChunks) {\n console.log(\"Number of visible chunks: \", visualChunks.size);\n }\n });\n\n chunks.removedChunks$.subscribe((chunk) => {\n if (options.visualizeChunks) {\n visualChunks.get(chunk)?.destroy();\n visualChunks.delete(chunk);\n }\n\n if (options.logNumVisibleChunks) {\n console.log(\"Number of visible chunks: \", visualChunks.size);\n }\n });\n}\n"],"mappings":"4KAAA,MAAO,SCAP,OAAS,YAAAA,OAAgB,oBAWzB,eAAsBC,GAAMC,EAA4BC,EAA4C,CAClG,GAAM,CAACC,EAAS,CAAEC,CAAO,EAAIL,GAAe,EACtC,CAAE,QAAAM,CAAQ,EAAIJ,EACpB,GAAI,GAACI,EAAQ,OAAS,CAACA,EAAQ,MAAM,QAGrC,OAAKH,GAAS,oBACZI,EAAgBD,CAAO,EAIzBA,EAAQ,MAAM,OAAO,IAAI,CACvB,GAAGJ,EACH,WAAY,CAACD,EAAOK,IAAY,CAC9BJ,EAAO,YAAcA,EAAO,WAAWD,EAAOK,CAAO,EACrDF,EAAQ,CACV,CACF,CAAC,EACMC,CACT,CAEO,SAASE,EAAgBC,EAA2C,CACzE,IAAMC,EAAeD,EAAW,MAAM,OACtC,QAAWP,KAASQ,EAAa,OAC3BR,EAAM,UAAUO,CAAU,GAC5BP,EAAM,KAAK,CAGjB,CCvCO,SAASS,EAAIC,EAAWC,EAAW,CACxC,OAASD,EAAIC,EAAKA,GAAKA,CACzB,CCAO,IAAMC,GAAqB,CAAE,EAAG,EAAG,EAAG,CAAE,EAExC,SAASC,GAAiCC,EAA4BC,EAAsB,CACjG,IAAMC,EAA2B,CAAC,EAElC,OAAAF,EAAa,QAASG,GAAgB,CACpC,IAAMC,EAAU,CAAE,EAAGD,EAAY,EAAIF,EAAc,EAAGE,EAAY,EAAIF,CAAa,EAC7EI,EAAW,CAAE,GAAIF,EAAY,EAAI,GAAKF,EAAe,EAAG,EAAGE,EAAY,EAAIF,CAAa,EACxFK,EAAa,CAAE,EAAGH,EAAY,EAAIF,EAAc,GAAIE,EAAY,EAAI,GAAKF,EAAe,CAAE,EAC1FM,EAAc,CAAE,GAAIJ,EAAY,EAAI,GAAKF,EAAe,EAAG,GAAIE,EAAY,EAAI,GAAKF,EAAe,CAAE,EAC3GC,EAAW,KAAKE,EAASC,EAAUC,EAAYC,CAAW,CAC5D,CAAC,EAEML,CACT,CAEO,SAASM,GAAaC,EAAuBC,EAAY,CAC9D,OACED,EAAU,GAAKC,EAAK,GACpBD,EAAU,EAAIC,EAAK,EAAIA,EAAK,OAC5BD,EAAU,GAAKC,EAAK,GACpBD,EAAU,EAAIC,EAAK,EAAIA,EAAK,MAEhC,CAEO,SAASC,EAAQC,EAAWC,EAAW,CAC5C,MAAI,CAACD,GAAK,CAACC,EAAU,GACjB,CAACD,GAAK,CAACC,EAAU,GACdD,EAAE,IAAMC,EAAE,GAAKD,EAAE,IAAMC,EAAE,CAClC,CAEO,SAASC,GAAUF,EAAUC,EAAU,CAC5C,MAAO,CACL,EAAGD,EAAE,EAAIC,EAAE,EACX,EAAGD,EAAE,EAAIC,EAAE,CACb,CACF,CAEO,SAASE,EAAkBC,EAAwBC,EAA+B,CACvF,MAAO,CAAE,EAAG,KAAK,MAAMD,EAAW,EAAIC,CAAS,EAAG,EAAG,KAAK,MAAMD,EAAW,EAAIC,CAAS,CAAE,CAC5F,CAEO,SAASC,EAAkBC,EAAwBF,EAA+B,CACvF,MAAO,CAAE,EAAGE,EAAW,EAAIF,EAAW,EAAGE,EAAW,EAAIF,CAAU,CACpE,CAEO,SAASG,GAAsBJ,EAAwBK,EAAmBC,EAAgC,CAC/G,MAAO,CACL,EAAG,KAAK,MAAMN,EAAW,EAAIK,CAAS,EACtC,EAAG,KAAK,MAAML,EAAW,EAAIM,CAAU,CACzC,CACF,CAEO,SAASC,EAAsBd,EAAuBY,EAAmBC,EAAgC,CAC9G,MAAO,CACL,EAAGb,EAAU,EAAIY,EACjB,EAAGZ,EAAU,EAAIa,CACnB,CACF,CAEO,SAASE,EACdf,EACAY,EACAC,EACAL,EACY,CACZ,IAAMD,EAAaO,EAAsBd,EAAWY,EAAWC,CAAU,EACzE,OAAOP,EAAkBC,EAAYC,CAAS,CAChD,CAEO,SAASQ,EACdN,EACAE,EACAC,EACAL,EACY,CACZ,IAAMD,EAAaE,EAAkBC,EAAYF,CAAS,EAC1D,OAAOG,GAAsBJ,EAAYK,EAAWC,CAAU,CAChE,CChFA,OAAS,YAAAI,OAAgB,oBAEzB,eAAsBC,GAAKC,EAAqBC,EAAwD,CACtG,IAAMC,EAASF,EAAM,KACrBC,EAASC,CAAM,EACfA,EAAO,MAAM,EACb,GAAM,CAACC,EAAS,CAAEC,CAAO,EAAIN,GAAe,EAC5C,OAAAI,EAAO,GAAG,WAAY,IAAM,CAC1BC,EAAQ,CACV,CAAC,EACMC,CACT,CCXA,OAAS,YAAAC,OAAgB,oBAIlB,SAASC,GAAgBC,EAAYC,EAAmB,CAC7D,IAAMC,EAAU,CAAE,EAAGF,EAAK,EAAG,EAAGA,EAAK,CAAE,EACjCG,EAAc,CAAE,EAAGH,EAAK,EAAIA,EAAK,MAAO,EAAGA,EAAK,EAAIA,EAAK,MAAO,EAEhEI,EAAeC,EAAkBH,EAASD,CAAS,EACnDK,EAAmBD,EAAkBF,EAAaF,CAAS,EAE3DM,EAAaD,EAAiB,EAAIF,EAAa,EAAI,EACnDI,EAAaF,EAAiB,EAAIF,EAAa,EAAI,EAEnDK,EAAe,IAAIC,GAEzB,QAASC,EAAI,EAAGA,EAAIJ,EAAYI,IAC9B,QAASC,EAAI,EAAGA,EAAIJ,EAAYI,IAC9BH,EAAa,IACX,CACE,EAAGL,EAAa,EAAIO,EACpB,EAAGP,EAAa,EAAIQ,CACtB,EACA,EACF,EAIJ,OAAOH,CACT,CC5BO,SAASI,GAAiBC,EAAoCC,EAA6B,CAChG,IAAMC,EAAM,CAAC,EACb,QAAWC,KAASH,EAClB,QAAWI,KAAUD,EAAM,YAAY,EACjCC,EAAO,QAAU,MAAOA,GAAU,MAAOA,GAAUH,EAAK,SAASG,EAAO,EAAGA,EAAO,CAAC,IACrF,QAAQ,IAAI,UAAWA,CAAM,EAC7BF,EAAI,KAAKE,CAAM,GAIrB,OAAOF,EAAI,OAAQG,GAAMA,IAAM,MAAS,CAC1C,CCVO,SAASC,GACdC,EACAC,EAC0C,CAC1C,OAAIA,EAAU,QAAUA,EAAU,OACzBD,EAAM,mBAAmBC,EAAU,SAAU,CAClD,MAAOA,EAAU,WACjB,IAAKA,EAAU,SACf,OAAQA,EAAU,OAClB,OAAQA,EAAU,MACpB,CAAC,EAEMD,EAAM,qBAAqBC,EAAU,SAAU,CAAE,MAAOA,EAAU,WAAY,IAAKA,EAAU,QAAS,CAAC,CAElH,CCfA,IAAMC,GAAiB,OAAO,SAAS,MAAM,UAAU,kBAAoB,OAC9DC,EAAN,cAA0CD,EAAe,CAGtD,WAAa,IAAI,OAAO,QAAQ,MAEhC,SAAW,EACX,cAAgB,IAAI,OAAO,QAAQ,MAE3C,YAAYE,EAAmB,CAC7B,MAAM,CACJ,KAAMA,EACN,aAAc,GACd,WAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAgDd,CAAC,CACH,CAEA,aAAaC,EAAgC,CAC3C,IAAMC,EAAWD,EAAI,aAAqB,QAEpCE,EAAWF,EAAI,aAAqB,QACpCG,EAAgBH,EAAI,aAAqB,aAE3CI,EAAYH,GAAoB,EAKpC,GAJI,OAAOG,GAAc,WACvBA,EAAY,OAAO,QAAQ,MAAM,aAAaA,CAAS,GAGrDF,EAAS,CACX,KAAK,SAAW,EAEhB,IAAIG,EAAgBF,GAAgB,EAChC,OAAOE,GAAkB,WAC3BA,EAAgB,OAAO,QAAQ,MAAM,aAAaF,CAAY,GAGhE,KAAK,cAAc,WAAWE,CAAa,OAE3C,KAAK,SAAW,EAGlB,KAAK,WAAW,WAAWD,CAAS,CACtC,CAEA,OAAOE,EAAkD,CACvD,KAAK,MAAM,eAAgB,KAAK,SAAS,MAAO,KAAK,SAAS,MAAM,EACpE,KAAK,MAAM,YAAa,KAAK,WAAW,MAAO,KAAK,WAAW,QAAS,KAAK,WAAW,MAAM,EAE9F,KAAK,MAAM,UAAW,KAAK,QAAQ,EACnC,KAAK,MAAM,eAAgB,KAAK,cAAc,MAAO,KAAK,cAAc,QAAS,KAAK,cAAc,MAAM,EAE1G,KAAK,WAAWA,CAAY,CAC9B,CACF,EAlGEC,EADWT,EACY,MAAM,qBCHxB,IAAMU,EAAN,cAAmC,OAAO,SAAS,MAAM,UAAU,aAAc,CAEtF,YAAYC,EAAmB,CAC7B,MAAM,CACJ,KAAMA,EACN,WAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SA+Dd,CAAC,CACH,CACF,EArEEC,EADWF,EACY,MAAM,wBCCxB,SAASG,GAAYC,EAKzB,CACD,GAAM,CAAE,QAAAC,EAAS,OAAAC,EAAQ,OAAAC,EAAQ,IAAAC,CAAI,EAAIJ,EACzC,OAAO,cAAwB,OAAO,KAAM,CAC1C,aAAc,CACZ,MAAM,CAAE,IAAAI,CAAI,CAAC,CACf,CAEA,SAAU,CACRH,GAAWA,EAAQ,IAAI,CACzB,CAEA,QAAS,CACPC,GAAUA,EAAO,IAAI,EACrB,IAAMG,EAAW,KAAK,SAClBA,GAAU,YACZA,EAAS,UAAU,IAAIC,EAA4B,IAAK,IAAIA,EAA4B,KAAK,IAAI,CAAC,EAClGD,EAAS,UAAU,IAAIE,EAAqB,IAAK,IAAIA,EAAqB,KAAK,IAAI,CAAC,EAExF,CAEA,QAAS,CACPJ,GAAUA,EAAO,IAAI,CACvB,CACF,CACF,CC7BO,SAASK,GAAmBC,EAGF,CAC/B,MAAO,CACL,KAAM,OAAO,MACb,MAAOA,EAAQ,MACf,SAAU,GACV,UAAW,GACX,OAAQ,CACN,YAAa,GACb,SAAU,EACZ,EACA,MAAOA,EAAQ,MACjB,CACF,CCjBO,IAAKC,QACVA,IAAA,iBACAA,IAAA,6BACAA,IAAA,2BAHUA,QAAA,IAMCC,GAAoB,CAC/B,OAAQ,OAAO,YAAY,OAC3B,UAAW,OAAO,YAAY,UAC9B,KAAM,OAAO,YAAY,KACzB,KAAM,OAAO,YAAY,IAC3B,ECXA,OAAS,OAAAC,GAAiB,WAAAC,OAAe,OAGzC,OAAS,YAAAC,GAAU,YAAAC,OAAgB,oBAE5B,SAASC,GAAaC,EAA8BC,EAAmBC,EAAU,IAAK,CAC3F,IAAMC,EAAgB,CAAE,QAAS,IAAIN,EAAoB,EAEnDO,EAAe,IAAIC,GACnBC,EAAiB,IAAID,GAiB3B,OAf2BL,EAAW,KACpCO,GAAI,CAAC,CAAE,EAAAC,EAAG,EAAAC,EAAG,MAAAC,EAAO,OAAAC,CAAO,IAEzBC,GACE,CACE,EAAGJ,EAAIN,EACP,EAAGO,EAAIP,EACP,MAAOQ,EAAQ,EAAIR,EACnB,OAAQS,EAAS,EAAIT,CACvB,EACAD,CACF,CACF,CACF,EAEmB,UAAWY,GAAqB,CACjD,IAAMC,EAAQhB,GAASe,EAAkBV,EAAc,OAAO,EAC9D,QAAWY,KAASD,EAAM,OAAO,EAAGV,EAAa,KAAKW,CAAK,EAE3D,IAAMC,EAAUlB,GAASK,EAAc,QAASU,CAAgB,EAChE,QAAWE,KAASC,EAAQ,OAAO,EAAGV,EAAe,KAAKS,CAAK,EAE/DZ,EAAc,QAAUU,CAC1B,CAAC,EAEM,CACL,aAAcT,EAAa,aAAa,EACxC,eAAgBE,EAAe,aAAa,EAC5C,UAAAL,EACA,cAAAE,CACF,CACF,CC1CA,OAAS,WAAAc,OAAe,uBACxB,OAAS,mBAAAC,GAAiB,UAAAC,GAAQ,OAAAC,EAAK,cAAAC,GAAY,QAAAC,GAAM,WAAAC,GAAS,gBAAAC,OAAoB,OAI/E,SAASC,GAAaC,EAA6CC,EAA+B,CAGvG,SAAS,iBAAiB,eAAiBC,GAAMA,EAAE,eAAe,CAAC,EACnE,SAAS,iBAAiB,gBAAkBA,GAAMA,EAAE,eAAe,CAAC,EAEpE,IAAMC,EAAa,IAAIC,GAA4DJ,EAAa,SAAS,EACnGK,EAAQ,IAAID,GAAwBJ,EAAa,IAAI,EACrDM,EAAe,IAAIC,GACnBC,EAAe,IAAID,GAEnBE,EAAU,IAAIC,GAClBV,EAAa,MAAM,KAAK,OACxB,CACE,QAAUW,GAAUH,EAAa,KAAKG,CAAK,EAC3C,QAAUA,GAAUL,EAAa,KAAKK,CAAK,CAC7C,EACA,CAAC,CACH,EAMMC,EAAW,IAAM,CACrB,sBAAsB,IAAMT,EAAW,KAAKH,EAAa,SAAS,CAAC,CACrE,EACAA,EAAa,MAAM,MAAM,YAAY,SAAUY,CAAQ,EAEvD,SAASC,EAAQC,EAAc,CAC7Bd,EAAa,QAAQc,CAAI,EACzBX,EAAW,KAAKH,EAAa,SAAS,EACtCK,EAAM,KAAKS,CAAI,CACjB,CAEA,IAAMC,EAAWP,EACd,KACCQ,GAAa,EAAE,EACfC,EAAKN,GAAU,CAEb,IAAMG,EAAOT,EAAM,SAAS,EAItBa,GADQP,EAAM,OAAO,CAAC,EAAIG,GACJb,EAAQ,WACpC,OAAOa,EAAOI,CAChB,CAAC,EACDD,EAAKH,GAAS,KAAK,IAAI,KAAK,IAAIA,EAAMb,EAAQ,OAAO,EAAGA,EAAQ,OAAO,CAAC,EACxEkB,GAAK,CAACC,EAAKC,IAAS,CAACD,EAAI,CAAC,EAAGC,CAAI,EAAG,CAAC,EAAG,CAAC,CAAC,CAC5C,EACC,UAAU,CAAC,CAAC,CAAEP,CAAI,IAAM,CAEnBL,EAAQ,MAAM,MAAM,QAAOA,EAAQ,MAAM,MAAM,MAAM,OAAO,CAAC,EAAIK,GACrED,EAAQC,CAAI,CACd,CAAC,EAEGQ,EAAWhB,EACd,KACCiB,GAAQZ,GAAU,CAACA,EAAM,QAAQ,EACjCa,GAAW,EAAE,EAGbP,EAAKN,GAAUA,EAAM,MAAM,IAAK,GAAM,EAAIV,EAAQ,UAAU,CAAC,EAC7DgB,EAAKQ,GAAaA,EAAS,IAAKC,GAAcA,EAAI1B,EAAa,IAAI,CAAC,EACpEiB,EAAKQ,GAAa,CAACzB,EAAa,QAAUyB,EAAS,CAAC,EAAGzB,EAAa,QAAUyB,EAAS,CAAC,CAAC,CAAC,CAC5F,EACC,UAAU,CAAC,CAACE,EAAGC,CAAC,IAAM,CACrB5B,EAAa,UAAU2B,EAAGC,CAAC,EAC3BzB,EAAW,KAAKH,EAAa,SAAS,CACxC,CAAC,EAEH,SAAS6B,EAAOC,EAAwBD,EAAiB,CACvDC,EAAW,aAAa9B,EAAa,GAAI6B,CAAM,CACjD,CAEA,SAASE,EAAcC,EAAkBC,EAAmBC,EAAoB,CAC9E,IAAMC,EAAaC,EAAsBJ,EAAWC,EAAWC,CAAU,EACzEG,EAASF,EAAW,EAAGA,EAAW,CAAC,CACrC,CAEA,SAASE,EAASV,EAAWC,EAAW,CACtC5B,EAAa,SAAS2B,EAAGC,CAAC,EAC1B,sBAAsB,IAAMzB,EAAW,KAAKH,EAAa,SAAS,CAAC,CACrE,CAEA,SAASsC,EAAUX,EAAWC,EAAW,CACvC5B,EAAa,UAAU2B,EAAGC,CAAC,EAC3B,sBAAsB,IAAMzB,EAAW,KAAKH,EAAa,SAAS,CAAC,CACrE,CAEA,MAAO,CACL,aAAAA,EACA,WAAAG,EACA,MAAAE,EACA,OAAAwB,EACA,QAAS,IAAM,CACbd,EAAS,YAAY,EACrBO,EAAS,YAAY,EACrBb,EAAQ,QAAQ,EAChBT,EAAa,MAAM,MAAM,eAAe,SAAUY,CAAQ,CAC5D,EACA,cAAAmB,EACA,SAAAM,EACA,UAAAC,EACA,QAAAzB,CACF,CACF,CC/GA,OAAS,YAAA0B,GAAU,WAAAC,GAAS,YAAAC,OAAgB,OAC5C,OAAS,QAAAC,GAAM,OAAAC,GAAK,YAAAC,GAAU,QAAAC,OAAY,OAC1C,OAAS,iBAAAC,OAAqB,oBAG9B,OAAS,YAAAC,OAAgB,oBAEzB,SAASC,IAAiB,CACxB,IAAMC,EAAa,IAAIF,GACjBG,EAAY,IAAI,IAEtB,SAASC,EAAIC,EAA2B,CACtC,IAAIC,EAAMJ,EAAW,IAAIG,CAAK,EAC9B,OAAKC,IACHA,EAAM,IAAI,IACVJ,EAAW,IAAIG,EAAOC,CAAG,GAEpBA,CACT,CAEA,SAASA,EAAIC,EAAYF,EAAc,CAErC,IAAMG,EAAYL,EAAU,IAAII,CAAE,GACXC,GAAaJ,EAAII,CAAS,IACjC,OAAOD,CAAE,EAGHH,EAAIC,CAAK,EACjB,IAAIE,CAAE,EAGpBJ,EAAU,IAAII,EAAIF,CAAK,CACzB,CAEA,SAASI,EAAOF,EAAY,CAC1B,IAAMC,EAAYL,EAAU,IAAII,CAAE,GACfC,GAAaJ,EAAII,CAAS,IACjC,OAAOD,CAAE,EACrBJ,EAAU,OAAOI,CAAE,CACrB,CAEA,MAAO,CAAE,IAAAD,EAAK,OAAAG,EAAQ,IAAAL,CAAI,CAC5B,CAEO,SAASM,GAAcC,EAAwBC,EAAgBC,EAAgB,CACpF,IAAMC,EAAgBb,GAAe,EAC/Bc,EAAW,IAAI,IAEfC,EAAgBC,GACpBC,GAAKC,GAAsBC,GAAKN,EAAc,IAAIK,CAAK,CAAC,CAAC,EACzDE,GAAUC,GAAaA,CAAQ,EAC/BJ,GAAKK,GAAaZ,EAAW,IAAIY,EAAU,UAAU,CAAC,EACtDC,GAAc,CAChB,EAGMC,EAAgBZ,EAAO,aAAa,KAAKG,CAAa,EAAE,UAAWU,GAAWA,EAAO,MAAM,CAAC,EAG5FC,EAAkBd,EAAO,eAAe,KAAKG,CAAa,EAAE,UAAWU,GAAWA,EAAO,QAAQ,CAAC,EAGxG,SAASE,EAAYF,EAA+B,CAC9CX,EAAS,IAAIW,EAAO,EAAE,GAAG,QAAQ,MAAM,yCAA0CA,CAAM,EAC3F,IAAMP,EAAQU,GAAS,IAAMC,EAAkBJ,EAAO,SAAUb,EAAO,SAAS,EAAG,CAAE,OAAQkB,CAAQ,CAAC,EAChGC,EAAUC,GACd,IAAMd,EAAM,IAAI,EACfe,GAAa,CAEZpB,EAAc,IAAIY,EAAO,GAAIQ,CAAQ,EAGrBrB,EAAO,cAAc,QAAQ,IAAIqB,CAAQ,EAEvDR,EAAO,MAAM,EAEbA,EAAO,QAAQ,CAEnB,EACA,CAAE,gBAAiB,EAAK,CAC1B,EACAX,EAAS,IAAIW,EAAO,GAAIM,CAAO,CACjC,CAGA,IAAMG,EAA4BC,GAAQzB,EAAW,QAAU0B,GAAW,CAIxE,GAHIA,EAAO,OAAS,OAClBT,EAAYS,EAAO,QAAiC,EAElDA,EAAO,OAAS,SAAU,CAC5BvB,EAAc,OAAOuB,EAAO,SAAS,EAAE,EACvC,IAAML,EAAUjB,EAAS,IAAIsB,EAAO,SAAS,EAAE,EAC3CL,GAASA,EAAQ,EACrBjB,EAAS,OAAOsB,EAAO,SAAS,EAAE,EAEtC,CAAC,EAED,MAAO,CACL,QAAS,IAAM,CACb,QAAWC,KAAKvB,EAAS,OAAO,EAAGuB,EAAE,EACrCH,EAA0B,EAC1BV,EAAc,YAAY,EAC1BE,EAAgB,YAAY,CAC9B,CACF,CACF,CCzGA,OAAS,cAAAY,GAAY,eAAAC,OAAmB,OCgBjC,SAASC,GAAqCC,EAAW,CAC9D,OAAOA,CACT,CAEO,SAASC,GACdC,EACA,CACA,OAAOA,CACT,CAEO,SAASC,GAMdD,EAAsC,CACtC,OAAOA,CACT,CAEO,SAASE,GAAkBF,EAAuC,CACvE,OAAOA,CACT,CAEO,SAASG,GAAmBH,EAAsB,CACvD,OAAOA,CACT,CAEO,SAASI,GACdC,EACAC,EACoC,CACpC,OAAOA,IAAS,QAClB,CAEO,SAASC,GACdF,EACAC,EACuC,CACvC,OAAOA,IAAS,WAClB,CD5CO,SAASE,GACdC,EACAC,EACAC,EACAC,EAAsB,EACA,CACtB,IAAMC,EAAuBC,GAAW,CAAE,EAAG,EAAG,EAAG,CAAE,CAAC,EAChDC,EAAS,IAAI,IACbC,EAAW,IAAI,IACjBC,EACEC,EAAe,CAAE,QAASN,CAAoB,EAKpD,SAASO,EAAqBC,EAA0D,CACtF,OAAKC,GAAiBD,CAAI,EAElBE,GAAe,CACrBF,EAAKE,CAAU,EACfC,GAAY,IAAM,CAChBV,EAAS,EAAIS,EAAW,EACxBT,EAAS,EAAIS,EAAW,CAC1B,CAAC,CACH,EARoCF,CAStC,CASA,eAAeI,EAAa,CAAE,GAAAf,EAAI,IAAAgB,EAAK,KAAAC,EAAM,OAAAC,CAAO,EAA8B,CAEhF,IAAMC,EAAcF,GAAQL,GAAiBK,CAAI,EAC7CE,GACFL,GAAY,IAAM,CAChBV,EAAS,EAAIe,EAAY,GAAKf,EAAS,EACvCA,EAAS,EAAIe,EAAY,GAAKf,EAAS,CACzC,CAAC,EAIHa,GAAQX,EAAO,IAAIN,EAAIU,EAAqBO,CAAI,CAAC,EACjDC,GAAUX,EAAS,IAAIP,EAAIU,EAAqBQ,CAAM,CAAC,EAGnDV,GAAoBQ,GAAK,MAAMN,EAAqBM,CAAG,EAAER,CAAgB,EACzEA,GAAoBS,GAAMA,EAAKT,CAAgB,CACrD,CAEA,SAASY,EAAapB,EAAqB,CACzC,OAAOM,EAAO,IAAIN,CAAE,GAAKO,EAAS,IAAIP,CAAE,CAC1C,CAEA,SAASqB,EAAgBrB,EAAYsB,EAAgB,CACnDhB,EAAO,OAAON,CAAE,EAChBO,EAAS,OAAOP,CAAE,EAGdQ,IACFe,EAAMf,EAAkBc,CAAI,EAC5BE,GAA2BhB,EAAkBF,EAAO,OAAO,CAAC,EAEhE,CAEA,SAASiB,EAAMV,EAA8BS,EAAO,GAAM,CACpDA,IACEG,GAASZ,EAAYX,CAAI,GAAGW,EAAW,KAAK,EAChDa,EAAgBb,CAAU,GAE5BA,EAAW,SAAS,EAAE,EACtBA,EAAW,aAAeJ,EAAa,QACvCI,EAAW,cAAc,GAAM,EAAI,EACnCA,EAAW,SAAS,EAAG,CAAC,EACxBA,EAAW,UAAU,EAAG,CAAC,EACzBA,EAAW,SAAS,CAAC,EACrBA,EAAW,gBAAgB,CAAC,EAC5BA,EAAW,UAAU,EACrBA,EAAW,QAAQ,eAAgB,IAAI,EACnCY,GAASZ,EAAYX,CAAI,IAC3BW,EAAW,UAAU,EACrBA,EAAW,WAAW,EAAE,GAEtBc,GAAYd,EAAYX,CAAI,IAC9BW,EAAW,MAAQ,EACnBA,EAAW,OAAS,EAExB,CAEA,SAASe,EAAgBC,EAAgB,CACvCpB,EAAa,QAAUoB,EACnBrB,IAAkBA,EAAiB,aAAeqB,EACxD,CAEA,SAASC,GAAQ,CACf,GAAItB,EAAkB,OACtB,IAAMK,EAA+BZ,EAAM,IAAI,EAC/CsB,EAAMV,CAAU,EAGhBW,GAA2BX,EAAYP,EAAO,OAAO,CAAC,EAKtDO,EAAW,UAAU,EAAI,EACzBA,EAAW,WAAW,EAAI,EAC1BA,EAAW,QAAQ,eAAgBb,CAAE,EACrCQ,EAAmBK,CACrB,CAEA,SAASkB,GAAU,CACbvB,GACFP,EAAM,YAAYO,CAAgB,EAEpCA,EAAmB,MACrB,CAEA,MAAO,CAAE,aAAAO,EAAc,aAAAK,EAAc,gBAAAC,EAAiB,MAAAS,EAAO,QAAAC,EAAS,SAAA3B,EAAU,GAAAJ,EAAI,gBAAA4B,EAAiB,KAAA1B,CAAK,CAC5G,CAEA,SAASsB,GACPX,EACAmB,EACA,CACA,GAAKnB,EACL,QAAWF,KAAQqB,EACjBrB,EAAKE,CAAU,CAEnB,CAEA,SAASD,GACPD,EACiC,CACjC,IAAIQ,EACEc,EAAkB,IAAI,MAC1B,CAAE,EAAG,OAAW,EAAG,MAAU,EAC7B,CACE,IAAK,CAACC,EAAGC,IACHA,IAAS,cAAsB,CAACC,EAAWC,IAAelB,EAAc,CAAE,EAAAiB,EAAG,EAAAC,CAAE,EAC/EF,IAAS,OAAgBC,GAAejB,EAAc,CAAE,EAAAiB,CAAE,EAC1DD,IAAS,OAAgBE,GAAelB,EAAc,CAAE,EAAAkB,CAAE,EACvD,IAAG,GAEZ,IAAK,CAACH,EAAGC,EAAMG,KACTH,IAAS,MAAKhB,EAAcA,EAAc,CAAE,GAAGA,EAAa,EAAGmB,CAAM,EAAI,CAAE,EAAGA,CAAM,GACpFH,IAAS,MAAKhB,EAAcA,EAAc,CAAE,GAAGA,EAAa,EAAGmB,CAAM,EAAI,CAAE,EAAGA,CAAM,GACjF,GAEX,CACF,EACA,OAAA3B,EAAKsB,CAAmC,EACjCd,CACT,CEtKA,OAAS,cAAAoB,OAAkB,OAC3B,OAAS,aAAAC,OAAiB,oBAO1B,SAASC,GAAiB,EAAuC,CAC/D,OAAO,OAAO,KAAKC,EAAiB,EAAE,SAAS,CAAC,CAClD,CAEO,SAASC,GAAiBC,EAAqB,CACpD,IAAMC,EAASC,GAAUJ,GAAoBK,GAAcH,EAAM,IAAI,MAAM,CAAE,UAAAG,CAAU,CAAC,CAAC,EAInFC,EAAUC,GAAW,IAAI,GAAoD,EAC7EC,EAAe,CAAE,QAAS,CAAE,EAElC,SAASC,EACPC,EACAC,EACmC,CAC/B,OAAOD,GAAW,WAAUA,EAAS,OAAOA,CAAM,GACtD,IAAIE,EAAiBN,EAAQ,IAAII,CAAM,EACvC,OAAKX,GAAiBY,CAAI,GAMrBC,IACHA,EAAiBC,GAAkCH,EAAQP,EAAOQ,CAAI,EAAGA,EAAMH,EAAa,OAAO,GAGhGF,EAAQ,IAAII,CAAM,GACrBJ,EAAQ,IAAII,EAAQE,CAAc,EAM7BA,GAhBAA,GAAgB,MAiBzB,CAEA,SAASE,EAAOJ,EAAyB,CACnC,OAAOA,GAAW,WAAUA,EAAS,OAAOA,CAAM,GACtD,IAAMK,EAAST,EAAQ,IAAII,CAAM,EAC7BK,GAAQA,EAAO,QAAQ,EAC3BT,EAAQ,OAAOI,CAAM,CACvB,CAEA,SAASM,EAAaC,EAAkBC,EAAiB,CACnDA,EACFV,EAAa,SAAWS,EAExBT,EAAa,SAAW,CAACS,EAG3B,QAAWL,KAAkBN,EAAQ,OAAO,EAC1CM,EAAe,gBAAgBJ,EAAa,OAAO,CAEvD,CAEA,MAAO,CAAE,IAAAC,EAAK,OAAAK,EAAQ,QAAAR,EAAS,OAAAH,EAAQ,aAAAa,CAAa,CACtD,CCjEA,OAAS,YAAAG,OAAgB,oBAEzB,OAAS,cAAAC,OAAkB,oBAgBpB,SAASC,GACdC,EACqC,CACrC,GAAM,CAAE,MAAAC,EAAO,SAAAC,EAAU,YAAAC,EAAa,OAAAC,EAAQ,eAAAC,EAAgB,MAAAC,EAAO,UAAAC,EAAW,WAAAC,CAAW,EAAIR,EACzFS,EAAmB,OAAO,KAAKN,EAAY,MAAM,EACpD,IAAKO,GAAQP,EAAY,OAAOO,CAAgB,EAAE,QAAQ,EAC1D,KAAK,EAGR,GAAIC,EAAIP,EAAO,UAAWG,CAAS,IAAM,GAAKI,EAAIP,EAAO,UAAWI,CAAU,IAAM,EAClF,MAAM,IAAI,MAAM,+FAA+F,EAOjH,IAAMI,EAAO,IAAIC,GACXC,EAAgB,CAAE,EAAGV,EAAO,UAAYG,EAAW,EAAGH,EAAO,UAAYI,CAAW,EACpFO,EAAW,IAAI,IACfC,EAAU,CAAE,QAAS,EAAK,EAGhC,QAAWC,KAASb,EAAO,cAAc,QAAQ,OAAO,EACtDc,EAAYD,CAAK,EAGnB,IAAME,EAAgBf,EAAO,aAAa,UAAWa,GAAU,CAC7DC,EAAYD,CAAK,CACnB,CAAC,EAGKG,EAAkBhB,EAAO,eAAe,UAAWa,GAAU,CACjEI,EAAaJ,CAAK,CACpB,CAAC,EAEDF,EAAS,IAAI,IAAMI,GAAe,YAAY,CAAC,EAC/CJ,EAAS,IAAI,IAAMK,GAAiB,WAAW,EAM/C,SAASE,EACPC,EACAtB,EACAuB,EACAC,EACAC,EACAC,EAIA,CACA,IAAMC,EAA0D,CAAC,EAEjE,QAAWlB,KAAO,OAAO,KAAKP,EAAY,MAAM,EAAG,CACjD,IAAM0B,EAAQ1B,EAAY,OAAOO,CAAgB,EAC3CoB,EAAeP,EAAI,iBACvBb,EACAmB,EAAM,SAAS,IAAKE,GAAO7B,EAAS6B,CAAE,CAAC,EACvCP,EACAC,EACAC,EACAC,CACF,EACA,GAAI,CAACG,EAAc,CACjB,QAAQ,MAAM,wBAAwBpB,WAAa,EACnD,SAEFkB,EAAOlB,CAAG,EAAIoB,EACd,IAAME,EAAW/B,EAAM,KAAK,SACxB4B,EAAM,kBAAoBG,GAAU,YACtCJ,EAAOlB,CAAG,EAAE,SAAWsB,EAAS,UAAU,IAAIC,EAAqB,GAAG,GAI1E,MAAO,CAAE,OAAQ,OAAO,OAAOL,CAAM,EAAG,aAAcA,EAAOzB,EAAY,YAAY,CAAE,CACzF,CAEA,SAAS+B,EAAUC,EAAiD,CAClE,IAAMC,EAAgC,IAAI,OAAO,SAAS,QAAQ,CAChE,WAAA5B,EACA,UAAAD,EACA,MAAOO,EAAc,EACrB,OAAQA,EAAc,EACtB,SAAU,OAAO,QAAQZ,CAAQ,EAC9B,OAAO,CAAC,CAACQ,CAAG,IAAMD,EAAiB,SAASC,CAAG,CAAC,EAChD,IAAI,CAAC,CAAC,CAAE2B,CAAO,IAAMA,CAAO,CACjC,CAAC,EAEKd,EAAM,IAAI,OAAO,SAAS,QAAQtB,EAAOmC,CAAI,EAC7CE,EAAUC,EAAkBJ,EAAY/B,EAAO,SAAS,EACxD,CAAE,aAAAoC,CAAa,EAAIlB,EAAaC,EAAKtB,EAAOqC,EAAQ,EAAGA,EAAQ,EAAGxB,EAAc,EAAGA,EAAc,CAAC,EACxG,OAAAS,EAAI,SAASiB,CAAY,EACzB5B,EAAK,IAAIuB,EAAYZ,CAAG,EACjBA,CACT,CAEA,SAASkB,EAAmBN,EAAiD,CAC3E,OAAOvB,EAAK,IAAIuB,CAAU,GAAKD,EAAUC,CAAU,CACrD,CAEA,SAASO,EAAkBC,EAAgD,CACzE,IAAMR,EAAaS,EAAsBD,EAAWpC,EAAWC,EAAYJ,EAAO,SAAS,EAC3F,OAAOqC,EAAmBN,CAAU,CACtC,CAEA,SAASd,EAAac,EAAwBU,EAAiB,CAC7D,GAAK,CAAC7B,EAAQ,SAAW,CAAC6B,GAAU,CAACjC,EAAK,IAAIuB,CAAU,EAAG,OAC/CM,EAAmBN,CAAU,EACrC,QAAQ,EACZvB,EAAK,OAAOuB,CAAU,CACxB,CAEA,SAASW,EAAUC,EAAmBC,EAAcnB,EAAgBoB,EAAe,CACjF,GAAI,CAACjC,EAAQ,QAAS,OACtB,IAAMO,EAAMmB,EAAkBK,CAAK,EAC7BG,EAAU3B,EAAI,UAAUyB,EAAMrC,EAAIoC,EAAM,EAAGjC,EAAc,CAAC,EAAGH,EAAIoC,EAAM,EAAGjC,EAAc,CAAC,EAAG,OAAWe,CAAK,EAClH,GAAIqB,GAAW,KACb,MAAM,IAAI,MAAM,kBAAkB,EAGpCA,EAAQ,MAAQ3B,EAAI,UACpB2B,EAAQ,OAAS3B,EAAI,WAEjB0B,IACFC,EAAQ,KAAOD,EAEnB,CAEA,SAAS/B,EAAYiB,EAAwB,CAC3C,GAAI,CAACnB,EAAQ,QAAS,OACtB,IAAMO,EAAMkB,EAAmBN,CAAU,EACnCgB,EAAeC,EAAsBjB,EAAY5B,EAAWC,EAAYJ,EAAO,SAAS,EAE9F,QAAWyB,KAAS,OAAO,KAAK1B,EAAY,MAAM,EAChDoB,EAAI,YACDyB,GAAS,CACR,IAAMD,EAAQ,CAAE,EAAGI,EAAa,EAAIH,EAAK,EAAG,EAAGG,EAAa,EAAIH,EAAK,CAAE,EACjEK,EAAexB,IAAU1B,EAAY,aAAeL,GAAWO,CAAc,EAAI,GACjFiD,EAAQhD,EAAMuB,CAAkB,EAAE,IAAIkB,CAAK,GAAKM,EACtDL,EAAK,MAAQM,CACf,EACA,OACA,OACA,OACA,OACA,OACA,OACAzB,CACF,CACJ,CAEA,SAAS0B,GAAU,CACjB,QAAWhC,KAAOX,EAAK,OAAO,EAC5BW,EAAI,QAAQ,EAEdX,EAAK,MAAM,EACX,QAAW4C,KAAKzC,EACdyC,EAAE,CAEN,CAEA,SAASC,GAAO,CACd,OAAO7C,EAAK,IACd,CAEA,SAAS8C,EAAWC,EAAY,CAC9B,GAAIA,IAAM3C,EAAQ,QAClB,CAAAA,EAAQ,QAAU2C,EAClB,QAAW1C,KAASb,EAAO,cAAc,QAAQ,OAAO,EACtDY,EAAQ,QAAUE,EAAYD,CAAK,EAAII,EAAaJ,EAAO,EAAI,EAEnE,CAEA,MAAO,CAAE,KAAAwC,EAAM,UAAAX,EAAW,QAAAS,EAAS,WAAAG,EAAY,QAAA1C,EAAS,UAAAT,EAAW,WAAAC,CAAW,CAChF,CCnMA,OAAS,YAAAoD,OAAgB,oBAGlB,SAASC,GACdC,EACqC,CACrC,GAAM,CACJ,OAAAC,EACA,YAAa,CAAE,OAAAC,EAAQ,aAAAC,CAAa,EACpC,UAAAC,EACA,WAAAC,CACF,EAAIL,EAEEM,EAAoD,CAAC,EAE3D,QAAWC,KAAY,OAAO,KAAKL,CAAM,EACvCI,EAAMC,CAAqB,EAAI,IAAIC,GAGrC,IAAMC,EAAiBC,GAAqB,CAAE,GAAGV,EAAQ,MAAAM,CAAM,CAAC,EAEhE,SAASK,EAAUC,EAAmBC,EAAgBC,EAAmBC,EAAe,CAEtFT,EAAMQ,GAASX,CAAY,EAAE,IAAIS,EAAOC,CAAI,EAG5C,IAAMG,EAAQC,EAAsBL,EAAOR,EAAWC,EAAYJ,EAAO,SAAS,EAC9EQ,EAAe,SAAWR,EAAO,cAAc,QAAQ,IAAIe,CAAK,GAClEP,EAAe,UAAUG,EAAOC,EAAMC,EAAOC,CAAI,CAErD,CAEA,MAAO,CAAE,GAAGN,EAAgB,UAAAE,EAAW,MAAAL,CAAM,CAC/C,CCjCA,OAAS,YAAAY,OAAgB,oBAKlB,SAASC,GACdC,EACqD,CACrD,GAAM,CACJ,YAAa,CAAE,OAAAC,EAAQ,aAAAC,CAAa,EACpC,kBAAAC,EACA,MAAAC,CACF,EAAIJ,EAEEK,EAAkBH,EACpBI,EAAW,EACTC,EAA8F,CAAC,EAE/FC,EAAiE,CAAC,EACxE,QAAWC,KAAY,OAAO,KAAKR,CAAM,EACvCO,EAAcC,CAAqB,EAAI,IAAIC,GAG7C,IAAMC,EAAoE,CAAC,EAC3E,QAAWF,KAAY,OAAO,KAAKR,CAAM,EACvCU,EAAiBF,CAAqB,EAAI,IAAIC,GAGhD,IAAME,EAAiBC,GAAqBb,CAAM,EAElD,SAASc,EAAkBC,EAA6BC,EAAiC,CACvFT,EAAWQ,CAAY,EAAI,CAAE,OAAAC,EAAQ,MAAO,CAAE,CAChD,CAEA,SAASC,EAAeC,EAAmBH,EAA6BI,EAAmBd,EAAiB,CAC1GG,EAAcW,CAAK,EAAE,IAAID,EAAOH,CAAY,CAC9C,CAEA,SAASK,EAAkBF,EAAmBC,EAAmBd,EAAiB,CAChF,IAAMU,EAAeP,EAAcW,CAAK,EAAE,IAAID,CAAK,EAC7CG,EAAYN,GAAgBR,EAAWQ,CAAY,EACzDP,EAAcW,CAAK,EAAE,OAAOD,CAAK,EAC7BG,GAAWT,EAAe,UAAUM,EAAOG,EAAU,OAAO,CAAC,EAAGF,CAAK,CAC3E,CAEA,SAASG,EAAiBJ,EAAmBC,EAAmBd,EAAiB,CAC/E,IAAMU,EAAeP,EAAcW,CAAK,EAAE,IAAID,CAAK,EAC9CH,IACLJ,EAAiBQ,CAAK,EAAE,IAAID,EAAOH,CAAY,EAC/CK,EAAkBF,EAAOC,CAAK,EAChC,CAEA,SAASI,EAAkBL,EAAmBC,EAAmBd,EAAiB,CAChF,IAAMU,EAAeJ,EAAiBQ,CAAK,EAAE,IAAID,CAAK,EACjDH,IACLJ,EAAiBQ,CAAK,EAAE,OAAOD,CAAK,EACpCD,EAAeC,EAAOH,EAAcI,CAAK,EAC3C,CAEA,SAASK,GAAgB,CAEvB,QAAWT,KAAgB,OAAO,KAAKR,CAAU,EAAsB,CACrE,IAAMc,EAAYd,EAAWQ,CAAY,EACrCM,IAAWA,EAAU,MAAQI,EAAIJ,EAAU,MAAQ,EAAGA,EAAU,OAAO,MAAM,GAInF,QAAWZ,KAAY,OAAO,KAAKD,CAAa,EAAkB,CAChE,IAAMW,EAAQX,EAAcC,CAAQ,EACpC,QAAWS,KAASC,EAAM,OAAO,EAAG,CAClC,IAAMJ,EAAeI,EAAM,IAAID,CAAK,EAC9BG,EAAYN,GAAgBR,EAAWQ,CAAY,EACzD,GAAI,CAACM,EAAW,SAChB,IAAMK,EAAeL,EAAU,OAAOA,EAAU,KAAK,EACrDT,EAAe,UAAUM,EAAOQ,EAAcjB,CAAQ,GAG5D,CAEA,SAASkB,EAAOC,EAAc,CACxBA,EAAOtB,EAAWH,IACtBG,EAAWsB,EACXJ,EAAc,EAChB,CAEA,SAASK,GAAU,CACjBzB,EAAM,OAAO,eAAe,SAAUuB,CAAM,EAC5Cf,EAAe,QAAQ,CACzB,CAEA,OAAAR,EAAM,OAAO,YAAY,SAAUuB,CAAM,EAElC,CACL,GAAGf,EACH,eAAAK,EACA,kBAAAG,EACA,iBAAAE,EACA,kBAAAC,EACA,kBAAAT,EACA,QAAAe,CACF,CACF,CCxGA,OACE,eAAAC,GACA,wBAAAC,GACA,UAAAC,EACA,aAAAC,GACA,OAAAC,EACA,SAAAC,EAEA,YAAAC,GACA,QAAAC,GACA,WAAAC,GACA,gBAAAC,OACK,OACP,OAAS,cAAAC,GAAY,YAAAC,GAAU,eAAAC,OAAmB,OAElD,OAAS,iBAAAC,MAAqB,oBAIvB,SAASC,GAAYC,EAAuC,CACjE,IAAMC,EAAY,IAAI,IAChBC,EAAU,CAAE,QAAS,EAAK,EAEhCF,EAAY,OAAO,mBAAmB,EAEtC,SAASG,GAAe,CACtBD,EAAQ,QAAU,EACpB,CAEA,SAASE,GAAc,CACrBF,EAAQ,QAAU,EACpB,CAEA,SAASG,EAAUC,EAAgB,CACjCN,EAAY,iBAAiBM,CAAM,CACrC,CAEA,IAAMC,EAAY,IAAId,GAEhBe,EAAepB,GAAU,SAAU,WAAW,EAAE,KACpDD,EAAO,IAAMe,EAAQ,OAAO,EAC5Bb,EAAI,KACK,CAAE,QAASW,EAAY,SAAS,aAAc,EACtD,EACDF,EAAc,CAChB,EAEMW,EAAiFrB,GACrF,SACA,WACF,EAAE,KACAD,EAAO,IAAMe,EAAQ,OAAO,EAC5Bb,EAAKqB,IAAW,CAAE,QAASV,EAAY,SAAS,cAAe,MAAOU,CAAoB,EAAE,EAC5FZ,EAAc,CAChB,EAEMa,EAA+EvB,GACnF,SACA,SACF,EAAE,KACAD,EAAO,IAAMe,EAAQ,OAAO,EAC5Bb,EAAKqB,IAAW,CAAE,QAASV,EAAY,SAAS,cAAe,MAAOU,CAAoB,EAAE,EAC5FZ,EAAc,CAChB,EAGMc,EAAStB,EAAMmB,EAAcE,CAAU,EAAE,KAC7CxB,EAAO,IAAMe,EAAQ,OAAO,EAC5Bb,EAA6E,CAAC,CAAE,MAAAqB,CAAM,IAAM,CAC1FA,EAAM,OAAS,aAAeA,EAAM,SAAW,EAC/C,KAAK,IAAI,CACX,CAAC,EACDzB,GAAY,EAAG,CAAC,EAChBE,EAAO,CAAC,CAAC0B,EAAMC,CAAG,IAAMD,EAAK,CAAC,GAAK,CAACC,EAAI,CAAC,GAAKA,EAAI,CAAC,EAAID,EAAK,CAAC,EAAI,GAAG,EACpExB,EAAI,IAAMW,EAAY,SAAS,aAAa,EAC5CF,EAAc,CAChB,EAGMiB,EAAeN,EAAa,KAChCtB,EAAO,IAAMe,EAAQ,OAAO,EAC5Bb,EAAI,IAAM,KAAK,IAAI,CAAC,EACpBJ,GAAY,EAAG,CAAC,EAChBE,EAAO,CAAC,CAAC0B,EAAMC,CAAG,IAAMA,EAAMD,EAAO,GAAG,EACxCnB,GAAa,GAAG,EAChBL,EAAI,IAAMW,EAAY,SAAS,aAAa,EAC5CF,EAAc,CAChB,EAGMkB,EAAc1B,EAAMmB,EAAcE,CAAU,EAAE,KAClDxB,EAAO,CAAC,CAAE,QAAA8B,CAAQ,IAAMf,EAAQ,SAAWe,EAAQ,gBAAgB,CAAC,EACpE5B,EAAI,IAAMW,EAAY,SAAS,aAAa,EAC5CF,EAAc,CAChB,EAGMoB,EAAQ5B,EACZmB,EAAa,KAAKpB,EAAI,IAAG,EAAY,CAAC,EACtCC,EAAMqB,EAAYH,CAAY,EAAE,KAC9BjB,GAAS,EACTC,GACE,CAAC2B,EAAK,CAAC,CAAE,QAASN,CAAK,EAAG,CAAE,QAASO,CAAK,CAAC,IACzCA,EAAK,eAAe,EAChBP,EAAK,eAAe,GAAKM,EACvB,CAAE,GAAGA,EAAK,MAAOC,EAAK,OAASD,EAAI,EAAG,OAAQC,EAAK,OAASD,EAAI,CAAE,EAClE,CAAE,EAAGC,EAAK,OAAQ,EAAGA,EAAK,OAAQ,MAAO,EAAG,OAAQ,CAAE,EACxD,OACN,MACF,EACAtB,EAAc,EACdX,EAAQkC,GAAS,KAAK,IAAIA,EAAK,KAAK,EAAI,IAAM,KAAK,IAAIA,EAAK,MAAM,EAAI,EAAE,CAC1E,CACF,EAAE,KACAlC,EAAO,IAAMe,EAAQ,OAAO,EAC5BhB,GAAqB,CACvB,EAEMoC,EAAc3B,GAAW,IAAI,GAAU,EACvC4B,EAAiBvB,EAAY,SAC7BwB,EAAY,IAAI,IAGtB,QAAWC,KAAO,OAAO,KAAK,OAAO,MAAM,SAAS,QAAQ,EAAGC,EAAOD,CAAG,EAGzE,IAAME,EAASpB,EAAU,KAAKpB,EAAO,IAAMe,EAAQ,OAAO,CAAC,EAAE,UAAWuB,GAAQ,CAC9E,IAAMG,EAAUJ,EAAU,IAAIC,EAAI,OAAO,EACpCG,GACL/B,GAAY,IAAM,CACZ4B,EAAI,QAAQH,EAAY,IAAIM,CAAO,EACnCH,EAAI,MAAMH,EAAY,OAAOM,CAAO,CAC1C,CAAC,CACH,CAAC,EACD3B,EAAU,IAAI,IAAM0B,GAAQ,YAAY,CAAC,EAEzC,IAAME,EAAavC,EAAMmB,EAAcE,CAAU,EAAE,UAAU,CAAC,CAAE,QAAAM,CAAQ,IAAM,CAC5EpB,GAAY,IAAM,CACZoB,EAAQ,eAAe,EAAGK,EAAY,IAAI,cAAc,EACvDA,EAAY,OAAO,cAAc,EAElCL,EAAQ,gBAAgB,EAAGK,EAAY,IAAI,eAAe,EACzDA,EAAY,OAAO,eAAe,CACzC,CAAC,CAEH,CAAC,EACDrB,EAAU,IAAI,IAAM4B,GAAY,YAAY,CAAC,EAG7C,SAASH,EAAOD,EAAa,CAC3B,GAAI,CAACF,EAAgB,CACnB,QAAQ,KAAK,cAAcE,wCAA0C,EACrE,OAIF,IAAMK,EAASP,EAAe,OAAOE,EAAK,EAAK,EAE/CD,EAAU,IAAIM,EAAO,QAASL,CAAU,EAExCK,EAAO,mBAAmB,EAC1BA,EAAO,aAAe,GACtBA,EAAO,GAAG,OAASC,GAAwCxB,EAAU,KAAKwB,CAAQ,CAAC,EACnFD,EAAO,GAAG,KAAOC,GAAwCxB,EAAU,KAAKwB,CAAQ,CAAC,CACnF,CAEA,SAASC,EAAWC,EAAiDC,EAAsB,CACzF,IAAMC,EAAWvC,GACf,IAAMqC,EAAYX,CAAW,EAC5Bc,GAAW,CACNA,GAAQF,EAAS,CACvB,EACA,CAAE,gBAAiB,EAAK,CAC1B,EACAjC,EAAU,IAAIkC,CAAQ,CACxB,CAEA,SAASE,GAAU,CACjB,QAAWF,KAAYlC,EACrBkC,EAAS,CAEb,CAEA,MAAO,CACL,UAAW5B,EAAU,aAAa,EAClC,aAAAC,EACA,aAAAC,EACA,WAAAE,EACA,OAAAC,EACA,aAAAG,EACA,YAAAC,EACA,MAAAE,EACA,YAAAI,EACA,QAAAe,EACA,aAAAlC,EACA,YAAAC,EACA,UAAAC,EACA,QAAAH,EACA,WAAA8B,CACF,CACF,CC5LA,OAAS,YAAAM,OAAgB,oBAEzB,eAAsBC,GAA2CC,EAAgC,CAC/F,GAAM,CAAE,MAAAC,EAAO,YAAAC,EAAa,aAAAC,EAAc,iBAAAC,CAAiB,EAAIJ,EAGzDK,EAAoB,OAAO,KAAKH,CAAW,EAAE,IAAKI,GAAQ,CAC9D,GAAM,CAAE,QAAAC,EAAS,OAAAC,EAAQ,OAAAC,CAAO,EAAIP,EAAYI,CAAG,EACnD,OAAOI,GAAY,CAAE,IAAAJ,EAAK,QAAAC,EAAS,OAAAC,EAAQ,OAAAC,CAAO,CAAC,CACrD,CAAC,EAEKE,EAAeC,GAAmB,CAAE,OAAQP,EAAmB,MAAAJ,CAAM,CAAC,EACtEY,EAAO,IAAI,OAAO,KAAKF,CAAY,EAGnC,CAACG,EAAS,CAAEC,CAAO,EAAIjB,GAAS,EAEtCe,EAAK,OAAO,GAAG,QAASC,CAAO,EAG3BH,EAAa,OAAS,OAAO,UAC/BE,EAAK,SAAS,KAAK,OAAO,EAG5B,MAAME,EAGN,SAASC,GAAS,CAChB,IAAMC,EAAQ,OAAO,WAAaJ,EAAK,MAAM,KACvCK,EAAS,OAAO,YAAcL,EAAK,MAAM,KAC/CA,EAAK,MAAM,OAAOI,EAAOC,CAAM,CACjC,CACAF,EAAO,EACP,OAAO,iBAAiB,SAAUA,CAAM,EAGxC,IAAMG,EAAoC,CAAC,EAE3C,QAAWC,KAAeP,EAAK,MAAM,UAAU,EAAK,EAAG,CACrD,IAAMP,EAAMc,EAAY,MAAM,IACxBC,EAASnB,EAAYI,CAAG,EAG9B,OAAW,CAACgB,EAAUC,CAAK,IAAK,OAAO,QAAQrB,EAAYI,CAAG,EAAE,MAAM,EACpE,MAAMkB,GAAKJ,EAAcK,GAAW,CAC9BF,EAAM,OAAS,EACjBE,EAAO,MAAMH,EAAUC,EAAM,IAAI,EACxBA,EAAM,OAAS,EACxBE,EAAO,YAAYH,EAAUC,EAAM,KAAMA,EAAM,OAAO,EAC7CA,EAAM,OAAS,GACxBE,EAAO,WAAWH,EAAUC,EAAM,KAAMA,EAAM,QAAQ,SAAS,CAEnE,CAAC,EAIH,IAAMG,EAAaC,GAAiBP,CAAW,EAGzCQ,EAASC,GAAaT,EAAY,QAAQ,KAAMjB,CAAY,EAG5D2B,EAAgBC,GAAaH,EAAO,WAAYxB,CAAgB,EAGhE4B,EAAUC,GAAcP,EAAYE,EAAQE,CAAa,EAG/D,QAAWI,KAAQb,EAAO,WACxBD,EAAY,MAAM,OAAO,CACvB,IAAKc,EAAK,IACV,OAAQC,GAAef,EAAY,MAAOc,CAAI,EAC9C,UAAWA,EAAK,UAChB,OAAQA,EAAK,MACf,CAAC,EAIH,IAAME,EAAW,IAAI,OAAO,SAAS,QAAQhB,EAAa,IAAI,OAAO,SAAS,OAAS,EACjFiB,EAAoC,CAAC,EAC3C,OAAW,CAACC,EAAY,CAAE,SAAAhB,EAAU,UAAAiB,EAAW,WAAAC,CAAW,CAAC,IAAK,OAAO,QAAQtC,EAAYI,CAAG,EAAE,QAAW,EAAG,CAC5G,IAAMmC,EAAUL,EAAS,gBAAgBE,EAAYhB,EAAUiB,EAAWC,CAAU,EACpF,GAAI,CAACC,EAAS,CACZ,QAAQ,MAAM,kBAAkBH,WAAoB,EACpD,SAEFD,EAAgBC,CAAU,EAAIG,EAEhC,IAAMC,EAAWL,EAGXM,EAA0D,CAAC,EACjE,QAAWC,KAAU,OAAO,KAAKvB,EAAO,IAAI,EAAG,CAC7C,GAAM,CAAE,OAAAwB,EAAQ,eAAAC,EAAgB,UAAAP,EAAW,WAAAC,EAAY,kBAAAO,EAAmB,eAAAC,EAAgB,UAAAC,CAAU,EAClG5B,EAAO,KAAKuB,CAAM,EAGdM,EAASnB,GAAaH,EAAO,WAAYqB,CAAS,EAElDE,EAAMC,GAAsB,CAChC,MAAOhC,EACP,SAAAsB,EACA,YAAaG,EACb,OAAAK,EACA,UAAAX,EACA,WAAAC,EACA,eAAAM,EACA,kBAAAC,CACF,CAAC,EAGD,GAAIC,EACF,OAAW,CAAC1C,EAAK+C,CAAM,IAAK,OAAO,QAAQL,CAAc,EACvDG,EAAI,kBAAkB7C,EAAK+C,CAAM,EAIrCV,EAAYC,CAAwD,EAAIO,EAE1E,IAAMG,EAAOX,EAEPY,EAAQC,GAAYpC,EAAY,KAAK,EAE3CD,EAAcb,CAAG,EAAI,CAAE,YAAAc,EAAa,WAAAM,EAAY,OAAAE,EAAQ,QAAAI,EAAS,KAAAsB,EAAM,MAAAC,EAAO,OAAQrD,EAAYI,CAAG,CAAE,EAEzG,IAAMmD,EAAStC,EAEf,MAAO,CACL,KAAAN,EACA,OAAA4C,EACA,QAAS,IAAM,CACb5C,EAAK,QAAQ,EAAI,EACjB,QAAWP,KAAO,OAAO,KAAKmD,CAAM,EAAG,CACrC,IAAMC,EAAQD,EAAOnD,CAAG,EACxBoD,EAAM,OAAO,QAAQ,EACrBA,EAAM,QAAQ,QAAQ,EACtBA,EAAM,MAAM,QAAQ,EACpB,QAAWP,KAAO,OAAO,OAAOO,EAAM,IAAI,EACxCP,EAAI,QAAQ,EAIhB,OAAO,oBAAoB,SAAUnC,CAAM,CAC7C,CACF,CACF,CC5JA,OAAS,YAAA2C,OAAgB,oBAIzB,SAASC,IAAiB,CACxB,IAAMC,EAAM,KAAK,OAAO,EAAI,IACtBC,EAAQ,KAAK,OAAO,EAAI,IACxBC,EAAO,KAAK,OAAO,EAAI,IAC7B,OAAOF,EAAM,MAASC,EAAQ,IAAOC,CACvC,CAEO,SAASC,GACdC,EACAC,EACAC,EACAC,EACAC,EACA,CACA,IAAMC,EAAU,CACd,YAAa,GACb,gBAAiB,GACjB,kBAAmB,GACnB,oBAAqB,GACrB,eAAgB,GAChB,QAAS,EACX,EAEMC,EAAe,IAAIZ,GACnBa,EAAgBL,EAAM,IAAI,UAAU,EAAG,EAAG,EAAG,EAAG,SAAU,EAAG,EACnEK,EAAc,eAAe,EAC7BA,EAAc,GAAG,YAAa,IAAM,CAClC,QAAQ,IAAI,UAAWA,CAAa,CACtC,CAAC,EAEDP,EAAO,WAAW,UAAWQ,GAAc,CACrCH,EAAQ,aACV,QAAQ,IAAIG,CAAS,EAGnBH,EAAQ,oBACVE,EAAc,SAASC,EAAU,MAAOA,EAAU,MAAM,EACxDD,EAAc,YAAYC,EAAU,QAASA,EAAU,OAAO,GAG5DH,EAAQ,gBACV,QAAQ,IACN,aAAaF,EAAW,QAAQ,qBAAqB,OAAO,OAAOA,EAAW,MAAM,EAAE,OACpF,CAACM,EAAKC,IAASD,EAAMC,EAAK,YAAY,EAAE,OACxC,CACF,oBAAoB,OAAO,OAAOP,EAAW,MAAM,EAAE,OAAO,CAACM,EAAKC,IAASD,EAAMC,EAAK,YAAY,EAAG,CAAC,GACxG,EAGEL,EAAQ,SACV,QAAQ,IAAI,WAAYD,EAAI,KAAK,CAAC,CAEtC,CAAC,EAEDH,EAAO,aAAa,UAAWU,GAAU,CACvC,GAAIN,EAAQ,gBAAiB,CAC3B,IAAMO,EAAaC,EAAkBF,EAAOV,EAAO,SAAS,EACtDa,EAAcZ,EAAM,IAAI,UAC5BU,EAAW,EAAIX,EAAO,UAAY,EAClCW,EAAW,EAAIX,EAAO,UAAY,EAClCA,EAAO,UACPA,EAAO,UACPN,GAAe,EACf,EACF,EACAmB,EAAY,eAAe,EAC3BA,EAAY,GAAG,YAAa,IAAM,CAChC,QAAQ,IAAI,UAAWA,CAAW,CACpC,CAAC,EACDR,EAAa,IAAIK,EAAOG,CAAW,EAGjCT,EAAQ,qBACV,QAAQ,IAAI,6BAA8BC,EAAa,IAAI,CAE/D,CAAC,EAEDL,EAAO,eAAe,UAAWU,GAAU,CACrCN,EAAQ,kBACVC,EAAa,IAAIK,CAAK,GAAG,QAAQ,EACjCL,EAAa,OAAOK,CAAK,GAGvBN,EAAQ,qBACV,QAAQ,IAAI,6BAA8BC,EAAa,IAAI,CAE/D,CAAC,CACH","names":["deferred","tween","config","options","resolve","promise","targets","removeAllTweens","gameObject","tweenManager","mod","a","b","ZERO_VECTOR","cornerTileCoordsFromRegionCoords","regionCoords","regionLength","tileCoords","regionCoord","topLeft","topRight","bottomLeft","bottomRight","isTileInArea","tileCoord","area","coordEq","a","b","addCoords","pixelToChunkCoord","pixelCoord","chunkSize","chunkToPixelCoord","chunkCoord","pixelCoordToTileCoord","tileWidth","tileHeight","tileCoordToPixelCoord","tileCoordToChunkCoord","chunkCoordToTileCoord","deferred","load","scene","callback","loader","resolve","promise","CoordMap","getChunksInArea","area","chunkSize","topLeft","bottomRight","topLeftChunk","pixelToChunkCoord","bottomRightChunk","numChunksX","numChunksY","chunksInArea","CoordMap","x","y","getObjectsInArea","groups","area","ids","group","object","x","generateFrames","anims","animation","SpritePipeline","HueTintAndOutlineFXPipeline","game","obj","hueTint","outline","outlineColor","tintColor","_outlineColor","renderTarget","__publicField","MultiHueTintPipeline","game","__publicField","defineScene","options","preload","create","update","key","renderer","HueTintAndOutlineFXPipeline","MultiHueTintPipeline","definePhaserConfig","options","AssetType","GameObjectClasses","map","Subject","CoordMap","subtract","createChunks","worldView$","chunkSize","padding","visibleChunks","addedChunks$","Subject","removedChunks$","map","x","y","width","height","getChunksInArea","newVisibleChunks","added","coord","removed","Gesture","BehaviorSubject","filter","map","sampleTime","scan","Subject","throttleTime","createCamera","phaserCamera","options","e","worldView$","BehaviorSubject","zoom$","wheelStream$","Subject","pinchStream$","gesture","Gesture","state","onResize","setZoom","zoom","pinchSub","throttleTime","map","scaledDelta","scan","acc","curr","wheelSub","filter","sampleTime","movement","m","x","y","ignore","objectPool","centerOnCoord","tileCoord","tileWidth","tileHeight","pixelCoord","tileCoordToPixelCoord","centerOn","setScroll","computed","observe","reaction","from","map","mergeMap","pipe","filterNullish","CoordMap","createRegistry","coordToIds","idToCoord","get","coord","set","id","prevCoord","remove","createCulling","objectPool","camera","chunks","chunkRegistry","disposer","chunkToEntity","pipe","map","chunk","from","mergeMap","entities","entityId","filterNullish","addedChunkSub","entity","removedChunkSub","trackEntity","computed","pixelToChunkCoord","coordEq","dispose","reaction","newChunk","disposeObjectPoolObserver","observe","change","d","observable","runInAction","defineAssetsConfig","assets","defineMapConfig","config","defineSceneConfig","defineScaleConfig","defineCameraConfig","isSprite","gameObject","type","isRectangle","createEmbodiedEntity","id","group","type","currentCameraFilter","position","observable","onOnce","onUpdate","activeGameObject","cameraFilter","trackPositionUpdates","func","modifiesPosition","gameObject","runInAction","setComponent","now","once","update","newPosition","hasComponent","removeComponent","stop","reset","executeGameObjectFunctions","isSprite","removeAllTweens","isRectangle","setCameraFilter","filter","spawn","despawn","functions","gameObjectProxy","_","prop","x","y","value","observable","mapObject","isGameObjectType","GameObjectClasses","createObjectPool","scene","groups","mapObject","classType","objects","observable","cameraFilter","get","entity","type","embodiedEntity","createEmbodiedEntity","remove","object","ignoreCamera","cameraId","ignore","CoordMap","pickRandom","createChunkedTilemap","params","scene","tilesets","layerConfig","chunks","backgroundTile","tiles","tileWidth","tileHeight","relevantTilesets","key","mod","maps","CoordMap","chunkTileSize","disposer","visible","chunk","renderChunk","addedChunkSub","removedChunkSub","destroyChunk","createLayers","map","x","y","width","height","layers","layer","tilemapLayer","id","renderer","MultiHueTintPipeline","createMap","chunkCoord","data","tileset","topLeft","chunkToPixelCoord","defaultLayer","getMapAtChunkCoord","getMapAtTileCoord","tileCoord","tileCoordToChunkCoord","force","putTileAt","coord","tile","tint","putTile","topLeftCoord","chunkCoordToTileCoord","defaultIndex","index","dispose","d","size","setVisible","v","CoordMap","createVirtualTilemap","config","chunks","layers","defaultLayer","tileWidth","tileHeight","tiles","layerKey","CoordMap","chunkedTilemap","createChunkedTilemap","putTileAt","coord","tile","layer","tint","chunk","tileCoordToChunkCoord","CoordMap","createAnimatedTilemap","config","layers","defaultLayer","animationInterval","scene","defaultLayerKey","lastStep","animations","animatedTiles","layerKey","CoordMap","pausedAnimations","virtualTilemap","createVirtualTilemap","registerAnimation","animationKey","frames","putAnimationAt","coord","layer","removeAnimationAt","animation","pauseAnimationAt","resumeAnimationAt","animationStep","mod","currentFrame","update","time","dispose","bufferCount","distinctUntilChanged","filter","fromEvent","map","merge","pairwise","scan","Subject","throttleTime","observable","reaction","runInAction","filterNullish","createInput","inputPlugin","disposers","enabled","disableInput","enableInput","setCursor","cursor","keyboard$","pointermove$","pointerdown$","event","pointerup$","click$","prev","now","doubleClick$","rightClick$","pointer","drag$","acc","curr","area","pressedKeys","phaserKeyboard","codeToKey","key","addKey","keySub","keyName","pointerSub","keyObj","keyEvent","onKeyPress","keySelector","callback","disposer","passes","dispose","deferred","createPhaserEngine","options","scale","sceneConfig","cameraConfig","cullingChunkSize","sceneConstructors","key","preload","create","update","defineScene","phaserConfig","definePhaserConfig","game","resolve","promise","resize","width","height","partialScenes","phaserScene","config","assetKey","asset","load","loader","objectPool","createObjectPool","camera","createCamera","cullingChunks","createChunks","culling","createCulling","anim","generateFrames","emptyMap","partialTilesets","tilesetKey","tileWidth","tileHeight","tileset","tilesets","partialMaps","mapKey","layers","backgroundTile","animationInterval","tileAnimations","chunkSize","chunks","map","createAnimatedTilemap","frames","maps","input","createInput","scenes","scene","CoordMap","getRandomColor","red","green","blue","createDebugger","camera","chunks","scene","objectPool","map","options","visualChunks","worldViewRect","worldView","acc","curr","chunk","pixelCoord","chunkToPixelCoord","visualChunk"]} \ No newline at end of file diff --git a/packages/phaserx/package.json b/packages/phaserx/package.json index 8b384f5cf5..442f776bcc 100644 --- a/packages/phaserx/package.json +++ b/packages/phaserx/package.json @@ -2,4 +2,4 @@ "name": "@latticexyz/phaserx", "version": "2.0.0", "private": true -} \ No newline at end of file +} From 9f23b8a1efe8e4eeb15232c19ade30ce9e50091b Mon Sep 17 00:00:00 2001 From: Dhvani Patel Date: Thu, 14 Mar 2024 13:43:50 +0000 Subject: [PATCH 10/32] fix: noise package --- e2e/packages/client-vanilla/.env | 1 - examples/minimal/packages/client-phaser/.env | 1 - examples/minimal/packages/client-react/.env | 1 - examples/minimal/packages/client-vanilla/.env | 1 - examples/minimal/packages/contracts/.env | 11 - .../cli/src/utils/defaultModuleContracts.ts | 1 + packages/noise/.gitignore | 24 + packages/noise/.npmignore | 11 + packages/noise/README.md | 3 + packages/noise/asconfig.json | 22 + packages/noise/assembly/index.ts | 1 + packages/noise/assembly/perlin.ts | 119 ++ packages/noise/assembly/tsconfig.json | 4 + packages/noise/build/release.wasm | Bin 3251 -> 0 bytes packages/noise/build/release.wat | 468 ------ packages/noise/contracts/Perlin.sol | 1341 +++++++++++++++++ packages/noise/dist/index.d.ts | 7 - packages/noise/foundry.toml | 14 + packages/noise/hardhat.config.cts | 11 + packages/noise/modules.d.ts | 1 + packages/noise/package.json | 1 + packages/noise/remappings.txt | 3 + packages/noise/test/forge/Perlin.t.sol | 19 + packages/noise/test/hardhat/keccak.spec.ts | 35 + packages/noise/test/hardhat/perlin.spec.ts | 112 ++ packages/noise/ts/index.ts | 11 +- packages/noise/tsconfig.json | 18 + packages/noise/tsup.config.ts | 2 +- packages/noise/web/index.html | 53 + packages/noise/web/sol_perlin.json | 1 + packages/noise/web/wasm_perlin.json | 1 + packages/store-indexer/bin/parseEnv.ts | 2 +- .../bin/postgres-decoded-indexer.ts | 123 +- packages/store-indexer/bin/sqlite-indexer.ts | 182 +-- packages/world-modules/src/index.sol | 2 +- .../src/modules/haskeys/HasKeysModule.sol | 14 +- .../src/modules/haskeys/tables/HasKeys.sol | 57 +- templates/phaser/packages/client/.env | 1 - templates/phaser/packages/contracts/.env | 11 - templates/react-ecs/packages/client/.env | 1 - templates/react-ecs/packages/contracts/.env | 11 - templates/react/packages/client/.env | 1 - templates/react/packages/contracts/.env | 11 - templates/threejs/packages/client/.env | 1 - templates/threejs/packages/contracts/.env | 11 - templates/vanilla/packages/client/.env | 1 - templates/vanilla/packages/contracts/.env | 11 - 47 files changed, 1942 insertions(+), 796 deletions(-) delete mode 100644 e2e/packages/client-vanilla/.env delete mode 100644 examples/minimal/packages/client-phaser/.env delete mode 100644 examples/minimal/packages/client-react/.env delete mode 100644 examples/minimal/packages/client-vanilla/.env delete mode 100644 examples/minimal/packages/contracts/.env create mode 100644 packages/noise/.gitignore create mode 100644 packages/noise/.npmignore create mode 100644 packages/noise/README.md create mode 100644 packages/noise/asconfig.json create mode 100644 packages/noise/assembly/index.ts create mode 100644 packages/noise/assembly/perlin.ts create mode 100644 packages/noise/assembly/tsconfig.json delete mode 100644 packages/noise/build/release.wasm delete mode 100644 packages/noise/build/release.wat create mode 100644 packages/noise/contracts/Perlin.sol delete mode 100644 packages/noise/dist/index.d.ts create mode 100644 packages/noise/foundry.toml create mode 100644 packages/noise/hardhat.config.cts create mode 100644 packages/noise/modules.d.ts create mode 100644 packages/noise/remappings.txt create mode 100644 packages/noise/test/forge/Perlin.t.sol create mode 100644 packages/noise/test/hardhat/keccak.spec.ts create mode 100644 packages/noise/test/hardhat/perlin.spec.ts create mode 100644 packages/noise/tsconfig.json create mode 100644 packages/noise/web/index.html create mode 100644 packages/noise/web/sol_perlin.json create mode 100644 packages/noise/web/wasm_perlin.json delete mode 100644 templates/phaser/packages/client/.env delete mode 100644 templates/phaser/packages/contracts/.env delete mode 100644 templates/react-ecs/packages/client/.env delete mode 100644 templates/react-ecs/packages/contracts/.env delete mode 100644 templates/react/packages/client/.env delete mode 100644 templates/react/packages/contracts/.env delete mode 100644 templates/threejs/packages/client/.env delete mode 100644 templates/threejs/packages/contracts/.env delete mode 100644 templates/vanilla/packages/client/.env delete mode 100644 templates/vanilla/packages/contracts/.env diff --git a/e2e/packages/client-vanilla/.env b/e2e/packages/client-vanilla/.env deleted file mode 100644 index 3528db8807..0000000000 --- a/e2e/packages/client-vanilla/.env +++ /dev/null @@ -1 +0,0 @@ -VITE_CHAIN_ID=31337 diff --git a/examples/minimal/packages/client-phaser/.env b/examples/minimal/packages/client-phaser/.env deleted file mode 100644 index 3528db8807..0000000000 --- a/examples/minimal/packages/client-phaser/.env +++ /dev/null @@ -1 +0,0 @@ -VITE_CHAIN_ID=31337 diff --git a/examples/minimal/packages/client-react/.env b/examples/minimal/packages/client-react/.env deleted file mode 100644 index 3528db8807..0000000000 --- a/examples/minimal/packages/client-react/.env +++ /dev/null @@ -1 +0,0 @@ -VITE_CHAIN_ID=31337 diff --git a/examples/minimal/packages/client-vanilla/.env b/examples/minimal/packages/client-vanilla/.env deleted file mode 100644 index 3528db8807..0000000000 --- a/examples/minimal/packages/client-vanilla/.env +++ /dev/null @@ -1 +0,0 @@ -VITE_CHAIN_ID=31337 diff --git a/examples/minimal/packages/contracts/.env b/examples/minimal/packages/contracts/.env deleted file mode 100644 index f1bf437dd4..0000000000 --- a/examples/minimal/packages/contracts/.env +++ /dev/null @@ -1,11 +0,0 @@ -# This .env file is for demonstration purposes only. -# -# This should usually be excluded via .gitignore and the env vars attached to -# your deployment enviroment, but we're including this here for ease of local -# development. Please do not commit changes to this file! -# -# Anvil default private key: -PRIVATE_KEY=0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 -FAUCET_PRIVATE_KEY=0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 -RPC_HTTP_URL=http://127.0.0.1:8545 -DEBUG=mud:* diff --git a/packages/cli/src/utils/defaultModuleContracts.ts b/packages/cli/src/utils/defaultModuleContracts.ts index c23809831e..f4e85efae9 100644 --- a/packages/cli/src/utils/defaultModuleContracts.ts +++ b/packages/cli/src/utils/defaultModuleContracts.ts @@ -27,6 +27,7 @@ export const defaultModuleContracts = [ name: "HasKeysModule", abi: HasKeysModuleData.abi as Abi, bytecode: HasKeysModuleData.bytecode.object as Hex, + placeholders: findPlaceholders(HasKeysModuleData.bytecode.linkReferences), deployedBytecodeSize: size(HasKeysModuleData.deployedBytecode.object as Hex), }, { diff --git a/packages/noise/.gitignore b/packages/noise/.gitignore new file mode 100644 index 0000000000..c58060e790 --- /dev/null +++ b/packages/noise/.gitignore @@ -0,0 +1,24 @@ +node_modules +.env +coverage +coverage.json + +#Hardhat files +cache +artifacts + + +node_modules +.env +coverage +coverage.json + +#Hardhat files +cache +artifacts + +yarn-error.log + +out +dist +build \ No newline at end of file diff --git a/packages/noise/.npmignore b/packages/noise/.npmignore new file mode 100644 index 0000000000..458dc7ae95 --- /dev/null +++ b/packages/noise/.npmignore @@ -0,0 +1,11 @@ +* + +!ts/** +!dist/** +!build/** +!contracts/** +!out/** +!assembly/** +!package.json +!README.md +!CHANGELOG.md diff --git a/packages/noise/README.md b/packages/noise/README.md new file mode 100644 index 0000000000..022861046d --- /dev/null +++ b/packages/noise/README.md @@ -0,0 +1,3 @@ +# Noise + +Matching Perlin noise implementations in Solidity and AssemblyScript diff --git a/packages/noise/asconfig.json b/packages/noise/asconfig.json new file mode 100644 index 0000000000..e50a76c616 --- /dev/null +++ b/packages/noise/asconfig.json @@ -0,0 +1,22 @@ +{ + "targets": { + "debug": { + "outFile": "build/debug.wasm", + "textFile": "build/debug.wat", + "sourceMap": true, + "debug": true + }, + "release": { + "outFile": "build/release.wasm", + "textFile": "build/release.wat", + "sourceMap": true, + "optimizeLevel": 3, + "shrinkLevel": 0, + "converge": false, + "noAssert": false + } + }, + "options": { + "bindings": "esm" + } +} diff --git a/packages/noise/assembly/index.ts b/packages/noise/assembly/index.ts new file mode 100644 index 0000000000..b7fcaab287 --- /dev/null +++ b/packages/noise/assembly/index.ts @@ -0,0 +1 @@ +export { perlin } from "./perlin"; diff --git a/packages/noise/assembly/perlin.ts b/packages/noise/assembly/perlin.ts new file mode 100644 index 0000000000..102d433b0b --- /dev/null +++ b/packages/noise/assembly/perlin.ts @@ -0,0 +1,119 @@ +// Ported from perlin reference implementation (https://cs.nyu.edu/~perlin/noise/) + +export function perlin(_x: i32, _y: i32, _z: i32, denom: i32): f64 { + // Convert fraction into f64 + let x: f64 = f64(_x) / f64(denom); + let y: f64 = f64(_y) / f64(denom); + let z: f64 = f64(_z) / f64(denom); + + // Find unit cube that contains point + const X: i32 = i32(Math.floor(x)) & 255; + const Y: i32 = i32(Math.floor(y)) & 255; + const Z: i32 = i32(Math.floor(z)) & 255; + + // Find relative x,y,z of point in cube + x -= Math.floor(x); + y -= Math.floor(y); + z -= Math.floor(z); + + // Compute fade curves for each x,y,z + const u: f64 = fade(x); + const v: f64 = fade(y); + const w: f64 = fade(z); + + // Hash coordinates of the 8 cube corners + const A: i32 = p[X] + Y; + const AA: i32 = p[A] + Z; + const AB: i32 = p[A + 1] + Z; + const B: i32 = p[X + 1] + Y; + const BA: i32 = p[B] + Z; + const BB: i32 = p[B + 1] + Z; + + // Add blended results from 8 corners of cube + const r: f64 = lerp( + w, + lerp( + v, + lerp(u, grad(p[AA], x, y, z), grad(p[BA], x - 1, y, z)), + lerp(u, grad(p[AB], x, y - 1, z), grad(p[BB], x - 1, y - 1, z)), + ), + lerp( + v, + lerp(u, grad(p[AA + 1], x, y, z - 1), grad(p[BA + 1], x - 1, y, z - 1)), + lerp(u, grad(p[AB + 1], x, y - 1, z - 1), grad(p[BB + 1], x - 1, y - 1, z - 1)), + ), + ); + + // Shift to range from 0 to 1 + return (r + 1) / 2; +} + +function fade(t: f64): f64 { + return t * t * t * (t * (t * 6 - 15) + 10); +} + +function lerp(t: f64, a: f64, b: f64): f64 { + return a + t * (b - a); +} + +function grad(hash: i32, x: f64, y: f64, z: f64): f64 { + switch (hash & 0xf) { + case 0x0: + return x + y; + case 0x1: + return -x + y; + case 0x2: + return x - y; + case 0x3: + return -x - y; + case 0x4: + return x + z; + case 0x5: + return -x + z; + case 0x6: + return x - z; + case 0x7: + return -x - z; + case 0x8: + return y + z; + case 0x9: + return -y + z; + case 0xa: + return y - z; + case 0xb: + return -y - z; + case 0xc: + return y + x; + case 0xd: + return -y + z; + case 0xe: + return y - x; + case 0xf: + return -y - z; + default: + return 0; // never happens + } +} + +const p: i32[] = [ + 151, 160, 137, 91, 90, 15, 131, 13, 201, 95, 96, 53, 194, 233, 7, 225, 140, 36, 103, 30, 69, 142, 8, 99, 37, 240, 21, + 10, 23, 190, 6, 148, 247, 120, 234, 75, 0, 26, 197, 62, 94, 252, 219, 203, 117, 35, 11, 32, 57, 177, 33, 88, 237, 149, + 56, 87, 174, 20, 125, 136, 171, 168, 68, 175, 74, 165, 71, 134, 139, 48, 27, 166, 77, 146, 158, 231, 83, 111, 229, + 122, 60, 211, 133, 230, 220, 105, 92, 41, 55, 46, 245, 40, 244, 102, 143, 54, 65, 25, 63, 161, 1, 216, 80, 73, 209, + 76, 132, 187, 208, 89, 18, 169, 200, 196, 135, 130, 116, 188, 159, 86, 164, 100, 109, 198, 173, 186, 3, 64, 52, 217, + 226, 250, 124, 123, 5, 202, 38, 147, 118, 126, 255, 82, 85, 212, 207, 206, 59, 227, 47, 16, 58, 17, 182, 189, 28, 42, + 223, 183, 170, 213, 119, 248, 152, 2, 44, 154, 163, 70, 221, 153, 101, 155, 167, 43, 172, 9, 129, 22, 39, 253, 19, 98, + 108, 110, 79, 113, 224, 232, 178, 185, 112, 104, 218, 246, 97, 228, 251, 34, 242, 193, 238, 210, 144, 12, 191, 179, + 162, 241, 81, 51, 145, 235, 249, 14, 239, 107, 49, 192, 214, 31, 181, 199, 106, 157, 184, 84, 204, 176, 115, 121, 50, + 45, 127, 4, 150, 254, 138, 236, 205, 93, 222, 114, 67, 29, 24, 72, 243, 141, 128, 195, 78, 66, 215, 61, 156, 180, 151, + 160, 137, 91, 90, 15, 131, 13, 201, 95, 96, 53, 194, 233, 7, 225, 140, 36, 103, 30, 69, 142, 8, 99, 37, 240, 21, 10, + 23, 190, 6, 148, 247, 120, 234, 75, 0, 26, 197, 62, 94, 252, 219, 203, 117, 35, 11, 32, 57, 177, 33, 88, 237, 149, 56, + 87, 174, 20, 125, 136, 171, 168, 68, 175, 74, 165, 71, 134, 139, 48, 27, 166, 77, 146, 158, 231, 83, 111, 229, 122, + 60, 211, 133, 230, 220, 105, 92, 41, 55, 46, 245, 40, 244, 102, 143, 54, 65, 25, 63, 161, 1, 216, 80, 73, 209, 76, + 132, 187, 208, 89, 18, 169, 200, 196, 135, 130, 116, 188, 159, 86, 164, 100, 109, 198, 173, 186, 3, 64, 52, 217, 226, + 250, 124, 123, 5, 202, 38, 147, 118, 126, 255, 82, 85, 212, 207, 206, 59, 227, 47, 16, 58, 17, 182, 189, 28, 42, 223, + 183, 170, 213, 119, 248, 152, 2, 44, 154, 163, 70, 221, 153, 101, 155, 167, 43, 172, 9, 129, 22, 39, 253, 19, 98, 108, + 110, 79, 113, 224, 232, 178, 185, 112, 104, 218, 246, 97, 228, 251, 34, 242, 193, 238, 210, 144, 12, 191, 179, 162, + 241, 81, 51, 145, 235, 249, 14, 239, 107, 49, 192, 214, 31, 181, 199, 106, 157, 184, 84, 204, 176, 115, 121, 50, 45, + 127, 4, 150, 254, 138, 236, 205, 93, 222, 114, 67, 29, 24, 72, 243, 141, 128, 195, 78, 66, 215, 61, 156, 180, +]; diff --git a/packages/noise/assembly/tsconfig.json b/packages/noise/assembly/tsconfig.json new file mode 100644 index 0000000000..798b474eab --- /dev/null +++ b/packages/noise/assembly/tsconfig.json @@ -0,0 +1,4 @@ +{ + "extends": "assemblyscript/std/assembly.json", + "include": ["./**/*.ts"] +} diff --git a/packages/noise/build/release.wasm b/packages/noise/build/release.wasm deleted file mode 100644 index 90efce1141faca0dd119a0339a938f4d1e28e711..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3251 zcmajicX$(J9KiAS?y{O|)38(Ko3zSq#le!%QxK4iEE!6HfGu>8GPO`pTns@$rL|xi zPyvxGWp6~WPKKb!UW&2=2h;DRY2hCqFZtxXyzlS*z2olkJP}EmsfrLnsb(2q$>tCP zlx!uN^Q^2aC9Akj$x@>f&7U^fnlvyyFj5H3qA99o)fA!F9K;(%If`yCr`j_7f#Jz% zLbIj%Q_}ulE+vcV_XqN9k&p=vD2)lT^*UiiN0PD zYU2OB2#+4&ato$mvD)m82&Wzy<%)LeQjuzYv@TVt6j1OjROE(BshN#hNuw5S43%n0 zW2g(?%tkdgTuP<5XSgwxJ>1wzgbzL6syefj>{ww~hQ$erqL{WU_*jl&%*<5`UgnBp zh0kS(hAi4;Z1tF>D3n^E&obX<&GXrAs>U5&xKc^+YNRdhr4gZq zA}o2nh;W3O;&t7PFq9NC=-ytUxQSauH;ewgR71+NGnwXO|Wk zQQ&j9Rj;+Qqg6VkGZ=bHXLw^giNWw${MP)E)40U^pf5ryBrS=%v?bqXF>||BX)Orm zdu^p@&80GIIE@)-HN(8@Wq1iTI@*JwcWK;z4;(3V86nLrwy-91K%D_u9HZXN=_=lZ z(0cC~+Qz_9r2|Kihzo1(vpIPhWt5r5UK*j5q+$2y>MU*0r9(P`p|^DW-)50Jl09J7 zC4+_1NvAn+yZK=*p=6pZOU{n940WM7KkTce#P{ z@jCjV52EoBqVNTt#Q;2l?f3Sv-YwoW}ELhP`+hXK)zF=!e>9gm_#-EnLMA%s@jJh(SvfK*2$DK|6eh z4w#G$_!dv2EEeH&?8K{h5&TArjd&kDu>gaSiqG%~)yV@z;$Hd1z52M_hS}D zV*>7=8+u?LzQNac6ep1YH=3dh)?gE=q7IIt5R0)NWAHcTKt(;|Vm_Y0&&Yuv@8KiV z#S%nd5-Or5ZlN3oVmQ*!86$8E=dcp%kb&p$BmP7ZPT>Z8xPooCfbTIAk=TM&2;wrj z;vu|=^Y{lYT*NRmz*ZbU4Sb5-NWomJMRycoIWjR0528M@VZl4NjVbsIU!gyaAb`hF z4IZ?`ADE7b*nv)X3_qYb@~|53A|J1#FZv)FFChwF;8_g7BiN2#V8?MxLmY;pI$Glm zI4}tJ;SwsqiAvZE8)oA#jK!~L5A&#uU1))4a1%e_ON>G+bVxM83V6{QzvFE*MlUQy zd5p(v_!tY(3d`^$K0q71f~j}_Rq!D?;w{X>Sv-YwoW}ELhP`+hXK)zF=!e>9gm_#- zEnLMA%s@jJh(SvfK*2$DK|6eh4w#G$_!dv2EEeH&?8K{h5hJk?@1rLcU@%hg89u>! zXh_7vID`|pjx4+YEB4@i%))3)z#Vi$5A4G?_!^JmBog38QB`rsE1t4#}oJ&Iq>5>e1y7Kf(T4PMbyMCl*2#_M;ba~1dibxR$?78@Em@`pGd+f z+<*^PuniaRJ!T>jTd)d2Tt-(sgg0>>|G2Q)_>RtsZ^M_1|zW35N8s8M5H zImvLQ&?Br0<1iu3gmKQJ*EMg>IJ9GH2Xjfr3dzGTikr?XhwvF-Bh&aX@Czd^CX{+% zjP5o2RmKD^OEQ-yfv7+zb{r4KNERLE&P*Q_807Dml#!8~Hnc~#4rSvL0{-Ftq)dPO M82+lnrzU0m3na$VW&i*H diff --git a/packages/noise/build/release.wat b/packages/noise/build/release.wat deleted file mode 100644 index b5e4b15e78..0000000000 --- a/packages/noise/build/release.wat +++ /dev/null @@ -1,468 +0,0 @@ -(module - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_f64_f64_f64_=>_f64 (func (param i32 f64 f64 f64) (result f64))) - (type $i32_i32_i32_i32_=>_f64 (func (param i32 i32 i32 i32) (result f64))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 19660)) - (memory $0 1) - (data (i32.const 1036) "\1c\08") - (data (i32.const 1053) "\08\00\00\97\00\00\00\a0\00\00\00\89\00\00\00[\00\00\00Z\00\00\00\0f\00\00\00\83\00\00\00\r\00\00\00\c9\00\00\00_\00\00\00`\00\00\005\00\00\00\c2\00\00\00\e9\00\00\00\07\00\00\00\e1\00\00\00\8c\00\00\00$\00\00\00g\00\00\00\1e\00\00\00E\00\00\00\8e\00\00\00\08\00\00\00c\00\00\00%\00\00\00\f0\00\00\00\15\00\00\00\n\00\00\00\17\00\00\00\be\00\00\00\06\00\00\00\94\00\00\00\f7\00\00\00x\00\00\00\ea\00\00\00K\00\00\00\00\00\00\00\1a\00\00\00\c5\00\00\00>\00\00\00^\00\00\00\fc\00\00\00\db\00\00\00\cb\00\00\00u\00\00\00#\00\00\00\0b\00\00\00 \00\00\009\00\00\00\b1\00\00\00!\00\00\00X\00\00\00\ed\00\00\00\95\00\00\008\00\00\00W\00\00\00\ae\00\00\00\14\00\00\00}\00\00\00\88\00\00\00\ab\00\00\00\a8\00\00\00D\00\00\00\af\00\00\00J\00\00\00\a5\00\00\00G\00\00\00\86\00\00\00\8b\00\00\000\00\00\00\1b\00\00\00\a6\00\00\00M\00\00\00\92\00\00\00\9e\00\00\00\e7\00\00\00S\00\00\00o\00\00\00\e5\00\00\00z\00\00\00<\00\00\00\d3\00\00\00\85\00\00\00\e6\00\00\00\dc\00\00\00i\00\00\00\\\00\00\00)\00\00\007\00\00\00.\00\00\00\f5\00\00\00(\00\00\00\f4\00\00\00f\00\00\00\8f\00\00\006\00\00\00A\00\00\00\19\00\00\00?\00\00\00\a1\00\00\00\01\00\00\00\d8\00\00\00P\00\00\00I\00\00\00\d1\00\00\00L\00\00\00\84\00\00\00\bb\00\00\00\d0\00\00\00Y\00\00\00\12\00\00\00\a9\00\00\00\c8\00\00\00\c4\00\00\00\87\00\00\00\82\00\00\00t\00\00\00\bc\00\00\00\9f\00\00\00V\00\00\00\a4\00\00\00d\00\00\00m\00\00\00\c6\00\00\00\ad\00\00\00\ba\00\00\00\03\00\00\00@\00\00\004\00\00\00\d9\00\00\00\e2\00\00\00\fa\00\00\00|\00\00\00{\00\00\00\05\00\00\00\ca\00\00\00&\00\00\00\93\00\00\00v\00\00\00~\00\00\00\ff\00\00\00R\00\00\00U\00\00\00\d4\00\00\00\cf\00\00\00\ce\00\00\00;\00\00\00\e3\00\00\00/\00\00\00\10\00\00\00:\00\00\00\11\00\00\00\b6\00\00\00\bd\00\00\00\1c\00\00\00*\00\00\00\df\00\00\00\b7\00\00\00\aa\00\00\00\d5\00\00\00w\00\00\00\f8\00\00\00\98\00\00\00\02\00\00\00,\00\00\00\9a\00\00\00\a3\00\00\00F\00\00\00\dd\00\00\00\99\00\00\00e\00\00\00\9b\00\00\00\a7\00\00\00+\00\00\00\ac\00\00\00\t\00\00\00\81\00\00\00\16\00\00\00\'\00\00\00\fd\00\00\00\13\00\00\00b\00\00\00l\00\00\00n\00\00\00O\00\00\00q\00\00\00\e0\00\00\00\e8\00\00\00\b2\00\00\00\b9\00\00\00p\00\00\00h\00\00\00\da\00\00\00\f6\00\00\00a\00\00\00\e4\00\00\00\fb\00\00\00\"\00\00\00\f2\00\00\00\c1\00\00\00\ee\00\00\00\d2\00\00\00\90\00\00\00\0c\00\00\00\bf\00\00\00\b3\00\00\00\a2\00\00\00\f1\00\00\00Q\00\00\003\00\00\00\91\00\00\00\eb\00\00\00\f9\00\00\00\0e\00\00\00\ef\00\00\00k\00\00\001\00\00\00\c0\00\00\00\d6\00\00\00\1f\00\00\00\b5\00\00\00\c7\00\00\00j\00\00\00\9d\00\00\00\b8\00\00\00T\00\00\00\cc\00\00\00\b0\00\00\00s\00\00\00y\00\00\002\00\00\00-\00\00\00\7f\00\00\00\04\00\00\00\96\00\00\00\fe\00\00\00\8a\00\00\00\ec\00\00\00\cd\00\00\00]\00\00\00\de\00\00\00r\00\00\00C\00\00\00\1d\00\00\00\18\00\00\00H\00\00\00\f3\00\00\00\8d\00\00\00\80\00\00\00\c3\00\00\00N\00\00\00B\00\00\00\d7\00\00\00=\00\00\00\9c\00\00\00\b4\00\00\00\97\00\00\00\a0\00\00\00\89\00\00\00[\00\00\00Z\00\00\00\0f\00\00\00\83\00\00\00\r\00\00\00\c9\00\00\00_\00\00\00`\00\00\005\00\00\00\c2\00\00\00\e9\00\00\00\07\00\00\00\e1\00\00\00\8c\00\00\00$\00\00\00g\00\00\00\1e\00\00\00E\00\00\00\8e\00\00\00\08\00\00\00c\00\00\00%\00\00\00\f0\00\00\00\15\00\00\00\n\00\00\00\17\00\00\00\be\00\00\00\06\00\00\00\94\00\00\00\f7\00\00\00x\00\00\00\ea\00\00\00K\00\00\00\00\00\00\00\1a\00\00\00\c5\00\00\00>\00\00\00^\00\00\00\fc\00\00\00\db\00\00\00\cb\00\00\00u\00\00\00#\00\00\00\0b\00\00\00 \00\00\009\00\00\00\b1\00\00\00!\00\00\00X\00\00\00\ed\00\00\00\95\00\00\008\00\00\00W\00\00\00\ae\00\00\00\14\00\00\00}\00\00\00\88\00\00\00\ab\00\00\00\a8\00\00\00D\00\00\00\af\00\00\00J\00\00\00\a5\00\00\00G\00\00\00\86\00\00\00\8b\00\00\000\00\00\00\1b\00\00\00\a6\00\00\00M\00\00\00\92\00\00\00\9e\00\00\00\e7\00\00\00S\00\00\00o\00\00\00\e5\00\00\00z\00\00\00<\00\00\00\d3\00\00\00\85\00\00\00\e6\00\00\00\dc\00\00\00i\00\00\00\\\00\00\00)\00\00\007\00\00\00.\00\00\00\f5\00\00\00(\00\00\00\f4\00\00\00f\00\00\00\8f\00\00\006\00\00\00A\00\00\00\19\00\00\00?\00\00\00\a1\00\00\00\01\00\00\00\d8\00\00\00P\00\00\00I\00\00\00\d1\00\00\00L\00\00\00\84\00\00\00\bb\00\00\00\d0\00\00\00Y\00\00\00\12\00\00\00\a9\00\00\00\c8\00\00\00\c4\00\00\00\87\00\00\00\82\00\00\00t\00\00\00\bc\00\00\00\9f\00\00\00V\00\00\00\a4\00\00\00d\00\00\00m\00\00\00\c6\00\00\00\ad\00\00\00\ba\00\00\00\03\00\00\00@\00\00\004\00\00\00\d9\00\00\00\e2\00\00\00\fa\00\00\00|\00\00\00{\00\00\00\05\00\00\00\ca\00\00\00&\00\00\00\93\00\00\00v\00\00\00~\00\00\00\ff\00\00\00R\00\00\00U\00\00\00\d4\00\00\00\cf\00\00\00\ce\00\00\00;\00\00\00\e3\00\00\00/\00\00\00\10\00\00\00:\00\00\00\11\00\00\00\b6\00\00\00\bd\00\00\00\1c\00\00\00*\00\00\00\df\00\00\00\b7\00\00\00\aa\00\00\00\d5\00\00\00w\00\00\00\f8\00\00\00\98\00\00\00\02\00\00\00,\00\00\00\9a\00\00\00\a3\00\00\00F\00\00\00\dd\00\00\00\99\00\00\00e\00\00\00\9b\00\00\00\a7\00\00\00+\00\00\00\ac\00\00\00\t\00\00\00\81\00\00\00\16\00\00\00\'\00\00\00\fd\00\00\00\13\00\00\00b\00\00\00l\00\00\00n\00\00\00O\00\00\00q\00\00\00\e0\00\00\00\e8\00\00\00\b2\00\00\00\b9\00\00\00p\00\00\00h\00\00\00\da\00\00\00\f6\00\00\00a\00\00\00\e4\00\00\00\fb\00\00\00\"\00\00\00\f2\00\00\00\c1\00\00\00\ee\00\00\00\d2\00\00\00\90\00\00\00\0c\00\00\00\bf\00\00\00\b3\00\00\00\a2\00\00\00\f1\00\00\00Q\00\00\003\00\00\00\91\00\00\00\eb\00\00\00\f9\00\00\00\0e\00\00\00\ef\00\00\00k\00\00\001\00\00\00\c0\00\00\00\d6\00\00\00\1f\00\00\00\b5\00\00\00\c7\00\00\00j\00\00\00\9d\00\00\00\b8\00\00\00T\00\00\00\cc\00\00\00\b0\00\00\00s\00\00\00y\00\00\002\00\00\00-\00\00\00\7f\00\00\00\04\00\00\00\96\00\00\00\fe\00\00\00\8a\00\00\00\ec\00\00\00\cd\00\00\00]\00\00\00\de\00\00\00r\00\00\00C\00\00\00\1d\00\00\00\18\00\00\00H\00\00\00\f3\00\00\00\8d\00\00\00\80\00\00\00\c3\00\00\00N\00\00\00B\00\00\00\d7\00\00\00=\00\00\00\9c\00\00\00\b4") - (data (i32.const 3116) ",") - (data (i32.const 3128) "\03\00\00\00\10\00\00\00 \04\00\00 \04\00\00\00\08\00\00\00\02") - (data (i32.const 3164) "<") - (data (i32.const 3176) "\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 3228) ",") - (data (i32.const 3240) "\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (export "perlin" (func $assembly/perlin/perlin)) - (export "memory" (memory $0)) - (func $~lib/array/Array#__get (param $0 i32) (result i32) - local.get $0 - i32.const 3148 - i32.load $0 - i32.ge_u - if - i32.const 3184 - i32.const 3248 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - i32.const 3140 - i32.load $0 - local.get $0 - i32.const 2 - i32.shl - i32.add - i32.load $0 - ) - (func $assembly/perlin/grad (param $0 i32) (param $1 f64) (param $2 f64) (param $3 f64) (result f64) - block $case16|0 - block $case15|0 - block $case14|0 - block $case13|0 - block $case12|0 - block $case11|0 - block $case10|0 - block $case9|0 - block $case8|0 - block $case7|0 - block $case6|0 - block $case5|0 - block $case4|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $0 - i32.const 15 - i32.and - br_table $case0|0 $case1|0 $case2|0 $case3|0 $case4|0 $case5|0 $case6|0 $case7|0 $case8|0 $case9|0 $case10|0 $case11|0 $case12|0 $case13|0 $case14|0 $case15|0 $case16|0 - end - local.get $1 - local.get $2 - f64.add - return - end - local.get $2 - local.get $1 - f64.sub - return - end - local.get $1 - local.get $2 - f64.sub - return - end - local.get $1 - f64.neg - local.get $2 - f64.sub - return - end - local.get $1 - local.get $3 - f64.add - return - end - local.get $3 - local.get $1 - f64.sub - return - end - local.get $1 - local.get $3 - f64.sub - return - end - local.get $1 - f64.neg - local.get $3 - f64.sub - return - end - local.get $2 - local.get $3 - f64.add - return - end - local.get $3 - local.get $2 - f64.sub - return - end - local.get $2 - local.get $3 - f64.sub - return - end - local.get $2 - f64.neg - local.get $3 - f64.sub - return - end - local.get $2 - local.get $1 - f64.add - return - end - local.get $3 - local.get $2 - f64.sub - return - end - local.get $2 - local.get $1 - f64.sub - return - end - local.get $2 - f64.neg - local.get $3 - f64.sub - return - end - f64.const 0 - ) - (func $assembly/perlin/perlin (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result f64) - (local $4 f64) - (local $5 f64) - (local $6 f64) - (local $7 i32) - (local $8 f64) - (local $9 f64) - (local $10 f64) - (local $11 f64) - (local $12 f64) - (local $13 f64) - (local $14 f64) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3276 - i32.lt_s - if - i32.const 19680 - i32.const 19728 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $7 - i32.const 0 - i32.store $0 - local.get $7 - i32.const 3136 - i32.store $0 - local.get $0 - f64.convert_i32_s - local.get $3 - f64.convert_i32_s - local.tee $4 - f64.div - local.tee $5 - f64.floor - local.tee $6 - i32.trunc_sat_f64_s - i32.const 255 - i32.and - local.tee $0 - call $~lib/array/Array#__get - local.get $1 - f64.convert_i32_s - local.get $4 - f64.div - local.tee $8 - f64.floor - local.tee $9 - i32.trunc_sat_f64_s - i32.const 255 - i32.and - local.tee $1 - i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 3136 - i32.store $0 - local.get $3 - call $~lib/array/Array#__get - local.get $2 - f64.convert_i32_s - local.get $4 - f64.div - local.tee $4 - f64.floor - local.tee $10 - i32.trunc_sat_f64_s - i32.const 255 - i32.and - local.tee $2 - i32.add - local.set $7 - global.get $~lib/memory/__stack_pointer - i32.const 3136 - i32.store $0 - local.get $3 - i32.const 1 - i32.add - call $~lib/array/Array#__get - local.get $2 - i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 3136 - i32.store $0 - local.get $0 - i32.const 1 - i32.add - call $~lib/array/Array#__get - local.get $1 - i32.add - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 3136 - i32.store $0 - local.get $0 - call $~lib/array/Array#__get - local.get $2 - i32.add - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 3136 - i32.store $0 - local.get $0 - i32.const 1 - i32.add - call $~lib/array/Array#__get - local.get $2 - i32.add - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 3136 - i32.store $0 - local.get $7 - call $~lib/array/Array#__get - local.get $5 - local.get $6 - f64.sub - local.tee $11 - local.get $8 - local.get $9 - f64.sub - local.tee $8 - local.get $4 - local.get $10 - f64.sub - local.tee $9 - call $assembly/perlin/grad - local.set $5 - global.get $~lib/memory/__stack_pointer - i32.const 3136 - i32.store $0 - local.get $5 - local.get $11 - local.get $11 - f64.mul - local.get $11 - f64.mul - local.get $11 - local.get $11 - f64.const 6 - f64.mul - f64.const -15 - f64.add - f64.mul - f64.const 10 - f64.add - f64.mul - local.tee $10 - local.get $1 - call $~lib/array/Array#__get - local.get $11 - f64.const -1 - f64.add - local.tee $4 - local.get $8 - local.get $9 - call $assembly/perlin/grad - local.get $5 - f64.sub - f64.mul - f64.add - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 3136 - i32.store $0 - local.get $3 - call $~lib/array/Array#__get - local.get $11 - local.get $8 - f64.const -1 - f64.add - local.tee $5 - local.get $9 - call $assembly/perlin/grad - local.set $12 - global.get $~lib/memory/__stack_pointer - i32.const 3136 - i32.store $0 - local.get $6 - local.get $8 - local.get $8 - f64.mul - local.get $8 - f64.mul - local.get $8 - local.get $8 - f64.const 6 - f64.mul - f64.const -15 - f64.add - f64.mul - f64.const 10 - f64.add - f64.mul - local.tee $13 - local.get $12 - local.get $10 - local.get $0 - call $~lib/array/Array#__get - local.get $4 - local.get $5 - local.get $9 - call $assembly/perlin/grad - local.get $12 - f64.sub - f64.mul - f64.add - local.get $6 - f64.sub - f64.mul - f64.add - local.set $12 - global.get $~lib/memory/__stack_pointer - i32.const 3136 - i32.store $0 - local.get $7 - i32.const 1 - i32.add - call $~lib/array/Array#__get - local.get $11 - local.get $8 - local.get $9 - f64.const -1 - f64.add - local.tee $6 - call $assembly/perlin/grad - local.set $14 - global.get $~lib/memory/__stack_pointer - i32.const 3136 - i32.store $0 - local.get $14 - local.get $10 - local.get $1 - i32.const 1 - i32.add - call $~lib/array/Array#__get - local.get $4 - local.get $8 - local.get $6 - call $assembly/perlin/grad - local.get $14 - f64.sub - f64.mul - f64.add - local.set $8 - global.get $~lib/memory/__stack_pointer - i32.const 3136 - i32.store $0 - local.get $3 - i32.const 1 - i32.add - call $~lib/array/Array#__get - local.get $11 - local.get $5 - local.get $6 - call $assembly/perlin/grad - local.set $11 - global.get $~lib/memory/__stack_pointer - i32.const 3136 - i32.store $0 - local.get $12 - local.get $9 - local.get $9 - f64.mul - local.get $9 - f64.mul - local.get $9 - local.get $9 - f64.const 6 - f64.mul - f64.const -15 - f64.add - f64.mul - f64.const 10 - f64.add - f64.mul - local.get $8 - local.get $13 - local.get $11 - local.get $10 - local.get $0 - i32.const 1 - i32.add - call $~lib/array/Array#__get - local.get $4 - local.get $5 - local.get $6 - call $assembly/perlin/grad - local.get $11 - f64.sub - f64.mul - f64.add - local.get $8 - f64.sub - f64.mul - f64.add - local.get $12 - f64.sub - f64.mul - f64.add - f64.const 1 - f64.add - f64.const 0.5 - f64.mul - local.set $4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - ) -) diff --git a/packages/noise/contracts/Perlin.sol b/packages/noise/contracts/Perlin.sol new file mode 100644 index 0000000000..9c64b72c1f --- /dev/null +++ b/packages/noise/contracts/Perlin.sol @@ -0,0 +1,1341 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.8.24; + +import { ABDKMath64x64 as Math } from "abdk-libraries-solidity/ABDKMath64x64.sol"; + +// Commonly used numbers as 64.64 fixed point +int128 constant _1 = 2 ** 64; +int128 constant _2 = 2 * 2 ** 64; +int128 constant _6 = 6 * 2 ** 64; +int128 constant _10 = 10 * 2 ** 64; +int128 constant _15 = 15 * 2 ** 64; + +struct H { + int16 X; + int16 Y; + int16 Z; + int16 A; + int16 AA; + int16 AB; + int16 B; + int16 BA; + int16 BB; + int16 pX; + int16 pA; + int16 pB; + int16 pAA; + int16 pAB; + int16 pBA; + int16 pBB; + int128 x; + int128 y; + int128 z; + int128 u; + int128 v; + int128 w; + int128 r; +} + +struct H2 { + int16 X; + int16 Y; + int16 A; + int16 AA; + int16 AB; + int16 B; + int16 BA; + int16 BB; + int16 pX; + int16 pA; + int16 pB; + int128 x; + int128 y; + int128 u; + int128 r; +} + +/// @title Perlin noise library +/// @author alvarius +/// @notice Ported from perlin reference implementation (https://cs.nyu.edu/~perlin/noise/) +library Perlin { + function noise2d(int256 _x, int256 _y, int256 denom, uint8 precision) internal pure returns (int128) { + H2 memory h = H2(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + + // Convert fraction into 64.64 fixed point number + h.x = Math.divi(_x, denom); + h.y = Math.divi(_y, denom); + + // Find unit cube that contains point + h.X = int16(Math.toInt(h.x)) & 0xff; + h.Y = int16(Math.toInt(h.y)) & 0xff; + + // Find relative x,y,z of point in cube + h.x = Math.sub(h.x, floor(h.x)); + h.y = Math.sub(h.y, floor(h.y)); + + // Compute fade curves for each x,y,z + h.u = fade(h.x); + + // Hash coordinates of the 4 square corners + h.pX = p2(h.X); + h.A = i0(h.pX) + h.Y; + h.pA = p2(h.A); + h.AA = i0(h.pA); + h.AB = i1(h.pA); + h.B = i1(h.pX) + h.Y; + h.pB = p2(h.B); + h.BA = i0(h.pB); + h.BB = i1(h.pB); + + // Add blended results from 4 corners of square + h.r = lerp( + fade(h.y), + lerp(h.u, grad2d(int16(p(h.AA)), h.x, h.y), grad2d(int16(p(h.BA)), dec(h.x), h.y)), + lerp(h.u, grad2d(int16(p(h.AB)), h.x, dec(h.y)), grad2d(int16(p(h.BB)), dec(h.x), dec(h.y))) + ); + + // Shift to range from 0 to 1 + return Math.div(Math.add(h.r, _1), _2) >> (64 - precision); + } + + function noise(int256 _x, int256 _y, int256 _z, int256 denom, uint8 precision) internal pure returns (int128) { + H memory h = H(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + + // Convert fraction into 64.64 fixed point number + h.x = Math.divi(_x, denom); + h.y = Math.divi(_y, denom); + h.z = Math.divi(_z, denom); + + // Find unit cube that contains point + h.X = int16(Math.toInt(h.x)) & 255; + h.Y = int16(Math.toInt(h.y)) & 255; + h.Z = int16(Math.toInt(h.z)) & 255; + + // Find relative x,y,z of point in cube + h.x = Math.sub(h.x, floor(h.x)); + h.y = Math.sub(h.y, floor(h.y)); + h.z = Math.sub(h.z, floor(h.z)); + + // Compute fade curves for each x,y,z + h.u = fade(h.x); + h.v = fade(h.y); + h.w = fade(h.z); + + // Hash coordinates of the 8 cube corners + h.pX = p2(h.X); + h.A = i0(h.pX) + h.Y; + h.pA = p2(h.A); + h.AA = i0(h.pA) + h.Z; + h.AB = i1(h.pA) + h.Z; + h.B = i1(h.pX) + h.Y; + h.pB = p2(h.B); + h.BA = i0(h.pB) + h.Z; + h.BB = i1(h.pB) + h.Z; + h.pAA = p2(h.AA); + h.pAB = p2(h.AB); + h.pBA = p2(h.BA); + h.pBB = p2(h.BB); + + // Add blended results from 8 corners of cube + h.r = lerp( + h.w, + lerp( + h.v, + lerp(h.u, grad(i0(h.pAA), h.x, h.y, h.z), grad(i0(h.pBA), dec(h.x), h.y, h.z)), + lerp(h.u, grad(i0(h.pAB), h.x, dec(h.y), h.z), grad(i0(h.pBB), dec(h.x), dec(h.y), h.z)) + ), + lerp( + h.v, + lerp(h.u, grad(i1(h.pAA), h.x, h.y, dec(h.z)), grad(i1(h.pBA), dec(h.x), h.y, dec(h.z))), + lerp(h.u, grad(i1(h.pAB), h.x, dec(h.y), dec(h.z)), grad(i1(h.pBB), dec(h.x), dec(h.y), dec(h.z))) + ) + ); + + // Shift to range from 0 to 1 + return Math.div(Math.add(h.r, _1), _2) >> (64 - precision); + } + + function dec(int128 x) internal pure returns (int128) { + return Math.sub(x, _1); + } + + function floor(int128 x) internal pure returns (int128) { + return Math.fromInt(int256(Math.toInt(x))); + } + + /** + * Computes t * t * t * (t * (t * 6 - 15) + 10) + **/ + function fade(int128 t) internal pure returns (int128) { + return Math.mul(t, Math.mul(t, Math.mul(t, (Math.add(Math.mul(t, (Math.sub(Math.mul(t, _6), _15))), _10))))); + } + + /** + * Computes a + t * (b - a) + **/ + function lerp(int128 t, int128 a, int128 b) internal pure returns (int128) { + return Math.add(a, Math.mul(t, (Math.sub(b, a)))); + } + + /** + * Modified from original perlin paper based on http://riven8192.blogspot.com/2010/08/calculate-perlinnoise-twice-as-fast.html + **/ + function grad(int16 _hash, int128 x, int128 y, int128 z) internal pure returns (int128) { + // Convert lower 4 bits to hash code into 12 gradient directions + int16 h = _hash & 0xF; + + if (h <= 0x7) { + if (h <= 0x3) { + if (h <= 0x1) { + if (h == 0x0) return Math.add(x, y); + return Math.sub(y, x); + } else { + if (h == 0x2) return Math.sub(x, y); + return Math.sub(Math.neg(x), y); + } + } else { + if (h <= 0x5) { + if (h == 0x4) return Math.add(x, z); + return Math.sub(z, x); + } else { + if (h == 0x6) return Math.sub(x, z); + return Math.sub(Math.neg(x), z); + } + } + } else { + if (h <= 0xB) { + if (h <= 0x9) { + if (h == 0x8) return Math.add(y, z); + return Math.sub(z, y); + } else { + if (h == 0xA) return Math.sub(y, z); + return Math.sub(Math.neg(y), z); + } + } else { + if (h <= 0xD) { + if (h == 0xC) return Math.add(y, x); + return Math.add(Math.neg(y), z); + } else { + if (h == 0xE) return Math.sub(y, x); + return Math.sub(Math.neg(y), z); + } + } + } + } + + /** + * Modified from original perlin paper based on http://riven8192.blogspot.com/2010/08/calculate-perlinnoise-twice-as-fast.html + **/ + function grad2d(int16 _hash, int128 x, int128 y) internal pure returns (int128) { + // Convert lower 4 bits to hash code into 12 gradient directions + int16 h = _hash & 0xF; + if (h <= 0x7) { + if (h <= 0x3) { + if (h <= 0x1) { + if (h == 0x0) return Math.add(x, y); + return Math.sub(y, x); + } else { + if (h == 0x2) return Math.sub(x, y); + return Math.sub(Math.neg(x), y); + } + } else { + if (h <= 0x5) { + if (h == 0x4) return x; + return Math.neg(x); + } else { + if (h == 0x6) return x; + return Math.neg(x); + } + } + } else { + if (h <= 0xB) { + if (h <= 0x9) { + if (h == 0x8) return y; + return Math.neg(y); + } else { + if (h == 0xA) return y; + return Math.neg(y); + } + } else { + if (h <= 0xD) { + if (h == 0xC) return Math.add(y, x); + return Math.neg(y); + } else { + if (h == 0xE) return Math.sub(y, x); + return Math.neg(y); + } + } + } + } + + /** + * Returns the value at the given index from the ptable + */ + function p(int64 i) internal pure returns (int64) { + return int64(ptable(int256(i)) >> 8); + } + + /** + * Returns an encoded tuple of the value at the given index and the subsequent value from the ptable. + * Value of the requested index is at i0(result), subsequent value is at i1(result) + */ + function p2(int16 i) internal pure returns (int16) { + return int16(ptable(int256(i))); + } + + /** + * Helper function to access value at index 0 from the encoded tuple returned by p2 + */ + function i0(int16 tuple) internal pure returns (int16) { + return tuple >> 8; + } + + /** + * Helper function to access value at index 1 from the encoded tuple returned by p2 + */ + function i1(int16 tuple) internal pure returns (int16) { + return tuple & 0xff; + } + + /** + * From https://github.com/0x10f/solidity-perlin-noise/blob/master/contracts/PerlinNoise.sol + * + * @notice Gets a subsequent values in the permutation table at an index. The values are encoded + * into a single 16 bit integer with the value at the specified index being the most + * significant 8 bits and the subsequent value being the least significant 8 bits. + * + * @param i the index in the permutation table. + * + * @dev The values from the table are mapped out into a binary tree for faster lookups. + * Looking up any value in the table in this implementation is is O(8), in + * the implementation of sequential if statements it is O(255). + * + * @dev The body of this function is autogenerated. Check out the 'gen-ptable' script. + * (https://github.com/0x10f/solidity-perlin-noise/blob/master/scripts/gen-ptable.js) + */ + function ptable(int256 i) internal pure returns (int256) { + i &= 0xff; + + if (i <= 127) { + if (i <= 63) { + if (i <= 31) { + if (i <= 15) { + if (i <= 7) { + if (i <= 3) { + if (i <= 1) { + if (i == 0) { + return 38816; + } else { + return 41097; + } + } else { + if (i == 2) { + return 35163; + } else { + return 23386; + } + } + } else { + if (i <= 5) { + if (i == 4) { + return 23055; + } else { + return 3971; + } + } else { + if (i == 6) { + return 33549; + } else { + return 3529; + } + } + } + } else { + if (i <= 11) { + if (i <= 9) { + if (i == 8) { + return 51551; + } else { + return 24416; + } + } else { + if (i == 10) { + return 24629; + } else { + return 13762; + } + } + } else { + if (i <= 13) { + if (i == 12) { + return 49897; + } else { + return 59655; + } + } else { + if (i == 14) { + return 2017; + } else { + return 57740; + } + } + } + } + } else { + if (i <= 23) { + if (i <= 19) { + if (i <= 17) { + if (i == 16) { + return 35876; + } else { + return 9319; + } + } else { + if (i == 18) { + return 26398; + } else { + return 7749; + } + } + } else { + if (i <= 21) { + if (i == 20) { + return 17806; + } else { + return 36360; + } + } else { + if (i == 22) { + return 2147; + } else { + return 25381; + } + } + } + } else { + if (i <= 27) { + if (i <= 25) { + if (i == 24) { + return 9712; + } else { + return 61461; + } + } else { + if (i == 26) { + return 5386; + } else { + return 2583; + } + } + } else { + if (i <= 29) { + if (i == 28) { + return 6078; + } else { + return 48646; + } + } else { + if (i == 30) { + return 1684; + } else { + return 38135; + } + } + } + } + } + } else { + if (i <= 47) { + if (i <= 39) { + if (i <= 35) { + if (i <= 33) { + if (i == 32) { + return 63352; + } else { + return 30954; + } + } else { + if (i == 34) { + return 59979; + } else { + return 19200; + } + } + } else { + if (i <= 37) { + if (i == 36) { + return 26; + } else { + return 6853; + } + } else { + if (i == 38) { + return 50494; + } else { + return 15966; + } + } + } + } else { + if (i <= 43) { + if (i <= 41) { + if (i == 40) { + return 24316; + } else { + return 64731; + } + } else { + if (i == 42) { + return 56267; + } else { + return 52085; + } + } + } else { + if (i <= 45) { + if (i == 44) { + return 29987; + } else { + return 8971; + } + } else { + if (i == 46) { + return 2848; + } else { + return 8249; + } + } + } + } + } else { + if (i <= 55) { + if (i <= 51) { + if (i <= 49) { + if (i == 48) { + return 14769; + } else { + return 45345; + } + } else { + if (i == 50) { + return 8536; + } else { + return 22765; + } + } + } else { + if (i <= 53) { + if (i == 52) { + return 60821; + } else { + return 38200; + } + } else { + if (i == 54) { + return 14423; + } else { + return 22446; + } + } + } + } else { + if (i <= 59) { + if (i <= 57) { + if (i == 56) { + return 44564; + } else { + return 5245; + } + } else { + if (i == 58) { + return 32136; + } else { + return 34987; + } + } + } else { + if (i <= 61) { + if (i == 60) { + return 43944; + } else { + return 43076; + } + } else { + if (i == 62) { + return 17583; + } else { + return 44874; + } + } + } + } + } + } + } else { + if (i <= 95) { + if (i <= 79) { + if (i <= 71) { + if (i <= 67) { + if (i <= 65) { + if (i == 64) { + return 19109; + } else { + return 42311; + } + } else { + if (i == 66) { + return 18310; + } else { + return 34443; + } + } + } else { + if (i <= 69) { + if (i == 68) { + return 35632; + } else { + return 12315; + } + } else { + if (i == 70) { + return 7078; + } else { + return 42573; + } + } + } + } else { + if (i <= 75) { + if (i <= 73) { + if (i == 72) { + return 19858; + } else { + return 37534; + } + } else { + if (i == 74) { + return 40679; + } else { + return 59219; + } + } + } else { + if (i <= 77) { + if (i == 76) { + return 21359; + } else { + return 28645; + } + } else { + if (i == 78) { + return 58746; + } else { + return 31292; + } + } + } + } + } else { + if (i <= 87) { + if (i <= 83) { + if (i <= 81) { + if (i == 80) { + return 15571; + } else { + return 54149; + } + } else { + if (i == 82) { + return 34278; + } else { + return 59100; + } + } + } else { + if (i <= 85) { + if (i == 84) { + return 56425; + } else { + return 26972; + } + } else { + if (i == 86) { + return 23593; + } else { + return 10551; + } + } + } + } else { + if (i <= 91) { + if (i <= 89) { + if (i == 88) { + return 14126; + } else { + return 12021; + } + } else { + if (i == 90) { + return 62760; + } else { + return 10484; + } + } + } else { + if (i <= 93) { + if (i == 92) { + return 62566; + } else { + return 26255; + } + } else { + if (i == 94) { + return 36662; + } else { + return 13889; + } + } + } + } + } + } else { + if (i <= 111) { + if (i <= 103) { + if (i <= 99) { + if (i <= 97) { + if (i == 96) { + return 16665; + } else { + return 6463; + } + } else { + if (i == 98) { + return 16289; + } else { + return 41217; + } + } + } else { + if (i <= 101) { + if (i == 100) { + return 472; + } else { + return 55376; + } + } else { + if (i == 102) { + return 20553; + } else { + return 18897; + } + } + } + } else { + if (i <= 107) { + if (i <= 105) { + if (i == 104) { + return 53580; + } else { + return 19588; + } + } else { + if (i == 106) { + return 33979; + } else { + return 48080; + } + } + } else { + if (i <= 109) { + if (i == 108) { + return 53337; + } else { + return 22802; + } + } else { + if (i == 110) { + return 4777; + } else { + return 43464; + } + } + } + } + } else { + if (i <= 119) { + if (i <= 115) { + if (i <= 113) { + if (i == 112) { + return 51396; + } else { + return 50311; + } + } else { + if (i == 114) { + return 34690; + } else { + return 33396; + } + } + } else { + if (i <= 117) { + if (i == 116) { + return 29884; + } else { + return 48287; + } + } else { + if (i == 118) { + return 40790; + } else { + return 22180; + } + } + } + } else { + if (i <= 123) { + if (i <= 121) { + if (i == 120) { + return 42084; + } else { + return 25709; + } + } else { + if (i == 122) { + return 28102; + } else { + return 50861; + } + } + } else { + if (i <= 125) { + if (i == 124) { + return 44474; + } else { + return 47619; + } + } else { + if (i == 126) { + return 832; + } else { + return 16436; + } + } + } + } + } + } + } + } else { + if (i <= 191) { + if (i <= 159) { + if (i <= 143) { + if (i <= 135) { + if (i <= 131) { + if (i <= 129) { + if (i == 128) { + return 13529; + } else { + return 55778; + } + } else { + if (i == 130) { + return 58106; + } else { + return 64124; + } + } + } else { + if (i <= 133) { + if (i == 132) { + return 31867; + } else { + return 31493; + } + } else { + if (i == 134) { + return 1482; + } else { + return 51750; + } + } + } + } else { + if (i <= 139) { + if (i <= 137) { + if (i == 136) { + return 9875; + } else { + return 37750; + } + } else { + if (i == 138) { + return 30334; + } else { + return 32511; + } + } + } else { + if (i <= 141) { + if (i == 140) { + return 65362; + } else { + return 21077; + } + } else { + if (i == 142) { + return 21972; + } else { + return 54479; + } + } + } + } + } else { + if (i <= 151) { + if (i <= 147) { + if (i <= 145) { + if (i == 144) { + return 53198; + } else { + return 52795; + } + } else { + if (i == 146) { + return 15331; + } else { + return 58159; + } + } + } else { + if (i <= 149) { + if (i == 148) { + return 12048; + } else { + return 4154; + } + } else { + if (i == 150) { + return 14865; + } else { + return 4534; + } + } + } + } else { + if (i <= 155) { + if (i <= 153) { + if (i == 152) { + return 46781; + } else { + return 48412; + } + } else { + if (i == 154) { + return 7210; + } else { + return 10975; + } + } + } else { + if (i <= 157) { + if (i == 156) { + return 57271; + } else { + return 47018; + } + } else { + if (i == 158) { + return 43733; + } else { + return 54647; + } + } + } + } + } + } else { + if (i <= 175) { + if (i <= 167) { + if (i <= 163) { + if (i <= 161) { + if (i == 160) { + return 30712; + } else { + return 63640; + } + } else { + if (i == 162) { + return 38914; + } else { + return 556; + } + } + } else { + if (i <= 165) { + if (i == 164) { + return 11418; + } else { + return 39587; + } + } else { + if (i == 166) { + return 41798; + } else { + return 18141; + } + } + } + } else { + if (i <= 171) { + if (i <= 169) { + if (i == 168) { + return 56729; + } else { + return 39269; + } + } else { + if (i == 170) { + return 26011; + } else { + return 39847; + } + } + } else { + if (i <= 173) { + if (i == 172) { + return 42795; + } else { + return 11180; + } + } else { + if (i == 174) { + return 44041; + } else { + return 2433; + } + } + } + } + } else { + if (i <= 183) { + if (i <= 179) { + if (i <= 177) { + if (i == 176) { + return 33046; + } else { + return 5671; + } + } else { + if (i == 178) { + return 10237; + } else { + return 64787; + } + } + } else { + if (i <= 181) { + if (i == 180) { + return 4962; + } else { + return 25196; + } + } else { + if (i == 182) { + return 27758; + } else { + return 28239; + } + } + } + } else { + if (i <= 187) { + if (i <= 185) { + if (i == 184) { + return 20337; + } else { + return 29152; + } + } else { + if (i == 186) { + return 57576; + } else { + return 59570; + } + } + } else { + if (i <= 189) { + if (i == 188) { + return 45753; + } else { + return 47472; + } + } else { + if (i == 190) { + return 28776; + } else { + return 26842; + } + } + } + } + } + } + } else { + if (i <= 223) { + if (i <= 207) { + if (i <= 199) { + if (i <= 195) { + if (i <= 193) { + if (i == 192) { + return 56054; + } else { + return 63073; + } + } else { + if (i == 194) { + return 25060; + } else { + return 58619; + } + } + } else { + if (i <= 197) { + if (i == 196) { + return 64290; + } else { + return 8946; + } + } else { + if (i == 198) { + return 62145; + } else { + return 49646; + } + } + } + } else { + if (i <= 203) { + if (i <= 201) { + if (i == 200) { + return 61138; + } else { + return 53904; + } + } else { + if (i == 202) { + return 36876; + } else { + return 3263; + } + } + } else { + if (i <= 205) { + if (i == 204) { + return 49075; + } else { + return 45986; + } + } else { + if (i == 206) { + return 41713; + } else { + return 61777; + } + } + } + } + } else { + if (i <= 215) { + if (i <= 211) { + if (i <= 209) { + if (i == 208) { + return 20787; + } else { + return 13201; + } + } else { + if (i == 210) { + return 37355; + } else { + return 60409; + } + } + } else { + if (i <= 213) { + if (i == 212) { + return 63758; + } else { + return 3823; + } + } else { + if (i == 214) { + return 61291; + } else { + return 27441; + } + } + } + } else { + if (i <= 219) { + if (i <= 217) { + if (i == 216) { + return 12736; + } else { + return 49366; + } + } else { + if (i == 218) { + return 54815; + } else { + return 8117; + } + } + } else { + if (i <= 221) { + if (i == 220) { + return 46535; + } else { + return 51050; + } + } else { + if (i == 222) { + return 27293; + } else { + return 40376; + } + } + } + } + } + } else { + if (i <= 239) { + if (i <= 231) { + if (i <= 227) { + if (i <= 225) { + if (i == 224) { + return 47188; + } else { + return 21708; + } + } else { + if (i == 226) { + return 52400; + } else { + return 45171; + } + } + } else { + if (i <= 229) { + if (i == 228) { + return 29561; + } else { + return 31026; + } + } else { + if (i == 230) { + return 12845; + } else { + return 11647; + } + } + } + } else { + if (i <= 235) { + if (i <= 233) { + if (i == 232) { + return 32516; + } else { + return 1174; + } + } else { + if (i == 234) { + return 38654; + } else { + return 65162; + } + } + } else { + if (i <= 237) { + if (i == 236) { + return 35564; + } else { + return 60621; + } + } else { + if (i == 238) { + return 52573; + } else { + return 24030; + } + } + } + } + } else { + if (i <= 247) { + if (i <= 243) { + if (i <= 241) { + if (i == 240) { + return 56946; + } else { + return 29251; + } + } else { + if (i == 242) { + return 17181; + } else { + return 7448; + } + } + } else { + if (i <= 245) { + if (i == 244) { + return 6216; + } else { + return 18675; + } + } else { + if (i == 246) { + return 62349; + } else { + return 36224; + } + } + } + } else { + if (i <= 251) { + if (i <= 249) { + if (i == 248) { + return 32963; + } else { + return 49998; + } + } else { + if (i == 250) { + return 20034; + } else { + return 17111; + } + } + } else { + if (i <= 253) { + if (i == 252) { + return 55101; + } else { + return 15772; + } + } else { + if (i == 254) { + return 40116; + } else { + return 46231; + } + } + } + } + } + } + } + } + } +} diff --git a/packages/noise/dist/index.d.ts b/packages/noise/dist/index.d.ts deleted file mode 100644 index af1700bf44..0000000000 --- a/packages/noise/dist/index.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -declare function fetchAndCompileWasmModule(url: URL | string): Promise; -declare function lerp(t: number, a: number, b: number): number; -declare function createSplines(splines: [number, number][]): (x: number) => number; -type Perlin = (_x: number, _y: number, _z: number, denom: number) => number; -declare function createPerlin(): Promise; - -export { Perlin, createPerlin, createSplines, fetchAndCompileWasmModule, lerp }; diff --git a/packages/noise/foundry.toml b/packages/noise/foundry.toml new file mode 100644 index 0000000000..555dbf1c24 --- /dev/null +++ b/packages/noise/foundry.toml @@ -0,0 +1,14 @@ +[profile.default] +solc = "0.8.24" +ffi = false +fuzz_runs = 256 +optimizer = true +optimizer_runs = 3000 +verbosity = 2 +allow_paths = ["../../node_modules"] +src = "contracts" +out = "out" +extra_output_files = [ + "abi", + "evm.bytecode" +] diff --git a/packages/noise/hardhat.config.cts b/packages/noise/hardhat.config.cts new file mode 100644 index 0000000000..98e2e0da85 --- /dev/null +++ b/packages/noise/hardhat.config.cts @@ -0,0 +1,11 @@ +import { HardhatUserConfig } from "hardhat/config"; +import "@nomicfoundation/hardhat-chai-matchers"; + +const config: HardhatUserConfig = { + solidity: "0.8.9", + paths: { + tests: "test/hardhat/", + }, +}; + +export default config; diff --git a/packages/noise/modules.d.ts b/packages/noise/modules.d.ts new file mode 100644 index 0000000000..451295253b --- /dev/null +++ b/packages/noise/modules.d.ts @@ -0,0 +1 @@ +declare module "keccak-wasm"; diff --git a/packages/noise/package.json b/packages/noise/package.json index da10af978c..d09d623a97 100644 --- a/packages/noise/package.json +++ b/packages/noise/package.json @@ -2,6 +2,7 @@ "name": "@latticexyz/noise", "version": "2.0.0-next.17", "license": "MIT", + "type": "module", "exports": { ".": "./dist/index.js" }, diff --git a/packages/noise/remappings.txt b/packages/noise/remappings.txt new file mode 100644 index 0000000000..2a8e2bcd27 --- /dev/null +++ b/packages/noise/remappings.txt @@ -0,0 +1,3 @@ +ds-test/=node_modules/ds-test/src/ +forge-std/=node_modules/forge-std/src/ +abdk-libraries-solidity/=node_modules/abdk-libraries-solidity/ diff --git a/packages/noise/test/forge/Perlin.t.sol b/packages/noise/test/forge/Perlin.t.sol new file mode 100644 index 0000000000..8e3eb5f95c --- /dev/null +++ b/packages/noise/test/forge/Perlin.t.sol @@ -0,0 +1,19 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.8.24; + +import "forge-std/Test.sol"; +import { Perlin } from "../../contracts/Perlin.sol"; + +contract PerlinTest is Test { + function testGaslimitNoise3D(int64 x, int64 y, int64 z) public { + Perlin.noise(x, y, z, 7, 64); + } + + function testGasLimitNoise2D(int64 x, int64 y) public { + Perlin.noise2d(x, y, 7, 64); + } + + function testEquality(int64 x, int64 y) public { + assertEq(Perlin.noise(x, y, 0, 7, 64), Perlin.noise2d(x, y, 7, 64)); + } +} diff --git a/packages/noise/test/hardhat/keccak.spec.ts b/packages/noise/test/hardhat/keccak.spec.ts new file mode 100644 index 0000000000..bd68a733ff --- /dev/null +++ b/packages/noise/test/hardhat/keccak.spec.ts @@ -0,0 +1,35 @@ +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore +import { InitializeKeccak, keccak256 } from "keccak-wasm"; +import { expect } from "chai"; +import web3Utils from "web3-utils"; +import { encodePackedU32 } from "../../ts"; + +const { soliditySha3 } = web3Utils; + +describe("keccak256", () => { + before(async () => { + await InitializeKeccak(); + }); + it("should compute the same hash as soliditySha3 for a string", () => { + const msg = "hello"; + expect("0x" + keccak256(msg)).to.eq(soliditySha3(msg)); + expect(keccak256(msg)).to.eq("1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8"); + }); + it("should compute the same hash as soliditySha3 for abi.encodePacked params", () => { + const x = 10; + const y = 11; + const scale = 12; + const seed = 13; + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + const correctHash = soliditySha3( + { t: "uint32", v: x }, + { t: "uint32", v: y }, + { t: "uint32", v: scale }, + { t: "uint32", v: seed }, + )!; + const encodedString = encodePackedU32([x, y, scale, seed]); + const testHash = "0x" + keccak256(encodedString, true); + expect(testHash).to.eq(correctHash); + }); +}); diff --git a/packages/noise/test/hardhat/perlin.spec.ts b/packages/noise/test/hardhat/perlin.spec.ts new file mode 100644 index 0000000000..01c3780b91 --- /dev/null +++ b/packages/noise/test/hardhat/perlin.spec.ts @@ -0,0 +1,112 @@ +import { expect } from "chai"; +import hardhat from "hardhat"; +import fs from "fs"; +import { fetchAndCompileWasmModule } from "../../ts"; + +const { ethers } = hardhat; + +const SCALE = 7; +const PRECISION = 10; + +describe("Perlin", () => { + let getPerlinWasm: (x: number, y: number) => number = () => 0; + let getPerlinSol: (x: number, y: number) => Promise = async () => 0; + + before(async () => { + // Solidity setup + const PerlinSol = await ethers.getContractFactory("Perlin"); + const deployedPerlinNoise = await PerlinSol.deploy(); + getPerlinSol = async (x: number, y: number) => + (await deployedPerlinNoise.noise(x, y, 0, SCALE, PRECISION)) / 2 ** PRECISION; + + // AssemblyScript setup + // In esm environments the compiled function can be imported directly + // but hardhat does not support esm + // import { perlin } from "../build/release"; + const wasmModule = await fetchAndCompileWasmModule(new URL("../../build/release.wasm", import.meta.url)); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const wasmInstance: any = await WebAssembly.instantiate(wasmModule, { + env: { + abort: (e: string) => { + throw new Error("abort called in wasm perlin: " + e); + }, + }, + }); + + getPerlinWasm = (x: number, y: number) => + Math.floor(wasmInstance.exports.perlin(x, y, 0, SCALE) * 2 ** PRECISION) / 2 ** PRECISION; + }); + + describe("getPerlinSol", () => { + it("should return perlin noise", async () => { + expect(await getPerlinSol(10, 10)).to.eq(0.748046875); + }); + + it("should support negative coordinates", async () => { + expect(await getPerlinSol(-10, 10)).to.eq(0.2421875); + }); + + it("should generate json for 16x16 rect", async () => { + const values: number[] = []; + for (let y = -8; y < 8; y++) { + for (let x = -8; x < 8; x++) { + values.push(Number(await getPerlinSol(x, y))); + } + } + fs.writeFileSync("web/sol_perlin.json", JSON.stringify([...values])); + }); + }); + + describe("getPerlinWasm", () => { + it("should return perlin noise", () => { + expect(getPerlinWasm(10, 10)).to.eq(0.748046875); + }); + + it("should support negative coordinates", () => { + expect(getPerlinWasm(-10, 10)).to.eq(0.2421875); + }); + + it("should the same perlin values as getPerlinSol", async () => { + for (let x = -5; x < 5; x++) { + for (let y = -5; y < 5; y++) { + const solPerlin = await getPerlinSol(x, y); + const wasmPerlin = getPerlinWasm(x, y); + expect(solPerlin).to.eq(wasmPerlin); + } + } + }); + + it("should compute 256x256 perlin values in < 16ms", () => { + const start = Date.now(); + for (let x = -128; x < 128; x++) { + for (let y = -128; y < 128; y++) { + getPerlinWasm(x, y); + } + } + const end = Date.now(); + const duration = end - start; + expect(duration).to.be.lte(16); + console.log("Time to compute 256x256 perlin values:", duration); + }); + + it("should return values between 0 and 1", () => { + for (let x = -8; x < 8; x++) { + for (let y = -8; y < 8; y++) { + const p = getPerlinWasm(x, y); + expect(p).to.lte(1); + expect(p).to.gte(0); + } + } + }); + + it("should generate json for 512x512 rect", async () => { + const values: number[] = []; + for (let y = -256; y < 256; y++) { + for (let x = -256; x < 256; x++) { + values.push(getPerlinWasm(x, y)); + } + } + fs.writeFileSync("web/wasm_perlin.json", JSON.stringify([...values])); + }); + }); +}); diff --git a/packages/noise/ts/index.ts b/packages/noise/ts/index.ts index 228ddab7ab..00ec42ec5e 100644 --- a/packages/noise/ts/index.ts +++ b/packages/noise/ts/index.ts @@ -1,5 +1,4 @@ import fs from "fs"; -import path from "path"; // import * as buffer from "buffer"; // const { Buffer } = buffer; @@ -8,7 +7,7 @@ import path from "path"; // return buffer; // } -export async function fetchAndCompileWasmModule(url: URL | string) { +export async function fetchAndCompileWasmModule(url: URL) { try { return await WebAssembly.compileStreaming(fetch(url)); } catch { @@ -39,14 +38,10 @@ export function createSplines(splines: [number, number][]): (x: number) => numbe }; } -export type Perlin = (_x: number, _y: number, _z: number, denom: number) => number; +type Perlin = (_x: number, _y: number, _z: number, denom: number) => number; export async function createPerlin(): Promise { - const wasmModule = await fetchAndCompileWasmModule( - import.meta.url - ? new URL("../build/release.wasm", import.meta.url) - : path.resolve(__dirname, "../build/release.wasm") - ); + const wasmModule = await fetchAndCompileWasmModule(new URL("../build/release.wasm", import.meta.url)); const wasmInstance = await WebAssembly.instantiate(wasmModule, { env: { abort: (e: string) => { diff --git a/packages/noise/tsconfig.json b/packages/noise/tsconfig.json new file mode 100644 index 0000000000..a2a2cc8f36 --- /dev/null +++ b/packages/noise/tsconfig.json @@ -0,0 +1,18 @@ +{ + "compilerOptions": { + "target": "es2020", + "module": "ES2022", + "moduleResolution": "node", + "types": ["hardhat"], + "resolveJsonModule": true, + "declaration": true, + "sourceMap": true, + "outDir": "dist", + "isolatedModules": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "strict": true, + "skipLibCheck": true + }, + "include": ["ts"] +} diff --git a/packages/noise/tsup.config.ts b/packages/noise/tsup.config.ts index 59f79395cc..5837375692 100644 --- a/packages/noise/tsup.config.ts +++ b/packages/noise/tsup.config.ts @@ -3,7 +3,7 @@ import { defineConfig } from "tsup"; export default defineConfig({ entry: ["ts/index.ts"], target: "esnext", - format: ["esm", "cjs"], + format: ["esm"], dts: true, sourcemap: true, clean: true, diff --git a/packages/noise/web/index.html b/packages/noise/web/index.html new file mode 100644 index 0000000000..52852d5b3d --- /dev/null +++ b/packages/noise/web/index.html @@ -0,0 +1,53 @@ + + + + + + diff --git a/packages/noise/web/sol_perlin.json b/packages/noise/web/sol_perlin.json new file mode 100644 index 0000000000..1d587ef4f4 --- /dev/null +++ b/packages/noise/web/sol_perlin.json @@ -0,0 +1 @@ +[0.580078125,0.5791015625,0.5771484375,0.5751953125,0.5732421875,0.5732421875,0.5751953125,0.5771484375,0.5791015625,0.5869140625,0.6123046875,0.6328125,0.623046875,0.5751953125,0.5029296875,0.4296875,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.421875,0.419921875,0.41796875,0.4169921875,0.41796875,0.4208984375,0.423828125,0.427734375,0.4296875,0.4443359375,0.501953125,0.583984375,0.6494140625,0.6669921875,0.6328125,0.5693359375,0.337890625,0.3251953125,0.3154296875,0.3076171875,0.3095703125,0.3232421875,0.3447265625,0.3642578125,0.376953125,0.400390625,0.466796875,0.5615234375,0.6435546875,0.6806640625,0.6669921875,0.6220703125,0.2890625,0.2587890625,0.232421875,0.2099609375,0.208984375,0.2373046875,0.28515625,0.33203125,0.3642578125,0.3984375,0.4619140625,0.541015625,0.609375,0.6474609375,0.650390625,0.634765625,0.3095703125,0.2587890625,0.2119140625,0.1689453125,0.15625,0.1923828125,0.2646484375,0.3408203125,0.39453125,0.4404296875,0.48828125,0.529296875,0.5576171875,0.57421875,0.587890625,0.6044921875,0.390625,0.3251953125,0.2607421875,0.1943359375,0.1650390625,0.197265625,0.28125,0.376953125,0.4482421875,0.5029296875,0.5302734375,0.52734375,0.5068359375,0.4931640625,0.5078125,0.55078125,0.4912109375,0.419921875,0.34375,0.259765625,0.2109375,0.228515625,0.3095703125,0.41015625,0.4892578125,0.548828125,0.5625,0.529296875,0.4755859375,0.4404296875,0.4521484375,0.509765625,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.6435546875,0.5791015625,0.4990234375,0.3955078125,0.30859375,0.2841796875,0.330078125,0.412109375,0.4892578125,0.5498046875,0.5595703125,0.51953125,0.458984375,0.4189453125,0.4296875,0.4892578125,0.7236328125,0.673828125,0.5986328125,0.484375,0.369140625,0.3056640625,0.314453125,0.375,0.4482421875,0.5078125,0.5185546875,0.478515625,0.41796875,0.376953125,0.3876953125,0.4482421875,0.76953125,0.740234375,0.677734375,0.5615234375,0.421875,0.3193359375,0.2900390625,0.326171875,0.39453125,0.4541015625,0.46484375,0.4248046875,0.3642578125,0.32421875,0.3349609375,0.39453125,0.748046875,0.740234375,0.6953125,0.5888671875,0.447265625,0.328125,0.27734375,0.2998046875,0.3642578125,0.423828125,0.4345703125,0.39453125,0.333984375,0.2939453125,0.3046875,0.3642578125,0.6669921875,0.673828125,0.646484375,0.5615234375,0.439453125,0.3359375,0.2900390625,0.3134765625,0.376953125,0.4375,0.4482421875,0.4072265625,0.3466796875,0.306640625,0.3173828125,0.376953125,0.5673828125,0.5791015625,0.564453125,0.5029296875,0.416015625,0.3466796875,0.328125,0.36328125,0.4296875,0.4892578125,0.5,0.4599609375,0.3994140625,0.359375,0.3701171875,0.4296875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5] \ No newline at end of file diff --git a/packages/noise/web/wasm_perlin.json b/packages/noise/web/wasm_perlin.json new file mode 100644 index 0000000000..29e97f2122 --- /dev/null +++ b/packages/noise/web/wasm_perlin.json @@ -0,0 +1 @@ +[0.48046875,0.58203125,0.685546875,0.7431640625,0.740234375,0.7119140625,0.6552734375,0.587890625,0.541015625,0.533203125,0.5615234375,0.6044921875,0.640625,0.6318359375,0.5634765625,0.4521484375,0.341796875,0.2734375,0.2587890625,0.2626953125,0.2841796875,0.3310546875,0.39453125,0.4580078125,0.5048828125,0.5302734375,0.5380859375,0.5107421875,0.4609375,0.421875,0.4208984375,0.462890625,0.5302734375,0.6015625,0.6611328125,0.681640625,0.6513671875,0.587890625,0.5283203125,0.5,0.4814453125,0.466796875,0.4521484375,0.435546875,0.4150390625,0.390625,0.3642578125,0.3408203125,0.3330078125,0.341796875,0.361328125,0.376953125,0.37890625,0.3642578125,0.34765625,0.3466796875,0.3671875,0.40234375,0.4404296875,0.4638671875,0.46875,0.4697265625,0.4716796875,0.4697265625,0.4580078125,0.4375,0.4150390625,0.39453125,0.375,0.3603515625,0.369140625,0.4140625,0.4833984375,0.552734375,0.6044921875,0.6328125,0.595703125,0.4970703125,0.3837890625,0.3095703125,0.306640625,0.3642578125,0.44140625,0.529296875,0.599609375,0.6240234375,0.6025390625,0.5615234375,0.5302734375,0.5126953125,0.5283203125,0.57421875,0.6240234375,0.65234375,0.6435546875,0.6044921875,0.552734375,0.4775390625,0.3916015625,0.3193359375,0.2763671875,0.2607421875,0.2587890625,0.2705078125,0.328125,0.435546875,0.5634765625,0.6708984375,0.728515625,0.740234375,0.73828125,0.7236328125,0.6904296875,0.642578125,0.5927734375,0.552734375,0.5302734375,0.5068359375,0.4755859375,0.455078125,0.4638671875,0.5029296875,0.5556640625,0.6044921875,0.6552734375,0.71484375,0.7568359375,0.7568359375,0.71484375,0.6552734375,0.6044921875,0.55859375,0.5185546875,0.501953125,0.521484375,0.5654296875,0.609375,0.634765625,0.6416015625,0.599609375,0.515625,0.4248046875,0.365234375,0.3583984375,0.39453125,0.4404296875,0.482421875,0.5078125,0.5078125,0.4912109375,0.4736328125,0.46875,0.4755859375,0.501953125,0.53515625,0.5546875,0.546875,0.513671875,0.46875,0.416015625,0.3447265625,0.2900390625,0.2861328125,0.33984375,0.4228515625,0.5,0.58203125,0.693359375,0.7900390625,0.826171875,0.7890625,0.7119140625,0.634765625,0.572265625,0.544921875,0.5546875,0.580078125,0.58984375,0.5625,0.5,0.431640625,0.3935546875,0.4140625,0.4970703125,0.6083984375,0.69921875,0.740234375,0.76953125,0.7978515625,0.794921875,0.7431640625,0.6494140625,0.548828125,0.46875,0.4072265625,0.388671875,0.4228515625,0.48828125,0.546875,0.5625,0.5302734375,0.4921875,0.484375,0.4990234375,0.513671875,0.50390625,0.4609375,0.39453125,0.3359375,0.3349609375,0.40234375,0.5078125,0.599609375,0.6337890625,0.6044921875,0.5615234375,0.533203125,0.541015625,0.587890625,0.6552734375,0.7119140625,0.740234375,0.7646484375,0.8046875,0.8427734375,0.853515625,0.8310546875,0.787109375,0.740234375,0.6943359375,0.6513671875,0.6162109375,0.5908203125,0.572265625,0.5537109375,0.5302734375,0.494140625,0.43359375,0.375,0.35546875,0.388671875,0.4560546875,0.5302734375,0.5966796875,0.6318359375,0.6044921875,0.513671875,0.39453125,0.30078125,0.2587890625,0.2412109375,0.2646484375,0.34765625,0.474609375,0.6064453125,0.69921875,0.740234375,0.7529296875,0.712890625,0.6240234375,0.521484375,0.4501953125,0.4345703125,0.46875,0.51171875,0.5419921875,0.5498046875,0.5380859375,0.521484375,0.5166015625,0.5302734375,0.5595703125,0.625,0.708984375,0.7763671875,0.80078125,0.7822265625,0.740234375,0.6884765625,0.619140625,0.5498046875,0.5048828125,0.4951171875,0.509765625,0.5302734375,0.544921875,0.54296875,0.52734375,0.5078125,0.4990234375,0.5068359375,0.5302734375,0.5458984375,0.5224609375,0.4638671875,0.3974609375,0.35546875,0.357421875,0.39453125,0.435546875,0.458984375,0.4638671875,0.4609375,0.4658203125,0.4892578125,0.5302734375,0.5732421875,0.6015625,0.59375,0.546875,0.478515625,0.421875,0.39453125,0.3779296875,0.3779296875,0.408203125,0.46875,0.5419921875,0.6005859375,0.634765625,0.6533203125,0.642578125,0.607421875,0.568359375,0.55078125,0.564453125,0.6044921875,0.63671875,0.61328125,0.5244140625,0.40234375,0.296875,0.248046875,0.2587890625,0.3037109375,0.41015625,0.5517578125,0.6708984375,0.7216796875,0.69921875,0.634765625,0.5498046875,0.42578125,0.294921875,0.20703125,0.1845703125,0.2138671875,0.2587890625,0.306640625,0.35546875,0.3828125,0.375,0.3369140625,0.291015625,0.2587890625,0.24609375,0.28515625,0.3642578125,0.44140625,0.4775390625,0.45703125,0.39453125,0.32421875,0.26953125,0.2587890625,0.30078125,0.3740234375,0.439453125,0.46875,0.4931640625,0.5224609375,0.533203125,0.4990234375,0.4248046875,0.3359375,0.2587890625,0.1923828125,0.158203125,0.1845703125,0.2705078125,0.380859375,0.4658203125,0.5,0.515625,0.5185546875,0.5078125,0.4912109375,0.48046875,0.4833984375,0.5,0.5107421875,0.4931640625,0.447265625,0.3916015625,0.3525390625,0.34375,0.3642578125,0.3896484375,0.4072265625,0.4033203125,0.3720703125,0.3251953125,0.283203125,0.2587890625,0.25390625,0.3095703125,0.427734375,0.5712890625,0.689453125,0.7451171875,0.740234375,0.7158203125,0.6689453125,0.6044921875,0.541015625,0.4951171875,0.47265625,0.46875,0.4833984375,0.544921875,0.6357421875,0.708984375,0.7333984375,0.701171875,0.634765625,0.5498046875,0.42578125,0.294921875,0.20703125,0.1845703125,0.2138671875,0.2587890625,0.3154296875,0.4091796875,0.521484375,0.61328125,0.658203125,0.658203125,0.634765625,0.6005859375,0.5419921875,0.46875,0.408203125,0.3779296875,0.3779296875,0.39453125,0.41015625,0.4130859375,0.40234375,0.38671875,0.3759765625,0.37890625,0.39453125,0.416015625,0.44140625,0.4580078125,0.453125,0.4267578125,0.392578125,0.3642578125,0.3408203125,0.3408203125,0.3857421875,0.4775390625,0.58984375,0.68359375,0.740234375,0.7763671875,0.7666015625,0.6875,0.5517578125,0.40625,0.3017578125,0.2587890625,0.25,0.3046875,0.4140625,0.52734375,0.59375,0.58984375,0.5302734375,0.453125,0.3701171875,0.3056640625,0.2841796875,0.3037109375,0.33984375,0.3642578125,0.39453125,0.4697265625,0.5771484375,0.6796875,0.744140625,0.759765625,0.740234375,0.6953125,0.5888671875,0.447265625,0.328125,0.27734375,0.2998046875,0.3642578125,0.4296875,0.4697265625,0.482421875,0.4853515625,0.4990234375,0.5390625,0.6044921875,0.6708984375,0.70703125,0.6904296875,0.4248046875,0.5107421875,0.62109375,0.7060546875,0.740234375,0.751953125,0.73828125,0.6982421875,0.6513671875,0.619140625,0.6142578125,0.634765625,0.65234375,0.6259765625,0.546875,0.435546875,0.33203125,0.271484375,0.2587890625,0.2666015625,0.302734375,0.3642578125,0.427734375,0.470703125,0.482421875,0.46875,0.4404296875,0.384765625,0.328125,0.3056640625,0.3330078125,0.396484375,0.46875,0.537109375,0.58203125,0.587890625,0.5576171875,0.5146484375,0.490234375,0.5,0.521484375,0.548828125,0.5634765625,0.546875,0.5009765625,0.443359375,0.39453125,0.34765625,0.3037109375,0.28125,0.2919921875,0.3291015625,0.3701171875,0.39453125,0.416015625,0.4462890625,0.48046875,0.5078125,0.5234375,0.529296875,0.5302734375,0.5234375,0.4921875,0.44140625,0.3896484375,0.35546875,0.349609375,0.3642578125,0.384765625,0.4169921875,0.4609375,0.513671875,0.564453125,0.60546875,0.634765625,0.6455078125,0.59375,0.4912109375,0.3857421875,0.326171875,0.333984375,0.39453125,0.47265625,0.560546875,0.6240234375,0.6328125,0.5869140625,0.521484375,0.46875,0.4326171875,0.4345703125,0.4833984375,0.5576171875,0.623046875,0.650390625,0.634765625,0.6005859375,0.53515625,0.447265625,0.3583984375,0.2939453125,0.263671875,0.2587890625,0.2705078125,0.328125,0.435546875,0.5634765625,0.6708984375,0.728515625,0.740234375,0.7314453125,0.6875,0.6123046875,0.533203125,0.4765625,0.45703125,0.46875,0.4873046875,0.5068359375,0.52734375,0.5517578125,0.580078125,0.6083984375,0.634765625,0.6640625,0.69921875,0.7236328125,0.7236328125,0.69921875,0.6640625,0.634765625,0.611328125,0.599609375,0.6015625,0.61328125,0.6220703125,0.6201171875,0.6044921875,0.5771484375,0.5185546875,0.44140625,0.375,0.33984375,0.341796875,0.3642578125,0.3935546875,0.4326171875,0.474609375,0.5078125,0.5244140625,0.529296875,0.5302734375,0.533203125,0.548828125,0.568359375,0.580078125,0.5751953125,0.5556640625,0.5302734375,0.4931640625,0.4287109375,0.36328125,0.3369140625,0.3623046875,0.4267578125,0.5,0.58203125,0.6884765625,0.7783203125,0.806640625,0.763671875,0.681640625,0.6044921875,0.5419921875,0.5185546875,0.53515625,0.568359375,0.5849609375,0.5615234375,0.5,0.4287109375,0.3798828125,0.3857421875,0.4609375,0.576171875,0.6806640625,0.740234375,0.7890625,0.8388671875,0.853515625,0.8095703125,0.71484375,0.6103515625,0.5302734375,0.4619140625,0.41796875,0.4111328125,0.4365234375,0.4716796875,0.486328125,0.46875,0.451171875,0.4609375,0.4853515625,0.5,0.482421875,0.4326171875,0.3642578125,0.3046875,0.2998046875,0.3671875,0.48046875,0.5888671875,0.64453125,0.634765625,0.6142578125,0.619140625,0.6513671875,0.6982421875,0.73828125,0.751953125,0.740234375,0.7255859375,0.7265625,0.7431640625,0.76171875,0.771484375,0.7626953125,0.740234375,0.71484375,0.6884765625,0.6572265625,0.6162109375,0.56640625,0.515625,0.46875,0.4150390625,0.33984375,0.2783203125,0.267578125,0.314453125,0.3935546875,0.46875,0.5400390625,0.59375,0.59375,0.52734375,0.41796875,0.318359375,0.2587890625,0.2197265625,0.21875,0.2841796875,0.4111328125,0.560546875,0.6787109375,0.740234375,0.775390625,0.767578125,0.7099609375,0.6240234375,0.5478515625,0.515625,0.5302734375,0.556640625,0.580078125,0.5849609375,0.56640625,0.529296875,0.4931640625,0.46875,0.4609375,0.4951171875,0.5712890625,0.662109375,0.732421875,0.7568359375,0.740234375,0.7109375,0.669921875,0.6181640625,0.56640625,0.521484375,0.490234375,0.46875,0.4443359375,0.404296875,0.3671875,0.35546875,0.3779296875,0.4228515625,0.46875,0.5068359375,0.51171875,0.4775390625,0.4189453125,0.3671875,0.3466796875,0.3642578125,0.388671875,0.4052734375,0.4140625,0.4189453125,0.427734375,0.4443359375,0.46875,0.490234375,0.4853515625,0.4521484375,0.4052734375,0.3662109375,0.3515625,0.3642578125,0.3818359375,0.3984375,0.421875,0.4580078125,0.505859375,0.5576171875,0.6044921875,0.6455078125,0.6669921875,0.6630859375,0.640625,0.6181640625,0.615234375,0.634765625,0.6455078125,0.5927734375,0.48046875,0.3505859375,0.2548828125,0.2275390625,0.2587890625,0.3212890625,0.4375,0.5771484375,0.6796875,0.708984375,0.6728515625,0.6044921875,0.5234375,0.4130859375,0.3037109375,0.2314453125,0.2119140625,0.2314453125,0.2587890625,0.291015625,0.3369140625,0.375,0.3828125,0.35546875,0.306640625,0.2587890625,0.2275390625,0.2490234375,0.3173828125,0.39453125,0.4384765625,0.4248046875,0.3642578125,0.30078125,0.279296875,0.3173828125,0.3994140625,0.486328125,0.5341796875,0.5302734375,0.5146484375,0.509765625,0.5,0.4658203125,0.40625,0.33203125,0.2587890625,0.197265625,0.185546875,0.240234375,0.341796875,0.4453125,0.501953125,0.5,0.4833984375,0.48046875,0.4912109375,0.5078125,0.5185546875,0.515625,0.5,0.47265625,0.4189453125,0.3583984375,0.3193359375,0.318359375,0.3505859375,0.39453125,0.4326171875,0.4384765625,0.40234375,0.33984375,0.279296875,0.25,0.2587890625,0.2861328125,0.34765625,0.4443359375,0.5546875,0.6513671875,0.712890625,0.740234375,0.75390625,0.7421875,0.6982421875,0.634765625,0.57421875,0.537109375,0.5302734375,0.5419921875,0.5927734375,0.662109375,0.712890625,0.7158203125,0.6728515625,0.6044921875,0.5234375,0.4130859375,0.3037109375,0.2314453125,0.2119140625,0.2314453125,0.2587890625,0.298828125,0.38671875,0.501953125,0.6015625,0.650390625,0.64453125,0.6044921875,0.5576171875,0.505859375,0.4580078125,0.421875,0.3984375,0.3818359375,0.3642578125,0.3486328125,0.345703125,0.3564453125,0.3720703125,0.3828125,0.3798828125,0.3642578125,0.3525390625,0.369140625,0.40625,0.44140625,0.453125,0.435546875,0.39453125,0.3544921875,0.3486328125,0.3974609375,0.4970703125,0.6123046875,0.7001953125,0.740234375,0.7607421875,0.748046875,0.6796875,0.560546875,0.4248046875,0.318359375,0.2587890625,0.2294921875,0.263671875,0.35546875,0.4609375,0.5283203125,0.52734375,0.46875,0.400390625,0.349609375,0.333984375,0.3525390625,0.3857421875,0.404296875,0.39453125,0.390625,0.4443359375,0.5517578125,0.6708984375,0.75390625,0.7734375,0.740234375,0.677734375,0.5615234375,0.421875,0.3193359375,0.2900390625,0.326171875,0.39453125,0.4599609375,0.5,0.513671875,0.5166015625,0.529296875,0.5693359375,0.634765625,0.7021484375,0.7421875,0.7314453125,0.353515625,0.408203125,0.509765625,0.609375,0.673828125,0.720703125,0.7451171875,0.7353515625,0.6953125,0.6484375,0.6201171875,0.6220703125,0.625,0.5966796875,0.5322265625,0.4501953125,0.3759765625,0.333984375,0.3251953125,0.3349609375,0.376953125,0.4384765625,0.4873046875,0.5009765625,0.4765625,0.4287109375,0.369140625,0.2900390625,0.2275390625,0.21875,0.2705078125,0.3525390625,0.4287109375,0.4931640625,0.5244140625,0.515625,0.482421875,0.4541015625,0.4580078125,0.5,0.556640625,0.623046875,0.6669921875,0.6572265625,0.5966796875,0.515625,0.4482421875,0.380859375,0.306640625,0.2568359375,0.26171875,0.31640625,0.3896484375,0.4482421875,0.5,0.552734375,0.5888671875,0.599609375,0.5888671875,0.57421875,0.5703125,0.55859375,0.505859375,0.4248046875,0.3515625,0.318359375,0.33203125,0.376953125,0.4306640625,0.4921875,0.5478515625,0.5869140625,0.60546875,0.61328125,0.6220703125,0.6181640625,0.5625,0.47265625,0.3916015625,0.3583984375,0.3837890625,0.4482421875,0.525390625,0.611328125,0.666015625,0.6572265625,0.587890625,0.4990234375,0.4287109375,0.375,0.359375,0.3994140625,0.48046875,0.5673828125,0.619140625,0.6220703125,0.6044921875,0.5615234375,0.4931640625,0.4189453125,0.361328125,0.3310546875,0.3251953125,0.333984375,0.3759765625,0.453125,0.5458984375,0.623046875,0.6650390625,0.673828125,0.66015625,0.6015625,0.5087890625,0.4228515625,0.3779296875,0.384765625,0.4287109375,0.4814453125,0.5361328125,0.5810546875,0.60546875,0.61328125,0.6142578125,0.6220703125,0.6328125,0.646484375,0.65625,0.65625,0.646484375,0.6328125,0.6220703125,0.6171875,0.630859375,0.650390625,0.658203125,0.640625,0.6005859375,0.55078125,0.49609375,0.431640625,0.3759765625,0.3466796875,0.34765625,0.3642578125,0.376953125,0.3916015625,0.4228515625,0.4677734375,0.5146484375,0.5498046875,0.5673828125,0.5703125,0.5712890625,0.5771484375,0.5849609375,0.58984375,0.587890625,0.580078125,0.5703125,0.5478515625,0.490234375,0.4189453125,0.375,0.3798828125,0.4296875,0.5,0.580078125,0.6806640625,0.7587890625,0.7724609375,0.7177734375,0.6298828125,0.55078125,0.490234375,0.4736328125,0.501953125,0.548828125,0.5771484375,0.560546875,0.5,0.4248046875,0.3583984375,0.337890625,0.388671875,0.4921875,0.599609375,0.673828125,0.740234375,0.814453125,0.8564453125,0.8330078125,0.7509765625,0.650390625,0.5703125,0.498046875,0.4345703125,0.3974609375,0.3955078125,0.4150390625,0.4326171875,0.4287109375,0.427734375,0.455078125,0.4951171875,0.5166015625,0.5,0.447265625,0.376953125,0.314453125,0.2978515625,0.3466796875,0.4462890625,0.552734375,0.6162109375,0.6220703125,0.6201171875,0.6484375,0.6953125,0.7353515625,0.7451171875,0.720703125,0.673828125,0.625,0.59375,0.5927734375,0.6181640625,0.654296875,0.6767578125,0.673828125,0.666015625,0.6640625,0.6533203125,0.619140625,0.5615234375,0.4931640625,0.4287109375,0.359375,0.2724609375,0.2080078125,0.2041015625,0.2626953125,0.3505859375,0.4287109375,0.5048828125,0.580078125,0.6162109375,0.5849609375,0.4970703125,0.3974609375,0.3251953125,0.265625,0.2275390625,0.248046875,0.33984375,0.474609375,0.5966796875,0.673828125,0.7294921875,0.755859375,0.736328125,0.6787109375,0.611328125,0.5712890625,0.5703125,0.583984375,0.6044921875,0.6123046875,0.5927734375,0.5439453125,0.4833984375,0.4287109375,0.38671875,0.384765625,0.4375,0.5283203125,0.619140625,0.6708984375,0.673828125,0.6650390625,0.6572265625,0.638671875,0.599609375,0.5439453125,0.482421875,0.4287109375,0.37109375,0.2978515625,0.2431640625,0.23828125,0.2880859375,0.3623046875,0.4287109375,0.486328125,0.5185546875,0.5107421875,0.466796875,0.4111328125,0.376953125,0.376953125,0.38671875,0.39453125,0.400390625,0.4052734375,0.4111328125,0.4189453125,0.4287109375,0.4306640625,0.40234375,0.3544921875,0.3154296875,0.3056640625,0.330078125,0.376953125,0.4228515625,0.4453125,0.447265625,0.4462890625,0.4580078125,0.494140625,0.55078125,0.611328125,0.658203125,0.677734375,0.666015625,0.6376953125,0.6181640625,0.6220703125,0.6162109375,0.552734375,0.4423828125,0.333984375,0.271484375,0.2744140625,0.3251953125,0.400390625,0.5146484375,0.6298828125,0.693359375,0.6845703125,0.6240234375,0.55078125,0.474609375,0.388671875,0.3173828125,0.2841796875,0.2890625,0.310546875,0.3251953125,0.3447265625,0.3876953125,0.435546875,0.45703125,0.4375,0.38671875,0.3251953125,0.27734375,0.2802734375,0.333984375,0.404296875,0.4482421875,0.4375,0.376953125,0.3193359375,0.3193359375,0.3876953125,0.490234375,0.5771484375,0.60546875,0.5703125,0.5244140625,0.5,0.4892578125,0.4765625,0.4462890625,0.3935546875,0.3251953125,0.2666015625,0.265625,0.3291015625,0.4267578125,0.509765625,0.53515625,0.5,0.45703125,0.44921875,0.4775390625,0.521484375,0.5498046875,0.5419921875,0.5,0.4404296875,0.361328125,0.2939453125,0.2763671875,0.314453125,0.3818359375,0.4482421875,0.498046875,0.498046875,0.4443359375,0.3642578125,0.30078125,0.287109375,0.3251953125,0.3759765625,0.42578125,0.4755859375,0.5234375,0.5732421875,0.623046875,0.673828125,0.720703125,0.7451171875,0.7314453125,0.6826171875,0.6220703125,0.5791015625,0.5703125,0.5791015625,0.619140625,0.66796875,0.693359375,0.67578125,0.62109375,0.55078125,0.474609375,0.388671875,0.3173828125,0.2841796875,0.2890625,0.310546875,0.3251953125,0.349609375,0.419921875,0.5185546875,0.599609375,0.630859375,0.607421875,0.55078125,0.494140625,0.4580078125,0.4462890625,0.447265625,0.4453125,0.4228515625,0.376953125,0.3349609375,0.3271484375,0.35546875,0.3984375,0.427734375,0.419921875,0.376953125,0.337890625,0.3447265625,0.396484375,0.462890625,0.505859375,0.4990234375,0.4482421875,0.3916015625,0.3681640625,0.3994140625,0.48046875,0.5791015625,0.6494140625,0.673828125,0.68359375,0.6845703125,0.6552734375,0.5849609375,0.48828125,0.39453125,0.3251953125,0.2783203125,0.2880859375,0.3525390625,0.4365234375,0.4921875,0.48828125,0.4287109375,0.3671875,0.3466796875,0.375,0.431640625,0.48046875,0.4873046875,0.4482421875,0.412109375,0.4375,0.5244140625,0.6318359375,0.708984375,0.720703125,0.673828125,0.5986328125,0.484375,0.369140625,0.3056640625,0.314453125,0.375,0.4482421875,0.51171875,0.5439453125,0.5419921875,0.52734375,0.5263671875,0.5576171875,0.6220703125,0.6904296875,0.736328125,0.73828125,0.29296875,0.3154296875,0.3994140625,0.5009765625,0.5791015625,0.6455078125,0.693359375,0.7021484375,0.669921875,0.6171875,0.5771484375,0.5693359375,0.5673828125,0.55078125,0.517578125,0.4775390625,0.4423828125,0.423828125,0.419921875,0.4296875,0.4716796875,0.52734375,0.5615234375,0.5537109375,0.505859375,0.439453125,0.36328125,0.271484375,0.205078125,0.2041015625,0.2685546875,0.3603515625,0.439453125,0.5009765625,0.521484375,0.4970703125,0.453125,0.42578125,0.44140625,0.5,0.5751953125,0.6650390625,0.7275390625,0.7255859375,0.6591796875,0.5673828125,0.4892578125,0.412109375,0.3212890625,0.2568359375,0.2578125,0.322265625,0.4130859375,0.4892578125,0.5576171875,0.6162109375,0.64453125,0.6337890625,0.5986328125,0.5673828125,0.5595703125,0.546875,0.4912109375,0.4111328125,0.3486328125,0.33203125,0.3662109375,0.4296875,0.4990234375,0.5654296875,0.607421875,0.615234375,0.595703125,0.57421875,0.5693359375,0.55859375,0.5087890625,0.4375,0.3857421875,0.3798828125,0.421875,0.4892578125,0.568359375,0.6552734375,0.708984375,0.6953125,0.6181640625,0.5185546875,0.439453125,0.375,0.33984375,0.357421875,0.421875,0.5029296875,0.55859375,0.5693359375,0.564453125,0.544921875,0.5107421875,0.47265625,0.4404296875,0.4228515625,0.419921875,0.423828125,0.4423828125,0.478515625,0.5205078125,0.556640625,0.5751953125,0.5791015625,0.56640625,0.509765625,0.427734375,0.3623046875,0.34375,0.3759765625,0.439453125,0.5087890625,0.57421875,0.6142578125,0.619140625,0.5966796875,0.57421875,0.5693359375,0.5712890625,0.5732421875,0.5751953125,0.5751953125,0.5732421875,0.5712890625,0.5693359375,0.576171875,0.607421875,0.64453125,0.658203125,0.6337890625,0.5771484375,0.509765625,0.4404296875,0.3798828125,0.3486328125,0.35546875,0.3896484375,0.4208984375,0.4296875,0.4345703125,0.451171875,0.48046875,0.513671875,0.5419921875,0.556640625,0.5595703125,0.5595703125,0.560546875,0.5615234375,0.5625,0.5625,0.560546875,0.5595703125,0.5458984375,0.49609375,0.4287109375,0.3837890625,0.384765625,0.4306640625,0.5,0.5791015625,0.6748046875,0.744140625,0.74609375,0.681640625,0.5888671875,0.509765625,0.44921875,0.4375,0.4755859375,0.533203125,0.5712890625,0.5595703125,0.5,0.421875,0.3388671875,0.291015625,0.3125,0.396484375,0.4990234375,0.5791015625,0.6572265625,0.7470703125,0.8095703125,0.8046875,0.734375,0.6396484375,0.5595703125,0.4873046875,0.4208984375,0.3818359375,0.3818359375,0.408203125,0.4345703125,0.439453125,0.4482421875,0.4873046875,0.5380859375,0.56640625,0.5517578125,0.4990234375,0.4296875,0.36328125,0.3291015625,0.34765625,0.416015625,0.5,0.5576171875,0.5693359375,0.5771484375,0.6171875,0.669921875,0.7021484375,0.693359375,0.6455078125,0.5791015625,0.5126953125,0.4638671875,0.4521484375,0.482421875,0.533203125,0.5712890625,0.5791015625,0.583984375,0.6064453125,0.626953125,0.62109375,0.578125,0.5107421875,0.439453125,0.361328125,0.2685546875,0.2021484375,0.201171875,0.2666015625,0.3603515625,0.439453125,0.5185546875,0.609375,0.6708984375,0.6640625,0.59375,0.498046875,0.419921875,0.345703125,0.2734375,0.2431640625,0.28515625,0.38671875,0.498046875,0.5791015625,0.646484375,0.6943359375,0.7021484375,0.666015625,0.609375,0.568359375,0.5595703125,0.5673828125,0.59375,0.619140625,0.615234375,0.5751953125,0.5087890625,0.439453125,0.376953125,0.3447265625,0.3642578125,0.4306640625,0.5126953125,0.568359375,0.5791015625,0.583984375,0.60546875,0.625,0.6181640625,0.5751953125,0.5087890625,0.439453125,0.36328125,0.2724609375,0.2080078125,0.20703125,0.271484375,0.3623046875,0.439453125,0.5078125,0.556640625,0.5654296875,0.533203125,0.478515625,0.4384765625,0.4296875,0.431640625,0.4326171875,0.4345703125,0.435546875,0.4365234375,0.4384765625,0.439453125,0.431640625,0.3916015625,0.3388671875,0.306640625,0.3154296875,0.36328125,0.4296875,0.48828125,0.5068359375,0.4853515625,0.4482421875,0.427734375,0.44921875,0.509765625,0.5791015625,0.63671875,0.6611328125,0.646484375,0.6083984375,0.576171875,0.5693359375,0.5576171875,0.5,0.4150390625,0.3447265625,0.3232421875,0.35546875,0.419921875,0.5,0.603515625,0.6904296875,0.71484375,0.6689453125,0.5869140625,0.509765625,0.4375,0.373046875,0.3388671875,0.3447265625,0.3779296875,0.41015625,0.419921875,0.4306640625,0.47265625,0.525390625,0.5546875,0.5400390625,0.48828125,0.419921875,0.3623046875,0.353515625,0.396484375,0.458984375,0.5,0.4892578125,0.4296875,0.3720703125,0.3759765625,0.4423828125,0.5361328125,0.60546875,0.61328125,0.5595703125,0.5,0.474609375,0.484375,0.505859375,0.5126953125,0.4833984375,0.419921875,0.361328125,0.3583984375,0.4140625,0.494140625,0.552734375,0.5546875,0.5,0.4423828125,0.4326171875,0.470703125,0.5283203125,0.56640625,0.556640625,0.5,0.4228515625,0.3310546875,0.263671875,0.2607421875,0.322265625,0.412109375,0.4892578125,0.546875,0.5498046875,0.49609375,0.4189453125,0.3642578125,0.3642578125,0.419921875,0.48046875,0.509765625,0.5078125,0.4912109375,0.4892578125,0.5185546875,0.5791015625,0.6455078125,0.6923828125,0.701171875,0.6669921875,0.611328125,0.5693359375,0.5595703125,0.568359375,0.603515625,0.646484375,0.6630859375,0.638671875,0.580078125,0.509765625,0.4375,0.373046875,0.3388671875,0.3447265625,0.3779296875,0.41015625,0.419921875,0.43359375,0.486328125,0.55859375,0.611328125,0.6171875,0.576171875,0.509765625,0.44921875,0.427734375,0.4482421875,0.4853515625,0.5068359375,0.48828125,0.4296875,0.373046875,0.3623046875,0.400390625,0.458984375,0.4970703125,0.486328125,0.4296875,0.3740234375,0.3720703125,0.4248046875,0.5,0.55078125,0.546875,0.4892578125,0.4228515625,0.3818359375,0.3876953125,0.4404296875,0.5126953125,0.5654296875,0.5791015625,0.5869140625,0.609375,0.6259765625,0.61328125,0.5634765625,0.4921875,0.419921875,0.3623046875,0.35546875,0.400390625,0.46484375,0.5087890625,0.4990234375,0.439453125,0.380859375,0.3740234375,0.4228515625,0.4951171875,0.546875,0.544921875,0.4892578125,0.4345703125,0.4365234375,0.49609375,0.578125,0.63671875,0.6357421875,0.5791015625,0.4990234375,0.3955078125,0.30859375,0.2841796875,0.330078125,0.412109375,0.4892578125,0.55078125,0.5712890625,0.548828125,0.509765625,0.4873046875,0.5078125,0.5693359375,0.638671875,0.6904296875,0.701171875,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.2412109375,0.2177734375,0.2626953125,0.34375,0.419921875,0.48828125,0.5419921875,0.55859375,0.5322265625,0.4814453125,0.4404296875,0.4296875,0.431640625,0.4501953125,0.484375,0.525390625,0.5595703125,0.5771484375,0.5791015625,0.5869140625,0.626953125,0.6787109375,0.708984375,0.697265625,0.6474609375,0.5791015625,0.5009765625,0.4052734375,0.3349609375,0.328125,0.3896484375,0.48046875,0.5595703125,0.6181640625,0.62109375,0.5673828125,0.4912109375,0.4375,0.44140625,0.5,0.5791015625,0.673828125,0.7412109375,0.7431640625,0.6787109375,0.5869140625,0.509765625,0.431640625,0.33984375,0.2734375,0.271484375,0.333984375,0.423828125,0.5,0.564453125,0.607421875,0.6064453125,0.5615234375,0.498046875,0.4501953125,0.439453125,0.4326171875,0.4072265625,0.3818359375,0.3857421875,0.4287109375,0.49609375,0.5693359375,0.6357421875,0.669921875,0.6513671875,0.5830078125,0.4990234375,0.44140625,0.4296875,0.4228515625,0.3916015625,0.3544921875,0.3408203125,0.365234375,0.421875,0.4892578125,0.5673828125,0.6669921875,0.7470703125,0.7666015625,0.7177734375,0.6357421875,0.5595703125,0.4873046875,0.4189453125,0.373046875,0.365234375,0.38671875,0.412109375,0.419921875,0.4248046875,0.4443359375,0.4794921875,0.51953125,0.5546875,0.57421875,0.5791015625,0.5771484375,0.5595703125,0.525390625,0.484375,0.4501953125,0.431640625,0.4296875,0.4248046875,0.40234375,0.3828125,0.3916015625,0.4365234375,0.505859375,0.5791015625,0.6455078125,0.6796875,0.658203125,0.5869140625,0.4970703125,0.435546875,0.419921875,0.41796875,0.4169921875,0.4169921875,0.4169921875,0.4189453125,0.419921875,0.419921875,0.4306640625,0.48046875,0.5478515625,0.595703125,0.5986328125,0.5556640625,0.4892578125,0.423828125,0.3828125,0.390625,0.443359375,0.515625,0.5673828125,0.5791015625,0.576171875,0.55859375,0.5283203125,0.4912109375,0.4599609375,0.443359375,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.431640625,0.3994140625,0.361328125,0.3486328125,0.3740234375,0.431640625,0.5,0.576171875,0.66796875,0.7353515625,0.73828125,0.6767578125,0.5869140625,0.509765625,0.451171875,0.4404296875,0.478515625,0.5361328125,0.572265625,0.5595703125,0.5,0.4189453125,0.3193359375,0.2421875,0.2275390625,0.2802734375,0.3642578125,0.439453125,0.515625,0.6025390625,0.662109375,0.65625,0.5888671875,0.49609375,0.419921875,0.3564453125,0.322265625,0.33984375,0.404296875,0.4873046875,0.544921875,0.5595703125,0.5703125,0.61328125,0.666015625,0.697265625,0.685546875,0.6357421875,0.5693359375,0.4990234375,0.4296875,0.3828125,0.37109375,0.3896484375,0.412109375,0.419921875,0.431640625,0.4755859375,0.533203125,0.5673828125,0.5576171875,0.5078125,0.439453125,0.37109375,0.318359375,0.302734375,0.3271484375,0.375,0.412109375,0.419921875,0.431640625,0.4892578125,0.5732421875,0.640625,0.66015625,0.6259765625,0.5595703125,0.48046875,0.3876953125,0.3232421875,0.3251953125,0.3916015625,0.482421875,0.5595703125,0.6357421875,0.7275390625,0.7958984375,0.8017578125,0.7421875,0.6552734375,0.5791015625,0.4990234375,0.3896484375,0.2900390625,0.2490234375,0.2802734375,0.353515625,0.4296875,0.4990234375,0.548828125,0.5595703125,0.525390625,0.4697265625,0.4287109375,0.419921875,0.4345703125,0.4921875,0.57421875,0.6396484375,0.6572265625,0.623046875,0.5595703125,0.4892578125,0.421875,0.3759765625,0.3681640625,0.3876953125,0.412109375,0.419921875,0.4345703125,0.49609375,0.583984375,0.6552734375,0.6767578125,0.6435546875,0.5791015625,0.5009765625,0.4072265625,0.337890625,0.3349609375,0.3984375,0.490234375,0.5693359375,0.6396484375,0.6923828125,0.70703125,0.677734375,0.6240234375,0.5810546875,0.5693359375,0.5673828125,0.5654296875,0.5625,0.560546875,0.5595703125,0.5595703125,0.5595703125,0.5498046875,0.5107421875,0.4619140625,0.4365234375,0.4541015625,0.5087890625,0.5791015625,0.6376953125,0.640625,0.5859375,0.5078125,0.4521484375,0.453125,0.509765625,0.576171875,0.619140625,0.6162109375,0.568359375,0.5,0.451171875,0.439453125,0.43359375,0.4091796875,0.388671875,0.3955078125,0.439453125,0.5078125,0.5791015625,0.6552734375,0.7373046875,0.783203125,0.7607421875,0.6748046875,0.5712890625,0.4892578125,0.421875,0.3818359375,0.3896484375,0.4443359375,0.517578125,0.568359375,0.5791015625,0.5869140625,0.6259765625,0.6767578125,0.7060546875,0.6943359375,0.6455078125,0.5791015625,0.5224609375,0.5107421875,0.5458984375,0.5986328125,0.6318359375,0.6181640625,0.5595703125,0.498046875,0.474609375,0.48828125,0.5166015625,0.5283203125,0.5029296875,0.439453125,0.3828125,0.3876953125,0.45703125,0.5517578125,0.62109375,0.6259765625,0.5693359375,0.5078125,0.4873046875,0.509765625,0.548828125,0.5712890625,0.55078125,0.4892578125,0.4296875,0.4208984375,0.462890625,0.5263671875,0.568359375,0.55859375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.560546875,0.580078125,0.5546875,0.509765625,0.4833984375,0.5,0.5595703125,0.6142578125,0.6083984375,0.5390625,0.4443359375,0.376953125,0.373046875,0.4296875,0.4990234375,0.5517578125,0.564453125,0.53125,0.4755859375,0.431640625,0.419921875,0.4306640625,0.4814453125,0.5546875,0.609375,0.6171875,0.5771484375,0.509765625,0.44140625,0.3974609375,0.3994140625,0.4482421875,0.517578125,0.5673828125,0.5791015625,0.5869140625,0.6171875,0.650390625,0.658203125,0.6279296875,0.568359375,0.5,0.4443359375,0.4462890625,0.5048828125,0.5849609375,0.640625,0.6376953125,0.5791015625,0.51953125,0.5068359375,0.544921875,0.603515625,0.6416015625,0.62890625,0.5693359375,0.5078125,0.4892578125,0.5146484375,0.55859375,0.5859375,0.5693359375,0.509765625,0.439453125,0.3779296875,0.3466796875,0.353515625,0.384765625,0.4140625,0.419921875,0.431640625,0.490234375,0.578125,0.650390625,0.673828125,0.6435546875,0.5791015625,0.521484375,0.51171875,0.5517578125,0.6123046875,0.6513671875,0.6396484375,0.5791015625,0.5166015625,0.4931640625,0.5107421875,0.546875,0.5673828125,0.5478515625,0.4892578125,0.4306640625,0.4140625,0.4384765625,0.48046875,0.505859375,0.48828125,0.4296875,0.35546875,0.2744140625,0.2275390625,0.248046875,0.3291015625,0.4296875,0.509765625,0.56640625,0.56640625,0.5087890625,0.4267578125,0.3671875,0.365234375,0.419921875,0.486328125,0.5380859375,0.5537109375,0.2626953125,0.203125,0.2099609375,0.2626953125,0.3251953125,0.3876953125,0.4453125,0.4755859375,0.4677734375,0.431640625,0.39453125,0.376953125,0.3759765625,0.41015625,0.4814453125,0.5693359375,0.640625,0.6748046875,0.673828125,0.671875,0.7001953125,0.744140625,0.7744140625,0.7705078125,0.7314453125,0.673828125,0.6015625,0.501953125,0.4140625,0.3828125,0.4189453125,0.494140625,0.5703125,0.6279296875,0.6298828125,0.57421875,0.4951171875,0.439453125,0.44140625,0.5,0.5791015625,0.673828125,0.744140625,0.7529296875,0.7001953125,0.6201171875,0.55078125,0.4833984375,0.40234375,0.341796875,0.33203125,0.3759765625,0.4423828125,0.5,0.5478515625,0.576171875,0.5703125,0.529296875,0.4755859375,0.4375,0.4287109375,0.423828125,0.4052734375,0.39453125,0.4150390625,0.4716796875,0.5478515625,0.6220703125,0.6845703125,0.701171875,0.65234375,0.552734375,0.4462890625,0.3828125,0.376953125,0.3818359375,0.3681640625,0.3486328125,0.3408203125,0.3583984375,0.3984375,0.4482421875,0.5087890625,0.5966796875,0.6787109375,0.7158203125,0.693359375,0.6337890625,0.5703125,0.5029296875,0.4228515625,0.3486328125,0.3056640625,0.298828125,0.3125,0.3251953125,0.3427734375,0.3857421875,0.4580078125,0.541015625,0.61328125,0.65625,0.673828125,0.6748046875,0.640625,0.5693359375,0.4814453125,0.41015625,0.3759765625,0.376953125,0.384765625,0.3857421875,0.400390625,0.4443359375,0.515625,0.5986328125,0.673828125,0.736328125,0.7529296875,0.6962890625,0.578125,0.4453125,0.353515625,0.3251953125,0.3154296875,0.3076171875,0.3056640625,0.310546875,0.318359375,0.32421875,0.3251953125,0.3369140625,0.3876953125,0.4609375,0.5185546875,0.5341796875,0.5048828125,0.4482421875,0.3935546875,0.3759765625,0.4150390625,0.5009765625,0.5966796875,0.6591796875,0.673828125,0.66796875,0.6376953125,0.5830078125,0.5185546875,0.46484375,0.4345703125,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.423828125,0.40234375,0.3798828125,0.376953125,0.40234375,0.4482421875,0.5,0.55859375,0.6376953125,0.705078125,0.72265625,0.6845703125,0.6171875,0.55078125,0.5,0.4912109375,0.521484375,0.564453125,0.5849609375,0.5615234375,0.5,0.4208984375,0.330078125,0.263671875,0.25390625,0.30078125,0.37109375,0.4287109375,0.4833984375,0.537109375,0.5615234375,0.5341796875,0.4638671875,0.384765625,0.3251953125,0.2802734375,0.2666015625,0.3037109375,0.3857421875,0.48046875,0.546875,0.5703125,0.5888671875,0.6318359375,0.68359375,0.7138671875,0.708984375,0.671875,0.6220703125,0.5634765625,0.484375,0.4013671875,0.33984375,0.314453125,0.3154296875,0.3251953125,0.3466796875,0.40234375,0.4736328125,0.5224609375,0.5263671875,0.4873046875,0.4287109375,0.3681640625,0.3173828125,0.2900390625,0.29296875,0.314453125,0.330078125,0.3251953125,0.3310546875,0.39453125,0.5009765625,0.6005859375,0.6494140625,0.6328125,0.5703125,0.4931640625,0.4111328125,0.3603515625,0.369140625,0.431640625,0.5107421875,0.5703125,0.62890625,0.708984375,0.779296875,0.806640625,0.7822265625,0.7275390625,0.673828125,0.607421875,0.4921875,0.36328125,0.2763671875,0.26171875,0.3076171875,0.376953125,0.4443359375,0.484375,0.478515625,0.4296875,0.3671875,0.3271484375,0.3251953125,0.3486328125,0.4150390625,0.509765625,0.591796875,0.62890625,0.615234375,0.5703125,0.513671875,0.4404296875,0.369140625,0.3212890625,0.306640625,0.314453125,0.3251953125,0.3525390625,0.4375,0.5634765625,0.6767578125,0.7353515625,0.7265625,0.673828125,0.6025390625,0.509765625,0.43359375,0.4150390625,0.462890625,0.544921875,0.6220703125,0.693359375,0.7509765625,0.7724609375,0.74609375,0.69140625,0.6416015625,0.6220703125,0.6103515625,0.5966796875,0.5830078125,0.57421875,0.5703125,0.5693359375,0.5703125,0.5625,0.533203125,0.5029296875,0.5,0.5361328125,0.6015625,0.673828125,0.7314453125,0.7333984375,0.673828125,0.5849609375,0.515625,0.50390625,0.55078125,0.6083984375,0.6376953125,0.6220703125,0.5634765625,0.4912109375,0.4404296875,0.4287109375,0.42578125,0.419921875,0.4287109375,0.4677734375,0.533203125,0.6083984375,0.673828125,0.7373046875,0.796875,0.8115234375,0.755859375,0.646484375,0.53125,0.4482421875,0.384765625,0.3662109375,0.41015625,0.5048828125,0.6064453125,0.66796875,0.673828125,0.669921875,0.6923828125,0.728515625,0.7548828125,0.7529296875,0.7216796875,0.673828125,0.6298828125,0.6162109375,0.62890625,0.6494140625,0.65234375,0.625,0.5703125,0.5166015625,0.4970703125,0.5078125,0.5263671875,0.52734375,0.4931640625,0.4287109375,0.3740234375,0.38671875,0.4697265625,0.5810546875,0.6640625,0.6767578125,0.6220703125,0.5576171875,0.5263671875,0.52734375,0.5419921875,0.5439453125,0.51171875,0.4482421875,0.3896484375,0.384765625,0.4365234375,0.5107421875,0.5625,0.55859375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5625,0.587890625,0.5712890625,0.533203125,0.5068359375,0.5185546875,0.5703125,0.615234375,0.5947265625,0.509765625,0.40234375,0.3271484375,0.3203125,0.376953125,0.447265625,0.5,0.5087890625,0.4697265625,0.40234375,0.3466796875,0.3251953125,0.3310546875,0.392578125,0.494140625,0.5888671875,0.6328125,0.6142578125,0.55078125,0.484375,0.4462890625,0.4609375,0.5234375,0.6044921875,0.66015625,0.673828125,0.6767578125,0.6845703125,0.6845703125,0.66015625,0.611328125,0.552734375,0.5,0.4638671875,0.4892578125,0.572265625,0.669921875,0.7333984375,0.732421875,0.673828125,0.6123046875,0.595703125,0.6240234375,0.6708984375,0.69921875,0.6826171875,0.6220703125,0.55859375,0.533203125,0.5498046875,0.587890625,0.6142578125,0.6025390625,0.55078125,0.4873046875,0.421875,0.3671875,0.337890625,0.33203125,0.33203125,0.3251953125,0.33203125,0.40234375,0.5234375,0.646484375,0.7197265625,0.7236328125,0.673828125,0.6240234375,0.6201171875,0.6630859375,0.71875,0.7509765625,0.734375,0.673828125,0.60546875,0.5556640625,0.529296875,0.521484375,0.515625,0.4931640625,0.4482421875,0.4033203125,0.3876953125,0.400390625,0.4248046875,0.4375,0.421875,0.376953125,0.3232421875,0.271484375,0.2548828125,0.296875,0.384765625,0.48046875,0.55078125,0.5986328125,0.5859375,0.509765625,0.40234375,0.3154296875,0.2900390625,0.3251953125,0.3759765625,0.419921875,0.4443359375,0.3251953125,0.234375,0.19921875,0.216796875,0.2587890625,0.3095703125,0.3701171875,0.421875,0.44140625,0.4267578125,0.3935546875,0.3642578125,0.3505859375,0.392578125,0.4912109375,0.61328125,0.7119140625,0.7529296875,0.740234375,0.720703125,0.7275390625,0.7568359375,0.787109375,0.7978515625,0.7802734375,0.740234375,0.6806640625,0.5810546875,0.4716796875,0.4052734375,0.4052734375,0.458984375,0.5302734375,0.5888671875,0.595703125,0.548828125,0.48046875,0.43359375,0.4404296875,0.5,0.578125,0.669921875,0.740234375,0.7568359375,0.71875,0.65625,0.6044921875,0.5556640625,0.498046875,0.4521484375,0.435546875,0.4501953125,0.4775390625,0.5,0.517578125,0.52734375,0.5244140625,0.5078125,0.4873046875,0.47265625,0.46875,0.462890625,0.44140625,0.4248046875,0.4384765625,0.4892578125,0.5615234375,0.634765625,0.6943359375,0.69921875,0.6318359375,0.5185546875,0.41015625,0.3544921875,0.3642578125,0.3876953125,0.3994140625,0.3974609375,0.3857421875,0.376953125,0.37890625,0.39453125,0.421875,0.478515625,0.546875,0.59375,0.6015625,0.5732421875,0.5302734375,0.4755859375,0.39453125,0.3056640625,0.2421875,0.220703125,0.2333984375,0.2587890625,0.2919921875,0.3544921875,0.447265625,0.5517578125,0.64453125,0.70703125,0.740234375,0.7529296875,0.7119140625,0.61328125,0.4912109375,0.392578125,0.3505859375,0.3642578125,0.388671875,0.412109375,0.447265625,0.5048828125,0.58203125,0.6650390625,0.740234375,0.802734375,0.8115234375,0.7373046875,0.5908203125,0.4248046875,0.3056640625,0.2587890625,0.2333984375,0.2138671875,0.208984375,0.220703125,0.240234375,0.2548828125,0.2587890625,0.2685546875,0.3115234375,0.375,0.4306640625,0.4521484375,0.435546875,0.39453125,0.3583984375,0.3671875,0.435546875,0.546875,0.6572265625,0.7255859375,0.740234375,0.7333984375,0.701171875,0.640625,0.568359375,0.5087890625,0.4755859375,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.466796875,0.4599609375,0.4521484375,0.4521484375,0.462890625,0.48046875,0.5,0.5263671875,0.580078125,0.640625,0.6796875,0.6806640625,0.6484375,0.6044921875,0.568359375,0.5634765625,0.5849609375,0.607421875,0.6044921875,0.5654296875,0.5,0.4267578125,0.359375,0.3251953125,0.33984375,0.3896484375,0.44140625,0.46875,0.4853515625,0.484375,0.455078125,0.3994140625,0.3349609375,0.28515625,0.2587890625,0.2431640625,0.2470703125,0.2841796875,0.3525390625,0.431640625,0.4951171875,0.5302734375,0.560546875,0.603515625,0.646484375,0.6708984375,0.6708984375,0.654296875,0.634765625,0.6044921875,0.529296875,0.421875,0.3193359375,0.2548828125,0.2392578125,0.2587890625,0.2958984375,0.3671875,0.4521484375,0.5166015625,0.53515625,0.51171875,0.46875,0.423828125,0.380859375,0.3447265625,0.3193359375,0.3017578125,0.283203125,0.2587890625,0.25,0.3046875,0.4140625,0.52734375,0.59375,0.58984375,0.5302734375,0.45703125,0.3935546875,0.3662109375,0.388671875,0.4462890625,0.5009765625,0.5302734375,0.5556640625,0.6064453125,0.6708984375,0.7265625,0.755859375,0.755859375,0.740234375,0.703125,0.6015625,0.4609375,0.3388671875,0.2822265625,0.30078125,0.3642578125,0.427734375,0.4521484375,0.421875,0.3525390625,0.28125,0.24609375,0.2587890625,0.2939453125,0.3564453125,0.4365234375,0.5048828125,0.5419921875,0.5458984375,0.5302734375,0.5009765625,0.439453125,0.35546875,0.28125,0.2392578125,0.2373046875,0.2587890625,0.3017578125,0.40625,0.5517578125,0.6875,0.7666015625,0.7763671875,0.740234375,0.68359375,0.595703125,0.5107421875,0.4716796875,0.4951171875,0.5615234375,0.634765625,0.7080078125,0.7763671875,0.8095703125,0.7900390625,0.7314453125,0.6708984375,0.634765625,0.6064453125,0.5751953125,0.546875,0.5302734375,0.5263671875,0.5283203125,0.5302734375,0.5244140625,0.5087890625,0.501953125,0.52734375,0.587890625,0.6650390625,0.740234375,0.80078125,0.8095703125,0.7587890625,0.673828125,0.5986328125,0.5732421875,0.6044921875,0.6455078125,0.662109375,0.640625,0.5849609375,0.521484375,0.478515625,0.46875,0.46875,0.4755859375,0.501953125,0.5546875,0.6240234375,0.689453125,0.740234375,0.7861328125,0.8193359375,0.8037109375,0.7236328125,0.599609375,0.478515625,0.39453125,0.3359375,0.3408203125,0.4248046875,0.5576171875,0.68359375,0.748046875,0.740234375,0.716796875,0.708984375,0.7177734375,0.7373046875,0.7529296875,0.7548828125,0.740234375,0.72265625,0.7099609375,0.693359375,0.6650390625,0.6240234375,0.576171875,0.5302734375,0.494140625,0.4951171875,0.52734375,0.560546875,0.5673828125,0.5341796875,0.46875,0.4130859375,0.4228515625,0.5,0.6044921875,0.681640625,0.6904296875,0.634765625,0.5693359375,0.529296875,0.5166015625,0.513671875,0.5,0.4599609375,0.39453125,0.3369140625,0.3388671875,0.40234375,0.4912109375,0.5546875,0.556640625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5634765625,0.59375,0.580078125,0.5380859375,0.5,0.4951171875,0.5302734375,0.560546875,0.53125,0.44921875,0.3564453125,0.298828125,0.3046875,0.3642578125,0.4345703125,0.490234375,0.5,0.4521484375,0.37109375,0.296875,0.2587890625,0.2509765625,0.3154296875,0.44140625,0.57421875,0.658203125,0.6630859375,0.6044921875,0.5380859375,0.501953125,0.5185546875,0.5849609375,0.6689453125,0.7265625,0.740234375,0.7373046875,0.71875,0.6796875,0.6240234375,0.56640625,0.5234375,0.5,0.4970703125,0.5537109375,0.6572265625,0.7587890625,0.8134765625,0.8017578125,0.740234375,0.677734375,0.654296875,0.6708984375,0.7041015625,0.720703125,0.697265625,0.634765625,0.5703125,0.541015625,0.5546875,0.5966796875,0.634765625,0.6396484375,0.6044921875,0.5556640625,0.49609375,0.4306640625,0.369140625,0.3212890625,0.2861328125,0.2587890625,0.2509765625,0.31640625,0.4521484375,0.6103515625,0.728515625,0.76953125,0.740234375,0.7060546875,0.71484375,0.759765625,0.8095703125,0.830078125,0.8037109375,0.740234375,0.6650390625,0.5810546875,0.5048828125,0.4521484375,0.4248046875,0.4111328125,0.39453125,0.3779296875,0.37109375,0.375,0.3828125,0.38671875,0.380859375,0.3642578125,0.3447265625,0.333984375,0.3505859375,0.40234375,0.478515625,0.552734375,0.6044921875,0.6376953125,0.6181640625,0.53515625,0.4169921875,0.3095703125,0.2548828125,0.2587890625,0.2783203125,0.302734375,0.3330078125,0.408203125,0.30859375,0.2490234375,0.23828125,0.2587890625,0.2939453125,0.3564453125,0.4248046875,0.46875,0.470703125,0.439453125,0.39453125,0.3642578125,0.3994140625,0.501953125,0.6318359375,0.734375,0.76953125,0.740234375,0.69921875,0.681640625,0.693359375,0.7236328125,0.751953125,0.759765625,0.740234375,0.6982421875,0.6044921875,0.4853515625,0.39453125,0.3671875,0.40234375,0.46875,0.529296875,0.5439453125,0.5107421875,0.4580078125,0.4248046875,0.439453125,0.5,0.576171875,0.66015625,0.7236328125,0.740234375,0.7119140625,0.6669921875,0.634765625,0.6083984375,0.583984375,0.5634765625,0.546875,0.5322265625,0.517578125,0.5,0.4814453125,0.4716796875,0.474609375,0.4912109375,0.51171875,0.5263671875,0.5302734375,0.521484375,0.4892578125,0.4521484375,0.44140625,0.4716796875,0.533203125,0.6044921875,0.6630859375,0.6640625,0.5966796875,0.4912109375,0.3994140625,0.365234375,0.39453125,0.4404296875,0.48046875,0.4970703125,0.4775390625,0.43359375,0.3896484375,0.3642578125,0.3515625,0.3662109375,0.4052734375,0.4521484375,0.4853515625,0.490234375,0.46875,0.4326171875,0.361328125,0.275390625,0.2119140625,0.193359375,0.2158203125,0.2587890625,0.3076171875,0.373046875,0.455078125,0.5439453125,0.6259765625,0.69140625,0.740234375,0.76953125,0.734375,0.6318359375,0.501953125,0.3994140625,0.3642578125,0.39453125,0.4365234375,0.4697265625,0.501953125,0.5439453125,0.6005859375,0.6689453125,0.740234375,0.8046875,0.8251953125,0.7646484375,0.626953125,0.45703125,0.32421875,0.2587890625,0.21484375,0.181640625,0.1728515625,0.1923828125,0.2265625,0.2529296875,0.2587890625,0.2646484375,0.29296875,0.3359375,0.375,0.3935546875,0.3876953125,0.3642578125,0.3466796875,0.373046875,0.4521484375,0.5634765625,0.6669921875,0.7275390625,0.740234375,0.7353515625,0.7099609375,0.6630859375,0.607421875,0.560546875,0.53515625,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5322265625,0.5390625,0.546875,0.546875,0.5361328125,0.5185546875,0.5,0.48828125,0.505859375,0.5517578125,0.607421875,0.646484375,0.6552734375,0.634765625,0.6162109375,0.6220703125,0.640625,0.646484375,0.6220703125,0.568359375,0.5,0.4326171875,0.3955078125,0.4033203125,0.44921875,0.505859375,0.5380859375,0.5302734375,0.5029296875,0.4443359375,0.3662109375,0.294921875,0.251953125,0.244140625,0.2587890625,0.2763671875,0.2890625,0.3056640625,0.333984375,0.375,0.4228515625,0.46875,0.513671875,0.552734375,0.5771484375,0.5849609375,0.5849609375,0.5888671875,0.6044921875,0.6083984375,0.5546875,0.447265625,0.328125,0.2451171875,0.2255859375,0.2587890625,0.3134765625,0.39453125,0.482421875,0.546875,0.568359375,0.5556640625,0.5302734375,0.50390625,0.478515625,0.447265625,0.4052734375,0.3564453125,0.3056640625,0.2587890625,0.2294921875,0.263671875,0.35546875,0.4609375,0.5283203125,0.52734375,0.46875,0.40234375,0.3603515625,0.361328125,0.3994140625,0.4501953125,0.4775390625,0.46875,0.4541015625,0.462890625,0.5048828125,0.5771484375,0.6552734375,0.712890625,0.740234375,0.740234375,0.6708984375,0.5439453125,0.4140625,0.3359375,0.3349609375,0.39453125,0.455078125,0.4638671875,0.4140625,0.328125,0.2529296875,0.2275390625,0.2587890625,0.3056640625,0.3525390625,0.39453125,0.4228515625,0.439453125,0.4521484375,0.46875,0.4765625,0.4384765625,0.361328125,0.2783203125,0.2255859375,0.22265625,0.2587890625,0.318359375,0.4248046875,0.560546875,0.6796875,0.748046875,0.7607421875,0.740234375,0.701171875,0.6240234375,0.53515625,0.48046875,0.4833984375,0.5341796875,0.6044921875,0.6806640625,0.759765625,0.806640625,0.794921875,0.7333984375,0.6591796875,0.6044921875,0.5576171875,0.5078125,0.46875,0.4521484375,0.4560546875,0.4658203125,0.46875,0.4658203125,0.45703125,0.4638671875,0.5048828125,0.5791015625,0.6640625,0.740234375,0.8037109375,0.828125,0.7978515625,0.728515625,0.6572265625,0.6220703125,0.634765625,0.658203125,0.6650390625,0.646484375,0.607421875,0.564453125,0.5361328125,0.5302734375,0.53125,0.541015625,0.568359375,0.61328125,0.6650390625,0.7099609375,0.740234375,0.7666015625,0.7822265625,0.7568359375,0.6767578125,0.5595703125,0.4462890625,0.3642578125,0.3095703125,0.3291015625,0.43359375,0.58203125,0.7109375,0.765625,0.740234375,0.693359375,0.6494140625,0.626953125,0.6376953125,0.6748046875,0.7158203125,0.740234375,0.755859375,0.751953125,0.71484375,0.646484375,0.5673828125,0.50390625,0.46875,0.455078125,0.484375,0.546875,0.6044921875,0.6240234375,0.5947265625,0.5302734375,0.4716796875,0.4697265625,0.52734375,0.607421875,0.6640625,0.6630859375,0.6044921875,0.5390625,0.4990234375,0.4853515625,0.482421875,0.4697265625,0.4296875,0.3642578125,0.3076171875,0.3134765625,0.3837890625,0.48046875,0.55078125,0.556640625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.564453125,0.5986328125,0.5849609375,0.53515625,0.48046875,0.4541015625,0.46875,0.4833984375,0.451171875,0.38671875,0.3251953125,0.3017578125,0.330078125,0.39453125,0.4677734375,0.529296875,0.546875,0.4990234375,0.4072265625,0.31640625,0.2587890625,0.2333984375,0.2880859375,0.4169921875,0.5654296875,0.669921875,0.689453125,0.634765625,0.5673828125,0.5283203125,0.5380859375,0.5966796875,0.6728515625,0.7275390625,0.740234375,0.7314453125,0.69140625,0.6240234375,0.5517578125,0.501953125,0.486328125,0.5,0.533203125,0.6181640625,0.728515625,0.814453125,0.8408203125,0.806640625,0.740234375,0.6767578125,0.650390625,0.66015625,0.6845703125,0.6943359375,0.66796875,0.6044921875,0.5390625,0.505859375,0.5185546875,0.568359375,0.6240234375,0.650390625,0.634765625,0.6064453125,0.568359375,0.513671875,0.4443359375,0.3720703125,0.30859375,0.2587890625,0.2294921875,0.2705078125,0.388671875,0.546875,0.6826171875,0.748046875,0.740234375,0.724609375,0.7470703125,0.794921875,0.8369140625,0.8427734375,0.806640625,0.740234375,0.6591796875,0.5498046875,0.4384765625,0.361328125,0.3349609375,0.3447265625,0.3642578125,0.380859375,0.38671875,0.3828125,0.375,0.37109375,0.3779296875,0.39453125,0.4150390625,0.4423828125,0.48046875,0.5244140625,0.5693359375,0.6064453125,0.634765625,0.654296875,0.6396484375,0.57421875,0.4716796875,0.3642578125,0.2900390625,0.2587890625,0.240234375,0.2333984375,0.2568359375,0.4775390625,0.3994140625,0.34375,0.3212890625,0.3251953125,0.3466796875,0.4052734375,0.48046875,0.5341796875,0.5419921875,0.505859375,0.4482421875,0.40234375,0.419921875,0.5048828125,0.6162109375,0.701171875,0.7197265625,0.673828125,0.615234375,0.576171875,0.572265625,0.603515625,0.646484375,0.6748046875,0.673828125,0.6474609375,0.568359375,0.458984375,0.3681640625,0.3349609375,0.36328125,0.4287109375,0.490234375,0.509765625,0.4853515625,0.443359375,0.4189453125,0.4384765625,0.5,0.5732421875,0.646484375,0.6953125,0.701171875,0.673828125,0.638671875,0.6220703125,0.6162109375,0.623046875,0.6318359375,0.6259765625,0.5966796875,0.55078125,0.5,0.451171875,0.4228515625,0.4287109375,0.4697265625,0.5234375,0.5615234375,0.5703125,0.5595703125,0.515625,0.4580078125,0.4228515625,0.431640625,0.4814453125,0.55078125,0.6103515625,0.6142578125,0.55859375,0.4755859375,0.41015625,0.400390625,0.4482421875,0.5126953125,0.5791015625,0.6123046875,0.58984375,0.5185546875,0.4375,0.376953125,0.330078125,0.3056640625,0.3154296875,0.3544921875,0.40234375,0.4306640625,0.4287109375,0.408203125,0.3525390625,0.28125,0.232421875,0.228515625,0.2666015625,0.3251953125,0.384765625,0.4365234375,0.4794921875,0.51953125,0.5625,0.6142578125,0.673828125,0.7197265625,0.701171875,0.6162109375,0.5048828125,0.419921875,0.40234375,0.4482421875,0.5029296875,0.533203125,0.5419921875,0.544921875,0.5625,0.6064453125,0.673828125,0.7431640625,0.7890625,0.7705078125,0.6748046875,0.5322265625,0.4033203125,0.3251953125,0.265625,0.220703125,0.2099609375,0.2353515625,0.28125,0.3173828125,0.3251953125,0.328125,0.3408203125,0.3603515625,0.3779296875,0.3876953125,0.3857421875,0.376953125,0.3740234375,0.40234375,0.466796875,0.548828125,0.623046875,0.6650390625,0.673828125,0.6708984375,0.658203125,0.6357421875,0.6083984375,0.5849609375,0.572265625,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5751953125,0.5966796875,0.619140625,0.6220703125,0.5966796875,0.55078125,0.5,0.4541015625,0.4375,0.4638671875,0.521484375,0.5849609375,0.6220703125,0.6220703125,0.619140625,0.6376953125,0.662109375,0.6650390625,0.6318359375,0.5703125,0.5,0.4384765625,0.423828125,0.46484375,0.53515625,0.5947265625,0.6083984375,0.5703125,0.5078125,0.4111328125,0.3095703125,0.244140625,0.2373046875,0.2744140625,0.3251953125,0.369140625,0.3828125,0.3701171875,0.349609375,0.3466796875,0.3740234375,0.4287109375,0.484375,0.5146484375,0.5146484375,0.5,0.4912109375,0.5068359375,0.55078125,0.5869140625,0.5615234375,0.474609375,0.3671875,0.2900390625,0.2783203125,0.3251953125,0.392578125,0.47265625,0.546875,0.58984375,0.5966796875,0.5830078125,0.5703125,0.5625,0.5615234375,0.55078125,0.5166015625,0.4580078125,0.3896484375,0.3251953125,0.2783203125,0.2880859375,0.3525390625,0.4365234375,0.4921875,0.48828125,0.4287109375,0.3662109375,0.34375,0.3681640625,0.419921875,0.4638671875,0.46875,0.4287109375,0.3779296875,0.3408203125,0.34765625,0.412109375,0.5146484375,0.611328125,0.673828125,0.7080078125,0.67578125,0.58203125,0.4697265625,0.39453125,0.390625,0.4482421875,0.505859375,0.5078125,0.4482421875,0.359375,0.2900390625,0.2783203125,0.3251953125,0.380859375,0.408203125,0.4052734375,0.384765625,0.37109375,0.3857421875,0.4287109375,0.4677734375,0.45703125,0.3974609375,0.322265625,0.2724609375,0.275390625,0.3251953125,0.39453125,0.48828125,0.5849609375,0.6552734375,0.6845703125,0.68359375,0.673828125,0.650390625,0.5859375,0.50390625,0.4453125,0.439453125,0.482421875,0.55078125,0.6298828125,0.7177734375,0.7763671875,0.7724609375,0.70703125,0.62109375,0.55078125,0.48828125,0.4287109375,0.390625,0.3837890625,0.40234375,0.4228515625,0.4287109375,0.4248046875,0.4130859375,0.4140625,0.4482421875,0.515625,0.59765625,0.673828125,0.740234375,0.7802734375,0.7744140625,0.7265625,0.6630859375,0.623046875,0.6220703125,0.630859375,0.6318359375,0.6220703125,0.6044921875,0.5849609375,0.572265625,0.5703125,0.5712890625,0.5771484375,0.5927734375,0.6162109375,0.640625,0.6611328125,0.673828125,0.6865234375,0.7001953125,0.689453125,0.63671875,0.5498046875,0.455078125,0.376953125,0.3232421875,0.341796875,0.4404296875,0.5751953125,0.68359375,0.7158203125,0.673828125,0.6064453125,0.5322265625,0.482421875,0.4873046875,0.5419921875,0.615234375,0.673828125,0.71875,0.732421875,0.6953125,0.61328125,0.5185546875,0.4521484375,0.4287109375,0.4326171875,0.4833984375,0.56640625,0.638671875,0.6640625,0.634765625,0.5703125,0.509765625,0.4970703125,0.533203125,0.5888671875,0.6240234375,0.611328125,0.55078125,0.4873046875,0.455078125,0.45703125,0.4716796875,0.47265625,0.44140625,0.376953125,0.3203125,0.32421875,0.3916015625,0.4853515625,0.552734375,0.556640625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.56640625,0.6044921875,0.59375,0.5400390625,0.4736328125,0.4306640625,0.4287109375,0.4296875,0.3974609375,0.3505859375,0.3203125,0.330078125,0.37890625,0.4482421875,0.5234375,0.5966796875,0.6279296875,0.591796875,0.5,0.3984375,0.3251953125,0.283203125,0.3154296875,0.423828125,0.55859375,0.6572265625,0.67578125,0.6220703125,0.552734375,0.5068359375,0.5048828125,0.548828125,0.6142578125,0.662109375,0.673828125,0.662109375,0.611328125,0.53515625,0.466796875,0.4375,0.4541015625,0.5,0.5634765625,0.6630859375,0.7646484375,0.8193359375,0.806640625,0.74609375,0.673828125,0.6103515625,0.5849609375,0.59765625,0.626953125,0.6396484375,0.6142578125,0.55078125,0.484375,0.4462890625,0.45703125,0.509765625,0.5771484375,0.6201171875,0.6220703125,0.61328125,0.60546875,0.5830078125,0.53515625,0.4658203125,0.390625,0.3251953125,0.275390625,0.279296875,0.3525390625,0.4755859375,0.5966796875,0.6669921875,0.673828125,0.6728515625,0.70703125,0.7587890625,0.7939453125,0.7880859375,0.7421875,0.673828125,0.58984375,0.4716796875,0.3544921875,0.28515625,0.28125,0.32421875,0.376953125,0.421875,0.4375,0.4248046875,0.400390625,0.3876953125,0.4033203125,0.4482421875,0.5,0.552734375,0.5927734375,0.61328125,0.615234375,0.6142578125,0.6220703125,0.6318359375,0.6328125,0.607421875,0.5458984375,0.462890625,0.3837890625,0.3251953125,0.2734375,0.23046875,0.2294921875,0.5087890625,0.46875,0.4375,0.421875,0.419921875,0.4326171875,0.4833984375,0.55078125,0.5986328125,0.599609375,0.556640625,0.4892578125,0.43359375,0.43359375,0.4931640625,0.576171875,0.634765625,0.6357421875,0.5791015625,0.51171875,0.4609375,0.44921875,0.4794921875,0.53125,0.5712890625,0.5791015625,0.564453125,0.5048828125,0.419921875,0.353515625,0.3369140625,0.373046875,0.439453125,0.5009765625,0.5185546875,0.4921875,0.447265625,0.419921875,0.4384765625,0.5,0.5712890625,0.6328125,0.6630859375,0.65234375,0.61328125,0.5791015625,0.5693359375,0.5751953125,0.60546875,0.640625,0.65234375,0.625,0.5673828125,0.5,0.4345703125,0.3916015625,0.392578125,0.4375,0.5009765625,0.548828125,0.5595703125,0.5478515625,0.5,0.435546875,0.392578125,0.39453125,0.4404296875,0.509765625,0.5693359375,0.578125,0.53515625,0.4697265625,0.4248046875,0.431640625,0.4892578125,0.5654296875,0.6494140625,0.7001953125,0.68359375,0.60546875,0.5078125,0.4296875,0.36328125,0.3154296875,0.306640625,0.3388671875,0.3916015625,0.431640625,0.439453125,0.427734375,0.3837890625,0.326171875,0.2919921875,0.3017578125,0.3515625,0.419921875,0.4814453125,0.51171875,0.5078125,0.4912109375,0.4873046875,0.517578125,0.5791015625,0.6357421875,0.634765625,0.576171875,0.4931640625,0.43359375,0.43359375,0.4892578125,0.5498046875,0.5703125,0.5498046875,0.513671875,0.494140625,0.517578125,0.5791015625,0.6552734375,0.728515625,0.7587890625,0.7158203125,0.6142578125,0.501953125,0.419921875,0.3515625,0.30078125,0.287109375,0.3173828125,0.369140625,0.41015625,0.419921875,0.419921875,0.4228515625,0.42578125,0.4296875,0.4306640625,0.4306640625,0.4296875,0.431640625,0.4482421875,0.4814453125,0.521484375,0.556640625,0.5751953125,0.5791015625,0.5791015625,0.576171875,0.572265625,0.56640625,0.5625,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5673828125,0.599609375,0.6376953125,0.650390625,0.625,0.5673828125,0.5,0.4345703125,0.39453125,0.3984375,0.4462890625,0.5126953125,0.5595703125,0.5693359375,0.576171875,0.6083984375,0.6455078125,0.658203125,0.630859375,0.5703125,0.5,0.4404296875,0.435546875,0.486328125,0.5615234375,0.615234375,0.6142578125,0.5595703125,0.48046875,0.373046875,0.2783203125,0.2421875,0.2744140625,0.3466796875,0.419921875,0.4765625,0.48828125,0.453125,0.400390625,0.3671875,0.380859375,0.439453125,0.5,0.51953125,0.4970703125,0.45703125,0.43359375,0.451171875,0.509765625,0.564453125,0.5625,0.5029296875,0.4208984375,0.3623046875,0.36328125,0.419921875,0.4912109375,0.560546875,0.60546875,0.6142578125,0.5927734375,0.5673828125,0.5595703125,0.564453125,0.5869140625,0.607421875,0.6005859375,0.55859375,0.4912109375,0.419921875,0.3623046875,0.35546875,0.400390625,0.46484375,0.5087890625,0.4990234375,0.439453125,0.3798828125,0.3671875,0.404296875,0.4638671875,0.5048828125,0.49609375,0.439453125,0.3671875,0.2939453125,0.26171875,0.298828125,0.3935546875,0.5,0.5791015625,0.6337890625,0.630859375,0.5703125,0.4873046875,0.4296875,0.431640625,0.4892578125,0.5478515625,0.55078125,0.4970703125,0.41796875,0.3623046875,0.36328125,0.419921875,0.478515625,0.4931640625,0.458984375,0.40625,0.37109375,0.3828125,0.439453125,0.49609375,0.5029296875,0.458984375,0.3955078125,0.3525390625,0.361328125,0.419921875,0.4921875,0.5634765625,0.61328125,0.6259765625,0.609375,0.5869140625,0.5791015625,0.56640625,0.5146484375,0.4453125,0.3974609375,0.396484375,0.44140625,0.509765625,0.5888671875,0.6826171875,0.748046875,0.7470703125,0.6806640625,0.587890625,0.509765625,0.439453125,0.3798828125,0.3515625,0.3623046875,0.3994140625,0.431640625,0.439453125,0.4326171875,0.408203125,0.3857421875,0.392578125,0.4365234375,0.505859375,0.5791015625,0.6484375,0.69921875,0.708984375,0.6748046875,0.619140625,0.578125,0.5693359375,0.5703125,0.5703125,0.568359375,0.5654296875,0.5615234375,0.5595703125,0.5595703125,0.5595703125,0.560546875,0.564453125,0.568359375,0.5732421875,0.5771484375,0.5791015625,0.5869140625,0.6123046875,0.6328125,0.623046875,0.5751953125,0.5029296875,0.4296875,0.373046875,0.3798828125,0.4521484375,0.5517578125,0.625,0.6337890625,0.5791015625,0.501953125,0.41015625,0.3466796875,0.34765625,0.412109375,0.5029296875,0.5791015625,0.642578125,0.6767578125,0.6591796875,0.5947265625,0.51171875,0.4541015625,0.439453125,0.451171875,0.505859375,0.5859375,0.6484375,0.6630859375,0.6259765625,0.5595703125,0.498046875,0.4814453125,0.5107421875,0.55859375,0.5869140625,0.5703125,0.509765625,0.4482421875,0.427734375,0.4501953125,0.4892578125,0.51171875,0.4912109375,0.4296875,0.37109375,0.369140625,0.4248046875,0.50390625,0.5595703125,0.5576171875,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5673828125,0.6123046875,0.6103515625,0.5634765625,0.4970703125,0.44921875,0.439453125,0.4326171875,0.3984375,0.3564453125,0.337890625,0.361328125,0.4189453125,0.4892578125,0.5673828125,0.65234375,0.7021484375,0.6826171875,0.6005859375,0.4990234375,0.419921875,0.365234375,0.3740234375,0.447265625,0.546875,0.619140625,0.6259765625,0.5693359375,0.5,0.4482421875,0.4375,0.470703125,0.5263671875,0.5693359375,0.5791015625,0.568359375,0.5185546875,0.44921875,0.3994140625,0.39453125,0.4345703125,0.5,0.578125,0.6796875,0.7626953125,0.78515625,0.7392578125,0.65625,0.5791015625,0.517578125,0.4990234375,0.5234375,0.5654296875,0.58984375,0.5712890625,0.509765625,0.44140625,0.3974609375,0.3984375,0.4453125,0.51171875,0.5595703125,0.5693359375,0.57421875,0.595703125,0.6142578125,0.6044921875,0.5595703125,0.4912109375,0.419921875,0.35546875,0.3251953125,0.3486328125,0.4208984375,0.5087890625,0.5673828125,0.5791015625,0.587890625,0.6279296875,0.681640625,0.7119140625,0.7001953125,0.6484375,0.5791015625,0.49609375,0.3857421875,0.2890625,0.25,0.283203125,0.3564453125,0.4296875,0.48828125,0.505859375,0.48046875,0.4384765625,0.4140625,0.4306640625,0.4892578125,0.5576171875,0.6162109375,0.6455078125,0.63671875,0.6044921875,0.5751953125,0.5693359375,0.5771484375,0.599609375,0.6171875,0.6064453125,0.5595703125,0.490234375,0.419921875,0.3466796875,0.2734375,0.2392578125,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.46875,0.5048828125,0.5361328125,0.5546875,0.5595703125,0.568359375,0.6015625,0.63671875,0.646484375,0.6171875,0.5576171875,0.4892578125,0.431640625,0.416015625,0.4443359375,0.490234375,0.5166015625,0.5,0.439453125,0.37109375,0.3193359375,0.3046875,0.333984375,0.38671875,0.4287109375,0.439453125,0.4345703125,0.412109375,0.3916015625,0.3984375,0.4404296875,0.5078125,0.5791015625,0.6357421875,0.634765625,0.576171875,0.4931640625,0.43359375,0.43359375,0.4892578125,0.5556640625,0.5986328125,0.595703125,0.5478515625,0.48046875,0.4306640625,0.419921875,0.431640625,0.4833984375,0.5556640625,0.6083984375,0.6162109375,0.5751953125,0.509765625,0.439453125,0.3798828125,0.3515625,0.3623046875,0.3994140625,0.431640625,0.439453125,0.4306640625,0.3955078125,0.3525390625,0.3359375,0.3603515625,0.4189453125,0.4892578125,0.5498046875,0.564453125,0.529296875,0.474609375,0.4384765625,0.451171875,0.509765625,0.5888671875,0.689453125,0.7685546875,0.78515625,0.7333984375,0.6474609375,0.5693359375,0.4990234375,0.4443359375,0.427734375,0.455078125,0.505859375,0.5478515625,0.5595703125,0.5517578125,0.5146484375,0.466796875,0.4423828125,0.4580078125,0.5107421875,0.5791015625,0.6337890625,0.625,0.5517578125,0.4521484375,0.3798828125,0.373046875,0.4296875,0.4912109375,0.51171875,0.4892578125,0.4501953125,0.427734375,0.4482421875,0.509765625,0.568359375,0.572265625,0.51953125,0.44140625,0.384765625,0.384765625,0.439453125,0.51953125,0.626953125,0.72265625,0.7607421875,0.7275390625,0.6533203125,0.5791015625,0.5107421875,0.45703125,0.439453125,0.4638671875,0.51171875,0.5498046875,0.5595703125,0.5595703125,0.5595703125,0.560546875,0.5625,0.5654296875,0.5673828125,0.5693359375,0.568359375,0.552734375,0.5234375,0.486328125,0.4541015625,0.4345703125,0.4296875,0.4287109375,0.4287109375,0.4306640625,0.43359375,0.4375,0.439453125,0.439453125,0.439453125,0.4375,0.43359375,0.4306640625,0.4287109375,0.4287109375,0.4296875,0.443359375,0.494140625,0.5634765625,0.611328125,0.61328125,0.568359375,0.5,0.4287109375,0.369140625,0.341796875,0.3564453125,0.396484375,0.4306640625,0.439453125,0.451171875,0.4990234375,0.5654296875,0.61328125,0.6162109375,0.57421875,0.509765625,0.4501953125,0.4306640625,0.4501953125,0.484375,0.5029296875,0.48046875,0.419921875,0.3447265625,0.2705078125,0.236328125,0.2734375,0.369140625,0.478515625,0.5595703125,0.6181640625,0.6279296875,0.58984375,0.533203125,0.49609375,0.5087890625,0.5693359375,0.626953125,0.6279296875,0.5703125,0.48828125,0.4306640625,0.431640625,0.4892578125,0.55078125,0.5703125,0.5458984375,0.5029296875,0.478515625,0.498046875,0.5595703125,0.6259765625,0.6640625,0.650390625,0.5888671875,0.5087890625,0.4521484375,0.439453125,0.453125,0.5107421875,0.59375,0.66015625,0.6787109375,0.64453125,0.5791015625,0.5205078125,0.505859375,0.5400390625,0.5927734375,0.6279296875,0.6162109375,0.5595703125,0.5029296875,0.49609375,0.5400390625,0.603515625,0.646484375,0.6376953125,0.5791015625,0.498046875,0.38671875,0.28515625,0.2431640625,0.2734375,0.345703125,0.419921875,0.48046875,0.5,0.4794921875,0.443359375,0.4248046875,0.447265625,0.509765625,0.5712890625,0.5908203125,0.568359375,0.5263671875,0.501953125,0.51953125,0.5791015625,0.6376953125,0.646484375,0.6064453125,0.546875,0.5078125,0.51953125,0.5791015625,0.6396484375,0.650390625,0.6103515625,0.548828125,0.505859375,0.5126953125,0.5693359375,0.6318359375,0.6630859375,0.640625,0.572265625,0.48828125,0.4306640625,0.419921875,0.4130859375,0.3818359375,0.345703125,0.333984375,0.361328125,0.419921875,0.4892578125,0.5673828125,0.658203125,0.7216796875,0.7216796875,0.65625,0.5654296875,0.4892578125,0.4248046875,0.3818359375,0.3837890625,0.4306640625,0.4970703125,0.546875,0.5595703125,0.548828125,0.494140625,0.416015625,0.353515625,0.3388671875,0.375,0.439453125,0.5078125,0.55859375,0.572265625,0.5419921875,0.490234375,0.44921875,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.4375,0.43359375,0.4306640625,0.4287109375,0.4287109375,0.4296875,0.4443359375,0.501953125,0.583984375,0.6494140625,0.6669921875,0.6328125,0.5693359375,0.5087890625,0.4814453125,0.4892578125,0.509765625,0.517578125,0.490234375,0.4296875,0.353515625,0.26171875,0.1953125,0.1943359375,0.2578125,0.3505859375,0.4296875,0.5029296875,0.572265625,0.615234375,0.6201171875,0.5947265625,0.568359375,0.5595703125,0.5634765625,0.5859375,0.60546875,0.59765625,0.5556640625,0.4892578125,0.419921875,0.365234375,0.3681640625,0.4287109375,0.51171875,0.5693359375,0.5673828125,0.509765625,0.451171875,0.4482421875,0.501953125,0.5810546875,0.63671875,0.6357421875,0.5791015625,0.51953125,0.5,0.5244140625,0.564453125,0.5888671875,0.5693359375,0.509765625,0.431640625,0.33984375,0.2734375,0.271484375,0.333984375,0.423828125,0.5,0.5673828125,0.6259765625,0.6533203125,0.640625,0.6025390625,0.5693359375,0.5595703125,0.546875,0.4970703125,0.4306640625,0.3837890625,0.3818359375,0.4248046875,0.4892578125,0.5673828125,0.6669921875,0.7470703125,0.7666015625,0.7177734375,0.6357421875,0.5595703125,0.498046875,0.470703125,0.478515625,0.5009765625,0.5087890625,0.4814453125,0.419921875,0.3515625,0.30078125,0.287109375,0.3173828125,0.369140625,0.41015625,0.419921875,0.412109375,0.380859375,0.345703125,0.3349609375,0.36328125,0.421875,0.4892578125,0.5634765625,0.6455078125,0.693359375,0.6748046875,0.595703125,0.4970703125,0.419921875,0.365234375,0.3671875,0.4267578125,0.5087890625,0.56640625,0.56640625,0.509765625,0.439453125,0.3798828125,0.3515625,0.3623046875,0.3994140625,0.431640625,0.439453125,0.4521484375,0.5087890625,0.5908203125,0.6572265625,0.67578125,0.642578125,0.5791015625,0.5087890625,0.439453125,0.3916015625,0.3779296875,0.3935546875,0.4140625,0.419921875,0.4296875,0.47265625,0.5283203125,0.5615234375,0.55078125,0.4990234375,0.4296875,0.353515625,0.2763671875,0.240234375,0.27734375,0.375,0.486328125,0.5693359375,0.6279296875,0.6328125,0.580078125,0.50390625,0.4501953125,0.453125,0.509765625,0.576171875,0.6181640625,0.615234375,0.564453125,0.494140625,0.443359375,0.4296875,0.4404296875,0.49609375,0.578125,0.64453125,0.6640625,0.6318359375,0.5693359375,0.4892578125,0.380859375,0.283203125,0.400390625,0.4609375,0.5166015625,0.5546875,0.5703125,0.583984375,0.6064453125,0.619140625,0.6044921875,0.5595703125,0.501953125,0.4482421875,0.40625,0.40234375,0.4345703125,0.4775390625,0.4990234375,0.482421875,0.4287109375,0.3681640625,0.3173828125,0.2978515625,0.3193359375,0.3671875,0.41015625,0.4287109375,0.4365234375,0.4375,0.4482421875,0.482421875,0.541015625,0.609375,0.673828125,0.7197265625,0.701171875,0.6162109375,0.5048828125,0.419921875,0.40234375,0.4482421875,0.5048828125,0.5341796875,0.5185546875,0.4609375,0.3876953125,0.3369140625,0.3251953125,0.33984375,0.40234375,0.498046875,0.583984375,0.623046875,0.60546875,0.55078125,0.48828125,0.4287109375,0.390625,0.3837890625,0.40234375,0.4228515625,0.4287109375,0.419921875,0.3798828125,0.3310546875,0.3056640625,0.3232421875,0.3779296875,0.4482421875,0.51171875,0.541015625,0.53125,0.501953125,0.4833984375,0.4990234375,0.55078125,0.6220703125,0.7177734375,0.7978515625,0.8212890625,0.7783203125,0.6982421875,0.6220703125,0.548828125,0.484375,0.4521484375,0.4638671875,0.5078125,0.55078125,0.5703125,0.57421875,0.55859375,0.5380859375,0.53515625,0.5615234375,0.6123046875,0.673828125,0.7158203125,0.68359375,0.5751953125,0.4404296875,0.341796875,0.3232421875,0.376953125,0.44140625,0.47265625,0.4716796875,0.45703125,0.455078125,0.4873046875,0.55078125,0.611328125,0.619140625,0.5673828125,0.482421875,0.4111328125,0.392578125,0.4287109375,0.4931640625,0.595703125,0.705078125,0.7744140625,0.779296875,0.734375,0.673828125,0.611328125,0.5537109375,0.51953125,0.5185546875,0.541015625,0.5634765625,0.5703125,0.5693359375,0.5703125,0.57421875,0.5830078125,0.5966796875,0.6103515625,0.6220703125,0.6279296875,0.611328125,0.56640625,0.501953125,0.4375,0.39453125,0.376953125,0.3681640625,0.3671875,0.376953125,0.39453125,0.4140625,0.4267578125,0.4287109375,0.4267578125,0.4140625,0.39453125,0.376953125,0.3671875,0.3681640625,0.376953125,0.400390625,0.46484375,0.546875,0.60546875,0.611328125,0.568359375,0.5,0.427734375,0.3671875,0.337890625,0.349609375,0.3876953125,0.4208984375,0.4287109375,0.4384765625,0.4833984375,0.548828125,0.6025390625,0.6201171875,0.59765625,0.55078125,0.5048828125,0.4755859375,0.4619140625,0.4501953125,0.42578125,0.3837890625,0.3251953125,0.2626953125,0.2119140625,0.2099609375,0.2744140625,0.3857421875,0.49609375,0.5703125,0.62109375,0.6298828125,0.599609375,0.5576171875,0.5361328125,0.5595703125,0.6220703125,0.677734375,0.6669921875,0.587890625,0.4814453125,0.40234375,0.3916015625,0.4482421875,0.5107421875,0.5361328125,0.5234375,0.4951171875,0.4814453125,0.5078125,0.5703125,0.63671875,0.671875,0.6533203125,0.5859375,0.5009765625,0.4423828125,0.4287109375,0.443359375,0.5087890625,0.6083984375,0.69921875,0.7421875,0.7275390625,0.673828125,0.6181640625,0.5908203125,0.59375,0.6142578125,0.6279296875,0.61328125,0.5703125,0.53125,0.5419921875,0.6015625,0.6767578125,0.7265625,0.7236328125,0.673828125,0.5966796875,0.474609375,0.33984375,0.248046875,0.2275390625,0.265625,0.3251953125,0.380859375,0.4111328125,0.4189453125,0.4228515625,0.4404296875,0.484375,0.55078125,0.615234375,0.646484375,0.6416015625,0.6181640625,0.6025390625,0.62109375,0.673828125,0.72265625,0.7265625,0.6845703125,0.6279296875,0.595703125,0.6123046875,0.673828125,0.734375,0.7509765625,0.71484375,0.6494140625,0.59375,0.5830078125,0.6220703125,0.6630859375,0.658203125,0.59375,0.4892578125,0.3876953125,0.3291015625,0.3251953125,0.330078125,0.31640625,0.30078125,0.3017578125,0.3330078125,0.38671875,0.4482421875,0.5146484375,0.5888671875,0.638671875,0.6337890625,0.5791015625,0.505859375,0.4482421875,0.3994140625,0.37109375,0.380859375,0.4306640625,0.498046875,0.5498046875,0.5703125,0.568359375,0.5234375,0.4482421875,0.3798828125,0.3525390625,0.3740234375,0.4287109375,0.48828125,0.533203125,0.544921875,0.5185546875,0.4736328125,0.4375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4267578125,0.4140625,0.39453125,0.376953125,0.3671875,0.3681640625,0.376953125,0.400390625,0.466796875,0.5615234375,0.6435546875,0.6806640625,0.6669921875,0.6220703125,0.5732421875,0.5361328125,0.509765625,0.4892578125,0.462890625,0.42578125,0.376953125,0.3173828125,0.2392578125,0.17578125,0.1669921875,0.21875,0.30078125,0.376953125,0.453125,0.53515625,0.5986328125,0.6240234375,0.611328125,0.5859375,0.5703125,0.5615234375,0.5537109375,0.53515625,0.4970703125,0.4404296875,0.3798828125,0.3251953125,0.291015625,0.3232421875,0.4169921875,0.529296875,0.6044921875,0.6083984375,0.55078125,0.4931640625,0.4912109375,0.55078125,0.6396484375,0.708984375,0.720703125,0.673828125,0.619140625,0.595703125,0.6025390625,0.6220703125,0.62890625,0.60546875,0.55078125,0.4833984375,0.40234375,0.341796875,0.33203125,0.3759765625,0.4423828125,0.5,0.5517578125,0.6044921875,0.63671875,0.638671875,0.6142578125,0.5859375,0.5703125,0.5498046875,0.498046875,0.4306640625,0.380859375,0.37109375,0.3994140625,0.4482421875,0.5087890625,0.5966796875,0.6787109375,0.7158203125,0.693359375,0.6337890625,0.5703125,0.513671875,0.474609375,0.4541015625,0.44140625,0.4208984375,0.3828125,0.3251953125,0.265625,0.220703125,0.2099609375,0.2353515625,0.28125,0.3173828125,0.3251953125,0.3212890625,0.306640625,0.2958984375,0.306640625,0.34375,0.3955078125,0.4482421875,0.501953125,0.5537109375,0.57421875,0.5419921875,0.466796875,0.384765625,0.3251953125,0.2900390625,0.3154296875,0.40234375,0.509765625,0.5859375,0.5986328125,0.55078125,0.48828125,0.4287109375,0.390625,0.3837890625,0.40234375,0.4228515625,0.4287109375,0.44140625,0.5009765625,0.59375,0.6796875,0.724609375,0.716796875,0.673828125,0.615234375,0.5361328125,0.44921875,0.37890625,0.3388671875,0.326171875,0.3251953125,0.3369140625,0.384765625,0.4501953125,0.494140625,0.4921875,0.4462890625,0.376953125,0.3037109375,0.2392578125,0.2265625,0.291015625,0.412109375,0.5361328125,0.6220703125,0.681640625,0.689453125,0.6416015625,0.56640625,0.5087890625,0.5029296875,0.55078125,0.6083984375,0.6376953125,0.6181640625,0.55078125,0.46484375,0.400390625,0.376953125,0.3798828125,0.431640625,0.5224609375,0.61328125,0.666015625,0.6640625,0.6220703125,0.556640625,0.4482421875,0.330078125,0.3203125,0.3798828125,0.4453125,0.498046875,0.5302734375,0.5546875,0.5693359375,0.5576171875,0.5185546875,0.46484375,0.419921875,0.39453125,0.3837890625,0.4052734375,0.4521484375,0.5,0.521484375,0.5087890625,0.46875,0.421875,0.373046875,0.3447265625,0.3525390625,0.3916015625,0.4375,0.46875,0.4951171875,0.5205078125,0.5517578125,0.59375,0.642578125,0.693359375,0.740234375,0.76953125,0.734375,0.6318359375,0.501953125,0.3994140625,0.3642578125,0.39453125,0.435546875,0.4521484375,0.4306640625,0.375,0.3115234375,0.2685546875,0.2587890625,0.2734375,0.341796875,0.4521484375,0.5634765625,0.6318359375,0.640625,0.6044921875,0.5576171875,0.5078125,0.46875,0.4521484375,0.4560546875,0.4658203125,0.46875,0.45703125,0.40625,0.3369140625,0.2861328125,0.283203125,0.326171875,0.39453125,0.462890625,0.5146484375,0.541015625,0.546875,0.548828125,0.5654296875,0.6044921875,0.6591796875,0.73828125,0.806640625,0.826171875,0.78515625,0.7099609375,0.634765625,0.5595703125,0.478515625,0.421875,0.4140625,0.4482421875,0.4970703125,0.5302734375,0.5537109375,0.572265625,0.5908203125,0.6162109375,0.6513671875,0.6943359375,0.740234375,0.765625,0.7109375,0.58203125,0.43359375,0.3291015625,0.3095703125,0.3642578125,0.4296875,0.4697265625,0.482421875,0.4853515625,0.4990234375,0.5390625,0.6044921875,0.6689453125,0.693359375,0.662109375,0.587890625,0.5078125,0.4638671875,0.46875,0.5,0.5732421875,0.6708984375,0.75390625,0.7919921875,0.7802734375,0.740234375,0.69140625,0.6328125,0.5771484375,0.541015625,0.52734375,0.5283203125,0.5302734375,0.5283203125,0.5263671875,0.5302734375,0.546875,0.5751953125,0.6064453125,0.634765625,0.658203125,0.66015625,0.6240234375,0.5517578125,0.466796875,0.3994140625,0.3642578125,0.3408203125,0.333984375,0.3525390625,0.3916015625,0.4345703125,0.462890625,0.46875,0.462890625,0.4345703125,0.3916015625,0.3525390625,0.333984375,0.3408203125,0.3642578125,0.4033203125,0.48046875,0.568359375,0.6240234375,0.62109375,0.5693359375,0.5,0.4287109375,0.373046875,0.3525390625,0.375,0.421875,0.4599609375,0.46875,0.474609375,0.501953125,0.546875,0.5908203125,0.6171875,0.6201171875,0.6044921875,0.583984375,0.5546875,0.5078125,0.4443359375,0.3720703125,0.30859375,0.2587890625,0.21484375,0.1884765625,0.20703125,0.2783203125,0.380859375,0.4736328125,0.5302734375,0.56640625,0.5703125,0.548828125,0.52734375,0.5302734375,0.5693359375,0.634765625,0.689453125,0.6708984375,0.5771484375,0.4521484375,0.3583984375,0.33984375,0.39453125,0.45703125,0.484375,0.474609375,0.44921875,0.439453125,0.466796875,0.5302734375,0.5986328125,0.6435546875,0.642578125,0.5966796875,0.529296875,0.48046875,0.46875,0.4814453125,0.541015625,0.6357421875,0.7255859375,0.7783203125,0.7783203125,0.740234375,0.693359375,0.646484375,0.6044921875,0.576171875,0.5595703125,0.546875,0.5302734375,0.5224609375,0.560546875,0.6376953125,0.720703125,0.7734375,0.7763671875,0.740234375,0.6787109375,0.560546875,0.4111328125,0.2841796875,0.21875,0.2197265625,0.2587890625,0.30078125,0.3349609375,0.3662109375,0.408203125,0.46484375,0.533203125,0.6044921875,0.6708984375,0.7138671875,0.7236328125,0.7099609375,0.6953125,0.703125,0.740234375,0.7744140625,0.765625,0.720703125,0.6708984375,0.650390625,0.6767578125,0.740234375,0.8046875,0.8330078125,0.8095703125,0.7431640625,0.669921875,0.62890625,0.634765625,0.640625,0.59375,0.494140625,0.375,0.2822265625,0.2451171875,0.2587890625,0.28125,0.291015625,0.2919921875,0.2978515625,0.31640625,0.3505859375,0.39453125,0.44140625,0.4853515625,0.5078125,0.4970703125,0.458984375,0.4189453125,0.39453125,0.375,0.3623046875,0.3701171875,0.40234375,0.451171875,0.498046875,0.5302734375,0.5478515625,0.533203125,0.4912109375,0.4443359375,0.419921875,0.4296875,0.46875,0.513671875,0.546875,0.5546875,0.53515625,0.501953125,0.4755859375,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.462890625,0.4345703125,0.3916015625,0.3525390625,0.333984375,0.3408203125,0.3642578125,0.3984375,0.4619140625,0.541015625,0.609375,0.6474609375,0.650390625,0.634765625,0.61328125,0.5771484375,0.52734375,0.4716796875,0.421875,0.3857421875,0.3642578125,0.3359375,0.2802734375,0.2236328125,0.201171875,0.228515625,0.2919921875,0.3642578125,0.44140625,0.529296875,0.599609375,0.6240234375,0.6025390625,0.5615234375,0.5302734375,0.5009765625,0.458984375,0.408203125,0.35546875,0.3115234375,0.2802734375,0.2587890625,0.2587890625,0.328125,0.455078125,0.5849609375,0.6630859375,0.6640625,0.6044921875,0.5439453125,0.53515625,0.5849609375,0.6708984375,0.74609375,0.771484375,0.740234375,0.69921875,0.67578125,0.6708984375,0.673828125,0.6689453125,0.6455078125,0.6044921875,0.5556640625,0.498046875,0.4521484375,0.435546875,0.4501953125,0.4775390625,0.5,0.5224609375,0.5556640625,0.5849609375,0.5966796875,0.583984375,0.5576171875,0.5302734375,0.498046875,0.451171875,0.40234375,0.3701171875,0.3623046875,0.375,0.39453125,0.421875,0.478515625,0.546875,0.59375,0.6015625,0.5732421875,0.5302734375,0.4853515625,0.4462890625,0.4111328125,0.3779296875,0.3427734375,0.302734375,0.2587890625,0.21484375,0.181640625,0.1728515625,0.1923828125,0.2265625,0.2529296875,0.2587890625,0.259765625,0.2646484375,0.28125,0.30859375,0.3427734375,0.373046875,0.39453125,0.412109375,0.4208984375,0.408203125,0.3720703125,0.32421875,0.283203125,0.2587890625,0.2548828125,0.3095703125,0.4169921875,0.53515625,0.6181640625,0.6376953125,0.6044921875,0.5576171875,0.5078125,0.46875,0.4521484375,0.4560546875,0.4658203125,0.46875,0.478515625,0.5224609375,0.5966796875,0.67578125,0.7333984375,0.751953125,0.740234375,0.7099609375,0.6376953125,0.52734375,0.408203125,0.314453125,0.267578125,0.2587890625,0.271484375,0.326171875,0.40234375,0.4609375,0.470703125,0.431640625,0.3642578125,0.291015625,0.2294921875,0.2236328125,0.294921875,0.421875,0.548828125,0.634765625,0.697265625,0.7197265625,0.6923828125,0.6357421875,0.5830078125,0.5712890625,0.6044921875,0.646484375,0.666015625,0.640625,0.568359375,0.4765625,0.4013671875,0.3642578125,0.34765625,0.3720703125,0.44140625,0.5322265625,0.609375,0.6435546875,0.634765625,0.6005859375,0.51171875,0.39453125,0.26953125,0.306640625,0.361328125,0.419921875,0.46875,0.5078125,0.517578125,0.48828125,0.43359375,0.3798828125,0.3544921875,0.3642578125,0.3896484375,0.439453125,0.5,0.546875,0.564453125,0.5546875,0.5302734375,0.498046875,0.4521484375,0.4140625,0.4052734375,0.43359375,0.482421875,0.5302734375,0.5751953125,0.6181640625,0.654296875,0.6796875,0.697265625,0.7158203125,0.740234375,0.7529296875,0.7119140625,0.61328125,0.4912109375,0.392578125,0.3505859375,0.3642578125,0.3876953125,0.3935546875,0.375,0.3359375,0.29296875,0.2646484375,0.2587890625,0.271484375,0.33203125,0.435546875,0.546875,0.6259765625,0.65234375,0.634765625,0.6064453125,0.5751953125,0.546875,0.5302734375,0.5263671875,0.5283203125,0.5302734375,0.515625,0.4541015625,0.36328125,0.2900390625,0.265625,0.2978515625,0.3642578125,0.4365234375,0.5068359375,0.560546875,0.5908203125,0.6025390625,0.61328125,0.634765625,0.669921875,0.7275390625,0.7783203125,0.7900390625,0.75,0.6787109375,0.6044921875,0.525390625,0.4296875,0.3525390625,0.328125,0.359375,0.41796875,0.46875,0.515625,0.56640625,0.6162109375,0.6572265625,0.6884765625,0.71484375,0.740234375,0.748046875,0.68359375,0.5576171875,0.4248046875,0.3408203125,0.3359375,0.39453125,0.4599609375,0.5,0.513671875,0.5166015625,0.529296875,0.5693359375,0.634765625,0.705078125,0.755859375,0.759765625,0.708984375,0.62890625,0.560546875,0.5302734375,0.51953125,0.546875,0.6103515625,0.6845703125,0.7412109375,0.7578125,0.740234375,0.7080078125,0.65625,0.5908203125,0.5302734375,0.4892578125,0.4716796875,0.46875,0.4658203125,0.4560546875,0.4521484375,0.46875,0.5078125,0.5576171875,0.6044921875,0.650390625,0.6845703125,0.6796875,0.6240234375,0.53515625,0.44921875,0.39453125,0.353515625,0.3369140625,0.3583984375,0.4140625,0.4775390625,0.5205078125,0.5302734375,0.5205078125,0.4775390625,0.4140625,0.3583984375,0.3369140625,0.353515625,0.39453125,0.451171875,0.5380859375,0.6240234375,0.6630859375,0.638671875,0.5732421875,0.5,0.4306640625,0.3818359375,0.375,0.4140625,0.4736328125,0.51953125,0.5302734375,0.529296875,0.53125,0.541015625,0.560546875,0.587890625,0.6142578125,0.634765625,0.6484375,0.6318359375,0.5712890625,0.474609375,0.3720703125,0.2958984375,0.2587890625,0.234375,0.2255859375,0.248046875,0.3037109375,0.375,0.4345703125,0.46875,0.48828125,0.482421875,0.4638671875,0.4580078125,0.4814453125,0.53515625,0.6044921875,0.6591796875,0.640625,0.546875,0.421875,0.328125,0.3095703125,0.3642578125,0.4267578125,0.4501953125,0.4326171875,0.400390625,0.3837890625,0.4072265625,0.46875,0.5400390625,0.6005859375,0.626953125,0.6123046875,0.572265625,0.5380859375,0.5302734375,0.5380859375,0.5791015625,0.6455078125,0.712890625,0.7548828125,0.7607421875,0.740234375,0.705078125,0.642578125,0.5625,0.494140625,0.45703125,0.453125,0.46875,0.498046875,0.5595703125,0.6435546875,0.7177734375,0.759765625,0.76171875,0.740234375,0.69921875,0.6064453125,0.474609375,0.34765625,0.2646484375,0.2412109375,0.2587890625,0.283203125,0.306640625,0.341796875,0.3994140625,0.4775390625,0.560546875,0.634765625,0.703125,0.7529296875,0.7705078125,0.7568359375,0.7314453125,0.7216796875,0.740234375,0.755859375,0.7333984375,0.6845703125,0.6435546875,0.63671875,0.673828125,0.740234375,0.8095703125,0.8564453125,0.853515625,0.794921875,0.7080078125,0.6357421875,0.6044921875,0.572265625,0.4892578125,0.375,0.2724609375,0.2177734375,0.220703125,0.2587890625,0.3017578125,0.33203125,0.3447265625,0.341796875,0.3369140625,0.341796875,0.3642578125,0.38671875,0.3955078125,0.3857421875,0.3671875,0.3505859375,0.349609375,0.3642578125,0.37890625,0.37890625,0.3720703125,0.373046875,0.390625,0.4248046875,0.46875,0.5107421875,0.5361328125,0.5380859375,0.5244140625,0.5087890625,0.5087890625,0.5302734375,0.5556640625,0.5751953125,0.580078125,0.568359375,0.548828125,0.533203125,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5205078125,0.4775390625,0.4140625,0.3583984375,0.3369140625,0.353515625,0.39453125,0.4404296875,0.48828125,0.529296875,0.5576171875,0.57421875,0.587890625,0.6044921875,0.615234375,0.5927734375,0.53515625,0.4638671875,0.40625,0.3837890625,0.39453125,0.4033203125,0.375,0.3251953125,0.287109375,0.2861328125,0.3271484375,0.39453125,0.47265625,0.560546875,0.6240234375,0.6328125,0.5869140625,0.521484375,0.46875,0.41796875,0.34765625,0.2783203125,0.234375,0.224609375,0.2392578125,0.2587890625,0.2958984375,0.3974609375,0.5380859375,0.66015625,0.716796875,0.6982421875,0.634765625,0.5712890625,0.546875,0.5771484375,0.646484375,0.7177734375,0.7529296875,0.740234375,0.7158203125,0.69921875,0.6904296875,0.6845703125,0.67578125,0.6591796875,0.634765625,0.6083984375,0.583984375,0.5634765625,0.546875,0.5322265625,0.517578125,0.5,0.486328125,0.4951171875,0.5185546875,0.5380859375,0.537109375,0.51171875,0.46875,0.4248046875,0.390625,0.373046875,0.3720703125,0.37890625,0.37890625,0.3642578125,0.3515625,0.3662109375,0.4052734375,0.4521484375,0.4853515625,0.490234375,0.46875,0.4423828125,0.4130859375,0.380859375,0.34765625,0.3154296875,0.2861328125,0.2587890625,0.2333984375,0.2138671875,0.208984375,0.220703125,0.240234375,0.2548828125,0.2587890625,0.263671875,0.2880859375,0.3251953125,0.361328125,0.380859375,0.3798828125,0.3642578125,0.3408203125,0.302734375,0.26171875,0.234375,0.228515625,0.240234375,0.2587890625,0.2900390625,0.3642578125,0.4716796875,0.57421875,0.6396484375,0.654296875,0.634765625,0.6064453125,0.5751953125,0.546875,0.5302734375,0.5263671875,0.5283203125,0.5302734375,0.5322265625,0.546875,0.5791015625,0.626953125,0.677734375,0.716796875,0.740234375,0.7470703125,0.703125,0.5986328125,0.4638671875,0.341796875,0.2724609375,0.2587890625,0.2724609375,0.330078125,0.4140625,0.48046875,0.4970703125,0.4609375,0.39453125,0.3193359375,0.2509765625,0.2314453125,0.287109375,0.400390625,0.51953125,0.6044921875,0.671875,0.7119140625,0.712890625,0.6787109375,0.6376953125,0.6181640625,0.634765625,0.6611328125,0.677734375,0.6630859375,0.607421875,0.525390625,0.4482421875,0.39453125,0.3525390625,0.333984375,0.3583984375,0.4248046875,0.5087890625,0.5751953125,0.6044921875,0.6083984375,0.5546875,0.4580078125,0.2734375,0.275390625,0.3095703125,0.3671875,0.4287109375,0.48046875,0.4892578125,0.451171875,0.3896484375,0.341796875,0.337890625,0.376953125,0.4326171875,0.5,0.5595703125,0.59375,0.5966796875,0.5830078125,0.5703125,0.5517578125,0.5078125,0.4609375,0.4384765625,0.4580078125,0.5087890625,0.5703125,0.630859375,0.681640625,0.708984375,0.7060546875,0.6845703125,0.6689453125,0.673828125,0.6748046875,0.640625,0.5693359375,0.4814453125,0.41015625,0.3759765625,0.376953125,0.3857421875,0.3876953125,0.3779296875,0.3603515625,0.3408203125,0.328125,0.3251953125,0.333984375,0.3759765625,0.4501953125,0.5322265625,0.5966796875,0.625,0.6220703125,0.6103515625,0.5966796875,0.5830078125,0.57421875,0.5703125,0.5693359375,0.5703125,0.5556640625,0.490234375,0.3935546875,0.3125,0.283203125,0.3125,0.376953125,0.451171875,0.52734375,0.587890625,0.6171875,0.6201171875,0.6162109375,0.6220703125,0.6396484375,0.6806640625,0.720703125,0.7275390625,0.69140625,0.6240234375,0.55078125,0.4697265625,0.3671875,0.28125,0.2529296875,0.2900390625,0.3623046875,0.4287109375,0.4931640625,0.5615234375,0.619140625,0.6533203125,0.6640625,0.666015625,0.673828125,0.66796875,0.6064453125,0.5048828125,0.41015625,0.3662109375,0.384765625,0.4482421875,0.51171875,0.5439453125,0.5419921875,0.52734375,0.5263671875,0.5576171875,0.6220703125,0.697265625,0.7734375,0.8125,0.7900390625,0.7158203125,0.630859375,0.5703125,0.5244140625,0.505859375,0.52734375,0.580078125,0.6396484375,0.673828125,0.673828125,0.6572265625,0.6201171875,0.5634765625,0.50390625,0.45703125,0.43359375,0.4287109375,0.4228515625,0.40234375,0.3837890625,0.390625,0.4287109375,0.48828125,0.55078125,0.6171875,0.6845703125,0.71875,0.69140625,0.611328125,0.5185546875,0.4482421875,0.390625,0.361328125,0.376953125,0.435546875,0.5078125,0.55859375,0.5703125,0.55859375,0.5078125,0.435546875,0.376953125,0.361328125,0.390625,0.4482421875,0.5185546875,0.611328125,0.6875,0.7060546875,0.658203125,0.576171875,0.5,0.431640625,0.3876953125,0.3896484375,0.439453125,0.5078125,0.55859375,0.5703125,0.564453125,0.541015625,0.5146484375,0.5068359375,0.52734375,0.5712890625,0.6220703125,0.666015625,0.6728515625,0.6240234375,0.529296875,0.4228515625,0.349609375,0.3251953125,0.31640625,0.3154296875,0.3291015625,0.3564453125,0.388671875,0.4150390625,0.4287109375,0.431640625,0.4130859375,0.388671875,0.3857421875,0.4189453125,0.48046875,0.55078125,0.607421875,0.5966796875,0.517578125,0.4111328125,0.33203125,0.3212890625,0.376953125,0.4384765625,0.455078125,0.4267578125,0.3798828125,0.3505859375,0.3681640625,0.4287109375,0.501953125,0.5712890625,0.6162109375,0.623046875,0.6015625,0.5771484375,0.5703125,0.57421875,0.5927734375,0.623046875,0.6552734375,0.67578125,0.6806640625,0.673828125,0.650390625,0.583984375,0.4892578125,0.4072265625,0.3701171875,0.3837890625,0.4287109375,0.4853515625,0.55859375,0.6298828125,0.677734375,0.6923828125,0.6845703125,0.673828125,0.6533203125,0.59765625,0.5107421875,0.4189453125,0.3505859375,0.322265625,0.3251953125,0.3330078125,0.3349609375,0.3486328125,0.392578125,0.4638671875,0.546875,0.6220703125,0.69140625,0.744140625,0.7607421875,0.740234375,0.7001953125,0.671875,0.673828125,0.673828125,0.6396484375,0.587890625,0.552734375,0.55859375,0.60546875,0.673828125,0.7470703125,0.814453125,0.8388671875,0.7978515625,0.70703125,0.61328125,0.55078125,0.48828125,0.3876953125,0.2822265625,0.2177734375,0.216796875,0.263671875,0.3251953125,0.384765625,0.4296875,0.4453125,0.4287109375,0.396484375,0.375,0.376953125,0.3798828125,0.3583984375,0.322265625,0.2958984375,0.2978515625,0.3291015625,0.376953125,0.419921875,0.427734375,0.40234375,0.369140625,0.353515625,0.375,0.4287109375,0.490234375,0.546875,0.5810546875,0.5888671875,0.576171875,0.5654296875,0.5703125,0.580078125,0.587890625,0.58984375,0.5849609375,0.5771484375,0.5712890625,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.55859375,0.5078125,0.435546875,0.376953125,0.361328125,0.390625,0.4482421875,0.5029296875,0.5302734375,0.52734375,0.5068359375,0.4931640625,0.5078125,0.55078125,0.5908203125,0.5859375,0.53515625,0.4638671875,0.4130859375,0.408203125,0.4482421875,0.4873046875,0.4833984375,0.439453125,0.38671875,0.3623046875,0.384765625,0.4482421875,0.525390625,0.611328125,0.666015625,0.6572265625,0.587890625,0.4990234375,0.4287109375,0.359375,0.2724609375,0.2001953125,0.177734375,0.2099609375,0.26953125,0.3251953125,0.3916015625,0.5068359375,0.6357421875,0.72265625,0.7373046875,0.69140625,0.6220703125,0.5546875,0.5146484375,0.5205078125,0.5693359375,0.6318359375,0.671875,0.673828125,0.6630859375,0.6552734375,0.650390625,0.6455078125,0.6396484375,0.6318359375,0.6220703125,0.6162109375,0.623046875,0.6318359375,0.6259765625,0.5966796875,0.55078125,0.5,0.45703125,0.4462890625,0.466796875,0.49609375,0.5068359375,0.4833984375,0.4287109375,0.375,0.353515625,0.369140625,0.40234375,0.427734375,0.419921875,0.376953125,0.330078125,0.3056640625,0.3154296875,0.3544921875,0.40234375,0.4306640625,0.4287109375,0.41796875,0.404296875,0.38671875,0.3681640625,0.3505859375,0.3369140625,0.3251953125,0.3154296875,0.3076171875,0.3056640625,0.310546875,0.318359375,0.32421875,0.3251953125,0.333984375,0.3701171875,0.4189453125,0.4541015625,0.45703125,0.42578125,0.376953125,0.3193359375,0.24609375,0.1875,0.173828125,0.2099609375,0.2705078125,0.3251953125,0.3837890625,0.462890625,0.5458984375,0.607421875,0.6328125,0.6318359375,0.6220703125,0.6103515625,0.5966796875,0.5830078125,0.57421875,0.5703125,0.5693359375,0.5703125,0.5654296875,0.5478515625,0.533203125,0.5390625,0.5712890625,0.62109375,0.673828125,0.71484375,0.7099609375,0.6416015625,0.5283203125,0.4130859375,0.3408203125,0.3251953125,0.3388671875,0.39453125,0.4755859375,0.5380859375,0.552734375,0.5146484375,0.4482421875,0.3701171875,0.2890625,0.2451171875,0.2724609375,0.3623046875,0.46875,0.55078125,0.62109375,0.67578125,0.697265625,0.681640625,0.6455078125,0.6201171875,0.6220703125,0.63671875,0.658203125,0.6669921875,0.642578125,0.5849609375,0.5126953125,0.4482421875,0.3837890625,0.3212890625,0.294921875,0.3271484375,0.4052734375,0.490234375,0.55078125,0.5888671875,0.5712890625,0.50390625,0.32421875,0.2998046875,0.3173828125,0.37109375,0.439453125,0.498046875,0.5087890625,0.4677734375,0.4072265625,0.365234375,0.373046875,0.4296875,0.5,0.56640625,0.609375,0.615234375,0.5927734375,0.5673828125,0.5595703125,0.5478515625,0.505859375,0.453125,0.4248046875,0.4384765625,0.4912109375,0.5595703125,0.6279296875,0.6806640625,0.6962890625,0.671875,0.6240234375,0.5869140625,0.5791015625,0.5771484375,0.5595703125,0.525390625,0.484375,0.4501953125,0.431640625,0.4296875,0.4306640625,0.4306640625,0.4296875,0.42578125,0.4228515625,0.419921875,0.419921875,0.423828125,0.4423828125,0.4775390625,0.517578125,0.55078125,0.5673828125,0.5693359375,0.5673828125,0.5654296875,0.5625,0.560546875,0.5595703125,0.5595703125,0.5595703125,0.5458984375,0.4892578125,0.40625,0.341796875,0.326171875,0.36328125,0.4296875,0.5029296875,0.5712890625,0.6142578125,0.6201171875,0.59765625,0.57421875,0.5693359375,0.5791015625,0.615234375,0.6552734375,0.6689453125,0.6416015625,0.5810546875,0.509765625,0.4287109375,0.3271484375,0.24609375,0.2275390625,0.2783203125,0.36328125,0.439453125,0.5107421875,0.578125,0.62109375,0.626953125,0.6064453125,0.583984375,0.5791015625,0.568359375,0.517578125,0.4443359375,0.3896484375,0.3818359375,0.421875,0.4892578125,0.55078125,0.5712890625,0.548828125,0.509765625,0.4873046875,0.5078125,0.5693359375,0.6484375,0.7392578125,0.8017578125,0.796875,0.728515625,0.6357421875,0.5595703125,0.4931640625,0.447265625,0.439453125,0.474609375,0.5302734375,0.5712890625,0.5791015625,0.57421875,0.556640625,0.5244140625,0.48828125,0.458984375,0.4423828125,0.439453125,0.431640625,0.3994140625,0.3623046875,0.3515625,0.3798828125,0.439453125,0.509765625,0.5869140625,0.6767578125,0.7373046875,0.7314453125,0.662109375,0.568359375,0.4892578125,0.4228515625,0.3798828125,0.3828125,0.4306640625,0.4990234375,0.5478515625,0.5595703125,0.5478515625,0.4990234375,0.4306640625,0.3828125,0.3798828125,0.4228515625,0.4892578125,0.568359375,0.662109375,0.73046875,0.734375,0.6708984375,0.5791015625,0.5,0.4306640625,0.3857421875,0.3857421875,0.4326171875,0.4990234375,0.5478515625,0.5595703125,0.5498046875,0.51171875,0.462890625,0.4365234375,0.451171875,0.5029296875,0.5693359375,0.6328125,0.6650390625,0.6455078125,0.578125,0.4931640625,0.4345703125,0.419921875,0.41796875,0.4189453125,0.421875,0.4267578125,0.4326171875,0.4375,0.439453125,0.4326171875,0.4013671875,0.36328125,0.3505859375,0.3779296875,0.4384765625,0.509765625,0.5673828125,0.568359375,0.5107421875,0.4287109375,0.37109375,0.3720703125,0.4296875,0.490234375,0.501953125,0.4638671875,0.4052734375,0.3681640625,0.3798828125,0.439453125,0.5126953125,0.5791015625,0.619140625,0.6201171875,0.59375,0.56640625,0.5595703125,0.5595703125,0.5634765625,0.5693359375,0.5751953125,0.5791015625,0.580078125,0.5791015625,0.564453125,0.5068359375,0.4248046875,0.359375,0.341796875,0.3759765625,0.439453125,0.509765625,0.5771484375,0.623046875,0.630859375,0.611328125,0.5869140625,0.5791015625,0.5732421875,0.5517578125,0.5146484375,0.47265625,0.4384765625,0.421875,0.419921875,0.4150390625,0.392578125,0.373046875,0.380859375,0.4267578125,0.49609375,0.5693359375,0.638671875,0.69140625,0.7060546875,0.677734375,0.626953125,0.5869140625,0.5791015625,0.5712890625,0.5302734375,0.4775390625,0.4462890625,0.4580078125,0.509765625,0.5791015625,0.6572265625,0.740234375,0.7890625,0.76953125,0.6875,0.587890625,0.509765625,0.4306640625,0.3291015625,0.2451171875,0.220703125,0.263671875,0.34375,0.419921875,0.48828125,0.5390625,0.5537109375,0.525390625,0.4755859375,0.4375,0.4296875,0.421875,0.3837890625,0.3330078125,0.302734375,0.314453125,0.36328125,0.4296875,0.486328125,0.4970703125,0.4599609375,0.404296875,0.3681640625,0.380859375,0.439453125,0.5107421875,0.5751953125,0.61328125,0.615234375,0.58984375,0.564453125,0.5595703125,0.560546875,0.5625,0.5625,0.5615234375,0.560546875,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5478515625,0.4990234375,0.4306640625,0.3828125,0.3798828125,0.4228515625,0.4892578125,0.548828125,0.5625,0.529296875,0.4755859375,0.4404296875,0.4521484375,0.509765625,0.56640625,0.57421875,0.53125,0.4677734375,0.4248046875,0.4326171875,0.4892578125,0.5458984375,0.5546875,0.513671875,0.4541015625,0.4169921875,0.4296875,0.4892578125,0.568359375,0.6552734375,0.708984375,0.6953125,0.6181640625,0.5185546875,0.439453125,0.361328125,0.2685546875,0.2001953125,0.1953125,0.255859375,0.34375,0.419921875,0.5,0.609375,0.708984375,0.75,0.71875,0.6455078125,0.5693359375,0.5,0.4501953125,0.439453125,0.4736328125,0.529296875,0.5703125,0.5791015625,0.5771484375,0.576171875,0.5751953125,0.5732421875,0.572265625,0.5712890625,0.5693359375,0.5751953125,0.60546875,0.640625,0.65234375,0.625,0.5673828125,0.5,0.44140625,0.4248046875,0.451171875,0.494140625,0.5185546875,0.5,0.439453125,0.380859375,0.3681640625,0.404296875,0.4599609375,0.4970703125,0.486328125,0.4296875,0.36328125,0.3154296875,0.306640625,0.3388671875,0.3916015625,0.431640625,0.439453125,0.4375,0.435546875,0.431640625,0.427734375,0.423828125,0.421875,0.419921875,0.41796875,0.4169921875,0.4169921875,0.4169921875,0.4189453125,0.419921875,0.419921875,0.4296875,0.470703125,0.5234375,0.5556640625,0.544921875,0.49609375,0.4296875,0.353515625,0.2626953125,0.1962890625,0.1943359375,0.255859375,0.34375,0.419921875,0.490234375,0.5595703125,0.6064453125,0.6171875,0.599609375,0.5771484375,0.5693359375,0.5673828125,0.5654296875,0.5625,0.560546875,0.5595703125,0.5595703125,0.5595703125,0.5498046875,0.5126953125,0.466796875,0.4423828125,0.4599609375,0.5126953125,0.5791015625,0.6416015625,0.6728515625,0.6494140625,0.5791015625,0.4921875,0.4326171875,0.419921875,0.431640625,0.4814453125,0.55078125,0.599609375,0.6015625,0.5576171875,0.4892578125,0.41015625,0.318359375,0.255859375,0.26171875,0.3330078125,0.4296875,0.509765625,0.580078125,0.638671875,0.6640625,0.6494140625,0.609375,0.576171875,0.5693359375,0.5791015625,0.611328125,0.6455078125,0.6533203125,0.6220703125,0.5595703125,0.4892578125,0.412109375,0.32421875,0.2646484375,0.2705078125,0.33984375,0.4326171875,0.509765625,0.5654296875,0.5712890625,0.5263671875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.466796875,0.431640625,0.4404296875,0.490234375,0.5595703125,0.619140625,0.6328125,0.5966796875,0.5419921875,0.505859375,0.5185546875,0.5791015625,0.6455078125,0.681640625,0.6630859375,0.595703125,0.51171875,0.453125,0.439453125,0.4296875,0.3896484375,0.3369140625,0.3076171875,0.3203125,0.37109375,0.439453125,0.5078125,0.556640625,0.5654296875,0.533203125,0.478515625,0.4384765625,0.4296875,0.4345703125,0.4541015625,0.486328125,0.5234375,0.552734375,0.568359375,0.5693359375,0.5673828125,0.5654296875,0.5625,0.560546875,0.5595703125,0.5595703125,0.5595703125,0.556640625,0.5419921875,0.515625,0.4833984375,0.45703125,0.4423828125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.43359375,0.4091796875,0.38671875,0.392578125,0.43359375,0.5,0.5693359375,0.6318359375,0.6630859375,0.640625,0.572265625,0.48828125,0.4306640625,0.419921875,0.4326171875,0.484375,0.5537109375,0.6015625,0.6025390625,0.5576171875,0.4892578125,0.412109375,0.3271484375,0.2783203125,0.2998046875,0.3837890625,0.4873046875,0.5693359375,0.6357421875,0.6708984375,0.65234375,0.5830078125,0.49609375,0.4345703125,0.419921875,0.41015625,0.3779296875,0.3447265625,0.3388671875,0.373046875,0.4375,0.509765625,0.5673828125,0.5693359375,0.51171875,0.4287109375,0.3681640625,0.365234375,0.419921875,0.4970703125,0.5908203125,0.6611328125,0.66796875,0.6083984375,0.5185546875,0.439453125,0.3701171875,0.31640625,0.3017578125,0.3310546875,0.384765625,0.427734375,0.439453125,0.4443359375,0.4599609375,0.48828125,0.5205078125,0.548828125,0.564453125,0.5693359375,0.5595703125,0.5126953125,0.4482421875,0.4013671875,0.400390625,0.443359375,0.509765625,0.5869140625,0.677734375,0.7392578125,0.7353515625,0.6650390625,0.5693359375,0.4892578125,0.4189453125,0.3603515625,0.3359375,0.3525390625,0.3955078125,0.4306640625,0.439453125,0.4306640625,0.396484375,0.3564453125,0.341796875,0.369140625,0.4287109375,0.5,0.5791015625,0.673828125,0.7412109375,0.7431640625,0.6787109375,0.5869140625,0.509765625,0.439453125,0.37890625,0.3486328125,0.359375,0.396484375,0.4296875,0.439453125,0.4306640625,0.3896484375,0.333984375,0.30078125,0.310546875,0.3603515625,0.4296875,0.5029296875,0.572265625,0.615234375,0.6201171875,0.5947265625,0.568359375,0.5595703125,0.5576171875,0.5576171875,0.55859375,0.5595703125,0.560546875,0.560546875,0.5595703125,0.5458984375,0.49609375,0.427734375,0.380859375,0.37890625,0.4228515625,0.4892578125,0.5498046875,0.568359375,0.5458984375,0.5068359375,0.486328125,0.5078125,0.5693359375,0.6298828125,0.642578125,0.60546875,0.548828125,0.509765625,0.5205078125,0.5791015625,0.6435546875,0.67578125,0.654296875,0.583984375,0.4990234375,0.44140625,0.4296875,0.4306640625,0.4296875,0.4267578125,0.4228515625,0.419921875,0.4189453125,0.419921875,0.416015625,0.396484375,0.3818359375,0.3935546875,0.4404296875,0.5087890625,0.5791015625,0.642578125,0.6748046875,0.654296875,0.587890625,0.505859375,0.451171875,0.439453125,0.4443359375,0.458984375,0.484375,0.5146484375,0.5400390625,0.5546875,0.5595703125,0.548828125,0.494140625,0.4150390625,0.3505859375,0.3330078125,0.3662109375,0.4296875,0.49609375,0.544921875,0.5556640625,0.5234375,0.470703125,0.4296875,0.419921875,0.4111328125,0.373046875,0.3271484375,0.3037109375,0.3203125,0.373046875,0.439453125,0.517578125,0.6142578125,0.689453125,0.7041015625,0.6513671875,0.56640625,0.4892578125,0.4140625,0.33203125,0.2861328125,0.30859375,0.390625,0.4912109375,0.5693359375,0.63671875,0.6884765625,0.7041015625,0.6787109375,0.6298828125,0.58984375,0.5791015625,0.568359375,0.5263671875,0.4736328125,0.4443359375,0.458984375,0.5107421875,0.5791015625,0.63671875,0.6455078125,0.6025390625,0.5400390625,0.4990234375,0.509765625,0.5693359375,0.6357421875,0.6728515625,0.65625,0.5888671875,0.5048828125,0.4443359375,0.4296875,0.4287109375,0.4287109375,0.4306640625,0.43359375,0.4375,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.4306640625,0.3955078125,0.3525390625,0.3359375,0.3603515625,0.4189453125,0.4892578125,0.5498046875,0.5595703125,0.51953125,0.458984375,0.4189453125,0.4296875,0.4892578125,0.5498046875,0.564453125,0.529296875,0.474609375,0.4384765625,0.451171875,0.509765625,0.5673828125,0.5771484375,0.5341796875,0.470703125,0.4267578125,0.43359375,0.4892578125,0.5673828125,0.6669921875,0.748046875,0.76953125,0.7236328125,0.6435546875,0.5693359375,0.4931640625,0.400390625,0.333984375,0.330078125,0.392578125,0.4814453125,0.5595703125,0.6337890625,0.708984375,0.7431640625,0.7060546875,0.609375,0.5009765625,0.419921875,0.3515625,0.30078125,0.287109375,0.3173828125,0.369140625,0.41015625,0.419921875,0.419921875,0.419921875,0.419921875,0.419921875,0.419921875,0.419921875,0.419921875,0.431640625,0.4833984375,0.5546875,0.60546875,0.6103515625,0.5673828125,0.5,0.44140625,0.4375,0.4912109375,0.5673828125,0.62109375,0.6181640625,0.5595703125,0.5,0.4912109375,0.5361328125,0.6025390625,0.646484375,0.638671875,0.5791015625,0.5087890625,0.4541015625,0.4375,0.46484375,0.5166015625,0.5576171875,0.5693359375,0.5712890625,0.5732421875,0.5751953125,0.5751953125,0.5732421875,0.5712890625,0.5693359375,0.5673828125,0.56640625,0.5673828125,0.5703125,0.57421875,0.5771484375,0.5791015625,0.5908203125,0.6328125,0.68359375,0.7109375,0.6943359375,0.6396484375,0.5693359375,0.4892578125,0.3955078125,0.3271484375,0.3251953125,0.3896484375,0.4814453125,0.5595703125,0.625,0.6611328125,0.6474609375,0.5859375,0.5078125,0.4521484375,0.439453125,0.439453125,0.4384765625,0.4345703125,0.4306640625,0.42578125,0.421875,0.419921875,0.408203125,0.3662109375,0.3154296875,0.2880859375,0.3046875,0.359375,0.4296875,0.5029296875,0.572265625,0.6181640625,0.6259765625,0.6064453125,0.583984375,0.5791015625,0.5888671875,0.6220703125,0.6591796875,0.669921875,0.6396484375,0.5791015625,0.509765625,0.4306640625,0.3359375,0.2646484375,0.2587890625,0.3193359375,0.41015625,0.4892578125,0.5576171875,0.6025390625,0.6015625,0.5537109375,0.484375,0.4326171875,0.419921875,0.4296875,0.48046875,0.552734375,0.6064453125,0.6142578125,0.5751953125,0.509765625,0.431640625,0.33984375,0.2734375,0.271484375,0.333984375,0.423828125,0.5,0.5556640625,0.564453125,0.5234375,0.5302734375,0.47265625,0.462890625,0.5029296875,0.5703125,0.6318359375,0.6552734375,0.638671875,0.60546875,0.587890625,0.611328125,0.673828125,0.7373046875,0.759765625,0.71875,0.6240234375,0.515625,0.4443359375,0.4287109375,0.4208984375,0.384765625,0.3388671875,0.3134765625,0.32421875,0.369140625,0.4287109375,0.486328125,0.5185546875,0.5107421875,0.466796875,0.4111328125,0.376953125,0.376953125,0.39453125,0.4375,0.501953125,0.56640625,0.611328125,0.6279296875,0.6220703125,0.6103515625,0.5966796875,0.5830078125,0.57421875,0.5703125,0.5693359375,0.5703125,0.56640625,0.5498046875,0.5185546875,0.48046875,0.44921875,0.4326171875,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4267578125,0.419921875,0.4248046875,0.4541015625,0.5068359375,0.5673828125,0.6220703125,0.6630859375,0.658203125,0.59375,0.4892578125,0.3876953125,0.3291015625,0.3251953125,0.3486328125,0.4130859375,0.4951171875,0.5537109375,0.5595703125,0.5166015625,0.4482421875,0.3720703125,0.298828125,0.271484375,0.3173828125,0.4228515625,0.5380859375,0.6220703125,0.685546875,0.708984375,0.6630859375,0.5595703125,0.4375,0.3525390625,0.3251953125,0.310546875,0.2890625,0.2841796875,0.3173828125,0.388671875,0.474609375,0.55078125,0.6083984375,0.6044921875,0.529296875,0.4169921875,0.3232421875,0.291015625,0.3251953125,0.3876953125,0.4794921875,0.5654296875,0.6015625,0.5732421875,0.50390625,0.4287109375,0.357421875,0.2998046875,0.2783203125,0.3046875,0.359375,0.4091796875,0.4287109375,0.4423828125,0.466796875,0.50390625,0.546875,0.583984375,0.6083984375,0.6220703125,0.6220703125,0.5849609375,0.525390625,0.4765625,0.46484375,0.494140625,0.55078125,0.6181640625,0.6923828125,0.734375,0.7109375,0.62890625,0.5283203125,0.4482421875,0.3779296875,0.3232421875,0.3056640625,0.3310546875,0.3798828125,0.419921875,0.4287109375,0.4208984375,0.3876953125,0.349609375,0.337890625,0.3671875,0.427734375,0.5,0.5791015625,0.673828125,0.744140625,0.7529296875,0.7001953125,0.6201171875,0.55078125,0.4873046875,0.421875,0.375,0.3642578125,0.384765625,0.4130859375,0.4287109375,0.427734375,0.3876953125,0.32421875,0.2763671875,0.2705078125,0.310546875,0.376953125,0.453125,0.53515625,0.5986328125,0.6240234375,0.611328125,0.5859375,0.5703125,0.5615234375,0.5595703125,0.5654296875,0.57421875,0.580078125,0.5791015625,0.5703125,0.548828125,0.490234375,0.416015625,0.361328125,0.353515625,0.3896484375,0.4482421875,0.501953125,0.525390625,0.5224609375,0.51171875,0.5185546875,0.556640625,0.6220703125,0.6845703125,0.70703125,0.6865234375,0.6435546875,0.61328125,0.6220703125,0.673828125,0.724609375,0.7275390625,0.6650390625,0.556640625,0.4462890625,0.3828125,0.376953125,0.384765625,0.3798828125,0.3623046875,0.33984375,0.3232421875,0.318359375,0.3251953125,0.3369140625,0.3564453125,0.3984375,0.46484375,0.5439453125,0.6171875,0.673828125,0.7158203125,0.7177734375,0.6640625,0.57421875,0.4833984375,0.431640625,0.4287109375,0.44140625,0.4599609375,0.4853515625,0.513671875,0.5390625,0.5576171875,0.5703125,0.568359375,0.5234375,0.4443359375,0.3671875,0.326171875,0.333984375,0.376953125,0.42578125,0.45703125,0.4541015625,0.4189453125,0.3701171875,0.333984375,0.3251953125,0.3212890625,0.3037109375,0.2890625,0.294921875,0.3271484375,0.376953125,0.4287109375,0.4873046875,0.5625,0.6220703125,0.6318359375,0.5859375,0.513671875,0.4482421875,0.384765625,0.33203125,0.3212890625,0.3720703125,0.4658203125,0.5595703125,0.6220703125,0.673828125,0.7236328125,0.751953125,0.7490234375,0.720703125,0.689453125,0.673828125,0.654296875,0.611328125,0.5634765625,0.5419921875,0.5615234375,0.6123046875,0.673828125,0.7216796875,0.71875,0.6650390625,0.5947265625,0.55078125,0.5615234375,0.6220703125,0.6875,0.7158203125,0.6826171875,0.591796875,0.482421875,0.4033203125,0.376953125,0.3681640625,0.3671875,0.376953125,0.39453125,0.4140625,0.4267578125,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.419921875,0.3798828125,0.3310546875,0.3056640625,0.3232421875,0.3779296875,0.4482421875,0.5078125,0.5185546875,0.478515625,0.41796875,0.376953125,0.3876953125,0.4482421875,0.51171875,0.541015625,0.53125,0.501953125,0.4833984375,0.4990234375,0.55078125,0.6015625,0.6044921875,0.5546875,0.4794921875,0.419921875,0.4091796875,0.4482421875,0.5087890625,0.5966796875,0.6826171875,0.728515625,0.7197265625,0.673828125,0.6220703125,0.5625,0.4833984375,0.4169921875,0.3984375,0.4365234375,0.5048828125,0.5703125,0.6328125,0.68359375,0.685546875,0.62109375,0.509765625,0.3994140625,0.3251953125,0.265625,0.220703125,0.2099609375,0.2353515625,0.28125,0.3173828125,0.3251953125,0.3251953125,0.3251953125,0.3251953125,0.3251953125,0.3251953125,0.3251953125,0.3251953125,0.33984375,0.40234375,0.4951171875,0.5712890625,0.5966796875,0.5654296875,0.5,0.44140625,0.439453125,0.4951171875,0.57421875,0.6298828125,0.6279296875,0.5703125,0.5126953125,0.5146484375,0.578125,0.666015625,0.728515625,0.73046875,0.673828125,0.6005859375,0.5361328125,0.50390625,0.515625,0.5595703125,0.6025390625,0.6220703125,0.6328125,0.646484375,0.65625,0.65625,0.646484375,0.6328125,0.6220703125,0.611328125,0.6044921875,0.60546875,0.619140625,0.640625,0.66015625,0.673828125,0.6923828125,0.7353515625,0.779296875,0.791015625,0.7587890625,0.6943359375,0.6220703125,0.5419921875,0.4482421875,0.376953125,0.3681640625,0.4208984375,0.501953125,0.5703125,0.6259765625,0.654296875,0.6337890625,0.5703125,0.4931640625,0.4404296875,0.4287109375,0.427734375,0.421875,0.40625,0.3828125,0.3583984375,0.337890625,0.3251953125,0.306640625,0.263671875,0.2197265625,0.2080078125,0.240234375,0.3046875,0.376953125,0.4521484375,0.53515625,0.6064453125,0.650390625,0.6640625,0.666015625,0.673828125,0.689453125,0.7177734375,0.73828125,0.7275390625,0.6806640625,0.615234375,0.55078125,0.4794921875,0.3798828125,0.2919921875,0.2607421875,0.296875,0.3720703125,0.4482421875,0.5166015625,0.5595703125,0.5537109375,0.4951171875,0.4130859375,0.3486328125,0.3251953125,0.3291015625,0.384765625,0.478515625,0.5693359375,0.615234375,0.6044921875,0.55078125,0.4833984375,0.40234375,0.341796875,0.33203125,0.3759765625,0.4423828125,0.5,0.5390625,0.5341796875,0.490234375,0.5576171875,0.4716796875,0.4384765625,0.46484375,0.5302734375,0.5947265625,0.630859375,0.6376953125,0.6328125,0.638671875,0.67578125,0.740234375,0.8037109375,0.8232421875,0.775390625,0.673828125,0.5595703125,0.4853515625,0.46875,0.462890625,0.4365234375,0.40234375,0.3837890625,0.3916015625,0.4248046875,0.46875,0.5068359375,0.51171875,0.4775390625,0.4189453125,0.3671875,0.3466796875,0.3642578125,0.3994140625,0.466796875,0.5517578125,0.6240234375,0.66015625,0.658203125,0.634765625,0.6064453125,0.5751953125,0.546875,0.5302734375,0.5263671875,0.5283203125,0.5302734375,0.5283203125,0.521484375,0.5078125,0.4912109375,0.4775390625,0.470703125,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.470703125,0.4794921875,0.501953125,0.5380859375,0.5791015625,0.6123046875,0.634765625,0.640625,0.59375,0.494140625,0.375,0.2822265625,0.2451171875,0.2587890625,0.2978515625,0.375,0.4638671875,0.5185546875,0.515625,0.46484375,0.39453125,0.3203125,0.2548828125,0.2421875,0.3056640625,0.4267578125,0.5498046875,0.634765625,0.69921875,0.7216796875,0.6708984375,0.5517578125,0.41015625,0.3037109375,0.2587890625,0.2314453125,0.2119140625,0.2314453125,0.3037109375,0.4130859375,0.5234375,0.6044921875,0.6640625,0.6630859375,0.5849609375,0.455078125,0.328125,0.2587890625,0.2587890625,0.2919921875,0.373046875,0.4775390625,0.5546875,0.57421875,0.537109375,0.46875,0.3955078125,0.328125,0.294921875,0.314453125,0.3720703125,0.43359375,0.46875,0.4951171875,0.51953125,0.541015625,0.5625,0.5849609375,0.609375,0.634765625,0.6533203125,0.642578125,0.607421875,0.568359375,0.55078125,0.564453125,0.6044921875,0.6533203125,0.703125,0.7177734375,0.673828125,0.580078125,0.4755859375,0.39453125,0.326171875,0.283203125,0.2861328125,0.3369140625,0.40625,0.45703125,0.46875,0.4599609375,0.421875,0.375,0.3525390625,0.373046875,0.4287109375,0.5,0.578125,0.669921875,0.740234375,0.7568359375,0.71875,0.65625,0.6044921875,0.5537109375,0.4892578125,0.4306640625,0.40234375,0.4111328125,0.4404296875,0.46875,0.482421875,0.447265625,0.375,0.3056640625,0.2763671875,0.30078125,0.3642578125,0.44140625,0.529296875,0.599609375,0.6240234375,0.6025390625,0.5615234375,0.5302734375,0.5078125,0.50390625,0.5185546875,0.541015625,0.5556640625,0.5517578125,0.5302734375,0.4951171875,0.4326171875,0.36328125,0.3203125,0.3173828125,0.349609375,0.39453125,0.4345703125,0.455078125,0.4638671875,0.4775390625,0.5107421875,0.5654296875,0.634765625,0.701171875,0.7392578125,0.7421875,0.720703125,0.69921875,0.703125,0.740234375,0.771484375,0.744140625,0.6484375,0.5185546875,0.40625,0.353515625,0.3642578125,0.3837890625,0.375,0.3369140625,0.2861328125,0.248046875,0.2392578125,0.2587890625,0.29296875,0.359375,0.4580078125,0.56640625,0.6572265625,0.7138671875,0.740234375,0.7490234375,0.7138671875,0.6376953125,0.546875,0.4775390625,0.4521484375,0.46875,0.4921875,0.50390625,0.5029296875,0.49609375,0.4951171875,0.5068359375,0.5302734375,0.548828125,0.537109375,0.4912109375,0.427734375,0.375,0.353515625,0.3642578125,0.3798828125,0.380859375,0.361328125,0.3251953125,0.2880859375,0.263671875,0.2587890625,0.2607421875,0.275390625,0.30859375,0.3564453125,0.40625,0.4462890625,0.46875,0.4921875,0.5234375,0.5439453125,0.53515625,0.49609375,0.443359375,0.39453125,0.353515625,0.337890625,0.369140625,0.4443359375,0.53515625,0.6044921875,0.634765625,0.6591796875,0.701171875,0.748046875,0.779296875,0.783203125,0.765625,0.740234375,0.7080078125,0.662109375,0.6240234375,0.6162109375,0.6435546875,0.6923828125,0.740234375,0.771484375,0.75,0.681640625,0.6044921875,0.560546875,0.57421875,0.634765625,0.7021484375,0.7373046875,0.708984375,0.619140625,0.5,0.40625,0.3642578125,0.3408203125,0.333984375,0.3525390625,0.3916015625,0.4345703125,0.462890625,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.45703125,0.40625,0.3369140625,0.2861328125,0.283203125,0.326171875,0.39453125,0.4541015625,0.46484375,0.4248046875,0.3642578125,0.32421875,0.3349609375,0.39453125,0.462890625,0.5146484375,0.541015625,0.546875,0.548828125,0.5654296875,0.6044921875,0.6416015625,0.6376953125,0.5849609375,0.501953125,0.4248046875,0.38671875,0.39453125,0.4208984375,0.4755859375,0.546875,0.6103515625,0.646484375,0.650390625,0.634765625,0.607421875,0.5546875,0.494140625,0.455078125,0.4541015625,0.4853515625,0.5302734375,0.57421875,0.6005859375,0.58203125,0.5107421875,0.408203125,0.3154296875,0.2587890625,0.21484375,0.181640625,0.1728515625,0.1923828125,0.2265625,0.2529296875,0.2587890625,0.2587890625,0.2587890625,0.2587890625,0.2587890625,0.2587890625,0.2587890625,0.2587890625,0.2744140625,0.345703125,0.4521484375,0.546875,0.5869140625,0.5634765625,0.5,0.4404296875,0.43359375,0.48046875,0.548828125,0.595703125,0.5888671875,0.5302734375,0.474609375,0.490234375,0.5771484375,0.693359375,0.7802734375,0.794921875,0.740234375,0.6640625,0.583984375,0.52734375,0.5185546875,0.5537109375,0.6015625,0.634765625,0.6640625,0.69921875,0.7236328125,0.7236328125,0.69921875,0.6640625,0.634765625,0.6083984375,0.5859375,0.5849609375,0.61328125,0.6611328125,0.7080078125,0.740234375,0.7734375,0.8212890625,0.8564453125,0.84765625,0.791015625,0.7109375,0.634765625,0.556640625,0.46484375,0.39453125,0.3779296875,0.416015625,0.478515625,0.5302734375,0.572265625,0.5986328125,0.5927734375,0.5576171875,0.5107421875,0.4765625,0.46875,0.4677734375,0.4580078125,0.4306640625,0.3857421875,0.333984375,0.2890625,0.2587890625,0.2255859375,0.177734375,0.142578125,0.1513671875,0.2080078125,0.2880859375,0.3642578125,0.4384765625,0.521484375,0.599609375,0.6572265625,0.6923828125,0.7158203125,0.740234375,0.7685546875,0.7978515625,0.806640625,0.7783203125,0.720703125,0.6552734375,0.6044921875,0.5458984375,0.4453125,0.3369140625,0.26953125,0.26953125,0.3232421875,0.39453125,0.46484375,0.515625,0.5185546875,0.4638671875,0.375,0.2978515625,0.2587890625,0.248046875,0.296875,0.40234375,0.5244140625,0.61328125,0.63671875,0.6044921875,0.5556640625,0.498046875,0.4521484375,0.435546875,0.4501953125,0.4775390625,0.5,0.5078125,0.48046875,0.4306640625,0.53515625,0.43359375,0.3857421875,0.4052734375,0.46875,0.53515625,0.5791015625,0.599609375,0.6103515625,0.6298828125,0.673828125,0.740234375,0.8046875,0.83203125,0.7978515625,0.7119140625,0.6123046875,0.544921875,0.5302734375,0.5263671875,0.5107421875,0.4912109375,0.48046875,0.4853515625,0.50390625,0.5302734375,0.5458984375,0.5224609375,0.4638671875,0.3974609375,0.35546875,0.357421875,0.39453125,0.44921875,0.53515625,0.6240234375,0.6796875,0.6845703125,0.650390625,0.6044921875,0.5576171875,0.5078125,0.46875,0.4521484375,0.4560546875,0.4658203125,0.46875,0.470703125,0.4775390625,0.4912109375,0.5078125,0.521484375,0.5283203125,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5341796875,0.5546875,0.5849609375,0.61328125,0.6259765625,0.62109375,0.6044921875,0.572265625,0.4892578125,0.375,0.2724609375,0.2177734375,0.220703125,0.2587890625,0.3154296875,0.4033203125,0.48828125,0.52734375,0.50390625,0.4375,0.3642578125,0.2900390625,0.224609375,0.2119140625,0.275390625,0.3955078125,0.51953125,0.6044921875,0.6728515625,0.708984375,0.6796875,0.5771484375,0.4375,0.3212890625,0.2587890625,0.2138671875,0.1845703125,0.20703125,0.294921875,0.42578125,0.5498046875,0.634765625,0.6982421875,0.716796875,0.66015625,0.5380859375,0.3974609375,0.2958984375,0.2587890625,0.2568359375,0.3173828125,0.427734375,0.5380859375,0.599609375,0.5908203125,0.5302734375,0.4541015625,0.375,0.328125,0.3388671875,0.4013671875,0.4755859375,0.5302734375,0.5693359375,0.5849609375,0.576171875,0.5576171875,0.548828125,0.5654296875,0.6044921875,0.6455078125,0.6669921875,0.6630859375,0.640625,0.6181640625,0.615234375,0.634765625,0.6640625,0.6923828125,0.6904296875,0.6376953125,0.544921875,0.443359375,0.3642578125,0.2978515625,0.265625,0.2900390625,0.36328125,0.4541015625,0.515625,0.5302734375,0.51953125,0.4736328125,0.4140625,0.375,0.3818359375,0.4306640625,0.5,0.576171875,0.66015625,0.7236328125,0.740234375,0.7119140625,0.6669921875,0.634765625,0.6005859375,0.5419921875,0.48046875,0.4443359375,0.44921875,0.484375,0.5302734375,0.560546875,0.5361328125,0.4609375,0.375,0.32421875,0.333984375,0.39453125,0.47265625,0.560546875,0.6240234375,0.6328125,0.5869140625,0.521484375,0.46875,0.431640625,0.4248046875,0.4501953125,0.48828125,0.513671875,0.5068359375,0.46875,0.4189453125,0.357421875,0.306640625,0.2861328125,0.3017578125,0.3349609375,0.3642578125,0.3857421875,0.392578125,0.3974609375,0.4189453125,0.466796875,0.533203125,0.6044921875,0.673828125,0.7275390625,0.7509765625,0.7451171875,0.7275390625,0.7216796875,0.740234375,0.7509765625,0.7021484375,0.5966796875,0.474609375,0.3857421875,0.3623046875,0.39453125,0.4287109375,0.4189453125,0.36328125,0.2900390625,0.234375,0.224609375,0.2587890625,0.31640625,0.419921875,0.5498046875,0.6650390625,0.7353515625,0.75390625,0.740234375,0.7099609375,0.64453125,0.560546875,0.494140625,0.4697265625,0.48828125,0.5302734375,0.56640625,0.5654296875,0.5263671875,0.47265625,0.43359375,0.4326171875,0.46875,0.5146484375,0.548828125,0.5546875,0.5244140625,0.4697265625,0.4208984375,0.39453125,0.373046875,0.3427734375,0.30859375,0.28125,0.2646484375,0.259765625,0.2587890625,0.267578125,0.3115234375,0.38671875,0.4658203125,0.5224609375,0.5419921875,0.5302734375,0.51171875,0.4921875,0.4716796875,0.447265625,0.4189453125,0.390625,0.3642578125,0.3466796875,0.3671875,0.4306640625,0.513671875,0.5830078125,0.6142578125,0.6044921875,0.595703125,0.625,0.685546875,0.748046875,0.7841796875,0.7783203125,0.740234375,0.6923828125,0.6435546875,0.6162109375,0.6240234375,0.662109375,0.7080078125,0.740234375,0.7529296875,0.7138671875,0.634765625,0.5576171875,0.521484375,0.5419921875,0.6044921875,0.67578125,0.7294921875,0.7294921875,0.662109375,0.5537109375,0.453125,0.39453125,0.353515625,0.3369140625,0.3583984375,0.4140625,0.4775390625,0.5205078125,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.515625,0.4541015625,0.36328125,0.2900390625,0.265625,0.2978515625,0.3642578125,0.423828125,0.4345703125,0.39453125,0.333984375,0.2939453125,0.3046875,0.3642578125,0.4365234375,0.5068359375,0.560546875,0.5908203125,0.6025390625,0.61328125,0.634765625,0.6572265625,0.654296875,0.61328125,0.5380859375,0.4541015625,0.392578125,0.3642578125,0.3486328125,0.3525390625,0.388671875,0.4521484375,0.5234375,0.578125,0.6044921875,0.6162109375,0.5986328125,0.5517578125,0.4970703125,0.45703125,0.44921875,0.46875,0.4931640625,0.5029296875,0.48046875,0.4248046875,0.353515625,0.29296875,0.2587890625,0.2333984375,0.2138671875,0.208984375,0.220703125,0.240234375,0.2548828125,0.2587890625,0.2587890625,0.2587890625,0.2587890625,0.2587890625,0.2587890625,0.2587890625,0.2587890625,0.2744140625,0.345703125,0.4521484375,0.546875,0.5869140625,0.5634765625,0.5,0.439453125,0.4248046875,0.4580078125,0.5107421875,0.5439453125,0.529296875,0.46875,0.416015625,0.4375,0.5380859375,0.6708984375,0.771484375,0.7939453125,0.740234375,0.6611328125,0.5654296875,0.48828125,0.4638671875,0.4951171875,0.5537109375,0.6044921875,0.6552734375,0.71484375,0.7568359375,0.7568359375,0.71484375,0.6552734375,0.6044921875,0.5576171875,0.5146484375,0.501953125,0.5380859375,0.6103515625,0.6865234375,0.740234375,0.791015625,0.849609375,0.880859375,0.8564453125,0.779296875,0.68359375,0.6044921875,0.5283203125,0.443359375,0.380859375,0.3642578125,0.392578125,0.4365234375,0.46875,0.49609375,0.5224609375,0.541015625,0.5458984375,0.5400390625,0.5322265625,0.5302734375,0.5302734375,0.5234375,0.4970703125,0.4443359375,0.375,0.3095703125,0.2587890625,0.2080078125,0.1494140625,0.1181640625,0.142578125,0.2197265625,0.3154296875,0.39453125,0.4658203125,0.5341796875,0.5908203125,0.6328125,0.6640625,0.6982421875,0.740234375,0.78515625,0.8212890625,0.826171875,0.7900390625,0.7275390625,0.6689453125,0.634765625,0.5927734375,0.4990234375,0.3798828125,0.2900390625,0.26171875,0.296875,0.3642578125,0.4375,0.50390625,0.52734375,0.48828125,0.4033203125,0.3154296875,0.2587890625,0.2275390625,0.2548828125,0.3505859375,0.48046875,0.5927734375,0.6455078125,0.634765625,0.6083984375,0.583984375,0.5634765625,0.546875,0.5322265625,0.517578125,0.5,0.470703125,0.416015625,0.3583984375,0.478515625,0.3837890625,0.341796875,0.365234375,0.4287109375,0.494140625,0.53515625,0.548828125,0.552734375,0.5673828125,0.607421875,0.673828125,0.7412109375,0.7802734375,0.7705078125,0.712890625,0.63671875,0.58203125,0.5703125,0.568359375,0.5625,0.5546875,0.55078125,0.552734375,0.5595703125,0.5703125,0.568359375,0.525390625,0.455078125,0.392578125,0.3681640625,0.392578125,0.4482421875,0.5185546875,0.611328125,0.69140625,0.71875,0.6845703125,0.6171875,0.55078125,0.48828125,0.4287109375,0.390625,0.3837890625,0.40234375,0.4228515625,0.4287109375,0.4326171875,0.44921875,0.48046875,0.5185546875,0.5498046875,0.56640625,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5771484375,0.6044921875,0.6376953125,0.654296875,0.640625,0.6015625,0.55078125,0.48828125,0.3876953125,0.2822265625,0.2177734375,0.216796875,0.263671875,0.3251953125,0.396484375,0.4892578125,0.5654296875,0.583984375,0.5361328125,0.4541015625,0.376953125,0.3017578125,0.228515625,0.201171875,0.2470703125,0.3525390625,0.4677734375,0.55078125,0.6240234375,0.6845703125,0.693359375,0.6298828125,0.5146484375,0.400390625,0.3251953125,0.2626953125,0.2119140625,0.2138671875,0.287109375,0.412109375,0.5361328125,0.6220703125,0.69140625,0.7373046875,0.72265625,0.6357421875,0.5068359375,0.3916015625,0.3251953125,0.2919921875,0.326171875,0.4248046875,0.541015625,0.6201171875,0.626953125,0.5703125,0.4921875,0.4033203125,0.3447265625,0.3486328125,0.4140625,0.5,0.5703125,0.62109375,0.6279296875,0.5888671875,0.5322265625,0.4931640625,0.5,0.55078125,0.611328125,0.658203125,0.677734375,0.666015625,0.6376953125,0.6181640625,0.6220703125,0.6357421875,0.6552734375,0.65625,0.6181640625,0.5419921875,0.4541015625,0.376953125,0.3125,0.283203125,0.3125,0.3935546875,0.490234375,0.5556640625,0.5703125,0.55859375,0.5078125,0.439453125,0.3896484375,0.3876953125,0.431640625,0.5,0.5732421875,0.646484375,0.6953125,0.701171875,0.673828125,0.638671875,0.6220703125,0.6015625,0.552734375,0.4931640625,0.4580078125,0.4658203125,0.509765625,0.5703125,0.6171875,0.60546875,0.5361328125,0.447265625,0.3876953125,0.3896484375,0.4482421875,0.525390625,0.611328125,0.666015625,0.6572265625,0.587890625,0.4990234375,0.4287109375,0.3779296875,0.369140625,0.4033203125,0.455078125,0.4892578125,0.48046875,0.4287109375,0.3662109375,0.3095703125,0.279296875,0.287109375,0.3232421875,0.3603515625,0.376953125,0.3818359375,0.3681640625,0.35546875,0.3671875,0.4111328125,0.478515625,0.55078125,0.6220703125,0.68359375,0.716796875,0.7138671875,0.689453125,0.669921875,0.673828125,0.669921875,0.6142578125,0.5205078125,0.4296875,0.3837890625,0.39453125,0.4482421875,0.49609375,0.490234375,0.4287109375,0.3447265625,0.283203125,0.27734375,0.3251953125,0.400390625,0.517578125,0.64453125,0.7314453125,0.75390625,0.7236328125,0.673828125,0.61328125,0.52734375,0.44921875,0.41796875,0.443359375,0.505859375,0.5703125,0.6181640625,0.6103515625,0.5439453125,0.455078125,0.388671875,0.380859375,0.4287109375,0.49609375,0.5732421875,0.626953125,0.626953125,0.576171875,0.505859375,0.4482421875,0.3955078125,0.34375,0.306640625,0.2958984375,0.306640625,0.3212890625,0.3251953125,0.3388671875,0.3974609375,0.490234375,0.576171875,0.62109375,0.6142578125,0.5703125,0.517578125,0.462890625,0.41796875,0.3935546875,0.3857421875,0.384765625,0.376953125,0.3779296875,0.421875,0.49609375,0.568359375,0.60546875,0.595703125,0.55078125,0.5126953125,0.5263671875,0.58984375,0.669921875,0.7236328125,0.72265625,0.673828125,0.6123046875,0.5615234375,0.5419921875,0.5634765625,0.611328125,0.654296875,0.673828125,0.6708984375,0.6220703125,0.54296875,0.4755859375,0.4541015625,0.4853515625,0.55078125,0.626953125,0.7021484375,0.73828125,0.70703125,0.619140625,0.51953125,0.4482421875,0.390625,0.361328125,0.376953125,0.435546875,0.5078125,0.55859375,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5556640625,0.490234375,0.3935546875,0.3125,0.283203125,0.3125,0.376953125,0.4375,0.4482421875,0.4072265625,0.3466796875,0.306640625,0.3173828125,0.376953125,0.451171875,0.52734375,0.587890625,0.6171875,0.6201171875,0.6162109375,0.6220703125,0.6328125,0.640625,0.6259765625,0.5791015625,0.5068359375,0.43359375,0.376953125,0.3251953125,0.279296875,0.2705078125,0.31640625,0.40234375,0.490234375,0.55078125,0.5966796875,0.61328125,0.5869140625,0.529296875,0.4658203125,0.4287109375,0.4287109375,0.4384765625,0.439453125,0.42578125,0.3984375,0.3662109375,0.33984375,0.3251953125,0.3154296875,0.3076171875,0.3056640625,0.310546875,0.318359375,0.32421875,0.3251953125,0.3251953125,0.3251953125,0.3251953125,0.3251953125,0.3251953125,0.3251953125,0.3251953125,0.33984375,0.40234375,0.4951171875,0.5712890625,0.5966796875,0.5654296875,0.5,0.4384765625,0.4189453125,0.443359375,0.4853515625,0.509765625,0.490234375,0.4287109375,0.375,0.3935546875,0.48828125,0.6142578125,0.708984375,0.7275390625,0.673828125,0.591796875,0.4892578125,0.4033203125,0.375,0.4130859375,0.484375,0.55078125,0.619140625,0.7001953125,0.7568359375,0.7568359375,0.7001953125,0.619140625,0.55078125,0.4853515625,0.419921875,0.390625,0.4228515625,0.5068359375,0.6025390625,0.673828125,0.740234375,0.8115234375,0.849609375,0.8212890625,0.7353515625,0.6328125,0.55078125,0.4775390625,0.404296875,0.35546875,0.349609375,0.376953125,0.412109375,0.4287109375,0.4423828125,0.466796875,0.5,0.533203125,0.556640625,0.568359375,0.5703125,0.5732421875,0.5791015625,0.5703125,0.53125,0.4658203125,0.390625,0.3251953125,0.2587890625,0.1875,0.1494140625,0.177734375,0.263671875,0.3662109375,0.4482421875,0.5146484375,0.55859375,0.576171875,0.580078125,0.587890625,0.6181640625,0.673828125,0.7333984375,0.7783203125,0.78515625,0.75,0.69140625,0.6416015625,0.6220703125,0.595703125,0.5166015625,0.4072265625,0.31640625,0.283203125,0.3115234375,0.376953125,0.4541015625,0.5361328125,0.583984375,0.5654296875,0.4892578125,0.396484375,0.3251953125,0.2744140625,0.271484375,0.333984375,0.4423828125,0.552734375,0.6162109375,0.6220703125,0.6162109375,0.623046875,0.6318359375,0.6259765625,0.5966796875,0.55078125,0.5,0.4404296875,0.361328125,0.2978515625,0.4228515625,0.35546875,0.337890625,0.373046875,0.439453125,0.5029296875,0.5302734375,0.521484375,0.498046875,0.48828125,0.5166015625,0.5791015625,0.6484375,0.6982421875,0.70703125,0.671875,0.6142578125,0.5693359375,0.5595703125,0.55859375,0.55859375,0.556640625,0.556640625,0.556640625,0.5576171875,0.5595703125,0.5498046875,0.501953125,0.4345703125,0.3857421875,0.3818359375,0.4228515625,0.4892578125,0.568359375,0.662109375,0.7314453125,0.7373046875,0.6767578125,0.5869140625,0.509765625,0.439453125,0.3798828125,0.3515625,0.3623046875,0.3994140625,0.431640625,0.439453125,0.4423828125,0.45703125,0.4833984375,0.515625,0.5419921875,0.556640625,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5673828125,0.6015625,0.6416015625,0.6572265625,0.6328125,0.5771484375,0.509765625,0.4306640625,0.3291015625,0.2451171875,0.220703125,0.263671875,0.34375,0.419921875,0.498046875,0.591796875,0.6611328125,0.6640625,0.6005859375,0.5087890625,0.4296875,0.3515625,0.267578125,0.21875,0.2392578125,0.32421875,0.427734375,0.509765625,0.5869140625,0.6689453125,0.71484375,0.6904296875,0.603515625,0.5,0.419921875,0.3447265625,0.2705078125,0.2373046875,0.2763671875,0.375,0.486328125,0.5693359375,0.6455078125,0.71875,0.75,0.708984375,0.609375,0.5,0.419921875,0.3662109375,0.375,0.447265625,0.54296875,0.6123046875,0.6162109375,0.5595703125,0.4794921875,0.38671875,0.3212890625,0.322265625,0.388671875,0.4814453125,0.5595703125,0.6162109375,0.62109375,0.5703125,0.498046875,0.4482421875,0.4521484375,0.509765625,0.5791015625,0.63671875,0.6611328125,0.646484375,0.6083984375,0.576171875,0.5693359375,0.5771484375,0.603515625,0.6259765625,0.619140625,0.5732421875,0.5029296875,0.4296875,0.36328125,0.326171875,0.341796875,0.40625,0.4892578125,0.5458984375,0.5595703125,0.5478515625,0.4990234375,0.4326171875,0.3857421875,0.3857421875,0.4306640625,0.5,0.5712890625,0.6328125,0.6630859375,0.65234375,0.61328125,0.5791015625,0.5693359375,0.5576171875,0.5146484375,0.4599609375,0.4287109375,0.4404296875,0.4912109375,0.5595703125,0.6162109375,0.6171875,0.560546875,0.482421875,0.427734375,0.4306640625,0.4892578125,0.568359375,0.6552734375,0.708984375,0.6953125,0.6181640625,0.5185546875,0.439453125,0.380859375,0.37109375,0.41015625,0.4697265625,0.5087890625,0.498046875,0.439453125,0.37109375,0.3173828125,0.3017578125,0.3271484375,0.3779296875,0.4189453125,0.4296875,0.4228515625,0.392578125,0.357421875,0.3466796875,0.376953125,0.4384765625,0.509765625,0.5810546875,0.640625,0.66796875,0.6552734375,0.6181640625,0.5859375,0.5791015625,0.5693359375,0.5185546875,0.4462890625,0.392578125,0.384765625,0.423828125,0.4892578125,0.5458984375,0.5478515625,0.4931640625,0.416015625,0.361328125,0.36328125,0.419921875,0.5009765625,0.611328125,0.7109375,0.751953125,0.7236328125,0.6513671875,0.5791015625,0.5029296875,0.4091796875,0.33984375,0.333984375,0.3935546875,0.482421875,0.5595703125,0.615234375,0.611328125,0.544921875,0.4541015625,0.3876953125,0.3837890625,0.439453125,0.5185546875,0.615234375,0.6904296875,0.703125,0.6494140625,0.564453125,0.4892578125,0.421875,0.36328125,0.3349609375,0.345703125,0.380859375,0.412109375,0.419921875,0.4326171875,0.4892578125,0.5712890625,0.63671875,0.6552734375,0.623046875,0.5595703125,0.490234375,0.4248046875,0.384765625,0.3798828125,0.40234375,0.4248046875,0.4296875,0.439453125,0.4873046875,0.5556640625,0.6064453125,0.61328125,0.57421875,0.509765625,0.4541015625,0.453125,0.5087890625,0.5859375,0.6396484375,0.63671875,0.5791015625,0.5107421875,0.458984375,0.4443359375,0.4736328125,0.5263671875,0.568359375,0.5791015625,0.5693359375,0.5205078125,0.451171875,0.40234375,0.3984375,0.44140625,0.509765625,0.5888671875,0.6796875,0.740234375,0.734375,0.6630859375,0.568359375,0.4892578125,0.4228515625,0.3798828125,0.3828125,0.4306640625,0.4990234375,0.5478515625,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5458984375,0.4892578125,0.40625,0.341796875,0.326171875,0.36328125,0.4296875,0.4892578125,0.5,0.4599609375,0.3994140625,0.359375,0.3701171875,0.4296875,0.5029296875,0.5712890625,0.6142578125,0.6201171875,0.59765625,0.57421875,0.5693359375,0.5771484375,0.6015625,0.62109375,0.6123046875,0.5673828125,0.5,0.4296875,0.35546875,0.275390625,0.2294921875,0.2509765625,0.33203125,0.431640625,0.509765625,0.57421875,0.6142578125,0.6103515625,0.5625,0.49609375,0.44921875,0.439453125,0.44140625,0.4404296875,0.4375,0.4326171875,0.4267578125,0.421875,0.419921875,0.41796875,0.4169921875,0.4169921875,0.4169921875,0.4189453125,0.419921875,0.419921875,0.419921875,0.419921875,0.419921875,0.419921875,0.419921875,0.419921875,0.419921875,0.431640625,0.4833984375,0.5546875,0.60546875,0.6103515625,0.5673828125,0.5,0.4384765625,0.419921875,0.447265625,0.4921875,0.5185546875,0.5009765625,0.439453125,0.3828125,0.3896484375,0.4609375,0.55859375,0.6298828125,0.6357421875,0.5791015625,0.498046875,0.396484375,0.3154296875,0.2978515625,0.3486328125,0.4326171875,0.509765625,0.5869140625,0.6796875,0.744140625,0.744140625,0.6796875,0.5869140625,0.509765625,0.43359375,0.349609375,0.2998046875,0.318359375,0.3994140625,0.5,0.5791015625,0.6552734375,0.740234375,0.791015625,0.7734375,0.6923828125,0.5908203125,0.509765625,0.4375,0.3759765625,0.345703125,0.357421875,0.3955078125,0.4296875,0.439453125,0.4443359375,0.4599609375,0.4873046875,0.517578125,0.54296875,0.556640625,0.5595703125,0.5654296875,0.58984375,0.6103515625,0.603515625,0.5595703125,0.4912109375,0.419921875,0.34375,0.2587890625,0.2080078125,0.2255859375,0.306640625,0.408203125,0.4892578125,0.5517578125,0.57421875,0.5556640625,0.51953125,0.4990234375,0.5185546875,0.5791015625,0.6474609375,0.6982421875,0.7099609375,0.6787109375,0.6240234375,0.5810546875,0.5693359375,0.5546875,0.494140625,0.41015625,0.3427734375,0.326171875,0.36328125,0.4296875,0.5087890625,0.6005859375,0.6640625,0.6611328125,0.591796875,0.498046875,0.419921875,0.35546875,0.3232421875,0.3447265625,0.4150390625,0.5,0.5576171875,0.5693359375,0.5751953125,0.60546875,0.640625,0.65234375,0.625,0.5673828125,0.5,0.4228515625,0.3310546875,0.265625,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.375,0.376953125,0.4189453125,0.486328125,0.5595703125,0.6162109375,0.61328125,0.5478515625,0.4560546875,0.3896484375,0.384765625,0.439453125,0.5078125,0.556640625,0.564453125,0.529296875,0.47265625,0.4296875,0.419921875,0.419921875,0.4189453125,0.4169921875,0.4169921875,0.4169921875,0.41796875,0.419921875,0.4130859375,0.380859375,0.34375,0.3310546875,0.3583984375,0.41796875,0.4892578125,0.568359375,0.6611328125,0.7255859375,0.7236328125,0.658203125,0.56640625,0.4892578125,0.4248046875,0.3837890625,0.3876953125,0.4365234375,0.505859375,0.556640625,0.5693359375,0.5673828125,0.5517578125,0.51953125,0.48046875,0.4453125,0.4248046875,0.419921875,0.41796875,0.4189453125,0.421875,0.4267578125,0.4326171875,0.4375,0.439453125,0.453125,0.5029296875,0.5712890625,0.6181640625,0.6201171875,0.576171875,0.509765625,0.43359375,0.349609375,0.2998046875,0.318359375,0.3994140625,0.5,0.5791015625,0.65625,0.74609375,0.8076171875,0.8046875,0.7373046875,0.6455078125,0.5693359375,0.4912109375,0.390625,0.30859375,0.2861328125,0.33203125,0.4140625,0.4892578125,0.5693359375,0.6708984375,0.7548828125,0.7783203125,0.7333984375,0.6533203125,0.5791015625,0.5,0.3916015625,0.294921875,0.255859375,0.28515625,0.357421875,0.4296875,0.5087890625,0.615234375,0.7099609375,0.7470703125,0.71484375,0.6416015625,0.5693359375,0.5087890625,0.48046875,0.4853515625,0.50390625,0.5087890625,0.48046875,0.419921875,0.34375,0.2529296875,0.1875,0.1875,0.2509765625,0.341796875,0.419921875,0.48046875,0.501953125,0.482421875,0.447265625,0.427734375,0.44921875,0.509765625,0.576171875,0.619140625,0.6162109375,0.568359375,0.5,0.451171875,0.439453125,0.4521484375,0.5078125,0.5859375,0.6474609375,0.6611328125,0.625,0.5595703125,0.48828125,0.4228515625,0.3828125,0.380859375,0.40625,0.4326171875,0.439453125,0.431640625,0.3994140625,0.361328125,0.3486328125,0.3740234375,0.431640625,0.5,0.564453125,0.6044921875,0.599609375,0.5498046875,0.48046875,0.4306640625,0.419921875,0.41015625,0.369140625,0.318359375,0.291015625,0.3056640625,0.359375,0.4296875,0.4912109375,0.5126953125,0.4921875,0.453125,0.4306640625,0.44921875,0.509765625,0.5888671875,0.6875,0.765625,0.779296875,0.724609375,0.6376953125,0.5595703125,0.5,0.4892578125,0.529296875,0.58984375,0.6298828125,0.619140625,0.5595703125,0.490234375,0.439453125,0.4296875,0.4638671875,0.5185546875,0.560546875,0.5693359375,0.556640625,0.5068359375,0.44140625,0.396484375,0.3974609375,0.4423828125,0.509765625,0.576171875,0.6181640625,0.615234375,0.564453125,0.494140625,0.443359375,0.4296875,0.419921875,0.3857421875,0.3466796875,0.3359375,0.3662109375,0.427734375,0.5,0.5615234375,0.58203125,0.5595703125,0.51953125,0.4970703125,0.517578125,0.5791015625,0.6552734375,0.7275390625,0.755859375,0.712890625,0.611328125,0.5,0.419921875,0.34375,0.255859375,0.1953125,0.2001953125,0.2685546875,0.361328125,0.439453125,0.5009765625,0.5244140625,0.5107421875,0.482421875,0.470703125,0.49609375,0.5595703125,0.63671875,0.720703125,0.76953125,0.7490234375,0.66796875,0.5673828125,0.4892578125,0.4248046875,0.3857421875,0.3935546875,0.4462890625,0.5166015625,0.5673828125,0.5791015625,0.5859375,0.6103515625,0.6328125,0.626953125,0.58203125,0.5126953125,0.439453125,0.373046875,0.3349609375,0.349609375,0.4130859375,0.49609375,0.5546875,0.5693359375,0.5791015625,0.611328125,0.6455078125,0.6533203125,0.6220703125,0.5595703125,0.4892578125,0.4296875,0.4111328125,0.435546875,0.478515625,0.5048828125,0.48828125,0.4296875,0.36328125,0.3115234375,0.296875,0.3232421875,0.3720703125,0.41015625,0.419921875,0.412109375,0.37890625,0.3427734375,0.33203125,0.3603515625,0.419921875,0.4892578125,0.568359375,0.662109375,0.7314453125,0.7373046875,0.6767578125,0.5869140625,0.509765625,0.439453125,0.3798828125,0.3515625,0.3623046875,0.3994140625,0.431640625,0.439453125,0.439453125,0.4384765625,0.4345703125,0.4306640625,0.42578125,0.421875,0.419921875,0.412109375,0.3896484375,0.37109375,0.3828125,0.4296875,0.4990234375,0.5693359375,0.6259765625,0.6337890625,0.59375,0.5341796875,0.49609375,0.5087890625,0.5693359375,0.6357421875,0.6708984375,0.65234375,0.5830078125,0.49609375,0.4345703125,0.419921875,0.431640625,0.4912109375,0.580078125,0.6533203125,0.6767578125,0.6455078125,0.5791015625,0.498046875,0.3974609375,0.318359375,0.30078125,0.3515625,0.4345703125,0.509765625,0.5771484375,0.634765625,0.6591796875,0.64453125,0.6044921875,0.5693359375,0.5595703125,0.55859375,0.5595703125,0.5625,0.56640625,0.5693359375,0.5703125,0.5693359375,0.568359375,0.5693359375,0.572265625,0.576171875,0.5791015625,0.580078125,0.5791015625,0.5771484375,0.576171875,0.576171875,0.5771484375,0.578125,0.5791015625,0.5791015625,0.5869140625,0.619140625,0.6552734375,0.6640625,0.6328125,0.5712890625,0.5,0.44140625,0.439453125,0.4951171875,0.57421875,0.6298828125,0.6279296875,0.5693359375,0.505859375,0.474609375,0.4794921875,0.4990234375,0.505859375,0.4794921875,0.419921875,0.345703125,0.265625,0.2197265625,0.2412109375,0.322265625,0.421875,0.5,0.576171875,0.666015625,0.73046875,0.728515625,0.662109375,0.5693359375,0.4892578125,0.4091796875,0.310546875,0.2353515625,0.2236328125,0.2783203125,0.3642578125,0.439453125,0.517578125,0.6171875,0.697265625,0.716796875,0.66796875,0.5859375,0.509765625,0.4423828125,0.3974609375,0.3955078125,0.4384765625,0.501953125,0.548828125,0.5595703125,0.556640625,0.541015625,0.5126953125,0.48046875,0.4541015625,0.4404296875,0.439453125,0.4541015625,0.5126953125,0.595703125,0.6591796875,0.673828125,0.63671875,0.5693359375,0.48828125,0.38671875,0.3046875,0.2841796875,0.3330078125,0.4150390625,0.4892578125,0.544921875,0.5458984375,0.4912109375,0.4169921875,0.365234375,0.37109375,0.4296875,0.5,0.5537109375,0.5693359375,0.541015625,0.490234375,0.44921875,0.439453125,0.43359375,0.4091796875,0.38671875,0.392578125,0.43359375,0.5,0.5693359375,0.6455078125,0.7373046875,0.8046875,0.8076171875,0.74609375,0.65625,0.5791015625,0.5068359375,0.435546875,0.3857421875,0.373046875,0.3896484375,0.412109375,0.419921875,0.43359375,0.486328125,0.55859375,0.611328125,0.6171875,0.576171875,0.509765625,0.431640625,0.33984375,0.2734375,0.3564453125,0.3671875,0.419921875,0.4951171875,0.5703125,0.6279296875,0.6279296875,0.5634765625,0.4697265625,0.396484375,0.3828125,0.4287109375,0.486328125,0.5185546875,0.5068359375,0.453125,0.384765625,0.3369140625,0.3251953125,0.32421875,0.318359375,0.310546875,0.3056640625,0.3076171875,0.3154296875,0.3251953125,0.3291015625,0.3095703125,0.28515625,0.2822265625,0.3154296875,0.376953125,0.4482421875,0.5244140625,0.6064453125,0.658203125,0.6494140625,0.5859375,0.5078125,0.4482421875,0.400390625,0.37890625,0.400390625,0.4638671875,0.5419921875,0.6005859375,0.6220703125,0.6259765625,0.6044921875,0.5478515625,0.4697265625,0.3935546875,0.34375,0.3251953125,0.31640625,0.3154296875,0.3291015625,0.3564453125,0.388671875,0.4150390625,0.4287109375,0.4501953125,0.5087890625,0.5830078125,0.6376953125,0.6455078125,0.609375,0.55078125,0.4853515625,0.419921875,0.390625,0.4228515625,0.5068359375,0.6025390625,0.673828125,0.7392578125,0.806640625,0.8447265625,0.8271484375,0.759765625,0.6806640625,0.6220703125,0.5595703125,0.4658203125,0.3720703125,0.3212890625,0.33203125,0.384765625,0.4482421875,0.51953125,0.6220703125,0.7216796875,0.7763671875,0.771484375,0.7265625,0.673828125,0.609375,0.5068359375,0.3935546875,0.3154296875,0.296875,0.3271484375,0.376953125,0.439453125,0.5361328125,0.6376953125,0.703125,0.7099609375,0.6728515625,0.6220703125,0.572265625,0.5283203125,0.4912109375,0.4560546875,0.4189453125,0.375,0.3251953125,0.267578125,0.1943359375,0.1396484375,0.134765625,0.1845703125,0.2587890625,0.3251953125,0.3818359375,0.4189453125,0.4345703125,0.4423828125,0.4580078125,0.4951171875,0.55078125,0.6083984375,0.6376953125,0.6220703125,0.5634765625,0.4912109375,0.4404296875,0.4287109375,0.4404296875,0.4931640625,0.5703125,0.6337890625,0.654296875,0.6259765625,0.5703125,0.5068359375,0.4453125,0.40234375,0.390625,0.4052734375,0.423828125,0.4287109375,0.423828125,0.40234375,0.3798828125,0.376953125,0.40234375,0.4482421875,0.5,0.544921875,0.5615234375,0.5322265625,0.4638671875,0.3876953125,0.3369140625,0.3251953125,0.31640625,0.28125,0.2392578125,0.22265625,0.248046875,0.306640625,0.376953125,0.4423828125,0.48046875,0.4873046875,0.4765625,0.4736328125,0.4970703125,0.55078125,0.62109375,0.7099609375,0.779296875,0.7880859375,0.7333984375,0.6474609375,0.5703125,0.509765625,0.5,0.5400390625,0.6005859375,0.640625,0.6298828125,0.5703125,0.5029296875,0.462890625,0.46875,0.517578125,0.580078125,0.62109375,0.6220703125,0.6015625,0.5498046875,0.486328125,0.4462890625,0.44921875,0.4921875,0.55078125,0.6083984375,0.6376953125,0.6181640625,0.55078125,0.46484375,0.400390625,0.376953125,0.3603515625,0.3251953125,0.2978515625,0.3037109375,0.3525390625,0.42578125,0.5,0.5634765625,0.5947265625,0.59375,0.5791015625,0.578125,0.609375,0.673828125,0.7421875,0.7822265625,0.755859375,0.6552734375,0.5146484375,0.3935546875,0.3251953125,0.26953125,0.2099609375,0.177734375,0.2001953125,0.2724609375,0.359375,0.4287109375,0.482421875,0.501953125,0.4912109375,0.47265625,0.4716796875,0.505859375,0.5703125,0.6435546875,0.7109375,0.7353515625,0.6943359375,0.6044921875,0.509765625,0.4482421875,0.4033203125,0.3935546875,0.4345703125,0.515625,0.6044921875,0.6611328125,0.673828125,0.677734375,0.689453125,0.6884765625,0.654296875,0.5869140625,0.5048828125,0.4287109375,0.3623046875,0.3271484375,0.349609375,0.42578125,0.5244140625,0.5966796875,0.6220703125,0.63671875,0.658203125,0.6669921875,0.642578125,0.5849609375,0.5126953125,0.4482421875,0.3935546875,0.3701171875,0.380859375,0.4091796875,0.4296875,0.419921875,0.376953125,0.326171875,0.283203125,0.26171875,0.26953125,0.296875,0.3193359375,0.3251953125,0.3203125,0.298828125,0.2802734375,0.287109375,0.3251953125,0.3857421875,0.4482421875,0.5185546875,0.611328125,0.69140625,0.71875,0.6845703125,0.6171875,0.55078125,0.48828125,0.4287109375,0.390625,0.3837890625,0.40234375,0.4228515625,0.4287109375,0.427734375,0.421875,0.40625,0.3828125,0.3583984375,0.337890625,0.3251953125,0.3154296875,0.314453125,0.33984375,0.4013671875,0.484375,0.5634765625,0.6220703125,0.6611328125,0.6572265625,0.61328125,0.560546875,0.5361328125,0.55859375,0.6220703125,0.685546875,0.708984375,0.6630859375,0.5595703125,0.4375,0.3525390625,0.3251953125,0.333984375,0.41015625,0.5390625,0.666015625,0.7373046875,0.7333984375,0.673828125,0.59375,0.4970703125,0.41796875,0.39453125,0.4306640625,0.494140625,0.55078125,0.6025390625,0.6484375,0.669921875,0.6572265625,0.6220703125,0.5869140625,0.5703125,0.5625,0.5673828125,0.5849609375,0.607421875,0.6240234375,0.62890625,0.6220703125,0.6142578125,0.619140625,0.63671875,0.6591796875,0.67578125,0.6806640625,0.673828125,0.6630859375,0.6552734375,0.6533203125,0.658203125,0.666015625,0.671875,0.673828125,0.6796875,0.7001953125,0.71484375,0.69921875,0.646484375,0.5732421875,0.5,0.4423828125,0.4462890625,0.513671875,0.607421875,0.6748046875,0.6787109375,0.6220703125,0.5517578125,0.4931640625,0.4521484375,0.42578125,0.4033203125,0.3720703125,0.3251953125,0.2734375,0.2275390625,0.21875,0.2646484375,0.3505859375,0.4384765625,0.5,0.5576171875,0.630859375,0.681640625,0.6767578125,0.6142578125,0.5263671875,0.4482421875,0.3701171875,0.2861328125,0.23046875,0.234375,0.29296875,0.3701171875,0.4287109375,0.490234375,0.578125,0.66015625,0.697265625,0.6748046875,0.615234375,0.55078125,0.4921875,0.44921875,0.4423828125,0.4736328125,0.5234375,0.5615234375,0.5703125,0.5654296875,0.5419921875,0.5029296875,0.4609375,0.431640625,0.421875,0.4287109375,0.453125,0.5263671875,0.625,0.701171875,0.7236328125,0.6884765625,0.6220703125,0.541015625,0.4375,0.34765625,0.310546875,0.3349609375,0.392578125,0.4482421875,0.4853515625,0.47265625,0.4130859375,0.3427734375,0.3017578125,0.31640625,0.376953125,0.4482421875,0.5068359375,0.5322265625,0.5146484375,0.4736328125,0.4375,0.4287109375,0.4267578125,0.419921875,0.4248046875,0.4541015625,0.5068359375,0.5673828125,0.6220703125,0.6806640625,0.759765625,0.8271484375,0.8447265625,0.806640625,0.7392578125,0.673828125,0.6044921875,0.5107421875,0.4140625,0.34375,0.314453125,0.3154296875,0.3251953125,0.349609375,0.419921875,0.5185546875,0.599609375,0.630859375,0.607421875,0.55078125,0.4833984375,0.40234375,0.341796875,0.3369140625,0.3330078125,0.3798828125,0.455078125,0.5302734375,0.591796875,0.6103515625,0.576171875,0.5107421875,0.4521484375,0.4365234375,0.46875,0.5087890625,0.515625,0.4775390625,0.40234375,0.322265625,0.2705078125,0.2587890625,0.2548828125,0.240234375,0.220703125,0.208984375,0.2138671875,0.2333984375,0.2587890625,0.27734375,0.271484375,0.25390625,0.248046875,0.271484375,0.3251953125,0.39453125,0.466796875,0.5302734375,0.5576171875,0.53515625,0.478515625,0.4228515625,0.39453125,0.3779296875,0.3779296875,0.408203125,0.46875,0.5419921875,0.6005859375,0.634765625,0.6552734375,0.64453125,0.5849609375,0.4853515625,0.376953125,0.296875,0.2587890625,0.234375,0.2255859375,0.248046875,0.3037109375,0.375,0.4345703125,0.46875,0.50390625,0.56640625,0.6357421875,0.6787109375,0.681640625,0.6494140625,0.6044921875,0.5576171875,0.5146484375,0.501953125,0.5380859375,0.6103515625,0.6865234375,0.740234375,0.7841796875,0.8154296875,0.814453125,0.775390625,0.71484375,0.662109375,0.634765625,0.6044921875,0.53515625,0.4443359375,0.369140625,0.337890625,0.353515625,0.39453125,0.44921875,0.53515625,0.634765625,0.71484375,0.7548828125,0.7568359375,0.740234375,0.7099609375,0.6396484375,0.5380859375,0.4384765625,0.3720703125,0.3515625,0.3642578125,0.3916015625,0.44921875,0.52734375,0.5986328125,0.6416015625,0.6494140625,0.634765625,0.6103515625,0.5615234375,0.48828125,0.4052734375,0.33203125,0.283203125,0.2587890625,0.234375,0.1943359375,0.15625,0.1455078125,0.16796875,0.2119140625,0.2587890625,0.3046875,0.353515625,0.4052734375,0.4580078125,0.509765625,0.55859375,0.6044921875,0.6455078125,0.662109375,0.640625,0.5849609375,0.521484375,0.478515625,0.46875,0.4765625,0.5107421875,0.5576171875,0.5927734375,0.5986328125,0.572265625,0.5302734375,0.484375,0.443359375,0.421875,0.4248046875,0.4453125,0.4638671875,0.46875,0.466796875,0.4599609375,0.4521484375,0.4521484375,0.462890625,0.48046875,0.5,0.5126953125,0.4970703125,0.447265625,0.375,0.3076171875,0.267578125,0.2587890625,0.2509765625,0.22265625,0.1923828125,0.189453125,0.2265625,0.2919921875,0.3642578125,0.43359375,0.48828125,0.521484375,0.53515625,0.5439453125,0.564453125,0.6044921875,0.6572265625,0.72265625,0.767578125,0.7587890625,0.6953125,0.607421875,0.5302734375,0.4697265625,0.458984375,0.4990234375,0.560546875,0.6005859375,0.58984375,0.5302734375,0.4658203125,0.44140625,0.4716796875,0.541015625,0.61328125,0.6484375,0.634765625,0.6025390625,0.552734375,0.5078125,0.4912109375,0.5126953125,0.5576171875,0.6044921875,0.646484375,0.666015625,0.640625,0.568359375,0.4765625,0.4013671875,0.3642578125,0.33203125,0.287109375,0.2587890625,0.275390625,0.3388671875,0.4228515625,0.5,0.564453125,0.6044921875,0.6181640625,0.62109375,0.634765625,0.6748046875,0.740234375,0.8017578125,0.806640625,0.7265625,0.5771484375,0.412109375,0.298828125,0.2587890625,0.2392578125,0.224609375,0.234375,0.2783203125,0.34765625,0.41796875,0.46875,0.5048828125,0.50390625,0.4716796875,0.4384765625,0.431640625,0.46484375,0.5302734375,0.5986328125,0.646484375,0.6435546875,0.5849609375,0.498046875,0.42578125,0.39453125,0.3837890625,0.412109375,0.4853515625,0.5849609375,0.6767578125,0.7294921875,0.740234375,0.744140625,0.7529296875,0.7451171875,0.7041015625,0.630859375,0.544921875,0.46875,0.3994140625,0.3515625,0.3564453125,0.4189453125,0.5146484375,0.595703125,0.634765625,0.6611328125,0.677734375,0.6630859375,0.607421875,0.525390625,0.4482421875,0.39453125,0.3525390625,0.326171875,0.3251953125,0.3447265625,0.3681640625,0.376953125,0.3642578125,0.3427734375,0.31640625,0.2900390625,0.26953125,0.2607421875,0.2587890625,0.2587890625,0.255859375,0.24609375,0.2421875,0.2587890625,0.2978515625,0.3466796875,0.39453125,0.44921875,0.53515625,0.6240234375,0.6796875,0.6845703125,0.650390625,0.6044921875,0.5576171875,0.5078125,0.46875,0.4521484375,0.4560546875,0.4658203125,0.46875,0.4677734375,0.4580078125,0.4306640625,0.3857421875,0.333984375,0.2890625,0.2587890625,0.2392578125,0.2548828125,0.3193359375,0.421875,0.529296875,0.6044921875,0.634765625,0.6435546875,0.615234375,0.5654296875,0.52734375,0.5263671875,0.5673828125,0.634765625,0.69921875,0.7216796875,0.6708984375,0.5517578125,0.41015625,0.3037109375,0.2587890625,0.2548828125,0.3349609375,0.4912109375,0.66015625,0.7734375,0.794921875,0.740234375,0.6640625,0.5849609375,0.52734375,0.513671875,0.5400390625,0.5791015625,0.6044921875,0.625,0.6455078125,0.6513671875,0.634765625,0.599609375,0.5595703125,0.5302734375,0.5107421875,0.51953125,0.5576171875,0.607421875,0.6455078125,0.654296875,0.634765625,0.615234375,0.6240234375,0.662109375,0.712890625,0.7509765625,0.759765625,0.740234375,0.71484375,0.6953125,0.6904296875,0.701171875,0.720703125,0.736328125,0.740234375,0.744140625,0.7568359375,0.7568359375,0.7236328125,0.65625,0.5751953125,0.5,0.4423828125,0.4482421875,0.5185546875,0.615234375,0.685546875,0.69140625,0.634765625,0.5595703125,0.4716796875,0.388671875,0.328125,0.2939453125,0.2763671875,0.2587890625,0.2431640625,0.248046875,0.2841796875,0.34765625,0.4189453125,0.47265625,0.5,0.525390625,0.568359375,0.6015625,0.5966796875,0.5458984375,0.4697265625,0.39453125,0.32421875,0.26953125,0.2587890625,0.30078125,0.3740234375,0.439453125,0.46875,0.4970703125,0.5537109375,0.62109375,0.66796875,0.67578125,0.6484375,0.6044921875,0.55859375,0.5166015625,0.4912109375,0.4912109375,0.5078125,0.525390625,0.5302734375,0.5244140625,0.501953125,0.46875,0.44140625,0.4326171875,0.4453125,0.46875,0.5087890625,0.58984375,0.685546875,0.748046875,0.751953125,0.7041015625,0.634765625,0.556640625,0.4638671875,0.3828125,0.341796875,0.345703125,0.3720703125,0.39453125,0.40234375,0.37109375,0.3134765625,0.267578125,0.259765625,0.2978515625,0.3642578125,0.4365234375,0.5009765625,0.5380859375,0.53515625,0.505859375,0.4765625,0.46875,0.470703125,0.4794921875,0.501953125,0.5380859375,0.5791015625,0.6123046875,0.634765625,0.662109375,0.71484375,0.775390625,0.814453125,0.8154296875,0.7841796875,0.740234375,0.6806640625,0.57421875,0.4384765625,0.3193359375,0.2509765625,0.23828125,0.2587890625,0.298828125,0.38671875,0.501953125,0.6015625,0.650390625,0.64453125,0.6044921875,0.5556640625,0.498046875,0.4521484375,0.31640625,0.2900390625,0.3232421875,0.39453125,0.46875,0.537109375,0.5810546875,0.587890625,0.5625,0.52734375,0.5126953125,0.5302734375,0.548828125,0.53515625,0.48046875,0.3974609375,0.3173828125,0.2685546875,0.2587890625,0.2529296875,0.2265625,0.1923828125,0.1728515625,0.181640625,0.21484375,0.2587890625,0.2958984375,0.2998046875,0.2783203125,0.2568359375,0.259765625,0.2978515625,0.3642578125,0.431640625,0.47265625,0.4716796875,0.43359375,0.3837890625,0.35546875,0.3642578125,0.3818359375,0.3984375,0.421875,0.4580078125,0.505859375,0.5576171875,0.6044921875,0.6474609375,0.6640625,0.6298828125,0.5380859375,0.4189453125,0.3173828125,0.2587890625,0.21484375,0.1884765625,0.20703125,0.2783203125,0.380859375,0.4736328125,0.5302734375,0.580078125,0.6416015625,0.6923828125,0.712890625,0.697265625,0.6640625,0.634765625,0.6083984375,0.5859375,0.5849609375,0.61328125,0.6611328125,0.7080078125,0.740234375,0.759765625,0.751953125,0.7119140625,0.6572265625,0.611328125,0.5927734375,0.6044921875,0.6142578125,0.5830078125,0.513671875,0.4306640625,0.3671875,0.3466796875,0.3642578125,0.3955078125,0.4501953125,0.5244140625,0.6044921875,0.6728515625,0.716796875,0.740234375,0.7529296875,0.736328125,0.6767578125,0.5849609375,0.490234375,0.423828125,0.39453125,0.3779296875,0.37890625,0.408203125,0.4638671875,0.5283203125,0.5791015625,0.6044921875,0.6123046875,0.5732421875,0.4853515625,0.3779296875,0.2900390625,0.2509765625,0.2587890625,0.2734375,0.2724609375,0.255859375,0.2373046875,0.2275390625,0.236328125,0.2587890625,0.2900390625,0.3388671875,0.408203125,0.4853515625,0.5546875,0.6044921875,0.634765625,0.658203125,0.6650390625,0.646484375,0.607421875,0.564453125,0.5361328125,0.5302734375,0.5322265625,0.5400390625,0.5458984375,0.541015625,0.5224609375,0.49609375,0.46875,0.4453125,0.4326171875,0.44140625,0.46875,0.501953125,0.5244140625,0.5302734375,0.5322265625,0.5390625,0.546875,0.546875,0.5361328125,0.5185546875,0.5,0.4755859375,0.4326171875,0.375,0.3193359375,0.2802734375,0.26171875,0.2587890625,0.251953125,0.2265625,0.2041015625,0.208984375,0.2529296875,0.3212890625,0.39453125,0.4658203125,0.5322265625,0.580078125,0.6015625,0.6064453125,0.61328125,0.634765625,0.6669921875,0.7080078125,0.728515625,0.7041015625,0.634765625,0.546875,0.46875,0.4091796875,0.3984375,0.4384765625,0.5,0.5400390625,0.529296875,0.46875,0.4091796875,0.3994140625,0.4501953125,0.53515625,0.6103515625,0.6357421875,0.6044921875,0.5576171875,0.5126953125,0.4912109375,0.5078125,0.552734375,0.6025390625,0.634765625,0.6611328125,0.677734375,0.6630859375,0.607421875,0.525390625,0.4482421875,0.39453125,0.3427734375,0.2802734375,0.2421875,0.2587890625,0.3291015625,0.4208984375,0.5,0.564453125,0.6044921875,0.6181640625,0.62109375,0.634765625,0.6748046875,0.740234375,0.7958984375,0.779296875,0.6708984375,0.5048828125,0.34765625,0.26171875,0.2587890625,0.2802734375,0.3115234375,0.35546875,0.408203125,0.458984375,0.5009765625,0.5302734375,0.5439453125,0.5146484375,0.4521484375,0.39453125,0.375,0.404296875,0.46875,0.5341796875,0.5625,0.5380859375,0.4716796875,0.3984375,0.3583984375,0.3642578125,0.3916015625,0.451171875,0.5380859375,0.6298828125,0.69921875,0.734375,0.740234375,0.7451171875,0.76171875,0.767578125,0.7421875,0.6826171875,0.6044921875,0.5302734375,0.455078125,0.3857421875,0.35546875,0.38671875,0.46484375,0.548828125,0.6044921875,0.646484375,0.666015625,0.640625,0.568359375,0.4765625,0.4013671875,0.3642578125,0.3369140625,0.3095703125,0.2978515625,0.30859375,0.3388671875,0.3720703125,0.39453125,0.41015625,0.4072265625,0.3798828125,0.3369140625,0.2919921875,0.2646484375,0.2587890625,0.2578125,0.2548828125,0.2587890625,0.275390625,0.3037109375,0.3359375,0.3642578125,0.3994140625,0.466796875,0.5517578125,0.6240234375,0.66015625,0.658203125,0.634765625,0.6064453125,0.5751953125,0.546875,0.5302734375,0.5263671875,0.5283203125,0.5302734375,0.5302734375,0.5234375,0.4970703125,0.4443359375,0.375,0.3095703125,0.2587890625,0.2255859375,0.2451171875,0.328125,0.447265625,0.5546875,0.6083984375,0.6044921875,0.576171875,0.5205078125,0.4638671875,0.44140625,0.46875,0.5322265625,0.6044921875,0.6728515625,0.708984375,0.6796875,0.5771484375,0.4375,0.3212890625,0.2587890625,0.236328125,0.302734375,0.455078125,0.6318359375,0.759765625,0.7919921875,0.740234375,0.6708984375,0.6162109375,0.59375,0.6044921875,0.630859375,0.6455078125,0.634765625,0.619140625,0.611328125,0.6044921875,0.587890625,0.556640625,0.5146484375,0.46875,0.4345703125,0.4443359375,0.5,0.57421875,0.6298828125,0.6396484375,0.6044921875,0.5703125,0.580078125,0.6357421875,0.708984375,0.7646484375,0.7744140625,0.740234375,0.6962890625,0.6630859375,0.654296875,0.673828125,0.70703125,0.7333984375,0.740234375,0.744140625,0.7568359375,0.7568359375,0.7236328125,0.65625,0.5751953125,0.5,0.4423828125,0.4443359375,0.5078125,0.5966796875,0.66015625,0.662109375,0.6044921875,0.5244140625,0.4189453125,0.314453125,0.2451171875,0.224609375,0.23828125,0.2587890625,0.28515625,0.33984375,0.4111328125,0.474609375,0.5107421875,0.5146484375,0.5,0.48828125,0.4990234375,0.5185546875,0.521484375,0.4921875,0.4345703125,0.3642578125,0.30078125,0.279296875,0.3173828125,0.3994140625,0.486328125,0.5341796875,0.5302734375,0.517578125,0.5322265625,0.5712890625,0.6181640625,0.6513671875,0.6552734375,0.634765625,0.60546875,0.56640625,0.5244140625,0.4912109375,0.474609375,0.4697265625,0.46875,0.4638671875,0.4453125,0.4248046875,0.421875,0.443359375,0.484375,0.5302734375,0.5859375,0.669921875,0.748046875,0.779296875,0.7490234375,0.6787109375,0.6044921875,0.5322265625,0.4609375,0.408203125,0.3828125,0.3798828125,0.3779296875,0.3642578125,0.3359375,0.2841796875,0.234375,0.2197265625,0.25390625,0.3212890625,0.39453125,0.4677734375,0.5361328125,0.580078125,0.5849609375,0.5615234375,0.537109375,0.5302734375,0.5341796875,0.5546875,0.5849609375,0.61328125,0.6259765625,0.62109375,0.6044921875,0.5927734375,0.611328125,0.6572265625,0.7119140625,0.751953125,0.759765625,0.740234375,0.697265625,0.5927734375,0.447265625,0.3115234375,0.232421875,0.22265625,0.2587890625,0.3154296875,0.4091796875,0.521484375,0.61328125,0.658203125,0.658203125,0.634765625,0.6083984375,0.583984375,0.5634765625,0.296875,0.255859375,0.283203125,0.353515625,0.4287109375,0.5009765625,0.564453125,0.6015625,0.603515625,0.583984375,0.56640625,0.5703125,0.57421875,0.552734375,0.5,0.4306640625,0.3681640625,0.3330078125,0.3251953125,0.3173828125,0.28125,0.2353515625,0.2099609375,0.220703125,0.265625,0.3251953125,0.376953125,0.3857421875,0.35546875,0.3125,0.2919921875,0.314453125,0.376953125,0.4404296875,0.462890625,0.4384765625,0.3857421875,0.341796875,0.337890625,0.376953125,0.4228515625,0.4453125,0.447265625,0.4462890625,0.4580078125,0.494140625,0.55078125,0.6142578125,0.6669921875,0.673828125,0.6142578125,0.5068359375,0.3994140625,0.3251953125,0.2626953125,0.2119140625,0.2099609375,0.2744140625,0.3857421875,0.49609375,0.5703125,0.6328125,0.689453125,0.7197265625,0.7119140625,0.67578125,0.638671875,0.6220703125,0.611328125,0.6044921875,0.60546875,0.619140625,0.640625,0.66015625,0.673828125,0.673828125,0.63671875,0.5732421875,0.5146484375,0.4892578125,0.505859375,0.55078125,0.595703125,0.60546875,0.568359375,0.49609375,0.421875,0.3779296875,0.376953125,0.3876953125,0.4013671875,0.4306640625,0.4833984375,0.55078125,0.6181640625,0.673828125,0.724609375,0.7646484375,0.76171875,0.7021484375,0.6044921875,0.509765625,0.4482421875,0.3935546875,0.3388671875,0.314453125,0.341796875,0.4130859375,0.4921875,0.55078125,0.5888671875,0.568359375,0.490234375,0.38671875,0.30859375,0.2880859375,0.3251953125,0.3740234375,0.4052734375,0.40625,0.380859375,0.3447265625,0.322265625,0.3251953125,0.3408203125,0.37890625,0.4384765625,0.5087890625,0.568359375,0.6064453125,0.6220703125,0.630859375,0.6318359375,0.6220703125,0.6044921875,0.5849609375,0.572265625,0.5703125,0.568359375,0.556640625,0.533203125,0.5,0.466796875,0.4423828125,0.4287109375,0.421875,0.431640625,0.4609375,0.5029296875,0.5419921875,0.5654296875,0.5703125,0.5751953125,0.5966796875,0.619140625,0.6220703125,0.5966796875,0.55078125,0.5,0.4462890625,0.3876953125,0.3388671875,0.314453125,0.314453125,0.322265625,0.3251953125,0.318359375,0.2919921875,0.265625,0.267578125,0.3076171875,0.375,0.4482421875,0.5205078125,0.587890625,0.6318359375,0.6435546875,0.630859375,0.6171875,0.6220703125,0.6376953125,0.6630859375,0.67578125,0.650390625,0.5869140625,0.5048828125,0.4287109375,0.369140625,0.3583984375,0.3984375,0.458984375,0.4990234375,0.4892578125,0.4287109375,0.37109375,0.369140625,0.4287109375,0.5166015625,0.5859375,0.59765625,0.55078125,0.4921875,0.44921875,0.4462890625,0.486328125,0.5498046875,0.6015625,0.6220703125,0.63671875,0.658203125,0.6669921875,0.642578125,0.5849609375,0.5126953125,0.4482421875,0.37890625,0.298828125,0.24609375,0.2548828125,0.3251953125,0.419921875,0.5,0.5634765625,0.5947265625,0.59375,0.5791015625,0.578125,0.609375,0.673828125,0.7275390625,0.708984375,0.6064453125,0.462890625,0.3408203125,0.2939453125,0.3251953125,0.3798828125,0.4404296875,0.4970703125,0.53515625,0.5537109375,0.5615234375,0.5703125,0.56640625,0.515625,0.4326171875,0.3603515625,0.3349609375,0.3642578125,0.4287109375,0.490234375,0.5068359375,0.470703125,0.4052734375,0.349609375,0.3388671875,0.376953125,0.43359375,0.5068359375,0.58203125,0.638671875,0.6669921875,0.673828125,0.673828125,0.6806640625,0.7099609375,0.740234375,0.7431640625,0.70703125,0.642578125,0.5703125,0.4912109375,0.4013671875,0.337890625,0.3369140625,0.3974609375,0.482421875,0.55078125,0.6083984375,0.6376953125,0.6181640625,0.55078125,0.46484375,0.400390625,0.376953125,0.361328125,0.3330078125,0.30859375,0.310546875,0.34375,0.3955078125,0.4482421875,0.494140625,0.5166015625,0.4990234375,0.4453125,0.3798828125,0.3359375,0.3251953125,0.3251953125,0.3251953125,0.3291015625,0.3388671875,0.3525390625,0.3662109375,0.376953125,0.39453125,0.4375,0.501953125,0.56640625,0.611328125,0.6279296875,0.6220703125,0.6103515625,0.5966796875,0.5830078125,0.57421875,0.5703125,0.5693359375,0.5703125,0.5732421875,0.5791015625,0.5703125,0.53125,0.4658203125,0.390625,0.3251953125,0.2783203125,0.2900390625,0.3671875,0.474609375,0.5615234375,0.5869140625,0.55078125,0.4912109375,0.4130859375,0.349609375,0.3408203125,0.392578125,0.474609375,0.55078125,0.6240234375,0.6845703125,0.693359375,0.6298828125,0.5146484375,0.400390625,0.3251953125,0.2841796875,0.3232421875,0.4423828125,0.5908203125,0.701171875,0.7265625,0.673828125,0.609375,0.580078125,0.59375,0.6318359375,0.6640625,0.662109375,0.6220703125,0.576171875,0.55078125,0.544921875,0.541015625,0.5244140625,0.486328125,0.4287109375,0.380859375,0.38671875,0.4482421875,0.5322265625,0.59375,0.599609375,0.55078125,0.5029296875,0.5087890625,0.5703125,0.654296875,0.7158203125,0.7216796875,0.673828125,0.61328125,0.5693359375,0.5576171875,0.5830078125,0.62890625,0.6650390625,0.673828125,0.6796875,0.7001953125,0.71484375,0.69921875,0.646484375,0.5732421875,0.5,0.4404296875,0.4365234375,0.48828125,0.5625,0.6142578125,0.609375,0.55078125,0.46875,0.359375,0.2578125,0.20703125,0.2197265625,0.271484375,0.3251953125,0.38671875,0.474609375,0.560546875,0.6064453125,0.59765625,0.5517578125,0.5,0.45703125,0.4462890625,0.4638671875,0.4833984375,0.48046875,0.4423828125,0.376953125,0.3193359375,0.3193359375,0.3876953125,0.490234375,0.5771484375,0.60546875,0.5703125,0.5234375,0.498046875,0.5078125,0.5478515625,0.5947265625,0.623046875,0.6220703125,0.607421875,0.576171875,0.53125,0.484375,0.44921875,0.431640625,0.4287109375,0.423828125,0.4052734375,0.390625,0.40234375,0.4453125,0.5068359375,0.5703125,0.6396484375,0.7236328125,0.7841796875,0.783203125,0.720703125,0.6298828125,0.55078125,0.484375,0.4404296875,0.4267578125,0.4326171875,0.4375,0.4208984375,0.376953125,0.3193359375,0.2490234375,0.2021484375,0.2119140625,0.2783203125,0.369140625,0.4482421875,0.5205078125,0.587890625,0.6279296875,0.6298828125,0.6044921875,0.5771484375,0.5703125,0.5771484375,0.6044921875,0.6376953125,0.654296875,0.640625,0.6015625,0.55078125,0.505859375,0.4892578125,0.5146484375,0.5732421875,0.63671875,0.673828125,0.673828125,0.646484375,0.5615234375,0.435546875,0.322265625,0.263671875,0.2724609375,0.3251953125,0.3935546875,0.48046875,0.5654296875,0.6220703125,0.640625,0.6337890625,0.6220703125,0.6162109375,0.623046875,0.6318359375,0.2783203125,0.2451171875,0.2841796875,0.36328125,0.439453125,0.51171875,0.578125,0.6171875,0.6171875,0.5908203125,0.564453125,0.5595703125,0.5576171875,0.5419921875,0.5107421875,0.4736328125,0.44140625,0.4228515625,0.419921875,0.41015625,0.369140625,0.3173828125,0.287109375,0.30078125,0.3515625,0.419921875,0.478515625,0.4892578125,0.4501953125,0.3935546875,0.3564453125,0.369140625,0.4296875,0.490234375,0.5029296875,0.46484375,0.4052734375,0.365234375,0.373046875,0.4296875,0.48828125,0.5068359375,0.4853515625,0.4482421875,0.427734375,0.44921875,0.509765625,0.5849609375,0.666015625,0.7119140625,0.6875,0.6025390625,0.5,0.419921875,0.3447265625,0.2705078125,0.236328125,0.2734375,0.369140625,0.478515625,0.5595703125,0.6279296875,0.681640625,0.697265625,0.671875,0.62109375,0.580078125,0.5693359375,0.5673828125,0.56640625,0.5673828125,0.5703125,0.57421875,0.5771484375,0.5791015625,0.5693359375,0.5224609375,0.4560546875,0.408203125,0.404296875,0.4443359375,0.509765625,0.57421875,0.61328125,0.6064453125,0.5556640625,0.4873046875,0.439453125,0.4296875,0.42578125,0.4052734375,0.3876953125,0.3974609375,0.4423828125,0.509765625,0.5791015625,0.6533203125,0.732421875,0.775390625,0.751953125,0.66796875,0.5673828125,0.4892578125,0.4140625,0.326171875,0.267578125,0.2724609375,0.3408203125,0.4326171875,0.509765625,0.564453125,0.5634765625,0.505859375,0.423828125,0.365234375,0.365234375,0.419921875,0.486328125,0.53515625,0.546875,0.5166015625,0.4658203125,0.427734375,0.419921875,0.4248046875,0.443359375,0.4755859375,0.513671875,0.5458984375,0.564453125,0.5693359375,0.5703125,0.5703125,0.568359375,0.5654296875,0.5615234375,0.5595703125,0.5595703125,0.556640625,0.54296875,0.517578125,0.4873046875,0.4599609375,0.4443359375,0.439453125,0.4404296875,0.4541015625,0.48046875,0.5126953125,0.541015625,0.556640625,0.5595703125,0.5673828125,0.599609375,0.6376953125,0.650390625,0.625,0.5673828125,0.5,0.4306640625,0.37109375,0.3408203125,0.3486328125,0.3818359375,0.412109375,0.419921875,0.4111328125,0.3779296875,0.33984375,0.328125,0.357421875,0.41796875,0.4892578125,0.560546875,0.6220703125,0.65234375,0.6416015625,0.6064453125,0.576171875,0.5693359375,0.578125,0.60546875,0.6298828125,0.625,0.58203125,0.5126953125,0.439453125,0.3798828125,0.369140625,0.4091796875,0.4697265625,0.509765625,0.4990234375,0.439453125,0.380859375,0.3779296875,0.4326171875,0.5107421875,0.5673828125,0.56640625,0.509765625,0.4423828125,0.3974609375,0.396484375,0.44140625,0.5068359375,0.556640625,0.5693359375,0.5791015625,0.611328125,0.6455078125,0.6533203125,0.6220703125,0.5595703125,0.4892578125,0.412109375,0.3203125,0.255859375,0.2578125,0.3251953125,0.419921875,0.5,0.5615234375,0.58203125,0.5595703125,0.51953125,0.4970703125,0.517578125,0.5791015625,0.6357421875,0.62890625,0.5556640625,0.4541015625,0.3779296875,0.3671875,0.419921875,0.4892578125,0.5556640625,0.59765625,0.60546875,0.5859375,0.5634765625,0.5595703125,0.5478515625,0.4931640625,0.4130859375,0.3505859375,0.3359375,0.373046875,0.439453125,0.5,0.5107421875,0.4716796875,0.4091796875,0.3662109375,0.373046875,0.4296875,0.5,0.568359375,0.6142578125,0.6240234375,0.6064453125,0.5849609375,0.5791015625,0.5888671875,0.6279296875,0.6767578125,0.7021484375,0.6845703125,0.6298828125,0.5595703125,0.478515625,0.3798828125,0.302734375,0.2900390625,0.345703125,0.4326171875,0.509765625,0.576171875,0.6181640625,0.615234375,0.564453125,0.494140625,0.443359375,0.4296875,0.419921875,0.38671875,0.3486328125,0.3359375,0.36328125,0.421875,0.4892578125,0.5546875,0.595703125,0.5927734375,0.5458984375,0.4794921875,0.4306640625,0.419921875,0.419921875,0.419921875,0.4208984375,0.4228515625,0.42578125,0.427734375,0.4296875,0.4345703125,0.4541015625,0.486328125,0.5234375,0.552734375,0.568359375,0.5693359375,0.5673828125,0.5654296875,0.5625,0.560546875,0.5595703125,0.5595703125,0.5595703125,0.5654296875,0.58984375,0.6103515625,0.603515625,0.5595703125,0.4912109375,0.419921875,0.36328125,0.3623046875,0.4208984375,0.5029296875,0.5625,0.564453125,0.509765625,0.4326171875,0.3408203125,0.275390625,0.2734375,0.337890625,0.4306640625,0.509765625,0.5869140625,0.6689453125,0.71484375,0.6904296875,0.603515625,0.5,0.419921875,0.365234375,0.375,0.451171875,0.5537109375,0.6279296875,0.6357421875,0.5791015625,0.5185546875,0.5048828125,0.5400390625,0.5966796875,0.6357421875,0.6259765625,0.5693359375,0.509765625,0.484375,0.4951171875,0.51953125,0.5283203125,0.5009765625,0.439453125,0.3828125,0.380859375,0.435546875,0.513671875,0.568359375,0.56640625,0.509765625,0.453125,0.451171875,0.505859375,0.5830078125,0.6376953125,0.6357421875,0.5791015625,0.5107421875,0.4599609375,0.447265625,0.4765625,0.5283203125,0.5693359375,0.5791015625,0.5869140625,0.619140625,0.6552734375,0.6640625,0.6328125,0.5712890625,0.5,0.4404296875,0.4306640625,0.47265625,0.5361328125,0.578125,0.5693359375,0.509765625,0.427734375,0.3251953125,0.2412109375,0.21875,0.2646484375,0.345703125,0.419921875,0.498046875,0.5966796875,0.6787109375,0.69921875,0.6533203125,0.5732421875,0.5,0.44140625,0.4248046875,0.4501953125,0.490234375,0.5126953125,0.4912109375,0.4296875,0.3720703125,0.3759765625,0.4423828125,0.5361328125,0.60546875,0.61328125,0.5595703125,0.4931640625,0.4453125,0.4365234375,0.46875,0.521484375,0.5615234375,0.5693359375,0.564453125,0.5478515625,0.5185546875,0.4853515625,0.45703125,0.4423828125,0.439453125,0.4326171875,0.40625,0.380859375,0.3828125,0.4228515625,0.48828125,0.5595703125,0.63671875,0.72265625,0.7783203125,0.765625,0.689453125,0.58984375,0.509765625,0.447265625,0.4248046875,0.4453125,0.4833984375,0.505859375,0.48828125,0.4296875,0.3544921875,0.2705078125,0.2177734375,0.2314453125,0.3095703125,0.4091796875,0.4892578125,0.560546875,0.6220703125,0.650390625,0.638671875,0.6005859375,0.5673828125,0.5595703125,0.5673828125,0.6015625,0.6416015625,0.6572265625,0.6328125,0.5771484375,0.509765625,0.4443359375,0.404296875,0.408203125,0.4560546875,0.5224609375,0.5693359375,0.5791015625,0.564453125,0.5029296875,0.4150390625,0.34375,0.322265625,0.35546875,0.419921875,0.4912109375,0.5615234375,0.609375,0.6201171875,0.6005859375,0.5771484375,0.5693359375,0.5751953125,0.60546875,0.640625,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.240234375,0.283203125,0.384765625,0.4970703125,0.5791015625,0.64453125,0.677734375,0.6591796875,0.5908203125,0.5048828125,0.4443359375,0.4296875,0.431640625,0.4482421875,0.4814453125,0.521484375,0.556640625,0.5751953125,0.5791015625,0.5693359375,0.5283203125,0.4765625,0.447265625,0.4599609375,0.5107421875,0.5791015625,0.6376953125,0.6484375,0.609375,0.5498046875,0.5107421875,0.5205078125,0.5791015625,0.63671875,0.6435546875,0.5986328125,0.5341796875,0.490234375,0.5,0.5595703125,0.6181640625,0.6240234375,0.57421875,0.5009765625,0.44921875,0.4521484375,0.509765625,0.5888671875,0.6884765625,0.767578125,0.78515625,0.736328125,0.654296875,0.5791015625,0.5,0.3916015625,0.294921875,0.255859375,0.28515625,0.357421875,0.4296875,0.49609375,0.544921875,0.5556640625,0.5234375,0.470703125,0.4296875,0.419921875,0.419921875,0.419921875,0.4208984375,0.4228515625,0.42578125,0.427734375,0.4296875,0.423828125,0.3935546875,0.359375,0.3505859375,0.3798828125,0.439453125,0.509765625,0.5791015625,0.638671875,0.666015625,0.6533203125,0.6142578125,0.5791015625,0.5693359375,0.5546875,0.494140625,0.41015625,0.3427734375,0.326171875,0.36328125,0.4296875,0.5107421875,0.609375,0.6875,0.7021484375,0.6494140625,0.564453125,0.4892578125,0.4140625,0.3251953125,0.263671875,0.2666015625,0.33203125,0.4228515625,0.5,0.5576171875,0.57421875,0.5478515625,0.5048828125,0.48046875,0.4990234375,0.5595703125,0.6279296875,0.681640625,0.69921875,0.6748046875,0.626953125,0.5888671875,0.5791015625,0.576171875,0.55859375,0.5263671875,0.48828125,0.4541015625,0.4345703125,0.4296875,0.4287109375,0.4287109375,0.4306640625,0.43359375,0.4375,0.439453125,0.439453125,0.4423828125,0.4580078125,0.486328125,0.5185546875,0.544921875,0.55859375,0.5595703125,0.5546875,0.5380859375,0.509765625,0.478515625,0.453125,0.4404296875,0.439453125,0.453125,0.5029296875,0.5703125,0.615234375,0.6142578125,0.568359375,0.5,0.431640625,0.388671875,0.3935546875,0.4443359375,0.515625,0.5673828125,0.5791015625,0.5673828125,0.515625,0.4443359375,0.3935546875,0.388671875,0.431640625,0.5,0.568359375,0.61328125,0.611328125,0.5634765625,0.494140625,0.443359375,0.4296875,0.44140625,0.5,0.5869140625,0.6572265625,0.6787109375,0.6455078125,0.5791015625,0.51953125,0.5068359375,0.544921875,0.603515625,0.6416015625,0.62890625,0.5693359375,0.5068359375,0.484375,0.5048828125,0.54296875,0.5654296875,0.5478515625,0.4892578125,0.421875,0.365234375,0.3408203125,0.3544921875,0.3916015625,0.4228515625,0.4296875,0.439453125,0.48828125,0.5576171875,0.6064453125,0.6103515625,0.5673828125,0.5,0.419921875,0.328125,0.263671875,0.265625,0.3310546875,0.4228515625,0.5,0.5546875,0.5537109375,0.4970703125,0.4169921875,0.361328125,0.36328125,0.419921875,0.482421875,0.5126953125,0.5107421875,0.494140625,0.490234375,0.5185546875,0.5791015625,0.6416015625,0.671875,0.6474609375,0.5751953125,0.4892578125,0.431640625,0.419921875,0.4150390625,0.3916015625,0.369140625,0.375,0.41796875,0.486328125,0.5595703125,0.619140625,0.6298828125,0.58984375,0.529296875,0.4892578125,0.5,0.5595703125,0.6259765625,0.66015625,0.640625,0.5732421875,0.4892578125,0.431640625,0.419921875,0.4306640625,0.4716796875,0.5234375,0.5517578125,0.537109375,0.486328125,0.419921875,0.345703125,0.265625,0.220703125,0.244140625,0.328125,0.4296875,0.509765625,0.5791015625,0.63671875,0.6611328125,0.646484375,0.6083984375,0.576171875,0.5693359375,0.5595703125,0.509765625,0.4404296875,0.388671875,0.3828125,0.423828125,0.4892578125,0.55859375,0.6181640625,0.6455078125,0.6328125,0.5966796875,0.5654296875,0.5595703125,0.5615234375,0.56640625,0.572265625,0.5771484375,0.580078125,0.5810546875,0.5791015625,0.57421875,0.5537109375,0.517578125,0.4755859375,0.44140625,0.4228515625,0.419921875,0.419921875,0.4208984375,0.421875,0.4228515625,0.4228515625,0.421875,0.419921875,0.4306640625,0.4873046875,0.5703125,0.6376953125,0.6572265625,0.6240234375,0.5595703125,0.5,0.4833984375,0.51171875,0.5576171875,0.5859375,0.5693359375,0.509765625,0.431640625,0.33984375,0.2744140625,0.2744140625,0.33984375,0.431640625,0.509765625,0.5888671875,0.689453125,0.7705078125,0.7880859375,0.7392578125,0.6552734375,0.5791015625,0.5166015625,0.486328125,0.48828125,0.5048828125,0.5087890625,0.48046875,0.419921875,0.36328125,0.3564453125,0.400390625,0.46484375,0.5068359375,0.498046875,0.439453125,0.384765625,0.3896484375,0.4560546875,0.5478515625,0.61328125,0.6162109375,0.5595703125,0.498046875,0.478515625,0.5029296875,0.5458984375,0.5703125,0.55078125,0.4892578125,0.4287109375,0.41015625,0.4384765625,0.4853515625,0.5146484375,0.4990234375,0.439453125,0.3720703125,0.3212890625,0.3095703125,0.33984375,0.3916015625,0.431640625,0.439453125,0.44921875,0.49609375,0.5625,0.6103515625,0.6142578125,0.57421875,0.509765625,0.453125,0.443359375,0.4833984375,0.5419921875,0.5791015625,0.568359375,0.509765625,0.4326171875,0.3466796875,0.29296875,0.3056640625,0.3818359375,0.48046875,0.5595703125,0.6357421875,0.720703125,0.771484375,0.7529296875,0.671875,0.5703125,0.4892578125,0.4306640625,0.427734375,0.482421875,0.560546875,0.6171875,0.6162109375,0.5595703125,0.498046875,0.470703125,0.478515625,0.5009765625,0.5087890625,0.4814453125,0.419921875,0.3525390625,0.3037109375,0.294921875,0.330078125,0.38671875,0.4296875,0.439453125,0.4423828125,0.4560546875,0.4814453125,0.51171875,0.5390625,0.5546875,0.5595703125,0.5478515625,0.4921875,0.41015625,0.3447265625,0.3271484375,0.36328125,0.4296875,0.5107421875,0.6123046875,0.6923828125,0.7080078125,0.654296875,0.568359375,0.4892578125,0.431640625,0.431640625,0.4921875,0.576171875,0.63671875,0.63671875,0.5791015625,0.498046875,0.3955078125,0.3134765625,0.294921875,0.345703125,0.431640625,0.509765625,0.5771484375,0.6201171875,0.6142578125,0.5615234375,0.4873046875,0.43359375,0.419921875,0.4296875,0.48046875,0.552734375,0.6064453125,0.6142578125,0.5751953125,0.509765625,0.439453125,0.37890625,0.3486328125,0.359375,0.396484375,0.4296875,0.439453125,0.4345703125,0.408203125,0.3818359375,0.3818359375,0.4208984375,0.4873046875,0.5595703125,0.6259765625,0.66015625,0.640625,0.5732421875,0.4892578125,0.431640625,0.419921875,0.43359375,0.4853515625,0.5576171875,0.228515625,0.32421875,0.466796875,0.595703125,0.673828125,0.7275390625,0.7421875,0.6953125,0.595703125,0.482421875,0.4033203125,0.376953125,0.3740234375,0.40234375,0.466796875,0.548828125,0.623046875,0.6650390625,0.673828125,0.6650390625,0.62890625,0.5830078125,0.5576171875,0.5693359375,0.61328125,0.673828125,0.724609375,0.7333984375,0.69921875,0.6474609375,0.61328125,0.6220703125,0.673828125,0.720703125,0.7109375,0.646484375,0.5625,0.5068359375,0.5107421875,0.5703125,0.630859375,0.6455078125,0.6083984375,0.5478515625,0.5009765625,0.501953125,0.55078125,0.62109375,0.7099609375,0.787109375,0.814453125,0.787109375,0.728515625,0.673828125,0.609375,0.5068359375,0.3935546875,0.3154296875,0.296875,0.3271484375,0.376953125,0.42578125,0.45703125,0.4541015625,0.4189453125,0.3701171875,0.333984375,0.3251953125,0.3251953125,0.3251953125,0.3291015625,0.3388671875,0.3525390625,0.3662109375,0.376953125,0.3828125,0.3759765625,0.37109375,0.38671875,0.4287109375,0.4892578125,0.55078125,0.6142578125,0.673828125,0.7080078125,0.705078125,0.673828125,0.638671875,0.6220703125,0.595703125,0.5166015625,0.4072265625,0.31640625,0.283203125,0.3115234375,0.376953125,0.4560546875,0.546875,0.61328125,0.623046875,0.576171875,0.505859375,0.4482421875,0.392578125,0.33203125,0.2958984375,0.3095703125,0.3681640625,0.44140625,0.5,0.5419921875,0.552734375,0.5322265625,0.5029296875,0.4921875,0.515625,0.5703125,0.6318359375,0.689453125,0.7236328125,0.7255859375,0.7021484375,0.6796875,0.673828125,0.66796875,0.6376953125,0.580078125,0.505859375,0.4375,0.39453125,0.376953125,0.3681640625,0.3671875,0.376953125,0.39453125,0.4140625,0.4267578125,0.4287109375,0.43359375,0.45703125,0.49609375,0.5380859375,0.5673828125,0.5771484375,0.5703125,0.5556640625,0.5244140625,0.4833984375,0.4462890625,0.423828125,0.4208984375,0.4287109375,0.451171875,0.5087890625,0.580078125,0.6240234375,0.619140625,0.5693359375,0.5,0.43359375,0.40234375,0.427734375,0.50390625,0.5966796875,0.6591796875,0.673828125,0.6591796875,0.5966796875,0.50390625,0.427734375,0.40234375,0.43359375,0.5,0.568359375,0.611328125,0.60546875,0.546875,0.46484375,0.400390625,0.376953125,0.3837890625,0.4541015625,0.5712890625,0.6845703125,0.7451171875,0.734375,0.673828125,0.6123046875,0.595703125,0.6240234375,0.6708984375,0.69921875,0.6826171875,0.6220703125,0.5546875,0.5107421875,0.4970703125,0.5029296875,0.5078125,0.4912109375,0.4482421875,0.3984375,0.3583984375,0.3408203125,0.3486328125,0.3681640625,0.3818359375,0.376953125,0.3798828125,0.4287109375,0.5078125,0.5751953125,0.5966796875,0.5654296875,0.5,0.4228515625,0.3408203125,0.2890625,0.2978515625,0.361328125,0.4404296875,0.5,0.5361328125,0.5166015625,0.4423828125,0.3486328125,0.283203125,0.27734375,0.3251953125,0.38671875,0.443359375,0.4951171875,0.5390625,0.580078125,0.6240234375,0.673828125,0.7138671875,0.7021484375,0.626953125,0.5087890625,0.39453125,0.3310546875,0.3251953125,0.3310546875,0.3271484375,0.330078125,0.3603515625,0.419921875,0.49609375,0.5703125,0.6298828125,0.640625,0.6005859375,0.5400390625,0.5,0.509765625,0.5703125,0.6328125,0.6494140625,0.6005859375,0.5009765625,0.39453125,0.3310546875,0.3251953125,0.3427734375,0.3798828125,0.419921875,0.4375,0.419921875,0.376953125,0.3251953125,0.2724609375,0.2275390625,0.22265625,0.27734375,0.376953125,0.4794921875,0.55078125,0.611328125,0.658203125,0.677734375,0.666015625,0.6376953125,0.6181640625,0.6220703125,0.619140625,0.5703125,0.4873046875,0.4111328125,0.3759765625,0.3935546875,0.4482421875,0.5087890625,0.5625,0.59375,0.595703125,0.5791015625,0.5654296875,0.5703125,0.583984375,0.6103515625,0.642578125,0.669921875,0.68359375,0.6826171875,0.673828125,0.6552734375,0.60546875,0.525390625,0.4384765625,0.3681640625,0.33203125,0.3251953125,0.3271484375,0.3330078125,0.3408203125,0.345703125,0.34375,0.3359375,0.3251953125,0.330078125,0.3876953125,0.486328125,0.5810546875,0.6318359375,0.623046875,0.5703125,0.5185546875,0.5068359375,0.537109375,0.583984375,0.6142578125,0.6025390625,0.55078125,0.4833984375,0.40234375,0.345703125,0.345703125,0.40234375,0.4833984375,0.55078125,0.6220703125,0.7177734375,0.8017578125,0.833984375,0.8046875,0.73828125,0.673828125,0.6123046875,0.5556640625,0.50390625,0.4599609375,0.4189453125,0.375,0.3251953125,0.287109375,0.2978515625,0.357421875,0.4326171875,0.4814453125,0.4794921875,0.4287109375,0.3828125,0.396484375,0.4697265625,0.5634765625,0.6279296875,0.6279296875,0.5703125,0.5078125,0.4814453125,0.4951171875,0.5234375,0.5361328125,0.5107421875,0.4482421875,0.3857421875,0.3671875,0.3955078125,0.4462890625,0.484375,0.4794921875,0.4287109375,0.37109375,0.33203125,0.328125,0.3583984375,0.40234375,0.4306640625,0.4287109375,0.4287109375,0.4658203125,0.529296875,0.5869140625,0.61328125,0.5966796875,0.55078125,0.509765625,0.5087890625,0.544921875,0.5927734375,0.619140625,0.603515625,0.55078125,0.4833984375,0.4052734375,0.3525390625,0.357421875,0.4189453125,0.5009765625,0.5703125,0.63671875,0.708984375,0.74609375,0.7177734375,0.6318359375,0.529296875,0.4482421875,0.3896484375,0.3876953125,0.447265625,0.5361328125,0.60546875,0.6171875,0.5703125,0.513671875,0.474609375,0.4541015625,0.44140625,0.4208984375,0.3828125,0.3251953125,0.2685546875,0.236328125,0.248046875,0.30078125,0.3701171875,0.41796875,0.4287109375,0.4306640625,0.4423828125,0.4658203125,0.4990234375,0.5322265625,0.556640625,0.5703125,0.5654296875,0.5078125,0.4140625,0.328125,0.2900390625,0.3134765625,0.376953125,0.458984375,0.5615234375,0.6435546875,0.662109375,0.611328125,0.5263671875,0.4482421875,0.3935546875,0.41015625,0.5,0.62109375,0.7109375,0.7275390625,0.673828125,0.5908203125,0.4814453125,0.3876953125,0.35546875,0.39453125,0.474609375,0.55078125,0.6171875,0.6484375,0.619140625,0.533203125,0.427734375,0.3505859375,0.3251953125,0.3291015625,0.384765625,0.478515625,0.5693359375,0.615234375,0.6044921875,0.55078125,0.4873046875,0.421875,0.375,0.3642578125,0.384765625,0.4130859375,0.4287109375,0.4326171875,0.4150390625,0.3955078125,0.3974609375,0.4345703125,0.498046875,0.5703125,0.6328125,0.6494140625,0.6005859375,0.5009765625,0.39453125,0.3310546875,0.3251953125,0.349609375,0.419921875,0.5146484375,0.234375,0.3720703125,0.5419921875,0.6748046875,0.740234375,0.779296875,0.7822265625,0.7255859375,0.619140625,0.49609375,0.404296875,0.3642578125,0.3466796875,0.373046875,0.4521484375,0.5634765625,0.6669921875,0.7275390625,0.740234375,0.7333984375,0.70703125,0.673828125,0.654296875,0.6630859375,0.6962890625,0.740234375,0.7783203125,0.7841796875,0.7587890625,0.720703125,0.6953125,0.7021484375,0.740234375,0.76953125,0.7353515625,0.6435546875,0.5380859375,0.470703125,0.4716796875,0.5302734375,0.5947265625,0.6298828125,0.6259765625,0.5966796875,0.568359375,0.568359375,0.6044921875,0.654296875,0.71484375,0.767578125,0.7919921875,0.78515625,0.76171875,0.740234375,0.7099609375,0.6396484375,0.5380859375,0.4384765625,0.3720703125,0.3515625,0.3642578125,0.3798828125,0.380859375,0.361328125,0.3251953125,0.2880859375,0.263671875,0.2587890625,0.2578125,0.2548828125,0.2587890625,0.275390625,0.3037109375,0.3359375,0.3642578125,0.388671875,0.4111328125,0.435546875,0.46875,0.51171875,0.55859375,0.6044921875,0.6533203125,0.705078125,0.740234375,0.740234375,0.7080078125,0.666015625,0.634765625,0.5927734375,0.4990234375,0.3798828125,0.2900390625,0.26171875,0.296875,0.3642578125,0.4375,0.50390625,0.5380859375,0.5244140625,0.4736328125,0.421875,0.39453125,0.3759765625,0.36328125,0.369140625,0.3974609375,0.4384765625,0.4755859375,0.5,0.5126953125,0.50390625,0.48046875,0.4609375,0.4619140625,0.4873046875,0.5302734375,0.5791015625,0.6376953125,0.6923828125,0.7294921875,0.7421875,0.7412109375,0.740234375,0.7353515625,0.705078125,0.640625,0.5517578125,0.4638671875,0.3984375,0.3642578125,0.3408203125,0.333984375,0.3525390625,0.3916015625,0.4345703125,0.462890625,0.46875,0.474609375,0.4970703125,0.5302734375,0.5576171875,0.56640625,0.5537109375,0.5302734375,0.4990234375,0.45703125,0.4189453125,0.4033203125,0.4140625,0.44140625,0.46875,0.505859375,0.5703125,0.6357421875,0.662109375,0.63671875,0.572265625,0.5,0.435546875,0.412109375,0.4521484375,0.546875,0.6533203125,0.724609375,0.740234375,0.724609375,0.6533203125,0.546875,0.4521484375,0.412109375,0.435546875,0.5,0.5693359375,0.62109375,0.6240234375,0.568359375,0.48046875,0.4033203125,0.3642578125,0.357421875,0.4248046875,0.5576171875,0.6982421875,0.7890625,0.7978515625,0.740234375,0.677734375,0.654296875,0.6708984375,0.7041015625,0.720703125,0.697265625,0.634765625,0.5625,0.4912109375,0.4384765625,0.4140625,0.41015625,0.408203125,0.39453125,0.37890625,0.376953125,0.3857421875,0.3974609375,0.3994140625,0.3876953125,0.3642578125,0.3515625,0.390625,0.46875,0.546875,0.5830078125,0.5625,0.5,0.4267578125,0.36328125,0.3359375,0.3583984375,0.416015625,0.470703125,0.5,0.505859375,0.4638671875,0.3798828125,0.2900390625,0.23046875,0.22265625,0.2587890625,0.3115234375,0.392578125,0.494140625,0.59375,0.6708984375,0.716796875,0.740234375,0.7431640625,0.68359375,0.560546875,0.4140625,0.296875,0.2470703125,0.2587890625,0.28125,0.291015625,0.3037109375,0.3330078125,0.3876953125,0.45703125,0.5302734375,0.58984375,0.6005859375,0.560546875,0.5,0.458984375,0.4697265625,0.5302734375,0.58984375,0.59375,0.52734375,0.4140625,0.3046875,0.25,0.2587890625,0.287109375,0.3173828125,0.3369140625,0.3330078125,0.310546875,0.28125,0.2587890625,0.2421875,0.244140625,0.2841796875,0.3642578125,0.4638671875,0.5498046875,0.6044921875,0.6455078125,0.6669921875,0.6630859375,0.640625,0.6181640625,0.615234375,0.634765625,0.6484375,0.6123046875,0.5302734375,0.435546875,0.37109375,0.359375,0.39453125,0.4375,0.47265625,0.4912109375,0.4970703125,0.498046875,0.5078125,0.5302734375,0.564453125,0.6240234375,0.6953125,0.7509765625,0.7734375,0.7646484375,0.740234375,0.703125,0.6259765625,0.513671875,0.3974609375,0.3095703125,0.2666015625,0.2587890625,0.2626953125,0.2783203125,0.2978515625,0.30859375,0.3037109375,0.2841796875,0.2587890625,0.24609375,0.2861328125,0.375,0.4775390625,0.548828125,0.564453125,0.5302734375,0.494140625,0.49609375,0.5380859375,0.5966796875,0.638671875,0.640625,0.6044921875,0.5546875,0.4951171875,0.4521484375,0.4521484375,0.4951171875,0.5546875,0.6044921875,0.658203125,0.734375,0.806640625,0.8427734375,0.830078125,0.787109375,0.740234375,0.6875,0.6064453125,0.5048828125,0.4052734375,0.328125,0.2822265625,0.2587890625,0.251953125,0.2900390625,0.3671875,0.44921875,0.501953125,0.505859375,0.46875,0.4365234375,0.4521484375,0.5107421875,0.576171875,0.6103515625,0.591796875,0.5302734375,0.466796875,0.439453125,0.44921875,0.474609375,0.484375,0.45703125,0.39453125,0.3330078125,0.3154296875,0.3525390625,0.421875,0.484375,0.501953125,0.46875,0.4287109375,0.4111328125,0.421875,0.4521484375,0.4814453125,0.48828125,0.46875,0.44921875,0.45703125,0.4970703125,0.5517578125,0.5986328125,0.6162109375,0.6044921875,0.5927734375,0.60546875,0.6357421875,0.662109375,0.66796875,0.646484375,0.6044921875,0.552734375,0.484375,0.4248046875,0.4052734375,0.4306640625,0.4814453125,0.5302734375,0.5810546875,0.6396484375,0.6708984375,0.646484375,0.5693359375,0.4736328125,0.39453125,0.333984375,0.32421875,0.375,0.4609375,0.5361328125,0.560546875,0.5302734375,0.4853515625,0.4462890625,0.4111328125,0.3779296875,0.3427734375,0.302734375,0.2587890625,0.2197265625,0.2119140625,0.2509765625,0.3251953125,0.40625,0.4580078125,0.46875,0.466796875,0.458984375,0.453125,0.4580078125,0.4765625,0.5029296875,0.5302734375,0.5419921875,0.4990234375,0.4140625,0.328125,0.28515625,0.3017578125,0.3642578125,0.4443359375,0.5419921875,0.6162109375,0.6240234375,0.5634765625,0.4736328125,0.39453125,0.3427734375,0.3740234375,0.4912109375,0.6435546875,0.7607421875,0.7919921875,0.740234375,0.6572265625,0.546875,0.44921875,0.4140625,0.4501953125,0.5283203125,0.6044921875,0.669921875,0.6953125,0.6513671875,0.541015625,0.4052734375,0.302734375,0.2587890625,0.248046875,0.296875,0.40234375,0.5244140625,0.61328125,0.63671875,0.6044921875,0.5537109375,0.4892578125,0.4306640625,0.40234375,0.4111328125,0.4404296875,0.46875,0.486328125,0.4716796875,0.4365234375,0.4111328125,0.41796875,0.4619140625,0.5302734375,0.58984375,0.59375,0.52734375,0.4140625,0.3046875,0.25,0.2587890625,0.2998046875,0.390625,0.501953125,0.26171875,0.408203125,0.57421875,0.693359375,0.740234375,0.763671875,0.767578125,0.7294921875,0.6455078125,0.541015625,0.4501953125,0.39453125,0.3583984375,0.3671875,0.435546875,0.546875,0.6572265625,0.7255859375,0.740234375,0.736328125,0.720703125,0.701171875,0.6904296875,0.6953125,0.71484375,0.740234375,0.76171875,0.765625,0.7509765625,0.728515625,0.7138671875,0.7177734375,0.740234375,0.7490234375,0.6943359375,0.5849609375,0.4716796875,0.4052734375,0.4091796875,0.46875,0.5390625,0.5966796875,0.626953125,0.62890625,0.6181640625,0.615234375,0.634765625,0.66015625,0.681640625,0.6953125,0.7041015625,0.7119140625,0.72265625,0.740234375,0.7529296875,0.736328125,0.6767578125,0.5849609375,0.490234375,0.423828125,0.39453125,0.373046875,0.3427734375,0.30859375,0.28125,0.2646484375,0.259765625,0.2587890625,0.255859375,0.24609375,0.2421875,0.2587890625,0.2978515625,0.3466796875,0.39453125,0.4404296875,0.4873046875,0.5302734375,0.5634765625,0.587890625,0.6103515625,0.634765625,0.666015625,0.7080078125,0.740234375,0.740234375,0.705078125,0.6533203125,0.6044921875,0.5458984375,0.4453125,0.3369140625,0.26953125,0.26953125,0.3232421875,0.39453125,0.4609375,0.4990234375,0.4912109375,0.4443359375,0.3876953125,0.3564453125,0.3642578125,0.388671875,0.4296875,0.4775390625,0.513671875,0.525390625,0.517578125,0.5,0.4765625,0.443359375,0.4140625,0.40234375,0.4150390625,0.44140625,0.46875,0.5009765625,0.5537109375,0.619140625,0.6787109375,0.7197265625,0.7373046875,0.740234375,0.73828125,0.72265625,0.6796875,0.607421875,0.521484375,0.4462890625,0.39453125,0.353515625,0.3369140625,0.3583984375,0.4140625,0.4775390625,0.5205078125,0.5302734375,0.53515625,0.5537109375,0.57421875,0.5771484375,0.5556640625,0.5146484375,0.46875,0.419921875,0.3681640625,0.33984375,0.35546875,0.4111328125,0.478515625,0.5302734375,0.5830078125,0.654296875,0.708984375,0.712890625,0.6591796875,0.576171875,0.5,0.435546875,0.412109375,0.4521484375,0.546875,0.6533203125,0.724609375,0.740234375,0.724609375,0.6533203125,0.546875,0.4521484375,0.412109375,0.435546875,0.5,0.5732421875,0.638671875,0.6630859375,0.6240234375,0.5380859375,0.451171875,0.39453125,0.3681640625,0.4189453125,0.541015625,0.681640625,0.779296875,0.7958984375,0.740234375,0.6767578125,0.650390625,0.66015625,0.6845703125,0.6943359375,0.66796875,0.6044921875,0.5263671875,0.43359375,0.3525390625,0.3115234375,0.314453125,0.3408203125,0.3642578125,0.3896484375,0.43359375,0.4775390625,0.4970703125,0.48046875,0.4404296875,0.39453125,0.3623046875,0.3837890625,0.4521484375,0.5302734375,0.57421875,0.560546875,0.5,0.4326171875,0.390625,0.3916015625,0.4306640625,0.48046875,0.5078125,0.5,0.4716796875,0.4130859375,0.3369140625,0.26953125,0.2353515625,0.236328125,0.2587890625,0.298828125,0.38671875,0.513671875,0.6376953125,0.7216796875,0.7509765625,0.740234375,0.7041015625,0.60546875,0.4609375,0.322265625,0.2373046875,0.2236328125,0.2587890625,0.2978515625,0.314453125,0.31640625,0.3232421875,0.349609375,0.400390625,0.46875,0.529296875,0.5400390625,0.4990234375,0.4384765625,0.3984375,0.4091796875,0.46875,0.52734375,0.5283203125,0.4609375,0.35546875,0.263671875,0.2294921875,0.2587890625,0.30078125,0.322265625,0.31640625,0.2900390625,0.259765625,0.2470703125,0.2587890625,0.2822265625,0.326171875,0.39453125,0.474609375,0.548828125,0.603515625,0.634765625,0.6533203125,0.642578125,0.607421875,0.568359375,0.55078125,0.564453125,0.6044921875,0.6396484375,0.6279296875,0.5634765625,0.46875,0.38671875,0.3505859375,0.3642578125,0.3857421875,0.3916015625,0.3857421875,0.3837890625,0.3955078125,0.4267578125,0.46875,0.525390625,0.6181640625,0.720703125,0.7919921875,0.810546875,0.7841796875,0.740234375,0.6845703125,0.5927734375,0.4775390625,0.369140625,0.2958984375,0.263671875,0.2587890625,0.265625,0.2919921875,0.3251953125,0.3447265625,0.3359375,0.302734375,0.2587890625,0.2236328125,0.2314453125,0.2890625,0.375,0.451171875,0.4833984375,0.46875,0.451171875,0.466796875,0.5185546875,0.5849609375,0.63671875,0.6533203125,0.634765625,0.60546875,0.5712890625,0.546875,0.546875,0.5712890625,0.60546875,0.634765625,0.6669921875,0.7138671875,0.76171875,0.7900390625,0.7890625,0.7666015625,0.740234375,0.7001953125,0.6123046875,0.4853515625,0.361328125,0.27734375,0.248046875,0.2587890625,0.287109375,0.349609375,0.4326171875,0.5078125,0.548828125,0.5517578125,0.5302734375,0.5126953125,0.52734375,0.5625,0.587890625,0.5810546875,0.537109375,0.46875,0.4072265625,0.3837890625,0.400390625,0.4326171875,0.4501953125,0.4267578125,0.3642578125,0.3017578125,0.28515625,0.328125,0.4140625,0.4990234375,0.5419921875,0.5302734375,0.5107421875,0.517578125,0.546875,0.5771484375,0.587890625,0.5703125,0.5302734375,0.4853515625,0.4541015625,0.455078125,0.494140625,0.5546875,0.607421875,0.634765625,0.6572265625,0.6865234375,0.708984375,0.712890625,0.693359375,0.6630859375,0.634765625,0.6015625,0.546875,0.4853515625,0.44140625,0.4287109375,0.443359375,0.46875,0.501953125,0.55078125,0.5849609375,0.5771484375,0.5205078125,0.439453125,0.3642578125,0.30078125,0.2763671875,0.3056640625,0.375,0.447265625,0.482421875,0.46875,0.4423828125,0.4130859375,0.380859375,0.34765625,0.3154296875,0.2861328125,0.2587890625,0.2392578125,0.2529296875,0.30859375,0.3916015625,0.4716796875,0.51953125,0.5302734375,0.5224609375,0.48828125,0.44140625,0.40625,0.400390625,0.4267578125,0.46875,0.501953125,0.484375,0.421875,0.3525390625,0.3154296875,0.3330078125,0.39453125,0.4736328125,0.5634765625,0.6240234375,0.6162109375,0.5419921875,0.4443359375,0.3642578125,0.3134765625,0.34765625,0.4716796875,0.6318359375,0.755859375,0.791015625,0.740234375,0.658203125,0.55078125,0.4609375,0.4326171875,0.4765625,0.5576171875,0.634765625,0.7021484375,0.7353515625,0.6982421875,0.587890625,0.4423828125,0.3212890625,0.2587890625,0.2275390625,0.2548828125,0.3505859375,0.48046875,0.5927734375,0.6455078125,0.634765625,0.6005859375,0.5419921875,0.48046875,0.4443359375,0.44921875,0.484375,0.5302734375,0.5625,0.546875,0.48828125,0.4228515625,0.388671875,0.4072265625,0.46875,0.52734375,0.5283203125,0.4609375,0.35546875,0.263671875,0.2294921875,0.2587890625,0.318359375,0.4228515625,0.5380859375,0.302734375,0.4208984375,0.5537109375,0.6455078125,0.673828125,0.6865234375,0.7021484375,0.7001953125,0.662109375,0.5927734375,0.5146484375,0.4482421875,0.3935546875,0.3759765625,0.4150390625,0.5009765625,0.5966796875,0.6591796875,0.673828125,0.671875,0.666015625,0.658203125,0.6533203125,0.6552734375,0.6630859375,0.673828125,0.681640625,0.68359375,0.677734375,0.6689453125,0.6630859375,0.6650390625,0.673828125,0.66796875,0.6044921875,0.498046875,0.3984375,0.349609375,0.3662109375,0.4287109375,0.501953125,0.5712890625,0.6201171875,0.63671875,0.6279296875,0.6171875,0.6220703125,0.6259765625,0.6103515625,0.5859375,0.5732421875,0.5869140625,0.6240234375,0.673828125,0.724609375,0.7646484375,0.76171875,0.7021484375,0.6044921875,0.509765625,0.4482421875,0.3955078125,0.34375,0.306640625,0.2958984375,0.306640625,0.3212890625,0.3251953125,0.3203125,0.298828125,0.2802734375,0.287109375,0.3251953125,0.3857421875,0.4482421875,0.509765625,0.5703125,0.6123046875,0.6279296875,0.623046875,0.6162109375,0.6220703125,0.638671875,0.673828125,0.705078125,0.7080078125,0.673828125,0.6142578125,0.55078125,0.4794921875,0.3798828125,0.2919921875,0.2607421875,0.296875,0.3720703125,0.4482421875,0.5087890625,0.5234375,0.482421875,0.412109375,0.3525390625,0.33984375,0.376953125,0.4365234375,0.5185546875,0.5927734375,0.6259765625,0.60546875,0.5537109375,0.5,0.447265625,0.39453125,0.3623046875,0.3603515625,0.384765625,0.4130859375,0.4287109375,0.4443359375,0.482421875,0.5380859375,0.5986328125,0.6455078125,0.6689453125,0.673828125,0.6767578125,0.6845703125,0.6806640625,0.646484375,0.5849609375,0.5126953125,0.4482421875,0.390625,0.361328125,0.376953125,0.435546875,0.5078125,0.55859375,0.5703125,0.5751953125,0.59375,0.6083984375,0.5966796875,0.5537109375,0.4921875,0.4287109375,0.3642578125,0.30078125,0.275390625,0.3125,0.4013671875,0.4990234375,0.5703125,0.6376953125,0.7158203125,0.7646484375,0.7509765625,0.67578125,0.5791015625,0.5,0.43359375,0.40234375,0.427734375,0.50390625,0.5966796875,0.6591796875,0.673828125,0.6591796875,0.5966796875,0.50390625,0.427734375,0.40234375,0.43359375,0.5,0.576171875,0.658203125,0.7060546875,0.6875,0.611328125,0.5185546875,0.4482421875,0.4033203125,0.427734375,0.5205078125,0.6357421875,0.71875,0.7294921875,0.673828125,0.6103515625,0.5849609375,0.59765625,0.626953125,0.6396484375,0.6142578125,0.55078125,0.470703125,0.3671875,0.27734375,0.240234375,0.263671875,0.322265625,0.376953125,0.4375,0.5185546875,0.58984375,0.6123046875,0.5791015625,0.5126953125,0.4482421875,0.3994140625,0.40234375,0.4560546875,0.5263671875,0.5703125,0.5595703125,0.5,0.4365234375,0.4140625,0.4384765625,0.490234375,0.5341796875,0.5390625,0.5,0.4443359375,0.3798828125,0.32421875,0.294921875,0.296875,0.3125,0.3251953125,0.3505859375,0.4306640625,0.5478515625,0.6572265625,0.7177734375,0.7158203125,0.673828125,0.607421875,0.4921875,0.359375,0.2626953125,0.234375,0.2666015625,0.3251953125,0.3779296875,0.3935546875,0.3740234375,0.345703125,0.3359375,0.365234375,0.4287109375,0.4892578125,0.5,0.458984375,0.3984375,0.3583984375,0.369140625,0.4287109375,0.48828125,0.4921875,0.4365234375,0.3525390625,0.2880859375,0.2783203125,0.3251953125,0.3779296875,0.3935546875,0.3671875,0.3193359375,0.283203125,0.2841796875,0.3251953125,0.380859375,0.4482421875,0.515625,0.568359375,0.59765625,0.611328125,0.6220703125,0.6220703125,0.5849609375,0.525390625,0.4765625,0.46484375,0.494140625,0.55078125,0.60546875,0.623046875,0.587890625,0.51171875,0.4287109375,0.3798828125,0.376953125,0.3798828125,0.3583984375,0.326171875,0.3095703125,0.32421875,0.369140625,0.4287109375,0.5029296875,0.61328125,0.724609375,0.7890625,0.787109375,0.736328125,0.673828125,0.60546875,0.5185546875,0.4296875,0.36328125,0.33203125,0.3251953125,0.3251953125,0.333984375,0.3701171875,0.416015625,0.44140625,0.4296875,0.3857421875,0.3251953125,0.26953125,0.2431640625,0.2626953125,0.3203125,0.3876953125,0.427734375,0.4287109375,0.4248046875,0.4462890625,0.4951171875,0.5556640625,0.6044921875,0.6259765625,0.6220703125,0.6103515625,0.5966796875,0.5869140625,0.5869140625,0.5966796875,0.6103515625,0.6220703125,0.634765625,0.654296875,0.67578125,0.689453125,0.69140625,0.68359375,0.673828125,0.6484375,0.568359375,0.451171875,0.341796875,0.28125,0.283203125,0.3251953125,0.3828125,0.455078125,0.52734375,0.57421875,0.5888671875,0.5810546875,0.5703125,0.56640625,0.583984375,0.603515625,0.6015625,0.564453125,0.5009765625,0.4287109375,0.3681640625,0.3505859375,0.3798828125,0.4267578125,0.455078125,0.4384765625,0.376953125,0.3134765625,0.2900390625,0.328125,0.4140625,0.5078125,0.5654296875,0.5703125,0.568359375,0.5966796875,0.640625,0.6708984375,0.6669921875,0.6279296875,0.5703125,0.5048828125,0.4365234375,0.3984375,0.4169921875,0.4833984375,0.5625,0.6220703125,0.6728515625,0.7158203125,0.7333984375,0.7158203125,0.67578125,0.638671875,0.6220703125,0.60546875,0.568359375,0.515625,0.46484375,0.431640625,0.421875,0.4287109375,0.4482421875,0.4912109375,0.53515625,0.546875,0.5146484375,0.4501953125,0.376953125,0.310546875,0.2705078125,0.2763671875,0.32421875,0.3876953125,0.427734375,0.4287109375,0.41796875,0.404296875,0.38671875,0.3681640625,0.3505859375,0.3369140625,0.3251953125,0.3212890625,0.34375,0.3955078125,0.46484375,0.52734375,0.5625,0.5703125,0.55859375,0.505859375,0.4287109375,0.365234375,0.3447265625,0.373046875,0.4287109375,0.4794921875,0.484375,0.4462890625,0.3955078125,0.3671875,0.3857421875,0.4482421875,0.5263671875,0.611328125,0.662109375,0.6435546875,0.5615234375,0.458984375,0.376953125,0.32421875,0.349609375,0.4560546875,0.5947265625,0.701171875,0.7265625,0.673828125,0.5927734375,0.4921875,0.4140625,0.400390625,0.455078125,0.54296875,0.6220703125,0.693359375,0.7451171875,0.73828125,0.6552734375,0.5244140625,0.40234375,0.3251953125,0.2744140625,0.271484375,0.333984375,0.4423828125,0.552734375,0.6162109375,0.6220703125,0.6015625,0.552734375,0.4931640625,0.4580078125,0.4658203125,0.509765625,0.5703125,0.6162109375,0.6025390625,0.529296875,0.435546875,0.37109375,0.37109375,0.4287109375,0.48828125,0.4921875,0.4365234375,0.3525390625,0.2880859375,0.2783203125,0.3251953125,0.3994140625,0.5068359375,0.6103515625,0.3408203125,0.412109375,0.501953125,0.5634765625,0.5791015625,0.5888671875,0.619140625,0.65234375,0.6572265625,0.623046875,0.5595703125,0.4892578125,0.423828125,0.3828125,0.390625,0.443359375,0.515625,0.5673828125,0.5791015625,0.5791015625,0.578125,0.5771484375,0.576171875,0.576171875,0.5771484375,0.5791015625,0.5810546875,0.5810546875,0.580078125,0.578125,0.5771484375,0.578125,0.5791015625,0.5673828125,0.509765625,0.42578125,0.3583984375,0.3388671875,0.373046875,0.439453125,0.5126953125,0.5791015625,0.6201171875,0.6240234375,0.599609375,0.57421875,0.5693359375,0.5615234375,0.5244140625,0.4755859375,0.44921875,0.462890625,0.5126953125,0.5791015625,0.6533203125,0.732421875,0.775390625,0.751953125,0.66796875,0.5673828125,0.4892578125,0.421875,0.36328125,0.3349609375,0.345703125,0.380859375,0.412109375,0.419921875,0.412109375,0.37890625,0.3427734375,0.33203125,0.3603515625,0.419921875,0.4892578125,0.5595703125,0.619140625,0.6484375,0.6396484375,0.60546875,0.5751953125,0.5693359375,0.5791015625,0.6142578125,0.6533203125,0.666015625,0.638671875,0.5791015625,0.509765625,0.4306640625,0.3359375,0.2646484375,0.2587890625,0.3193359375,0.41015625,0.4892578125,0.548828125,0.5537109375,0.5029296875,0.427734375,0.3740234375,0.375,0.4296875,0.5078125,0.60546875,0.6845703125,0.703125,0.6552734375,0.57421875,0.5,0.431640625,0.373046875,0.345703125,0.3583984375,0.396484375,0.4296875,0.439453125,0.4443359375,0.462890625,0.494140625,0.5302734375,0.560546875,0.576171875,0.5791015625,0.5869140625,0.6171875,0.6484375,0.6552734375,0.6220703125,0.5595703125,0.4892578125,0.4228515625,0.3798828125,0.3828125,0.4306640625,0.4990234375,0.5478515625,0.5595703125,0.56640625,0.5927734375,0.6181640625,0.6162109375,0.576171875,0.5107421875,0.439453125,0.3642578125,0.287109375,0.2490234375,0.2802734375,0.3720703125,0.478515625,0.5595703125,0.6357421875,0.7216796875,0.7744140625,0.759765625,0.6806640625,0.580078125,0.5,0.431640625,0.388671875,0.3935546875,0.4443359375,0.515625,0.5673828125,0.5791015625,0.5673828125,0.515625,0.4443359375,0.3935546875,0.388671875,0.431640625,0.5,0.5791015625,0.6708984375,0.734375,0.73046875,0.662109375,0.568359375,0.4892578125,0.43359375,0.4345703125,0.4951171875,0.5791015625,0.6376953125,0.63671875,0.5791015625,0.517578125,0.4990234375,0.5234375,0.5654296875,0.58984375,0.5712890625,0.509765625,0.4287109375,0.326171875,0.244140625,0.224609375,0.2734375,0.35546875,0.4296875,0.5078125,0.60546875,0.68359375,0.7001953125,0.6494140625,0.5654296875,0.4892578125,0.431640625,0.4228515625,0.4658203125,0.5283203125,0.5693359375,0.5595703125,0.5,0.439453125,0.4267578125,0.4638671875,0.5234375,0.564453125,0.5556640625,0.5,0.4306640625,0.3701171875,0.3388671875,0.345703125,0.37890625,0.41015625,0.419921875,0.4345703125,0.4951171875,0.58203125,0.65234375,0.673828125,0.642578125,0.5791015625,0.4990234375,0.3896484375,0.2890625,0.24609375,0.2744140625,0.345703125,0.419921875,0.478515625,0.490234375,0.4541015625,0.3994140625,0.365234375,0.37890625,0.439453125,0.5,0.509765625,0.4697265625,0.4091796875,0.369140625,0.3798828125,0.439453125,0.4990234375,0.5087890625,0.46484375,0.400390625,0.35546875,0.3623046875,0.419921875,0.478515625,0.490234375,0.4521484375,0.3935546875,0.353515625,0.36328125,0.419921875,0.4892578125,0.556640625,0.6015625,0.611328125,0.59375,0.5732421875,0.5693359375,0.5595703125,0.5126953125,0.4482421875,0.4013671875,0.400390625,0.443359375,0.509765625,0.5751953125,0.6162109375,0.6103515625,0.55859375,0.4892578125,0.439453125,0.4296875,0.421875,0.3837890625,0.333984375,0.306640625,0.3203125,0.37109375,0.439453125,0.5205078125,0.6298828125,0.7255859375,0.7626953125,0.728515625,0.654296875,0.5791015625,0.5078125,0.4365234375,0.388671875,0.3759765625,0.392578125,0.4140625,0.419921875,0.4296875,0.470703125,0.5224609375,0.5517578125,0.5390625,0.48828125,0.419921875,0.3525390625,0.3046875,0.296875,0.3330078125,0.3896484375,0.4306640625,0.439453125,0.44140625,0.45703125,0.486328125,0.5224609375,0.5517578125,0.5673828125,0.5693359375,0.5673828125,0.5654296875,0.5634765625,0.5634765625,0.5654296875,0.5673828125,0.5693359375,0.5712890625,0.5751953125,0.578125,0.5810546875,0.58203125,0.5810546875,0.5791015625,0.564453125,0.50390625,0.4169921875,0.3466796875,0.3251953125,0.3564453125,0.419921875,0.490234375,0.5576171875,0.6025390625,0.611328125,0.5908203125,0.5673828125,0.5595703125,0.564453125,0.5908203125,0.6171875,0.6171875,0.578125,0.51171875,0.439453125,0.3798828125,0.3681640625,0.4052734375,0.4638671875,0.501953125,0.490234375,0.4296875,0.36328125,0.3271484375,0.3447265625,0.41015625,0.4921875,0.5478515625,0.5595703125,0.5673828125,0.607421875,0.6591796875,0.689453125,0.677734375,0.626953125,0.5595703125,0.4814453125,0.392578125,0.330078125,0.333984375,0.400390625,0.4931640625,0.5693359375,0.6357421875,0.6865234375,0.701171875,0.6728515625,0.62109375,0.580078125,0.5693359375,0.564453125,0.546875,0.515625,0.4814453125,0.4541015625,0.4404296875,0.439453125,0.451171875,0.4931640625,0.5439453125,0.5712890625,0.5546875,0.5,0.4296875,0.3603515625,0.310546875,0.30078125,0.333984375,0.3896484375,0.4306640625,0.439453125,0.4375,0.435546875,0.431640625,0.427734375,0.423828125,0.421875,0.419921875,0.421875,0.4375,0.4677734375,0.505859375,0.5380859375,0.5556640625,0.5595703125,0.546875,0.4912109375,0.4130859375,0.3515625,0.337890625,0.3740234375,0.439453125,0.4990234375,0.5146484375,0.4853515625,0.4384765625,0.41015625,0.4287109375,0.4892578125,0.568359375,0.654296875,0.7080078125,0.6923828125,0.6123046875,0.5107421875,0.4296875,0.373046875,0.380859375,0.4541015625,0.5546875,0.6279296875,0.6357421875,0.5791015625,0.4990234375,0.404296875,0.3349609375,0.33203125,0.396484375,0.490234375,0.5693359375,0.6455078125,0.720703125,0.751953125,0.7119140625,0.6123046875,0.5009765625,0.419921875,0.35546875,0.3232421875,0.3447265625,0.4150390625,0.5,0.5576171875,0.5693359375,0.5576171875,0.5146484375,0.4599609375,0.4287109375,0.4404296875,0.4912109375,0.5595703125,0.6142578125,0.609375,0.54296875,0.451171875,0.3857421875,0.3828125,0.439453125,0.4990234375,0.5087890625,0.46484375,0.400390625,0.35546875,0.3623046875,0.419921875,0.5,0.6025390625,0.6865234375,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.3798828125,0.373046875,0.3955078125,0.421875,0.4296875,0.443359375,0.494140625,0.564453125,0.615234375,0.6181640625,0.576171875,0.509765625,0.439453125,0.376953125,0.345703125,0.353515625,0.3876953125,0.419921875,0.4296875,0.4306640625,0.4306640625,0.4296875,0.42578125,0.4228515625,0.419921875,0.419921875,0.419921875,0.4228515625,0.42578125,0.4296875,0.4306640625,0.4306640625,0.4296875,0.421875,0.396484375,0.3740234375,0.3798828125,0.4228515625,0.4892578125,0.5595703125,0.623046875,0.658203125,0.6435546875,0.5810546875,0.5009765625,0.4443359375,0.4296875,0.41796875,0.375,0.3203125,0.2890625,0.30078125,0.3515625,0.419921875,0.4990234375,0.5986328125,0.677734375,0.6953125,0.646484375,0.564453125,0.4892578125,0.4248046875,0.384765625,0.388671875,0.4365234375,0.5029296875,0.5498046875,0.5595703125,0.5458984375,0.4951171875,0.42578125,0.376953125,0.3759765625,0.4208984375,0.4892578125,0.5576171875,0.6015625,0.6005859375,0.5537109375,0.4873046875,0.439453125,0.4296875,0.4423828125,0.490234375,0.5546875,0.599609375,0.5986328125,0.5546875,0.4892578125,0.4130859375,0.32421875,0.259765625,0.259765625,0.32421875,0.4130859375,0.4892578125,0.5478515625,0.564453125,0.5390625,0.498046875,0.4765625,0.4970703125,0.5595703125,0.6376953125,0.724609375,0.779296875,0.765625,0.6875,0.5888671875,0.509765625,0.4423828125,0.3984375,0.3984375,0.44140625,0.5048828125,0.5498046875,0.5595703125,0.5546875,0.5361328125,0.5048828125,0.46875,0.4384765625,0.4228515625,0.419921875,0.431640625,0.4833984375,0.5556640625,0.6083984375,0.6162109375,0.5751953125,0.509765625,0.439453125,0.3798828125,0.3515625,0.3623046875,0.3994140625,0.431640625,0.439453125,0.4521484375,0.5078125,0.587890625,0.650390625,0.6669921875,0.6328125,0.5693359375,0.490234375,0.3837890625,0.2890625,0.251953125,0.2841796875,0.357421875,0.4296875,0.5078125,0.6083984375,0.689453125,0.7099609375,0.6611328125,0.5771484375,0.5,0.4287109375,0.3701171875,0.3447265625,0.359375,0.3994140625,0.4326171875,0.439453125,0.4296875,0.396484375,0.3583984375,0.345703125,0.373046875,0.431640625,0.5,0.576171875,0.66796875,0.7353515625,0.73828125,0.6767578125,0.5869140625,0.509765625,0.44921875,0.4306640625,0.453125,0.4921875,0.5126953125,0.4912109375,0.4296875,0.37109375,0.369140625,0.4267578125,0.5078125,0.5654296875,0.5654296875,0.509765625,0.43359375,0.349609375,0.2998046875,0.318359375,0.3994140625,0.5,0.5791015625,0.6552734375,0.7353515625,0.7783203125,0.75390625,0.669921875,0.568359375,0.4892578125,0.4326171875,0.423828125,0.4638671875,0.5244140625,0.5654296875,0.556640625,0.5,0.443359375,0.4345703125,0.4755859375,0.53515625,0.572265625,0.5595703125,0.5,0.4306640625,0.3857421875,0.3876953125,0.435546875,0.5048828125,0.5556640625,0.5693359375,0.5771484375,0.603515625,0.626953125,0.6220703125,0.5791015625,0.5107421875,0.439453125,0.365234375,0.2900390625,0.255859375,0.29296875,0.3896484375,0.498046875,0.5791015625,0.6376953125,0.6484375,0.609375,0.5498046875,0.5107421875,0.5205078125,0.5791015625,0.6376953125,0.646484375,0.603515625,0.5400390625,0.49609375,0.5029296875,0.5595703125,0.6162109375,0.6240234375,0.5830078125,0.5244140625,0.486328125,0.4990234375,0.5595703125,0.619140625,0.630859375,0.591796875,0.5322265625,0.4912109375,0.5009765625,0.5595703125,0.625,0.6611328125,0.6474609375,0.5859375,0.5078125,0.4521484375,0.439453125,0.431640625,0.3994140625,0.3623046875,0.3515625,0.3798828125,0.439453125,0.509765625,0.5791015625,0.638671875,0.666015625,0.6533203125,0.6142578125,0.5791015625,0.5693359375,0.5576171875,0.515625,0.4619140625,0.431640625,0.443359375,0.4931640625,0.5595703125,0.6318359375,0.7060546875,0.7412109375,0.70703125,0.6142578125,0.5087890625,0.4296875,0.3662109375,0.33203125,0.3486328125,0.4111328125,0.4912109375,0.546875,0.5595703125,0.5693359375,0.609375,0.662109375,0.69140625,0.6787109375,0.6279296875,0.5595703125,0.4912109375,0.4404296875,0.4287109375,0.4599609375,0.5146484375,0.5576171875,0.5693359375,0.5673828125,0.5517578125,0.51953125,0.48046875,0.4453125,0.4248046875,0.419921875,0.4189453125,0.419921875,0.4228515625,0.4267578125,0.4296875,0.4306640625,0.4296875,0.427734375,0.4267578125,0.427734375,0.4306640625,0.4345703125,0.4375,0.439453125,0.4345703125,0.4091796875,0.3837890625,0.3857421875,0.423828125,0.48828125,0.5595703125,0.625,0.662109375,0.650390625,0.58984375,0.5107421875,0.4541015625,0.439453125,0.451171875,0.5068359375,0.5888671875,0.654296875,0.671875,0.6357421875,0.5693359375,0.5087890625,0.49609375,0.533203125,0.58984375,0.6279296875,0.6181640625,0.5595703125,0.48828125,0.4228515625,0.3828125,0.380859375,0.40625,0.4326171875,0.439453125,0.44921875,0.48828125,0.537109375,0.5625,0.544921875,0.490234375,0.419921875,0.33984375,0.2470703125,0.1826171875,0.185546875,0.2548828125,0.349609375,0.4296875,0.5,0.5517578125,0.564453125,0.53125,0.4755859375,0.431640625,0.419921875,0.421875,0.4375,0.4677734375,0.505859375,0.5380859375,0.5556640625,0.5595703125,0.5693359375,0.6123046875,0.6689453125,0.7041015625,0.6953125,0.646484375,0.5791015625,0.5107421875,0.4599609375,0.447265625,0.4765625,0.5283203125,0.5693359375,0.5791015625,0.5791015625,0.5771484375,0.57421875,0.5693359375,0.5654296875,0.5615234375,0.5595703125,0.5546875,0.5380859375,0.509765625,0.478515625,0.453125,0.4404296875,0.439453125,0.4345703125,0.4091796875,0.3857421875,0.388671875,0.4296875,0.4970703125,0.5693359375,0.6279296875,0.6298828125,0.57421875,0.4951171875,0.439453125,0.44140625,0.5,0.580078125,0.6806640625,0.7607421875,0.7783203125,0.7275390625,0.64453125,0.5693359375,0.5087890625,0.48046875,0.4853515625,0.50390625,0.5087890625,0.48046875,0.419921875,0.34375,0.255859375,0.1943359375,0.1962890625,0.2626953125,0.353515625,0.4296875,0.5087890625,0.615234375,0.708984375,0.744140625,0.708984375,0.6337890625,0.5595703125,0.48828125,0.419921875,0.3759765625,0.3681640625,0.3896484375,0.4130859375,0.419921875,0.41015625,0.369140625,0.3173828125,0.287109375,0.30078125,0.3515625,0.419921875,0.4814453125,0.51171875,0.5078125,0.4912109375,0.4873046875,0.517578125,0.5791015625,0.6376953125,0.6484375,0.609375,0.5498046875,0.5107421875,0.5205078125,0.5791015625,0.6552734375,0.7392578125,0.7880859375,0.380859375,0.3427734375,0.34375,0.36328125,0.376953125,0.400390625,0.46484375,0.55078125,0.6181640625,0.6376953125,0.6083984375,0.55078125,0.486328125,0.4140625,0.3564453125,0.33203125,0.3408203125,0.3623046875,0.376953125,0.3857421875,0.3876953125,0.3779296875,0.3603515625,0.3408203125,0.328125,0.3251953125,0.328125,0.3408203125,0.3603515625,0.3779296875,0.3876953125,0.3857421875,0.376953125,0.3642578125,0.3505859375,0.353515625,0.3876953125,0.4482421875,0.5146484375,0.5703125,0.6162109375,0.63671875,0.6103515625,0.54296875,0.4599609375,0.3994140625,0.376953125,0.357421875,0.3076171875,0.2490234375,0.2138671875,0.220703125,0.265625,0.3251953125,0.3955078125,0.484375,0.5615234375,0.5888671875,0.5615234375,0.5029296875,0.4482421875,0.40234375,0.3857421875,0.412109375,0.4697265625,0.533203125,0.5703125,0.5703125,0.546875,0.4833984375,0.400390625,0.341796875,0.3359375,0.3798828125,0.4482421875,0.5146484375,0.552734375,0.5419921875,0.4892578125,0.421875,0.37890625,0.376953125,0.396484375,0.4423828125,0.4970703125,0.533203125,0.5322265625,0.4970703125,0.4482421875,0.3916015625,0.32421875,0.27734375,0.27734375,0.32421875,0.3916015625,0.4482421875,0.490234375,0.5009765625,0.484375,0.4638671875,0.466796875,0.5048828125,0.5703125,0.6474609375,0.7333984375,0.7880859375,0.779296875,0.7099609375,0.62109375,0.55078125,0.4931640625,0.45703125,0.45703125,0.4931640625,0.541015625,0.5712890625,0.5703125,0.5546875,0.5166015625,0.4609375,0.400390625,0.353515625,0.330078125,0.3251953125,0.33984375,0.40234375,0.498046875,0.583984375,0.623046875,0.60546875,0.55078125,0.48828125,0.4287109375,0.390625,0.3837890625,0.40234375,0.4228515625,0.4287109375,0.4404296875,0.4931640625,0.57421875,0.6474609375,0.6806640625,0.6669921875,0.6220703125,0.5595703125,0.462890625,0.361328125,0.2958984375,0.2890625,0.326171875,0.376953125,0.439453125,0.533203125,0.6240234375,0.6650390625,0.640625,0.5732421875,0.5,0.4296875,0.375,0.353515625,0.369140625,0.4052734375,0.4306640625,0.4287109375,0.4130859375,0.384765625,0.3603515625,0.3623046875,0.39453125,0.447265625,0.5,0.55859375,0.6376953125,0.705078125,0.72265625,0.6845703125,0.6171875,0.55078125,0.4970703125,0.4736328125,0.4765625,0.4873046875,0.48046875,0.4423828125,0.376953125,0.3203125,0.32421875,0.3955078125,0.498046875,0.5791015625,0.5966796875,0.55078125,0.4853515625,0.419921875,0.390625,0.4228515625,0.5068359375,0.6025390625,0.673828125,0.7353515625,0.7822265625,0.78125,0.716796875,0.611328125,0.5107421875,0.4482421875,0.40625,0.4052734375,0.4453125,0.501953125,0.5419921875,0.541015625,0.5,0.4599609375,0.46484375,0.5087890625,0.560546875,0.5849609375,0.5625,0.5,0.4306640625,0.3876953125,0.3935546875,0.4521484375,0.5341796875,0.5986328125,0.6220703125,0.6357421875,0.6552734375,0.66015625,0.630859375,0.5693359375,0.494140625,0.4287109375,0.3662109375,0.3154296875,0.3134765625,0.3779296875,0.4892578125,0.599609375,0.673828125,0.724609375,0.7333984375,0.69921875,0.6474609375,0.61328125,0.6220703125,0.673828125,0.7236328125,0.7265625,0.6767578125,0.6015625,0.5419921875,0.53125,0.5703125,0.609375,0.60546875,0.5615234375,0.5087890625,0.484375,0.5078125,0.5703125,0.630859375,0.6484375,0.615234375,0.5595703125,0.517578125,0.5205078125,0.5703125,0.6259765625,0.654296875,0.6337890625,0.5703125,0.4931640625,0.4404296875,0.4287109375,0.4228515625,0.40234375,0.3837890625,0.390625,0.4287109375,0.48828125,0.55078125,0.6142578125,0.673828125,0.7080078125,0.705078125,0.673828125,0.638671875,0.6220703125,0.603515625,0.5595703125,0.5087890625,0.4775390625,0.4833984375,0.5205078125,0.5703125,0.6220703125,0.666015625,0.669921875,0.619140625,0.5283203125,0.4384765625,0.376953125,0.33203125,0.318359375,0.3515625,0.4248046875,0.505859375,0.55859375,0.5703125,0.578125,0.6142578125,0.66015625,0.685546875,0.6748046875,0.6298828125,0.5703125,0.509765625,0.4658203125,0.4580078125,0.4931640625,0.552734375,0.6015625,0.6220703125,0.6259765625,0.6044921875,0.5478515625,0.4697265625,0.3935546875,0.34375,0.3251953125,0.318359375,0.3232421875,0.33984375,0.3623046875,0.3798828125,0.384765625,0.376953125,0.3671875,0.359375,0.361328125,0.375,0.396484375,0.416015625,0.4287109375,0.43359375,0.4228515625,0.41015625,0.41796875,0.4521484375,0.5087890625,0.5703125,0.6279296875,0.6611328125,0.6494140625,0.5908203125,0.51171875,0.451171875,0.4287109375,0.43359375,0.4912109375,0.5849609375,0.6708984375,0.708984375,0.685546875,0.6220703125,0.5595703125,0.5361328125,0.5576171875,0.599609375,0.6298828125,0.62109375,0.5703125,0.5068359375,0.4453125,0.40234375,0.390625,0.4052734375,0.423828125,0.4287109375,0.4365234375,0.4658203125,0.49609375,0.4990234375,0.462890625,0.3974609375,0.3251953125,0.2470703125,0.1591796875,0.1044921875,0.1181640625,0.1962890625,0.296875,0.376953125,0.447265625,0.5,0.5087890625,0.4697265625,0.40234375,0.3466796875,0.3251953125,0.3212890625,0.34375,0.3955078125,0.46484375,0.52734375,0.5625,0.5703125,0.5810546875,0.62890625,0.6982421875,0.7509765625,0.7626953125,0.73046875,0.673828125,0.61328125,0.5693359375,0.5576171875,0.5830078125,0.62890625,0.6650390625,0.673828125,0.6728515625,0.666015625,0.650390625,0.6279296875,0.6025390625,0.58203125,0.5703125,0.5556640625,0.5244140625,0.4833984375,0.4462890625,0.423828125,0.4208984375,0.4287109375,0.43359375,0.4228515625,0.4140625,0.4306640625,0.4794921875,0.548828125,0.6220703125,0.6787109375,0.6748046875,0.607421875,0.513671875,0.4462890625,0.4423828125,0.5,0.5791015625,0.67578125,0.7548828125,0.7783203125,0.7421875,0.6787109375,0.6220703125,0.572265625,0.5283203125,0.4912109375,0.4560546875,0.4189453125,0.375,0.3251953125,0.2705078125,0.2099609375,0.173828125,0.1875,0.24609375,0.3193359375,0.376953125,0.439453125,0.5361328125,0.634765625,0.689453125,0.68359375,0.6318359375,0.5703125,0.5048828125,0.4296875,0.3642578125,0.3251953125,0.31640625,0.3232421875,0.3251953125,0.3173828125,0.28125,0.2353515625,0.2099609375,0.220703125,0.265625,0.3251953125,0.384765625,0.4365234375,0.4794921875,0.51953125,0.5625,0.6142578125,0.673828125,0.724609375,0.7333984375,0.69921875,0.6474609375,0.61328125,0.6220703125,0.673828125,0.73828125,0.8046875,0.833984375,0.361328125,0.30859375,0.306640625,0.3349609375,0.3642578125,0.4013671875,0.4765625,0.568359375,0.640625,0.666015625,0.646484375,0.6044921875,0.55078125,0.4736328125,0.3916015625,0.3359375,0.3212890625,0.337890625,0.3642578125,0.3876953125,0.3935546875,0.375,0.3359375,0.29296875,0.2646484375,0.2587890625,0.2646484375,0.29296875,0.3359375,0.375,0.3935546875,0.3876953125,0.3642578125,0.33984375,0.3291015625,0.34765625,0.39453125,0.4541015625,0.50390625,0.5302734375,0.5478515625,0.5576171875,0.54296875,0.5029296875,0.4462890625,0.396484375,0.3642578125,0.330078125,0.271484375,0.208984375,0.1728515625,0.177734375,0.2138671875,0.2587890625,0.30859375,0.369140625,0.421875,0.447265625,0.439453125,0.416015625,0.39453125,0.3828125,0.400390625,0.447265625,0.501953125,0.5419921875,0.5498046875,0.5302734375,0.4912109375,0.4140625,0.3251953125,0.2705078125,0.2724609375,0.32421875,0.39453125,0.4599609375,0.4931640625,0.48046875,0.4306640625,0.375,0.3486328125,0.3642578125,0.392578125,0.4267578125,0.453125,0.4580078125,0.44140625,0.416015625,0.39453125,0.373046875,0.3486328125,0.3310546875,0.3310546875,0.3486328125,0.373046875,0.39453125,0.40625,0.39453125,0.375,0.3720703125,0.4013671875,0.4599609375,0.5302734375,0.607421875,0.6953125,0.7587890625,0.767578125,0.72265625,0.6572265625,0.6044921875,0.5625,0.53515625,0.5302734375,0.541015625,0.552734375,0.55078125,0.5302734375,0.498046875,0.4453125,0.3798828125,0.3203125,0.279296875,0.26171875,0.2587890625,0.2734375,0.341796875,0.4521484375,0.5634765625,0.6318359375,0.640625,0.6044921875,0.5576171875,0.5078125,0.46875,0.4521484375,0.4560546875,0.4658203125,0.46875,0.4755859375,0.5068359375,0.5576171875,0.609375,0.6435546875,0.6494140625,0.634765625,0.607421875,0.5498046875,0.4716796875,0.400390625,0.357421875,0.349609375,0.3642578125,0.3955078125,0.4677734375,0.5546875,0.61328125,0.6162109375,0.568359375,0.5,0.4326171875,0.3916015625,0.3916015625,0.4248046875,0.466796875,0.4853515625,0.46875,0.44140625,0.4150390625,0.40234375,0.4140625,0.443359375,0.4765625,0.5,0.5263671875,0.580078125,0.640625,0.6796875,0.6806640625,0.6484375,0.6044921875,0.564453125,0.5439453125,0.53515625,0.521484375,0.48828125,0.43359375,0.3642578125,0.306640625,0.3095703125,0.3837890625,0.4970703125,0.595703125,0.6328125,0.6044921875,0.5576171875,0.5146484375,0.501953125,0.5380859375,0.6103515625,0.6865234375,0.740234375,0.7783203125,0.78125,0.7265625,0.6240234375,0.509765625,0.4267578125,0.39453125,0.380859375,0.390625,0.4248046875,0.46875,0.5029296875,0.5126953125,0.5,0.4912109375,0.5185546875,0.568359375,0.607421875,0.6083984375,0.56640625,0.5,0.4296875,0.3779296875,0.375,0.4306640625,0.5185546875,0.595703125,0.634765625,0.6630859375,0.6884765625,0.6904296875,0.654296875,0.58984375,0.5205078125,0.46875,0.4248046875,0.3984375,0.4169921875,0.48828125,0.5908203125,0.68359375,0.740234375,0.7783203125,0.7841796875,0.7587890625,0.720703125,0.6953125,0.7021484375,0.740234375,0.7763671875,0.7734375,0.720703125,0.6376953125,0.560546875,0.5224609375,0.5302734375,0.5380859375,0.5107421875,0.4609375,0.421875,0.4208984375,0.462890625,0.5302734375,0.59375,0.619140625,0.5986328125,0.5498046875,0.50390625,0.49609375,0.5302734375,0.572265625,0.5986328125,0.5927734375,0.5576171875,0.5107421875,0.4765625,0.46875,0.4658203125,0.4560546875,0.4521484375,0.46875,0.5078125,0.5576171875,0.6044921875,0.6533203125,0.705078125,0.740234375,0.740234375,0.7080078125,0.666015625,0.634765625,0.6044921875,0.5615234375,0.5185546875,0.494140625,0.494140625,0.509765625,0.5302734375,0.546875,0.5517578125,0.5322265625,0.48828125,0.43359375,0.388671875,0.3642578125,0.349609375,0.35546875,0.3896484375,0.44140625,0.4921875,0.5234375,0.5302734375,0.5361328125,0.5625,0.5966796875,0.615234375,0.607421875,0.57421875,0.5302734375,0.484375,0.44921875,0.4443359375,0.48046875,0.5419921875,0.6005859375,0.634765625,0.6552734375,0.64453125,0.5849609375,0.4853515625,0.376953125,0.296875,0.2587890625,0.2392578125,0.248046875,0.2861328125,0.3369140625,0.375,0.3837890625,0.3642578125,0.3369140625,0.3154296875,0.314453125,0.341796875,0.3896484375,0.4375,0.46875,0.490234375,0.490234375,0.474609375,0.4609375,0.462890625,0.48828125,0.5302734375,0.576171875,0.6171875,0.6318359375,0.607421875,0.5556640625,0.5029296875,0.46875,0.45703125,0.5,0.5849609375,0.6708984375,0.7138671875,0.697265625,0.634765625,0.5693359375,0.5302734375,0.52734375,0.548828125,0.5703125,0.56640625,0.5302734375,0.484375,0.443359375,0.421875,0.4248046875,0.4453125,0.4638671875,0.46875,0.474609375,0.490234375,0.4970703125,0.4716796875,0.4111328125,0.333984375,0.2587890625,0.181640625,0.1005859375,0.056640625,0.0849609375,0.1748046875,0.2822265625,0.3642578125,0.4345703125,0.490234375,0.5,0.4521484375,0.37109375,0.296875,0.2587890625,0.2392578125,0.2529296875,0.30859375,0.3916015625,0.4716796875,0.51953125,0.5302734375,0.541015625,0.5927734375,0.673828125,0.748046875,0.787109375,0.779296875,0.740234375,0.6962890625,0.6630859375,0.654296875,0.673828125,0.70703125,0.7333984375,0.740234375,0.7392578125,0.728515625,0.701171875,0.6572265625,0.60546875,0.560546875,0.5302734375,0.4990234375,0.45703125,0.4189453125,0.4033203125,0.4140625,0.44140625,0.46875,0.48828125,0.486328125,0.474609375,0.4775390625,0.5078125,0.5654296875,0.634765625,0.69140625,0.685546875,0.615234375,0.5185546875,0.4482421875,0.4423828125,0.5,0.5751953125,0.6552734375,0.712890625,0.7255859375,0.69921875,0.66015625,0.634765625,0.6103515625,0.5615234375,0.48828125,0.4052734375,0.33203125,0.283203125,0.2587890625,0.240234375,0.228515625,0.234375,0.26171875,0.302734375,0.3408203125,0.3642578125,0.392578125,0.453125,0.52734375,0.58203125,0.5966796875,0.572265625,0.5302734375,0.4794921875,0.4130859375,0.3447265625,0.2919921875,0.265625,0.2587890625,0.2587890625,0.2529296875,0.2265625,0.1923828125,0.1728515625,0.181640625,0.21484375,0.2587890625,0.3076171875,0.373046875,0.455078125,0.5439453125,0.6259765625,0.69140625,0.740234375,0.7783203125,0.7841796875,0.7587890625,0.720703125,0.6953125,0.7021484375,0.740234375,0.787109375,0.830078125,0.8427734375,0.3251953125,0.28125,0.2958984375,0.345703125,0.39453125,0.4482421875,0.525390625,0.607421875,0.6630859375,0.677734375,0.6611328125,0.634765625,0.59765625,0.5224609375,0.4306640625,0.3583984375,0.3330078125,0.3525390625,0.39453125,0.435546875,0.4521484375,0.4306640625,0.375,0.3115234375,0.2685546875,0.2587890625,0.2685546875,0.3115234375,0.375,0.4306640625,0.4521484375,0.435546875,0.39453125,0.3544921875,0.341796875,0.3642578125,0.4111328125,0.4580078125,0.4794921875,0.46875,0.455078125,0.458984375,0.47265625,0.4794921875,0.46875,0.4375,0.39453125,0.34375,0.2783203125,0.220703125,0.1923828125,0.201171875,0.23046875,0.2587890625,0.2841796875,0.3056640625,0.3193359375,0.328125,0.3359375,0.3466796875,0.3642578125,0.3916015625,0.4443359375,0.5048828125,0.5439453125,0.544921875,0.513671875,0.46875,0.4130859375,0.3251953125,0.240234375,0.201171875,0.224609375,0.2900390625,0.3642578125,0.4287109375,0.4580078125,0.4443359375,0.40234375,0.3642578125,0.359375,0.39453125,0.435546875,0.453125,0.44140625,0.40625,0.369140625,0.3525390625,0.3642578125,0.384765625,0.41015625,0.427734375,0.427734375,0.41015625,0.384765625,0.3642578125,0.337890625,0.294921875,0.26171875,0.267578125,0.318359375,0.39453125,0.46875,0.546875,0.634765625,0.7041015625,0.728515625,0.7080078125,0.6669921875,0.634765625,0.611328125,0.5986328125,0.5908203125,0.5771484375,0.5517578125,0.513671875,0.46875,0.419921875,0.361328125,0.306640625,0.26953125,0.2568359375,0.2578125,0.2587890625,0.271484375,0.33203125,0.435546875,0.546875,0.6259765625,0.65234375,0.634765625,0.6064453125,0.5751953125,0.546875,0.5302734375,0.5263671875,0.5283203125,0.5302734375,0.529296875,0.52734375,0.529296875,0.541015625,0.5615234375,0.583984375,0.6044921875,0.62109375,0.6201171875,0.5908203125,0.53515625,0.470703125,0.419921875,0.39453125,0.388671875,0.4287109375,0.501953125,0.568359375,0.5927734375,0.564453125,0.5,0.4365234375,0.4140625,0.44140625,0.4990234375,0.55078125,0.5634765625,0.5302734375,0.4873046875,0.4619140625,0.4609375,0.48046875,0.50390625,0.5126953125,0.5,0.48828125,0.505859375,0.5517578125,0.607421875,0.646484375,0.6552734375,0.634765625,0.61328125,0.6064453125,0.6015625,0.580078125,0.5322265625,0.4658203125,0.39453125,0.333984375,0.326171875,0.3857421875,0.4912109375,0.59375,0.6455078125,0.634765625,0.6083984375,0.5859375,0.5849609375,0.61328125,0.6611328125,0.7080078125,0.740234375,0.75390625,0.716796875,0.6240234375,0.5048828125,0.4052734375,0.3583984375,0.3642578125,0.3828125,0.40234375,0.421875,0.44140625,0.4609375,0.48046875,0.5,0.5283203125,0.5830078125,0.640625,0.6630859375,0.6357421875,0.572265625,0.5,0.42578125,0.3603515625,0.3359375,0.375,0.4609375,0.5478515625,0.6044921875,0.650390625,0.6904296875,0.701171875,0.673828125,0.6181640625,0.5634765625,0.5302734375,0.505859375,0.49609375,0.5185546875,0.57421875,0.6455078125,0.7060546875,0.740234375,0.76171875,0.765625,0.7509765625,0.728515625,0.7138671875,0.7177734375,0.740234375,0.76171875,0.759765625,0.7177734375,0.6435546875,0.5595703125,0.498046875,0.46875,0.4404296875,0.384765625,0.328125,0.3056640625,0.3330078125,0.396484375,0.46875,0.53515625,0.572265625,0.56640625,0.5244140625,0.4755859375,0.453125,0.46875,0.49609375,0.5224609375,0.541015625,0.5458984375,0.5400390625,0.5322265625,0.5302734375,0.5283203125,0.5263671875,0.5302734375,0.546875,0.5751953125,0.6064453125,0.634765625,0.666015625,0.7080078125,0.740234375,0.740234375,0.705078125,0.6533203125,0.6044921875,0.5595703125,0.521484375,0.4970703125,0.48828125,0.48828125,0.484375,0.46875,0.4462890625,0.412109375,0.3779296875,0.3583984375,0.359375,0.375,0.39453125,0.4150390625,0.4375,0.4580078125,0.4697265625,0.4716796875,0.4697265625,0.46875,0.47265625,0.48828125,0.5078125,0.5185546875,0.513671875,0.4951171875,0.46875,0.4404296875,0.4111328125,0.40234375,0.4306640625,0.4892578125,0.5537109375,0.6044921875,0.6474609375,0.6640625,0.6298828125,0.5380859375,0.4189453125,0.3173828125,0.2587890625,0.224609375,0.234375,0.2900390625,0.36328125,0.4189453125,0.4287109375,0.39453125,0.3466796875,0.3037109375,0.2919921875,0.328125,0.400390625,0.4765625,0.5302734375,0.5693359375,0.5791015625,0.5546875,0.5078125,0.4658203125,0.451171875,0.46875,0.5029296875,0.5556640625,0.607421875,0.6318359375,0.6171875,0.576171875,0.5302734375,0.4970703125,0.5146484375,0.5771484375,0.646484375,0.68359375,0.666015625,0.6044921875,0.53515625,0.4814453125,0.4580078125,0.4638671875,0.482421875,0.48828125,0.46875,0.4453125,0.4326171875,0.44140625,0.46875,0.501953125,0.5244140625,0.5302734375,0.533203125,0.5419921875,0.53515625,0.494140625,0.419921875,0.3349609375,0.2587890625,0.1826171875,0.1044921875,0.068359375,0.1044921875,0.201171875,0.3115234375,0.39453125,0.4677734375,0.529296875,0.546875,0.5,0.4072265625,0.31640625,0.2587890625,0.2197265625,0.2119140625,0.2509765625,0.3251953125,0.40625,0.4580078125,0.46875,0.4794921875,0.52734375,0.607421875,0.6904296875,0.74609375,0.759765625,0.740234375,0.71484375,0.6953125,0.6904296875,0.701171875,0.720703125,0.736328125,0.740234375,0.740234375,0.7333984375,0.70703125,0.654296875,0.5859375,0.51953125,0.46875,0.419921875,0.3681640625,0.33984375,0.35546875,0.4111328125,0.478515625,0.5302734375,0.5654296875,0.56640625,0.5380859375,0.5078125,0.50390625,0.5390625,0.6044921875,0.662109375,0.66015625,0.5966796875,0.5078125,0.4443359375,0.4423828125,0.5,0.5693359375,0.623046875,0.6455078125,0.6357421875,0.6083984375,0.59375,0.6044921875,0.6123046875,0.5732421875,0.4853515625,0.3779296875,0.2900390625,0.2509765625,0.2587890625,0.283203125,0.32421875,0.3720703125,0.408203125,0.4208984375,0.412109375,0.39453125,0.3818359375,0.3916015625,0.4248046875,0.4638671875,0.4892578125,0.490234375,0.46875,0.4384765625,0.3935546875,0.341796875,0.2978515625,0.2705078125,0.259765625,0.2587890625,0.2548828125,0.240234375,0.220703125,0.208984375,0.2138671875,0.2333984375,0.2587890625,0.2919921875,0.3544921875,0.447265625,0.5517578125,0.64453125,0.70703125,0.740234375,0.76171875,0.765625,0.7509765625,0.728515625,0.7138671875,0.7177734375,0.740234375,0.7666015625,0.7890625,0.7900390625,0.2880859375,0.2646484375,0.306640625,0.380859375,0.4482421875,0.5126953125,0.5849609375,0.642578125,0.6669921875,0.658203125,0.63671875,0.6220703125,0.5986328125,0.5341796875,0.4482421875,0.380859375,0.361328125,0.390625,0.4482421875,0.5048828125,0.5341796875,0.5185546875,0.4609375,0.3876953125,0.3369140625,0.3251953125,0.3369140625,0.3876953125,0.4609375,0.5185546875,0.5341796875,0.5048828125,0.4482421875,0.39453125,0.376953125,0.3994140625,0.4423828125,0.474609375,0.470703125,0.4287109375,0.388671875,0.388671875,0.4296875,0.482421875,0.5126953125,0.5,0.4482421875,0.3837890625,0.318359375,0.271484375,0.2607421875,0.28125,0.3095703125,0.3251953125,0.330078125,0.314453125,0.2900390625,0.27734375,0.2900390625,0.328125,0.376953125,0.4365234375,0.515625,0.58203125,0.6005859375,0.5625,0.494140625,0.4287109375,0.3583984375,0.265625,0.189453125,0.1708984375,0.21875,0.2998046875,0.376953125,0.4404296875,0.4658203125,0.44921875,0.4111328125,0.384765625,0.396484375,0.4482421875,0.4990234375,0.505859375,0.462890625,0.396484375,0.3447265625,0.337890625,0.376953125,0.43359375,0.5009765625,0.5478515625,0.5478515625,0.5009765625,0.43359375,0.376953125,0.3193359375,0.24609375,0.1953125,0.2001953125,0.2626953125,0.3505859375,0.4287109375,0.5048828125,0.5869140625,0.650390625,0.67578125,0.6630859375,0.6376953125,0.6220703125,0.615234375,0.6201171875,0.62109375,0.6005859375,0.5537109375,0.4921875,0.4287109375,0.3671875,0.3095703125,0.275390625,0.2734375,0.296875,0.3193359375,0.3251953125,0.333984375,0.3759765625,0.4501953125,0.5322265625,0.5966796875,0.625,0.6220703125,0.6103515625,0.5966796875,0.5830078125,0.57421875,0.5703125,0.5693359375,0.5703125,0.5625,0.5302734375,0.48828125,0.4619140625,0.466796875,0.501953125,0.55078125,0.60546875,0.66015625,0.6845703125,0.6572265625,0.5859375,0.5068359375,0.4482421875,0.4091796875,0.419921875,0.4755859375,0.541015625,0.5771484375,0.560546875,0.5,0.439453125,0.431640625,0.4794921875,0.5546875,0.6123046875,0.6181640625,0.5703125,0.515625,0.4921875,0.5029296875,0.5322265625,0.552734375,0.5419921875,0.5,0.4541015625,0.4375,0.4638671875,0.521484375,0.5849609375,0.6220703125,0.6220703125,0.6171875,0.630859375,0.6435546875,0.6318359375,0.587890625,0.5205078125,0.4482421875,0.3837890625,0.3583984375,0.3916015625,0.47265625,0.5625,0.6181640625,0.6220703125,0.611328125,0.6044921875,0.60546875,0.619140625,0.640625,0.66015625,0.673828125,0.669921875,0.611328125,0.509765625,0.4052734375,0.3408203125,0.3359375,0.376953125,0.4228515625,0.4453125,0.443359375,0.4326171875,0.431640625,0.4541015625,0.5,0.55859375,0.6376953125,0.701171875,0.7099609375,0.658203125,0.576171875,0.5,0.4228515625,0.3408203125,0.29296875,0.3115234375,0.3876953125,0.48046875,0.55078125,0.6123046875,0.666015625,0.689453125,0.6728515625,0.62890625,0.587890625,0.5703125,0.560546875,0.5595703125,0.5732421875,0.6005859375,0.6328125,0.6591796875,0.673828125,0.681640625,0.68359375,0.677734375,0.6689453125,0.6630859375,0.6650390625,0.673828125,0.6845703125,0.6923828125,0.677734375,0.6298828125,0.55859375,0.4853515625,0.4287109375,0.369140625,0.2900390625,0.2275390625,0.21875,0.2705078125,0.3525390625,0.4287109375,0.4970703125,0.5439453125,0.548828125,0.5146484375,0.462890625,0.4287109375,0.4287109375,0.4423828125,0.466796875,0.5,0.533203125,0.556640625,0.568359375,0.5703125,0.5693359375,0.5703125,0.57421875,0.5830078125,0.5966796875,0.6103515625,0.6220703125,0.638671875,0.673828125,0.705078125,0.7080078125,0.673828125,0.6142578125,0.55078125,0.49609375,0.4658203125,0.46484375,0.48046875,0.4892578125,0.47265625,0.4287109375,0.373046875,0.30859375,0.2646484375,0.26953125,0.3212890625,0.390625,0.4482421875,0.4970703125,0.5322265625,0.537109375,0.5107421875,0.46875,0.4365234375,0.4287109375,0.4306640625,0.4365234375,0.4443359375,0.4482421875,0.4462890625,0.439453125,0.4287109375,0.4130859375,0.384765625,0.3642578125,0.375,0.421875,0.4873046875,0.55078125,0.6142578125,0.6669921875,0.673828125,0.6142578125,0.5068359375,0.3994140625,0.3251953125,0.27734375,0.283203125,0.3447265625,0.4287109375,0.490234375,0.49609375,0.4482421875,0.3828125,0.31640625,0.287109375,0.3193359375,0.4033203125,0.4990234375,0.5703125,0.625,0.646484375,0.619140625,0.55078125,0.4755859375,0.4306640625,0.4287109375,0.451171875,0.51171875,0.5908203125,0.6494140625,0.6611328125,0.6279296875,0.5703125,0.51953125,0.5146484375,0.552734375,0.603515625,0.6318359375,0.61328125,0.55078125,0.48046875,0.4189453125,0.3857421875,0.388671875,0.4130859375,0.431640625,0.4287109375,0.421875,0.431640625,0.4609375,0.5029296875,0.5419921875,0.5654296875,0.5703125,0.57421875,0.5859375,0.5849609375,0.55078125,0.4833984375,0.4013671875,0.3251953125,0.2490234375,0.169921875,0.1298828125,0.162109375,0.255859375,0.365234375,0.4482421875,0.5234375,0.5966796875,0.6279296875,0.591796875,0.5,0.3984375,0.3251953125,0.2685546875,0.236328125,0.248046875,0.30078125,0.3701171875,0.41796875,0.4287109375,0.4365234375,0.4716796875,0.5341796875,0.603515625,0.6552734375,0.677734375,0.673828125,0.6630859375,0.6552734375,0.6533203125,0.658203125,0.666015625,0.671875,0.673828125,0.67578125,0.6826171875,0.673828125,0.634765625,0.5693359375,0.494140625,0.4287109375,0.3642578125,0.30078125,0.275390625,0.3125,0.4013671875,0.4990234375,0.5703125,0.619140625,0.6201171875,0.57421875,0.5126953125,0.4755859375,0.490234375,0.55078125,0.609375,0.6142578125,0.5625,0.48828125,0.4365234375,0.4404296875,0.5,0.5634765625,0.5927734375,0.5791015625,0.541015625,0.5087890625,0.5107421875,0.55078125,0.5888671875,0.568359375,0.490234375,0.38671875,0.30859375,0.2880859375,0.3251953125,0.384765625,0.466796875,0.5419921875,0.57421875,0.5537109375,0.501953125,0.4482421875,0.3994140625,0.3662109375,0.359375,0.380859375,0.4130859375,0.4326171875,0.4287109375,0.4169921875,0.396484375,0.37109375,0.3486328125,0.3330078125,0.326171875,0.3251953125,0.32421875,0.318359375,0.310546875,0.3056640625,0.3076171875,0.3154296875,0.3251953125,0.3427734375,0.3857421875,0.4580078125,0.541015625,0.61328125,0.65625,0.673828125,0.681640625,0.68359375,0.677734375,0.6689453125,0.6630859375,0.6650390625,0.673828125,0.68359375,0.69140625,0.689453125,0.263671875,0.259765625,0.3212890625,0.412109375,0.4892578125,0.5595703125,0.6220703125,0.6533203125,0.6455078125,0.611328125,0.5791015625,0.5693359375,0.5556640625,0.5048828125,0.4345703125,0.3837890625,0.380859375,0.4228515625,0.4892578125,0.5556640625,0.5986328125,0.595703125,0.5478515625,0.48046875,0.4306640625,0.419921875,0.4306640625,0.48046875,0.5478515625,0.595703125,0.5986328125,0.5556640625,0.4892578125,0.4296875,0.412109375,0.439453125,0.484375,0.5126953125,0.498046875,0.439453125,0.3837890625,0.380859375,0.431640625,0.5029296875,0.552734375,0.546875,0.4892578125,0.419921875,0.359375,0.3291015625,0.33984375,0.376953125,0.41015625,0.419921875,0.412109375,0.375,0.326171875,0.2998046875,0.3134765625,0.36328125,0.4296875,0.505859375,0.5986328125,0.6650390625,0.6689453125,0.6064453125,0.517578125,0.439453125,0.361328125,0.267578125,0.1982421875,0.1953125,0.2587890625,0.3505859375,0.4296875,0.4912109375,0.509765625,0.484375,0.4404296875,0.4130859375,0.4296875,0.4892578125,0.546875,0.55078125,0.5,0.4248046875,0.3720703125,0.3740234375,0.4296875,0.505859375,0.595703125,0.6591796875,0.6591796875,0.595703125,0.505859375,0.4296875,0.353515625,0.2626953125,0.19921875,0.2001953125,0.2666015625,0.3603515625,0.439453125,0.5126953125,0.58203125,0.625,0.6298828125,0.60546875,0.578125,0.5693359375,0.57421875,0.5986328125,0.62109375,0.6171875,0.576171875,0.5107421875,0.439453125,0.37109375,0.3173828125,0.2998046875,0.32421875,0.3720703125,0.41015625,0.419921875,0.423828125,0.4423828125,0.4775390625,0.517578125,0.55078125,0.5673828125,0.5693359375,0.5673828125,0.5654296875,0.5625,0.560546875,0.5595703125,0.5595703125,0.5595703125,0.548828125,0.5029296875,0.4404296875,0.3984375,0.400390625,0.4443359375,0.509765625,0.5849609375,0.6728515625,0.7314453125,0.7265625,0.658203125,0.56640625,0.4892578125,0.43359375,0.42578125,0.46875,0.53125,0.5712890625,0.5595703125,0.5,0.4404296875,0.4365234375,0.48828125,0.564453125,0.6181640625,0.6162109375,0.5595703125,0.4990234375,0.48046875,0.5048828125,0.5478515625,0.57421875,0.5576171875,0.5,0.4345703125,0.39453125,0.3984375,0.4462890625,0.5126953125,0.5595703125,0.5693359375,0.576171875,0.6064453125,0.6416015625,0.65234375,0.6220703125,0.560546875,0.4892578125,0.421875,0.3798828125,0.3857421875,0.4375,0.5087890625,0.55859375,0.5693359375,0.5673828125,0.56640625,0.5673828125,0.5703125,0.57421875,0.5771484375,0.5791015625,0.568359375,0.5107421875,0.4267578125,0.3583984375,0.3359375,0.3671875,0.4296875,0.48828125,0.5068359375,0.484375,0.4453125,0.421875,0.4404296875,0.5,0.576171875,0.66796875,0.7333984375,0.7353515625,0.6708984375,0.5791015625,0.5,0.419921875,0.328125,0.2646484375,0.2685546875,0.3369140625,0.4306640625,0.509765625,0.5791015625,0.6376953125,0.662109375,0.646484375,0.60546875,0.5693359375,0.5595703125,0.5576171875,0.55859375,0.5615234375,0.56640625,0.572265625,0.5771484375,0.5791015625,0.5810546875,0.5810546875,0.580078125,0.578125,0.5771484375,0.578125,0.5791015625,0.5869140625,0.611328125,0.630859375,0.623046875,0.5771484375,0.509765625,0.439453125,0.36328125,0.271484375,0.205078125,0.2041015625,0.2685546875,0.3603515625,0.439453125,0.5087890625,0.560546875,0.572265625,0.5419921875,0.48828125,0.4482421875,0.439453125,0.4443359375,0.4599609375,0.4873046875,0.517578125,0.54296875,0.556640625,0.5595703125,0.5595703125,0.5595703125,0.560546875,0.5625,0.5654296875,0.5673828125,0.5693359375,0.5791015625,0.6142578125,0.6533203125,0.666015625,0.638671875,0.5791015625,0.509765625,0.44921875,0.4296875,0.4521484375,0.4921875,0.515625,0.498046875,0.439453125,0.365234375,0.28125,0.228515625,0.2421875,0.31640625,0.412109375,0.4892578125,0.5546875,0.5986328125,0.6005859375,0.55859375,0.49609375,0.4501953125,0.439453125,0.4404296875,0.4404296875,0.4423828125,0.4423828125,0.4423828125,0.44140625,0.439453125,0.4296875,0.396484375,0.359375,0.3486328125,0.37890625,0.439453125,0.509765625,0.5849609375,0.666015625,0.7119140625,0.6875,0.6025390625,0.5,0.419921875,0.36328125,0.361328125,0.416015625,0.4931640625,0.5478515625,0.5458984375,0.4892578125,0.4130859375,0.330078125,0.2802734375,0.298828125,0.37890625,0.4794921875,0.5595703125,0.6240234375,0.66015625,0.6455078125,0.5830078125,0.5048828125,0.4501953125,0.439453125,0.4541015625,0.5107421875,0.58984375,0.650390625,0.662109375,0.625,0.5595703125,0.5,0.484375,0.513671875,0.560546875,0.5888671875,0.5703125,0.509765625,0.4384765625,0.3779296875,0.3505859375,0.36328125,0.4013671875,0.4326171875,0.439453125,0.4404296875,0.4541015625,0.48046875,0.5126953125,0.541015625,0.556640625,0.5595703125,0.56640625,0.5908203125,0.61328125,0.6064453125,0.5625,0.4931640625,0.419921875,0.341796875,0.255859375,0.205078125,0.2236328125,0.3056640625,0.408203125,0.4892578125,0.5673828125,0.65234375,0.7021484375,0.6826171875,0.6005859375,0.5,0.419921875,0.3525390625,0.3037109375,0.294921875,0.330078125,0.38671875,0.4296875,0.439453125,0.443359375,0.4609375,0.4931640625,0.53125,0.5615234375,0.5771484375,0.5791015625,0.5771484375,0.576171875,0.576171875,0.5771484375,0.578125,0.5791015625,0.5791015625,0.5859375,0.609375,0.630859375,0.623046875,0.5791015625,0.5107421875,0.439453125,0.3642578125,0.287109375,0.2490234375,0.2802734375,0.3720703125,0.478515625,0.5595703125,0.6162109375,0.6201171875,0.568359375,0.4951171875,0.4453125,0.4501953125,0.509765625,0.5693359375,0.578125,0.5361328125,0.47265625,0.4306640625,0.4404296875,0.5,0.5595703125,0.57421875,0.5380859375,0.4814453125,0.443359375,0.453125,0.509765625,0.564453125,0.5634765625,0.505859375,0.423828125,0.365234375,0.365234375,0.419921875,0.4970703125,0.595703125,0.6748046875,0.693359375,0.6455078125,0.5634765625,0.4892578125,0.421875,0.3671875,0.3447265625,0.361328125,0.400390625,0.4326171875,0.439453125,0.4375,0.43359375,0.4296875,0.4248046875,0.421875,0.419921875,0.419921875,0.419921875,0.4189453125,0.4169921875,0.4169921875,0.4169921875,0.41796875,0.419921875,0.4248046875,0.4443359375,0.4794921875,0.51953125,0.5546875,0.57421875,0.5791015625,0.5810546875,0.5810546875,0.580078125,0.578125,0.5771484375,0.578125,0.5791015625,0.5810546875,0.58203125,0.5810546875,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.26171875,0.255859375,0.318359375,0.41015625,0.4892578125,0.5576171875,0.6015625,0.599609375,0.55078125,0.4814453125,0.431640625,0.419921875,0.412109375,0.3818359375,0.3505859375,0.34375,0.376953125,0.439453125,0.509765625,0.5791015625,0.638671875,0.6669921875,0.65625,0.6201171875,0.5869140625,0.5791015625,0.5869140625,0.6201171875,0.65625,0.6669921875,0.638671875,0.5791015625,0.509765625,0.453125,0.451171875,0.505859375,0.5830078125,0.6376953125,0.6357421875,0.5791015625,0.51953125,0.5,0.5244140625,0.564453125,0.5888671875,0.5693359375,0.509765625,0.4423828125,0.396484375,0.392578125,0.435546875,0.4990234375,0.546875,0.5595703125,0.55078125,0.51171875,0.4609375,0.4326171875,0.447265625,0.5,0.5693359375,0.6484375,0.740234375,0.8037109375,0.80078125,0.7314453125,0.6376953125,0.5595703125,0.4814453125,0.392578125,0.330078125,0.333984375,0.400390625,0.4931640625,0.5693359375,0.625,0.626953125,0.57421875,0.4990234375,0.4482421875,0.4521484375,0.509765625,0.5693359375,0.5888671875,0.564453125,0.5244140625,0.5,0.51953125,0.5791015625,0.6572265625,0.75,0.81640625,0.8173828125,0.751953125,0.6591796875,0.5791015625,0.5,0.4052734375,0.3359375,0.33203125,0.3935546875,0.4833984375,0.5595703125,0.6220703125,0.654296875,0.634765625,0.568359375,0.486328125,0.4306640625,0.419921875,0.4345703125,0.494140625,0.5791015625,0.6455078125,0.662109375,0.6259765625,0.5595703125,0.490234375,0.4384765625,0.4287109375,0.4638671875,0.521484375,0.5673828125,0.5791015625,0.5771484375,0.5615234375,0.53125,0.4931640625,0.4609375,0.443359375,0.439453125,0.439453125,0.4384765625,0.4345703125,0.4306640625,0.42578125,0.421875,0.419921875,0.4111328125,0.380859375,0.349609375,0.3447265625,0.37890625,0.4404296875,0.509765625,0.5849609375,0.6728515625,0.7314453125,0.7265625,0.658203125,0.56640625,0.4892578125,0.4326171875,0.4248046875,0.4677734375,0.53125,0.57421875,0.56640625,0.509765625,0.451171875,0.431640625,0.4521484375,0.48828125,0.505859375,0.482421875,0.419921875,0.3623046875,0.3603515625,0.4189453125,0.5009765625,0.55859375,0.5576171875,0.5,0.427734375,0.3642578125,0.33203125,0.3408203125,0.376953125,0.41015625,0.419921875,0.43359375,0.486328125,0.55859375,0.611328125,0.6171875,0.576171875,0.509765625,0.439453125,0.3779296875,0.3466796875,0.353515625,0.384765625,0.4140625,0.419921875,0.41796875,0.4169921875,0.4169921875,0.4169921875,0.4189453125,0.419921875,0.419921875,0.4130859375,0.3916015625,0.373046875,0.384765625,0.43359375,0.505859375,0.5791015625,0.63671875,0.638671875,0.580078125,0.498046875,0.4404296875,0.44140625,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2578125,0.255859375,0.3203125,0.412109375,0.4892578125,0.556640625,0.6015625,0.603515625,0.560546875,0.4970703125,0.4501953125,0.439453125,0.439453125,0.4365234375,0.4326171875,0.4267578125,0.4228515625,0.419921875,0.419921875,0.419921875,0.419921875,0.4208984375,0.4228515625,0.42578125,0.427734375,0.4296875,0.4443359375,0.5048828125,0.5908203125,0.6591796875,0.677734375,0.64453125,0.5791015625,0.5009765625,0.408203125,0.33984375,0.3349609375,0.3955078125,0.4833984375,0.5595703125,0.6259765625,0.6767578125,0.6904296875,0.6630859375,0.611328125,0.5703125,0.5595703125,0.5546875,0.5390625,0.51171875,0.4814453125,0.4560546875,0.4423828125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.4501953125,0.498046875,0.5615234375,0.6064453125,0.607421875,0.564453125,0.5,0.4443359375,0.44140625,0.4921875,0.56640625,0.6181640625,0.615234375,0.5595703125,0.4814453125,0.3818359375,0.3017578125,0.2822265625,0.3310546875,0.4130859375,0.4892578125,0.5595703125,0.619140625,0.6484375,0.6396484375,0.60546875,0.5751953125,0.5693359375,0.5703125,0.5712890625,0.5703125,0.568359375,0.5673828125,0.568359375,0.5693359375,0.5595703125,0.5126953125,0.4462890625,0.3984375,0.39453125,0.4345703125,0.5,0.5771484375,0.6748046875,0.7529296875,0.76953125,0.7197265625,0.6357421875,0.5595703125,0.4990234375,0.4794921875,0.501953125,0.5419921875,0.5654296875,0.5478515625,0.4892578125,0.412109375,0.3125,0.232421875,0.212890625,0.26171875,0.34375,0.419921875,0.4912109375,0.5595703125,0.603515625,0.6103515625,0.58984375,0.5654296875,0.5595703125,0.56640625,0.5908203125,0.615234375,0.61328125,0.5732421875,0.5087890625,0.439453125,0.384765625,0.3837890625,0.4384765625,0.515625,0.5693359375,0.56640625,0.509765625,0.443359375,0.400390625,0.4033203125,0.451171875,0.5185546875,0.568359375,0.5791015625,0.5751953125,0.556640625,0.5205078125,0.478515625,0.4423828125,0.423828125,0.419921875,0.43359375,0.4931640625,0.580078125,0.6494140625,0.669921875,0.6357421875,0.5693359375,0.48828125,0.3876953125,0.3095703125,0.2939453125,0.3466796875,0.4326171875,0.509765625,0.5888671875,0.689453125,0.7705078125,0.7880859375,0.7392578125,0.6552734375,0.5791015625,0.5107421875,0.4560546875,0.4375,0.4609375,0.5087890625,0.548828125,0.5595703125,0.5576171875,0.5419921875,0.5107421875,0.4736328125,0.44140625,0.4228515625,0.419921875,0.419921875,0.421875,0.4248046875,0.4296875,0.43359375,0.4375,0.439453125,0.4541015625,0.51171875,0.591796875,0.6533203125,0.6650390625,0.626953125,0.5595703125,0.4765625,0.3662109375,0.271484375,0.2373046875,0.2744140625,0.3525390625,0.4296875,0.4912109375,0.509765625,0.484375,0.4404296875,0.4130859375,0.4296875,0.4892578125,0.548828125,0.5615234375,0.525390625,0.4697265625,0.431640625,0.4423828125,0.5,0.5556640625,0.5625,0.51953125,0.4580078125,0.41796875,0.4296875,0.4892578125,0.55078125,0.5712890625,0.5478515625,0.5068359375,0.4814453125,0.5,0.5595703125,0.6357421875,0.7177734375,0.7666015625,0.7470703125,0.6669921875,0.5673828125,0.4892578125,0.4248046875,0.3857421875,0.3935546875,0.4462890625,0.5166015625,0.5673828125,0.5791015625,0.5791015625,0.5771484375,0.57421875,0.5693359375,0.5654296875,0.5615234375,0.5595703125,0.55859375,0.5595703125,0.5634765625,0.5693359375,0.5751953125,0.578125,0.5791015625,0.576171875,0.55859375,0.5263671875,0.48828125,0.4541015625,0.4345703125,0.4296875,0.427734375,0.4267578125,0.42578125,0.423828125,0.4228515625,0.421875,0.419921875,0.41796875,0.4169921875,0.4169921875,0.2724609375,0.2451171875,0.2890625,0.3701171875,0.4482421875,0.5146484375,0.552734375,0.5380859375,0.4755859375,0.39453125,0.3388671875,0.3251953125,0.322265625,0.314453125,0.318359375,0.3525390625,0.4140625,0.486328125,0.55078125,0.61328125,0.673828125,0.7119140625,0.71875,0.7001953125,0.6787109375,0.673828125,0.6787109375,0.7001953125,0.71875,0.7119140625,0.673828125,0.61328125,0.55078125,0.5029296875,0.5087890625,0.5703125,0.654296875,0.7158203125,0.7216796875,0.673828125,0.619140625,0.595703125,0.6025390625,0.6220703125,0.62890625,0.60546875,0.55078125,0.490234375,0.4423828125,0.4267578125,0.453125,0.505859375,0.55078125,0.5703125,0.5712890625,0.5439453125,0.50390625,0.482421875,0.5,0.5517578125,0.6220703125,0.69921875,0.7802734375,0.828125,0.8095703125,0.7333984375,0.640625,0.5703125,0.5048828125,0.4365234375,0.3984375,0.4169921875,0.4833984375,0.5625,0.6220703125,0.6611328125,0.654296875,0.6025390625,0.5361328125,0.4931640625,0.5,0.55078125,0.60546875,0.62890625,0.6220703125,0.6025390625,0.595703125,0.619140625,0.673828125,0.7431640625,0.8291015625,0.89453125,0.8984375,0.83984375,0.751953125,0.673828125,0.59375,0.5,0.4248046875,0.40625,0.4462890625,0.5126953125,0.5703125,0.6123046875,0.6142578125,0.5615234375,0.470703125,0.3798828125,0.328125,0.3251953125,0.3515625,0.4306640625,0.5400390625,0.630859375,0.6640625,0.6357421875,0.5703125,0.5009765625,0.455078125,0.45703125,0.5107421875,0.5888671875,0.6513671875,0.673828125,0.677734375,0.6552734375,0.603515625,0.5341796875,0.4716796875,0.4365234375,0.4287109375,0.427734375,0.421875,0.40625,0.3828125,0.3583984375,0.337890625,0.3251953125,0.3134765625,0.3037109375,0.314453125,0.3564453125,0.423828125,0.4951171875,0.55078125,0.60546875,0.66015625,0.6845703125,0.6572265625,0.5859375,0.5068359375,0.4482421875,0.408203125,0.4130859375,0.4638671875,0.53515625,0.5859375,0.5908203125,0.55078125,0.505859375,0.4833984375,0.4775390625,0.4697265625,0.443359375,0.3935546875,0.3251953125,0.26953125,0.2802734375,0.359375,0.4658203125,0.544921875,0.5556640625,0.5,0.423828125,0.3447265625,0.28515625,0.2646484375,0.28125,0.3095703125,0.3251953125,0.349609375,0.419921875,0.5185546875,0.599609375,0.630859375,0.607421875,0.55078125,0.4873046875,0.421875,0.3671875,0.337890625,0.33203125,0.33203125,0.3251953125,0.3154296875,0.3076171875,0.3056640625,0.310546875,0.318359375,0.32421875,0.3251953125,0.32421875,0.32421875,0.3486328125,0.41015625,0.5009765625,0.595703125,0.673828125,0.7294921875,0.71875,0.6396484375,0.533203125,0.4541015625,0.443359375,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2548828125,0.24609375,0.298828125,0.37890625,0.4482421875,0.5068359375,0.5498046875,0.556640625,0.525390625,0.4755859375,0.4375,0.4287109375,0.4267578125,0.4140625,0.390625,0.36328125,0.3408203125,0.328125,0.3251953125,0.3251953125,0.3251953125,0.3291015625,0.3388671875,0.3525390625,0.3662109375,0.376953125,0.4033203125,0.482421875,0.595703125,0.6953125,0.7421875,0.7275390625,0.673828125,0.6044921875,0.517578125,0.4443359375,0.421875,0.4541015625,0.5146484375,0.5703125,0.62109375,0.6640625,0.681640625,0.6640625,0.6240234375,0.5869140625,0.5703125,0.556640625,0.5322265625,0.4990234375,0.4658203125,0.4423828125,0.4306640625,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4375,0.4755859375,0.529296875,0.5703125,0.576171875,0.5478515625,0.5,0.458984375,0.4599609375,0.50390625,0.5654296875,0.6103515625,0.611328125,0.5703125,0.5087890625,0.4208984375,0.3388671875,0.3017578125,0.32421875,0.3837890625,0.4482421875,0.509765625,0.5703125,0.6123046875,0.6279296875,0.623046875,0.6162109375,0.6220703125,0.6298828125,0.6318359375,0.6259765625,0.6171875,0.611328125,0.61328125,0.6220703125,0.6220703125,0.5849609375,0.521484375,0.4638671875,0.4375,0.4541015625,0.5,0.5595703125,0.640625,0.7119140625,0.734375,0.701171875,0.634765625,0.5703125,0.5146484375,0.484375,0.484375,0.4990234375,0.5078125,0.4921875,0.4482421875,0.38671875,0.298828125,0.216796875,0.1796875,0.2021484375,0.26171875,0.3251953125,0.390625,0.4658203125,0.53125,0.5703125,0.5791015625,0.5732421875,0.5703125,0.57421875,0.5859375,0.5927734375,0.5771484375,0.5361328125,0.4814453125,0.4287109375,0.390625,0.404296875,0.4677734375,0.5478515625,0.6015625,0.6005859375,0.55078125,0.494140625,0.46484375,0.48046875,0.5380859375,0.611328125,0.662109375,0.673828125,0.6650390625,0.623046875,0.5458984375,0.453125,0.3759765625,0.333984375,0.3251953125,0.3427734375,0.419921875,0.5400390625,0.6484375,0.701171875,0.6845703125,0.6220703125,0.5419921875,0.4453125,0.3701171875,0.3564453125,0.4052734375,0.4833984375,0.55078125,0.6220703125,0.7177734375,0.8017578125,0.833984375,0.8046875,0.73828125,0.673828125,0.609375,0.546875,0.50390625,0.4990234375,0.5234375,0.5537109375,0.5703125,0.57421875,0.552734375,0.5,0.4306640625,0.3681640625,0.3330078125,0.3251953125,0.326171875,0.3330078125,0.3486328125,0.37109375,0.396484375,0.4169921875,0.4287109375,0.4521484375,0.5185546875,0.60546875,0.6689453125,0.6796875,0.6376953125,0.5703125,0.4853515625,0.3681640625,0.2587890625,0.2080078125,0.2314453125,0.3017578125,0.376953125,0.4404296875,0.4658203125,0.44921875,0.4111328125,0.384765625,0.396484375,0.4482421875,0.501953125,0.5234375,0.5078125,0.474609375,0.44921875,0.45703125,0.5,0.5380859375,0.52734375,0.4716796875,0.40625,0.3701171875,0.38671875,0.4482421875,0.51171875,0.5439453125,0.5380859375,0.5146484375,0.5,0.517578125,0.5703125,0.6337890625,0.693359375,0.7158203125,0.6787109375,0.5966796875,0.5087890625,0.4482421875,0.4033203125,0.3935546875,0.4345703125,0.515625,0.6044921875,0.6611328125,0.673828125,0.6728515625,0.666015625,0.650390625,0.6279296875,0.6025390625,0.58203125,0.5703125,0.5625,0.5673828125,0.5888671875,0.6201171875,0.6513671875,0.669921875,0.673828125,0.66796875,0.6376953125,0.580078125,0.505859375,0.4375,0.39453125,0.376953125,0.3671875,0.359375,0.353515625,0.3486328125,0.34375,0.3359375,0.3251953125,0.3154296875,0.3076171875,0.3056640625,0.287109375,0.2314453125,0.2509765625,0.3193359375,0.39453125,0.4609375,0.4970703125,0.48046875,0.4140625,0.330078125,0.2724609375,0.2587890625,0.2607421875,0.2763671875,0.3193359375,0.3916015625,0.4775390625,0.552734375,0.6044921875,0.65234375,0.701171875,0.740234375,0.7568359375,0.7529296875,0.7431640625,0.740234375,0.7431640625,0.7529296875,0.7568359375,0.740234375,0.701171875,0.65234375,0.6044921875,0.5703125,0.580078125,0.6357421875,0.708984375,0.7646484375,0.7744140625,0.740234375,0.69921875,0.67578125,0.6708984375,0.673828125,0.6689453125,0.6455078125,0.6044921875,0.5546875,0.4970703125,0.453125,0.44140625,0.462890625,0.5,0.5302734375,0.5478515625,0.5380859375,0.513671875,0.5,0.5166015625,0.56640625,0.634765625,0.708984375,0.7744140625,0.7978515625,0.7587890625,0.673828125,0.5859375,0.5302734375,0.4853515625,0.4541015625,0.455078125,0.494140625,0.5546875,0.607421875,0.634765625,0.646484375,0.6298828125,0.5927734375,0.5576171875,0.5458984375,0.5634765625,0.6044921875,0.6455078125,0.6689453125,0.673828125,0.6708984375,0.67578125,0.69921875,0.740234375,0.7939453125,0.869140625,0.9306640625,0.9423828125,0.89453125,0.81640625,0.740234375,0.6630859375,0.57421875,0.5,0.4658203125,0.4765625,0.505859375,0.5302734375,0.5380859375,0.50390625,0.427734375,0.3369140625,0.2666015625,0.2421875,0.2587890625,0.30078125,0.39453125,0.513671875,0.6044921875,0.6318359375,0.5966796875,0.5302734375,0.4609375,0.4189453125,0.4326171875,0.5078125,0.61328125,0.69921875,0.740234375,0.759765625,0.74609375,0.6904296875,0.607421875,0.52734375,0.4794921875,0.46875,0.4677734375,0.4580078125,0.4306640625,0.3857421875,0.333984375,0.2890625,0.2587890625,0.23828125,0.25,0.30859375,0.4033203125,0.5029296875,0.57421875,0.6044921875,0.62109375,0.6201171875,0.5908203125,0.53515625,0.470703125,0.419921875,0.39453125,0.3837890625,0.40625,0.4638671875,0.53515625,0.5927734375,0.615234375,0.6044921875,0.587890625,0.57421875,0.546875,0.494140625,0.41796875,0.333984375,0.2587890625,0.205078125,0.2236328125,0.3173828125,0.44140625,0.53515625,0.5537109375,0.5,0.4208984375,0.3232421875,0.2373046875,0.1923828125,0.197265625,0.228515625,0.2587890625,0.298828125,0.38671875,0.501953125,0.6015625,0.650390625,0.64453125,0.6044921875,0.5556640625,0.49609375,0.4306640625,0.369140625,0.3212890625,0.2861328125,0.2587890625,0.2333984375,0.2138671875,0.208984375,0.220703125,0.240234375,0.2548828125,0.2587890625,0.259765625,0.27734375,0.3310546875,0.427734375,0.5478515625,0.6591796875,0.740234375,0.7939453125,0.775390625,0.681640625,0.5576171875,0.4638671875,0.4453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4208984375,0.3291015625,0.2587890625,0.2421875,0.2802734375,0.3427734375,0.39453125,0.4404296875,0.482421875,0.5078125,0.5078125,0.4912109375,0.4736328125,0.46875,0.4638671875,0.4384765625,0.3916015625,0.3359375,0.2890625,0.263671875,0.2587890625,0.2578125,0.2548828125,0.2587890625,0.275390625,0.3037109375,0.3359375,0.3642578125,0.404296875,0.49609375,0.619140625,0.7255859375,0.7822265625,0.779296875,0.740234375,0.6884765625,0.619140625,0.5498046875,0.5048828125,0.4951171875,0.509765625,0.5302734375,0.5517578125,0.5810546875,0.6044921875,0.607421875,0.5888671875,0.55859375,0.5302734375,0.5029296875,0.4765625,0.4580078125,0.453125,0.458984375,0.466796875,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.47265625,0.4873046875,0.5078125,0.5244140625,0.52734375,0.517578125,0.5,0.484375,0.4853515625,0.5029296875,0.5263671875,0.5439453125,0.544921875,0.5302734375,0.501953125,0.4453125,0.3779296875,0.3310546875,0.3232421875,0.3505859375,0.39453125,0.4404296875,0.4873046875,0.5302734375,0.5634765625,0.587890625,0.6103515625,0.634765625,0.6572265625,0.6611328125,0.646484375,0.6240234375,0.609375,0.61328125,0.634765625,0.6552734375,0.646484375,0.607421875,0.5517578125,0.505859375,0.48828125,0.5,0.525390625,0.5693359375,0.61328125,0.6318359375,0.6162109375,0.576171875,0.5302734375,0.4853515625,0.4462890625,0.421875,0.4140625,0.4140625,0.41015625,0.39453125,0.3662109375,0.3095703125,0.2421875,0.1953125,0.1875,0.2158203125,0.2587890625,0.3095703125,0.375,0.4443359375,0.4970703125,0.5234375,0.5302734375,0.5302734375,0.53125,0.53515625,0.53515625,0.52734375,0.509765625,0.4892578125,0.46875,0.4599609375,0.4892578125,0.5498046875,0.6123046875,0.6484375,0.642578125,0.6044921875,0.5634765625,0.546875,0.568359375,0.6240234375,0.6875,0.73046875,0.740234375,0.728515625,0.6708984375,0.5634765625,0.435546875,0.328125,0.2705078125,0.2587890625,0.27734375,0.365234375,0.501953125,0.6318359375,0.703125,0.6962890625,0.634765625,0.55859375,0.4755859375,0.421875,0.4248046875,0.48046875,0.55078125,0.6044921875,0.658203125,0.734375,0.806640625,0.8427734375,0.830078125,0.787109375,0.740234375,0.6875,0.61328125,0.5380859375,0.4912109375,0.482421875,0.5029296875,0.5302734375,0.548828125,0.53515625,0.48046875,0.3974609375,0.3173828125,0.2685546875,0.2587890625,0.259765625,0.2705078125,0.2978515625,0.341796875,0.3935546875,0.4384765625,0.46875,0.505859375,0.57421875,0.646484375,0.681640625,0.662109375,0.6015625,0.5302734375,0.4462890625,0.33203125,0.228515625,0.1845703125,0.2138671875,0.2880859375,0.3642578125,0.4287109375,0.4580078125,0.4443359375,0.40234375,0.3642578125,0.359375,0.39453125,0.4384765625,0.4736328125,0.4912109375,0.4912109375,0.484375,0.4853515625,0.5,0.505859375,0.46484375,0.3916015625,0.3251953125,0.30078125,0.330078125,0.39453125,0.4609375,0.50390625,0.513671875,0.5,0.484375,0.4921875,0.5302734375,0.5732421875,0.6015625,0.59375,0.546875,0.478515625,0.421875,0.39453125,0.3837890625,0.412109375,0.4853515625,0.5849609375,0.6767578125,0.7294921875,0.740234375,0.7392578125,0.728515625,0.701171875,0.6572265625,0.60546875,0.560546875,0.5302734375,0.5087890625,0.515625,0.5576171875,0.6240234375,0.6904296875,0.7314453125,0.740234375,0.7353515625,0.705078125,0.640625,0.5517578125,0.4638671875,0.3984375,0.3642578125,0.33984375,0.3232421875,0.314453125,0.30859375,0.2998046875,0.283203125,0.2587890625,0.2333984375,0.2138671875,0.208984375,0.294921875,0.2236328125,0.2294921875,0.291015625,0.3642578125,0.431640625,0.470703125,0.4609375,0.40234375,0.326171875,0.271484375,0.2587890625,0.263671875,0.2939453125,0.3583984375,0.447265625,0.53515625,0.6005859375,0.634765625,0.6630859375,0.6953125,0.7236328125,0.740234375,0.744140625,0.7412109375,0.740234375,0.7412109375,0.744140625,0.740234375,0.7236328125,0.6953125,0.6630859375,0.634765625,0.615234375,0.6240234375,0.662109375,0.712890625,0.7509765625,0.759765625,0.740234375,0.7158203125,0.69921875,0.6904296875,0.6845703125,0.67578125,0.6591796875,0.634765625,0.599609375,0.533203125,0.4580078125,0.40625,0.396484375,0.4248046875,0.46875,0.5068359375,0.5146484375,0.5,0.4853515625,0.4951171875,0.5380859375,0.6044921875,0.6748046875,0.7265625,0.728515625,0.673828125,0.5849609375,0.5078125,0.46875,0.44921875,0.45703125,0.4970703125,0.5517578125,0.5986328125,0.6162109375,0.6044921875,0.5830078125,0.5576171875,0.541015625,0.5458984375,0.572265625,0.6064453125,0.634765625,0.6591796875,0.67578125,0.6845703125,0.6904296875,0.69921875,0.7158203125,0.740234375,0.775390625,0.8369140625,0.89453125,0.9140625,0.880859375,0.8134765625,0.740234375,0.6669921875,0.5927734375,0.533203125,0.5,0.4892578125,0.484375,0.46875,0.439453125,0.3740234375,0.2900390625,0.22265625,0.1982421875,0.216796875,0.2587890625,0.318359375,0.41796875,0.52734375,0.59375,0.59375,0.5400390625,0.46875,0.3994140625,0.353515625,0.3671875,0.44921875,0.572265625,0.6796875,0.740234375,0.779296875,0.787109375,0.748046875,0.673828125,0.5927734375,0.541015625,0.5302734375,0.5302734375,0.5234375,0.4970703125,0.4443359375,0.375,0.3095703125,0.2587890625,0.2265625,0.25,0.33984375,0.4658203125,0.580078125,0.638671875,0.634765625,0.607421875,0.5498046875,0.4716796875,0.400390625,0.357421875,0.349609375,0.3642578125,0.3857421875,0.421875,0.4716796875,0.52734375,0.5771484375,0.61328125,0.634765625,0.654296875,0.6640625,0.6376953125,0.560546875,0.44921875,0.33984375,0.2587890625,0.205078125,0.2236328125,0.3173828125,0.44140625,0.53515625,0.5537109375,0.5,0.41796875,0.3095703125,0.208984375,0.15625,0.1650390625,0.2109375,0.2587890625,0.3154296875,0.4091796875,0.521484375,0.61328125,0.658203125,0.658203125,0.634765625,0.6064453125,0.568359375,0.513671875,0.4443359375,0.3720703125,0.30859375,0.2587890625,0.21484375,0.181640625,0.1728515625,0.1923828125,0.2265625,0.2529296875,0.2587890625,0.259765625,0.27734375,0.3310546875,0.427734375,0.5478515625,0.6591796875,0.740234375,0.7939453125,0.775390625,0.681640625,0.5576171875,0.4638671875,0.4453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4228515625,0.3388671875,0.275390625,0.2587890625,0.287109375,0.33203125,0.3642578125,0.3935546875,0.4326171875,0.474609375,0.5078125,0.5244140625,0.529296875,0.5302734375,0.5234375,0.490234375,0.4306640625,0.3583984375,0.2978515625,0.265625,0.2587890625,0.255859375,0.24609375,0.2421875,0.2587890625,0.2978515625,0.3466796875,0.39453125,0.4501953125,0.541015625,0.6455078125,0.7294921875,0.767578125,0.763671875,0.740234375,0.7109375,0.669921875,0.6181640625,0.56640625,0.521484375,0.490234375,0.46875,0.45703125,0.4697265625,0.5,0.52734375,0.533203125,0.5107421875,0.46875,0.4267578125,0.400390625,0.40625,0.44140625,0.48828125,0.5224609375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5263671875,0.51171875,0.4912109375,0.474609375,0.4716796875,0.4814453125,0.5,0.5146484375,0.513671875,0.49609375,0.47265625,0.455078125,0.4541015625,0.46875,0.4814453125,0.466796875,0.427734375,0.380859375,0.34765625,0.34375,0.3642578125,0.388671875,0.4111328125,0.435546875,0.46875,0.51171875,0.55859375,0.6044921875,0.642578125,0.6494140625,0.6240234375,0.5849609375,0.5595703125,0.56640625,0.6044921875,0.6484375,0.6806640625,0.6796875,0.640625,0.580078125,0.5263671875,0.5,0.484375,0.4814453125,0.4912109375,0.501953125,0.5048828125,0.4931640625,0.46875,0.4384765625,0.3955078125,0.3525390625,0.328125,0.328125,0.3447265625,0.3642578125,0.3759765625,0.3623046875,0.322265625,0.275390625,0.2431640625,0.23828125,0.2587890625,0.2890625,0.333984375,0.3857421875,0.4306640625,0.4580078125,0.4677734375,0.46875,0.4677734375,0.4638671875,0.4638671875,0.4716796875,0.4892578125,0.509765625,0.5302734375,0.5546875,0.5966796875,0.642578125,0.673828125,0.6787109375,0.6611328125,0.634765625,0.611328125,0.60546875,0.6240234375,0.6630859375,0.7060546875,0.734375,0.740234375,0.728515625,0.6708984375,0.5634765625,0.435546875,0.328125,0.2705078125,0.2587890625,0.27734375,0.3603515625,0.4912109375,0.61328125,0.6767578125,0.666015625,0.6044921875,0.5322265625,0.4677734375,0.44140625,0.46875,0.5341796875,0.5986328125,0.634765625,0.6669921875,0.7138671875,0.76171875,0.7900390625,0.7890625,0.7666015625,0.740234375,0.7021484375,0.623046875,0.5244140625,0.4443359375,0.412109375,0.427734375,0.46875,0.5087890625,0.515625,0.4775390625,0.40234375,0.322265625,0.2705078125,0.2587890625,0.2587890625,0.265625,0.2919921875,0.3447265625,0.4130859375,0.4794921875,0.5302734375,0.58203125,0.650390625,0.6982421875,0.693359375,0.6328125,0.546875,0.46875,0.3876953125,0.2841796875,0.201171875,0.181640625,0.2314453125,0.31640625,0.39453125,0.4599609375,0.4931640625,0.48046875,0.4306640625,0.375,0.3486328125,0.3642578125,0.3955078125,0.4423828125,0.4912109375,0.5244140625,0.53125,0.5185546875,0.5,0.4677734375,0.3955078125,0.30859375,0.2509765625,0.248046875,0.294921875,0.3642578125,0.4326171875,0.482421875,0.5,0.4853515625,0.4609375,0.451171875,0.46875,0.490234375,0.4853515625,0.4521484375,0.4052734375,0.3662109375,0.3515625,0.3642578125,0.3916015625,0.451171875,0.5380859375,0.6298828125,0.69921875,0.734375,0.740234375,0.740234375,0.7333984375,0.70703125,0.654296875,0.5859375,0.51953125,0.46875,0.431640625,0.4306640625,0.4833984375,0.57421875,0.66796875,0.7275390625,0.740234375,0.73828125,0.72265625,0.6796875,0.607421875,0.521484375,0.4462890625,0.39453125,0.353515625,0.330078125,0.3251953125,0.328125,0.3232421875,0.2998046875,0.2587890625,0.21484375,0.181640625,0.1728515625,0.291015625,0.2265625,0.2392578125,0.3037109375,0.376953125,0.4462890625,0.4921875,0.494140625,0.4501953125,0.384765625,0.3369140625,0.3251953125,0.3310546875,0.361328125,0.4189453125,0.4931640625,0.5615234375,0.6044921875,0.6220703125,0.6328125,0.646484375,0.66015625,0.669921875,0.673828125,0.673828125,0.673828125,0.673828125,0.673828125,0.669921875,0.66015625,0.646484375,0.6328125,0.6220703125,0.6142578125,0.619140625,0.63671875,0.6591796875,0.67578125,0.6806640625,0.673828125,0.6630859375,0.6552734375,0.650390625,0.6455078125,0.6396484375,0.6318359375,0.6220703125,0.5986328125,0.5322265625,0.44140625,0.369140625,0.3447265625,0.3720703125,0.4287109375,0.4814453125,0.5,0.484375,0.4609375,0.455078125,0.4873046875,0.55078125,0.619140625,0.6630859375,0.6572265625,0.5986328125,0.515625,0.4521484375,0.4287109375,0.4287109375,0.4658203125,0.529296875,0.5869140625,0.61328125,0.5966796875,0.55078125,0.501953125,0.466796875,0.4658203125,0.501953125,0.556640625,0.6025390625,0.6220703125,0.6318359375,0.6396484375,0.6455078125,0.650390625,0.6552734375,0.6630859375,0.673828125,0.693359375,0.7431640625,0.7978515625,0.82421875,0.802734375,0.744140625,0.673828125,0.60546875,0.552734375,0.5224609375,0.509765625,0.5,0.474609375,0.4287109375,0.3681640625,0.283203125,0.205078125,0.1728515625,0.19921875,0.26171875,0.3251953125,0.3974609375,0.4970703125,0.5849609375,0.6162109375,0.580078125,0.5048828125,0.4287109375,0.3564453125,0.2978515625,0.2939453125,0.3623046875,0.4814453125,0.59765625,0.673828125,0.73046875,0.7626953125,0.7509765625,0.6982421875,0.62890625,0.5810546875,0.5703125,0.5732421875,0.5791015625,0.5703125,0.53125,0.4658203125,0.390625,0.3251953125,0.2802734375,0.30078125,0.3935546875,0.51953125,0.62109375,0.65625,0.6220703125,0.5595703125,0.462890625,0.361328125,0.2958984375,0.2890625,0.326171875,0.376953125,0.42578125,0.462890625,0.4892578125,0.509765625,0.5361328125,0.5732421875,0.6220703125,0.6748046875,0.7177734375,0.7138671875,0.64453125,0.52734375,0.4091796875,0.3251953125,0.26953125,0.2802734375,0.359375,0.4658203125,0.544921875,0.5556640625,0.5,0.4169921875,0.3076171875,0.2099609375,0.1689453125,0.1943359375,0.259765625,0.3251953125,0.3935546875,0.48046875,0.5654296875,0.6220703125,0.640625,0.6337890625,0.6220703125,0.61328125,0.60546875,0.5830078125,0.53515625,0.4658203125,0.390625,0.3251953125,0.265625,0.220703125,0.2099609375,0.2353515625,0.28125,0.3173828125,0.3251953125,0.32421875,0.32421875,0.3486328125,0.41015625,0.5009765625,0.595703125,0.673828125,0.7294921875,0.71875,0.6396484375,0.533203125,0.4541015625,0.443359375,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.42578125,0.3525390625,0.3037109375,0.2978515625,0.3251953125,0.3603515625,0.376953125,0.3916015625,0.4228515625,0.4677734375,0.5146484375,0.5498046875,0.5673828125,0.5703125,0.564453125,0.5341796875,0.48046875,0.416015625,0.361328125,0.3310546875,0.3251953125,0.3203125,0.298828125,0.2802734375,0.287109375,0.3251953125,0.3857421875,0.4482421875,0.5146484375,0.5927734375,0.662109375,0.7001953125,0.7021484375,0.6865234375,0.673828125,0.6650390625,0.6572265625,0.638671875,0.599609375,0.5439453125,0.482421875,0.4287109375,0.3876953125,0.38671875,0.4228515625,0.4697265625,0.4970703125,0.4814453125,0.4287109375,0.373046875,0.3447265625,0.365234375,0.4287109375,0.505859375,0.55859375,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5615234375,0.5234375,0.4697265625,0.4287109375,0.4228515625,0.451171875,0.5,0.5400390625,0.5390625,0.4951171875,0.43359375,0.388671875,0.3876953125,0.4287109375,0.4755859375,0.5009765625,0.4912109375,0.451171875,0.404296875,0.3759765625,0.376953125,0.3828125,0.3759765625,0.37109375,0.38671875,0.4287109375,0.4892578125,0.55078125,0.6025390625,0.611328125,0.5771484375,0.525390625,0.4912109375,0.5,0.55078125,0.6171875,0.6845703125,0.72265625,0.705078125,0.6376953125,0.55859375,0.5,0.4501953125,0.41015625,0.392578125,0.3994140625,0.419921875,0.43359375,0.4287109375,0.41015625,0.3671875,0.3154296875,0.28515625,0.2900390625,0.3271484375,0.376953125,0.423828125,0.44921875,0.439453125,0.3994140625,0.3525390625,0.32421875,0.3251953125,0.337890625,0.3583984375,0.3828125,0.40625,0.421875,0.427734375,0.4287109375,0.4248046875,0.4130859375,0.40625,0.421875,0.462890625,0.517578125,0.5703125,0.6220703125,0.671875,0.7001953125,0.697265625,0.6689453125,0.6376953125,0.6220703125,0.61328125,0.611328125,0.62109375,0.638671875,0.658203125,0.6708984375,0.673828125,0.6650390625,0.623046875,0.5458984375,0.453125,0.3759765625,0.333984375,0.3251953125,0.3408203125,0.41015625,0.513671875,0.603515625,0.640625,0.615234375,0.55078125,0.4814453125,0.431640625,0.4267578125,0.470703125,0.5419921875,0.599609375,0.6220703125,0.634765625,0.654296875,0.67578125,0.689453125,0.69140625,0.68359375,0.673828125,0.6494140625,0.576171875,0.4736328125,0.3876953125,0.3525390625,0.3740234375,0.4287109375,0.486328125,0.5185546875,0.5068359375,0.453125,0.384765625,0.3369140625,0.3251953125,0.3232421875,0.31640625,0.3251953125,0.3642578125,0.4296875,0.5048828125,0.5703125,0.63671875,0.7060546875,0.7392578125,0.7060546875,0.6162109375,0.5107421875,0.4287109375,0.349609375,0.2578125,0.1953125,0.2001953125,0.271484375,0.3671875,0.4482421875,0.5146484375,0.552734375,0.5419921875,0.4892578125,0.421875,0.37890625,0.376953125,0.3974609375,0.44921875,0.5166015625,0.56640625,0.576171875,0.5478515625,0.5,0.4375,0.34375,0.2529296875,0.2119140625,0.236328125,0.3037109375,0.376953125,0.447265625,0.5,0.5166015625,0.4951171875,0.455078125,0.427734375,0.4287109375,0.4306640625,0.40234375,0.3544921875,0.3154296875,0.3056640625,0.330078125,0.376953125,0.43359375,0.5068359375,0.58203125,0.638671875,0.6669921875,0.673828125,0.673828125,0.67578125,0.6826171875,0.673828125,0.634765625,0.5693359375,0.494140625,0.4287109375,0.375,0.359375,0.4033203125,0.4931640625,0.59375,0.6591796875,0.673828125,0.6767578125,0.6845703125,0.6806640625,0.646484375,0.5849609375,0.5126953125,0.4482421875,0.3935546875,0.3701171875,0.376953125,0.396484375,0.4033203125,0.3798828125,0.3251953125,0.265625,0.220703125,0.2099609375,0.27734375,0.240234375,0.2763671875,0.353515625,0.4296875,0.4990234375,0.55078125,0.5615234375,0.5283203125,0.47265625,0.4296875,0.419921875,0.4228515625,0.4404296875,0.47265625,0.5107421875,0.544921875,0.564453125,0.5693359375,0.5712890625,0.5732421875,0.576171875,0.578125,0.5791015625,0.5791015625,0.5791015625,0.5791015625,0.5791015625,0.578125,0.576171875,0.5732421875,0.5712890625,0.5693359375,0.568359375,0.5693359375,0.572265625,0.576171875,0.5791015625,0.580078125,0.5791015625,0.5771484375,0.576171875,0.5751953125,0.5732421875,0.572265625,0.5712890625,0.5693359375,0.5546875,0.4970703125,0.416015625,0.3525390625,0.337890625,0.3740234375,0.439453125,0.5,0.517578125,0.4921875,0.451171875,0.427734375,0.4482421875,0.509765625,0.578125,0.623046875,0.6220703125,0.5732421875,0.50390625,0.453125,0.439453125,0.44921875,0.49609375,0.5625,0.6103515625,0.6142578125,0.57421875,0.509765625,0.4443359375,0.400390625,0.3994140625,0.4443359375,0.5087890625,0.556640625,0.5693359375,0.5712890625,0.572265625,0.5732421875,0.5751953125,0.576171875,0.5771484375,0.5791015625,0.5908203125,0.6337890625,0.6875,0.716796875,0.7021484375,0.6494140625,0.5791015625,0.515625,0.486328125,0.4931640625,0.5146484375,0.5244140625,0.5,0.439453125,0.36328125,0.26953125,0.2001953125,0.1943359375,0.25390625,0.3427734375,0.419921875,0.498046875,0.59375,0.6640625,0.6708984375,0.609375,0.5185546875,0.439453125,0.36328125,0.287109375,0.2529296875,0.2900390625,0.3876953125,0.498046875,0.5791015625,0.646484375,0.6953125,0.7041015625,0.6689453125,0.6123046875,0.5693359375,0.5595703125,0.5654296875,0.58984375,0.6103515625,0.603515625,0.5595703125,0.4912109375,0.419921875,0.3642578125,0.37109375,0.4423828125,0.541015625,0.61328125,0.623046875,0.5693359375,0.490234375,0.3837890625,0.2890625,0.251953125,0.2841796875,0.357421875,0.4296875,0.490234375,0.517578125,0.509765625,0.4892578125,0.4814453125,0.5087890625,0.5693359375,0.642578125,0.7158203125,0.7490234375,0.7099609375,0.61328125,0.5029296875,0.419921875,0.3623046875,0.3603515625,0.4189453125,0.5009765625,0.55859375,0.5576171875,0.5,0.41796875,0.3154296875,0.232421875,0.2119140625,0.2607421875,0.34375,0.419921875,0.4912109375,0.5615234375,0.609375,0.6201171875,0.6005859375,0.5771484375,0.5693359375,0.57421875,0.595703125,0.6142578125,0.6044921875,0.5595703125,0.4912109375,0.419921875,0.3515625,0.30078125,0.287109375,0.3173828125,0.369140625,0.41015625,0.419921875,0.4130859375,0.3916015625,0.373046875,0.384765625,0.43359375,0.505859375,0.5791015625,0.63671875,0.638671875,0.580078125,0.498046875,0.4404296875,0.44140625,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.427734375,0.3662109375,0.3359375,0.3466796875,0.3857421875,0.419921875,0.4296875,0.4345703125,0.451171875,0.48046875,0.513671875,0.5419921875,0.556640625,0.5595703125,0.5556640625,0.5390625,0.5078125,0.470703125,0.4404296875,0.4228515625,0.419921875,0.412109375,0.37890625,0.3427734375,0.33203125,0.3603515625,0.419921875,0.4892578125,0.5595703125,0.623046875,0.6572265625,0.65234375,0.619140625,0.5888671875,0.5791015625,0.583984375,0.60546875,0.625,0.6181640625,0.5751953125,0.5087890625,0.439453125,0.3828125,0.3740234375,0.4130859375,0.4716796875,0.509765625,0.498046875,0.439453125,0.3740234375,0.337890625,0.3515625,0.4130859375,0.4912109375,0.546875,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.548828125,0.5009765625,0.4375,0.392578125,0.3916015625,0.4345703125,0.5,0.5546875,0.5576171875,0.5068359375,0.4326171875,0.380859375,0.3837890625,0.439453125,0.505859375,0.5537109375,0.5625,0.5302734375,0.4775390625,0.4375,0.4296875,0.423828125,0.3935546875,0.359375,0.3505859375,0.3798828125,0.439453125,0.509765625,0.568359375,0.578125,0.5390625,0.4794921875,0.4404296875,0.451171875,0.509765625,0.5869140625,0.6767578125,0.73828125,0.7353515625,0.66796875,0.576171875,0.5,0.431640625,0.3759765625,0.3505859375,0.3642578125,0.40234375,0.43359375,0.439453125,0.4287109375,0.3857421875,0.3330078125,0.3017578125,0.3134765625,0.36328125,0.4296875,0.49609375,0.5439453125,0.552734375,0.5205078125,0.4677734375,0.427734375,0.419921875,0.421875,0.42578125,0.4306640625,0.4345703125,0.4384765625,0.439453125,0.439453125,0.4326171875,0.408203125,0.3837890625,0.3857421875,0.42578125,0.490234375,0.5595703125,0.6259765625,0.6787109375,0.6943359375,0.6689453125,0.6201171875,0.580078125,0.5693359375,0.568359375,0.568359375,0.5693359375,0.5732421875,0.576171875,0.5791015625,0.5791015625,0.5751953125,0.556640625,0.5205078125,0.478515625,0.4423828125,0.423828125,0.419921875,0.431640625,0.484375,0.5576171875,0.6123046875,0.619140625,0.5771484375,0.509765625,0.4404296875,0.39453125,0.3935546875,0.439453125,0.505859375,0.556640625,0.5693359375,0.5712890625,0.5751953125,0.578125,0.5810546875,0.58203125,0.5810546875,0.5791015625,0.564453125,0.505859375,0.421875,0.3564453125,0.33984375,0.375,0.439453125,0.5078125,0.556640625,0.564453125,0.529296875,0.47265625,0.4296875,0.419921875,0.4130859375,0.3896484375,0.3681640625,0.3759765625,0.419921875,0.48828125,0.5595703125,0.634765625,0.712890625,0.7529296875,0.7216796875,0.6298828125,0.5224609375,0.439453125,0.361328125,0.2734375,0.2177734375,0.23046875,0.30859375,0.408203125,0.4892578125,0.5576171875,0.6015625,0.6005859375,0.5537109375,0.4873046875,0.439453125,0.4296875,0.4423828125,0.4921875,0.55859375,0.60546875,0.607421875,0.564453125,0.5,0.421875,0.3212890625,0.2392578125,0.2197265625,0.2685546875,0.3525390625,0.4296875,0.5,0.5517578125,0.56640625,0.5380859375,0.4873046875,0.4482421875,0.439453125,0.431640625,0.3916015625,0.3388671875,0.306640625,0.3154296875,0.36328125,0.4296875,0.5,0.568359375,0.6142578125,0.6240234375,0.6064453125,0.5849609375,0.5791015625,0.5859375,0.609375,0.630859375,0.623046875,0.5791015625,0.5107421875,0.439453125,0.375,0.3408203125,0.3583984375,0.4248046875,0.5087890625,0.56640625,0.5791015625,0.5869140625,0.6171875,0.6484375,0.6552734375,0.6220703125,0.5595703125,0.4892578125,0.4296875,0.41015625,0.4345703125,0.474609375,0.4990234375,0.4794921875,0.419921875,0.3515625,0.30078125,0.287109375,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.2431640625,0.28515625,0.38671875,0.498046875,0.5791015625,0.646484375,0.6953125,0.7041015625,0.6689453125,0.6123046875,0.5693359375,0.5595703125,0.556640625,0.5419921875,0.515625,0.4833984375,0.45703125,0.4423828125,0.439453125,0.439453125,0.435546875,0.4296875,0.423828125,0.419921875,0.4189453125,0.419921875,0.421875,0.42578125,0.4306640625,0.4345703125,0.4384765625,0.439453125,0.439453125,0.439453125,0.435546875,0.4296875,0.423828125,0.419921875,0.4189453125,0.419921875,0.421875,0.42578125,0.4306640625,0.4345703125,0.4384765625,0.439453125,0.439453125,0.4326171875,0.4052734375,0.37890625,0.3798828125,0.419921875,0.486328125,0.5595703125,0.6171875,0.6201171875,0.564453125,0.484375,0.4287109375,0.431640625,0.4892578125,0.560546875,0.62109375,0.6484375,0.6357421875,0.59765625,0.56640625,0.5595703125,0.5693359375,0.60546875,0.646484375,0.662109375,0.6376953125,0.5791015625,0.509765625,0.439453125,0.3759765625,0.341796875,0.3466796875,0.3798828125,0.41015625,0.419921875,0.421875,0.4228515625,0.4228515625,0.421875,0.4208984375,0.419921875,0.419921875,0.4296875,0.46875,0.51953125,0.548828125,0.5361328125,0.486328125,0.419921875,0.3671875,0.376953125,0.4521484375,0.552734375,0.6259765625,0.6337890625,0.5791015625,0.5009765625,0.4091796875,0.3447265625,0.3447265625,0.4091796875,0.5009765625,0.5791015625,0.6572265625,0.7490234375,0.8134765625,0.8115234375,0.7431640625,0.6494140625,0.5693359375,0.4873046875,0.37890625,0.2861328125,0.2529296875,0.2900390625,0.3662109375,0.439453125,0.505859375,0.5537109375,0.5615234375,0.52734375,0.4716796875,0.4296875,0.419921875,0.4326171875,0.490234375,0.57421875,0.640625,0.658203125,0.6240234375,0.5595703125,0.498046875,0.47265625,0.4853515625,0.513671875,0.5263671875,0.5009765625,0.439453125,0.3642578125,0.287109375,0.25,0.283203125,0.3779296875,0.486328125,0.5693359375,0.6259765625,0.619140625,0.5478515625,0.451171875,0.3798828125,0.373046875,0.4296875,0.5126953125,0.6240234375,0.7216796875,0.7587890625,0.72265625,0.6455078125,0.5693359375,0.5078125,0.4892578125,0.5146484375,0.55859375,0.5859375,0.5693359375,0.509765625,0.4326171875,0.345703125,0.2900390625,0.302734375,0.3798828125,0.478515625,0.5595703125,0.6259765625,0.6640625,0.650390625,0.5888671875,0.5087890625,0.4521484375,0.439453125,0.453125,0.5107421875,0.59375,0.66015625,0.6787109375,0.64453125,0.5791015625,0.5107421875,0.4560546875,0.4375,0.4609375,0.5087890625,0.548828125,0.5595703125,0.548828125,0.494140625,0.416015625,0.353515625,0.3388671875,0.375,0.439453125,0.4990234375,0.515625,0.4873046875,0.44140625,0.4130859375,0.4296875,0.4892578125,0.5673828125,0.6611328125,0.7294921875,0.734375,0.673828125,0.5849609375,0.509765625,0.4443359375,0.4033203125,0.40625,0.453125,0.51953125,0.568359375,0.5791015625,0.5751953125,0.556640625,0.521484375,0.4814453125,0.4482421875,0.431640625,0.4296875,0.4345703125,0.4541015625,0.48828125,0.5263671875,0.55859375,0.576171875,0.5791015625,0.5673828125,0.5146484375,0.44140625,0.38671875,0.3798828125,0.421875,0.4892578125,0.5576171875,0.603515625,0.6044921875,0.5595703125,0.49609375,0.44921875,0.439453125,0.4541015625,0.513671875,0.5966796875,0.6630859375,0.6796875,0.64453125,0.5791015625,0.5205078125,0.5087890625,0.544921875,0.599609375,0.6337890625,0.6201171875,0.5595703125,0.486328125,0.419921875,0.3798828125,0.37890625,0.4052734375,0.4326171875,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.431640625,0.3974609375,0.357421875,0.341796875,0.3662109375,0.421875,0.4892578125,0.5478515625,0.5673828125,0.546875,0.5107421875,0.4931640625,0.5166015625,0.5791015625,0.6494140625,0.701171875,0.7138671875,0.681640625,0.625,0.5810546875,0.5693359375,0.556640625,0.5068359375,0.44140625,0.396484375,0.3974609375,0.4423828125,0.509765625,0.568359375,0.578125,0.5380859375,0.4765625,0.4345703125,0.443359375,0.5,0.576171875,0.666015625,0.73046875,0.728515625,0.662109375,0.5693359375,0.4892578125,0.421875,0.37890625,0.3818359375,0.431640625,0.5,0.5498046875,0.5595703125,0.5478515625,0.5078125,0.4580078125,0.43359375,0.453125,0.5087890625,0.5791015625,0.6494140625,0.701171875,0.71484375,0.6845703125,0.630859375,0.5888671875,0.5791015625,0.578125,0.5751953125,0.5693359375,0.5634765625,0.5595703125,0.55859375,0.5595703125,0.5478515625,0.4912109375,0.408203125,0.3408203125,0.322265625,0.35546875,0.419921875,0.48828125,0.5400390625,0.5546875,0.525390625,0.47265625,0.4306640625,0.419921875,0.41796875,0.4189453125,0.421875,0.4267578125,0.4326171875,0.4375,0.439453125,0.4443359375,0.462890625,0.494140625,0.5302734375,0.560546875,0.576171875,0.5791015625,0.587890625,0.62109375,0.6591796875,0.6708984375,0.6416015625,0.5810546875,0.509765625,0.4384765625,0.376953125,0.3466796875,0.357421875,0.392578125,0.4228515625,0.4296875,0.427734375,0.42578125,0.4228515625,0.4208984375,0.419921875,0.419921875,0.419921875,0.4130859375,0.3896484375,0.3701171875,0.37890625,0.42578125,0.49609375,0.5693359375,0.6396484375,0.6943359375,0.7109375,0.68359375,0.6328125,0.5908203125,0.5791015625,0.564453125,0.5029296875,0.416015625,0.3466796875,0.328125,0.36328125,0.4296875,0.5126953125,0.625,0.7255859375,0.7646484375,0.7314453125,0.6552734375,0.5791015625,0.498046875,0.3935546875,0.3095703125,0.2880859375,0.3369140625,0.421875,0.5,0.5712890625,0.634765625,0.6669921875,0.658203125,0.6220703125,0.5888671875,0.5791015625,0.5859375,0.6162109375,0.65234375,0.662109375,0.6318359375,0.5712890625,0.5,0.421875,0.3359375,0.2841796875,0.302734375,0.3857421875,0.48828125,0.5693359375,0.638671875,0.6904296875,0.701171875,0.66796875,0.6123046875,0.5693359375,0.5595703125,0.5498046875,0.5078125,0.4541015625,0.423828125,0.4375,0.4892578125,0.5595703125,0.6259765625,0.6611328125,0.64453125,0.5791015625,0.4970703125,0.44140625,0.4296875,0.4443359375,0.501953125,0.5830078125,0.646484375,0.6611328125,0.625,0.5595703125,0.48828125,0.419921875,0.3759765625,0.3681640625,0.3896484375,0.4130859375,0.419921875,0.431640625,0.4833984375,0.5546875,0.60546875,0.6103515625,0.5673828125,0.5,0.44140625,0.4384765625,0.4931640625,0.57421875,0.6328125,0.6337890625,0.5791015625,0.5126953125,0.462890625,0.4501953125,0.248046875,0.33984375,0.474609375,0.5966796875,0.673828125,0.73046875,0.7626953125,0.7509765625,0.6982421875,0.62890625,0.5810546875,0.5703125,0.56640625,0.5498046875,0.5185546875,0.48046875,0.44921875,0.4326171875,0.4287109375,0.4248046875,0.40625,0.3759765625,0.34375,0.3232421875,0.318359375,0.3251953125,0.337890625,0.3583984375,0.3828125,0.40625,0.421875,0.427734375,0.4287109375,0.4248046875,0.40625,0.3759765625,0.34375,0.3232421875,0.318359375,0.3251953125,0.337890625,0.3583984375,0.3828125,0.40625,0.421875,0.427734375,0.4287109375,0.421875,0.3974609375,0.3759765625,0.3828125,0.427734375,0.4970703125,0.5703125,0.626953125,0.623046875,0.5556640625,0.462890625,0.39453125,0.390625,0.4482421875,0.5185546875,0.580078125,0.61328125,0.6103515625,0.5859375,0.5673828125,0.5703125,0.587890625,0.62890625,0.6728515625,0.689453125,0.666015625,0.6123046875,0.55078125,0.484375,0.40625,0.3369140625,0.298828125,0.296875,0.3125,0.3251953125,0.3359375,0.34375,0.345703125,0.3408203125,0.3330078125,0.3271484375,0.3251953125,0.3330078125,0.3623046875,0.400390625,0.421875,0.412109375,0.375,0.3251953125,0.29296875,0.3330078125,0.447265625,0.5869140625,0.6904296875,0.7177734375,0.673828125,0.60546875,0.5244140625,0.4677734375,0.4677734375,0.5244140625,0.60546875,0.673828125,0.7421875,0.822265625,0.875,0.8662109375,0.7958984375,0.701171875,0.6220703125,0.5400390625,0.4345703125,0.3408203125,0.298828125,0.318359375,0.3740234375,0.4287109375,0.4765625,0.5009765625,0.4873046875,0.4384765625,0.376953125,0.3349609375,0.3251953125,0.33984375,0.4052734375,0.505859375,0.595703125,0.6396484375,0.6240234375,0.5703125,0.515625,0.4892578125,0.4921875,0.5068359375,0.509765625,0.4833984375,0.4287109375,0.3642578125,0.30078125,0.279296875,0.3251953125,0.427734375,0.5390625,0.6220703125,0.67578125,0.6572265625,0.5625,0.4365234375,0.341796875,0.3232421875,0.376953125,0.462890625,0.5869140625,0.7080078125,0.7724609375,0.759765625,0.6953125,0.6220703125,0.55859375,0.533203125,0.5498046875,0.587890625,0.6142578125,0.6025390625,0.55078125,0.482421875,0.3974609375,0.3369140625,0.337890625,0.4013671875,0.4912109375,0.5703125,0.63671875,0.671875,0.6533203125,0.5859375,0.5009765625,0.4423828125,0.4287109375,0.443359375,0.5087890625,0.6083984375,0.69921875,0.7421875,0.7275390625,0.673828125,0.609375,0.546875,0.50390625,0.4990234375,0.5234375,0.5537109375,0.5703125,0.568359375,0.5234375,0.4482421875,0.3798828125,0.3525390625,0.3740234375,0.4287109375,0.48046875,0.4921875,0.4619140625,0.4150390625,0.384765625,0.396484375,0.4482421875,0.5166015625,0.6044921875,0.6767578125,0.69921875,0.6669921875,0.6064453125,0.55078125,0.5048828125,0.482421875,0.5,0.5537109375,0.619140625,0.6630859375,0.673828125,0.6650390625,0.623046875,0.548828125,0.466796875,0.40234375,0.3740234375,0.376953125,0.39453125,0.4375,0.505859375,0.580078125,0.6376953125,0.66796875,0.673828125,0.658203125,0.5888671875,0.4853515625,0.3955078125,0.3583984375,0.3837890625,0.4482421875,0.515625,0.5595703125,0.5615234375,0.521484375,0.4658203125,0.4296875,0.4287109375,0.453125,0.5263671875,0.6279296875,0.71484375,0.75,0.728515625,0.673828125,0.62109375,0.60546875,0.625,0.6533203125,0.6630859375,0.6337890625,0.5703125,0.4970703125,0.427734375,0.3828125,0.3759765625,0.3974609375,0.421875,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.421875,0.39453125,0.361328125,0.3447265625,0.3583984375,0.3974609375,0.4482421875,0.4931640625,0.515625,0.521484375,0.529296875,0.5556640625,0.60546875,0.673828125,0.7431640625,0.7958984375,0.8046875,0.765625,0.6982421875,0.642578125,0.6220703125,0.6015625,0.5498046875,0.486328125,0.4462890625,0.44921875,0.4921875,0.55078125,0.6025390625,0.611328125,0.5732421875,0.51171875,0.46484375,0.4599609375,0.5,0.5576171875,0.630859375,0.681640625,0.6767578125,0.6142578125,0.5263671875,0.4482421875,0.3828125,0.3505859375,0.3720703125,0.439453125,0.5185546875,0.5673828125,0.5703125,0.552734375,0.515625,0.4833984375,0.484375,0.5283203125,0.599609375,0.673828125,0.7431640625,0.7958984375,0.80859375,0.7783203125,0.724609375,0.68359375,0.673828125,0.669921875,0.6513671875,0.6201171875,0.5888671875,0.5673828125,0.5625,0.5703125,0.5654296875,0.5078125,0.41015625,0.314453125,0.263671875,0.2734375,0.3251953125,0.38671875,0.4375,0.45703125,0.435546875,0.3876953125,0.3447265625,0.3251953125,0.31640625,0.3154296875,0.3291015625,0.3564453125,0.388671875,0.4150390625,0.4287109375,0.4443359375,0.482421875,0.5380859375,0.5986328125,0.6455078125,0.6689453125,0.673828125,0.6806640625,0.70703125,0.7333984375,0.7314453125,0.69140625,0.6240234375,0.55078125,0.478515625,0.4111328125,0.3671875,0.35546875,0.3681640625,0.3818359375,0.376953125,0.3662109375,0.3525390625,0.3388671875,0.3291015625,0.3251953125,0.3251953125,0.3251953125,0.322265625,0.31640625,0.3291015625,0.376953125,0.45703125,0.544921875,0.6220703125,0.6943359375,0.7587890625,0.791015625,0.779296875,0.7353515625,0.6923828125,0.673828125,0.646484375,0.5615234375,0.439453125,0.3359375,0.2900390625,0.3134765625,0.376953125,0.4638671875,0.59375,0.7265625,0.8046875,0.8046875,0.74609375,0.673828125,0.58984375,0.474609375,0.369140625,0.3232421875,0.3505859375,0.423828125,0.5,0.5751953125,0.654296875,0.7138671875,0.734375,0.7177734375,0.689453125,0.673828125,0.6689453125,0.6826171875,0.6953125,0.68359375,0.6396484375,0.572265625,0.5,0.4228515625,0.34375,0.3037109375,0.3359375,0.4296875,0.5390625,0.6220703125,0.6904296875,0.736328125,0.73828125,0.6943359375,0.62890625,0.5810546875,0.5703125,0.5595703125,0.5185546875,0.46484375,0.4345703125,0.4482421875,0.5,0.5703125,0.6337890625,0.6572265625,0.619140625,0.5341796875,0.439453125,0.3818359375,0.376953125,0.400390625,0.466796875,0.5576171875,0.6298828125,0.654296875,0.626953125,0.5703125,0.5048828125,0.4296875,0.3642578125,0.3251953125,0.31640625,0.3232421875,0.3251953125,0.33984375,0.40234375,0.4951171875,0.5712890625,0.5966796875,0.5654296875,0.5,0.4404296875,0.439453125,0.5029296875,0.6005859375,0.68359375,0.708984375,0.673828125,0.6240234375,0.5869140625,0.5771484375,0.2841796875,0.4111328125,0.560546875,0.6787109375,0.740234375,0.779296875,0.787109375,0.748046875,0.673828125,0.5927734375,0.541015625,0.5302734375,0.5283203125,0.521484375,0.5078125,0.4912109375,0.4775390625,0.470703125,0.46875,0.4609375,0.419921875,0.353515625,0.2861328125,0.244140625,0.23828125,0.2587890625,0.2890625,0.333984375,0.3857421875,0.4306640625,0.4580078125,0.4677734375,0.46875,0.4609375,0.419921875,0.353515625,0.2861328125,0.244140625,0.23828125,0.2587890625,0.2890625,0.333984375,0.3857421875,0.4306640625,0.4580078125,0.4677734375,0.46875,0.4609375,0.4267578125,0.38671875,0.3720703125,0.3984375,0.458984375,0.5302734375,0.5869140625,0.5810546875,0.5107421875,0.4140625,0.34375,0.337890625,0.39453125,0.4638671875,0.517578125,0.541015625,0.53515625,0.5166015625,0.5107421875,0.5302734375,0.5634765625,0.6181640625,0.673828125,0.701171875,0.6904296875,0.650390625,0.6044921875,0.548828125,0.4580078125,0.353515625,0.26953125,0.2314453125,0.2353515625,0.2587890625,0.2841796875,0.3037109375,0.30859375,0.2978515625,0.2783203125,0.2626953125,0.2587890625,0.26171875,0.2724609375,0.287109375,0.294921875,0.291015625,0.27734375,0.2587890625,0.2578125,0.3291015625,0.466796875,0.62109375,0.734375,0.7705078125,0.740234375,0.689453125,0.6298828125,0.587890625,0.587890625,0.6298828125,0.689453125,0.740234375,0.7919921875,0.853515625,0.892578125,0.8759765625,0.8046875,0.7138671875,0.634765625,0.55859375,0.4755859375,0.4111328125,0.3896484375,0.4091796875,0.4443359375,0.46875,0.482421875,0.470703125,0.427734375,0.3642578125,0.302734375,0.2666015625,0.2587890625,0.271484375,0.3310546875,0.4248046875,0.515625,0.568359375,0.5673828125,0.5302734375,0.490234375,0.4765625,0.48828125,0.5107421875,0.5224609375,0.5087890625,0.46875,0.4189453125,0.3642578125,0.33984375,0.3720703125,0.4560546875,0.5546875,0.634765625,0.6884765625,0.666015625,0.5654296875,0.43359375,0.3330078125,0.310546875,0.3642578125,0.4501953125,0.5771484375,0.7041015625,0.775390625,0.76953125,0.7080078125,0.634765625,0.5703125,0.541015625,0.5546875,0.5966796875,0.634765625,0.6396484375,0.6044921875,0.548828125,0.46484375,0.38671875,0.35546875,0.3857421875,0.455078125,0.5302734375,0.5986328125,0.6435546875,0.642578125,0.5966796875,0.529296875,0.48046875,0.46875,0.4814453125,0.541015625,0.6357421875,0.7255859375,0.7783203125,0.7783203125,0.740234375,0.6875,0.61328125,0.5380859375,0.4912109375,0.482421875,0.5029296875,0.5302734375,0.5478515625,0.533203125,0.4912109375,0.4443359375,0.419921875,0.4296875,0.46875,0.5048828125,0.5029296875,0.4609375,0.40234375,0.3603515625,0.3583984375,0.39453125,0.4462890625,0.515625,0.5849609375,0.6298828125,0.638671875,0.6240234375,0.6044921875,0.5888671875,0.591796875,0.619140625,0.662109375,0.70703125,0.734375,0.740234375,0.7275390625,0.6669921875,0.5634765625,0.4521484375,0.373046875,0.3466796875,0.3642578125,0.3984375,0.4638671875,0.5517578125,0.640625,0.705078125,0.7353515625,0.740234375,0.7216796875,0.638671875,0.5078125,0.3857421875,0.322265625,0.3330078125,0.39453125,0.4619140625,0.5087890625,0.5185546875,0.4970703125,0.46484375,0.4521484375,0.46875,0.5078125,0.5859375,0.685546875,0.7646484375,0.796875,0.78125,0.740234375,0.701171875,0.6845703125,0.6826171875,0.67578125,0.6494140625,0.5986328125,0.5302734375,0.458984375,0.3984375,0.3720703125,0.38671875,0.4267578125,0.4609375,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.46484375,0.4443359375,0.4140625,0.3857421875,0.373046875,0.3779296875,0.39453125,0.4111328125,0.4248046875,0.4521484375,0.5048828125,0.5810546875,0.6650390625,0.740234375,0.8115234375,0.8662109375,0.8759765625,0.828125,0.7470703125,0.6728515625,0.634765625,0.6025390625,0.552734375,0.5078125,0.4912109375,0.5126953125,0.5576171875,0.6044921875,0.6435546875,0.6533203125,0.6240234375,0.568359375,0.5146484375,0.490234375,0.5,0.525390625,0.568359375,0.6015625,0.5966796875,0.5458984375,0.4697265625,0.39453125,0.3310546875,0.310546875,0.34765625,0.4248046875,0.50390625,0.5419921875,0.5302734375,0.4990234375,0.4638671875,0.4521484375,0.48828125,0.568359375,0.662109375,0.740234375,0.8095703125,0.8623046875,0.8759765625,0.8447265625,0.7919921875,0.75,0.740234375,0.7314453125,0.6904296875,0.6240234375,0.5576171875,0.515625,0.5087890625,0.5302734375,0.54296875,0.5029296875,0.4140625,0.3115234375,0.240234375,0.224609375,0.2587890625,0.306640625,0.35546875,0.3828125,0.375,0.3369140625,0.291015625,0.2587890625,0.234375,0.2255859375,0.248046875,0.3037109375,0.375,0.4345703125,0.46875,0.5009765625,0.5537109375,0.619140625,0.6787109375,0.7197265625,0.7373046875,0.740234375,0.7470703125,0.7724609375,0.794921875,0.7900390625,0.74609375,0.677734375,0.6044921875,0.533203125,0.466796875,0.4189453125,0.3974609375,0.392578125,0.3857421875,0.3642578125,0.3359375,0.3037109375,0.275390625,0.2587890625,0.2548828125,0.2578125,0.2587890625,0.2578125,0.26171875,0.2919921875,0.361328125,0.4580078125,0.556640625,0.634765625,0.7109375,0.791015625,0.84765625,0.8564453125,0.8212890625,0.7734375,0.740234375,0.6953125,0.5888671875,0.447265625,0.328125,0.27734375,0.2998046875,0.3642578125,0.4521484375,0.5927734375,0.7431640625,0.8427734375,0.859375,0.8115234375,0.740234375,0.654296875,0.53125,0.4111328125,0.34765625,0.3603515625,0.42578125,0.5,0.578125,0.67578125,0.76171875,0.806640625,0.8017578125,0.7705078125,0.740234375,0.71875,0.7119140625,0.70703125,0.6845703125,0.6376953125,0.5712890625,0.5,0.4228515625,0.345703125,0.30859375,0.3447265625,0.44140625,0.5517578125,0.634765625,0.7021484375,0.7421875,0.7314453125,0.673828125,0.5966796875,0.5419921875,0.5302734375,0.51953125,0.478515625,0.4248046875,0.39453125,0.4072265625,0.4599609375,0.5302734375,0.591796875,0.609375,0.5654296875,0.48046875,0.39453125,0.3525390625,0.3642578125,0.3994140625,0.4658203125,0.541015625,0.5927734375,0.6025390625,0.57421875,0.5302734375,0.4794921875,0.4130859375,0.3447265625,0.2919921875,0.265625,0.2587890625,0.2587890625,0.2744140625,0.345703125,0.4521484375,0.546875,0.5869140625,0.5634765625,0.5,0.4375,0.42578125,0.48046875,0.58203125,0.685546875,0.7431640625,0.740234375,0.7216796875,0.7080078125,0.7041015625,0.34765625,0.474609375,0.6064453125,0.69921875,0.740234375,0.759765625,0.74609375,0.6904296875,0.607421875,0.52734375,0.4794921875,0.46875,0.470703125,0.4775390625,0.4912109375,0.5078125,0.521484375,0.5283203125,0.5302734375,0.517578125,0.4580078125,0.36328125,0.2734375,0.220703125,0.220703125,0.2587890625,0.3095703125,0.375,0.4443359375,0.4970703125,0.5234375,0.5302734375,0.5302734375,0.517578125,0.4580078125,0.36328125,0.2734375,0.220703125,0.220703125,0.2587890625,0.3095703125,0.375,0.4443359375,0.4970703125,0.5234375,0.5302734375,0.5302734375,0.5185546875,0.4697265625,0.40234375,0.3564453125,0.35546875,0.400390625,0.46875,0.5263671875,0.5244140625,0.4609375,0.3720703125,0.30859375,0.306640625,0.3642578125,0.4296875,0.46875,0.4716796875,0.4501953125,0.4287109375,0.4326171875,0.46875,0.5205078125,0.58984375,0.654296875,0.6904296875,0.6884765625,0.6630859375,0.634765625,0.5947265625,0.5029296875,0.3798828125,0.2734375,0.216796875,0.2197265625,0.2587890625,0.302734375,0.3359375,0.3447265625,0.3251953125,0.2919921875,0.265625,0.2587890625,0.255859375,0.2451171875,0.2314453125,0.2236328125,0.2265625,0.240234375,0.2587890625,0.2919921875,0.3798828125,0.5107421875,0.640625,0.7294921875,0.7568359375,0.740234375,0.7109375,0.67578125,0.6513671875,0.6513671875,0.67578125,0.7109375,0.740234375,0.7724609375,0.8173828125,0.8447265625,0.828125,0.765625,0.681640625,0.6044921875,0.5361328125,0.4853515625,0.4697265625,0.48828125,0.521484375,0.5400390625,0.5302734375,0.5048828125,0.4580078125,0.39453125,0.3310546875,0.2841796875,0.2626953125,0.2587890625,0.267578125,0.30859375,0.375,0.44140625,0.4833984375,0.490234375,0.46875,0.4482421875,0.4521484375,0.48046875,0.5185546875,0.546875,0.55078125,0.5302734375,0.49609375,0.4443359375,0.40234375,0.4033203125,0.4521484375,0.529296875,0.6044921875,0.6591796875,0.64453125,0.5576171875,0.44140625,0.3544921875,0.33984375,0.39453125,0.4794921875,0.5986328125,0.7119140625,0.767578125,0.748046875,0.6796875,0.6044921875,0.5390625,0.505859375,0.5185546875,0.568359375,0.6240234375,0.650390625,0.634765625,0.595703125,0.5146484375,0.4189453125,0.3564453125,0.3515625,0.3994140625,0.46875,0.5400390625,0.6005859375,0.626953125,0.6123046875,0.572265625,0.5380859375,0.5302734375,0.5380859375,0.5791015625,0.6455078125,0.712890625,0.7548828125,0.7607421875,0.740234375,0.7021484375,0.623046875,0.5244140625,0.4443359375,0.412109375,0.427734375,0.46875,0.5107421875,0.5361328125,0.5380859375,0.5244140625,0.5087890625,0.5087890625,0.5302734375,0.5478515625,0.5322265625,0.48046875,0.4140625,0.3623046875,0.345703125,0.3642578125,0.3935546875,0.4345703125,0.4853515625,0.5380859375,0.58203125,0.6142578125,0.634765625,0.65625,0.6826171875,0.708984375,0.7294921875,0.73828125,0.740234375,0.740234375,0.7255859375,0.6572265625,0.546875,0.435546875,0.3671875,0.3583984375,0.39453125,0.4462890625,0.521484375,0.607421875,0.6796875,0.72265625,0.73828125,0.740234375,0.7216796875,0.6337890625,0.4970703125,0.3671875,0.2958984375,0.302734375,0.3642578125,0.431640625,0.4775390625,0.494140625,0.48828125,0.48046875,0.4921875,0.5302734375,0.58203125,0.65625,0.7314453125,0.779296875,0.787109375,0.767578125,0.740234375,0.7177734375,0.7080078125,0.6953125,0.666015625,0.611328125,0.5419921875,0.46875,0.400390625,0.35546875,0.3564453125,0.40234375,0.4697265625,0.5185546875,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5283203125,0.51953125,0.4970703125,0.4609375,0.419921875,0.38671875,0.3642578125,0.3447265625,0.3349609375,0.361328125,0.4384765625,0.5498046875,0.6591796875,0.740234375,0.8134765625,0.875,0.892578125,0.8447265625,0.7529296875,0.662109375,0.6044921875,0.5576171875,0.5126953125,0.4912109375,0.5078125,0.552734375,0.6025390625,0.634765625,0.66015625,0.673828125,0.6630859375,0.6240234375,0.5703125,0.5244140625,0.5,0.48828125,0.4990234375,0.5185546875,0.521484375,0.4921875,0.4345703125,0.3642578125,0.302734375,0.2900390625,0.333984375,0.4111328125,0.4794921875,0.5009765625,0.46875,0.421875,0.3798828125,0.3779296875,0.4384765625,0.5458984375,0.6572265625,0.740234375,0.8095703125,0.8623046875,0.8759765625,0.8447265625,0.7919921875,0.75,0.740234375,0.7275390625,0.66796875,0.57421875,0.4833984375,0.4306640625,0.431640625,0.46875,0.5048828125,0.4970703125,0.4384765625,0.3525390625,0.27734375,0.244140625,0.2587890625,0.291015625,0.3369140625,0.375,0.3828125,0.35546875,0.306640625,0.2587890625,0.21484375,0.1884765625,0.20703125,0.2783203125,0.380859375,0.4736328125,0.5302734375,0.5791015625,0.6376953125,0.6923828125,0.7294921875,0.7421875,0.7412109375,0.740234375,0.748046875,0.7763671875,0.806640625,0.8095703125,0.7724609375,0.70703125,0.634765625,0.5654296875,0.5107421875,0.4775390625,0.4638671875,0.455078125,0.4345703125,0.39453125,0.3466796875,0.2978515625,0.2587890625,0.2421875,0.24609375,0.255859375,0.2587890625,0.2568359375,0.2568359375,0.28125,0.341796875,0.4326171875,0.5263671875,0.6044921875,0.68359375,0.779296875,0.8564453125,0.880859375,0.849609375,0.791015625,0.740234375,0.677734375,0.5615234375,0.421875,0.3193359375,0.2900390625,0.326171875,0.39453125,0.482421875,0.6181640625,0.76171875,0.853515625,0.8642578125,0.8115234375,0.740234375,0.654296875,0.53125,0.4111328125,0.34765625,0.3603515625,0.42578125,0.5,0.5810546875,0.689453125,0.7900390625,0.8427734375,0.833984375,0.7880859375,0.740234375,0.7001953125,0.6796875,0.6708984375,0.6572265625,0.6240234375,0.568359375,0.5,0.421875,0.3408203125,0.2978515625,0.3251953125,0.416015625,0.5224609375,0.6044921875,0.6708984375,0.70703125,0.6904296875,0.6240234375,0.5400390625,0.482421875,0.46875,0.458984375,0.41796875,0.3642578125,0.333984375,0.3466796875,0.3994140625,0.46875,0.53125,0.5478515625,0.5107421875,0.44140625,0.3798828125,0.3623046875,0.39453125,0.4443359375,0.501953125,0.5458984375,0.5576171875,0.5361328125,0.4990234375,0.46875,0.4384765625,0.3935546875,0.341796875,0.2978515625,0.2705078125,0.259765625,0.2587890625,0.2744140625,0.345703125,0.4521484375,0.546875,0.5869140625,0.5634765625,0.5,0.4326171875,0.3984375,0.4248046875,0.5107421875,0.62109375,0.7060546875,0.740234375,0.7587890625,0.7724609375,0.775390625,0.4189453125,0.5107421875,0.59765625,0.6533203125,0.673828125,0.677734375,0.6552734375,0.603515625,0.5341796875,0.4716796875,0.4365234375,0.4287109375,0.4326171875,0.44921875,0.48046875,0.5185546875,0.5498046875,0.56640625,0.5703125,0.5556640625,0.490234375,0.390625,0.2998046875,0.2568359375,0.271484375,0.3251953125,0.390625,0.4658203125,0.53125,0.5703125,0.5791015625,0.5732421875,0.5703125,0.5556640625,0.490234375,0.390625,0.2998046875,0.2568359375,0.271484375,0.3251953125,0.390625,0.4658203125,0.53125,0.5703125,0.5791015625,0.5732421875,0.5703125,0.556640625,0.498046875,0.4130859375,0.345703125,0.3271484375,0.3623046875,0.4287109375,0.4873046875,0.4921875,0.4404296875,0.3662109375,0.314453125,0.318359375,0.376953125,0.439453125,0.462890625,0.44140625,0.3994140625,0.369140625,0.3779296875,0.4287109375,0.494140625,0.5693359375,0.630859375,0.66015625,0.6552734375,0.6357421875,0.6220703125,0.595703125,0.5166015625,0.4033203125,0.3037109375,0.2568359375,0.271484375,0.3251953125,0.3857421875,0.4296875,0.44140625,0.416015625,0.3701171875,0.333984375,0.3251953125,0.318359375,0.2890625,0.2509765625,0.2294921875,0.2392578125,0.2763671875,0.3251953125,0.384765625,0.470703125,0.5654296875,0.6396484375,0.677734375,0.6826171875,0.673828125,0.662109375,0.6484375,0.638671875,0.638671875,0.6484375,0.662109375,0.673828125,0.6904296875,0.724609375,0.7529296875,0.7470703125,0.6982421875,0.625,0.55078125,0.4892578125,0.46875,0.4970703125,0.5546875,0.6025390625,0.609375,0.5703125,0.5146484375,0.4482421875,0.3837890625,0.3408203125,0.32421875,0.32421875,0.3251953125,0.3291015625,0.34765625,0.37890625,0.41015625,0.431640625,0.4365234375,0.4287109375,0.423828125,0.439453125,0.4765625,0.5224609375,0.5595703125,0.5751953125,0.5703125,0.5498046875,0.498046875,0.4384765625,0.4072265625,0.423828125,0.48046875,0.55078125,0.6083984375,0.6064453125,0.5439453125,0.455078125,0.392578125,0.390625,0.4482421875,0.5302734375,0.63671875,0.7265625,0.75390625,0.7099609375,0.62890625,0.55078125,0.484375,0.4462890625,0.45703125,0.509765625,0.5771484375,0.6201171875,0.6220703125,0.5966796875,0.5244140625,0.42578125,0.349609375,0.3271484375,0.3623046875,0.4287109375,0.501953125,0.5712890625,0.6162109375,0.623046875,0.6015625,0.5771484375,0.5703125,0.57421875,0.5927734375,0.623046875,0.6552734375,0.67578125,0.6806640625,0.673828125,0.6494140625,0.576171875,0.4736328125,0.3876953125,0.3525390625,0.3740234375,0.4287109375,0.490234375,0.546875,0.5810546875,0.5888671875,0.576171875,0.5654296875,0.5703125,0.57421875,0.552734375,0.50390625,0.443359375,0.39453125,0.373046875,0.376953125,0.3857421875,0.3935546875,0.412109375,0.451171875,0.5068359375,0.568359375,0.6220703125,0.6728515625,0.7158203125,0.7373046875,0.7294921875,0.7021484375,0.6796875,0.673828125,0.6591796875,0.5966796875,0.5009765625,0.4150390625,0.3759765625,0.3935546875,0.4482421875,0.5126953125,0.5849609375,0.646484375,0.6806640625,0.6845703125,0.6767578125,0.673828125,0.65625,0.5791015625,0.458984375,0.3505859375,0.2978515625,0.314453125,0.376953125,0.443359375,0.4833984375,0.494140625,0.48828125,0.4892578125,0.515625,0.5703125,0.6337890625,0.697265625,0.7392578125,0.7451171875,0.720703125,0.689453125,0.673828125,0.66796875,0.671875,0.6689453125,0.638671875,0.5791015625,0.5029296875,0.4287109375,0.3623046875,0.3271484375,0.345703125,0.4130859375,0.498046875,0.556640625,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.572265625,0.5791015625,0.57421875,0.544921875,0.4921875,0.431640625,0.376953125,0.32421875,0.28125,0.28515625,0.3544921875,0.4716796875,0.58984375,0.673828125,0.7490234375,0.822265625,0.853515625,0.8173828125,0.724609375,0.6240234375,0.55078125,0.4921875,0.44921875,0.4462890625,0.486328125,0.5498046875,0.6015625,0.6220703125,0.6357421875,0.658203125,0.6708984375,0.65625,0.611328125,0.5537109375,0.5,0.45703125,0.4462890625,0.4638671875,0.4833984375,0.48046875,0.4423828125,0.376953125,0.3173828125,0.306640625,0.3505859375,0.4208984375,0.474609375,0.4775390625,0.4287109375,0.365234375,0.30859375,0.2978515625,0.3583984375,0.4716796875,0.58984375,0.673828125,0.7431640625,0.7958984375,0.80859375,0.7783203125,0.724609375,0.68359375,0.673828125,0.6591796875,0.59375,0.4931640625,0.4033203125,0.359375,0.375,0.4287109375,0.484375,0.5107421875,0.4912109375,0.43359375,0.3671875,0.326171875,0.3251953125,0.3447265625,0.3876953125,0.435546875,0.45703125,0.4375,0.38671875,0.3251953125,0.2626953125,0.2119140625,0.2099609375,0.2744140625,0.3857421875,0.49609375,0.5703125,0.6318359375,0.689453125,0.7236328125,0.7255859375,0.7021484375,0.6796875,0.673828125,0.6826171875,0.7177734375,0.759765625,0.7763671875,0.7509765625,0.6923828125,0.6220703125,0.556640625,0.5185546875,0.51171875,0.5224609375,0.525390625,0.501953125,0.4482421875,0.3857421875,0.3251953125,0.287109375,0.2802734375,0.298828125,0.3203125,0.3251953125,0.3212890625,0.306640625,0.3037109375,0.3330078125,0.396484375,0.4765625,0.55078125,0.6328125,0.7353515625,0.8212890625,0.849609375,0.8115234375,0.740234375,0.673828125,0.5986328125,0.484375,0.369140625,0.3056640625,0.314453125,0.375,0.4482421875,0.533203125,0.654296875,0.771484375,0.8310546875,0.814453125,0.748046875,0.673828125,0.58984375,0.474609375,0.369140625,0.3232421875,0.3505859375,0.423828125,0.5,0.58203125,0.69140625,0.7890625,0.830078125,0.8046875,0.7392578125,0.673828125,0.6201171875,0.595703125,0.5986328125,0.609375,0.6025390625,0.564453125,0.5,0.4208984375,0.3330078125,0.2783203125,0.2919921875,0.3701171875,0.470703125,0.55078125,0.6181640625,0.6552734375,0.6416015625,0.5791015625,0.498046875,0.44140625,0.4287109375,0.4189453125,0.376953125,0.32421875,0.2939453125,0.306640625,0.359375,0.4287109375,0.490234375,0.509765625,0.4814453125,0.4296875,0.392578125,0.3974609375,0.4482421875,0.5087890625,0.556640625,0.572265625,0.5458984375,0.4931640625,0.4482421875,0.4287109375,0.4169921875,0.396484375,0.37109375,0.3486328125,0.3330078125,0.326171875,0.3251953125,0.33984375,0.40234375,0.4951171875,0.5712890625,0.5966796875,0.5654296875,0.5,0.4267578125,0.3662109375,0.353515625,0.408203125,0.509765625,0.609375,0.673828125,0.72265625,0.759765625,0.76953125,0.47265625,0.5146484375,0.5517578125,0.5732421875,0.5791015625,0.5771484375,0.5615234375,0.53125,0.4931640625,0.4609375,0.443359375,0.439453125,0.4423828125,0.45703125,0.4833984375,0.515625,0.5419921875,0.556640625,0.5595703125,0.5458984375,0.48828125,0.4052734375,0.3388671875,0.3203125,0.3544921875,0.419921875,0.4912109375,0.5595703125,0.603515625,0.6103515625,0.58984375,0.5654296875,0.5595703125,0.5458984375,0.48828125,0.4052734375,0.3388671875,0.3203125,0.3544921875,0.419921875,0.4912109375,0.5595703125,0.603515625,0.6103515625,0.58984375,0.5654296875,0.5595703125,0.546875,0.490234375,0.41015625,0.3486328125,0.3349609375,0.373046875,0.439453125,0.4990234375,0.5087890625,0.466796875,0.4033203125,0.3603515625,0.3701171875,0.4296875,0.490234375,0.5029296875,0.4658203125,0.4091796875,0.37109375,0.380859375,0.439453125,0.5107421875,0.5791015625,0.6220703125,0.626953125,0.603515625,0.5771484375,0.5693359375,0.5546875,0.494140625,0.408203125,0.33984375,0.3212890625,0.3544921875,0.419921875,0.48828125,0.5390625,0.5517578125,0.5224609375,0.470703125,0.4296875,0.419921875,0.41015625,0.3701171875,0.3193359375,0.291015625,0.3037109375,0.353515625,0.419921875,0.490234375,0.560546875,0.6103515625,0.6240234375,0.6083984375,0.5869140625,0.5791015625,0.5771484375,0.5751953125,0.5732421875,0.5732421875,0.5751953125,0.5771484375,0.5791015625,0.5888671875,0.6240234375,0.662109375,0.6728515625,0.642578125,0.5810546875,0.509765625,0.4501953125,0.443359375,0.4921875,0.5654296875,0.6171875,0.6142578125,0.5595703125,0.4892578125,0.4228515625,0.37890625,0.37109375,0.390625,0.4130859375,0.419921875,0.4208984375,0.423828125,0.4296875,0.435546875,0.439453125,0.4404296875,0.439453125,0.44140625,0.455078125,0.4833984375,0.515625,0.5439453125,0.5576171875,0.5595703125,0.546875,0.498046875,0.4326171875,0.3896484375,0.3935546875,0.4404296875,0.509765625,0.568359375,0.5771484375,0.5322265625,0.466796875,0.421875,0.4306640625,0.4892578125,0.5693359375,0.666015625,0.7373046875,0.7431640625,0.6806640625,0.5888671875,0.509765625,0.44140625,0.3974609375,0.3984375,0.4453125,0.51171875,0.5595703125,0.5693359375,0.5546875,0.49609375,0.4130859375,0.349609375,0.3349609375,0.373046875,0.439453125,0.5126953125,0.5791015625,0.619140625,0.6201171875,0.59375,0.56640625,0.5595703125,0.5595703125,0.5634765625,0.5693359375,0.5751953125,0.5791015625,0.580078125,0.5791015625,0.564453125,0.505859375,0.421875,0.3564453125,0.33984375,0.375,0.439453125,0.5107421875,0.5751953125,0.61328125,0.615234375,0.58984375,0.564453125,0.5595703125,0.5576171875,0.5419921875,0.5126953125,0.4765625,0.447265625,0.431640625,0.4296875,0.4248046875,0.4033203125,0.3837890625,0.3916015625,0.43359375,0.5,0.5693359375,0.6357421875,0.6875,0.7021484375,0.67578125,0.626953125,0.5888671875,0.5791015625,0.5673828125,0.515625,0.443359375,0.390625,0.3828125,0.423828125,0.4892578125,0.5595703125,0.6220703125,0.6552734375,0.6484375,0.6171875,0.5869140625,0.5791015625,0.5654296875,0.505859375,0.4189453125,0.349609375,0.3291015625,0.36328125,0.4296875,0.4931640625,0.5205078125,0.509765625,0.484375,0.47265625,0.498046875,0.5595703125,0.6279296875,0.6826171875,0.701171875,0.677734375,0.6298828125,0.58984375,0.5791015625,0.583984375,0.607421875,0.6298828125,0.6240234375,0.5810546875,0.5126953125,0.439453125,0.373046875,0.3349609375,0.3486328125,0.41015625,0.490234375,0.546875,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5654296875,0.58984375,0.6123046875,0.6064453125,0.5654296875,0.4990234375,0.4296875,0.3564453125,0.283203125,0.25,0.2890625,0.3857421875,0.49609375,0.5791015625,0.6572265625,0.7421875,0.7919921875,0.7724609375,0.6904296875,0.5888671875,0.509765625,0.4423828125,0.3974609375,0.396484375,0.44140625,0.5068359375,0.556640625,0.5693359375,0.5791015625,0.611328125,0.6474609375,0.6572265625,0.626953125,0.568359375,0.5,0.44140625,0.4248046875,0.4501953125,0.490234375,0.5126953125,0.4912109375,0.4296875,0.3701171875,0.359375,0.400390625,0.462890625,0.505859375,0.498046875,0.439453125,0.365234375,0.2890625,0.25390625,0.2900390625,0.38671875,0.49609375,0.5791015625,0.6494140625,0.701171875,0.71484375,0.6845703125,0.630859375,0.5888671875,0.5791015625,0.56640625,0.5087890625,0.4248046875,0.3583984375,0.3408203125,0.375,0.439453125,0.5068359375,0.5546875,0.5625,0.5263671875,0.470703125,0.4287109375,0.419921875,0.4306640625,0.47265625,0.525390625,0.5546875,0.5400390625,0.48828125,0.419921875,0.3447265625,0.2705078125,0.236328125,0.2734375,0.369140625,0.478515625,0.5595703125,0.6279296875,0.681640625,0.69921875,0.6748046875,0.626953125,0.5888671875,0.5791015625,0.5888671875,0.6298828125,0.6806640625,0.7080078125,0.693359375,0.6396484375,0.5693359375,0.5078125,0.486328125,0.5068359375,0.5458984375,0.568359375,0.5498046875,0.4892578125,0.419921875,0.3603515625,0.33203125,0.3427734375,0.37890625,0.412109375,0.419921875,0.412109375,0.380859375,0.34765625,0.3408203125,0.3740234375,0.4375,0.509765625,0.5908203125,0.6923828125,0.7734375,0.791015625,0.740234375,0.6552734375,0.5791015625,0.4990234375,0.3955078125,0.30859375,0.2841796875,0.330078125,0.412109375,0.4892578125,0.5712890625,0.6767578125,0.7626953125,0.787109375,0.740234375,0.6572265625,0.5791015625,0.498046875,0.3935546875,0.3095703125,0.2880859375,0.3369140625,0.421875,0.5,0.5810546875,0.68359375,0.7666015625,0.787109375,0.73828125,0.6552734375,0.5791015625,0.51953125,0.5,0.5224609375,0.5615234375,0.5830078125,0.5615234375,0.5,0.419921875,0.3271484375,0.2626953125,0.265625,0.333984375,0.4296875,0.509765625,0.5771484375,0.62109375,0.619140625,0.5703125,0.501953125,0.451171875,0.439453125,0.4296875,0.3876953125,0.3349609375,0.3046875,0.3173828125,0.3701171875,0.439453125,0.5009765625,0.5185546875,0.4912109375,0.4443359375,0.4150390625,0.4306640625,0.4892578125,0.556640625,0.6025390625,0.6064453125,0.5634765625,0.5,0.4521484375,0.439453125,0.4375,0.43359375,0.4296875,0.4248046875,0.421875,0.419921875,0.419921875,0.431640625,0.4833984375,0.5546875,0.60546875,0.6103515625,0.5673828125,0.5,0.421875,0.33984375,0.29296875,0.3154296875,0.3994140625,0.5009765625,0.5791015625,0.6455078125,0.6953125,0.7080078125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.517578125,0.4814453125,0.451171875,0.4345703125,0.4296875,0.4306640625,0.4462890625,0.4755859375,0.5126953125,0.544921875,0.564453125,0.5693359375,0.568359375,0.5537109375,0.5244140625,0.490234375,0.4599609375,0.443359375,0.439453125,0.4326171875,0.4052734375,0.37890625,0.3798828125,0.419921875,0.486328125,0.5595703125,0.6259765625,0.662109375,0.6455078125,0.5791015625,0.494140625,0.4345703125,0.419921875,0.412109375,0.3896484375,0.37109375,0.3828125,0.4296875,0.4990234375,0.5693359375,0.6318359375,0.6640625,0.6435546875,0.5751953125,0.490234375,0.4326171875,0.419921875,0.4130859375,0.388671875,0.3662109375,0.3720703125,0.4169921875,0.486328125,0.5595703125,0.6201171875,0.6337890625,0.5986328125,0.5419921875,0.5029296875,0.5126953125,0.5693359375,0.6259765625,0.6337890625,0.59375,0.5341796875,0.49609375,0.5087890625,0.5693359375,0.6357421875,0.6708984375,0.65234375,0.5830078125,0.49609375,0.4345703125,0.419921875,0.412109375,0.3896484375,0.373046875,0.3857421875,0.435546875,0.5068359375,0.5791015625,0.646484375,0.6943359375,0.7021484375,0.666015625,0.609375,0.568359375,0.5595703125,0.55078125,0.51171875,0.4599609375,0.4296875,0.44140625,0.4912109375,0.5595703125,0.6240234375,0.66015625,0.6455078125,0.5830078125,0.5048828125,0.4501953125,0.439453125,0.44140625,0.4404296875,0.4375,0.4326171875,0.4267578125,0.421875,0.419921875,0.4296875,0.48046875,0.552734375,0.6064453125,0.6142578125,0.5751953125,0.509765625,0.44921875,0.427734375,0.447265625,0.482421875,0.501953125,0.48046875,0.419921875,0.35546875,0.322265625,0.3408203125,0.408203125,0.4912109375,0.5478515625,0.5595703125,0.5576171875,0.556640625,0.5576171875,0.5595703125,0.5634765625,0.5673828125,0.5693359375,0.568359375,0.5546875,0.52734375,0.4931640625,0.462890625,0.4443359375,0.439453125,0.4296875,0.392578125,0.349609375,0.3330078125,0.359375,0.41796875,0.4892578125,0.5498046875,0.564453125,0.529296875,0.474609375,0.4384765625,0.451171875,0.509765625,0.587890625,0.6806640625,0.7470703125,0.748046875,0.6826171875,0.5888671875,0.509765625,0.4375,0.3740234375,0.3408203125,0.34765625,0.380859375,0.412109375,0.419921875,0.4140625,0.392578125,0.3759765625,0.388671875,0.4365234375,0.5078125,0.5791015625,0.6435546875,0.6767578125,0.6552734375,0.583984375,0.49609375,0.4345703125,0.419921875,0.41796875,0.4169921875,0.4169921875,0.4169921875,0.4189453125,0.419921875,0.419921875,0.4130859375,0.390625,0.37109375,0.37890625,0.4228515625,0.4892578125,0.5595703125,0.623046875,0.658203125,0.6435546875,0.5810546875,0.5009765625,0.4443359375,0.4296875,0.431640625,0.4482421875,0.48046875,0.5185546875,0.55078125,0.5673828125,0.5693359375,0.5546875,0.494140625,0.41015625,0.3427734375,0.326171875,0.36328125,0.4296875,0.5,0.552734375,0.5673828125,0.5380859375,0.484375,0.44140625,0.4296875,0.419921875,0.3857421875,0.3466796875,0.3359375,0.3662109375,0.427734375,0.5,0.5673828125,0.609375,0.603515625,0.55078125,0.48046875,0.4296875,0.419921875,0.4150390625,0.3955078125,0.37890625,0.390625,0.4384765625,0.5078125,0.5791015625,0.634765625,0.6279296875,0.5576171875,0.4609375,0.390625,0.384765625,0.439453125,0.5078125,0.556640625,0.5654296875,0.533203125,0.478515625,0.4384765625,0.4296875,0.4443359375,0.5048828125,0.5888671875,0.65625,0.6728515625,0.6357421875,0.5693359375,0.49609375,0.4267578125,0.380859375,0.373046875,0.392578125,0.4150390625,0.419921875,0.4189453125,0.419921875,0.423828125,0.4296875,0.435546875,0.439453125,0.439453125,0.453125,0.509765625,0.5927734375,0.6572265625,0.6728515625,0.6357421875,0.5693359375,0.4873046875,0.37890625,0.2861328125,0.2529296875,0.2900390625,0.3662109375,0.439453125,0.517578125,0.6142578125,0.69140625,0.70703125,0.65625,0.57421875,0.5,0.431640625,0.3740234375,0.3466796875,0.3583984375,0.3935546875,0.423828125,0.4296875,0.439453125,0.4873046875,0.5537109375,0.6005859375,0.6015625,0.5576171875,0.4892578125,0.431640625,0.4306640625,0.490234375,0.5732421875,0.6337890625,0.6357421875,0.5791015625,0.5205078125,0.5087890625,0.544921875,0.599609375,0.6337890625,0.6201171875,0.5595703125,0.4765625,0.369140625,0.27734375,0.24609375,0.2861328125,0.3642578125,0.439453125,0.5078125,0.556640625,0.564453125,0.529296875,0.47265625,0.4296875,0.419921875,0.4130859375,0.3896484375,0.3701171875,0.37890625,0.42578125,0.49609375,0.5693359375,0.6396484375,0.6943359375,0.7109375,0.68359375,0.6328125,0.5908203125,0.5791015625,0.5869140625,0.626953125,0.6787109375,0.708984375,0.697265625,0.6474609375,0.5791015625,0.498046875,0.38671875,0.287109375,0.2470703125,0.2783203125,0.353515625,0.4296875,0.4990234375,0.55078125,0.5625,0.53125,0.478515625,0.4384765625,0.4296875,0.4404296875,0.4814453125,0.5322265625,0.55859375,0.5419921875,0.48828125,0.419921875,0.36328125,0.3642578125,0.4228515625,0.505859375,0.5654296875,0.5654296875,0.509765625,0.4423828125,0.3994140625,0.400390625,0.4482421875,0.515625,0.56640625,0.5791015625,0.5693359375,0.5185546875,0.4462890625,0.392578125,0.384765625,0.423828125,0.4892578125,0.56640625,0.65234375,0.7060546875,0.693359375,0.6171875,0.5185546875,0.439453125,0.36328125,0.2783203125,0.2255859375,0.2392578125,0.3154296875,0.412109375,0.4892578125,0.564453125,0.6494140625,0.7021484375,0.6875,0.609375,0.5107421875,0.4296875,0.3525390625,0.2685546875,0.2197265625,0.2392578125,0.3212890625,0.421875,0.5,0.57421875,0.6552734375,0.703125,0.6845703125,0.60546875,0.5078125,0.4296875,0.375,0.375,0.4326171875,0.5126953125,0.568359375,0.56640625,0.509765625,0.431640625,0.33984375,0.2744140625,0.2744140625,0.33984375,0.431640625,0.509765625,0.578125,0.634765625,0.6572265625,0.640625,0.599609375,0.56640625,0.5595703125,0.5517578125,0.5126953125,0.4619140625,0.4326171875,0.4443359375,0.4931640625,0.5595703125,0.6142578125,0.6171875,0.5654296875,0.4921875,0.443359375,0.4501953125,0.509765625,0.580078125,0.6376953125,0.6611328125,0.642578125,0.6005859375,0.56640625,0.5595703125,0.5615234375,0.5634765625,0.5673828125,0.5712890625,0.5751953125,0.5771484375,0.5791015625,0.5888671875,0.6201171875,0.6533203125,0.66015625,0.62890625,0.568359375,0.5,0.421875,0.3212890625,0.2392578125,0.2197265625,0.2685546875,0.3525390625,0.4296875,0.5,0.5546875,0.5712890625,0.52734375,0.4716796875,0.4228515625,0.3916015625,0.376953125,0.37109375,0.3876953125,0.4326171875,0.4970703125,0.5615234375,0.6044921875,0.6220703125,0.626953125,0.611328125,0.5703125,0.5146484375,0.46484375,0.4345703125,0.4287109375,0.421875,0.3974609375,0.3759765625,0.3828125,0.427734375,0.4970703125,0.5703125,0.6357421875,0.6640625,0.630859375,0.5400390625,0.4306640625,0.3515625,0.3251953125,0.3154296875,0.314453125,0.33984375,0.4013671875,0.484375,0.5634765625,0.6220703125,0.6640625,0.666015625,0.609375,0.5087890625,0.4052734375,0.33984375,0.3251953125,0.3212890625,0.3095703125,0.310546875,0.3447265625,0.412109375,0.494140625,0.5703125,0.6337890625,0.6630859375,0.6494140625,0.611328125,0.5791015625,0.5810546875,0.6220703125,0.6611328125,0.6572265625,0.61328125,0.560546875,0.5361328125,0.55859375,0.6220703125,0.685546875,0.708984375,0.6630859375,0.5595703125,0.4375,0.3525390625,0.3251953125,0.3154296875,0.314453125,0.34375,0.4140625,0.5107421875,0.6044921875,0.673828125,0.7294921875,0.755859375,0.736328125,0.6787109375,0.611328125,0.5712890625,0.5703125,0.5712890625,0.5439453125,0.5,0.4697265625,0.47265625,0.51171875,0.5703125,0.625,0.646484375,0.619140625,0.55078125,0.4755859375,0.4306640625,0.4287109375,0.4384765625,0.439453125,0.42578125,0.3984375,0.3662109375,0.33984375,0.3251953125,0.3291015625,0.384765625,0.478515625,0.5693359375,0.615234375,0.6044921875,0.55078125,0.4951171875,0.4580078125,0.4423828125,0.4345703125,0.4189453125,0.3818359375,0.3251953125,0.2734375,0.263671875,0.314453125,0.41015625,0.5078125,0.5654296875,0.5703125,0.5595703125,0.552734375,0.5546875,0.568359375,0.5888671875,0.609375,0.6220703125,0.62890625,0.619140625,0.5859375,0.53515625,0.482421875,0.4453125,0.4287109375,0.4091796875,0.3623046875,0.3115234375,0.2900390625,0.3154296875,0.3759765625,0.4482421875,0.51171875,0.541015625,0.53125,0.501953125,0.4833984375,0.4990234375,0.55078125,0.62109375,0.70703125,0.7724609375,0.7763671875,0.7177734375,0.6298828125,0.55078125,0.4765625,0.396484375,0.3330078125,0.3037109375,0.306640625,0.3212890625,0.3251953125,0.3251953125,0.33203125,0.36328125,0.4296875,0.5185546875,0.60546875,0.673828125,0.7265625,0.7353515625,0.6767578125,0.5634765625,0.4375,0.3525390625,0.3251953125,0.3154296875,0.3076171875,0.3056640625,0.310546875,0.318359375,0.32421875,0.3251953125,0.32421875,0.32421875,0.3408203125,0.3837890625,0.4482421875,0.5146484375,0.5703125,0.6162109375,0.63671875,0.6103515625,0.54296875,0.4599609375,0.3994140625,0.376953125,0.3740234375,0.40234375,0.462890625,0.5361328125,0.5966796875,0.625,0.6220703125,0.595703125,0.5166015625,0.4072265625,0.31640625,0.283203125,0.3115234375,0.376953125,0.4482421875,0.5068359375,0.5283203125,0.501953125,0.4462890625,0.3974609375,0.376953125,0.3603515625,0.3251953125,0.2978515625,0.3037109375,0.3525390625,0.42578125,0.5,0.5634765625,0.5888671875,0.5556640625,0.4755859375,0.384765625,0.3291015625,0.3251953125,0.3349609375,0.349609375,0.3828125,0.4443359375,0.5263671875,0.607421875,0.673828125,0.71875,0.6982421875,0.609375,0.4931640625,0.404296875,0.3837890625,0.4287109375,0.486328125,0.5185546875,0.5107421875,0.466796875,0.4111328125,0.376953125,0.376953125,0.4033203125,0.482421875,0.591796875,0.6826171875,0.7158203125,0.6875,0.6220703125,0.546875,0.4638671875,0.392578125,0.3486328125,0.3349609375,0.3330078125,0.3251953125,0.318359375,0.3232421875,0.34375,0.3759765625,0.40625,0.4248046875,0.4287109375,0.443359375,0.5087890625,0.60546875,0.6865234375,0.7158203125,0.6865234375,0.6220703125,0.5400390625,0.4345703125,0.3408203125,0.298828125,0.318359375,0.3740234375,0.4287109375,0.4873046875,0.5625,0.6259765625,0.64453125,0.61328125,0.5546875,0.5,0.4482421875,0.40234375,0.373046875,0.3671875,0.3759765625,0.3828125,0.376953125,0.37890625,0.421875,0.4892578125,0.5419921875,0.552734375,0.5146484375,0.4482421875,0.3916015625,0.40234375,0.4853515625,0.6015625,0.693359375,0.7177734375,0.673828125,0.62109375,0.60546875,0.625,0.6533203125,0.6630859375,0.6337890625,0.5703125,0.48828125,0.3828125,0.29296875,0.259765625,0.29296875,0.3623046875,0.4287109375,0.486328125,0.5185546875,0.5068359375,0.453125,0.384765625,0.3369140625,0.3251953125,0.322265625,0.31640625,0.3291015625,0.376953125,0.45703125,0.544921875,0.6220703125,0.6943359375,0.7587890625,0.791015625,0.779296875,0.7353515625,0.6923828125,0.673828125,0.671875,0.7001953125,0.744140625,0.7744140625,0.7705078125,0.7314453125,0.673828125,0.5966796875,0.474609375,0.34375,0.2607421875,0.25390625,0.3056640625,0.376953125,0.4453125,0.4921875,0.498046875,0.462890625,0.4111328125,0.376953125,0.376953125,0.39453125,0.431640625,0.4677734375,0.4755859375,0.4453125,0.3876953125,0.3251953125,0.279296875,0.2978515625,0.3828125,0.494140625,0.5791015625,0.5966796875,0.55078125,0.4931640625,0.45703125,0.46484375,0.5185546875,0.59375,0.65234375,0.673828125,0.669921875,0.6142578125,0.5205078125,0.4296875,0.3837890625,0.39453125,0.4482421875,0.515625,0.59375,0.646484375,0.6416015625,0.580078125,0.498046875,0.4287109375,0.3623046875,0.2900390625,0.2451171875,0.2548828125,0.314453125,0.3896484375,0.4482421875,0.505859375,0.576171875,0.623046875,0.61328125,0.546875,0.4560546875,0.376953125,0.3037109375,0.236328125,0.2119140625,0.2529296875,0.34375,0.4375,0.5,0.5537109375,0.60546875,0.6259765625,0.5927734375,0.5185546875,0.4365234375,0.376953125,0.33984375,0.359375,0.4345703125,0.5283203125,0.59375,0.599609375,0.55078125,0.4833984375,0.40234375,0.345703125,0.345703125,0.40234375,0.4833984375,0.55078125,0.609375,0.6513671875,0.6591796875,0.6337890625,0.59375,0.568359375,0.5703125,0.5732421875,0.55078125,0.5146484375,0.4892578125,0.490234375,0.521484375,0.5703125,0.609375,0.6025390625,0.5546875,0.4970703125,0.46875,0.4892578125,0.55078125,0.6201171875,0.6689453125,0.6787109375,0.6484375,0.6015625,0.5693359375,0.5703125,0.5810546875,0.5947265625,0.6123046875,0.630859375,0.6484375,0.662109375,0.673828125,0.6865234375,0.7021484375,0.7041015625,0.6748046875,0.619140625,0.5546875,0.5,0.4375,0.34375,0.2529296875,0.2119140625,0.236328125,0.3037109375,0.376953125,0.4501953125,0.5146484375,0.546875,0.5244140625,0.474609375,0.4287109375,0.392578125,0.3642578125,0.3408203125,0.3388671875,0.375,0.447265625,0.5322265625,0.599609375,0.634765625,0.6572265625,0.65625,0.6240234375,0.568359375,0.51171875,0.4765625,0.46875,0.4609375,0.4267578125,0.38671875,0.3720703125,0.3984375,0.458984375,0.5302734375,0.5966796875,0.6318359375,0.6044921875,0.513671875,0.39453125,0.30078125,0.2587890625,0.2392578125,0.2548828125,0.3193359375,0.421875,0.529296875,0.6044921875,0.634765625,0.64453125,0.61328125,0.5322265625,0.4248046875,0.3271484375,0.2705078125,0.2587890625,0.2548828125,0.24609375,0.25390625,0.294921875,0.3681640625,0.4541015625,0.5302734375,0.599609375,0.6533203125,0.67578125,0.666015625,0.638671875,0.6240234375,0.634765625,0.6435546875,0.615234375,0.5654296875,0.52734375,0.5263671875,0.5673828125,0.634765625,0.69921875,0.7216796875,0.6708984375,0.5517578125,0.41015625,0.3037109375,0.2587890625,0.23828125,0.2509765625,0.3193359375,0.4384765625,0.57421875,0.6806640625,0.740234375,0.775390625,0.767578125,0.7099609375,0.6240234375,0.5478515625,0.515625,0.5302734375,0.548828125,0.5419921875,0.513671875,0.482421875,0.4716796875,0.4892578125,0.5302734375,0.5693359375,0.5791015625,0.5546875,0.5078125,0.4658203125,0.451171875,0.46875,0.4931640625,0.5029296875,0.48046875,0.4248046875,0.353515625,0.29296875,0.2587890625,0.248046875,0.296875,0.40234375,0.5244140625,0.61328125,0.63671875,0.6044921875,0.55859375,0.509765625,0.4580078125,0.4052734375,0.353515625,0.3046875,0.2587890625,0.224609375,0.240234375,0.3115234375,0.4140625,0.5029296875,0.54296875,0.5302734375,0.5029296875,0.4814453125,0.48046875,0.5078125,0.5556640625,0.603515625,0.634765625,0.66015625,0.6748046875,0.662109375,0.619140625,0.556640625,0.501953125,0.46875,0.431640625,0.361328125,0.287109375,0.248046875,0.263671875,0.322265625,0.39453125,0.462890625,0.5146484375,0.541015625,0.546875,0.548828125,0.5654296875,0.6044921875,0.6591796875,0.7333984375,0.794921875,0.806640625,0.759765625,0.6806640625,0.6044921875,0.5263671875,0.4326171875,0.341796875,0.28125,0.2568359375,0.2568359375,0.2587890625,0.263671875,0.2958984375,0.369140625,0.4775390625,0.5927734375,0.6845703125,0.740234375,0.7763671875,0.7666015625,0.6875,0.5517578125,0.40625,0.3017578125,0.2587890625,0.2333984375,0.2138671875,0.208984375,0.220703125,0.240234375,0.2548828125,0.2587890625,0.2626953125,0.2841796875,0.3310546875,0.39453125,0.4580078125,0.5048828125,0.5302734375,0.5478515625,0.5576171875,0.54296875,0.5029296875,0.4462890625,0.396484375,0.3642578125,0.3486328125,0.376953125,0.4521484375,0.546875,0.6220703125,0.650390625,0.634765625,0.5927734375,0.4990234375,0.3798828125,0.2900390625,0.26171875,0.296875,0.3642578125,0.4375,0.5048828125,0.5380859375,0.5185546875,0.4609375,0.3994140625,0.3642578125,0.33203125,0.287109375,0.2587890625,0.275390625,0.3388671875,0.4228515625,0.5,0.5595703125,0.568359375,0.5078125,0.40234375,0.30078125,0.2490234375,0.2587890625,0.2890625,0.3408203125,0.4189453125,0.5166015625,0.6123046875,0.6884765625,0.740234375,0.771484375,0.7451171875,0.6591796875,0.5498046875,0.4638671875,0.4375,0.46875,0.5068359375,0.51171875,0.4775390625,0.4189453125,0.3671875,0.3466796875,0.3642578125,0.40625,0.5,0.619140625,0.708984375,0.7373046875,0.7021484375,0.634765625,0.560546875,0.4775390625,0.3994140625,0.341796875,0.306640625,0.283203125,0.2587890625,0.23828125,0.244140625,0.2861328125,0.353515625,0.419921875,0.4609375,0.46875,0.4833984375,0.544921875,0.6357421875,0.708984375,0.7333984375,0.701171875,0.634765625,0.55859375,0.4755859375,0.4111328125,0.3896484375,0.4091796875,0.4443359375,0.46875,0.4912109375,0.51953125,0.5439453125,0.5517578125,0.541015625,0.51953125,0.5,0.4814453125,0.466796875,0.4521484375,0.435546875,0.4150390625,0.390625,0.3642578125,0.3486328125,0.375,0.4306640625,0.48046875,0.4931640625,0.4599609375,0.39453125,0.3388671875,0.3544921875,0.4521484375,0.59375,0.7158203125,0.7666015625,0.740234375,0.701171875,0.6845703125,0.6826171875,0.67578125,0.6494140625,0.5986328125,0.5302734375,0.4521484375,0.3662109375,0.3056640625,0.30078125,0.3486328125,0.4169921875,0.46875,0.5087890625,0.515625,0.4775390625,0.40234375,0.322265625,0.2705078125,0.2587890625,0.2578125,0.26171875,0.2919921875,0.361328125,0.4580078125,0.556640625,0.634765625,0.7109375,0.791015625,0.84765625,0.8564453125,0.8212890625,0.7734375,0.740234375,0.720703125,0.7275390625,0.7568359375,0.787109375,0.7978515625,0.7802734375,0.740234375,0.677734375,0.556640625,0.4111328125,0.30078125,0.263671875,0.296875,0.3642578125,0.4296875,0.466796875,0.4609375,0.4189453125,0.37109375,0.3486328125,0.3642578125,0.3935546875,0.4267578125,0.44140625,0.421875,0.3701171875,0.3095703125,0.2587890625,0.2294921875,0.2646484375,0.3671875,0.4970703125,0.599609375,0.634765625,0.6044921875,0.5595703125,0.5283203125,0.5302734375,0.57421875,0.642578125,0.705078125,0.740234375,0.7509765625,0.7021484375,0.5966796875,0.474609375,0.3857421875,0.3623046875,0.39453125,0.4462890625,0.5146484375,0.57421875,0.59375,0.568359375,0.517578125,0.46875,0.4208984375,0.3671875,0.328125,0.3193359375,0.33984375,0.37109375,0.39453125,0.421875,0.4736328125,0.5244140625,0.5380859375,0.50390625,0.4375,0.3642578125,0.294921875,0.248046875,0.2509765625,0.30859375,0.3955078125,0.4677734375,0.5,0.517578125,0.525390625,0.513671875,0.4775390625,0.4296875,0.388671875,0.3642578125,0.357421875,0.3994140625,0.4833984375,0.57421875,0.6337890625,0.640625,0.6044921875,0.5546875,0.4951171875,0.4521484375,0.4521484375,0.4951171875,0.5546875,0.6044921875,0.6435546875,0.65234375,0.6240234375,0.57421875,0.5283203125,0.5126953125,0.5302734375,0.552734375,0.5615234375,0.5517578125,0.533203125,0.5166015625,0.5146484375,0.5302734375,0.5400390625,0.521484375,0.48828125,0.4697265625,0.4853515625,0.5361328125,0.6044921875,0.6689453125,0.697265625,0.673828125,0.6123046875,0.5478515625,0.515625,0.5302734375,0.556640625,0.5859375,0.6181640625,0.6513671875,0.68359375,0.712890625,0.740234375,0.7626953125,0.763671875,0.7294921875,0.662109375,0.5859375,0.52734375,0.5,0.4677734375,0.3955078125,0.30859375,0.2509765625,0.248046875,0.294921875,0.3642578125,0.439453125,0.5205078125,0.5771484375,0.5078125,0.4912109375,0.4697265625,0.4375,0.39453125,0.3486328125,0.314453125,0.3193359375,0.375,0.4638671875,0.5498046875,0.6044921875,0.6474609375,0.6708984375,0.6630859375,0.6240234375,0.5732421875,0.5380859375,0.5302734375,0.5185546875,0.4697265625,0.40234375,0.3564453125,0.35546875,0.400390625,0.46875,0.5400390625,0.59375,0.59375,0.52734375,0.41796875,0.318359375,0.2587890625,0.2255859375,0.2451171875,0.328125,0.447265625,0.5546875,0.6083984375,0.6044921875,0.578125,0.5224609375,0.44140625,0.3583984375,0.294921875,0.2646484375,0.2587890625,0.25390625,0.2373046875,0.2314453125,0.2568359375,0.31640625,0.39453125,0.46875,0.544921875,0.625,0.6826171875,0.6953125,0.6689453125,0.6298828125,0.6044921875,0.576171875,0.5205078125,0.4638671875,0.44140625,0.46875,0.5322265625,0.6044921875,0.6728515625,0.708984375,0.6796875,0.5771484375,0.4375,0.3212890625,0.2587890625,0.22265625,0.232421875,0.3115234375,0.447265625,0.5927734375,0.697265625,0.740234375,0.7529296875,0.712890625,0.6240234375,0.521484375,0.4501953125,0.4345703125,0.46875,0.509765625,0.52734375,0.5166015625,0.4853515625,0.45703125,0.4501953125,0.46875,0.490234375,0.490234375,0.474609375,0.4609375,0.462890625,0.48828125,0.5302734375,0.57421875,0.6005859375,0.58203125,0.5107421875,0.408203125,0.3154296875,0.2587890625,0.2275390625,0.2548828125,0.3505859375,0.48046875,0.5927734375,0.6455078125,0.634765625,0.6044921875,0.5546875,0.4853515625,0.408203125,0.3388671875,0.2900390625,0.2587890625,0.244140625,0.27734375,0.3525390625,0.4384765625,0.4970703125,0.5048828125,0.46875,0.421875,0.37890625,0.3671875,0.40234375,0.4755859375,0.55078125,0.6044921875,0.6533203125,0.7041015625,0.7294921875,0.708984375,0.650390625,0.58203125,0.5302734375,0.4716796875,0.376953125,0.2783203125,0.2236328125,0.2333984375,0.2919921875,0.3642578125,0.4365234375,0.5068359375,0.560546875,0.5908203125,0.6025390625,0.61328125,0.634765625,0.6708984375,0.7314453125,0.7900390625,0.8095703125,0.7763671875,0.7080078125,0.634765625,0.556640625,0.4580078125,0.361328125,0.2919921875,0.26171875,0.2578125,0.2587890625,0.2666015625,0.3095703125,0.3974609375,0.513671875,0.6259765625,0.703125,0.740234375,0.7607421875,0.748046875,0.6796875,0.560546875,0.4248046875,0.318359375,0.2587890625,0.21484375,0.181640625,0.1728515625,0.1923828125,0.2265625,0.2529296875,0.2587890625,0.2666015625,0.302734375,0.3642578125,0.427734375,0.470703125,0.482421875,0.46875,0.455078125,0.458984375,0.47265625,0.4794921875,0.46875,0.4375,0.39453125,0.361328125,0.3798828125,0.4521484375,0.546875,0.619140625,0.6376953125,0.6044921875,0.5458984375,0.4453125,0.3369140625,0.26953125,0.26953125,0.3232421875,0.39453125,0.470703125,0.548828125,0.5966796875,0.5849609375,0.5234375,0.4482421875,0.39453125,0.3427734375,0.2802734375,0.2421875,0.2587890625,0.3291015625,0.4208984375,0.5,0.5576171875,0.5546875,0.48046875,0.3671875,0.2685546875,0.23046875,0.2587890625,0.310546875,0.38671875,0.482421875,0.580078125,0.658203125,0.7099609375,0.740234375,0.7568359375,0.7353515625,0.673828125,0.595703125,0.5341796875,0.5126953125,0.5302734375,0.5458984375,0.5224609375,0.4638671875,0.3974609375,0.35546875,0.357421875,0.39453125,0.453125,0.5537109375,0.662109375,0.7294921875,0.7294921875,0.67578125,0.6044921875,0.533203125,0.46484375,0.408203125,0.3662109375,0.3349609375,0.30078125,0.2587890625,0.220703125,0.220703125,0.2734375,0.36328125,0.4580078125,0.517578125,0.5302734375,0.5419921875,0.5927734375,0.662109375,0.712890625,0.7158203125,0.6728515625,0.6044921875,0.5361328125,0.4853515625,0.4697265625,0.48828125,0.521484375,0.5400390625,0.5302734375,0.5078125,0.4794921875,0.455078125,0.447265625,0.4580078125,0.4794921875,0.5,0.521484375,0.548828125,0.5634765625,0.546875,0.5009765625,0.443359375,0.39453125,0.359375,0.3642578125,0.40234375,0.4443359375,0.4580078125,0.4287109375,0.3642578125,0.306640625,0.3154296875,0.4052734375,0.546875,0.6787109375,0.7470703125,0.740234375,0.7177734375,0.7080078125,0.6953125,0.666015625,0.611328125,0.5419921875,0.46875,0.3974609375,0.3369140625,0.3173828125,0.3525390625,0.4248046875,0.4931640625,0.5302734375,0.548828125,0.53515625,0.48046875,0.3974609375,0.3173828125,0.2685546875,0.2587890625,0.2568359375,0.2568359375,0.28125,0.341796875,0.4326171875,0.5263671875,0.6044921875,0.68359375,0.779296875,0.8564453125,0.880859375,0.849609375,0.791015625,0.740234375,0.69921875,0.681640625,0.693359375,0.7236328125,0.751953125,0.759765625,0.740234375,0.6962890625,0.59375,0.4580078125,0.34765625,0.3037109375,0.3291015625,0.39453125,0.4580078125,0.484375,0.4638671875,0.4140625,0.369140625,0.3603515625,0.39453125,0.439453125,0.470703125,0.46875,0.4248046875,0.3564453125,0.2939453125,0.2587890625,0.24609375,0.287109375,0.3857421875,0.5078125,0.6064453125,0.6484375,0.634765625,0.60546875,0.572265625,0.5576171875,0.5771484375,0.62890625,0.689453125,0.740234375,0.771484375,0.744140625,0.6484375,0.5185546875,0.40625,0.353515625,0.3642578125,0.3974609375,0.4521484375,0.513671875,0.5576171875,0.5703125,0.5556640625,0.5302734375,0.5029296875,0.474609375,0.447265625,0.421875,0.4013671875,0.3828125,0.3642578125,0.3564453125,0.3876953125,0.4443359375,0.4912109375,0.4990234375,0.4609375,0.39453125,0.330078125,0.30078125,0.3251953125,0.3916015625,0.46484375,0.505859375,0.5,0.4755859375,0.4384765625,0.3974609375,0.369140625,0.36328125,0.3759765625,0.39453125,0.421875,0.48046875,0.5576171875,0.6240234375,0.6591796875,0.6572265625,0.634765625,0.60546875,0.5712890625,0.546875,0.546875,0.5712890625,0.60546875,0.634765625,0.650390625,0.623046875,0.5576171875,0.4833984375,0.4345703125,0.4326171875,0.46875,0.515625,0.5595703125,0.5830078125,0.5712890625,0.5341796875,0.494140625,0.46875,0.4443359375,0.4091796875,0.3896484375,0.4111328125,0.4755859375,0.55859375,0.634765625,0.6943359375,0.7001953125,0.642578125,0.5498046875,0.4677734375,0.4384765625,0.46875,0.513671875,0.552734375,0.587890625,0.62109375,0.65625,0.6962890625,0.740234375,0.7763671875,0.7685546875,0.708984375,0.619140625,0.53515625,0.4931640625,0.5,0.505859375,0.46484375,0.3916015625,0.3251953125,0.30078125,0.330078125,0.39453125,0.4736328125,0.5693359375,0.646484375,0.4873046875,0.51171875,0.5234375,0.5009765625,0.4482421875,0.3818359375,0.314453125,0.2802734375,0.3076171875,0.3876953125,0.48046875,0.55078125,0.611328125,0.658203125,0.673828125,0.6533203125,0.611328125,0.578125,0.5703125,0.556640625,0.498046875,0.4130859375,0.345703125,0.3271484375,0.3623046875,0.4287109375,0.5048828125,0.580078125,0.6162109375,0.5849609375,0.4970703125,0.3974609375,0.3251953125,0.2783203125,0.2900390625,0.3671875,0.474609375,0.5615234375,0.5869140625,0.55078125,0.49609375,0.431640625,0.3720703125,0.333984375,0.3212890625,0.32421875,0.3251953125,0.318359375,0.2890625,0.2587890625,0.255859375,0.2919921875,0.3564453125,0.4287109375,0.5087890625,0.60546875,0.6845703125,0.7080078125,0.671875,0.607421875,0.55078125,0.4912109375,0.4130859375,0.349609375,0.3408203125,0.392578125,0.474609375,0.55078125,0.6240234375,0.6845703125,0.693359375,0.6298828125,0.5146484375,0.400390625,0.3251953125,0.2724609375,0.263671875,0.322265625,0.435546875,0.5615234375,0.646484375,0.673828125,0.6689453125,0.611328125,0.5126953125,0.41796875,0.3671875,0.3759765625,0.4287109375,0.4873046875,0.5263671875,0.529296875,0.4990234375,0.455078125,0.427734375,0.4287109375,0.43359375,0.4228515625,0.41015625,0.41796875,0.4521484375,0.5087890625,0.5703125,0.6328125,0.68359375,0.685546875,0.62109375,0.509765625,0.3994140625,0.3251953125,0.2744140625,0.271484375,0.333984375,0.4423828125,0.552734375,0.6162109375,0.6220703125,0.6064453125,0.568359375,0.5087890625,0.4384765625,0.37890625,0.3408203125,0.3251953125,0.326171875,0.3671875,0.43359375,0.4912109375,0.5107421875,0.484375,0.4287109375,0.36328125,0.2978515625,0.2685546875,0.30078125,0.384765625,0.48046875,0.55078125,0.6201171875,0.7021484375,0.763671875,0.7685546875,0.7158203125,0.6376953125,0.5703125,0.49609375,0.3857421875,0.2783203125,0.22265625,0.2392578125,0.3037109375,0.376953125,0.451171875,0.52734375,0.587890625,0.6171875,0.6201171875,0.6162109375,0.6220703125,0.6416015625,0.69140625,0.74609375,0.7724609375,0.7509765625,0.693359375,0.6220703125,0.544921875,0.45703125,0.376953125,0.3291015625,0.31640625,0.322265625,0.3251953125,0.33203125,0.3681640625,0.4384765625,0.525390625,0.60546875,0.6552734375,0.673828125,0.68359375,0.6845703125,0.6552734375,0.5849609375,0.48828125,0.39453125,0.3251953125,0.265625,0.220703125,0.2099609375,0.2353515625,0.28125,0.3173828125,0.3251953125,0.3349609375,0.376953125,0.4384765625,0.4873046875,0.5009765625,0.4765625,0.4287109375,0.388671875,0.388671875,0.4296875,0.482421875,0.5126953125,0.5,0.4482421875,0.3994140625,0.40234375,0.4599609375,0.5390625,0.5966796875,0.599609375,0.55078125,0.4794921875,0.3798828125,0.2919921875,0.2607421875,0.296875,0.3720703125,0.4482421875,0.5263671875,0.6142578125,0.6728515625,0.6689453125,0.6044921875,0.517578125,0.4482421875,0.37890625,0.298828125,0.24609375,0.2548828125,0.3251953125,0.419921875,0.5,0.556640625,0.552734375,0.4814453125,0.37890625,0.2978515625,0.2802734375,0.3251953125,0.3916015625,0.47265625,0.5546875,0.6162109375,0.6494140625,0.6640625,0.673828125,0.6796875,0.6689453125,0.6396484375,0.603515625,0.5751953125,0.5634765625,0.5703125,0.568359375,0.525390625,0.455078125,0.392578125,0.3681640625,0.392578125,0.4482421875,0.51953125,0.619140625,0.70703125,0.73828125,0.7021484375,0.626953125,0.55078125,0.484375,0.4404296875,0.4228515625,0.4189453125,0.4111328125,0.380859375,0.3251953125,0.271484375,0.2568359375,0.2998046875,0.390625,0.490234375,0.5556640625,0.5703125,0.5791015625,0.619140625,0.66796875,0.693359375,0.67578125,0.62109375,0.55078125,0.4892578125,0.46875,0.4970703125,0.5546875,0.6025390625,0.609375,0.5703125,0.51171875,0.4365234375,0.373046875,0.3544921875,0.3857421875,0.4443359375,0.5,0.556640625,0.623046875,0.6669921875,0.6572265625,0.5966796875,0.515625,0.4482421875,0.396484375,0.384765625,0.4111328125,0.44921875,0.4658203125,0.4404296875,0.376953125,0.3154296875,0.3056640625,0.3662109375,0.478515625,0.5966796875,0.6669921875,0.673828125,0.66796875,0.671875,0.6689453125,0.638671875,0.5791015625,0.5029296875,0.4287109375,0.361328125,0.3193359375,0.330078125,0.3935546875,0.48046875,0.546875,0.5703125,0.57421875,0.552734375,0.5,0.4306640625,0.3681640625,0.3330078125,0.3251953125,0.3212890625,0.306640625,0.3037109375,0.3330078125,0.396484375,0.4765625,0.55078125,0.6328125,0.7353515625,0.8212890625,0.849609375,0.8115234375,0.740234375,0.673828125,0.615234375,0.576171875,0.572265625,0.603515625,0.646484375,0.6748046875,0.673828125,0.6484375,0.5712890625,0.4658203125,0.3798828125,0.3505859375,0.3818359375,0.4482421875,0.5087890625,0.525390625,0.4931640625,0.4375,0.39453125,0.3984375,0.4482421875,0.505859375,0.5419921875,0.5341796875,0.48046875,0.4052734375,0.3466796875,0.3251953125,0.32421875,0.3583984375,0.4296875,0.517578125,0.5888671875,0.623046875,0.6220703125,0.6044921875,0.5673828125,0.53125,0.5234375,0.5537109375,0.611328125,0.673828125,0.724609375,0.7275390625,0.6650390625,0.556640625,0.4462890625,0.3828125,0.376953125,0.3935546875,0.4306640625,0.4833984375,0.5341796875,0.5673828125,0.5771484375,0.5703125,0.5625,0.5615234375,0.5546875,0.529296875,0.484375,0.4296875,0.376953125,0.33984375,0.3525390625,0.412109375,0.482421875,0.5234375,0.5087890625,0.4482421875,0.38671875,0.3701171875,0.40625,0.4716796875,0.52734375,0.5380859375,0.5,0.44140625,0.3681640625,0.3095703125,0.2958984375,0.33203125,0.392578125,0.4482421875,0.5029296875,0.5673828125,0.623046875,0.65234375,0.6513671875,0.634765625,0.6220703125,0.6103515625,0.5966796875,0.5869140625,0.5869140625,0.5966796875,0.6103515625,0.6220703125,0.619140625,0.5673828125,0.48046875,0.3994140625,0.359375,0.375,0.4287109375,0.49609375,0.5703125,0.619140625,0.615234375,0.5595703125,0.4873046875,0.4287109375,0.3740234375,0.318359375,0.298828125,0.3408203125,0.4345703125,0.5400390625,0.6220703125,0.6787109375,0.671875,0.5966796875,0.4892578125,0.404296875,0.3837890625,0.4287109375,0.4853515625,0.5244140625,0.544921875,0.5576171875,0.578125,0.6162109375,0.673828125,0.7216796875,0.7158203125,0.650390625,0.556640625,0.482421875,0.462890625,0.5,0.5380859375,0.52734375,0.4716796875,0.40625,0.3701171875,0.38671875,0.4482421875,0.529296875,0.6318359375,0.7177734375,0.47265625,0.5263671875,0.5615234375,0.548828125,0.4892578125,0.412109375,0.322265625,0.26171875,0.267578125,0.3369140625,0.4306640625,0.509765625,0.5791015625,0.6357421875,0.66015625,0.6435546875,0.6025390625,0.568359375,0.5595703125,0.546875,0.490234375,0.41015625,0.3486328125,0.3349609375,0.373046875,0.439453125,0.5185546875,0.609375,0.6708984375,0.6640625,0.59375,0.498046875,0.419921875,0.36328125,0.3623046875,0.4208984375,0.5029296875,0.5625,0.564453125,0.509765625,0.4404296875,0.3798828125,0.34765625,0.3525390625,0.3837890625,0.412109375,0.419921875,0.41015625,0.37109375,0.322265625,0.296875,0.314453125,0.369140625,0.439453125,0.5205078125,0.62109375,0.701171875,0.7177734375,0.66796875,0.583984375,0.509765625,0.4326171875,0.3408203125,0.275390625,0.2734375,0.337890625,0.4306640625,0.509765625,0.5869140625,0.6689453125,0.71484375,0.6904296875,0.603515625,0.5,0.419921875,0.35546875,0.322265625,0.34375,0.4150390625,0.5029296875,0.564453125,0.5791015625,0.568359375,0.51171875,0.4287109375,0.361328125,0.341796875,0.375,0.439453125,0.5078125,0.5576171875,0.5693359375,0.5390625,0.4873046875,0.4482421875,0.439453125,0.4345703125,0.4091796875,0.3837890625,0.3857421875,0.423828125,0.48828125,0.5595703125,0.6337890625,0.708984375,0.7431640625,0.7060546875,0.609375,0.5009765625,0.419921875,0.35546875,0.3232421875,0.3447265625,0.4150390625,0.5,0.5576171875,0.5693359375,0.564453125,0.5458984375,0.513671875,0.4755859375,0.443359375,0.4248046875,0.419921875,0.4287109375,0.470703125,0.5263671875,0.5625,0.5546875,0.5068359375,0.439453125,0.36328125,0.2802734375,0.23046875,0.2490234375,0.3291015625,0.4296875,0.509765625,0.5888671875,0.6865234375,0.7626953125,0.7763671875,0.7216796875,0.6357421875,0.5595703125,0.478515625,0.369140625,0.2744140625,0.2392578125,0.275390625,0.353515625,0.4296875,0.5029296875,0.5712890625,0.6142578125,0.6201171875,0.59765625,0.57421875,0.5693359375,0.5810546875,0.6240234375,0.677734375,0.70703125,0.6923828125,0.6396484375,0.5693359375,0.49609375,0.42578125,0.37890625,0.3701171875,0.3896484375,0.4130859375,0.419921875,0.4228515625,0.44140625,0.4755859375,0.517578125,0.5537109375,0.57421875,0.5791015625,0.5869140625,0.609375,0.6259765625,0.61328125,0.5634765625,0.4921875,0.419921875,0.3515625,0.30078125,0.287109375,0.3173828125,0.369140625,0.41015625,0.419921875,0.4296875,0.4716796875,0.52734375,0.5615234375,0.5537109375,0.505859375,0.439453125,0.3837890625,0.380859375,0.431640625,0.5029296875,0.552734375,0.546875,0.4892578125,0.431640625,0.423828125,0.466796875,0.5322265625,0.5751953125,0.5673828125,0.509765625,0.4306640625,0.3359375,0.2646484375,0.2587890625,0.3193359375,0.41015625,0.4892578125,0.5693359375,0.662109375,0.7275390625,0.7265625,0.66015625,0.5673828125,0.4892578125,0.412109375,0.3203125,0.255859375,0.2578125,0.3251953125,0.419921875,0.5,0.5576171875,0.5595703125,0.5029296875,0.421875,0.36328125,0.36328125,0.419921875,0.4912109375,0.560546875,0.6083984375,0.6201171875,0.603515625,0.583984375,0.5791015625,0.580078125,0.578125,0.572265625,0.56640625,0.560546875,0.55859375,0.5595703125,0.5498046875,0.501953125,0.4345703125,0.3857421875,0.3818359375,0.4228515625,0.4892578125,0.568359375,0.6630859375,0.734375,0.740234375,0.6796875,0.5888671875,0.509765625,0.447265625,0.4248046875,0.443359375,0.4794921875,0.5,0.48046875,0.419921875,0.3544921875,0.3203125,0.3388671875,0.4052734375,0.48828125,0.5458984375,0.5595703125,0.568359375,0.603515625,0.646484375,0.6630859375,0.638671875,0.580078125,0.509765625,0.4501953125,0.443359375,0.4921875,0.5654296875,0.6171875,0.6142578125,0.5595703125,0.4814453125,0.384765625,0.3076171875,0.2919921875,0.3427734375,0.4248046875,0.5,0.5751953125,0.6650390625,0.7275390625,0.7255859375,0.6591796875,0.5673828125,0.4892578125,0.4296875,0.4130859375,0.4404296875,0.484375,0.509765625,0.4912109375,0.4296875,0.36328125,0.330078125,0.3515625,0.421875,0.5087890625,0.5673828125,0.5791015625,0.583984375,0.607421875,0.6298828125,0.6240234375,0.5810546875,0.5126953125,0.439453125,0.3720703125,0.333984375,0.345703125,0.4072265625,0.4873046875,0.544921875,0.5595703125,0.5576171875,0.5419921875,0.5107421875,0.4736328125,0.44140625,0.4228515625,0.419921875,0.412109375,0.380859375,0.34765625,0.3408203125,0.3740234375,0.4375,0.509765625,0.5908203125,0.6923828125,0.7734375,0.791015625,0.740234375,0.6552734375,0.5791015625,0.51171875,0.4609375,0.44921875,0.4794921875,0.53125,0.5712890625,0.5791015625,0.5654296875,0.51171875,0.4375,0.384765625,0.37890625,0.421875,0.4892578125,0.5498046875,0.5615234375,0.5224609375,0.4619140625,0.421875,0.431640625,0.4892578125,0.556640625,0.599609375,0.5986328125,0.55078125,0.4833984375,0.4326171875,0.419921875,0.421875,0.439453125,0.4736328125,0.5146484375,0.548828125,0.5673828125,0.5693359375,0.55859375,0.517578125,0.466796875,0.4404296875,0.45703125,0.5107421875,0.5791015625,0.6435546875,0.67578125,0.654296875,0.583984375,0.4990234375,0.44140625,0.4296875,0.4345703125,0.4521484375,0.4833984375,0.517578125,0.544921875,0.55859375,0.5595703125,0.564453125,0.5869140625,0.6083984375,0.6044921875,0.5634765625,0.4990234375,0.4296875,0.375,0.3740234375,0.427734375,0.5029296875,0.5537109375,0.548828125,0.4892578125,0.4296875,0.41796875,0.4580078125,0.51953125,0.5625,0.5556640625,0.5,0.4228515625,0.33203125,0.2666015625,0.263671875,0.3251953125,0.4140625,0.4892578125,0.55859375,0.619140625,0.650390625,0.6435546875,0.609375,0.578125,0.5693359375,0.5673828125,0.5654296875,0.5634765625,0.5634765625,0.5654296875,0.5673828125,0.5693359375,0.55859375,0.5029296875,0.421875,0.357421875,0.33984375,0.375,0.439453125,0.517578125,0.6083984375,0.671875,0.671875,0.6064453125,0.515625,0.439453125,0.3662109375,0.2900390625,0.2529296875,0.2861328125,0.37890625,0.4873046875,0.5693359375,0.6259765625,0.6220703125,0.5546875,0.4599609375,0.390625,0.384765625,0.439453125,0.5009765625,0.5283203125,0.5205078125,0.498046875,0.490234375,0.517578125,0.5791015625,0.6357421875,0.6376953125,0.58203125,0.501953125,0.4453125,0.4443359375,0.5,0.5556640625,0.5625,0.51953125,0.4580078125,0.41796875,0.4296875,0.4892578125,0.5703125,0.671875,0.7529296875,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.4638671875,0.529296875,0.57421875,0.5673828125,0.509765625,0.431640625,0.33984375,0.2744140625,0.2744140625,0.33984375,0.431640625,0.509765625,0.576171875,0.619140625,0.6162109375,0.568359375,0.5,0.451171875,0.439453125,0.4326171875,0.408203125,0.3837890625,0.3857421875,0.42578125,0.490234375,0.5595703125,0.6357421875,0.728515625,0.796875,0.8017578125,0.7392578125,0.6484375,0.5693359375,0.5078125,0.486328125,0.5068359375,0.5458984375,0.568359375,0.5498046875,0.4892578125,0.4228515625,0.3818359375,0.3857421875,0.4345703125,0.501953125,0.5498046875,0.5595703125,0.548828125,0.5087890625,0.4609375,0.4375,0.4560546875,0.5107421875,0.5791015625,0.6552734375,0.7392578125,0.7880859375,0.7705078125,0.689453125,0.5888671875,0.509765625,0.4306640625,0.3369140625,0.267578125,0.26171875,0.322265625,0.412109375,0.4892578125,0.5693359375,0.669921875,0.75,0.7685546875,0.71875,0.6357421875,0.5595703125,0.48828125,0.419921875,0.376953125,0.3720703125,0.3955078125,0.421875,0.4296875,0.4248046875,0.40234375,0.3798828125,0.384765625,0.4248046875,0.490234375,0.5595703125,0.6259765625,0.67578125,0.6884765625,0.6591796875,0.6083984375,0.568359375,0.5595703125,0.546875,0.4912109375,0.4130859375,0.3515625,0.337890625,0.3740234375,0.439453125,0.5205078125,0.62890625,0.7236328125,0.759765625,0.7255859375,0.65234375,0.5791015625,0.5087890625,0.4404296875,0.3935546875,0.3818359375,0.396484375,0.416015625,0.419921875,0.421875,0.4384765625,0.470703125,0.5087890625,0.541015625,0.5576171875,0.5595703125,0.568359375,0.609375,0.666015625,0.7021484375,0.6943359375,0.646484375,0.5791015625,0.5,0.3994140625,0.3173828125,0.296875,0.34375,0.4248046875,0.5,0.57421875,0.65625,0.70703125,0.69140625,0.6142578125,0.517578125,0.439453125,0.3671875,0.29296875,0.2578125,0.2919921875,0.384765625,0.490234375,0.5693359375,0.6328125,0.6669921875,0.6494140625,0.583984375,0.501953125,0.4443359375,0.4296875,0.4375,0.4755859375,0.525390625,0.5537109375,0.5390625,0.48828125,0.419921875,0.35546875,0.3232421875,0.345703125,0.41796875,0.505859375,0.5654296875,0.5791015625,0.576171875,0.55859375,0.5263671875,0.48828125,0.4541015625,0.4345703125,0.4296875,0.4404296875,0.49609375,0.5771484375,0.6416015625,0.6591796875,0.6240234375,0.5595703125,0.4912109375,0.44140625,0.431640625,0.4658203125,0.5234375,0.5673828125,0.5791015625,0.58984375,0.62890625,0.6748046875,0.6982421875,0.6796875,0.626953125,0.5595703125,0.5009765625,0.486328125,0.5146484375,0.5595703125,0.5869140625,0.5693359375,0.509765625,0.4501953125,0.4365234375,0.4697265625,0.5234375,0.55859375,0.546875,0.4892578125,0.4140625,0.3251953125,0.2646484375,0.26953125,0.337890625,0.431640625,0.509765625,0.5869140625,0.677734375,0.7392578125,0.7353515625,0.6650390625,0.5693359375,0.4892578125,0.41015625,0.3193359375,0.2578125,0.26171875,0.330078125,0.4228515625,0.5,0.5576171875,0.5732421875,0.5458984375,0.501953125,0.4775390625,0.498046875,0.5595703125,0.6259765625,0.6640625,0.6494140625,0.5859375,0.5029296875,0.4443359375,0.4296875,0.427734375,0.423828125,0.4208984375,0.41796875,0.4169921875,0.41796875,0.419921875,0.4140625,0.384765625,0.353515625,0.3466796875,0.3779296875,0.439453125,0.509765625,0.5869140625,0.6796875,0.744140625,0.744140625,0.6796875,0.5869140625,0.509765625,0.4521484375,0.4482421875,0.498046875,0.5703125,0.62109375,0.6162109375,0.5595703125,0.48828125,0.4208984375,0.3779296875,0.3720703125,0.392578125,0.4150390625,0.419921875,0.4296875,0.48046875,0.552734375,0.6064453125,0.6142578125,0.5751953125,0.509765625,0.44921875,0.431640625,0.45703125,0.498046875,0.521484375,0.5009765625,0.439453125,0.361328125,0.275390625,0.22265625,0.2373046875,0.314453125,0.412109375,0.4892578125,0.56640625,0.6591796875,0.728515625,0.734375,0.6748046875,0.5869140625,0.509765625,0.453125,0.451171875,0.505859375,0.5830078125,0.6376953125,0.6357421875,0.5791015625,0.5078125,0.4365234375,0.388671875,0.3759765625,0.392578125,0.4140625,0.419921875,0.4326171875,0.4892578125,0.5712890625,0.63671875,0.6552734375,0.623046875,0.5595703125,0.490234375,0.4248046875,0.384765625,0.3798828125,0.40234375,0.4248046875,0.4296875,0.431640625,0.447265625,0.4794921875,0.5185546875,0.5537109375,0.57421875,0.5791015625,0.5693359375,0.5185546875,0.4462890625,0.392578125,0.384765625,0.423828125,0.4892578125,0.5654296875,0.6494140625,0.7001953125,0.68359375,0.60546875,0.5078125,0.4296875,0.36328125,0.3115234375,0.296875,0.3232421875,0.3720703125,0.41015625,0.419921875,0.412109375,0.380859375,0.345703125,0.3349609375,0.36328125,0.421875,0.4892578125,0.546875,0.55859375,0.5234375,0.4697265625,0.4365234375,0.4501953125,0.509765625,0.5791015625,0.638671875,0.666015625,0.6533203125,0.6142578125,0.5791015625,0.5693359375,0.5634765625,0.5439453125,0.5087890625,0.46875,0.4375,0.421875,0.419921875,0.412109375,0.3720703125,0.3212890625,0.29296875,0.3076171875,0.3603515625,0.4296875,0.5029296875,0.5751953125,0.623046875,0.6328125,0.6123046875,0.5869140625,0.5791015625,0.57421875,0.556640625,0.5244140625,0.48828125,0.458984375,0.4423828125,0.439453125,0.453125,0.509765625,0.5927734375,0.6572265625,0.6728515625,0.6357421875,0.5693359375,0.5078125,0.4892578125,0.5146484375,0.55859375,0.5859375,0.5693359375,0.509765625,0.451171875,0.4404296875,0.478515625,0.5361328125,0.572265625,0.5595703125,0.5,0.419921875,0.3251953125,0.2578125,0.255859375,0.3203125,0.412109375,0.4892578125,0.5556640625,0.5986328125,0.595703125,0.5478515625,0.48046875,0.4306640625,0.419921875,0.419921875,0.4228515625,0.42578125,0.4296875,0.4306640625,0.4306640625,0.4296875,0.421875,0.3955078125,0.373046875,0.3798828125,0.42578125,0.49609375,0.5693359375,0.6494140625,0.7431640625,0.8115234375,0.8134765625,0.7490234375,0.6572265625,0.5791015625,0.498046875,0.3876953125,0.2880859375,0.2470703125,0.275390625,0.34765625,0.419921875,0.4794921875,0.505859375,0.4990234375,0.4794921875,0.474609375,0.505859375,0.5693359375,0.626953125,0.623046875,0.556640625,0.462890625,0.3935546875,0.3857421875,0.439453125,0.498046875,0.513671875,0.4853515625,0.4423828125,0.41796875,0.4375,0.5,0.5595703125,0.5712890625,0.53125,0.46875,0.42578125,0.43359375,0.4892578125,0.564453125,0.6474609375,0.6982421875,0.4404296875,0.5234375,0.5888671875,0.5986328125,0.55078125,0.4833984375,0.40234375,0.345703125,0.345703125,0.40234375,0.4833984375,0.55078125,0.6083984375,0.6376953125,0.6220703125,0.5634765625,0.4912109375,0.4404296875,0.4287109375,0.4248046875,0.4130859375,0.40625,0.421875,0.462890625,0.517578125,0.5703125,0.630859375,0.7158203125,0.7900390625,0.8125,0.7734375,0.697265625,0.6220703125,0.556640625,0.5185546875,0.51171875,0.5224609375,0.525390625,0.501953125,0.4482421875,0.392578125,0.3681640625,0.392578125,0.455078125,0.525390625,0.568359375,0.5703125,0.5537109375,0.5234375,0.4990234375,0.50390625,0.546875,0.609375,0.673828125,0.73828125,0.8046875,0.833984375,0.8017578125,0.7177734375,0.6220703125,0.55078125,0.48046875,0.3876953125,0.3076171875,0.2802734375,0.314453125,0.3818359375,0.4482421875,0.5185546875,0.6142578125,0.6982421875,0.73046875,0.701171875,0.6357421875,0.5703125,0.5048828125,0.4296875,0.3681640625,0.3388671875,0.34375,0.36328125,0.376953125,0.384765625,0.3857421875,0.3935546875,0.41796875,0.462890625,0.517578125,0.5703125,0.619140625,0.6572265625,0.666015625,0.64453125,0.6064453125,0.5771484375,0.5703125,0.55859375,0.505859375,0.4287109375,0.365234375,0.3447265625,0.373046875,0.4287109375,0.5009765625,0.60546875,0.708984375,0.76953125,0.7685546875,0.7255859375,0.673828125,0.6171875,0.5439453125,0.46484375,0.3984375,0.3564453125,0.3369140625,0.3251953125,0.322265625,0.3505859375,0.4111328125,0.484375,0.544921875,0.5732421875,0.5703125,0.5712890625,0.611328125,0.6787109375,0.736328125,0.755859375,0.7294921875,0.673828125,0.6025390625,0.5068359375,0.4189453125,0.376953125,0.3935546875,0.4453125,0.5,0.5546875,0.61328125,0.64453125,0.6259765625,0.5625,0.4873046875,0.4287109375,0.376953125,0.3330078125,0.3291015625,0.3798828125,0.470703125,0.560546875,0.6220703125,0.6669921875,0.6806640625,0.6435546875,0.5615234375,0.466796875,0.400390625,0.376953125,0.375,0.396484375,0.4287109375,0.4453125,0.4296875,0.384765625,0.3251953125,0.2744140625,0.271484375,0.337890625,0.455078125,0.5791015625,0.6572265625,0.673828125,0.66796875,0.6376953125,0.580078125,0.505859375,0.4375,0.39453125,0.376953125,0.3798828125,0.431640625,0.5185546875,0.599609375,0.6396484375,0.6240234375,0.5703125,0.51171875,0.47265625,0.4765625,0.525390625,0.5966796875,0.65234375,0.673828125,0.6884765625,0.712890625,0.7294921875,0.7197265625,0.6796875,0.623046875,0.5703125,0.5283203125,0.5244140625,0.556640625,0.599609375,0.6220703125,0.6044921875,0.55078125,0.49609375,0.46875,0.4716796875,0.4921875,0.505859375,0.4912109375,0.4482421875,0.392578125,0.33203125,0.2998046875,0.322265625,0.39453125,0.482421875,0.55078125,0.6181640625,0.6923828125,0.734375,0.7109375,0.62890625,0.5283203125,0.4482421875,0.3720703125,0.296875,0.2568359375,0.279296875,0.353515625,0.4384765625,0.5,0.541015625,0.544921875,0.5166015625,0.4833984375,0.474609375,0.505859375,0.5703125,0.63671875,0.671875,0.6494140625,0.5732421875,0.474609375,0.40234375,0.376953125,0.3642578125,0.3447265625,0.3232421875,0.3095703125,0.3076171875,0.3154296875,0.3251953125,0.33203125,0.33203125,0.337890625,0.3671875,0.421875,0.4873046875,0.55078125,0.619140625,0.7001953125,0.7568359375,0.7568359375,0.7001953125,0.619140625,0.55078125,0.5,0.4931640625,0.5322265625,0.5888671875,0.6279296875,0.62109375,0.5703125,0.505859375,0.4375,0.3798828125,0.345703125,0.3349609375,0.3330078125,0.3251953125,0.3291015625,0.384765625,0.478515625,0.5693359375,0.615234375,0.6044921875,0.55078125,0.4990234375,0.48046875,0.4951171875,0.51953125,0.5244140625,0.4931640625,0.4287109375,0.3525390625,0.2724609375,0.2255859375,0.2392578125,0.306640625,0.3876953125,0.4482421875,0.5087890625,0.59375,0.671875,0.7041015625,0.677734375,0.615234375,0.55078125,0.5029296875,0.5087890625,0.5703125,0.654296875,0.7158203125,0.7216796875,0.673828125,0.60546875,0.5185546875,0.4296875,0.36328125,0.33203125,0.3251953125,0.3251953125,0.3388671875,0.3974609375,0.490234375,0.576171875,0.62109375,0.6142578125,0.5703125,0.517578125,0.462890625,0.41796875,0.3935546875,0.3857421875,0.384765625,0.376953125,0.373046875,0.39453125,0.451171875,0.529296875,0.60546875,0.6552734375,0.673828125,0.669921875,0.6142578125,0.5205078125,0.4296875,0.3837890625,0.39453125,0.4482421875,0.5126953125,0.5791015625,0.6123046875,0.58984375,0.5185546875,0.4375,0.376953125,0.326171875,0.283203125,0.26171875,0.26953125,0.296875,0.3193359375,0.3251953125,0.3212890625,0.306640625,0.2958984375,0.306640625,0.34375,0.3955078125,0.4482421875,0.4912109375,0.505859375,0.4921875,0.4716796875,0.46875,0.49609375,0.55078125,0.6142578125,0.673828125,0.7080078125,0.705078125,0.673828125,0.638671875,0.6220703125,0.603515625,0.5537109375,0.4775390625,0.3994140625,0.34375,0.3212890625,0.3251953125,0.3271484375,0.298828125,0.2587890625,0.23828125,0.2548828125,0.3076171875,0.376953125,0.455078125,0.5498046875,0.63671875,0.689453125,0.7001953125,0.6865234375,0.673828125,0.6572265625,0.6201171875,0.5634765625,0.50390625,0.45703125,0.43359375,0.4287109375,0.443359375,0.5087890625,0.60546875,0.6865234375,0.7158203125,0.6865234375,0.6220703125,0.55859375,0.533203125,0.5498046875,0.587890625,0.6142578125,0.6025390625,0.55078125,0.5,0.4912109375,0.521484375,0.564453125,0.5849609375,0.5615234375,0.5,0.419921875,0.3251953125,0.2548828125,0.24609375,0.298828125,0.37890625,0.4482421875,0.5048828125,0.5341796875,0.5185546875,0.4609375,0.3876953125,0.3369140625,0.3251953125,0.328125,0.3408203125,0.3603515625,0.3779296875,0.3876953125,0.3857421875,0.376953125,0.36328125,0.34375,0.3427734375,0.380859375,0.45703125,0.544921875,0.6220703125,0.701171875,0.7958984375,0.8662109375,0.875,0.822265625,0.7421875,0.673828125,0.5986328125,0.4814453125,0.3544921875,0.267578125,0.2451171875,0.275390625,0.3251953125,0.3720703125,0.4033203125,0.42578125,0.4521484375,0.4931640625,0.5517578125,0.6220703125,0.6796875,0.6796875,0.611328125,0.5087890625,0.421875,0.3935546875,0.4287109375,0.470703125,0.474609375,0.4462890625,0.4130859375,0.404296875,0.435546875,0.5,0.560546875,0.5771484375,0.541015625,0.4755859375,0.419921875,0.4091796875,0.4482421875,0.5048828125,0.568359375,0.6044921875,0.40234375,0.5078125,0.599609375,0.6337890625,0.6044921875,0.5546875,0.4951171875,0.4521484375,0.4521484375,0.4951171875,0.5546875,0.6044921875,0.6455078125,0.662109375,0.640625,0.5849609375,0.521484375,0.478515625,0.46875,0.4677734375,0.4638671875,0.4638671875,0.4716796875,0.4892578125,0.509765625,0.5302734375,0.560546875,0.62890625,0.708984375,0.759765625,0.755859375,0.705078125,0.634765625,0.5654296875,0.5107421875,0.4775390625,0.4638671875,0.455078125,0.4345703125,0.39453125,0.357421875,0.35546875,0.3974609375,0.4638671875,0.5224609375,0.5458984375,0.5302734375,0.5029296875,0.482421875,0.4912109375,0.5380859375,0.61328125,0.6875,0.740234375,0.787109375,0.830078125,0.8427734375,0.806640625,0.734375,0.658203125,0.6044921875,0.5498046875,0.4638671875,0.375,0.3193359375,0.314453125,0.3486328125,0.39453125,0.4482421875,0.5234375,0.5966796875,0.6318359375,0.6201171875,0.5771484375,0.5302734375,0.478515625,0.4091796875,0.3447265625,0.30859375,0.310546875,0.3359375,0.3642578125,0.390625,0.4189453125,0.447265625,0.4716796875,0.4921875,0.51171875,0.5302734375,0.5478515625,0.5625,0.5654296875,0.5576171875,0.5439453125,0.5322265625,0.5302734375,0.5224609375,0.48828125,0.44140625,0.40625,0.400390625,0.4267578125,0.46875,0.5224609375,0.599609375,0.6826171875,0.7421875,0.765625,0.7587890625,0.740234375,0.7138671875,0.6572265625,0.56640625,0.4580078125,0.359375,0.29296875,0.2587890625,0.2431640625,0.2724609375,0.34765625,0.44140625,0.5166015625,0.5458984375,0.5302734375,0.515625,0.5478515625,0.6240234375,0.7099609375,0.767578125,0.775390625,0.740234375,0.6875,0.6142578125,0.5380859375,0.4853515625,0.4697265625,0.48046875,0.5,0.51953125,0.541015625,0.5517578125,0.5439453125,0.51953125,0.4912109375,0.46875,0.4521484375,0.447265625,0.466796875,0.5107421875,0.5654296875,0.6103515625,0.634765625,0.650390625,0.6474609375,0.609375,0.541015625,0.4619140625,0.3984375,0.3642578125,0.341796875,0.3369140625,0.341796875,0.3447265625,0.33203125,0.3017578125,0.2587890625,0.2255859375,0.2509765625,0.3505859375,0.4970703125,0.6376953125,0.72265625,0.740234375,0.7353515625,0.705078125,0.640625,0.5517578125,0.4638671875,0.3984375,0.3642578125,0.3486328125,0.3759765625,0.44140625,0.515625,0.564453125,0.56640625,0.5302734375,0.4873046875,0.4638671875,0.482421875,0.546875,0.6318359375,0.703125,0.740234375,0.763671875,0.7685546875,0.740234375,0.681640625,0.611328125,0.556640625,0.5302734375,0.51953125,0.541015625,0.587890625,0.634765625,0.6572265625,0.64453125,0.6044921875,0.55859375,0.5107421875,0.4697265625,0.44140625,0.4248046875,0.4111328125,0.39453125,0.375,0.3603515625,0.369140625,0.4140625,0.4833984375,0.552734375,0.6044921875,0.6533203125,0.703125,0.7177734375,0.673828125,0.580078125,0.4755859375,0.39453125,0.32421875,0.2734375,0.26953125,0.3203125,0.400390625,0.46875,0.5,0.5087890625,0.484375,0.44140625,0.4111328125,0.4169921875,0.4619140625,0.5302734375,0.599609375,0.6474609375,0.642578125,0.580078125,0.484375,0.4033203125,0.3642578125,0.33203125,0.28515625,0.2373046875,0.208984375,0.2099609375,0.232421875,0.2587890625,0.2861328125,0.3212890625,0.369140625,0.4306640625,0.49609375,0.5556640625,0.6044921875,0.6552734375,0.71484375,0.7568359375,0.7568359375,0.71484375,0.6552734375,0.6044921875,0.5654296875,0.548828125,0.5576171875,0.576171875,0.5849609375,0.5693359375,0.5302734375,0.4833984375,0.4326171875,0.3828125,0.341796875,0.310546875,0.2841796875,0.2587890625,0.248046875,0.296875,0.40234375,0.5244140625,0.61328125,0.63671875,0.6044921875,0.5673828125,0.5595703125,0.57421875,0.587890625,0.578125,0.5361328125,0.46875,0.3955078125,0.322265625,0.2783203125,0.28125,0.3212890625,0.3681640625,0.39453125,0.423828125,0.490234375,0.57421875,0.640625,0.6650390625,0.646484375,0.6044921875,0.5703125,0.580078125,0.6357421875,0.708984375,0.7646484375,0.7744140625,0.740234375,0.6845703125,0.5927734375,0.4775390625,0.369140625,0.2958984375,0.263671875,0.2587890625,0.267578125,0.3115234375,0.38671875,0.4658203125,0.5224609375,0.5419921875,0.5302734375,0.51171875,0.4921875,0.4716796875,0.447265625,0.4189453125,0.390625,0.3642578125,0.34375,0.3544921875,0.4140625,0.513671875,0.6220703125,0.7021484375,0.740234375,0.7509765625,0.7021484375,0.5966796875,0.474609375,0.3857421875,0.3623046875,0.39453125,0.4404296875,0.48046875,0.4970703125,0.4775390625,0.43359375,0.3896484375,0.3642578125,0.3427734375,0.31640625,0.2900390625,0.26953125,0.2607421875,0.2587890625,0.2587890625,0.259765625,0.2646484375,0.28125,0.30859375,0.3427734375,0.373046875,0.39453125,0.4111328125,0.4248046875,0.44140625,0.4697265625,0.5107421875,0.55859375,0.6044921875,0.6533203125,0.705078125,0.740234375,0.740234375,0.7080078125,0.666015625,0.634765625,0.5966796875,0.5166015625,0.408203125,0.30859375,0.2490234375,0.23828125,0.2587890625,0.27734375,0.267578125,0.2421875,0.228515625,0.24609375,0.2958984375,0.3642578125,0.4462890625,0.5595703125,0.6767578125,0.7568359375,0.7822265625,0.7666015625,0.740234375,0.7080078125,0.65625,0.5908203125,0.5302734375,0.4892578125,0.4716796875,0.46875,0.4833984375,0.544921875,0.6357421875,0.708984375,0.7333984375,0.701171875,0.634765625,0.5703125,0.541015625,0.5546875,0.5966796875,0.634765625,0.6396484375,0.6044921875,0.568359375,0.5634765625,0.5849609375,0.607421875,0.6044921875,0.5654296875,0.5,0.4208984375,0.3291015625,0.2587890625,0.2421875,0.2802734375,0.3427734375,0.39453125,0.435546875,0.4521484375,0.4306640625,0.375,0.3115234375,0.2685546875,0.2587890625,0.2646484375,0.29296875,0.3359375,0.375,0.3935546875,0.3876953125,0.3642578125,0.3349609375,0.306640625,0.30859375,0.361328125,0.4541015625,0.5556640625,0.634765625,0.7138671875,0.8046875,0.8759765625,0.892578125,0.853515625,0.7919921875,0.740234375,0.6826171875,0.5791015625,0.44921875,0.333984375,0.263671875,0.2451171875,0.2587890625,0.2763671875,0.2939453125,0.328125,0.388671875,0.4716796875,0.5595703125,0.634765625,0.6982421875,0.7197265625,0.681640625,0.599609375,0.5126953125,0.46484375,0.46875,0.478515625,0.4541015625,0.4111328125,0.380859375,0.38671875,0.431640625,0.5,0.564453125,0.5927734375,0.568359375,0.501953125,0.4287109375,0.388671875,0.39453125,0.419921875,0.458984375,0.4853515625,0.3671875,0.48046875,0.5888671875,0.64453125,0.634765625,0.60546875,0.5712890625,0.546875,0.546875,0.5712890625,0.60546875,0.634765625,0.658203125,0.6650390625,0.646484375,0.607421875,0.564453125,0.5361328125,0.5302734375,0.53125,0.53515625,0.53515625,0.52734375,0.509765625,0.4892578125,0.46875,0.4638671875,0.5078125,0.587890625,0.662109375,0.693359375,0.6689453125,0.6044921875,0.533203125,0.466796875,0.4189453125,0.3974609375,0.392578125,0.3857421875,0.3642578125,0.3466796875,0.3671875,0.4189453125,0.4775390625,0.51171875,0.5068359375,0.46875,0.427734375,0.412109375,0.4443359375,0.5244140625,0.623046875,0.7021484375,0.740234375,0.7666015625,0.7890625,0.7900390625,0.76171875,0.7138671875,0.6669921875,0.634765625,0.599609375,0.5322265625,0.447265625,0.375,0.3388671875,0.3408203125,0.3642578125,0.3955078125,0.443359375,0.4912109375,0.5185546875,0.517578125,0.49609375,0.46875,0.435546875,0.380859375,0.3251953125,0.2978515625,0.30859375,0.3486328125,0.39453125,0.443359375,0.49609375,0.53515625,0.5439453125,0.5234375,0.4921875,0.46875,0.451171875,0.4365234375,0.43359375,0.44140625,0.455078125,0.466796875,0.46875,0.466796875,0.458984375,0.453125,0.4580078125,0.4765625,0.5029296875,0.5302734375,0.5576171875,0.591796875,0.62890625,0.666015625,0.6962890625,0.720703125,0.740234375,0.75390625,0.7353515625,0.6650390625,0.5498046875,0.419921875,0.31640625,0.2587890625,0.2255859375,0.2451171875,0.3173828125,0.4111328125,0.4833984375,0.501953125,0.46875,0.4345703125,0.4501953125,0.521484375,0.6240234375,0.712890625,0.7529296875,0.740234375,0.7119140625,0.673828125,0.6298828125,0.5849609375,0.5478515625,0.51953125,0.5,0.4794921875,0.4580078125,0.447265625,0.455078125,0.4794921875,0.5078125,0.5302734375,0.552734375,0.5869140625,0.62109375,0.640625,0.6396484375,0.6240234375,0.6044921875,0.587890625,0.57421875,0.5576171875,0.529296875,0.48828125,0.4404296875,0.39453125,0.3505859375,0.31640625,0.2978515625,0.2919921875,0.291015625,0.28125,0.2587890625,0.244140625,0.283203125,0.3857421875,0.5244140625,0.6513671875,0.7255859375,0.740234375,0.73828125,0.72265625,0.6796875,0.607421875,0.521484375,0.4462890625,0.39453125,0.35546875,0.3466796875,0.375,0.4248046875,0.470703125,0.486328125,0.46875,0.443359375,0.4306640625,0.4521484375,0.5166015625,0.6044921875,0.685546875,0.740234375,0.775390625,0.7646484375,0.6982421875,0.599609375,0.5087890625,0.462890625,0.46875,0.4951171875,0.544921875,0.6044921875,0.6513671875,0.669921875,0.6591796875,0.634765625,0.6005859375,0.537109375,0.4580078125,0.3896484375,0.3515625,0.3486328125,0.3642578125,0.384765625,0.4169921875,0.4609375,0.513671875,0.564453125,0.60546875,0.634765625,0.6640625,0.6923828125,0.6904296875,0.6376953125,0.544921875,0.443359375,0.3642578125,0.2998046875,0.275390625,0.306640625,0.3798828125,0.4609375,0.5048828125,0.5,0.470703125,0.4111328125,0.34765625,0.3173828125,0.337890625,0.3974609375,0.46875,0.5439453125,0.61328125,0.6435546875,0.6123046875,0.5341796875,0.4501953125,0.39453125,0.3408203125,0.2646484375,0.1923828125,0.15625,0.1689453125,0.2119140625,0.2587890625,0.30859375,0.3720703125,0.4443359375,0.513671875,0.568359375,0.6064453125,0.634765625,0.6640625,0.69921875,0.7236328125,0.7236328125,0.69921875,0.6640625,0.634765625,0.609375,0.5849609375,0.5625,0.541015625,0.51953125,0.4951171875,0.46875,0.4453125,0.4267578125,0.408203125,0.3828125,0.34765625,0.3046875,0.2587890625,0.2275390625,0.2548828125,0.3505859375,0.48046875,0.5927734375,0.6455078125,0.634765625,0.6171875,0.626953125,0.6513671875,0.6650390625,0.6484375,0.5986328125,0.5302734375,0.458984375,0.3974609375,0.361328125,0.35546875,0.369140625,0.3759765625,0.3642578125,0.35546875,0.3896484375,0.466796875,0.5576171875,0.626953125,0.6513671875,0.634765625,0.615234375,0.6240234375,0.662109375,0.712890625,0.7509765625,0.759765625,0.740234375,0.703125,0.6259765625,0.513671875,0.3974609375,0.3095703125,0.2666015625,0.2587890625,0.2607421875,0.275390625,0.30859375,0.3564453125,0.40625,0.4462890625,0.46875,0.4921875,0.5234375,0.5439453125,0.53515625,0.49609375,0.443359375,0.39453125,0.3515625,0.3349609375,0.369140625,0.4609375,0.580078125,0.681640625,0.740234375,0.771484375,0.744140625,0.6484375,0.5185546875,0.40625,0.353515625,0.3642578125,0.3876953125,0.3994140625,0.3974609375,0.3857421875,0.376953125,0.37890625,0.39453125,0.41015625,0.4072265625,0.3798828125,0.3369140625,0.2919921875,0.2646484375,0.2587890625,0.263671875,0.2880859375,0.3251953125,0.361328125,0.380859375,0.3798828125,0.3642578125,0.3486328125,0.3515625,0.3896484375,0.4580078125,0.537109375,0.6005859375,0.634765625,0.666015625,0.7080078125,0.740234375,0.740234375,0.705078125,0.6533203125,0.6044921875,0.5458984375,0.4443359375,0.3251953125,0.234375,0.19921875,0.216796875,0.2587890625,0.2958984375,0.3037109375,0.2890625,0.275390625,0.28515625,0.328125,0.39453125,0.478515625,0.599609375,0.7236328125,0.8037109375,0.8193359375,0.7861328125,0.740234375,0.69140625,0.6328125,0.5771484375,0.541015625,0.52734375,0.5283203125,0.5302734375,0.5419921875,0.5927734375,0.662109375,0.712890625,0.7158203125,0.6728515625,0.6044921875,0.5390625,0.505859375,0.5185546875,0.568359375,0.6240234375,0.650390625,0.634765625,0.6162109375,0.6220703125,0.640625,0.646484375,0.6220703125,0.568359375,0.5,0.4228515625,0.3388671875,0.275390625,0.2587890625,0.287109375,0.33203125,0.3642578125,0.3876953125,0.3935546875,0.375,0.3359375,0.29296875,0.2646484375,0.2587890625,0.2685546875,0.3115234375,0.375,0.4306640625,0.4521484375,0.435546875,0.39453125,0.345703125,0.2958984375,0.28125,0.3251953125,0.4189453125,0.5234375,0.6044921875,0.681640625,0.765625,0.828125,0.8447265625,0.8173828125,0.7724609375,0.740234375,0.7060546875,0.6396484375,0.541015625,0.4326171875,0.341796875,0.28515625,0.2587890625,0.23828125,0.224609375,0.2451171875,0.314453125,0.4189453125,0.5244140625,0.6044921875,0.6748046875,0.7294921875,0.740234375,0.6982421875,0.625,0.5595703125,0.5302734375,0.5009765625,0.44140625,0.3779296875,0.34765625,0.3681640625,0.427734375,0.5,0.568359375,0.6162109375,0.61328125,0.5546875,0.4677734375,0.3955078125,0.3642578125,0.353515625,0.3681640625,0.39453125,0.3466796875,0.4462890625,0.552734375,0.6162109375,0.6220703125,0.6103515625,0.5966796875,0.5869140625,0.5869140625,0.5966796875,0.6103515625,0.6220703125,0.630859375,0.6318359375,0.6220703125,0.6044921875,0.5849609375,0.572265625,0.5703125,0.57421875,0.5859375,0.5927734375,0.5771484375,0.5361328125,0.4814453125,0.4287109375,0.392578125,0.4111328125,0.482421875,0.5673828125,0.619140625,0.611328125,0.55078125,0.478515625,0.4111328125,0.3671875,0.35546875,0.3681640625,0.3818359375,0.376953125,0.376953125,0.4111328125,0.466796875,0.5107421875,0.5185546875,0.486328125,0.4287109375,0.3740234375,0.3525390625,0.3876953125,0.4736328125,0.576171875,0.6494140625,0.673828125,0.68359375,0.69140625,0.689453125,0.67578125,0.654296875,0.634765625,0.6220703125,0.6044921875,0.5615234375,0.4970703125,0.4326171875,0.3876953125,0.37109375,0.376953125,0.3896484375,0.41015625,0.4306640625,0.4443359375,0.4462890625,0.439453125,0.4287109375,0.4111328125,0.3701171875,0.326171875,0.3095703125,0.3330078125,0.38671875,0.4482421875,0.513671875,0.5859375,0.6318359375,0.6220703125,0.5625,0.4873046875,0.4287109375,0.3798828125,0.341796875,0.3330078125,0.3544921875,0.392578125,0.421875,0.4287109375,0.4306640625,0.4423828125,0.4658203125,0.4990234375,0.5322265625,0.556640625,0.5703125,0.5751953125,0.56640625,0.552734375,0.5546875,0.5791015625,0.623046875,0.673828125,0.7236328125,0.75390625,0.7314453125,0.64453125,0.517578125,0.400390625,0.3251953125,0.27734375,0.2802734375,0.337890625,0.4169921875,0.474609375,0.4775390625,0.4287109375,0.3759765625,0.3671875,0.41796875,0.5126953125,0.611328125,0.6689453125,0.673828125,0.666015625,0.6669921875,0.6640625,0.64453125,0.6044921875,0.5517578125,0.5,0.4443359375,0.3857421875,0.3544921875,0.373046875,0.4365234375,0.51171875,0.5703125,0.6259765625,0.6904296875,0.734375,0.7294921875,0.677734375,0.6083984375,0.55078125,0.5078125,0.4931640625,0.5068359375,0.52734375,0.5302734375,0.5029296875,0.4482421875,0.38671875,0.3330078125,0.3017578125,0.30078125,0.31640625,0.330078125,0.3251953125,0.3232421875,0.3583984375,0.43359375,0.5302734375,0.615234375,0.6640625,0.673828125,0.6767578125,0.6845703125,0.6806640625,0.646484375,0.5849609375,0.5126953125,0.4482421875,0.3896484375,0.34765625,0.33984375,0.365234375,0.4052734375,0.4306640625,0.4287109375,0.416015625,0.40234375,0.4091796875,0.4521484375,0.5263671875,0.6064453125,0.673828125,0.720703125,0.7060546875,0.625,0.5126953125,0.421875,0.3935546875,0.4287109375,0.484375,0.55078125,0.611328125,0.6455078125,0.6484375,0.634765625,0.6220703125,0.5986328125,0.5322265625,0.4375,0.35546875,0.318359375,0.33203125,0.376953125,0.4306640625,0.4921875,0.5478515625,0.5869140625,0.60546875,0.61328125,0.6220703125,0.6357421875,0.6552734375,0.65625,0.6181640625,0.5419921875,0.4541015625,0.376953125,0.3173828125,0.3095703125,0.361328125,0.4453125,0.5166015625,0.5361328125,0.5,0.4384765625,0.3505859375,0.2724609375,0.2451171875,0.2802734375,0.353515625,0.4287109375,0.5078125,0.59765625,0.6611328125,0.662109375,0.6015625,0.5166015625,0.4482421875,0.376953125,0.28125,0.197265625,0.1650390625,0.1943359375,0.2607421875,0.3251953125,0.390625,0.4658203125,0.53515625,0.5830078125,0.60546875,0.61328125,0.6220703125,0.6328125,0.646484375,0.65625,0.65625,0.646484375,0.6328125,0.6220703125,0.6083984375,0.583984375,0.546875,0.50390625,0.466796875,0.4423828125,0.4287109375,0.4248046875,0.4404296875,0.4609375,0.4638671875,0.4375,0.38671875,0.3251953125,0.2744140625,0.271484375,0.333984375,0.4423828125,0.552734375,0.6162109375,0.6220703125,0.6201171875,0.6484375,0.6884765625,0.708984375,0.6923828125,0.6396484375,0.5703125,0.5029296875,0.45703125,0.4384765625,0.439453125,0.4404296875,0.421875,0.376953125,0.3349609375,0.3330078125,0.3857421875,0.4765625,0.5673828125,0.619140625,0.6220703125,0.6142578125,0.619140625,0.63671875,0.6591796875,0.67578125,0.6806640625,0.673828125,0.6552734375,0.60546875,0.525390625,0.4384765625,0.3681640625,0.33203125,0.3251953125,0.3212890625,0.3037109375,0.2890625,0.294921875,0.3271484375,0.376953125,0.4287109375,0.4873046875,0.5625,0.6220703125,0.6318359375,0.5859375,0.513671875,0.4482421875,0.384765625,0.33203125,0.3251953125,0.384765625,0.4921875,0.599609375,0.673828125,0.724609375,0.7275390625,0.6650390625,0.556640625,0.4462890625,0.3828125,0.376953125,0.3818359375,0.3681640625,0.3486328125,0.3408203125,0.3583984375,0.3984375,0.4482421875,0.494140625,0.5166015625,0.4990234375,0.4453125,0.3798828125,0.3359375,0.3251953125,0.333984375,0.3701171875,0.4189453125,0.4541015625,0.45703125,0.42578125,0.376953125,0.33203125,0.318359375,0.35546875,0.4375,0.5322265625,0.5986328125,0.6220703125,0.638671875,0.673828125,0.705078125,0.7080078125,0.673828125,0.6142578125,0.55078125,0.4775390625,0.3701171875,0.2626953125,0.203125,0.2099609375,0.2626953125,0.3251953125,0.3779296875,0.396484375,0.380859375,0.357421875,0.3525390625,0.3837890625,0.4482421875,0.53125,0.646484375,0.755859375,0.8115234375,0.796875,0.7373046875,0.673828125,0.611328125,0.5537109375,0.51953125,0.5185546875,0.541015625,0.5634765625,0.5703125,0.5791015625,0.619140625,0.66796875,0.693359375,0.67578125,0.62109375,0.55078125,0.484375,0.4462890625,0.45703125,0.509765625,0.5771484375,0.6201171875,0.6220703125,0.619140625,0.6376953125,0.662109375,0.6650390625,0.6318359375,0.5703125,0.5,0.42578125,0.3525390625,0.3037109375,0.2978515625,0.3251953125,0.3603515625,0.376953125,0.3857421875,0.3876953125,0.3779296875,0.3603515625,0.3408203125,0.328125,0.3251953125,0.3369140625,0.3876953125,0.4609375,0.5185546875,0.5341796875,0.5048828125,0.4482421875,0.380859375,0.306640625,0.2646484375,0.2880859375,0.3701171875,0.470703125,0.55078125,0.625,0.6982421875,0.7470703125,0.7529296875,0.724609375,0.6904296875,0.673828125,0.662109375,0.642578125,0.6005859375,0.5341796875,0.455078125,0.3818359375,0.3251953125,0.271484375,0.2197265625,0.20703125,0.2578125,0.359375,0.46875,0.55078125,0.62890625,0.712890625,0.7685546875,0.7646484375,0.7060546875,0.62890625,0.5703125,0.5087890625,0.4208984375,0.3427734375,0.3154296875,0.3505859375,0.423828125,0.5,0.5732421875,0.640625,0.6650390625,0.6240234375,0.533203125,0.439453125,0.376953125,0.3369140625,0.3349609375,0.3671875,0.34765625,0.416015625,0.5,0.5576171875,0.5693359375,0.5673828125,0.5654296875,0.5634765625,0.5634765625,0.5654296875,0.5673828125,0.5693359375,0.5703125,0.5703125,0.568359375,0.5654296875,0.5615234375,0.5595703125,0.5595703125,0.56640625,0.5908203125,0.615234375,0.61328125,0.5732421875,0.5087890625,0.439453125,0.384765625,0.384765625,0.44140625,0.51953125,0.572265625,0.568359375,0.509765625,0.4384765625,0.376953125,0.3466796875,0.357421875,0.392578125,0.4228515625,0.4296875,0.4384765625,0.478515625,0.533203125,0.5654296875,0.556640625,0.5078125,0.439453125,0.375,0.33984375,0.3564453125,0.421875,0.505859375,0.564453125,0.5791015625,0.5810546875,0.58203125,0.5810546875,0.578125,0.5751953125,0.5712890625,0.5693359375,0.564453125,0.544921875,0.5126953125,0.4755859375,0.4462890625,0.4306640625,0.4296875,0.431640625,0.435546875,0.439453125,0.44140625,0.4423828125,0.44140625,0.439453125,0.4296875,0.3935546875,0.3525390625,0.3369140625,0.361328125,0.419921875,0.4892578125,0.56640625,0.6513671875,0.7041015625,0.689453125,0.6142578125,0.517578125,0.439453125,0.373046875,0.3232421875,0.310546875,0.33984375,0.390625,0.4306640625,0.439453125,0.4423828125,0.4560546875,0.4814453125,0.51171875,0.5390625,0.5546875,0.5595703125,0.5517578125,0.515625,0.4697265625,0.4453125,0.4609375,0.5126953125,0.5791015625,0.6513671875,0.7236328125,0.751953125,0.7109375,0.611328125,0.5009765625,0.419921875,0.3623046875,0.353515625,0.3974609375,0.4619140625,0.505859375,0.498046875,0.439453125,0.375,0.341796875,0.361328125,0.4287109375,0.51171875,0.568359375,0.5791015625,0.5849609375,0.6142578125,0.6474609375,0.6552734375,0.6259765625,0.5673828125,0.5,0.4248046875,0.3427734375,0.2919921875,0.3076171875,0.384765625,0.4814453125,0.5595703125,0.6337890625,0.7177734375,0.7705078125,0.7568359375,0.6826171875,0.5869140625,0.509765625,0.4521484375,0.4404296875,0.4755859375,0.529296875,0.5625,0.548828125,0.4892578125,0.419921875,0.361328125,0.333984375,0.345703125,0.3818359375,0.4130859375,0.419921875,0.421875,0.4404296875,0.4755859375,0.5185546875,0.5546875,0.5751953125,0.5791015625,0.5869140625,0.6171875,0.6484375,0.6552734375,0.6220703125,0.5595703125,0.4892578125,0.4208984375,0.3642578125,0.341796875,0.3583984375,0.3994140625,0.4326171875,0.439453125,0.431640625,0.40625,0.384765625,0.3935546875,0.4384765625,0.5078125,0.5791015625,0.634765625,0.62890625,0.5595703125,0.46484375,0.3935546875,0.3857421875,0.439453125,0.509765625,0.576171875,0.619140625,0.625,0.6025390625,0.5771484375,0.5693359375,0.5546875,0.4970703125,0.4150390625,0.349609375,0.33203125,0.3662109375,0.4296875,0.4990234375,0.5654296875,0.607421875,0.615234375,0.595703125,0.57421875,0.5693359375,0.5771484375,0.603515625,0.6259765625,0.619140625,0.5732421875,0.5029296875,0.4296875,0.37109375,0.3671875,0.419921875,0.498046875,0.5546875,0.5546875,0.5,0.421875,0.322265625,0.2431640625,0.2255859375,0.27734375,0.3623046875,0.439453125,0.5205078125,0.619140625,0.6962890625,0.708984375,0.6533203125,0.56640625,0.4892578125,0.41015625,0.3095703125,0.228515625,0.2109375,0.259765625,0.34375,0.419921875,0.4912109375,0.5595703125,0.6044921875,0.6142578125,0.595703125,0.57421875,0.5693359375,0.5712890625,0.5732421875,0.5751953125,0.5751953125,0.5732421875,0.5712890625,0.5693359375,0.564453125,0.548828125,0.5205078125,0.48828125,0.4599609375,0.4443359375,0.439453125,0.447265625,0.484375,0.5322265625,0.556640625,0.541015625,0.48828125,0.419921875,0.35546875,0.3232421875,0.3447265625,0.4150390625,0.5,0.5576171875,0.5693359375,0.5771484375,0.6162109375,0.66796875,0.6962890625,0.681640625,0.62890625,0.5595703125,0.49609375,0.4677734375,0.4765625,0.5009765625,0.513671875,0.4892578125,0.4296875,0.3671875,0.3349609375,0.3544921875,0.4208984375,0.5029296875,0.55859375,0.5693359375,0.568359375,0.5693359375,0.572265625,0.576171875,0.5791015625,0.580078125,0.5791015625,0.57421875,0.5537109375,0.517578125,0.4755859375,0.44140625,0.4228515625,0.419921875,0.4111328125,0.373046875,0.3271484375,0.3037109375,0.3203125,0.373046875,0.439453125,0.517578125,0.6142578125,0.689453125,0.7041015625,0.6513671875,0.56640625,0.4892578125,0.4140625,0.3330078125,0.287109375,0.3115234375,0.396484375,0.4990234375,0.5791015625,0.6435546875,0.67578125,0.654296875,0.583984375,0.4990234375,0.44140625,0.4296875,0.4228515625,0.3916015625,0.3544921875,0.3408203125,0.365234375,0.421875,0.4892578125,0.5546875,0.595703125,0.5927734375,0.5458984375,0.4794921875,0.4306640625,0.419921875,0.4296875,0.470703125,0.5234375,0.5556640625,0.544921875,0.49609375,0.4296875,0.3662109375,0.33203125,0.349609375,0.4150390625,0.4970703125,0.5546875,0.5693359375,0.5791015625,0.6142578125,0.6533203125,0.666015625,0.638671875,0.5791015625,0.509765625,0.4296875,0.3271484375,0.2412109375,0.2177734375,0.2626953125,0.34375,0.419921875,0.4794921875,0.4970703125,0.47265625,0.4306640625,0.408203125,0.427734375,0.4892578125,0.5712890625,0.6748046875,0.7607421875,0.783203125,0.7373046875,0.6552734375,0.5791015625,0.5107421875,0.45703125,0.439453125,0.4638671875,0.51171875,0.5498046875,0.5595703125,0.568359375,0.603515625,0.646484375,0.6630859375,0.638671875,0.580078125,0.509765625,0.44140625,0.3974609375,0.3984375,0.4453125,0.51171875,0.5595703125,0.5693359375,0.576171875,0.6083984375,0.6455078125,0.658203125,0.630859375,0.5703125,0.5,0.427734375,0.3662109375,0.3359375,0.3466796875,0.3857421875,0.419921875,0.4296875,0.4306640625,0.4306640625,0.4296875,0.42578125,0.4228515625,0.419921875,0.419921875,0.4306640625,0.48046875,0.5478515625,0.595703125,0.5986328125,0.5556640625,0.4892578125,0.412109375,0.3212890625,0.259765625,0.263671875,0.333984375,0.4296875,0.509765625,0.5810546875,0.642578125,0.6728515625,0.662109375,0.6240234375,0.5888671875,0.5791015625,0.5830078125,0.6025390625,0.6171875,0.60546875,0.55859375,0.490234375,0.419921875,0.345703125,0.2646484375,0.21875,0.2412109375,0.3251953125,0.427734375,0.509765625,0.58984375,0.6884765625,0.763671875,0.775390625,0.720703125,0.634765625,0.5595703125,0.4814453125,0.3828125,0.302734375,0.2861328125,0.3369140625,0.421875,0.5,0.5771484375,0.6611328125,0.7099609375,0.689453125,0.6083984375,0.5078125,0.4296875,0.373046875,0.36328125,0.40234375,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.3828125,0.380859375,0.40625,0.4326171875,0.439453125,0.439453125,0.439453125,0.4384765625,0.4365234375,0.43359375,0.431640625,0.4296875,0.4287109375,0.4287109375,0.4306640625,0.43359375,0.4375,0.439453125,0.439453125,0.453125,0.5107421875,0.59375,0.66015625,0.6787109375,0.64453125,0.5791015625,0.5185546875,0.4990234375,0.51953125,0.5556640625,0.57421875,0.5517578125,0.4892578125,0.421875,0.3779296875,0.380859375,0.431640625,0.5029296875,0.5556640625,0.5693359375,0.5810546875,0.6240234375,0.6787109375,0.7099609375,0.6982421875,0.6474609375,0.5791015625,0.5078125,0.4375,0.3896484375,0.37890625,0.3984375,0.421875,0.4296875,0.4306640625,0.4306640625,0.4296875,0.42578125,0.4228515625,0.419921875,0.419921875,0.423828125,0.4423828125,0.4775390625,0.517578125,0.55078125,0.5673828125,0.5693359375,0.5673828125,0.56640625,0.564453125,0.5634765625,0.5625,0.560546875,0.5595703125,0.5458984375,0.4951171875,0.42578125,0.376953125,0.3759765625,0.4208984375,0.4892578125,0.5703125,0.6708984375,0.7509765625,0.767578125,0.7177734375,0.6337890625,0.5595703125,0.4921875,0.44140625,0.427734375,0.4560546875,0.5068359375,0.5478515625,0.5595703125,0.5576171875,0.541015625,0.5087890625,0.470703125,0.4384765625,0.421875,0.419921875,0.412109375,0.3720703125,0.3212890625,0.29296875,0.3076171875,0.3603515625,0.4296875,0.5126953125,0.6240234375,0.72265625,0.76171875,0.728515625,0.654296875,0.5791015625,0.5205078125,0.5087890625,0.544921875,0.599609375,0.6337890625,0.6201171875,0.5595703125,0.486328125,0.41796875,0.375,0.369140625,0.3916015625,0.4150390625,0.419921875,0.4296875,0.478515625,0.5478515625,0.5966796875,0.6005859375,0.5576171875,0.4892578125,0.408203125,0.306640625,0.2255859375,0.2080078125,0.2587890625,0.34375,0.419921875,0.5,0.6025390625,0.6875,0.7119140625,0.666015625,0.5849609375,0.509765625,0.451171875,0.4404296875,0.4794921875,0.5390625,0.578125,0.568359375,0.509765625,0.443359375,0.400390625,0.4013671875,0.4482421875,0.5126953125,0.5595703125,0.5693359375,0.564453125,0.548828125,0.5205078125,0.48828125,0.4599609375,0.4443359375,0.439453125,0.44921875,0.4970703125,0.5634765625,0.6103515625,0.6123046875,0.5673828125,0.5,0.431640625,0.388671875,0.3935546875,0.4443359375,0.515625,0.5673828125,0.5791015625,0.5654296875,0.505859375,0.4189453125,0.349609375,0.3291015625,0.36328125,0.4296875,0.4931640625,0.521484375,0.5146484375,0.494140625,0.4873046875,0.515625,0.5791015625,0.6455078125,0.6787109375,0.65625,0.583984375,0.494140625,0.43359375,0.419921875,0.4130859375,0.388671875,0.3662109375,0.3720703125,0.4169921875,0.486328125,0.5595703125,0.6259765625,0.6640625,0.6494140625,0.5859375,0.5029296875,0.4443359375,0.4296875,0.4404296875,0.49609375,0.5771484375,0.6416015625,0.6591796875,0.6240234375,0.5595703125,0.5,0.4833984375,0.509765625,0.5546875,0.580078125,0.560546875,0.5,0.421875,0.3369140625,0.2861328125,0.302734375,0.3828125,0.4814453125,0.5595703125,0.634765625,0.71875,0.7724609375,0.7607421875,0.685546875,0.587890625,0.509765625,0.43359375,0.349609375,0.2998046875,0.318359375,0.3994140625,0.5,0.5791015625,0.6435546875,0.673828125,0.650390625,0.578125,0.490234375,0.431640625,0.419921875,0.421875,0.423828125,0.42578125,0.42578125,0.423828125,0.421875,0.419921875,0.421875,0.4375,0.46875,0.5087890625,0.5439453125,0.5634765625,0.5693359375,0.580078125,0.62109375,0.671875,0.697265625,0.681640625,0.6279296875,0.5595703125,0.48828125,0.4228515625,0.3828125,0.380859375,0.40625,0.4326171875,0.439453125,0.44921875,0.486328125,0.5322265625,0.556640625,0.5390625,0.486328125,0.419921875,0.3671875,0.376953125,0.451171875,0.5498046875,0.6201171875,0.6259765625,0.5693359375,0.49609375,0.4287109375,0.3857421875,0.3818359375,0.4072265625,0.4326171875,0.439453125,0.439453125,0.4365234375,0.4326171875,0.4267578125,0.4228515625,0.419921875,0.419921875,0.423828125,0.4443359375,0.48046875,0.5234375,0.55859375,0.5771484375,0.5791015625,0.568359375,0.52734375,0.4755859375,0.447265625,0.4619140625,0.5126953125,0.5791015625,0.654296875,0.736328125,0.78515625,0.767578125,0.6884765625,0.5888671875,0.509765625,0.4306640625,0.3310546875,0.2509765625,0.2333984375,0.283203125,0.365234375,0.439453125,0.509765625,0.5771484375,0.623046875,0.630859375,0.611328125,0.5869140625,0.5791015625,0.56640625,0.515625,0.4482421875,0.400390625,0.3994140625,0.4423828125,0.509765625,0.5791015625,0.6376953125,0.6650390625,0.6533203125,0.6171875,0.5859375,0.5791015625,0.5908203125,0.6328125,0.68359375,0.7109375,0.6943359375,0.6396484375,0.5693359375,0.49609375,0.4287109375,0.3857421875,0.3818359375,0.4072265625,0.4326171875,0.439453125,0.451171875,0.4990234375,0.5634765625,0.6064453125,0.6044921875,0.55859375,0.4892578125,0.4111328125,0.326171875,0.2744140625,0.29296875,0.375,0.4775390625,0.5595703125,0.6181640625,0.623046875,0.5712890625,0.4970703125,0.4462890625,0.451171875,0.509765625,0.5869140625,0.6689453125,0.7158203125,0.693359375,0.609375,0.5078125,0.4296875,0.36328125,0.3115234375,0.296875,0.3232421875,0.3720703125,0.41015625,0.419921875,0.431640625,0.4814453125,0.55078125,0.599609375,0.6015625,0.5576171875,0.4892578125,0.4189453125,0.3603515625,0.3359375,0.3525390625,0.3955078125,0.4306640625,0.439453125,0.451171875,0.5,0.568359375,0.6162109375,0.619140625,0.576171875,0.509765625,0.443359375,0.400390625,0.4013671875,0.4482421875,0.5126953125,0.5595703125,0.5693359375,0.568359375,0.568359375,0.5693359375,0.5732421875,0.576171875,0.5791015625,0.5791015625,0.5869140625,0.615234375,0.646484375,0.6513671875,0.619140625,0.55859375,0.4892578125,0.4130859375,0.322265625,0.2578125,0.2568359375,0.3212890625,0.412109375,0.4892578125,0.556640625,0.6005859375,0.6005859375,0.5576171875,0.494140625,0.44921875,0.439453125,0.4541015625,0.5107421875,0.5908203125,0.6533203125,0.66796875,0.6328125,0.5693359375,0.4912109375,0.390625,0.30859375,0.2861328125,0.33203125,0.4140625,0.4892578125,0.5654296875,0.6494140625,0.69921875,0.6806640625,0.599609375,0.4990234375,0.419921875,0.34375,0.259765625,0.2109375,0.228515625,0.3095703125,0.41015625,0.4892578125,0.5693359375,0.673828125,0.759765625,0.7841796875,0.7392578125,0.65625,0.5791015625,0.51953125,0.5068359375,0.544921875,0.40234375,0.390625,0.4052734375,0.423828125,0.4287109375,0.4296875,0.4287109375,0.4248046875,0.416015625,0.40234375,0.388671875,0.376953125,0.3681640625,0.3671875,0.376953125,0.39453125,0.4140625,0.4267578125,0.4287109375,0.443359375,0.5087890625,0.6083984375,0.69921875,0.7421875,0.7275390625,0.673828125,0.6181640625,0.587890625,0.580078125,0.576171875,0.55859375,0.5146484375,0.4482421875,0.380859375,0.34375,0.361328125,0.4326171875,0.52734375,0.59765625,0.6220703125,0.6416015625,0.69140625,0.75,0.78515625,0.7783203125,0.7333984375,0.673828125,0.60546875,0.5185546875,0.43359375,0.376953125,0.3583984375,0.365234375,0.376953125,0.3857421875,0.3876953125,0.3779296875,0.3603515625,0.3408203125,0.328125,0.3251953125,0.333984375,0.3759765625,0.4501953125,0.5322265625,0.5966796875,0.625,0.6220703125,0.6123046875,0.6044921875,0.5986328125,0.59375,0.587890625,0.580078125,0.5703125,0.546875,0.4833984375,0.400390625,0.341796875,0.3359375,0.3798828125,0.4482421875,0.52734375,0.6240234375,0.703125,0.7265625,0.6904296875,0.626953125,0.5703125,0.5185546875,0.4755859375,0.458984375,0.4755859375,0.515625,0.552734375,0.5703125,0.5732421875,0.544921875,0.484375,0.4111328125,0.3505859375,0.322265625,0.3251953125,0.3271484375,0.298828125,0.2587890625,0.23828125,0.2548828125,0.3076171875,0.376953125,0.462890625,0.5869140625,0.7119140625,0.78515625,0.787109375,0.736328125,0.673828125,0.62109375,0.60546875,0.625,0.6533203125,0.6630859375,0.6337890625,0.5703125,0.49609375,0.419921875,0.3603515625,0.330078125,0.3271484375,0.3310546875,0.3251953125,0.328125,0.376953125,0.4560546875,0.5234375,0.544921875,0.513671875,0.4482421875,0.3662109375,0.263671875,0.177734375,0.1494140625,0.1875,0.2587890625,0.3251953125,0.3994140625,0.5068359375,0.6142578125,0.673828125,0.6669921875,0.6142578125,0.55078125,0.5,0.4912109375,0.525390625,0.5771484375,0.611328125,0.6025390625,0.55078125,0.494140625,0.46484375,0.4765625,0.525390625,0.5849609375,0.6220703125,0.6220703125,0.6083984375,0.583984375,0.546875,0.50390625,0.466796875,0.4423828125,0.4287109375,0.4306640625,0.4736328125,0.5400390625,0.59375,0.6044921875,0.56640625,0.5,0.43359375,0.40234375,0.427734375,0.50390625,0.5966796875,0.6591796875,0.673828125,0.65625,0.5791015625,0.458984375,0.3505859375,0.2978515625,0.314453125,0.376953125,0.4443359375,0.490234375,0.5166015625,0.5341796875,0.5595703125,0.6064453125,0.673828125,0.7353515625,0.7451171875,0.6806640625,0.55859375,0.427734375,0.34375,0.3251953125,0.3212890625,0.3095703125,0.310546875,0.3447265625,0.412109375,0.494140625,0.5703125,0.63671875,0.671875,0.6494140625,0.5732421875,0.474609375,0.40234375,0.376953125,0.3798828125,0.431640625,0.5185546875,0.599609375,0.6396484375,0.6240234375,0.5703125,0.5185546875,0.5068359375,0.533203125,0.5712890625,0.587890625,0.5625,0.5,0.423828125,0.3505859375,0.3154296875,0.3427734375,0.4208984375,0.5087890625,0.5703125,0.6279296875,0.6982421875,0.7490234375,0.7490234375,0.6953125,0.6181640625,0.55078125,0.4853515625,0.419921875,0.390625,0.4228515625,0.5068359375,0.6025390625,0.673828125,0.7236328125,0.7197265625,0.646484375,0.5234375,0.40234375,0.33203125,0.3251953125,0.3369140625,0.3505859375,0.3603515625,0.3603515625,0.3505859375,0.3369140625,0.3251953125,0.3212890625,0.34375,0.3994140625,0.4775390625,0.5537109375,0.603515625,0.6220703125,0.638671875,0.67578125,0.7119140625,0.7197265625,0.689453125,0.6328125,0.5703125,0.5068359375,0.4453125,0.40234375,0.390625,0.4052734375,0.423828125,0.4287109375,0.43359375,0.451171875,0.4658203125,0.4599609375,0.427734375,0.3779296875,0.3251953125,0.29296875,0.3330078125,0.443359375,0.5732421875,0.6640625,0.677734375,0.6220703125,0.5478515625,0.4716796875,0.4150390625,0.39453125,0.4052734375,0.423828125,0.4287109375,0.4267578125,0.4140625,0.390625,0.36328125,0.3408203125,0.328125,0.3251953125,0.3349609375,0.3837890625,0.46875,0.5654296875,0.640625,0.67578125,0.673828125,0.65625,0.619140625,0.5791015625,0.5615234375,0.5791015625,0.6220703125,0.673828125,0.728515625,0.787109375,0.814453125,0.787109375,0.7099609375,0.62109375,0.55078125,0.4814453125,0.392578125,0.3154296875,0.2880859375,0.3154296875,0.3740234375,0.4287109375,0.4853515625,0.55859375,0.6298828125,0.677734375,0.6923828125,0.6845703125,0.673828125,0.65234375,0.59375,0.5185546875,0.46484375,0.45703125,0.4931640625,0.55078125,0.6123046875,0.666015625,0.697265625,0.6982421875,0.6826171875,0.6689453125,0.673828125,0.6923828125,0.7353515625,0.779296875,0.791015625,0.7587890625,0.6943359375,0.6220703125,0.5478515625,0.4716796875,0.4150390625,0.39453125,0.4052734375,0.423828125,0.4287109375,0.439453125,0.4833984375,0.541015625,0.576171875,0.5673828125,0.517578125,0.4482421875,0.37109375,0.2919921875,0.251953125,0.2841796875,0.37890625,0.4873046875,0.5703125,0.62890625,0.6376953125,0.59375,0.52734375,0.4833984375,0.4921875,0.55078125,0.6240234375,0.6845703125,0.697265625,0.642578125,0.541015625,0.4404296875,0.376953125,0.326171875,0.283203125,0.26171875,0.26953125,0.296875,0.3193359375,0.3251953125,0.3388671875,0.39453125,0.4755859375,0.5380859375,0.552734375,0.5146484375,0.4482421875,0.3779296875,0.3232421875,0.3056640625,0.3310546875,0.3798828125,0.419921875,0.4287109375,0.4404296875,0.4912109375,0.5634765625,0.6220703125,0.6376953125,0.6083984375,0.55078125,0.494140625,0.46484375,0.4765625,0.525390625,0.5849609375,0.6220703125,0.6220703125,0.61328125,0.611328125,0.62109375,0.638671875,0.658203125,0.6708984375,0.673828125,0.6748046875,0.677734375,0.6650390625,0.626953125,0.5673828125,0.5029296875,0.4482421875,0.3896484375,0.31640625,0.26171875,0.2568359375,0.306640625,0.380859375,0.4482421875,0.505859375,0.5419921875,0.5419921875,0.505859375,0.4580078125,0.427734375,0.4287109375,0.4501953125,0.51171875,0.59375,0.662109375,0.6884765625,0.66796875,0.6220703125,0.5595703125,0.4658203125,0.3720703125,0.3212890625,0.33203125,0.384765625,0.4482421875,0.513671875,0.5791015625,0.6083984375,0.576171875,0.4921875,0.396484375,0.3251953125,0.2607421875,0.1943359375,0.1650390625,0.197265625,0.28125,0.376953125,0.4482421875,0.5224609375,0.63671875,0.751953125,0.8154296875,0.806640625,0.74609375,0.673828125,0.6123046875,0.595703125,0.6240234375,0.421875,0.4248046875,0.4453125,0.4638671875,0.46875,0.470703125,0.47265625,0.46875,0.4521484375,0.423828125,0.392578125,0.3642578125,0.3408203125,0.333984375,0.3525390625,0.3916015625,0.4345703125,0.462890625,0.46875,0.4814453125,0.541015625,0.6357421875,0.7255859375,0.7783203125,0.7783203125,0.740234375,0.6982421875,0.6640625,0.6328125,0.5908203125,0.5341796875,0.4658203125,0.39453125,0.326171875,0.2880859375,0.30859375,0.3916015625,0.50390625,0.59375,0.634765625,0.6689453125,0.7275390625,0.7900390625,0.826171875,0.8212890625,0.78515625,0.740234375,0.68359375,0.58984375,0.4775390625,0.3857421875,0.3408203125,0.3408203125,0.3642578125,0.3876953125,0.3935546875,0.375,0.3359375,0.29296875,0.2646484375,0.2587890625,0.271484375,0.33203125,0.435546875,0.546875,0.6259765625,0.65234375,0.634765625,0.6103515625,0.59375,0.5849609375,0.580078125,0.5712890625,0.5546875,0.5302734375,0.4912109375,0.4140625,0.3251953125,0.2705078125,0.2724609375,0.32421875,0.39453125,0.4697265625,0.5498046875,0.607421875,0.62109375,0.59375,0.5546875,0.5302734375,0.5078125,0.478515625,0.455078125,0.4521484375,0.4716796875,0.501953125,0.5302734375,0.5458984375,0.5166015625,0.44140625,0.34765625,0.2724609375,0.2431640625,0.2587890625,0.27734375,0.267578125,0.2421875,0.228515625,0.24609375,0.2958984375,0.3642578125,0.44921875,0.5732421875,0.7041015625,0.7919921875,0.814453125,0.78515625,0.740234375,0.701171875,0.6845703125,0.6826171875,0.67578125,0.6494140625,0.5986328125,0.5302734375,0.45703125,0.3876953125,0.3330078125,0.3037109375,0.291015625,0.28125,0.2587890625,0.24609375,0.28515625,0.3642578125,0.44140625,0.4775390625,0.45703125,0.39453125,0.3154296875,0.2197265625,0.142578125,0.1181640625,0.1494140625,0.2080078125,0.2587890625,0.3173828125,0.4189453125,0.5380859375,0.6298828125,0.6640625,0.6474609375,0.6044921875,0.56640625,0.5595703125,0.5849609375,0.6240234375,0.6494140625,0.642578125,0.6044921875,0.564453125,0.55078125,0.568359375,0.607421875,0.642578125,0.6533203125,0.634765625,0.609375,0.5849609375,0.5625,0.541015625,0.51953125,0.4951171875,0.46875,0.4541015625,0.48046875,0.53515625,0.5849609375,0.5986328125,0.564453125,0.5,0.435546875,0.412109375,0.4521484375,0.546875,0.6533203125,0.724609375,0.740234375,0.7216796875,0.6337890625,0.4970703125,0.3671875,0.2958984375,0.302734375,0.3642578125,0.4326171875,0.4892578125,0.533203125,0.5712890625,0.615234375,0.671875,0.740234375,0.798828125,0.79296875,0.6982421875,0.541015625,0.3798828125,0.2802734375,0.2587890625,0.2548828125,0.24609375,0.25390625,0.294921875,0.3681640625,0.4541015625,0.5302734375,0.599609375,0.6474609375,0.642578125,0.580078125,0.484375,0.4033203125,0.3642578125,0.3486328125,0.3759765625,0.44140625,0.515625,0.564453125,0.56640625,0.5302734375,0.4951171875,0.5,0.5380859375,0.580078125,0.59375,0.5634765625,0.5,0.427734375,0.3681640625,0.34765625,0.3779296875,0.44140625,0.5009765625,0.5302734375,0.556640625,0.60546875,0.6591796875,0.6904296875,0.6845703125,0.6494140625,0.6044921875,0.5576171875,0.5146484375,0.501953125,0.5380859375,0.6103515625,0.6865234375,0.740234375,0.76953125,0.728515625,0.6103515625,0.4521484375,0.31640625,0.2509765625,0.2587890625,0.2880859375,0.3232421875,0.34765625,0.34765625,0.3232421875,0.2880859375,0.2587890625,0.23828125,0.2490234375,0.30859375,0.408203125,0.5166015625,0.5966796875,0.634765625,0.6640625,0.697265625,0.712890625,0.6923828125,0.6416015625,0.580078125,0.5302734375,0.484375,0.443359375,0.421875,0.4248046875,0.4453125,0.4638671875,0.46875,0.466796875,0.4521484375,0.419921875,0.3720703125,0.3212890625,0.2822265625,0.2587890625,0.2587890625,0.3330078125,0.466796875,0.6044921875,0.689453125,0.693359375,0.634765625,0.5615234375,0.4892578125,0.4384765625,0.4248046875,0.44140625,0.462890625,0.46875,0.4638671875,0.4384765625,0.3916015625,0.3359375,0.2890625,0.263671875,0.2587890625,0.2734375,0.34765625,0.474609375,0.61328125,0.7158203125,0.7548828125,0.740234375,0.7119140625,0.681640625,0.662109375,0.666015625,0.6884765625,0.7177734375,0.740234375,0.76171875,0.78515625,0.7919921875,0.767578125,0.71484375,0.654296875,0.6044921875,0.5546875,0.494140625,0.44140625,0.4169921875,0.423828125,0.447265625,0.46875,0.498046875,0.5595703125,0.6435546875,0.7177734375,0.759765625,0.76171875,0.740234375,0.705078125,0.642578125,0.57421875,0.5302734375,0.5283203125,0.5595703125,0.6044921875,0.6484375,0.6826171875,0.701171875,0.70703125,0.7080078125,0.7177734375,0.740234375,0.7734375,0.8212890625,0.8564453125,0.84765625,0.791015625,0.7109375,0.634765625,0.5615234375,0.4892578125,0.4384765625,0.4248046875,0.44140625,0.462890625,0.46875,0.4775390625,0.509765625,0.546875,0.5576171875,0.52734375,0.4658203125,0.39453125,0.3173828125,0.240234375,0.2041015625,0.2392578125,0.3359375,0.447265625,0.5302734375,0.591796875,0.611328125,0.587890625,0.546875,0.5234375,0.54296875,0.6044921875,0.671875,0.7060546875,0.6796875,0.59375,0.482421875,0.3984375,0.3642578125,0.3427734375,0.31640625,0.2900390625,0.26953125,0.2607421875,0.2587890625,0.2587890625,0.2724609375,0.330078125,0.4140625,0.48046875,0.4970703125,0.4609375,0.39453125,0.326171875,0.283203125,0.2861328125,0.3369140625,0.40625,0.45703125,0.46875,0.478515625,0.521484375,0.5849609375,0.640625,0.662109375,0.6455078125,0.6044921875,0.564453125,0.55078125,0.568359375,0.607421875,0.642578125,0.6533203125,0.634765625,0.611328125,0.60546875,0.6240234375,0.6630859375,0.7060546875,0.734375,0.740234375,0.734375,0.7041015625,0.640625,0.5576171875,0.4765625,0.4208984375,0.39453125,0.3701171875,0.3291015625,0.2919921875,0.28125,0.3037109375,0.34765625,0.39453125,0.4365234375,0.4638671875,0.46875,0.4580078125,0.4462890625,0.4482421875,0.46875,0.5009765625,0.5517578125,0.607421875,0.6484375,0.662109375,0.6533203125,0.634765625,0.6044921875,0.53515625,0.4443359375,0.369140625,0.337890625,0.353515625,0.39453125,0.44140625,0.484375,0.4970703125,0.4609375,0.388671875,0.3125,0.2587890625,0.2119140625,0.1689453125,0.15625,0.1923828125,0.2646484375,0.3408203125,0.39453125,0.4560546875,0.5732421875,0.7119140625,0.814453125,0.8447265625,0.8076171875,0.740234375,0.677734375,0.654296875,0.6708984375,0.44140625,0.46875,0.501953125,0.5244140625,0.5302734375,0.533203125,0.54296875,0.546875,0.5302734375,0.4912109375,0.44140625,0.39453125,0.353515625,0.3369140625,0.3583984375,0.4140625,0.4775390625,0.5205078125,0.5302734375,0.5380859375,0.5791015625,0.6455078125,0.712890625,0.7548828125,0.7607421875,0.740234375,0.7158203125,0.6923828125,0.6572265625,0.599609375,0.521484375,0.4384765625,0.3642578125,0.2939453125,0.244140625,0.2509765625,0.3251953125,0.4404296875,0.544921875,0.6044921875,0.6552734375,0.720703125,0.7783203125,0.806640625,0.7978515625,0.7685546875,0.740234375,0.7001953125,0.6123046875,0.4970703125,0.3974609375,0.3486328125,0.3544921875,0.39453125,0.435546875,0.4521484375,0.4306640625,0.375,0.3115234375,0.2685546875,0.2587890625,0.2734375,0.341796875,0.4521484375,0.5634765625,0.6318359375,0.640625,0.6044921875,0.5634765625,0.5400390625,0.53515625,0.5380859375,0.533203125,0.509765625,0.46875,0.4130859375,0.3251953125,0.240234375,0.201171875,0.224609375,0.2900390625,0.3642578125,0.43359375,0.48828125,0.5107421875,0.5,0.4736328125,0.4580078125,0.46875,0.4814453125,0.46875,0.4384765625,0.4111328125,0.4052734375,0.427734375,0.46875,0.501953125,0.4833984375,0.4111328125,0.3173828125,0.2451171875,0.2255859375,0.2587890625,0.2958984375,0.3037109375,0.2890625,0.275390625,0.28515625,0.328125,0.39453125,0.4755859375,0.5859375,0.6953125,0.767578125,0.787109375,0.767578125,0.740234375,0.7177734375,0.7080078125,0.6953125,0.666015625,0.611328125,0.5419921875,0.46875,0.400390625,0.349609375,0.3232421875,0.31640625,0.314453125,0.2978515625,0.2587890625,0.2275390625,0.2490234375,0.3173828125,0.39453125,0.4384765625,0.4248046875,0.3642578125,0.2880859375,0.2080078125,0.1513671875,0.142578125,0.177734375,0.2255859375,0.2587890625,0.296875,0.376953125,0.4853515625,0.5849609375,0.64453125,0.6552734375,0.634765625,0.61328125,0.609375,0.6240234375,0.646484375,0.6611328125,0.6572265625,0.634765625,0.615234375,0.6181640625,0.640625,0.6630859375,0.6669921875,0.6455078125,0.6044921875,0.5654296875,0.548828125,0.5576171875,0.576171875,0.5849609375,0.5693359375,0.5302734375,0.4951171875,0.5,0.5380859375,0.580078125,0.59375,0.5634765625,0.5,0.435546875,0.412109375,0.4521484375,0.546875,0.6533203125,0.724609375,0.740234375,0.7216796875,0.638671875,0.5078125,0.3857421875,0.322265625,0.3330078125,0.39453125,0.4619140625,0.5146484375,0.5517578125,0.5830078125,0.619140625,0.671875,0.740234375,0.798828125,0.79296875,0.6982421875,0.541015625,0.3798828125,0.2802734375,0.2587890625,0.25390625,0.2373046875,0.2314453125,0.2568359375,0.31640625,0.39453125,0.46875,0.5439453125,0.61328125,0.6435546875,0.6123046875,0.5341796875,0.4501953125,0.39453125,0.35546875,0.3466796875,0.375,0.4248046875,0.470703125,0.486328125,0.46875,0.4541015625,0.48046875,0.53515625,0.5849609375,0.5986328125,0.564453125,0.5,0.431640625,0.38671875,0.380859375,0.4111328125,0.4541015625,0.478515625,0.46875,0.4580078125,0.4794921875,0.533203125,0.595703125,0.642578125,0.654296875,0.634765625,0.6083984375,0.5859375,0.5849609375,0.61328125,0.6611328125,0.7080078125,0.740234375,0.748046875,0.6826171875,0.546875,0.388671875,0.2705078125,0.2294921875,0.2587890625,0.3095703125,0.369140625,0.4111328125,0.4111328125,0.369140625,0.3095703125,0.2587890625,0.216796875,0.19921875,0.234375,0.3251953125,0.4443359375,0.5458984375,0.6044921875,0.6494140625,0.681640625,0.6787109375,0.6357421875,0.56640625,0.50390625,0.46875,0.4453125,0.4326171875,0.44140625,0.46875,0.501953125,0.5244140625,0.5302734375,0.5205078125,0.4765625,0.40234375,0.3232421875,0.265625,0.2470703125,0.2587890625,0.294921875,0.392578125,0.52734375,0.640625,0.6904296875,0.6689453125,0.6044921875,0.533203125,0.4716796875,0.44140625,0.4521484375,0.4892578125,0.521484375,0.5302734375,0.5234375,0.490234375,0.4306640625,0.3583984375,0.2978515625,0.265625,0.2587890625,0.2763671875,0.361328125,0.501953125,0.6484375,0.748046875,0.7734375,0.740234375,0.6982421875,0.6767578125,0.6826171875,0.708984375,0.7392578125,0.751953125,0.740234375,0.72265625,0.7119140625,0.7041015625,0.6953125,0.681640625,0.66015625,0.634765625,0.609375,0.5888671875,0.57421875,0.5654296875,0.55859375,0.546875,0.5302734375,0.5224609375,0.560546875,0.6376953125,0.720703125,0.7734375,0.7763671875,0.740234375,0.689453125,0.62890625,0.5771484375,0.5576171875,0.572265625,0.60546875,0.634765625,0.6572265625,0.662109375,0.6572265625,0.654296875,0.6669921875,0.697265625,0.740234375,0.791015625,0.849609375,0.880859375,0.8564453125,0.779296875,0.68359375,0.6044921875,0.533203125,0.4716796875,0.44140625,0.4521484375,0.4892578125,0.521484375,0.5302734375,0.5361328125,0.5576171875,0.57421875,0.560546875,0.509765625,0.4375,0.3642578125,0.287109375,0.205078125,0.162109375,0.189453125,0.2802734375,0.38671875,0.46875,0.533203125,0.5634765625,0.560546875,0.5439453125,0.5400390625,0.5712890625,0.634765625,0.6962890625,0.708984375,0.654296875,0.5517578125,0.4482421875,0.3916015625,0.39453125,0.41015625,0.4072265625,0.3798828125,0.3369140625,0.2919921875,0.2646484375,0.2587890625,0.271484375,0.326171875,0.40234375,0.4609375,0.470703125,0.431640625,0.3642578125,0.2978515625,0.265625,0.2900390625,0.36328125,0.4541015625,0.515625,0.5302734375,0.5361328125,0.564453125,0.607421875,0.646484375,0.6650390625,0.658203125,0.634765625,0.615234375,0.6181640625,0.640625,0.6630859375,0.6669921875,0.6455078125,0.6044921875,0.5634765625,0.546875,0.568359375,0.6240234375,0.6875,0.73046875,0.740234375,0.728515625,0.671875,0.57421875,0.466796875,0.3857421875,0.3544921875,0.3642578125,0.37890625,0.376953125,0.361328125,0.341796875,0.3330078125,0.3408203125,0.3642578125,0.3876953125,0.400390625,0.408203125,0.421875,0.447265625,0.4853515625,0.5302734375,0.5732421875,0.6044921875,0.615234375,0.607421875,0.59375,0.5908203125,0.6044921875,0.6142578125,0.5830078125,0.513671875,0.4306640625,0.3671875,0.3466796875,0.3642578125,0.390625,0.4130859375,0.4140625,0.3857421875,0.337890625,0.291015625,0.2587890625,0.232421875,0.2099609375,0.208984375,0.2373046875,0.28515625,0.33203125,0.3642578125,0.408203125,0.5146484375,0.6572265625,0.775390625,0.8271484375,0.8046875,0.740234375,0.6767578125,0.650390625,0.66015625,0.4609375,0.5029296875,0.5419921875,0.5654296875,0.5703125,0.576171875,0.5966796875,0.615234375,0.6083984375,0.5703125,0.5107421875,0.4482421875,0.390625,0.361328125,0.376953125,0.435546875,0.5078125,0.55859375,0.5703125,0.57421875,0.5927734375,0.623046875,0.6552734375,0.67578125,0.6806640625,0.673828125,0.666015625,0.6640625,0.650390625,0.6064453125,0.53515625,0.4521484375,0.376953125,0.302734375,0.236328125,0.2158203125,0.2666015625,0.3701171875,0.4775390625,0.55078125,0.615234375,0.6806640625,0.7275390625,0.73828125,0.7177734375,0.689453125,0.673828125,0.6494140625,0.5791015625,0.48046875,0.3994140625,0.3681640625,0.3916015625,0.4482421875,0.5048828125,0.5341796875,0.5185546875,0.4609375,0.3876953125,0.3369140625,0.3251953125,0.33984375,0.40234375,0.498046875,0.583984375,0.623046875,0.60546875,0.55078125,0.4970703125,0.4736328125,0.48046875,0.5,0.5068359375,0.4833984375,0.4287109375,0.3583984375,0.265625,0.189453125,0.1708984375,0.21875,0.2998046875,0.376953125,0.44140625,0.470703125,0.45703125,0.4189453125,0.38671875,0.388671875,0.4287109375,0.4697265625,0.4716796875,0.435546875,0.3876953125,0.361328125,0.3759765625,0.4287109375,0.4775390625,0.474609375,0.4169921875,0.337890625,0.2802734375,0.27734375,0.3251953125,0.3779296875,0.396484375,0.380859375,0.357421875,0.3525390625,0.3837890625,0.4482421875,0.5244140625,0.6103515625,0.681640625,0.71484375,0.7099609375,0.6884765625,0.673828125,0.66796875,0.671875,0.6689453125,0.638671875,0.5791015625,0.5029296875,0.4287109375,0.365234375,0.3359375,0.345703125,0.3740234375,0.3935546875,0.3779296875,0.3251953125,0.27734375,0.2802734375,0.333984375,0.404296875,0.4482421875,0.4375,0.376953125,0.3046875,0.240234375,0.2080078125,0.2197265625,0.263671875,0.306640625,0.3251953125,0.34375,0.3935546875,0.4697265625,0.5478515625,0.6044921875,0.6259765625,0.6220703125,0.61328125,0.611328125,0.6171875,0.6259765625,0.6318359375,0.6298828125,0.6220703125,0.6181640625,0.6376953125,0.666015625,0.677734375,0.658203125,0.611328125,0.55078125,0.5,0.4931640625,0.5322265625,0.5888671875,0.6279296875,0.62109375,0.5703125,0.5185546875,0.5068359375,0.533203125,0.5712890625,0.587890625,0.5625,0.5,0.43359375,0.40234375,0.427734375,0.50390625,0.5966796875,0.6591796875,0.673828125,0.658203125,0.5888671875,0.4853515625,0.3955078125,0.3583984375,0.3837890625,0.4482421875,0.5126953125,0.55078125,0.5615234375,0.5595703125,0.5703125,0.6083984375,0.673828125,0.7353515625,0.7451171875,0.6806640625,0.55859375,0.427734375,0.34375,0.3251953125,0.318359375,0.2890625,0.2587890625,0.255859375,0.2919921875,0.3564453125,0.4287109375,0.5078125,0.59765625,0.6611328125,0.662109375,0.6015625,0.5166015625,0.4482421875,0.3896484375,0.34765625,0.33984375,0.365234375,0.4052734375,0.4306640625,0.4287109375,0.4306640625,0.4736328125,0.5400390625,0.59375,0.6044921875,0.56640625,0.5,0.435546875,0.404296875,0.4130859375,0.4462890625,0.474609375,0.470703125,0.4287109375,0.3857421875,0.3779296875,0.4189453125,0.49609375,0.5751953125,0.6201171875,0.6220703125,0.611328125,0.6044921875,0.60546875,0.619140625,0.640625,0.66015625,0.673828125,0.6669921875,0.5966796875,0.4755859375,0.3525390625,0.279296875,0.275390625,0.3251953125,0.3935546875,0.474609375,0.53125,0.53125,0.474609375,0.3935546875,0.3251953125,0.2626953125,0.2099609375,0.203125,0.2626953125,0.3701171875,0.4775390625,0.55078125,0.609375,0.6455078125,0.6376953125,0.5830078125,0.5087890625,0.4501953125,0.4287109375,0.421875,0.431640625,0.4609375,0.5029296875,0.5419921875,0.5654296875,0.5703125,0.5576171875,0.498046875,0.4052734375,0.3193359375,0.2744140625,0.2822265625,0.3251953125,0.390625,0.4970703125,0.6103515625,0.6787109375,0.677734375,0.623046875,0.55078125,0.4814453125,0.431640625,0.4228515625,0.4580078125,0.515625,0.5595703125,0.5703125,0.564453125,0.5341796875,0.48046875,0.416015625,0.361328125,0.3310546875,0.3251953125,0.341796875,0.419921875,0.5439453125,0.6611328125,0.7275390625,0.724609375,0.673828125,0.62109375,0.60546875,0.6318359375,0.6796875,0.7158203125,0.71484375,0.673828125,0.6240234375,0.5869140625,0.5732421875,0.5859375,0.6103515625,0.6259765625,0.6220703125,0.6171875,0.6328125,0.658203125,0.669921875,0.6572265625,0.619140625,0.5703125,0.53125,0.5419921875,0.6015625,0.6767578125,0.7265625,0.7236328125,0.673828125,0.611328125,0.5537109375,0.5234375,0.53125,0.5673828125,0.6044921875,0.6220703125,0.6240234375,0.6025390625,0.5703125,0.5537109375,0.5693359375,0.6142578125,0.673828125,0.740234375,0.8115234375,0.849609375,0.8212890625,0.7353515625,0.6328125,0.55078125,0.4814453125,0.431640625,0.4228515625,0.4580078125,0.515625,0.5595703125,0.5703125,0.5751953125,0.59375,0.6044921875,0.583984375,0.52734375,0.451171875,0.376953125,0.298828125,0.2109375,0.15625,0.1689453125,0.248046875,0.34765625,0.4287109375,0.4931640625,0.52734375,0.5302734375,0.5205078125,0.5234375,0.5576171875,0.6220703125,0.6806640625,0.681640625,0.6181640625,0.5205078125,0.4375,0.412109375,0.4482421875,0.494140625,0.5166015625,0.4990234375,0.4453125,0.3798828125,0.3359375,0.3251953125,0.3369140625,0.384765625,0.4501953125,0.494140625,0.4921875,0.4462890625,0.376953125,0.3125,0.283203125,0.3125,0.3935546875,0.490234375,0.5556640625,0.5703125,0.572265625,0.5849609375,0.6044921875,0.6220703125,0.6318359375,0.630859375,0.6220703125,0.6181640625,0.6376953125,0.666015625,0.677734375,0.658203125,0.611328125,0.55078125,0.494140625,0.46484375,0.48046875,0.5380859375,0.611328125,0.662109375,0.673828125,0.6591796875,0.59375,0.490234375,0.3896484375,0.3330078125,0.3349609375,0.376953125,0.42578125,0.45703125,0.4580078125,0.4326171875,0.396484375,0.3740234375,0.376953125,0.3837890625,0.37890625,0.3779296875,0.3984375,0.4453125,0.5068359375,0.5703125,0.6220703125,0.634765625,0.6044921875,0.5517578125,0.51171875,0.5107421875,0.55078125,0.595703125,0.60546875,0.568359375,0.49609375,0.421875,0.3779296875,0.376953125,0.3876953125,0.39453125,0.3935546875,0.3798828125,0.3583984375,0.3388671875,0.3251953125,0.3154296875,0.3076171875,0.3095703125,0.3232421875,0.3447265625,0.3642578125,0.376953125,0.404296875,0.4892578125,0.611328125,0.71484375,0.759765625,0.7373046875,0.673828125,0.6103515625,0.5849609375,0.59765625,0.48046875,0.5126953125,0.541015625,0.556640625,0.5595703125,0.5673828125,0.599609375,0.63671875,0.6474609375,0.619140625,0.5595703125,0.4892578125,0.4228515625,0.3798828125,0.3828125,0.4306640625,0.4990234375,0.5478515625,0.5595703125,0.5595703125,0.5634765625,0.5693359375,0.5751953125,0.5791015625,0.580078125,0.5791015625,0.583984375,0.6064453125,0.6259765625,0.6181640625,0.572265625,0.5029296875,0.4296875,0.3525390625,0.2685546875,0.220703125,0.2431640625,0.3271484375,0.4296875,0.509765625,0.5791015625,0.6396484375,0.669921875,0.6591796875,0.6220703125,0.5888671875,0.5791015625,0.5654296875,0.5126953125,0.4404296875,0.3876953125,0.3818359375,0.4228515625,0.4892578125,0.5556640625,0.5986328125,0.595703125,0.5478515625,0.48046875,0.4306640625,0.419921875,0.431640625,0.4833984375,0.5556640625,0.6083984375,0.6162109375,0.5751953125,0.509765625,0.44921875,0.4306640625,0.4541015625,0.4951171875,0.5185546875,0.5,0.439453125,0.361328125,0.267578125,0.1982421875,0.1953125,0.2587890625,0.3505859375,0.4296875,0.490234375,0.50390625,0.46875,0.412109375,0.373046875,0.3828125,0.439453125,0.49609375,0.505859375,0.4658203125,0.4072265625,0.3701171875,0.380859375,0.439453125,0.498046875,0.505859375,0.4619140625,0.3974609375,0.353515625,0.3623046875,0.419921875,0.4794921875,0.4970703125,0.47265625,0.4306640625,0.408203125,0.427734375,0.4892578125,0.5615234375,0.6259765625,0.66015625,0.654296875,0.62109375,0.5888671875,0.5791015625,0.583984375,0.607421875,0.6298828125,0.6240234375,0.5810546875,0.5126953125,0.439453125,0.37890625,0.365234375,0.3994140625,0.4541015625,0.490234375,0.478515625,0.419921875,0.3623046875,0.353515625,0.396484375,0.458984375,0.5,0.4892578125,0.4296875,0.359375,0.3046875,0.2880859375,0.3154296875,0.3662109375,0.408203125,0.419921875,0.4248046875,0.4453125,0.48046875,0.51953125,0.5517578125,0.5673828125,0.5693359375,0.568359375,0.5673828125,0.568359375,0.5703125,0.5712890625,0.5703125,0.5693359375,0.576171875,0.6083984375,0.646484375,0.6611328125,0.63671875,0.5791015625,0.509765625,0.4521484375,0.4482421875,0.498046875,0.5703125,0.62109375,0.6162109375,0.5595703125,0.5,0.4833984375,0.509765625,0.5546875,0.580078125,0.560546875,0.5,0.431640625,0.388671875,0.3935546875,0.4443359375,0.515625,0.5673828125,0.5791015625,0.5673828125,0.5146484375,0.44140625,0.38671875,0.3798828125,0.421875,0.4892578125,0.5517578125,0.5732421875,0.552734375,0.515625,0.49609375,0.517578125,0.5791015625,0.6455078125,0.6787109375,0.65625,0.583984375,0.494140625,0.43359375,0.419921875,0.41015625,0.37109375,0.322265625,0.296875,0.314453125,0.369140625,0.439453125,0.5205078125,0.619140625,0.6962890625,0.708984375,0.6533203125,0.56640625,0.4892578125,0.4208984375,0.3642578125,0.341796875,0.3583984375,0.3994140625,0.4326171875,0.439453125,0.44921875,0.4970703125,0.5634765625,0.6103515625,0.6123046875,0.5673828125,0.5,0.4375,0.41796875,0.4423828125,0.4853515625,0.513671875,0.498046875,0.439453125,0.3759765625,0.3427734375,0.3603515625,0.4248046875,0.50390625,0.55859375,0.5693359375,0.5673828125,0.56640625,0.5673828125,0.5703125,0.57421875,0.5771484375,0.5791015625,0.5673828125,0.5087890625,0.4208984375,0.3486328125,0.3251953125,0.35546875,0.419921875,0.498046875,0.58984375,0.654296875,0.654296875,0.58984375,0.498046875,0.419921875,0.34375,0.2626953125,0.2177734375,0.2412109375,0.3271484375,0.4296875,0.509765625,0.576171875,0.6201171875,0.6181640625,0.5712890625,0.5029296875,0.453125,0.439453125,0.4404296875,0.4541015625,0.48046875,0.5126953125,0.541015625,0.556640625,0.5595703125,0.546875,0.490234375,0.408203125,0.341796875,0.3232421875,0.3564453125,0.419921875,0.498046875,0.6005859375,0.6875,0.7119140625,0.66796875,0.5869140625,0.509765625,0.4404296875,0.39453125,0.392578125,0.435546875,0.5,0.5478515625,0.5595703125,0.5556640625,0.5390625,0.5078125,0.470703125,0.4404296875,0.4228515625,0.419921875,0.43359375,0.4931640625,0.5810546875,0.6533203125,0.67578125,0.6435546875,0.5791015625,0.5205078125,0.5087890625,0.546875,0.60546875,0.6455078125,0.6357421875,0.5791015625,0.5126953125,0.462890625,0.44921875,0.4755859375,0.5244140625,0.5615234375,0.5693359375,0.5771484375,0.6142578125,0.6630859375,0.689453125,0.67578125,0.6259765625,0.5595703125,0.5029296875,0.49609375,0.5400390625,0.603515625,0.646484375,0.6376953125,0.5791015625,0.5107421875,0.45703125,0.4404296875,0.466796875,0.517578125,0.55859375,0.5693359375,0.5615234375,0.5234375,0.4736328125,0.4453125,0.4599609375,0.5107421875,0.5791015625,0.6552734375,0.740234375,0.791015625,0.7734375,0.6923828125,0.5908203125,0.509765625,0.4404296875,0.39453125,0.392578125,0.435546875,0.5,0.5478515625,0.5595703125,0.56640625,0.591796875,0.6171875,0.61328125,0.5703125,0.5029296875,0.4296875,0.3505859375,0.2568359375,0.1923828125,0.1953125,0.2646484375,0.359375,0.439453125,0.5029296875,0.529296875,0.517578125,0.4912109375,0.48046875,0.5068359375,0.5693359375,0.6279296875,0.630859375,0.5751953125,0.4951171875,0.4365234375,0.4345703125,0.4892578125,0.5546875,0.595703125,0.5927734375,0.5458984375,0.4794921875,0.4306640625,0.419921875,0.4296875,0.47265625,0.5283203125,0.5615234375,0.55078125,0.4990234375,0.4296875,0.36328125,0.326171875,0.341796875,0.40625,0.4892578125,0.5458984375,0.5595703125,0.5595703125,0.5615234375,0.5654296875,0.568359375,0.5703125,0.5703125,0.5693359375,0.576171875,0.6083984375,0.646484375,0.6611328125,0.63671875,0.5791015625,0.509765625,0.443359375,0.400390625,0.4033203125,0.451171875,0.5185546875,0.568359375,0.5791015625,0.56640625,0.5087890625,0.423828125,0.35546875,0.3349609375,0.3671875,0.4296875,0.49609375,0.544921875,0.556640625,0.5263671875,0.4765625,0.4375,0.4296875,0.4248046875,0.400390625,0.3779296875,0.3818359375,0.4228515625,0.48828125,0.5595703125,0.6171875,0.6220703125,0.5732421875,0.5009765625,0.4501953125,0.4541015625,0.509765625,0.57421875,0.61328125,0.6064453125,0.5556640625,0.4873046875,0.439453125,0.4296875,0.431640625,0.4326171875,0.431640625,0.4287109375,0.4248046875,0.421875,0.419921875,0.41796875,0.4169921875,0.41796875,0.4208984375,0.423828125,0.427734375,0.4296875,0.4443359375,0.505859375,0.5927734375,0.662109375,0.6806640625,0.6455078125,0.5791015625,0.517578125,0.4990234375,0.5234375,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5234375,0.4814453125,0.4453125,0.4248046875,0.419921875,0.4296875,0.48046875,0.552734375,0.6064453125,0.6142578125,0.5751953125,0.509765625,0.439453125,0.3798828125,0.3515625,0.3623046875,0.3994140625,0.431640625,0.439453125,0.439453125,0.4375,0.43359375,0.4306640625,0.4287109375,0.4287109375,0.4296875,0.4443359375,0.501953125,0.583984375,0.6494140625,0.6669921875,0.6328125,0.5693359375,0.4912109375,0.3935546875,0.3154296875,0.298828125,0.349609375,0.43359375,0.509765625,0.576171875,0.6171875,0.611328125,0.55859375,0.486328125,0.43359375,0.419921875,0.41015625,0.375,0.3369140625,0.326171875,0.3564453125,0.41796875,0.4892578125,0.5615234375,0.623046875,0.6533203125,0.6416015625,0.603515625,0.5693359375,0.5595703125,0.5654296875,0.595703125,0.630859375,0.6416015625,0.615234375,0.5576171875,0.4892578125,0.4345703125,0.4345703125,0.4912109375,0.5693359375,0.6220703125,0.6181640625,0.5595703125,0.48046875,0.3896484375,0.3271484375,0.3310546875,0.3994140625,0.4921875,0.5693359375,0.6259765625,0.6357421875,0.5966796875,0.5400390625,0.5048828125,0.5185546875,0.5791015625,0.638671875,0.6484375,0.60546875,0.54296875,0.5,0.509765625,0.5693359375,0.6298828125,0.642578125,0.60546875,0.548828125,0.509765625,0.5205078125,0.5791015625,0.6357421875,0.63671875,0.578125,0.49609375,0.4365234375,0.4345703125,0.4892578125,0.5546875,0.595703125,0.5927734375,0.5458984375,0.4794921875,0.4306640625,0.419921875,0.43359375,0.494140625,0.583984375,0.65625,0.6787109375,0.6455078125,0.5791015625,0.51953125,0.5078125,0.546875,0.6064453125,0.646484375,0.6376953125,0.5791015625,0.5205078125,0.5107421875,0.5498046875,0.609375,0.6484375,0.6376953125,0.5791015625,0.51171875,0.4609375,0.44921875,0.4794921875,0.53125,0.5712890625,0.5791015625,0.57421875,0.5537109375,0.517578125,0.4755859375,0.44140625,0.4228515625,0.419921875,0.419921875,0.4189453125,0.4169921875,0.4169921875,0.4169921875,0.41796875,0.419921875,0.4326171875,0.484375,0.5537109375,0.6015625,0.6025390625,0.5576171875,0.4892578125,0.427734375,0.4091796875,0.43359375,0.4755859375,0.5,0.4814453125,0.419921875,0.361328125,0.3583984375,0.4140625,0.494140625,0.552734375,0.5546875,0.5,0.4306640625,0.3720703125,0.341796875,0.3515625,0.3876953125,0.419921875,0.4296875,0.4228515625,0.392578125,0.357421875,0.3466796875,0.376953125,0.4384765625,0.509765625,0.568359375,0.572265625,0.51953125,0.44140625,0.384765625,0.384765625,0.439453125,0.5087890625,0.5732421875,0.61328125,0.615234375,0.5908203125,0.56640625,0.5595703125,0.5498046875,0.509765625,0.458984375,0.4296875,0.4423828125,0.4931640625,0.5595703125,0.634765625,0.71875,0.7724609375,0.7607421875,0.685546875,0.587890625,0.509765625,0.4423828125,0.3984375,0.3984375,0.44140625,0.5048828125,0.5498046875,0.5595703125,0.56640625,0.599609375,0.6396484375,0.654296875,0.62890625,0.5703125,0.5,0.44140625,0.439453125,0.49609375,0.5771484375,0.6357421875,0.6357421875,0.5791015625,0.5078125,0.439453125,0.3955078125,0.388671875,0.4091796875,0.43359375,0.439453125,0.439453125,0.4365234375,0.4326171875,0.4267578125,0.4228515625,0.419921875,0.419921875,0.4140625,0.392578125,0.375,0.384765625,0.4306640625,0.4990234375,0.5693359375,0.6455078125,0.7373046875,0.8046875,0.8076171875,0.74609375,0.65625,0.5791015625,0.5,0.3994140625,0.3173828125,0.296875,0.34375,0.4248046875,0.5,0.5673828125,0.625,0.65234375,0.640625,0.60546875,0.5751953125,0.5693359375,0.5673828125,0.5517578125,0.5224609375,0.486328125,0.45703125,0.44140625,0.439453125,0.4345703125,0.4091796875,0.3837890625,0.3857421875,0.423828125,0.48828125,0.5595703125,0.6357421875,0.7216796875,0.7763671875,0.7626953125,0.6865234375,0.5888671875,0.509765625,0.439453125,0.376953125,0.34375,0.3505859375,0.3818359375,0.412109375,0.419921875,0.423828125,0.4443359375,0.48046875,0.5234375,0.55859375,0.5771484375,0.5791015625,0.583984375,0.6064453125,0.626953125,0.62109375,0.578125,0.5107421875,0.439453125,0.380859375,0.3671875,0.400390625,0.453125,0.48828125,0.4765625,0.419921875,0.353515625,0.3037109375,0.291015625,0.3193359375,0.3701171875,0.41015625,0.419921875,0.4296875,0.470703125,0.5224609375,0.5517578125,0.5390625,0.48828125,0.419921875,0.361328125,0.3515625,0.3916015625,0.4521484375,0.494140625,0.486328125,0.4296875,0.36328125,0.3134765625,0.2998046875,0.326171875,0.375,0.412109375,0.419921875,0.408203125,0.3662109375,0.3154296875,0.2880859375,0.3046875,0.359375,0.4296875,0.5107421875,0.6123046875,0.6923828125,0.7080078125,0.654296875,0.568359375,0.4892578125,0.4189453125,0.3603515625,0.3359375,0.3525390625,0.3955078125,0.4306640625,0.439453125,0.4521484375,0.5078125,0.5859375,0.6474609375,0.6611328125,0.625,0.5595703125,0.4814453125,0.392578125,0.33203125,0.3369140625,0.40625,0.5009765625,0.5791015625,0.634765625,0.6279296875,0.556640625,0.4580078125,0.3857421875,0.3759765625,0.4296875,0.48828125,0.5048828125,0.478515625,0.435546875,0.4111328125,0.4296875,0.4892578125,0.5595703125,0.6220703125,0.6552734375,0.6484375,0.6171875,0.5869140625,0.5791015625,0.5888671875,0.626953125,0.67578125,0.7021484375,0.6875,0.6357421875,0.5693359375,0.5,0.4326171875,0.3876953125,0.3779296875,0.39453125,0.4150390625,0.419921875,0.41796875,0.4169921875,0.4169921875,0.4169921875,0.4189453125,0.419921875,0.419921875,0.4306640625,0.48046875,0.5498046875,0.599609375,0.6044921875,0.564453125,0.5,0.431640625,0.3759765625,0.3505859375,0.3642578125,0.40234375,0.43359375,0.439453125,0.431640625,0.4052734375,0.3828125,0.3896484375,0.435546875,0.505859375,0.5791015625,0.6494140625,0.7021484375,0.716796875,0.6875,0.6337890625,0.5908203125,0.5791015625,0.564453125,0.505859375,0.421875,0.3564453125,0.33984375,0.375,0.439453125,0.5,0.5185546875,0.494140625,0.451171875,0.4248046875,0.44140625,0.5,0.568359375,0.626953125,0.6572265625,0.6474609375,0.611328125,0.5791015625,0.5693359375,0.5673828125,0.56640625,0.564453125,0.5634765625,0.5625,0.560546875,0.5595703125,0.55859375,0.5595703125,0.5625,0.56640625,0.5693359375,0.5703125,0.5693359375,0.5732421875,0.59375,0.611328125,0.6015625,0.556640625,0.4892578125,0.419921875,0.365234375,0.3681640625,0.4287109375,0.560546875,0.4736328125,0.3935546875,0.34375,0.3251953125,0.3291015625,0.384765625,0.478515625,0.5693359375,0.615234375,0.6044921875,0.55078125,0.48828125,0.4287109375,0.390625,0.3837890625,0.40234375,0.4228515625,0.4287109375,0.4267578125,0.4140625,0.39453125,0.376953125,0.3671875,0.3681640625,0.376953125,0.400390625,0.466796875,0.5615234375,0.6435546875,0.6806640625,0.6669921875,0.6220703125,0.5615234375,0.48046875,0.4091796875,0.38671875,0.419921875,0.486328125,0.55078125,0.607421875,0.630859375,0.599609375,0.5185546875,0.419921875,0.349609375,0.3251953125,0.30859375,0.2744140625,0.24609375,0.251953125,0.30078125,0.3740234375,0.4482421875,0.521484375,0.5947265625,0.6435546875,0.6494140625,0.6220703125,0.5869140625,0.5703125,0.564453125,0.5712890625,0.580078125,0.57421875,0.544921875,0.4990234375,0.4482421875,0.4111328125,0.4306640625,0.501953125,0.5859375,0.6376953125,0.6298828125,0.5703125,0.494140625,0.4189453125,0.37890625,0.4013671875,0.4755859375,0.560546875,0.6220703125,0.662109375,0.6640625,0.6318359375,0.59375,0.580078125,0.609375,0.673828125,0.732421875,0.736328125,0.6845703125,0.6103515625,0.55859375,0.5634765625,0.6220703125,0.6845703125,0.70703125,0.6865234375,0.6435546875,0.61328125,0.6220703125,0.673828125,0.720703125,0.708984375,0.6318359375,0.5244140625,0.4375,0.412109375,0.4482421875,0.494140625,0.5166015625,0.4990234375,0.4453125,0.3798828125,0.3359375,0.3251953125,0.34375,0.427734375,0.55859375,0.6806640625,0.7451171875,0.7353515625,0.673828125,0.6123046875,0.595703125,0.6279296875,0.6845703125,0.7265625,0.72265625,0.673828125,0.6220703125,0.61328125,0.6474609375,0.69921875,0.7333984375,0.724609375,0.673828125,0.615234375,0.576171875,0.572265625,0.603515625,0.646484375,0.6748046875,0.673828125,0.6552734375,0.60546875,0.525390625,0.4384765625,0.3681640625,0.33203125,0.3251953125,0.32421875,0.318359375,0.310546875,0.3056640625,0.3076171875,0.3154296875,0.3251953125,0.3486328125,0.4130859375,0.4951171875,0.5537109375,0.5595703125,0.5166015625,0.4482421875,0.384765625,0.359375,0.3720703125,0.4013671875,0.4140625,0.388671875,0.3251953125,0.2666015625,0.265625,0.3291015625,0.4267578125,0.509765625,0.53515625,0.5,0.4453125,0.3876953125,0.3427734375,0.328125,0.3408203125,0.36328125,0.376953125,0.3818359375,0.3681640625,0.35546875,0.3671875,0.4111328125,0.478515625,0.55078125,0.611328125,0.619140625,0.5673828125,0.482421875,0.4111328125,0.392578125,0.4287109375,0.4814453125,0.5361328125,0.5771484375,0.5927734375,0.5859375,0.57421875,0.5703125,0.5625,0.533203125,0.4951171875,0.4736328125,0.4833984375,0.5205078125,0.5703125,0.6279296875,0.6982421875,0.7490234375,0.7490234375,0.6953125,0.6181640625,0.55078125,0.4931640625,0.45703125,0.45703125,0.4931640625,0.541015625,0.5712890625,0.5703125,0.568359375,0.59375,0.6298828125,0.6455078125,0.6240234375,0.5693359375,0.5,0.4423828125,0.4462890625,0.517578125,0.6201171875,0.701171875,0.71875,0.673828125,0.6083984375,0.533203125,0.4677734375,0.4287109375,0.419921875,0.42578125,0.4287109375,0.4267578125,0.4140625,0.390625,0.36328125,0.3408203125,0.328125,0.3251953125,0.3251953125,0.33203125,0.3603515625,0.4169921875,0.4921875,0.5654296875,0.6220703125,0.6806640625,0.759765625,0.8271484375,0.8447265625,0.806640625,0.7392578125,0.673828125,0.6025390625,0.5068359375,0.4189453125,0.376953125,0.3935546875,0.4453125,0.5,0.55078125,0.5966796875,0.6259765625,0.6318359375,0.623046875,0.6162109375,0.6220703125,0.6259765625,0.6044921875,0.5556640625,0.4951171875,0.4462890625,0.4248046875,0.4287109375,0.43359375,0.4228515625,0.41015625,0.41796875,0.4521484375,0.5087890625,0.5703125,0.6376953125,0.7158203125,0.7685546875,0.763671875,0.7021484375,0.6201171875,0.55078125,0.486328125,0.4140625,0.3525390625,0.318359375,0.314453125,0.322265625,0.3251953125,0.3349609375,0.3837890625,0.46875,0.5654296875,0.640625,0.67578125,0.673828125,0.666015625,0.6640625,0.6533203125,0.619140625,0.5615234375,0.4931640625,0.4287109375,0.3740234375,0.3466796875,0.349609375,0.3701171875,0.3828125,0.369140625,0.3251953125,0.2763671875,0.2392578125,0.2294921875,0.2509765625,0.2890625,0.318359375,0.3251953125,0.333984375,0.3701171875,0.416015625,0.44140625,0.4296875,0.3857421875,0.3251953125,0.2744140625,0.265625,0.3037109375,0.3642578125,0.412109375,0.4169921875,0.376953125,0.328125,0.2900390625,0.27734375,0.2900390625,0.314453125,0.330078125,0.3251953125,0.306640625,0.263671875,0.2197265625,0.2080078125,0.240234375,0.3046875,0.376953125,0.458984375,0.5615234375,0.6435546875,0.662109375,0.611328125,0.5263671875,0.4482421875,0.3779296875,0.3232421875,0.3056640625,0.3310546875,0.3798828125,0.419921875,0.4287109375,0.4404296875,0.4931640625,0.5703125,0.6337890625,0.654296875,0.6259765625,0.5703125,0.50390625,0.4365234375,0.40234375,0.4296875,0.509765625,0.6025390625,0.673828125,0.71875,0.6982421875,0.60546875,0.4794921875,0.3779296875,0.3427734375,0.376953125,0.419921875,0.4296875,0.4091796875,0.380859375,0.3701171875,0.3935546875,0.4482421875,0.5126953125,0.5849609375,0.646484375,0.6806640625,0.6845703125,0.6767578125,0.673828125,0.6796875,0.7021484375,0.7294921875,0.7373046875,0.7158203125,0.6728515625,0.6220703125,0.56640625,0.5,0.431640625,0.3798828125,0.349609375,0.3359375,0.3251953125,0.3154296875,0.3076171875,0.3056640625,0.310546875,0.318359375,0.32421875,0.3251953125,0.3369140625,0.3876953125,0.4638671875,0.5322265625,0.5615234375,0.544921875,0.5,0.4501953125,0.41015625,0.392578125,0.3994140625,0.419921875,0.43359375,0.4287109375,0.4150390625,0.39453125,0.39453125,0.4326171875,0.5087890625,0.5966796875,0.673828125,0.744140625,0.802734375,0.82421875,0.7978515625,0.7431640625,0.693359375,0.673828125,0.6494140625,0.576171875,0.4736328125,0.3876953125,0.3525390625,0.3740234375,0.4287109375,0.4833984375,0.5068359375,0.49609375,0.466796875,0.4462890625,0.45703125,0.5,0.5537109375,0.611328125,0.65625,0.6708984375,0.658203125,0.6357421875,0.6220703125,0.6123046875,0.6044921875,0.5986328125,0.59375,0.587890625,0.580078125,0.5703125,0.5625,0.5673828125,0.5849609375,0.607421875,0.6240234375,0.62890625,0.6220703125,0.611328125,0.59765625,0.568359375,0.515625,0.4482421875,0.380859375,0.3251953125,0.291015625,0.3232421875,0.4169921875,0.6015625,0.4853515625,0.373046875,0.2958984375,0.2587890625,0.248046875,0.296875,0.40234375,0.5244140625,0.61328125,0.63671875,0.6044921875,0.5576171875,0.5078125,0.46875,0.4521484375,0.4560546875,0.4658203125,0.46875,0.462890625,0.4345703125,0.3916015625,0.3525390625,0.333984375,0.3408203125,0.3642578125,0.3984375,0.4619140625,0.541015625,0.609375,0.6474609375,0.650390625,0.634765625,0.609375,0.5654296875,0.521484375,0.501953125,0.5185546875,0.55859375,0.6044921875,0.64453125,0.650390625,0.6015625,0.501953125,0.38671875,0.298828125,0.2587890625,0.2265625,0.181640625,0.154296875,0.1708984375,0.2333984375,0.3173828125,0.39453125,0.470703125,0.5556640625,0.6181640625,0.634765625,0.6064453125,0.5625,0.5302734375,0.50390625,0.478515625,0.4580078125,0.44140625,0.427734375,0.412109375,0.39453125,0.388671875,0.43359375,0.513671875,0.587890625,0.619140625,0.59375,0.5302734375,0.4599609375,0.4091796875,0.4052734375,0.455078125,0.5361328125,0.6044921875,0.634765625,0.6455078125,0.630859375,0.6044921875,0.59375,0.6162109375,0.6708984375,0.740234375,0.7978515625,0.794921875,0.7314453125,0.6435546875,0.580078125,0.5771484375,0.634765625,0.701171875,0.7392578125,0.7421875,0.720703125,0.69921875,0.703125,0.740234375,0.7734375,0.75390625,0.6708984375,0.5517578125,0.4443359375,0.390625,0.39453125,0.41015625,0.4072265625,0.3798828125,0.3369140625,0.2919921875,0.2646484375,0.2587890625,0.2802734375,0.3798828125,0.541015625,0.6982421875,0.79296875,0.798828125,0.740234375,0.6767578125,0.650390625,0.6708984375,0.720703125,0.765625,0.7744140625,0.740234375,0.7021484375,0.6953125,0.720703125,0.7587890625,0.7841796875,0.7783203125,0.740234375,0.69921875,0.681640625,0.693359375,0.7236328125,0.751953125,0.759765625,0.740234375,0.703125,0.6259765625,0.513671875,0.3974609375,0.3095703125,0.2666015625,0.2587890625,0.2548828125,0.240234375,0.220703125,0.208984375,0.2138671875,0.2333984375,0.2587890625,0.2978515625,0.375,0.4638671875,0.5185546875,0.515625,0.46484375,0.39453125,0.3310546875,0.3046875,0.314453125,0.3388671875,0.3486328125,0.322265625,0.2587890625,0.197265625,0.185546875,0.240234375,0.341796875,0.4453125,0.501953125,0.5,0.474609375,0.4287109375,0.375,0.3359375,0.3251953125,0.3388671875,0.3642578125,0.3857421875,0.392578125,0.3974609375,0.4189453125,0.466796875,0.533203125,0.6044921875,0.6689453125,0.693359375,0.662109375,0.587890625,0.5078125,0.4638671875,0.46875,0.4892578125,0.509765625,0.52734375,0.53515625,0.53515625,0.53125,0.5302734375,0.52734375,0.5166015625,0.501953125,0.494140625,0.498046875,0.51171875,0.5302734375,0.556640625,0.60546875,0.6591796875,0.6904296875,0.6845703125,0.6494140625,0.6044921875,0.5625,0.53515625,0.5302734375,0.541015625,0.552734375,0.55078125,0.5302734375,0.513671875,0.5322265625,0.57421875,0.607421875,0.607421875,0.56640625,0.5,0.44140625,0.4443359375,0.5185546875,0.6318359375,0.73046875,0.7685546875,0.740234375,0.689453125,0.6240234375,0.5546875,0.501953125,0.4755859375,0.46875,0.46875,0.4638671875,0.4384765625,0.3916015625,0.3359375,0.2890625,0.263671875,0.2587890625,0.2646484375,0.2998046875,0.369140625,0.4609375,0.5478515625,0.607421875,0.634765625,0.662109375,0.71484375,0.775390625,0.814453125,0.8154296875,0.7841796875,0.740234375,0.6875,0.6142578125,0.5380859375,0.4853515625,0.4697265625,0.48046875,0.5,0.517578125,0.5322265625,0.546875,0.5634765625,0.583984375,0.6083984375,0.634765625,0.6533203125,0.63671875,0.5849609375,0.5185546875,0.466796875,0.451171875,0.46875,0.490234375,0.490234375,0.474609375,0.4609375,0.462890625,0.48828125,0.5302734375,0.58203125,0.650390625,0.708984375,0.7294921875,0.7041015625,0.6533203125,0.6044921875,0.552734375,0.4775390625,0.3916015625,0.3193359375,0.2763671875,0.2607421875,0.2587890625,0.2734375,0.34765625,0.474609375,0.61328125,0.7158203125,0.7548828125,0.740234375,0.71484375,0.6884765625,0.6572265625,0.6162109375,0.56640625,0.515625,0.46875,0.4228515625,0.375,0.333984375,0.3056640625,0.2890625,0.2763671875,0.2587890625,0.240234375,0.2265625,0.2236328125,0.2314453125,0.2451171875,0.255859375,0.2587890625,0.265625,0.2919921875,0.3251953125,0.3447265625,0.3359375,0.302734375,0.2587890625,0.2197265625,0.2109375,0.240234375,0.294921875,0.3486328125,0.3740234375,0.3642578125,0.3466796875,0.3359375,0.328125,0.3193359375,0.3056640625,0.2841796875,0.2587890625,0.2255859375,0.177734375,0.142578125,0.1513671875,0.2080078125,0.2880859375,0.3642578125,0.4443359375,0.5419921875,0.6162109375,0.6240234375,0.5634765625,0.4736328125,0.39453125,0.326171875,0.283203125,0.2861328125,0.3369140625,0.40625,0.45703125,0.46875,0.4765625,0.5107421875,0.5576171875,0.5927734375,0.5986328125,0.572265625,0.5302734375,0.484375,0.4501953125,0.455078125,0.5107421875,0.599609375,0.6845703125,0.740234375,0.7724609375,0.7490234375,0.6591796875,0.533203125,0.4189453125,0.3603515625,0.3642578125,0.376953125,0.3681640625,0.3447265625,0.3251953125,0.326171875,0.3525390625,0.39453125,0.4462890625,0.521484375,0.607421875,0.6796875,0.72265625,0.73828125,0.740234375,0.740234375,0.73828125,0.7294921875,0.708984375,0.6826171875,0.65625,0.634765625,0.611328125,0.5673828125,0.5,0.4189453125,0.3447265625,0.291015625,0.2587890625,0.2333984375,0.2138671875,0.208984375,0.220703125,0.240234375,0.2548828125,0.2587890625,0.267578125,0.3076171875,0.375,0.447265625,0.4970703125,0.5126953125,0.5,0.484375,0.4814453125,0.4912109375,0.501953125,0.5048828125,0.4931640625,0.46875,0.439453125,0.412109375,0.4140625,0.4658203125,0.5595703125,0.66015625,0.740234375,0.8134765625,0.880859375,0.9140625,0.89453125,0.8369140625,0.775390625,0.740234375,0.7021484375,0.623046875,0.5244140625,0.4443359375,0.412109375,0.427734375,0.46875,0.51171875,0.537109375,0.5380859375,0.5185546875,0.4951171875,0.486328125,0.5,0.5244140625,0.5703125,0.6240234375,0.6630859375,0.673828125,0.66015625,0.634765625,0.6103515625,0.59375,0.5849609375,0.580078125,0.5712890625,0.5546875,0.5302734375,0.5107421875,0.51953125,0.5576171875,0.607421875,0.6455078125,0.654296875,0.634765625,0.603515625,0.548828125,0.474609375,0.39453125,0.326171875,0.2822265625,0.2587890625,0.2587890625,0.328125,0.455078125,0.6298828125,0.521484375,0.40625,0.314453125,0.2587890625,0.2275390625,0.2548828125,0.3505859375,0.48046875,0.5927734375,0.6455078125,0.634765625,0.6064453125,0.5751953125,0.546875,0.5302734375,0.5263671875,0.5283203125,0.5302734375,0.5205078125,0.4775390625,0.4140625,0.3583984375,0.3369140625,0.353515625,0.39453125,0.4404296875,0.48828125,0.529296875,0.5576171875,0.57421875,0.587890625,0.6044921875,0.6201171875,0.6220703125,0.61328125,0.6015625,0.599609375,0.611328125,0.634765625,0.658203125,0.658203125,0.61328125,0.521484375,0.4091796875,0.3154296875,0.2587890625,0.20703125,0.1455078125,0.1064453125,0.123046875,0.1943359375,0.28515625,0.3642578125,0.4423828125,0.5341796875,0.6044921875,0.62109375,0.5830078125,0.5205078125,0.46875,0.419921875,0.36328125,0.3173828125,0.30078125,0.314453125,0.341796875,0.3642578125,0.39453125,0.462890625,0.5439453125,0.59375,0.58984375,0.5390625,0.46875,0.4052734375,0.3798828125,0.4111328125,0.4853515625,0.5654296875,0.6103515625,0.6044921875,0.5791015625,0.5400390625,0.513671875,0.52734375,0.5849609375,0.6640625,0.740234375,0.796875,0.791015625,0.720703125,0.6240234375,0.5537109375,0.5478515625,0.6044921875,0.673828125,0.7275390625,0.7509765625,0.7451171875,0.7275390625,0.7216796875,0.740234375,0.759765625,0.744140625,0.6796875,0.5771484375,0.4697265625,0.39453125,0.3642578125,0.3427734375,0.31640625,0.2900390625,0.26953125,0.2607421875,0.2587890625,0.2587890625,0.2802734375,0.3798828125,0.541015625,0.6982421875,0.79296875,0.798828125,0.740234375,0.673828125,0.63671875,0.6435546875,0.6845703125,0.7333984375,0.755859375,0.740234375,0.7177734375,0.7138671875,0.728515625,0.7509765625,0.765625,0.76171875,0.740234375,0.720703125,0.7275390625,0.7568359375,0.787109375,0.7978515625,0.7802734375,0.740234375,0.6845703125,0.5927734375,0.4775390625,0.369140625,0.2958984375,0.263671875,0.2587890625,0.2529296875,0.2265625,0.1923828125,0.1728515625,0.181640625,0.21484375,0.2587890625,0.3154296875,0.4033203125,0.48828125,0.52734375,0.50390625,0.4375,0.3642578125,0.3017578125,0.2783203125,0.294921875,0.328125,0.3447265625,0.3212890625,0.2587890625,0.1923828125,0.158203125,0.1845703125,0.2705078125,0.380859375,0.4658203125,0.5,0.5087890625,0.484375,0.4306640625,0.375,0.345703125,0.35546875,0.39453125,0.4345703125,0.455078125,0.4638671875,0.4775390625,0.5107421875,0.5654296875,0.634765625,0.705078125,0.755859375,0.759765625,0.708984375,0.62890625,0.560546875,0.5302734375,0.509765625,0.4892578125,0.4716796875,0.4638671875,0.4638671875,0.4677734375,0.46875,0.4716796875,0.482421875,0.4970703125,0.5048828125,0.5009765625,0.4873046875,0.46875,0.4580078125,0.4794921875,0.533203125,0.595703125,0.642578125,0.654296875,0.634765625,0.611328125,0.5986328125,0.5908203125,0.5771484375,0.5517578125,0.513671875,0.46875,0.435546875,0.4482421875,0.5,0.5576171875,0.5849609375,0.5625,0.5,0.439453125,0.4306640625,0.4912109375,0.5966796875,0.6982421875,0.75,0.740234375,0.7099609375,0.6650390625,0.61328125,0.568359375,0.541015625,0.53125,0.5302734375,0.5234375,0.490234375,0.4306640625,0.3583984375,0.2978515625,0.265625,0.2587890625,0.26953125,0.322265625,0.4140625,0.513671875,0.5869140625,0.615234375,0.6044921875,0.5927734375,0.611328125,0.6572265625,0.7119140625,0.751953125,0.759765625,0.740234375,0.7119140625,0.673828125,0.6298828125,0.5849609375,0.5478515625,0.51953125,0.5,0.4775390625,0.4501953125,0.435546875,0.4521484375,0.498046875,0.5556640625,0.6044921875,0.640625,0.638671875,0.5966796875,0.5380859375,0.49609375,0.494140625,0.5302734375,0.5693359375,0.5791015625,0.5546875,0.5078125,0.4658203125,0.451171875,0.46875,0.501953125,0.556640625,0.619140625,0.662109375,0.6748046875,0.66015625,0.634765625,0.6005859375,0.53515625,0.447265625,0.3583984375,0.2939453125,0.263671875,0.2587890625,0.2763671875,0.361328125,0.501953125,0.6484375,0.748046875,0.7734375,0.740234375,0.6943359375,0.6513671875,0.6162109375,0.5908203125,0.572265625,0.5537109375,0.5302734375,0.4951171875,0.431640625,0.3525390625,0.2841796875,0.2470703125,0.2431640625,0.2587890625,0.27734375,0.291015625,0.294921875,0.287109375,0.2724609375,0.26171875,0.2587890625,0.2626953125,0.2783203125,0.2978515625,0.30859375,0.3037109375,0.2841796875,0.2587890625,0.2333984375,0.2197265625,0.2314453125,0.2705078125,0.3232421875,0.369140625,0.39453125,0.416015625,0.439453125,0.447265625,0.421875,0.369140625,0.30859375,0.2587890625,0.2080078125,0.1494140625,0.1181640625,0.142578125,0.2197265625,0.3154296875,0.39453125,0.4736328125,0.5634765625,0.6240234375,0.6162109375,0.5419921875,0.4443359375,0.3642578125,0.2978515625,0.265625,0.2900390625,0.36328125,0.4541015625,0.515625,0.5302734375,0.5322265625,0.5400390625,0.5458984375,0.541015625,0.5224609375,0.49609375,0.46875,0.4462890625,0.4443359375,0.48046875,0.5517578125,0.63671875,0.7041015625,0.740234375,0.7607421875,0.7490234375,0.6904296875,0.595703125,0.49609375,0.4248046875,0.39453125,0.3720703125,0.3388671875,0.30859375,0.2978515625,0.3095703125,0.3369140625,0.3642578125,0.3984375,0.4638671875,0.5517578125,0.640625,0.705078125,0.7353515625,0.740234375,0.734375,0.70703125,0.662109375,0.619140625,0.591796875,0.5888671875,0.6044921875,0.62109375,0.619140625,0.580078125,0.5,0.3994140625,0.3134765625,0.2587890625,0.21484375,0.181640625,0.1728515625,0.1923828125,0.2265625,0.2529296875,0.2587890625,0.26171875,0.2802734375,0.3193359375,0.375,0.4326171875,0.4755859375,0.5,0.525390625,0.5693359375,0.61328125,0.6318359375,0.6162109375,0.576171875,0.5302734375,0.48046875,0.431640625,0.416015625,0.4609375,0.5546875,0.6591796875,0.740234375,0.81640625,0.89453125,0.9423828125,0.9306640625,0.869140625,0.7939453125,0.740234375,0.6875,0.61328125,0.5380859375,0.4912109375,0.482421875,0.5029296875,0.5302734375,0.5576171875,0.583984375,0.5966796875,0.5849609375,0.5556640625,0.5224609375,0.5,0.490234375,0.5146484375,0.568359375,0.6240234375,0.6533203125,0.6435546875,0.6044921875,0.5634765625,0.5400390625,0.53515625,0.5380859375,0.533203125,0.509765625,0.46875,0.4345703125,0.4443359375,0.5,0.57421875,0.6298828125,0.6396484375,0.6044921875,0.5498046875,0.4638671875,0.3642578125,0.2841796875,0.244140625,0.2421875,0.2587890625,0.2958984375,0.3974609375,0.5380859375,0.6357421875,0.5693359375,0.48046875,0.3935546875,0.3251953125,0.2744140625,0.271484375,0.333984375,0.4423828125,0.552734375,0.6162109375,0.6220703125,0.6103515625,0.5966796875,0.5830078125,0.57421875,0.5703125,0.5693359375,0.5703125,0.55859375,0.5078125,0.435546875,0.376953125,0.361328125,0.390625,0.4482421875,0.5029296875,0.5302734375,0.52734375,0.5068359375,0.4931640625,0.5078125,0.55078125,0.6005859375,0.640625,0.658203125,0.650390625,0.630859375,0.6171875,0.6220703125,0.6337890625,0.640625,0.6220703125,0.5654296875,0.48046875,0.3935546875,0.3251953125,0.2568359375,0.1767578125,0.1240234375,0.1328125,0.203125,0.2978515625,0.376953125,0.45703125,0.55078125,0.6220703125,0.630859375,0.578125,0.4970703125,0.4287109375,0.361328125,0.2802734375,0.2197265625,0.2099609375,0.25390625,0.3203125,0.376953125,0.4384765625,0.5234375,0.59765625,0.6201171875,0.580078125,0.5048828125,0.4287109375,0.369140625,0.361328125,0.4130859375,0.4970703125,0.568359375,0.587890625,0.55078125,0.494140625,0.4306640625,0.39453125,0.41796875,0.4970703125,0.59375,0.673828125,0.73046875,0.7265625,0.6591796875,0.5654296875,0.498046875,0.494140625,0.55078125,0.6220703125,0.68359375,0.716796875,0.7138671875,0.689453125,0.669921875,0.673828125,0.68359375,0.6845703125,0.6591796875,0.59765625,0.5146484375,0.435546875,0.376953125,0.326171875,0.283203125,0.26171875,0.26953125,0.296875,0.3193359375,0.3251953125,0.34375,0.427734375,0.55859375,0.6806640625,0.7451171875,0.7353515625,0.673828125,0.60546875,0.55859375,0.552734375,0.587890625,0.6396484375,0.673828125,0.673828125,0.6650390625,0.6630859375,0.6689453125,0.677734375,0.68359375,0.681640625,0.673828125,0.671875,0.7001953125,0.744140625,0.7744140625,0.7705078125,0.7314453125,0.673828125,0.60546875,0.5185546875,0.4296875,0.36328125,0.33203125,0.3251953125,0.3251953125,0.3173828125,0.28125,0.2353515625,0.2099609375,0.220703125,0.265625,0.3251953125,0.396484375,0.4892578125,0.5654296875,0.583984375,0.5361328125,0.4541015625,0.376953125,0.31640625,0.2998046875,0.328125,0.375,0.4033203125,0.38671875,0.3251953125,0.2529296875,0.1923828125,0.1796875,0.234375,0.3359375,0.435546875,0.5,0.5390625,0.5341796875,0.4873046875,0.42578125,0.3876953125,0.396484375,0.4482421875,0.501953125,0.525390625,0.5224609375,0.51171875,0.5185546875,0.556640625,0.6220703125,0.697265625,0.7734375,0.8125,0.7900390625,0.7158203125,0.630859375,0.5703125,0.517578125,0.462890625,0.421875,0.40625,0.4130859375,0.4248046875,0.4287109375,0.4365234375,0.4658203125,0.50390625,0.525390625,0.515625,0.478515625,0.4287109375,0.3857421875,0.3779296875,0.4189453125,0.49609375,0.5751953125,0.6201171875,0.6220703125,0.615234375,0.6201171875,0.62109375,0.6005859375,0.5537109375,0.4921875,0.4287109375,0.380859375,0.38671875,0.4443359375,0.51953125,0.5673828125,0.5595703125,0.5,0.435546875,0.41015625,0.443359375,0.5234375,0.6142578125,0.669921875,0.673828125,0.6611328125,0.640625,0.6162109375,0.5927734375,0.5771484375,0.5712890625,0.5703125,0.564453125,0.5341796875,0.48046875,0.416015625,0.361328125,0.3310546875,0.3251953125,0.337890625,0.39453125,0.4833984375,0.564453125,0.60546875,0.595703125,0.55078125,0.505859375,0.4892578125,0.5146484375,0.5732421875,0.63671875,0.673828125,0.673828125,0.666015625,0.6669921875,0.6640625,0.64453125,0.6044921875,0.5517578125,0.5,0.4423828125,0.3759765625,0.33203125,0.341796875,0.40234375,0.4833984375,0.55078125,0.6025390625,0.6142578125,0.583984375,0.537109375,0.5068359375,0.5185546875,0.5703125,0.625,0.646484375,0.619140625,0.55078125,0.4755859375,0.4306640625,0.4287109375,0.4453125,0.482421875,0.53515625,0.5859375,0.619140625,0.62890625,0.6220703125,0.6044921875,0.5615234375,0.4931640625,0.4189453125,0.361328125,0.3310546875,0.3251953125,0.341796875,0.419921875,0.5439453125,0.6611328125,0.7275390625,0.724609375,0.673828125,0.6123046875,0.5615234375,0.53515625,0.5380859375,0.55859375,0.57421875,0.5703125,0.546875,0.48046875,0.3857421875,0.3037109375,0.2666015625,0.2802734375,0.3251953125,0.375,0.412109375,0.421875,0.400390625,0.3623046875,0.3330078125,0.3251953125,0.3271484375,0.3330078125,0.3408203125,0.345703125,0.34375,0.3359375,0.3251953125,0.3115234375,0.2890625,0.2763671875,0.291015625,0.3359375,0.3935546875,0.4482421875,0.5029296875,0.5615234375,0.5888671875,0.5615234375,0.484375,0.3955078125,0.3251953125,0.2587890625,0.1875,0.1494140625,0.177734375,0.263671875,0.3662109375,0.4482421875,0.5263671875,0.611328125,0.662109375,0.6435546875,0.5615234375,0.458984375,0.376953125,0.3125,0.283203125,0.3125,0.3935546875,0.490234375,0.5556640625,0.5703125,0.568359375,0.556640625,0.533203125,0.5,0.466796875,0.4423828125,0.4287109375,0.4228515625,0.439453125,0.484375,0.548828125,0.61328125,0.65625,0.673828125,0.685546875,0.6953125,0.6845703125,0.642578125,0.5751953125,0.50390625,0.4482421875,0.3955078125,0.34375,0.310546875,0.30859375,0.3330078125,0.361328125,0.376953125,0.39453125,0.4375,0.505859375,0.580078125,0.6376953125,0.66796875,0.673828125,0.6630859375,0.619140625,0.5537109375,0.5,0.482421875,0.5048828125,0.55078125,0.6044921875,0.6494140625,0.654296875,0.599609375,0.5,0.3974609375,0.3251953125,0.265625,0.220703125,0.2099609375,0.2353515625,0.28125,0.3173828125,0.3251953125,0.322265625,0.314453125,0.314453125,0.3388671875,0.3876953125,0.4462890625,0.5,0.5595703125,0.640625,0.7119140625,0.734375,0.701171875,0.634765625,0.5703125,0.5029296875,0.4287109375,0.38671875,0.41015625,0.4921875,0.5927734375,0.673828125,0.751953125,0.83984375,0.8984375,0.89453125,0.8291015625,0.7431640625,0.673828125,0.609375,0.546875,0.50390625,0.4990234375,0.5234375,0.5537109375,0.5703125,0.5859375,0.6142578125,0.638671875,0.63671875,0.6044921875,0.5517578125,0.5,0.4599609375,0.46484375,0.51171875,0.5732421875,0.611328125,0.6025390625,0.55078125,0.4970703125,0.4736328125,0.48046875,0.5,0.5068359375,0.4833984375,0.4287109375,0.380859375,0.38671875,0.4482421875,0.5322265625,0.59375,0.599609375,0.55078125,0.4794921875,0.376953125,0.27734375,0.22265625,0.2275390625,0.2724609375,0.3251953125,0.3916015625,0.5068359375,0.6357421875,0.623046875,0.6103515625,0.5625,0.4912109375,0.419921875,0.35546875,0.3232421875,0.3447265625,0.4150390625,0.5,0.5576171875,0.5693359375,0.5673828125,0.5654296875,0.5625,0.560546875,0.5595703125,0.5595703125,0.5595703125,0.5478515625,0.4990234375,0.4306640625,0.3828125,0.3798828125,0.4228515625,0.4892578125,0.548828125,0.5625,0.529296875,0.4755859375,0.4404296875,0.4521484375,0.509765625,0.5771484375,0.6337890625,0.658203125,0.64453125,0.607421875,0.576171875,0.5693359375,0.5771484375,0.6005859375,0.6201171875,0.609375,0.5615234375,0.4912109375,0.419921875,0.341796875,0.25,0.185546875,0.1875,0.255859375,0.349609375,0.4296875,0.509765625,0.603515625,0.671875,0.673828125,0.609375,0.517578125,0.439453125,0.3623046875,0.26953125,0.203125,0.201171875,0.2646484375,0.353515625,0.4296875,0.5068359375,0.599609375,0.66796875,0.671875,0.609375,0.5185546875,0.439453125,0.380859375,0.376953125,0.4296875,0.5078125,0.564453125,0.564453125,0.509765625,0.4345703125,0.3515625,0.30078125,0.318359375,0.3974609375,0.498046875,0.5791015625,0.6376953125,0.6396484375,0.583984375,0.5048828125,0.44921875,0.451171875,0.509765625,0.5810546875,0.640625,0.66796875,0.6552734375,0.6181640625,0.5859375,0.5791015625,0.5869140625,0.609375,0.6279296875,0.6162109375,0.5693359375,0.5,0.4296875,0.36328125,0.3115234375,0.296875,0.3232421875,0.3720703125,0.41015625,0.419921875,0.43359375,0.494140625,0.583984375,0.65625,0.6787109375,0.6455078125,0.5791015625,0.509765625,0.4580078125,0.4462890625,0.4775390625,0.5302734375,0.5712890625,0.5791015625,0.578125,0.5771484375,0.578125,0.580078125,0.5810546875,0.5810546875,0.5791015625,0.5869140625,0.626953125,0.6787109375,0.708984375,0.697265625,0.6474609375,0.5791015625,0.5078125,0.4365234375,0.388671875,0.3759765625,0.392578125,0.4140625,0.419921875,0.41015625,0.369140625,0.3173828125,0.287109375,0.30078125,0.3515625,0.419921875,0.498046875,0.591796875,0.6611328125,0.6640625,0.6005859375,0.5087890625,0.4296875,0.3701171875,0.357421875,0.3955078125,0.4541015625,0.4921875,0.4794921875,0.419921875,0.3427734375,0.259765625,0.2138671875,0.236328125,0.3193359375,0.4208984375,0.5,0.5556640625,0.564453125,0.5224609375,0.4609375,0.4208984375,0.4306640625,0.4892578125,0.5498046875,0.568359375,0.5458984375,0.5068359375,0.486328125,0.5078125,0.5693359375,0.6484375,0.7392578125,0.8017578125,0.796875,0.728515625,0.6357421875,0.5595703125,0.490234375,0.42578125,0.3857421875,0.3837890625,0.408203125,0.4326171875,0.439453125,0.44921875,0.4892578125,0.5400390625,0.5693359375,0.556640625,0.505859375,0.439453125,0.3759765625,0.3427734375,0.3603515625,0.4248046875,0.50390625,0.55859375,0.5693359375,0.57421875,0.5986328125,0.62109375,0.6171875,0.576171875,0.5107421875,0.439453125,0.3828125,0.380859375,0.4345703125,0.5107421875,0.5625,0.55859375,0.5,0.431640625,0.3896484375,0.3955078125,0.4482421875,0.5185546875,0.5693359375,0.5791015625,0.5771484375,0.5732421875,0.568359375,0.564453125,0.560546875,0.5595703125,0.5595703125,0.5556640625,0.5390625,0.5078125,0.470703125,0.4404296875,0.4228515625,0.419921875,0.431640625,0.482421875,0.552734375,0.60546875,0.61328125,0.57421875,0.509765625,0.4443359375,0.404296875,0.408203125,0.4560546875,0.5224609375,0.5693359375,0.5791015625,0.5849609375,0.6142578125,0.6474609375,0.6552734375,0.6259765625,0.5673828125,0.5,0.423828125,0.333984375,0.271484375,0.2734375,0.33984375,0.431640625,0.509765625,0.5693359375,0.5859375,0.5576171875,0.51171875,0.4833984375,0.5,0.5595703125,0.6240234375,0.66015625,0.6455078125,0.5830078125,0.5048828125,0.4501953125,0.439453125,0.4443359375,0.462890625,0.4931640625,0.52734375,0.5546875,0.568359375,0.5693359375,0.564453125,0.544921875,0.5107421875,0.47265625,0.4404296875,0.4228515625,0.419921875,0.43359375,0.4931640625,0.5810546875,0.6533203125,0.67578125,0.6435546875,0.5791015625,0.5107421875,0.4580078125,0.4423828125,0.466796875,0.5146484375,0.5517578125,0.5595703125,0.544921875,0.4873046875,0.404296875,0.33984375,0.322265625,0.3564453125,0.419921875,0.486328125,0.5361328125,0.548828125,0.51953125,0.46875,0.4296875,0.419921875,0.419921875,0.4208984375,0.421875,0.4228515625,0.4228515625,0.421875,0.419921875,0.41015625,0.3779296875,0.341796875,0.33203125,0.361328125,0.4208984375,0.4892578125,0.564453125,0.646484375,0.6953125,0.677734375,0.5986328125,0.4990234375,0.419921875,0.34375,0.2587890625,0.2080078125,0.2255859375,0.306640625,0.408203125,0.4892578125,0.568359375,0.654296875,0.7080078125,0.6923828125,0.6123046875,0.5107421875,0.4296875,0.36328125,0.326171875,0.341796875,0.40625,0.4892578125,0.5458984375,0.5595703125,0.556640625,0.54296875,0.517578125,0.4873046875,0.4599609375,0.4443359375,0.439453125,0.44140625,0.4560546875,0.4853515625,0.5224609375,0.5546875,0.57421875,0.5791015625,0.587890625,0.6181640625,0.6494140625,0.654296875,0.6201171875,0.55859375,0.4892578125,0.421875,0.36328125,0.3359375,0.3486328125,0.38671875,0.419921875,0.4296875,0.4345703125,0.4541015625,0.48828125,0.5263671875,0.55859375,0.576171875,0.5791015625,0.568359375,0.51953125,0.453125,0.40625,0.4033203125,0.4443359375,0.509765625,0.583984375,0.6630859375,0.7080078125,0.685546875,0.6015625,0.5,0.419921875,0.3515625,0.30078125,0.287109375,0.3173828125,0.369140625,0.41015625,0.419921875,0.412109375,0.3818359375,0.3486328125,0.3408203125,0.37109375,0.4306640625,0.5,0.5771484375,0.6748046875,0.7529296875,0.76953125,0.7197265625,0.6357421875,0.5595703125,0.4814453125,0.3916015625,0.3291015625,0.333984375,0.4033203125,0.4990234375,0.5791015625,0.6591796875,0.751953125,0.8173828125,0.81640625,0.75,0.6572265625,0.5791015625,0.5107421875,0.4560546875,0.4375,0.4609375,0.5087890625,0.548828125,0.5595703125,0.5693359375,0.6025390625,0.640625,0.6533203125,0.6259765625,0.5673828125,0.5,0.443359375,0.4345703125,0.4765625,0.5380859375,0.578125,0.568359375,0.509765625,0.44921875,0.4306640625,0.4541015625,0.4951171875,0.5185546875,0.5,0.439453125,0.3828125,0.380859375,0.435546875,0.513671875,0.568359375,0.56640625,0.509765625,0.4296875,0.328125,0.244140625,0.220703125,0.265625,0.345703125,0.419921875,0.5,0.609375,0.708984375,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.595703125,0.6591796875,0.673828125,0.63671875,0.5693359375,0.49609375,0.4287109375,0.3857421875,0.3818359375,0.4072265625,0.4326171875,0.439453125,0.439453125,0.4384765625,0.4375,0.4365234375,0.4365234375,0.4384765625,0.439453125,0.43359375,0.40234375,0.3662109375,0.353515625,0.380859375,0.4404296875,0.509765625,0.5673828125,0.57421875,0.529296875,0.4638671875,0.4208984375,0.4296875,0.4892578125,0.55859375,0.6044921875,0.6064453125,0.5634765625,0.4990234375,0.451171875,0.439453125,0.453125,0.5107421875,0.59375,0.66015625,0.6787109375,0.64453125,0.5791015625,0.5009765625,0.4091796875,0.3447265625,0.3447265625,0.4091796875,0.5009765625,0.5791015625,0.65625,0.74609375,0.806640625,0.8017578125,0.732421875,0.6376953125,0.5595703125,0.4814453125,0.392578125,0.33203125,0.3369140625,0.40625,0.5009765625,0.5791015625,0.65625,0.7451171875,0.8046875,0.798828125,0.7294921875,0.6357421875,0.5595703125,0.5009765625,0.486328125,0.5146484375,0.5595703125,0.5869140625,0.5693359375,0.509765625,0.4306640625,0.3310546875,0.2509765625,0.2333984375,0.283203125,0.365234375,0.439453125,0.498046875,0.5126953125,0.484375,0.439453125,0.412109375,0.4296875,0.4892578125,0.5556640625,0.5986328125,0.595703125,0.5478515625,0.48046875,0.4306640625,0.419921875,0.43359375,0.494140625,0.583984375,0.65625,0.6787109375,0.6455078125,0.5791015625,0.5087890625,0.4560546875,0.44140625,0.470703125,0.5244140625,0.5673828125,0.5791015625,0.5869140625,0.6123046875,0.6328125,0.623046875,0.5751953125,0.5029296875,0.4296875,0.359375,0.3046875,0.2880859375,0.3154296875,0.3662109375,0.408203125,0.419921875,0.421875,0.4228515625,0.4228515625,0.421875,0.4208984375,0.419921875,0.419921875,0.4296875,0.470703125,0.5234375,0.5556640625,0.544921875,0.49609375,0.4296875,0.3662109375,0.3330078125,0.3505859375,0.4150390625,0.494140625,0.548828125,0.5595703125,0.5478515625,0.5048828125,0.451171875,0.421875,0.435546875,0.4892578125,0.5595703125,0.638671875,0.732421875,0.7978515625,0.796875,0.73046875,0.6376953125,0.5595703125,0.5009765625,0.4931640625,0.5361328125,0.5986328125,0.6396484375,0.62890625,0.5693359375,0.48828125,0.3857421875,0.302734375,0.2841796875,0.3359375,0.421875,0.5,0.5595703125,0.5712890625,0.533203125,0.4755859375,0.4375,0.44921875,0.509765625,0.568359375,0.5712890625,0.515625,0.4345703125,0.3759765625,0.375,0.4296875,0.5068359375,0.599609375,0.66796875,0.671875,0.609375,0.5185546875,0.439453125,0.373046875,0.3349609375,0.349609375,0.4130859375,0.49609375,0.5546875,0.5693359375,0.5810546875,0.6240234375,0.6787109375,0.7099609375,0.6982421875,0.6474609375,0.5791015625,0.5068359375,0.435546875,0.3857421875,0.373046875,0.3896484375,0.412109375,0.419921875,0.4345703125,0.4931640625,0.578125,0.6455078125,0.6650390625,0.6328125,0.5693359375,0.5107421875,0.4931640625,0.5185546875,0.560546875,0.5849609375,0.568359375,0.509765625,0.4404296875,0.3798828125,0.3486328125,0.35546875,0.3896484375,0.4208984375,0.4296875,0.431640625,0.4326171875,0.431640625,0.4287109375,0.4248046875,0.421875,0.419921875,0.421875,0.4404296875,0.4755859375,0.5185546875,0.5546875,0.5751953125,0.5791015625,0.587890625,0.62109375,0.6591796875,0.6708984375,0.6416015625,0.5810546875,0.509765625,0.4375,0.3740234375,0.3408203125,0.34765625,0.380859375,0.412109375,0.419921875,0.431640625,0.4814453125,0.55078125,0.599609375,0.6015625,0.5576171875,0.4892578125,0.41015625,0.3193359375,0.2578125,0.26171875,0.330078125,0.4228515625,0.5,0.5546875,0.5546875,0.498046875,0.419921875,0.3671875,0.37109375,0.4296875,0.5029296875,0.572265625,0.615234375,0.6201171875,0.5947265625,0.568359375,0.5595703125,0.5546875,0.5390625,0.51171875,0.4814453125,0.4560546875,0.4423828125,0.439453125,0.4423828125,0.4580078125,0.486328125,0.5185546875,0.544921875,0.55859375,0.5595703125,0.564453125,0.58984375,0.615234375,0.61328125,0.5751953125,0.5107421875,0.439453125,0.37109375,0.3203125,0.3076171875,0.3369140625,0.3896484375,0.4296875,0.439453125,0.43359375,0.41015625,0.390625,0.3984375,0.4423828125,0.509765625,0.5791015625,0.6455078125,0.6923828125,0.701171875,0.6669921875,0.611328125,0.5693359375,0.5595703125,0.5595703125,0.560546875,0.5615234375,0.5625,0.5625,0.560546875,0.5595703125,0.5458984375,0.49609375,0.427734375,0.380859375,0.37890625,0.4228515625,0.4892578125,0.5693359375,0.671875,0.7578125,0.78125,0.736328125,0.6552734375,0.5791015625,0.5,0.3984375,0.31640625,0.296875,0.3466796875,0.431640625,0.509765625,0.58984375,0.689453125,0.767578125,0.78125,0.728515625,0.64453125,0.5693359375,0.5,0.43359375,0.392578125,0.38671875,0.4091796875,0.43359375,0.439453125,0.443359375,0.4599609375,0.4912109375,0.5283203125,0.55859375,0.576171875,0.5791015625,0.576171875,0.55859375,0.5263671875,0.48828125,0.4541015625,0.4345703125,0.4296875,0.439453125,0.484375,0.548828125,0.5947265625,0.595703125,0.5546875,0.4892578125,0.4248046875,0.3857421875,0.392578125,0.443359375,0.51171875,0.5595703125,0.5693359375,0.564453125,0.544921875,0.5126953125,0.4755859375,0.4462890625,0.4306640625,0.4296875,0.423828125,0.3935546875,0.359375,0.3505859375,0.3798828125,0.439453125,0.509765625,0.5888671875,0.6865234375,0.7626953125,0.7763671875,0.7216796875,0.6357421875,0.5595703125,0.4912109375,0.4423828125,0.4345703125,0.4697265625,0.5263671875,0.5693359375,0.5791015625,0.5673828125,0.5166015625,0.4462890625,0.3935546875,0.3857421875,0.4248046875,0.4892578125,0.564453125,0.6474609375,0.6982421875,0.6806640625,0.6015625,0.5009765625,0.419921875,0.3408203125,0.25,0.189453125,0.1953125,0.265625,0.361328125,0.439453125,0.517578125,0.6064453125,0.6689453125,0.6650390625,0.5986328125,0.505859375,0.4296875,0.3623046875,0.310546875,0.294921875,0.3203125,0.369140625,0.4091796875,0.419921875,0.43359375,0.486328125,0.55859375,0.611328125,0.6171875,0.576171875,0.509765625,0.4501953125,0.4365234375,0.4697265625,0.5234375,0.55859375,0.546875,0.4892578125,0.4345703125,0.4345703125,0.4912109375,0.5693359375,0.6220703125,0.6181640625,0.5595703125,0.4970703125,0.4765625,0.498046875,0.5390625,0.564453125,0.5478515625,0.4892578125,0.4150390625,0.3330078125,0.283203125,0.30078125,0.380859375,0.48046875,0.5595703125,0.6337890625,0.708984375,0.7431640625,0.625,0.701171875,0.7236328125,0.6884765625,0.6220703125,0.5478515625,0.4716796875,0.4150390625,0.39453125,0.4052734375,0.423828125,0.4287109375,0.427734375,0.421875,0.4140625,0.4091796875,0.4111328125,0.4189453125,0.4287109375,0.43359375,0.419921875,0.4033203125,0.4052734375,0.4365234375,0.490234375,0.55078125,0.5986328125,0.5888671875,0.5234375,0.4404296875,0.384765625,0.388671875,0.4482421875,0.517578125,0.5673828125,0.576171875,0.541015625,0.4833984375,0.439453125,0.4287109375,0.443359375,0.5087890625,0.6083984375,0.69921875,0.7421875,0.7275390625,0.673828125,0.60546875,0.5244140625,0.4677734375,0.4677734375,0.5244140625,0.60546875,0.673828125,0.7392578125,0.806640625,0.8408203125,0.8134765625,0.7333984375,0.640625,0.5703125,0.50390625,0.4365234375,0.40234375,0.4296875,0.509765625,0.6025390625,0.673828125,0.7373046875,0.7998046875,0.826171875,0.7939453125,0.7158203125,0.630859375,0.5703125,0.5283203125,0.5244140625,0.556640625,0.599609375,0.6220703125,0.6044921875,0.55078125,0.4814453125,0.392578125,0.3154296875,0.2880859375,0.3154296875,0.3740234375,0.4287109375,0.470703125,0.474609375,0.4423828125,0.3994140625,0.376953125,0.39453125,0.4482421875,0.5048828125,0.5341796875,0.5185546875,0.4609375,0.3876953125,0.3369140625,0.3251953125,0.34375,0.427734375,0.55859375,0.6806640625,0.7451171875,0.7353515625,0.673828125,0.6025390625,0.5439453125,0.5224609375,0.548828125,0.6044921875,0.6533203125,0.673828125,0.6865234375,0.7001953125,0.689453125,0.63671875,0.5498046875,0.455078125,0.376953125,0.3046875,0.240234375,0.2080078125,0.2197265625,0.263671875,0.306640625,0.3251953125,0.3359375,0.34375,0.345703125,0.3408203125,0.3330078125,0.3271484375,0.3251953125,0.333984375,0.3701171875,0.4189453125,0.4541015625,0.45703125,0.42578125,0.376953125,0.333984375,0.326171875,0.3671875,0.4443359375,0.5234375,0.568359375,0.5703125,0.5498046875,0.5009765625,0.4453125,0.4189453125,0.4404296875,0.4990234375,0.5703125,0.6484375,0.736328125,0.794921875,0.791015625,0.7265625,0.6396484375,0.5703125,0.521484375,0.5244140625,0.578125,0.6484375,0.6923828125,0.681640625,0.6220703125,0.5390625,0.4296875,0.3359375,0.3037109375,0.34375,0.4228515625,0.5,0.560546875,0.5771484375,0.548828125,0.501953125,0.4736328125,0.490234375,0.55078125,0.609375,0.611328125,0.5478515625,0.4501953125,0.3671875,0.341796875,0.376953125,0.4384765625,0.5234375,0.59765625,0.6201171875,0.580078125,0.5048828125,0.4287109375,0.3623046875,0.3271484375,0.349609375,0.42578125,0.5244140625,0.5966796875,0.6220703125,0.6416015625,0.69140625,0.75,0.78515625,0.7783203125,0.7333984375,0.673828125,0.6044921875,0.5107421875,0.4140625,0.34375,0.314453125,0.3154296875,0.3251953125,0.349609375,0.4228515625,0.529296875,0.6240234375,0.6728515625,0.666015625,0.6220703125,0.5771484375,0.5615234375,0.57421875,0.5986328125,0.611328125,0.595703125,0.55078125,0.49609375,0.431640625,0.3759765625,0.3466796875,0.34765625,0.3642578125,0.376953125,0.3876953125,0.39453125,0.3935546875,0.3798828125,0.3583984375,0.3388671875,0.3251953125,0.3232421875,0.3583984375,0.43359375,0.5302734375,0.615234375,0.6640625,0.673828125,0.6806640625,0.70703125,0.7333984375,0.7314453125,0.69140625,0.6240234375,0.55078125,0.4765625,0.396484375,0.3330078125,0.3037109375,0.306640625,0.3212890625,0.3251953125,0.3388671875,0.39453125,0.4755859375,0.5380859375,0.552734375,0.5146484375,0.4482421875,0.3720703125,0.296875,0.2568359375,0.279296875,0.353515625,0.4384765625,0.5,0.5361328125,0.5166015625,0.4453125,0.361328125,0.3095703125,0.3173828125,0.376953125,0.453125,0.53515625,0.5986328125,0.6240234375,0.611328125,0.5859375,0.5703125,0.556640625,0.5322265625,0.4990234375,0.4658203125,0.4423828125,0.4306640625,0.4287109375,0.43359375,0.45703125,0.49609375,0.5380859375,0.5673828125,0.5771484375,0.5703125,0.5654296875,0.576171875,0.5888671875,0.5810546875,0.546875,0.490234375,0.4287109375,0.369140625,0.32421875,0.3134765625,0.3388671875,0.384765625,0.4208984375,0.4287109375,0.427734375,0.427734375,0.4443359375,0.4873046875,0.55078125,0.6181640625,0.673828125,0.720703125,0.7451171875,0.7314453125,0.6826171875,0.6220703125,0.5791015625,0.5703125,0.5712890625,0.5771484375,0.5849609375,0.58984375,0.587890625,0.580078125,0.5703125,0.548828125,0.490234375,0.416015625,0.361328125,0.353515625,0.3896484375,0.4482421875,0.521484375,0.62890625,0.736328125,0.7958984375,0.7890625,0.736328125,0.673828125,0.6005859375,0.4990234375,0.4072265625,0.37109375,0.40234375,0.4755859375,0.55078125,0.6298828125,0.720703125,0.787109375,0.796875,0.75,0.6796875,0.6220703125,0.5673828125,0.5068359375,0.4541015625,0.4248046875,0.419921875,0.4267578125,0.4287109375,0.4345703125,0.46484375,0.5185546875,0.5830078125,0.6376953125,0.66796875,0.673828125,0.66796875,0.6376953125,0.580078125,0.505859375,0.4375,0.39453125,0.376953125,0.3759765625,0.40625,0.4580078125,0.5029296875,0.5166015625,0.494140625,0.4482421875,0.4033203125,0.3935546875,0.4306640625,0.5029296875,0.5771484375,0.62109375,0.6220703125,0.6044921875,0.5615234375,0.4970703125,0.4326171875,0.3876953125,0.37109375,0.376953125,0.3828125,0.3759765625,0.37109375,0.38671875,0.4287109375,0.4892578125,0.55078125,0.6201171875,0.7021484375,0.763671875,0.7685546875,0.7158203125,0.6376953125,0.5703125,0.5126953125,0.48046875,0.4921875,0.5458984375,0.6142578125,0.662109375,0.673828125,0.6611328125,0.6044921875,0.515625,0.4345703125,0.3935546875,0.4033203125,0.4482421875,0.5048828125,0.568359375,0.6044921875,0.5810546875,0.501953125,0.4052734375,0.3251953125,0.25,0.173828125,0.138671875,0.169921875,0.2578125,0.357421875,0.4287109375,0.494140625,0.5625,0.6005859375,0.58203125,0.515625,0.4365234375,0.376953125,0.3251953125,0.275390625,0.2470703125,0.25,0.2783203125,0.3095703125,0.3251953125,0.349609375,0.419921875,0.5185546875,0.599609375,0.630859375,0.607421875,0.55078125,0.49609375,0.46875,0.4716796875,0.4921875,0.505859375,0.4912109375,0.4482421875,0.4111328125,0.4306640625,0.501953125,0.5859375,0.6376953125,0.6298828125,0.5703125,0.5048828125,0.466796875,0.4638671875,0.484375,0.5009765625,0.490234375,0.4482421875,0.392578125,0.3349609375,0.306640625,0.3349609375,0.4111328125,0.5,0.5703125,0.6328125,0.68359375,0.685546875,0.685546875,0.748046875,0.751953125,0.7041015625,0.634765625,0.5615234375,0.4892578125,0.4384765625,0.4248046875,0.44140625,0.462890625,0.46875,0.4658203125,0.4501953125,0.4306640625,0.4189453125,0.423828125,0.443359375,0.46875,0.4912109375,0.5009765625,0.501953125,0.5078125,0.5263671875,0.5615234375,0.6044921875,0.6337890625,0.599609375,0.5078125,0.40234375,0.3349609375,0.3359375,0.39453125,0.4658203125,0.52734375,0.5576171875,0.546875,0.509765625,0.4775390625,0.46875,0.4814453125,0.541015625,0.6357421875,0.7255859375,0.7783203125,0.7783203125,0.740234375,0.689453125,0.6298828125,0.587890625,0.587890625,0.6298828125,0.689453125,0.740234375,0.78515625,0.8193359375,0.814453125,0.7587890625,0.669921875,0.5849609375,0.5302734375,0.484375,0.4501953125,0.455078125,0.5107421875,0.599609375,0.6845703125,0.740234375,0.7822265625,0.80078125,0.7763671875,0.708984375,0.625,0.5595703125,0.5302734375,0.51953125,0.541015625,0.587890625,0.634765625,0.6572265625,0.64453125,0.6044921875,0.5546875,0.494140625,0.44140625,0.4169921875,0.423828125,0.447265625,0.46875,0.4794921875,0.4580078125,0.4111328125,0.3642578125,0.341796875,0.3544921875,0.39453125,0.435546875,0.4521484375,0.4306640625,0.375,0.3115234375,0.2685546875,0.2587890625,0.2802734375,0.3798828125,0.541015625,0.6982421875,0.79296875,0.798828125,0.740234375,0.6669921875,0.5986328125,0.56640625,0.5849609375,0.6435546875,0.7041015625,0.740234375,0.7666015625,0.7822265625,0.7568359375,0.6767578125,0.5595703125,0.4462890625,0.3642578125,0.2880859375,0.2080078125,0.1513671875,0.142578125,0.177734375,0.2255859375,0.2587890625,0.2841796875,0.3037109375,0.30859375,0.2978515625,0.2783203125,0.2626953125,0.2587890625,0.263671875,0.2880859375,0.3251953125,0.361328125,0.380859375,0.3798828125,0.3642578125,0.353515625,0.375,0.427734375,0.4912109375,0.537109375,0.548828125,0.5302734375,0.494140625,0.43359375,0.375,0.35546875,0.388671875,0.4560546875,0.5302734375,0.60546875,0.6845703125,0.7314453125,0.720703125,0.6591796875,0.583984375,0.5302734375,0.498046875,0.51953125,0.587890625,0.6650390625,0.708984375,0.6962890625,0.634765625,0.5517578125,0.44140625,0.3447265625,0.30859375,0.345703125,0.4228515625,0.5,0.5615234375,0.5849609375,0.568359375,0.53515625,0.5185546875,0.5419921875,0.6044921875,0.666015625,0.6787109375,0.6240234375,0.521484375,0.41796875,0.361328125,0.3642578125,0.39453125,0.462890625,0.5439453125,0.59375,0.58984375,0.5390625,0.46875,0.3994140625,0.3515625,0.3564453125,0.4189453125,0.5146484375,0.595703125,0.634765625,0.6689453125,0.7275390625,0.7900390625,0.826171875,0.8212890625,0.78515625,0.740234375,0.6806640625,0.57421875,0.4384765625,0.3193359375,0.2509765625,0.23828125,0.2587890625,0.2958984375,0.3720703125,0.474609375,0.5712890625,0.6318359375,0.6484375,0.634765625,0.6181640625,0.6123046875,0.6162109375,0.6240234375,0.6279296875,0.62109375,0.6044921875,0.5771484375,0.5185546875,0.44140625,0.375,0.33984375,0.341796875,0.3642578125,0.390625,0.4130859375,0.4140625,0.3857421875,0.337890625,0.291015625,0.2587890625,0.244140625,0.283203125,0.3857421875,0.5244140625,0.6513671875,0.7255859375,0.740234375,0.7470703125,0.7724609375,0.794921875,0.7900390625,0.74609375,0.677734375,0.6044921875,0.5263671875,0.4326171875,0.341796875,0.28125,0.2568359375,0.2568359375,0.2587890625,0.2724609375,0.330078125,0.4140625,0.48046875,0.4970703125,0.4609375,0.39453125,0.32421875,0.2734375,0.26953125,0.3203125,0.400390625,0.46875,0.5,0.5048828125,0.4609375,0.3798828125,0.306640625,0.275390625,0.2998046875,0.3642578125,0.44140625,0.529296875,0.599609375,0.6240234375,0.6025390625,0.5615234375,0.5302734375,0.5029296875,0.4765625,0.4580078125,0.453125,0.458984375,0.466796875,0.46875,0.474609375,0.4970703125,0.5302734375,0.5576171875,0.56640625,0.5537109375,0.5302734375,0.5087890625,0.5087890625,0.5244140625,0.5380859375,0.5361328125,0.5107421875,0.46875,0.4248046875,0.3916015625,0.3837890625,0.40234375,0.4365234375,0.462890625,0.46875,0.47265625,0.4951171875,0.541015625,0.6044921875,0.6689453125,0.7158203125,0.740234375,0.75390625,0.7421875,0.6982421875,0.634765625,0.57421875,0.537109375,0.5302734375,0.533203125,0.548828125,0.568359375,0.580078125,0.5751953125,0.5556640625,0.5302734375,0.4951171875,0.4326171875,0.36328125,0.3203125,0.3173828125,0.349609375,0.39453125,0.453125,0.5546875,0.673828125,0.7646484375,0.7998046875,0.7822265625,0.740234375,0.6826171875,0.591796875,0.4990234375,0.4521484375,0.4697265625,0.53125,0.6044921875,0.677734375,0.7451171875,0.779296875,0.7646484375,0.71484375,0.6630859375,0.634765625,0.6123046875,0.5791015625,0.5380859375,0.501953125,0.4794921875,0.470703125,0.46875,0.4755859375,0.5087890625,0.568359375,0.640625,0.701171875,0.7333984375,0.740234375,0.7353515625,0.705078125,0.640625,0.5517578125,0.4638671875,0.3984375,0.3642578125,0.341796875,0.3369140625,0.353515625,0.3798828125,0.4033203125,0.408203125,0.39453125,0.384765625,0.416015625,0.4853515625,0.568359375,0.6318359375,0.65234375,0.634765625,0.599609375,0.5322265625,0.447265625,0.375,0.3388671875,0.3408203125,0.3642578125,0.388671875,0.4111328125,0.435546875,0.46875,0.51171875,0.55859375,0.6044921875,0.6533203125,0.7041015625,0.7294921875,0.708984375,0.650390625,0.58203125,0.5302734375,0.490234375,0.4833984375,0.521484375,0.5966796875,0.6767578125,0.728515625,0.740234375,0.7294921875,0.6767578125,0.5849609375,0.4853515625,0.412109375,0.3837890625,0.39453125,0.419921875,0.458984375,0.4853515625,0.4716796875,0.4140625,0.3349609375,0.2587890625,0.1875,0.134765625,0.134765625,0.201171875,0.3095703125,0.41015625,0.46875,0.513671875,0.544921875,0.5439453125,0.5048828125,0.4443359375,0.3916015625,0.3642578125,0.33984375,0.2978515625,0.2509765625,0.2197265625,0.2158203125,0.2333984375,0.2587890625,0.298828125,0.38671875,0.501953125,0.6015625,0.650390625,0.64453125,0.6044921875,0.55859375,0.5107421875,0.4697265625,0.44140625,0.4248046875,0.4111328125,0.39453125,0.388671875,0.43359375,0.513671875,0.587890625,0.619140625,0.59375,0.5302734375,0.4599609375,0.4013671875,0.3720703125,0.375,0.39453125,0.40625,0.39453125,0.373046875,0.3486328125,0.341796875,0.3662109375,0.4189453125,0.4794921875,0.5302734375,0.57421875,0.6005859375,0.58203125,0.748046875,0.779296875,0.7490234375,0.6787109375,0.6044921875,0.533203125,0.4716796875,0.44140625,0.4521484375,0.4892578125,0.521484375,0.5302734375,0.5234375,0.4970703125,0.4638671875,0.4443359375,0.4521484375,0.4853515625,0.5302734375,0.572265625,0.603515625,0.615234375,0.61328125,0.607421875,0.61328125,0.634765625,0.64453125,0.5888671875,0.48046875,0.3671875,0.2998046875,0.3046875,0.3642578125,0.4375,0.509765625,0.560546875,0.57421875,0.5576171875,0.5361328125,0.5302734375,0.5380859375,0.5791015625,0.6455078125,0.712890625,0.7548828125,0.7607421875,0.740234375,0.7109375,0.67578125,0.6513671875,0.6513671875,0.67578125,0.7109375,0.740234375,0.7626953125,0.7646484375,0.728515625,0.6572265625,0.572265625,0.5048828125,0.46875,0.4462890625,0.4443359375,0.48046875,0.5517578125,0.63671875,0.7041015625,0.740234375,0.7568359375,0.732421875,0.662109375,0.5712890625,0.4951171875,0.4609375,0.46875,0.4951171875,0.544921875,0.6044921875,0.6513671875,0.669921875,0.6591796875,0.634765625,0.609375,0.5888671875,0.57421875,0.5654296875,0.55859375,0.546875,0.5302734375,0.50390625,0.4541015625,0.39453125,0.34765625,0.3291015625,0.33984375,0.3642578125,0.3876953125,0.3935546875,0.375,0.3359375,0.29296875,0.2646484375,0.2587890625,0.2802734375,0.3798828125,0.541015625,0.6982421875,0.79296875,0.798828125,0.740234375,0.6640625,0.5849609375,0.5380859375,0.5498046875,0.611328125,0.685546875,0.740234375,0.7861328125,0.8193359375,0.8037109375,0.7236328125,0.599609375,0.478515625,0.39453125,0.3154296875,0.2197265625,0.142578125,0.1181640625,0.1494140625,0.2080078125,0.2587890625,0.302734375,0.3359375,0.3447265625,0.3251953125,0.2919921875,0.265625,0.2587890625,0.259765625,0.2646484375,0.28125,0.30859375,0.3427734375,0.373046875,0.39453125,0.4208984375,0.4697265625,0.5244140625,0.5546875,0.548828125,0.5146484375,0.46875,0.4150390625,0.33984375,0.2783203125,0.267578125,0.314453125,0.3935546875,0.46875,0.54296875,0.6103515625,0.6435546875,0.6240234375,0.5654296875,0.5048828125,0.46875,0.45703125,0.4951171875,0.57421875,0.6513671875,0.6884765625,0.66796875,0.6044921875,0.5224609375,0.416015625,0.3251953125,0.2978515625,0.3408203125,0.421875,0.5,0.5625,0.58984375,0.580078125,0.5546875,0.544921875,0.572265625,0.634765625,0.7021484375,0.736328125,0.7099609375,0.6240234375,0.5126953125,0.4287109375,0.39453125,0.388671875,0.43359375,0.513671875,0.587890625,0.619140625,0.59375,0.5302734375,0.455078125,0.3857421875,0.35546875,0.38671875,0.46484375,0.548828125,0.6044921875,0.6552734375,0.720703125,0.7783203125,0.806640625,0.7978515625,0.7685546875,0.740234375,0.697265625,0.5927734375,0.447265625,0.3115234375,0.232421875,0.22265625,0.2587890625,0.30859375,0.3720703125,0.4443359375,0.5078125,0.5546875,0.583984375,0.6044921875,0.62109375,0.6279296875,0.6240234375,0.6162109375,0.6123046875,0.6181640625,0.634765625,0.6416015625,0.599609375,0.515625,0.4248046875,0.365234375,0.3583984375,0.39453125,0.44140625,0.484375,0.4970703125,0.4609375,0.388671875,0.3125,0.2587890625,0.2255859375,0.2509765625,0.3505859375,0.4970703125,0.6376953125,0.72265625,0.740234375,0.748046875,0.7763671875,0.806640625,0.8095703125,0.7724609375,0.70703125,0.634765625,0.556640625,0.4580078125,0.361328125,0.2919921875,0.26171875,0.2578125,0.2587890625,0.271484375,0.326171875,0.40234375,0.4609375,0.470703125,0.431640625,0.3642578125,0.2998046875,0.275390625,0.306640625,0.3798828125,0.4609375,0.5048828125,0.5,0.46875,0.400390625,0.3203125,0.26953125,0.2734375,0.32421875,0.39453125,0.47265625,0.560546875,0.6240234375,0.6328125,0.5869140625,0.521484375,0.46875,0.4267578125,0.400390625,0.40625,0.44140625,0.48828125,0.5224609375,0.5302734375,0.53515625,0.5537109375,0.57421875,0.5771484375,0.5556640625,0.5146484375,0.46875,0.4296875,0.419921875,0.4443359375,0.4912109375,0.533203125,0.5478515625,0.5302734375,0.50390625,0.4853515625,0.48046875,0.4912109375,0.5107421875,0.5263671875,0.5302734375,0.537109375,0.57421875,0.634765625,0.6982421875,0.7421875,0.75390625,0.740234375,0.7158203125,0.6689453125,0.6044921875,0.541015625,0.4951171875,0.47265625,0.46875,0.4755859375,0.501953125,0.53515625,0.5546875,0.546875,0.513671875,0.46875,0.4189453125,0.357421875,0.306640625,0.2861328125,0.3017578125,0.3349609375,0.3642578125,0.40234375,0.482421875,0.5908203125,0.6904296875,0.75,0.7607421875,0.740234375,0.7021484375,0.6279296875,0.546875,0.5,0.5087890625,0.564453125,0.634765625,0.701171875,0.7392578125,0.7314453125,0.685546875,0.6279296875,0.5966796875,0.6044921875,0.62109375,0.6259765625,0.61328125,0.5849609375,0.5546875,0.5341796875,0.5302734375,0.53515625,0.560546875,0.607421875,0.6630859375,0.7099609375,0.7353515625,0.740234375,0.73828125,0.72265625,0.6796875,0.607421875,0.521484375,0.4462890625,0.39453125,0.3466796875,0.298828125,0.26953125,0.2734375,0.3037109375,0.33984375,0.3642578125,0.39453125,0.4638671875,0.5546875,0.6298828125,0.6611328125,0.6455078125,0.6044921875,0.5498046875,0.4638671875,0.375,0.3193359375,0.314453125,0.3486328125,0.39453125,0.4404296875,0.4873046875,0.5302734375,0.5634765625,0.587890625,0.6103515625,0.634765625,0.66015625,0.6748046875,0.662109375,0.619140625,0.556640625,0.501953125,0.46875,0.4501953125,0.4638671875,0.5185546875,0.6015625,0.681640625,0.73046875,0.740234375,0.734375,0.69921875,0.6298828125,0.5380859375,0.451171875,0.3916015625,0.3642578125,0.353515625,0.3681640625,0.39453125,0.4052734375,0.3828125,0.328125,0.2587890625,0.19140625,0.1572265625,0.1845703125,0.275390625,0.3935546875,0.48828125,0.5302734375,0.5498046875,0.5419921875,0.501953125,0.447265625,0.400390625,0.3828125,0.39453125,0.4033203125,0.3740234375,0.3134765625,0.2509765625,0.21484375,0.220703125,0.2587890625,0.3154296875,0.4091796875,0.521484375,0.61328125,0.658203125,0.658203125,0.634765625,0.6005859375,0.537109375,0.4580078125,0.3896484375,0.3515625,0.3486328125,0.3642578125,0.39453125,0.462890625,0.5439453125,0.59375,0.58984375,0.5390625,0.46875,0.39453125,0.318359375,0.267578125,0.26171875,0.294921875,0.337890625,0.3642578125,0.380859375,0.392578125,0.3994140625,0.408203125,0.4228515625,0.443359375,0.46875,0.4931640625,0.5029296875,0.48046875,0.7841796875,0.783203125,0.720703125,0.6298828125,0.55078125,0.4814453125,0.431640625,0.4228515625,0.4580078125,0.515625,0.5595703125,0.5703125,0.5615234375,0.525390625,0.48046875,0.4541015625,0.4658203125,0.5107421875,0.5703125,0.6298828125,0.6748046875,0.689453125,0.6728515625,0.640625,0.619140625,0.6220703125,0.6162109375,0.552734375,0.4462890625,0.3466796875,0.2978515625,0.314453125,0.376953125,0.451171875,0.52734375,0.583984375,0.6044921875,0.59375,0.5751953125,0.5703125,0.57421875,0.5927734375,0.623046875,0.6552734375,0.67578125,0.6806640625,0.673828125,0.662109375,0.6484375,0.638671875,0.638671875,0.6484375,0.662109375,0.673828125,0.6796875,0.6630859375,0.6181640625,0.5537109375,0.4892578125,0.4462890625,0.4287109375,0.4228515625,0.439453125,0.484375,0.548828125,0.61328125,0.65625,0.673828125,0.6708984375,0.619140625,0.5283203125,0.4375,0.384765625,0.38671875,0.4287109375,0.484375,0.55078125,0.611328125,0.6455078125,0.6484375,0.634765625,0.6220703125,0.6171875,0.6328125,0.658203125,0.669921875,0.6572265625,0.619140625,0.5703125,0.5146484375,0.4482421875,0.3876953125,0.353515625,0.3505859375,0.3642578125,0.376953125,0.3857421875,0.3876953125,0.3779296875,0.3603515625,0.3408203125,0.328125,0.3251953125,0.34375,0.427734375,0.55859375,0.6806640625,0.7451171875,0.7353515625,0.673828125,0.5947265625,0.5068359375,0.4482421875,0.4521484375,0.517578125,0.603515625,0.673828125,0.7373046875,0.796875,0.8115234375,0.755859375,0.646484375,0.53125,0.4482421875,0.3662109375,0.263671875,0.177734375,0.1494140625,0.1875,0.2587890625,0.3251953125,0.3857421875,0.4296875,0.44140625,0.416015625,0.3701171875,0.333984375,0.3251953125,0.3212890625,0.306640625,0.2958984375,0.306640625,0.34375,0.3955078125,0.4482421875,0.505859375,0.576171875,0.626953125,0.626953125,0.5732421875,0.49609375,0.4287109375,0.359375,0.2724609375,0.2080078125,0.2041015625,0.2626953125,0.3505859375,0.4287109375,0.5,0.55859375,0.580078125,0.5537109375,0.498046875,0.44921875,0.4287109375,0.431640625,0.48046875,0.5595703125,0.626953125,0.6484375,0.6162109375,0.55078125,0.470703125,0.3701171875,0.2919921875,0.2783203125,0.3330078125,0.4208984375,0.5,0.5625,0.587890625,0.5751953125,0.546875,0.533203125,0.55859375,0.6220703125,0.6943359375,0.755859375,0.767578125,0.712890625,0.611328125,0.51171875,0.4482421875,0.4111328125,0.4306640625,0.501953125,0.5859375,0.6376953125,0.6298828125,0.5703125,0.4912109375,0.4013671875,0.337890625,0.3369140625,0.3974609375,0.482421875,0.55078125,0.615234375,0.6806640625,0.7275390625,0.73828125,0.7177734375,0.689453125,0.673828125,0.646484375,0.5615234375,0.435546875,0.322265625,0.263671875,0.2724609375,0.3251953125,0.3837890625,0.42578125,0.4501953125,0.4619140625,0.4755859375,0.5048828125,0.55078125,0.595703125,0.611328125,0.5986328125,0.57421875,0.5615234375,0.5771484375,0.6220703125,0.6591796875,0.6396484375,0.564453125,0.470703125,0.4052734375,0.3994140625,0.4482421875,0.513671875,0.5791015625,0.6083984375,0.576171875,0.4921875,0.396484375,0.3251953125,0.2744140625,0.271484375,0.337890625,0.455078125,0.5791015625,0.6572265625,0.673828125,0.6826171875,0.7177734375,0.759765625,0.7763671875,0.7509765625,0.6923828125,0.6220703125,0.544921875,0.45703125,0.376953125,0.3291015625,0.31640625,0.322265625,0.3251953125,0.3369140625,0.384765625,0.4501953125,0.494140625,0.4921875,0.4462890625,0.376953125,0.3173828125,0.3095703125,0.361328125,0.4453125,0.5166015625,0.5361328125,0.5,0.4384765625,0.353515625,0.279296875,0.2568359375,0.296875,0.3720703125,0.4482421875,0.525390625,0.611328125,0.666015625,0.6572265625,0.587890625,0.4990234375,0.4287109375,0.373046875,0.3447265625,0.365234375,0.4287109375,0.505859375,0.55859375,0.5703125,0.5751953125,0.59375,0.6083984375,0.5966796875,0.5537109375,0.4921875,0.4287109375,0.3740234375,0.3525390625,0.3798828125,0.4482421875,0.5234375,0.568359375,0.5703125,0.5595703125,0.552734375,0.55078125,0.5546875,0.5625,0.568359375,0.5703125,0.5791015625,0.6220703125,0.6826171875,0.7314453125,0.7451171875,0.720703125,0.673828125,0.6181640625,0.55078125,0.4873046875,0.4443359375,0.427734375,0.427734375,0.4287109375,0.4375,0.4736328125,0.5185546875,0.544921875,0.533203125,0.48828125,0.4287109375,0.3662109375,0.3095703125,0.279296875,0.287109375,0.3232421875,0.3603515625,0.376953125,0.3955078125,0.4453125,0.521484375,0.599609375,0.6552734375,0.677734375,0.673828125,0.65234375,0.5966796875,0.529296875,0.490234375,0.4990234375,0.5517578125,0.6220703125,0.6826171875,0.697265625,0.65625,0.5859375,0.5263671875,0.513671875,0.55078125,0.6015625,0.640625,0.654296875,0.6376953125,0.6044921875,0.5771484375,0.5703125,0.572265625,0.5849609375,0.6083984375,0.6357421875,0.658203125,0.6708984375,0.673828125,0.6767578125,0.6845703125,0.6806640625,0.646484375,0.5849609375,0.5126953125,0.4482421875,0.3798828125,0.296875,0.2314453125,0.216796875,0.2568359375,0.3212890625,0.376953125,0.439453125,0.533203125,0.626953125,0.677734375,0.6669921875,0.6142578125,0.55078125,0.48046875,0.3876953125,0.3076171875,0.2802734375,0.314453125,0.3818359375,0.4482421875,0.509765625,0.5703125,0.6123046875,0.6279296875,0.623046875,0.6162109375,0.6220703125,0.62890625,0.619140625,0.5859375,0.53515625,0.482421875,0.4453125,0.4287109375,0.4248046875,0.4462890625,0.4990234375,0.568359375,0.630859375,0.666015625,0.673828125,0.673828125,0.6669921875,0.638671875,0.58203125,0.5068359375,0.43359375,0.376953125,0.3369140625,0.3349609375,0.3671875,0.4052734375,0.4189453125,0.3896484375,0.3251953125,0.259765625,0.2314453125,0.2646484375,0.35546875,0.46484375,0.5439453125,0.5703125,0.5703125,0.533203125,0.4697265625,0.412109375,0.3857421875,0.40234375,0.4482421875,0.486328125,0.47265625,0.4091796875,0.3291015625,0.275390625,0.2763671875,0.3251953125,0.3935546875,0.48046875,0.5654296875,0.6220703125,0.640625,0.6337890625,0.6220703125,0.5986328125,0.5322265625,0.4375,0.35546875,0.318359375,0.33203125,0.376953125,0.4384765625,0.5234375,0.59765625,0.6201171875,0.580078125,0.5048828125,0.4287109375,0.3505859375,0.2626953125,0.2001953125,0.1953125,0.24609375,0.3193359375,0.376953125,0.4267578125,0.4638671875,0.4775390625,0.46484375,0.4404296875,0.4248046875,0.4287109375,0.4384765625,0.439453125,0.42578125,0.7783203125,0.765625,0.689453125,0.58984375,0.509765625,0.4404296875,0.39453125,0.392578125,0.435546875,0.5,0.5478515625,0.5595703125,0.5498046875,0.5087890625,0.45703125,0.4267578125,0.4404296875,0.4912109375,0.5595703125,0.6279296875,0.6787109375,0.6923828125,0.6650390625,0.615234375,0.5771484375,0.5693359375,0.5576171875,0.5,0.416015625,0.34765625,0.3291015625,0.36328125,0.4296875,0.5029296875,0.5703125,0.61328125,0.6171875,0.591796875,0.56640625,0.5595703125,0.5595703125,0.5634765625,0.5693359375,0.5751953125,0.5791015625,0.580078125,0.5791015625,0.5771484375,0.5751953125,0.5732421875,0.5732421875,0.5751953125,0.5771484375,0.5791015625,0.578125,0.5634765625,0.533203125,0.4970703125,0.4638671875,0.4443359375,0.439453125,0.44140625,0.4560546875,0.4853515625,0.5224609375,0.5546875,0.57421875,0.5791015625,0.568359375,0.5126953125,0.4306640625,0.3642578125,0.3447265625,0.376953125,0.439453125,0.509765625,0.576171875,0.619140625,0.625,0.6025390625,0.5771484375,0.5693359375,0.5771484375,0.6142578125,0.6630859375,0.689453125,0.67578125,0.6259765625,0.5595703125,0.4892578125,0.4228515625,0.3798828125,0.3740234375,0.396484375,0.421875,0.4296875,0.4306640625,0.4306640625,0.4296875,0.42578125,0.4228515625,0.419921875,0.419921875,0.43359375,0.494140625,0.583984375,0.65625,0.6787109375,0.6455078125,0.5791015625,0.5,0.40625,0.3408203125,0.341796875,0.408203125,0.5009765625,0.5791015625,0.6552734375,0.7373046875,0.783203125,0.7607421875,0.6748046875,0.5712890625,0.4892578125,0.408203125,0.306640625,0.2255859375,0.2080078125,0.2587890625,0.34375,0.419921875,0.48828125,0.5390625,0.5517578125,0.5224609375,0.470703125,0.4296875,0.419921875,0.412109375,0.380859375,0.345703125,0.3349609375,0.36328125,0.421875,0.4892578125,0.564453125,0.6494140625,0.703125,0.6904296875,0.615234375,0.5185546875,0.439453125,0.361328125,0.2685546875,0.2021484375,0.201171875,0.2666015625,0.3603515625,0.439453125,0.509765625,0.5634765625,0.5771484375,0.5478515625,0.494140625,0.451171875,0.439453125,0.44921875,0.4990234375,0.5673828125,0.6171875,0.6201171875,0.5771484375,0.509765625,0.4296875,0.333984375,0.265625,0.2626953125,0.3271484375,0.419921875,0.5,0.560546875,0.580078125,0.5556640625,0.513671875,0.48828125,0.5078125,0.5693359375,0.646484375,0.7294921875,0.775390625,0.7529296875,0.6689453125,0.568359375,0.4892578125,0.4345703125,0.4345703125,0.4912109375,0.5693359375,0.6220703125,0.6181640625,0.5595703125,0.478515625,0.3798828125,0.302734375,0.2900390625,0.345703125,0.4326171875,0.509765625,0.5791015625,0.6396484375,0.669921875,0.6591796875,0.6220703125,0.5888671875,0.5791015625,0.564453125,0.5029296875,0.4150390625,0.34375,0.322265625,0.35546875,0.419921875,0.48046875,0.5029296875,0.484375,0.4501953125,0.4306640625,0.4501953125,0.509765625,0.568359375,0.5849609375,0.560546875,0.5185546875,0.4931640625,0.5107421875,0.5693359375,0.6240234375,0.6240234375,0.56640625,0.486328125,0.4306640625,0.4326171875,0.4892578125,0.5654296875,0.6494140625,0.69921875,0.6806640625,0.599609375,0.4990234375,0.419921875,0.35546875,0.3232421875,0.345703125,0.41796875,0.505859375,0.5654296875,0.5791015625,0.5888671875,0.6298828125,0.6806640625,0.7080078125,0.693359375,0.6396484375,0.5693359375,0.49609375,0.42578125,0.37890625,0.3701171875,0.3896484375,0.4130859375,0.419921875,0.4296875,0.47265625,0.5283203125,0.5615234375,0.55078125,0.4990234375,0.4296875,0.37109375,0.3671875,0.419921875,0.498046875,0.5546875,0.5546875,0.5,0.4228515625,0.330078125,0.26171875,0.2578125,0.3193359375,0.41015625,0.4892578125,0.568359375,0.6552734375,0.708984375,0.6953125,0.6181640625,0.5185546875,0.439453125,0.3740234375,0.337890625,0.3515625,0.4130859375,0.4912109375,0.546875,0.5595703125,0.56640625,0.5927734375,0.6181640625,0.6162109375,0.576171875,0.5107421875,0.439453125,0.375,0.3388671875,0.353515625,0.416015625,0.494140625,0.548828125,0.5595703125,0.5576171875,0.556640625,0.556640625,0.556640625,0.55859375,0.55859375,0.5595703125,0.5693359375,0.611328125,0.6669921875,0.701171875,0.6923828125,0.6455078125,0.5791015625,0.509765625,0.4423828125,0.3984375,0.390625,0.41015625,0.43359375,0.439453125,0.44921875,0.490234375,0.5419921875,0.572265625,0.55859375,0.5078125,0.439453125,0.37109375,0.3173828125,0.3017578125,0.3271484375,0.3779296875,0.4189453125,0.4296875,0.435546875,0.455078125,0.490234375,0.5302734375,0.5615234375,0.5771484375,0.5791015625,0.5673828125,0.5234375,0.4677734375,0.4345703125,0.447265625,0.5,0.5693359375,0.6279296875,0.6337890625,0.58203125,0.5078125,0.453125,0.4541015625,0.509765625,0.5771484375,0.6328125,0.6572265625,0.6416015625,0.6015625,0.5673828125,0.5595703125,0.5595703125,0.5625,0.56640625,0.572265625,0.576171875,0.5791015625,0.5791015625,0.5869140625,0.6171875,0.6484375,0.6552734375,0.6220703125,0.5595703125,0.4892578125,0.41015625,0.3125,0.2353515625,0.2197265625,0.271484375,0.3544921875,0.4296875,0.5078125,0.6083984375,0.6904296875,0.712890625,0.6669921875,0.5849609375,0.509765625,0.4306640625,0.3369140625,0.267578125,0.26171875,0.322265625,0.412109375,0.4892578125,0.5595703125,0.619140625,0.6484375,0.6396484375,0.60546875,0.5751953125,0.5693359375,0.568359375,0.5546875,0.52734375,0.4931640625,0.462890625,0.4443359375,0.439453125,0.44140625,0.45703125,0.48828125,0.525390625,0.5576171875,0.576171875,0.5791015625,0.5849609375,0.6064453125,0.6240234375,0.6142578125,0.568359375,0.5,0.4296875,0.373046875,0.36328125,0.40234375,0.458984375,0.494140625,0.48046875,0.419921875,0.3525390625,0.31640625,0.3330078125,0.3994140625,0.484375,0.544921875,0.5595703125,0.5498046875,0.5029296875,0.4365234375,0.388671875,0.384765625,0.4248046875,0.4892578125,0.544921875,0.5458984375,0.490234375,0.4130859375,0.359375,0.3623046875,0.419921875,0.4912109375,0.5615234375,0.609375,0.6201171875,0.6005859375,0.5771484375,0.5693359375,0.5546875,0.4970703125,0.4150390625,0.349609375,0.33203125,0.3662109375,0.4296875,0.5068359375,0.599609375,0.66796875,0.671875,0.609375,0.5185546875,0.439453125,0.3603515625,0.2666015625,0.2001953125,0.19921875,0.2626953125,0.353515625,0.4296875,0.49609375,0.546875,0.560546875,0.533203125,0.484375,0.447265625,0.439453125,0.44140625,0.4404296875,0.4375,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.6923828125,0.7080078125,0.654296875,0.568359375,0.4892578125,0.41796875,0.357421875,0.328125,0.33984375,0.3779296875,0.4111328125,0.419921875,0.41015625,0.3720703125,0.3232421875,0.296875,0.3115234375,0.36328125,0.4296875,0.49609375,0.5439453125,0.552734375,0.5205078125,0.4677734375,0.427734375,0.419921875,0.4150390625,0.392578125,0.373046875,0.380859375,0.4267578125,0.49609375,0.5693359375,0.6357421875,0.6728515625,0.6572265625,0.5927734375,0.509765625,0.453125,0.439453125,0.439453125,0.435546875,0.4296875,0.423828125,0.419921875,0.4189453125,0.419921875,0.421875,0.4248046875,0.4287109375,0.431640625,0.4326171875,0.431640625,0.4296875,0.4306640625,0.4443359375,0.4716796875,0.505859375,0.5361328125,0.5546875,0.5595703125,0.5576171875,0.5419921875,0.5107421875,0.4736328125,0.44140625,0.4228515625,0.419921875,0.4140625,0.3935546875,0.3779296875,0.3916015625,0.439453125,0.5087890625,0.5791015625,0.642578125,0.673828125,0.65234375,0.58203125,0.4951171875,0.4345703125,0.419921875,0.4287109375,0.4716796875,0.529296875,0.5654296875,0.5576171875,0.5087890625,0.439453125,0.373046875,0.3388671875,0.3583984375,0.42578125,0.509765625,0.5673828125,0.5791015625,0.5771484375,0.576171875,0.576171875,0.5771484375,0.578125,0.5791015625,0.5791015625,0.5849609375,0.60546875,0.62109375,0.607421875,0.5595703125,0.490234375,0.419921875,0.34375,0.2529296875,0.189453125,0.1904296875,0.2568359375,0.3505859375,0.4296875,0.5107421875,0.6142578125,0.697265625,0.7177734375,0.6689453125,0.5859375,0.509765625,0.4326171875,0.3486328125,0.2978515625,0.3154296875,0.396484375,0.498046875,0.5791015625,0.6494140625,0.7021484375,0.716796875,0.6875,0.6337890625,0.5908203125,0.5791015625,0.56640625,0.515625,0.4482421875,0.400390625,0.3994140625,0.4423828125,0.509765625,0.5888671875,0.6865234375,0.7626953125,0.7763671875,0.7216796875,0.6357421875,0.5595703125,0.4814453125,0.392578125,0.33203125,0.3369140625,0.40625,0.5009765625,0.5791015625,0.6474609375,0.6982421875,0.7119140625,0.681640625,0.6298828125,0.5888671875,0.5791015625,0.587890625,0.62109375,0.6591796875,0.6708984375,0.6416015625,0.5810546875,0.509765625,0.4296875,0.333984375,0.263671875,0.259765625,0.3212890625,0.412109375,0.4892578125,0.546875,0.5498046875,0.49609375,0.4189453125,0.3642578125,0.3642578125,0.419921875,0.4970703125,0.595703125,0.6748046875,0.693359375,0.6455078125,0.5634765625,0.4892578125,0.4306640625,0.412109375,0.4345703125,0.474609375,0.4970703125,0.478515625,0.419921875,0.345703125,0.265625,0.220703125,0.244140625,0.328125,0.4296875,0.509765625,0.5751953125,0.6142578125,0.6064453125,0.552734375,0.48046875,0.4296875,0.419921875,0.4150390625,0.3916015625,0.369140625,0.375,0.41796875,0.486328125,0.5595703125,0.6181640625,0.625,0.576171875,0.50390625,0.4521484375,0.4541015625,0.509765625,0.564453125,0.5625,0.50390625,0.423828125,0.3681640625,0.37109375,0.4296875,0.4912109375,0.5126953125,0.4921875,0.453125,0.4306640625,0.44921875,0.509765625,0.5888671875,0.689453125,0.7685546875,0.78515625,0.7333984375,0.6474609375,0.5693359375,0.49609375,0.423828125,0.3759765625,0.3662109375,0.38671875,0.412109375,0.419921875,0.431640625,0.4755859375,0.533203125,0.5673828125,0.5576171875,0.5078125,0.439453125,0.375,0.33984375,0.3564453125,0.421875,0.505859375,0.564453125,0.5791015625,0.5908203125,0.6328125,0.685546875,0.7138671875,0.7001953125,0.6474609375,0.5791015625,0.5185546875,0.4990234375,0.51953125,0.5556640625,0.57421875,0.5517578125,0.4892578125,0.41015625,0.3173828125,0.2529296875,0.2548828125,0.32421875,0.419921875,0.5,0.5810546875,0.681640625,0.76171875,0.7783203125,0.724609375,0.6376953125,0.5595703125,0.486328125,0.4189453125,0.376953125,0.375,0.40234375,0.4306640625,0.439453125,0.4541015625,0.513671875,0.5966796875,0.6630859375,0.6796875,0.64453125,0.5791015625,0.5078125,0.439453125,0.3955078125,0.388671875,0.4091796875,0.43359375,0.439453125,0.439453125,0.4365234375,0.4326171875,0.4267578125,0.4228515625,0.419921875,0.419921875,0.4296875,0.47265625,0.529296875,0.564453125,0.556640625,0.5078125,0.439453125,0.3740234375,0.337890625,0.3525390625,0.416015625,0.4970703125,0.5546875,0.5693359375,0.5810546875,0.6220703125,0.673828125,0.701171875,0.6845703125,0.6298828125,0.5595703125,0.490234375,0.439453125,0.4296875,0.4638671875,0.5185546875,0.560546875,0.5693359375,0.564453125,0.546875,0.515625,0.4814453125,0.4541015625,0.4404296875,0.439453125,0.431640625,0.3916015625,0.3388671875,0.306640625,0.3154296875,0.36328125,0.4296875,0.48828125,0.5068359375,0.4853515625,0.4482421875,0.427734375,0.44921875,0.509765625,0.576171875,0.619140625,0.6162109375,0.568359375,0.5,0.451171875,0.439453125,0.439453125,0.4384765625,0.4375,0.4365234375,0.4365234375,0.4384765625,0.439453125,0.453125,0.5029296875,0.5703125,0.615234375,0.6142578125,0.568359375,0.5,0.4208984375,0.333984375,0.28125,0.296875,0.376953125,0.478515625,0.5595703125,0.63671875,0.7216796875,0.7734375,0.755859375,0.6767578125,0.5771484375,0.5,0.423828125,0.333984375,0.271484375,0.2734375,0.33984375,0.431640625,0.509765625,0.5751953125,0.6162109375,0.6103515625,0.55859375,0.4892578125,0.439453125,0.4296875,0.4345703125,0.4541015625,0.48828125,0.5263671875,0.55859375,0.576171875,0.5791015625,0.576171875,0.560546875,0.5302734375,0.494140625,0.462890625,0.4443359375,0.439453125,0.451171875,0.5068359375,0.5888671875,0.654296875,0.671875,0.6357421875,0.5693359375,0.509765625,0.4990234375,0.5390625,0.599609375,0.6396484375,0.62890625,0.5693359375,0.49609375,0.427734375,0.384765625,0.37890625,0.4013671875,0.4248046875,0.4296875,0.419921875,0.384765625,0.345703125,0.3330078125,0.3603515625,0.419921875,0.4892578125,0.5498046875,0.5712890625,0.5517578125,0.5166015625,0.4970703125,0.5185546875,0.5791015625,0.6435546875,0.673828125,0.650390625,0.578125,0.490234375,0.431640625,0.419921875,0.4150390625,0.3955078125,0.37890625,0.390625,0.4384765625,0.5078125,0.5791015625,0.6572265625,0.75,0.81640625,0.8173828125,0.751953125,0.6591796875,0.5791015625,0.4990234375,0.40234375,0.3310546875,0.326171875,0.388671875,0.48046875,0.5595703125,0.62890625,0.681640625,0.6943359375,0.6640625,0.611328125,0.5693359375,0.5595703125,0.5595703125,0.5615234375,0.5654296875,0.6435546875,0.662109375,0.611328125,0.5263671875,0.4482421875,0.375,0.3076171875,0.267578125,0.265625,0.2919921875,0.318359375,0.3251953125,0.3193359375,0.296875,0.26953125,0.26171875,0.283203125,0.326171875,0.376953125,0.423828125,0.44921875,0.439453125,0.3994140625,0.3525390625,0.32421875,0.3251953125,0.3330078125,0.3349609375,0.3486328125,0.392578125,0.4638671875,0.546875,0.6220703125,0.6865234375,0.7158203125,0.6865234375,0.60546875,0.5087890625,0.443359375,0.4287109375,0.4248046875,0.40625,0.3759765625,0.34375,0.3232421875,0.318359375,0.3251953125,0.3388671875,0.3583984375,0.3798828125,0.3935546875,0.39453125,0.3876953125,0.376953125,0.3701171875,0.3798828125,0.4130859375,0.4638671875,0.5166015625,0.5537109375,0.5703125,0.57421875,0.552734375,0.5,0.4306640625,0.3681640625,0.3330078125,0.3251953125,0.326171875,0.3388671875,0.37890625,0.44921875,0.5361328125,0.615234375,0.673828125,0.7158203125,0.7177734375,0.6572265625,0.5478515625,0.4306640625,0.3505859375,0.3251953125,0.328125,0.375,0.44921875,0.5107421875,0.5283203125,0.4951171875,0.4287109375,0.3662109375,0.349609375,0.3984375,0.498046875,0.6044921875,0.66796875,0.673828125,0.6630859375,0.6552734375,0.6533203125,0.658203125,0.666015625,0.671875,0.673828125,0.6728515625,0.66015625,0.6201171875,0.5498046875,0.462890625,0.3837890625,0.3251953125,0.267578125,0.1943359375,0.1435546875,0.1484375,0.2109375,0.298828125,0.376953125,0.4599609375,0.5693359375,0.6669921875,0.7080078125,0.6826171875,0.6171875,0.55078125,0.484375,0.4130859375,0.375,0.4033203125,0.4892578125,0.591796875,0.673828125,0.744140625,0.802734375,0.82421875,0.7978515625,0.7431640625,0.693359375,0.673828125,0.65234375,0.59375,0.5185546875,0.46484375,0.45703125,0.4931640625,0.55078125,0.6201171875,0.7021484375,0.763671875,0.7685546875,0.7158203125,0.6376953125,0.5703125,0.50390625,0.4365234375,0.40234375,0.4296875,0.509765625,0.6025390625,0.673828125,0.7333984375,0.7783203125,0.7890625,0.763671875,0.7177734375,0.681640625,0.673828125,0.6806640625,0.70703125,0.7333984375,0.7314453125,0.69140625,0.6240234375,0.55078125,0.470703125,0.3701171875,0.2880859375,0.2646484375,0.306640625,0.380859375,0.4482421875,0.498046875,0.498046875,0.4443359375,0.3642578125,0.30078125,0.287109375,0.3251953125,0.384765625,0.466796875,0.5419921875,0.57421875,0.5537109375,0.501953125,0.4482421875,0.40234375,0.3798828125,0.380859375,0.392578125,0.3935546875,0.37109375,0.3251953125,0.2724609375,0.2275390625,0.22265625,0.27734375,0.376953125,0.4794921875,0.55078125,0.6044921875,0.615234375,0.5693359375,0.478515625,0.384765625,0.3291015625,0.3251953125,0.3310546875,0.3271484375,0.330078125,0.3603515625,0.419921875,0.49609375,0.5703125,0.6318359375,0.65234375,0.6240234375,0.5673828125,0.5185546875,0.51171875,0.55078125,0.5869140625,0.5615234375,0.478515625,0.380859375,0.3173828125,0.318359375,0.376953125,0.4423828125,0.48046875,0.4873046875,0.4765625,0.4736328125,0.4970703125,0.55078125,0.6220703125,0.7177734375,0.7978515625,0.8212890625,0.7783203125,0.6982421875,0.6220703125,0.5439453125,0.44921875,0.3623046875,0.3095703125,0.298828125,0.3125,0.3251953125,0.3466796875,0.40234375,0.4736328125,0.5224609375,0.5263671875,0.4873046875,0.4287109375,0.3740234375,0.3525390625,0.3876953125,0.4736328125,0.576171875,0.6494140625,0.673828125,0.6923828125,0.7353515625,0.783203125,0.8046875,0.78515625,0.734375,0.673828125,0.6181640625,0.587890625,0.580078125,0.576171875,0.55859375,0.5146484375,0.4482421875,0.369140625,0.28125,0.2265625,0.240234375,0.318359375,0.4189453125,0.5,0.5810546875,0.68359375,0.765625,0.7841796875,0.7333984375,0.6484375,0.5703125,0.4951171875,0.419921875,0.3671875,0.3564453125,0.3798828125,0.412109375,0.4287109375,0.453125,0.5263671875,0.6279296875,0.71484375,0.75,0.728515625,0.673828125,0.6083984375,0.533203125,0.4677734375,0.4287109375,0.419921875,0.42578125,0.4287109375,0.4267578125,0.4140625,0.390625,0.36328125,0.3408203125,0.328125,0.3251953125,0.3369140625,0.384765625,0.453125,0.5068359375,0.5185546875,0.486328125,0.4287109375,0.3720703125,0.3447265625,0.369140625,0.44140625,0.5322265625,0.5986328125,0.6220703125,0.640625,0.68359375,0.7275390625,0.7392578125,0.70703125,0.642578125,0.5703125,0.5029296875,0.462890625,0.46875,0.517578125,0.580078125,0.62109375,0.6220703125,0.60546875,0.568359375,0.515625,0.46484375,0.431640625,0.421875,0.4287109375,0.4306640625,0.40234375,0.3544921875,0.3154296875,0.3056640625,0.330078125,0.376953125,0.4228515625,0.4453125,0.447265625,0.4462890625,0.4580078125,0.494140625,0.55078125,0.6083984375,0.6376953125,0.6220703125,0.5634765625,0.4912109375,0.4404296875,0.4287109375,0.427734375,0.421875,0.4140625,0.4091796875,0.4111328125,0.4189453125,0.4287109375,0.451171875,0.5087890625,0.580078125,0.6240234375,0.619140625,0.5693359375,0.5,0.421875,0.3359375,0.28515625,0.3037109375,0.3857421875,0.48828125,0.5703125,0.6455078125,0.71875,0.75390625,0.7265625,0.6484375,0.560546875,0.5,0.4423828125,0.3759765625,0.33203125,0.341796875,0.40234375,0.4833984375,0.55078125,0.60546875,0.623046875,0.587890625,0.51171875,0.4287109375,0.3798828125,0.376953125,0.39453125,0.4375,0.505859375,0.580078125,0.6376953125,0.66796875,0.673828125,0.6689453125,0.6455078125,0.5986328125,0.5380859375,0.482421875,0.4443359375,0.4287109375,0.43359375,0.4912109375,0.5849609375,0.6708984375,0.708984375,0.685546875,0.6220703125,0.5615234375,0.55078125,0.591796875,0.65234375,0.6923828125,0.681640625,0.6220703125,0.5478515625,0.4716796875,0.4111328125,0.3818359375,0.37890625,0.3828125,0.376953125,0.3603515625,0.3251953125,0.2939453125,0.291015625,0.3251953125,0.384765625,0.4482421875,0.50390625,0.541015625,0.556640625,0.564453125,0.580078125,0.6171875,0.673828125,0.7236328125,0.7197265625,0.646484375,0.5234375,0.40234375,0.33203125,0.3251953125,0.3349609375,0.349609375,0.3828125,0.4443359375,0.5263671875,0.607421875,0.673828125,0.7431640625,0.8291015625,0.89453125,0.8984375,0.83984375,0.751953125,0.673828125,0.5908203125,0.484375,0.39453125,0.3671875,0.4111328125,0.4931640625,0.5703125,0.6396484375,0.6923828125,0.705078125,0.6748046875,0.6220703125,0.580078125,0.5703125,0.572265625,0.5849609375,0.6044921875,0.6162109375,0.6240234375,0.5634765625,0.4736328125,0.39453125,0.3212890625,0.2529296875,0.208984375,0.2041015625,0.2265625,0.251953125,0.2587890625,0.2587890625,0.2607421875,0.26953125,0.2900390625,0.31640625,0.3427734375,0.3642578125,0.3759765625,0.3623046875,0.322265625,0.275390625,0.2431640625,0.23828125,0.2587890625,0.283203125,0.306640625,0.341796875,0.3994140625,0.4775390625,0.560546875,0.634765625,0.701171875,0.7333984375,0.708984375,0.6357421875,0.544921875,0.4833984375,0.46875,0.4609375,0.419921875,0.353515625,0.2861328125,0.244140625,0.23828125,0.2587890625,0.291015625,0.337890625,0.3857421875,0.4140625,0.4130859375,0.390625,0.3642578125,0.3388671875,0.32421875,0.3369140625,0.3798828125,0.4423828125,0.4970703125,0.5302734375,0.548828125,0.53515625,0.48046875,0.3974609375,0.3173828125,0.2685546875,0.2587890625,0.267578125,0.314453125,0.408203125,0.52734375,0.6376953125,0.7099609375,0.740234375,0.7509765625,0.7216796875,0.6376953125,0.513671875,0.38671875,0.298828125,0.2587890625,0.248046875,0.2958984375,0.3916015625,0.48828125,0.5419921875,0.5302734375,0.46875,0.4091796875,0.4052734375,0.4716796875,0.5849609375,0.6943359375,0.7490234375,0.740234375,0.71484375,0.6953125,0.6904296875,0.701171875,0.720703125,0.736328125,0.740234375,0.7314453125,0.6845703125,0.5908203125,0.4716796875,0.361328125,0.2890625,0.2587890625,0.2333984375,0.1904296875,0.15625,0.162109375,0.212890625,0.2890625,0.3642578125,0.4453125,0.5537109375,0.654296875,0.70703125,0.6982421875,0.6533203125,0.6044921875,0.5537109375,0.4951171875,0.4638671875,0.48828125,0.5654296875,0.6611328125,0.740234375,0.8134765625,0.880859375,0.9140625,0.89453125,0.8369140625,0.775390625,0.740234375,0.705078125,0.642578125,0.57421875,0.5302734375,0.5283203125,0.5595703125,0.6044921875,0.6533203125,0.7041015625,0.7294921875,0.708984375,0.650390625,0.58203125,0.5302734375,0.484375,0.4501953125,0.455078125,0.5107421875,0.599609375,0.6845703125,0.740234375,0.7841796875,0.8173828125,0.826171875,0.806640625,0.7724609375,0.74609375,0.740234375,0.7470703125,0.7724609375,0.794921875,0.7900390625,0.74609375,0.677734375,0.6044921875,0.5234375,0.4189453125,0.3251953125,0.28125,0.2958984375,0.345703125,0.39453125,0.4326171875,0.4384765625,0.40234375,0.33984375,0.279296875,0.25,0.2587890625,0.283203125,0.32421875,0.3720703125,0.408203125,0.4208984375,0.412109375,0.39453125,0.375,0.3564453125,0.3369140625,0.31640625,0.296875,0.2783203125,0.2587890625,0.2421875,0.244140625,0.2841796875,0.3642578125,0.4638671875,0.5498046875,0.6044921875,0.63671875,0.61328125,0.5244140625,0.40234375,0.296875,0.248046875,0.2587890625,0.28125,0.291015625,0.3037109375,0.3330078125,0.3876953125,0.45703125,0.5302734375,0.5986328125,0.6494140625,0.6650390625,0.646484375,0.61328125,0.5947265625,0.6044921875,0.607421875,0.55078125,0.447265625,0.3447265625,0.2900390625,0.302734375,0.3642578125,0.43359375,0.48828125,0.521484375,0.53515625,0.5439453125,0.564453125,0.6044921875,0.6591796875,0.73828125,0.806640625,0.826171875,0.78515625,0.7099609375,0.634765625,0.552734375,0.439453125,0.322265625,0.2421875,0.216796875,0.232421875,0.2587890625,0.2958984375,0.3671875,0.4521484375,0.5166015625,0.53515625,0.51171875,0.46875,0.427734375,0.412109375,0.4443359375,0.5244140625,0.623046875,0.7021484375,0.740234375,0.7724609375,0.8173828125,0.8564453125,0.8642578125,0.8359375,0.7880859375,0.740234375,0.6982421875,0.6640625,0.6328125,0.5908203125,0.5341796875,0.4658203125,0.39453125,0.3173828125,0.2353515625,0.1923828125,0.220703125,0.310546875,0.4169921875,0.5,0.580078125,0.677734375,0.7509765625,0.7587890625,0.69921875,0.609375,0.5302734375,0.455078125,0.3798828125,0.3330078125,0.3369140625,0.380859375,0.4345703125,0.46875,0.5078125,0.5859375,0.685546875,0.7646484375,0.796875,0.78125,0.740234375,0.689453125,0.6240234375,0.5546875,0.501953125,0.4755859375,0.46875,0.46875,0.4638671875,0.4384765625,0.3916015625,0.3359375,0.2890625,0.263671875,0.2587890625,0.2705078125,0.322265625,0.40234375,0.4775390625,0.515625,0.5087890625,0.46875,0.4248046875,0.396484375,0.40625,0.4580078125,0.533203125,0.599609375,0.634765625,0.66796875,0.716796875,0.7509765625,0.7421875,0.6865234375,0.60546875,0.5302734375,0.4658203125,0.44140625,0.4716796875,0.541015625,0.61328125,0.6484375,0.634765625,0.6015625,0.546875,0.4853515625,0.44140625,0.4287109375,0.443359375,0.46875,0.490234375,0.4853515625,0.4521484375,0.4052734375,0.3662109375,0.3515625,0.3642578125,0.3818359375,0.3984375,0.421875,0.4580078125,0.505859375,0.5576171875,0.6044921875,0.6455078125,0.662109375,0.640625,0.5849609375,0.521484375,0.478515625,0.46875,0.4658203125,0.4501953125,0.4306640625,0.4189453125,0.423828125,0.443359375,0.46875,0.505859375,0.5703125,0.6357421875,0.662109375,0.63671875,0.572265625,0.5,0.4208984375,0.330078125,0.2705078125,0.2783203125,0.3515625,0.44921875,0.5302734375,0.6015625,0.6611328125,0.681640625,0.6513671875,0.587890625,0.5283203125,0.5,0.4775390625,0.4501953125,0.435546875,0.4521484375,0.498046875,0.5556640625,0.6044921875,0.6396484375,0.6279296875,0.5634765625,0.46875,0.38671875,0.3505859375,0.3642578125,0.3984375,0.4638671875,0.5517578125,0.640625,0.705078125,0.7353515625,0.740234375,0.7373046875,0.7197265625,0.6787109375,0.619140625,0.5537109375,0.5009765625,0.46875,0.45703125,0.5,0.5849609375,0.6708984375,0.7138671875,0.697265625,0.634765625,0.5751953125,0.564453125,0.6044921875,0.6650390625,0.705078125,0.6943359375,0.634765625,0.5625,0.4921875,0.4384765625,0.408203125,0.396484375,0.3857421875,0.3642578125,0.3330078125,0.291015625,0.2587890625,0.2587890625,0.2939453125,0.345703125,0.39453125,0.4404296875,0.4892578125,0.541015625,0.59375,0.6455078125,0.6943359375,0.740234375,0.76953125,0.728515625,0.6103515625,0.4521484375,0.31640625,0.2509765625,0.2587890625,0.2890625,0.3408203125,0.4189453125,0.5166015625,0.6123046875,0.6884765625,0.740234375,0.7939453125,0.869140625,0.9306640625,0.9423828125,0.89453125,0.81640625,0.740234375,0.6552734375,0.5361328125,0.421875,0.3662109375,0.38671875,0.455078125,0.5302734375,0.599609375,0.65234375,0.6650390625,0.634765625,0.5810546875,0.5400390625,0.5302734375,0.5361328125,0.564453125,0.607421875,0.6240234375,0.6162109375,0.5419921875,0.4443359375,0.3642578125,0.2919921875,0.2265625,0.189453125,0.1923828125,0.22265625,0.2509765625,0.2587890625,0.2646484375,0.2919921875,0.3369140625,0.3798828125,0.4072265625,0.41015625,0.39453125,0.3662109375,0.3095703125,0.2421875,0.1953125,0.1875,0.2158203125,0.2587890625,0.30078125,0.3349609375,0.3662109375,0.408203125,0.46484375,0.533203125,0.6044921875,0.6728515625,0.7158203125,0.712890625,0.662109375,0.5927734375,0.5419921875,0.5302734375,0.517578125,0.4580078125,0.36328125,0.2734375,0.220703125,0.220703125,0.2587890625,0.3125,0.388671875,0.4609375,0.4970703125,0.484375,0.44140625,0.39453125,0.345703125,0.294921875,0.26953125,0.2900390625,0.3486328125,0.4169921875,0.46875,0.5087890625,0.515625,0.4775390625,0.40234375,0.322265625,0.2705078125,0.2587890625,0.2724609375,0.341796875,0.4638671875,0.5986328125,0.703125,0.7470703125,0.740234375,0.716796875,0.6708984375,0.59375,0.494140625,0.392578125,0.3115234375,0.2587890625,0.2314453125,0.2724609375,0.3779296875,0.4990234375,0.580078125,0.5869140625,0.5302734375,0.4716796875,0.470703125,0.5380859375,0.6435546875,0.7353515625,0.76953125,0.740234375,0.6962890625,0.6630859375,0.654296875,0.673828125,0.70703125,0.7333984375,0.740234375,0.7265625,0.6572265625,0.53515625,0.400390625,0.2958984375,0.251953125,0.2587890625,0.2705078125,0.2587890625,0.2392578125,0.2373046875,0.2666015625,0.32421875,0.39453125,0.4736328125,0.5703125,0.6572265625,0.701171875,0.697265625,0.6650390625,0.634765625,0.6015625,0.5537109375,0.5185546875,0.52734375,0.583984375,0.6640625,0.740234375,0.81640625,0.89453125,0.9423828125,0.9306640625,0.869140625,0.7939453125,0.740234375,0.689453125,0.62890625,0.5771484375,0.5576171875,0.572265625,0.60546875,0.634765625,0.66015625,0.6748046875,0.662109375,0.619140625,0.556640625,0.501953125,0.46875,0.4462890625,0.4443359375,0.48046875,0.5517578125,0.63671875,0.7041015625,0.740234375,0.765625,0.78515625,0.7900390625,0.7783203125,0.7587890625,0.744140625,0.740234375,0.748046875,0.7763671875,0.806640625,0.8095703125,0.7724609375,0.70703125,0.634765625,0.5556640625,0.4541015625,0.361328125,0.30859375,0.306640625,0.3349609375,0.3642578125,0.3896484375,0.4072265625,0.4033203125,0.3720703125,0.3251953125,0.283203125,0.2587890625,0.240234375,0.228515625,0.234375,0.26171875,0.302734375,0.3408203125,0.3642578125,0.376953125,0.3671875,0.3330078125,0.2900390625,0.255859375,0.2451171875,0.2587890625,0.2822265625,0.326171875,0.39453125,0.474609375,0.548828125,0.603515625,0.634765625,0.6455078125,0.5927734375,0.48046875,0.3505859375,0.2548828125,0.2275390625,0.2587890625,0.2978515625,0.314453125,0.31640625,0.3232421875,0.349609375,0.400390625,0.46875,0.5458984375,0.62890625,0.693359375,0.71484375,0.6953125,0.6591796875,0.634765625,0.6005859375,0.5166015625,0.4052734375,0.3193359375,0.29296875,0.3271484375,0.39453125,0.4658203125,0.5322265625,0.580078125,0.6015625,0.6064453125,0.61328125,0.634765625,0.669921875,0.7275390625,0.7783203125,0.7900390625,0.75,0.6787109375,0.6044921875,0.5205078125,0.3994140625,0.275390625,0.1953125,0.1796875,0.212890625,0.2587890625,0.3134765625,0.39453125,0.482421875,0.546875,0.568359375,0.5556640625,0.5302734375,0.5029296875,0.482421875,0.4912109375,0.5380859375,0.61328125,0.6875,0.740234375,0.7880859375,0.8359375,0.8642578125,0.8564453125,0.8173828125,0.7724609375,0.740234375,0.7158203125,0.6923828125,0.6572265625,0.599609375,0.521484375,0.4384765625,0.3642578125,0.287109375,0.2099609375,0.1728515625,0.208984375,0.3056640625,0.4169921875,0.5,0.578125,0.6689453125,0.728515625,0.720703125,0.6474609375,0.5498046875,0.46875,0.39453125,0.3232421875,0.2900390625,0.31640625,0.392578125,0.474609375,0.5302734375,0.58203125,0.65625,0.7314453125,0.779296875,0.787109375,0.767578125,0.740234375,0.7099609375,0.6650390625,0.61328125,0.568359375,0.541015625,0.53125,0.5302734375,0.5234375,0.490234375,0.4306640625,0.3583984375,0.2978515625,0.265625,0.2587890625,0.2685546875,0.3173828125,0.3974609375,0.48046875,0.53515625,0.548828125,0.5302734375,0.5,0.462890625,0.44140625,0.453125,0.4970703125,0.5546875,0.6044921875,0.6552734375,0.7138671875,0.7451171875,0.720703125,0.6435546875,0.548828125,0.46875,0.4091796875,0.3994140625,0.4501953125,0.53515625,0.6103515625,0.6357421875,0.6044921875,0.552734375,0.484375,0.4248046875,0.4052734375,0.4306640625,0.4814453125,0.5302734375,0.5732421875,0.6015625,0.59375,0.546875,0.478515625,0.421875,0.39453125,0.3779296875,0.3779296875,0.408203125,0.46875,0.5419921875,0.6005859375,0.634765625,0.658203125,0.6650390625,0.646484375,0.607421875,0.564453125,0.5361328125,0.5302734375,0.5234375,0.4970703125,0.4638671875,0.4443359375,0.4521484375,0.4853515625,0.5302734375,0.5830078125,0.654296875,0.708984375,0.712890625,0.6591796875,0.576171875,0.5,0.4189453125,0.3212890625,0.248046875,0.240234375,0.2998046875,0.3896484375,0.46875,0.537109375,0.58203125,0.587890625,0.5576171875,0.5146484375,0.490234375,0.5,0.517578125,0.5322265625,0.546875,0.5634765625,0.583984375,0.6083984375,0.634765625,0.6484375,0.6123046875,0.5302734375,0.435546875,0.37109375,0.359375,0.39453125,0.4462890625,0.521484375,0.607421875,0.6796875,0.72265625,0.73828125,0.740234375,0.7412109375,0.7421875,0.7294921875,0.6923828125,0.6376953125,0.5791015625,0.5302734375,0.4970703125,0.5146484375,0.5771484375,0.646484375,0.68359375,0.666015625,0.6044921875,0.544921875,0.5341796875,0.57421875,0.634765625,0.6748046875,0.6640625,0.6044921875,0.5361328125,0.484375,0.4580078125,0.4521484375,0.4501953125,0.43359375,0.39453125,0.345703125,0.2939453125,0.2587890625,0.2587890625,0.291015625,0.3330078125,0.3642578125,0.39453125,0.4443359375,0.513671875,0.5908203125,0.66015625,0.708984375,0.740234375,0.748046875,0.6826171875,0.546875,0.388671875,0.2705078125,0.2294921875,0.2587890625,0.310546875,0.38671875,0.482421875,0.580078125,0.658203125,0.7099609375,0.740234375,0.775390625,0.8369140625,0.89453125,0.9140625,0.880859375,0.8134765625,0.740234375,0.654296875,0.52734375,0.3994140625,0.328125,0.3349609375,0.3955078125,0.46875,0.5390625,0.591796875,0.6044921875,0.57421875,0.5205078125,0.4794921875,0.46875,0.478515625,0.521484375,0.5849609375,0.662109375,0.6435546875,0.5615234375,0.458984375,0.376953125,0.306640625,0.248046875,0.22265625,0.2392578125,0.28125,0.31640625,0.3251953125,0.3359375,0.3798828125,0.4453125,0.4990234375,0.5166015625,0.494140625,0.4482421875,0.38671875,0.298828125,0.216796875,0.1796875,0.2021484375,0.26171875,0.3251953125,0.380859375,0.4111328125,0.4189453125,0.4228515625,0.4404296875,0.484375,0.55078125,0.62109375,0.67578125,0.693359375,0.66796875,0.619140625,0.5791015625,0.5703125,0.5556640625,0.490234375,0.390625,0.2998046875,0.2568359375,0.271484375,0.3251953125,0.396484375,0.4921875,0.576171875,0.6083984375,0.5791015625,0.513671875,0.4482421875,0.37890625,0.296875,0.2353515625,0.23046875,0.283203125,0.361328125,0.4287109375,0.486328125,0.5185546875,0.5068359375,0.453125,0.384765625,0.3369140625,0.3251953125,0.3408203125,0.4130859375,0.5283203125,0.6416015625,0.7099609375,0.71484375,0.673828125,0.6240234375,0.580078125,0.5390625,0.4951171875,0.443359375,0.38671875,0.3251953125,0.28125,0.30859375,0.4052734375,0.525390625,0.6123046875,0.6259765625,0.5703125,0.5107421875,0.5068359375,0.5625,0.646484375,0.7109375,0.720703125,0.673828125,0.61328125,0.5693359375,0.5576171875,0.5830078125,0.62890625,0.6650390625,0.673828125,0.658203125,0.5859375,0.470703125,0.357421875,0.2890625,0.2841796875,0.3251953125,0.3681640625,0.37890625,0.361328125,0.341796875,0.3447265625,0.3818359375,0.4482421875,0.5234375,0.6025390625,0.662109375,0.6826171875,0.666015625,0.6376953125,0.6220703125,0.6025390625,0.5595703125,0.515625,0.50390625,0.5361328125,0.6005859375,0.673828125,0.751953125,0.83984375,0.8984375,0.89453125,0.8291015625,0.7431640625,0.673828125,0.611328125,0.5537109375,0.5234375,0.53125,0.5673828125,0.6044921875,0.6220703125,0.62890625,0.619140625,0.5859375,0.53515625,0.482421875,0.4453125,0.4287109375,0.4228515625,0.439453125,0.484375,0.548828125,0.61328125,0.65625,0.673828125,0.68359375,0.69140625,0.693359375,0.6884765625,0.6806640625,0.6748046875,0.673828125,0.6826171875,0.7177734375,0.759765625,0.7763671875,0.7509765625,0.6923828125,0.6220703125,0.544921875,0.45703125,0.380859375,0.3427734375,0.34375,0.36328125,0.376953125,0.3935546875,0.423828125,0.4521484375,0.4560546875,0.427734375,0.3779296875,0.3251953125,0.2705078125,0.2099609375,0.173828125,0.1875,0.24609375,0.3193359375,0.376953125,0.4189453125,0.419921875,0.3798828125,0.3232421875,0.283203125,0.2841796875,0.3251953125,0.380859375,0.4482421875,0.515625,0.568359375,0.59765625,0.611328125,0.6220703125,0.6162109375,0.552734375,0.4423828125,0.333984375,0.271484375,0.2744140625,0.3251953125,0.3779296875,0.3935546875,0.3740234375,0.345703125,0.3359375,0.365234375,0.4287109375,0.5107421875,0.6162109375,0.7099609375,0.751953125,0.732421875,0.6767578125,0.6220703125,0.55859375,0.4580078125,0.3564453125,0.3017578125,0.314453125,0.375,0.4482421875,0.5205078125,0.587890625,0.6318359375,0.6435546875,0.630859375,0.6171875,0.6220703125,0.6396484375,0.6806640625,0.720703125,0.7275390625,0.69140625,0.6240234375,0.55078125,0.4677734375,0.3525390625,0.2431640625,0.1875,0.2021484375,0.26171875,0.3251953125,0.392578125,0.47265625,0.546875,0.58984375,0.5966796875,0.5830078125,0.5703125,0.5537109375,0.5234375,0.4990234375,0.50390625,0.546875,0.609375,0.673828125,0.734375,0.78515625,0.8046875,0.783203125,0.7353515625,0.6923828125,0.673828125,0.666015625,0.6640625,0.650390625,0.6064453125,0.53515625,0.4521484375,0.376953125,0.30078125,0.220703125,0.181640625,0.2138671875,0.3076171875,0.4169921875,0.5,0.5771484375,0.6630859375,0.7138671875,0.6953125,0.61328125,0.5107421875,0.4287109375,0.353515625,0.283203125,0.255859375,0.296875,0.3935546875,0.4970703125,0.5703125,0.6337890625,0.697265625,0.7392578125,0.7451171875,0.720703125,0.689453125,0.673828125,0.6611328125,0.640625,0.6162109375,0.5927734375,0.5771484375,0.5712890625,0.5703125,0.564453125,0.5341796875,0.48046875,0.416015625,0.361328125,0.3310546875,0.3251953125,0.3330078125,0.3681640625,0.4306640625,0.5,0.552734375,0.57421875,0.5703125,0.55078125,0.505859375,0.453125,0.4267578125,0.4423828125,0.490234375,0.55078125,0.6181640625,0.689453125,0.7275390625,0.69921875,0.61328125,0.509765625,0.4287109375,0.37109375,0.369140625,0.4287109375,0.5166015625,0.5859375,0.59765625,0.55078125,0.4833984375,0.4052734375,0.3525390625,0.357421875,0.4189453125,0.5009765625,0.5703125,0.6337890625,0.693359375,0.7158203125,0.6787109375,0.5966796875,0.5087890625,0.4482421875,0.400390625,0.37890625,0.400390625,0.4638671875,0.5419921875,0.6005859375,0.6220703125,0.630859375,0.6318359375,0.6220703125,0.6044921875,0.5849609375,0.572265625,0.5703125,0.5615234375,0.525390625,0.48046875,0.4541015625,0.4658203125,0.5107421875,0.5703125,0.6376953125,0.7158203125,0.7646484375,0.7509765625,0.67578125,0.5791015625,0.5,0.41796875,0.3154296875,0.2333984375,0.21484375,0.265625,0.3505859375,0.4287109375,0.4931640625,0.5244140625,0.515625,0.482421875,0.4541015625,0.4580078125,0.5,0.55078125,0.5966796875,0.6259765625,0.6318359375,0.623046875,0.6162109375,0.6220703125,0.619140625,0.5703125,0.4873046875,0.4111328125,0.3759765625,0.3935546875,0.4482421875,0.5126953125,0.5849609375,0.646484375,0.6806640625,0.6845703125,0.6767578125,0.673828125,0.6796875,0.7021484375,0.7255859375,0.7236328125,0.689453125,0.6318359375,0.5703125,0.51953125,0.5146484375,0.552734375,0.603515625,0.6318359375,0.61328125,0.55078125,0.4912109375,0.48046875,0.5205078125,0.5810546875,0.6220703125,0.611328125,0.55078125,0.4873046875,0.4580078125,0.4677734375,0.4970703125,0.515625,0.5,0.4482421875,0.384765625,0.3251953125,0.291015625,0.2939453125,0.3251953125,0.3603515625,0.376953125,0.392578125,0.4306640625,0.490234375,0.560546875,0.6201171875,0.658203125,0.673828125,0.6669921875,0.5966796875,0.4755859375,0.3525390625,0.279296875,0.275390625,0.3251953125,0.3916015625,0.47265625,0.5546875,0.6162109375,0.6494140625,0.6640625,0.673828125,0.693359375,0.7431640625,0.7978515625,0.82421875,0.802734375,0.744140625,0.673828125,0.587890625,0.4638671875,0.3427734375,0.2783203125,0.2900390625,0.3544921875,0.4287109375,0.4990234375,0.55078125,0.564453125,0.5341796875,0.48046875,0.439453125,0.4287109375,0.4404296875,0.4912109375,0.5634765625,0.7080078125,0.6923828125,0.6123046875,0.5107421875,0.4296875,0.359375,0.3056640625,0.291015625,0.318359375,0.369140625,0.41015625,0.419921875,0.4306640625,0.4794921875,0.5458984375,0.5927734375,0.595703125,0.5546875,0.4892578125,0.412109375,0.3125,0.232421875,0.212890625,0.26171875,0.34375,0.419921875,0.48046875,0.5,0.4794921875,0.443359375,0.4248046875,0.447265625,0.509765625,0.580078125,0.638671875,0.6630859375,0.646484375,0.603515625,0.568359375,0.5595703125,0.5458984375,0.48828125,0.4052734375,0.3388671875,0.3203125,0.3544921875,0.419921875,0.4990234375,0.599609375,0.6806640625,0.69921875,0.6494140625,0.5654296875,0.4892578125,0.41015625,0.3125,0.236328125,0.22265625,0.27734375,0.36328125,0.439453125,0.5078125,0.556640625,0.564453125,0.529296875,0.47265625,0.4296875,0.419921875,0.4326171875,0.4921875,0.5791015625,0.6494140625,0.6728515625,0.6416015625,0.5791015625,0.5185546875,0.490234375,0.494140625,0.5107421875,0.5126953125,0.482421875,0.419921875,0.365234375,0.3720703125,0.4443359375,0.541015625,0.6103515625,0.6162109375,0.5595703125,0.5,0.490234375,0.5341796875,0.5986328125,0.6435546875,0.63671875,0.5791015625,0.5107421875,0.4599609375,0.447265625,0.4765625,0.5283203125,0.5693359375,0.5791015625,0.56640625,0.5068359375,0.419921875,0.349609375,0.326171875,0.357421875,0.419921875,0.4775390625,0.4951171875,0.4697265625,0.4287109375,0.40625,0.427734375,0.4892578125,0.5615234375,0.6240234375,0.6572265625,0.6484375,0.6123046875,0.5791015625,0.5693359375,0.5576171875,0.5166015625,0.46484375,0.4375,0.4541015625,0.5087890625,0.5791015625,0.6591796875,0.751953125,0.8173828125,0.81640625,0.75,0.6572265625,0.5791015625,0.5107421875,0.45703125,0.4404296875,0.466796875,0.517578125,0.55859375,0.5693359375,0.568359375,0.5546875,0.52734375,0.4931640625,0.462890625,0.4443359375,0.439453125,0.44140625,0.4560546875,0.4853515625,0.5224609375,0.5546875,0.57421875,0.5791015625,0.5810546875,0.58203125,0.58203125,0.58203125,0.580078125,0.5791015625,0.5791015625,0.5888671875,0.6298828125,0.6806640625,0.7080078125,0.693359375,0.6396484375,0.5693359375,0.49609375,0.42578125,0.3798828125,0.373046875,0.3955078125,0.421875,0.4296875,0.4404296875,0.48046875,0.529296875,0.5546875,0.5390625,0.486328125,0.419921875,0.34375,0.255859375,0.1943359375,0.1962890625,0.2626953125,0.353515625,0.4296875,0.486328125,0.4951171875,0.455078125,0.39453125,0.353515625,0.36328125,0.419921875,0.4892578125,0.556640625,0.6015625,0.611328125,0.59375,0.5732421875,0.5693359375,0.5576171875,0.5,0.4150390625,0.3447265625,0.3232421875,0.35546875,0.419921875,0.478515625,0.490234375,0.4541015625,0.3994140625,0.365234375,0.37890625,0.439453125,0.5224609375,0.6298828125,0.72265625,0.755859375,0.71875,0.642578125,0.5693359375,0.4912109375,0.3896484375,0.3056640625,0.283203125,0.330078125,0.412109375,0.4892578125,0.560546875,0.6220703125,0.65234375,0.6416015625,0.6064453125,0.576171875,0.5693359375,0.5791015625,0.615234375,0.6552734375,0.6689453125,0.6416015625,0.5810546875,0.509765625,0.427734375,0.32421875,0.23828125,0.2158203125,0.26171875,0.34375,0.419921875,0.4912109375,0.560546875,0.60546875,0.6142578125,0.5927734375,0.5673828125,0.5595703125,0.548828125,0.5087890625,0.4609375,0.4375,0.4560546875,0.5107421875,0.5791015625,0.6474609375,0.7001953125,0.7138671875,0.685546875,0.6328125,0.5908203125,0.5791015625,0.583984375,0.6064453125,0.6259765625,0.6181640625,0.572265625,0.5029296875,0.4296875,0.3515625,0.265625,0.21484375,0.2333984375,0.3154296875,0.41796875,0.5,0.578125,0.6650390625,0.7177734375,0.7021484375,0.6220703125,0.5205078125,0.439453125,0.36328125,0.2841796875,0.2451171875,0.2783203125,0.37109375,0.478515625,0.5595703125,0.6279296875,0.6826171875,0.701171875,0.677734375,0.6298828125,0.58984375,0.5791015625,0.5771484375,0.5732421875,0.568359375,0.564453125,0.560546875,0.5595703125,0.5595703125,0.5556640625,0.5390625,0.5078125,0.470703125,0.4404296875,0.4228515625,0.419921875,0.4228515625,0.44140625,0.4736328125,0.5107421875,0.5419921875,0.5576171875,0.5595703125,0.546875,0.4990234375,0.435546875,0.392578125,0.396484375,0.4423828125,0.509765625,0.5859375,0.669921875,0.7216796875,0.703125,0.6220703125,0.5205078125,0.439453125,0.380859375,0.3779296875,0.4326171875,0.5107421875,0.5673828125,0.56640625,0.509765625,0.4326171875,0.3466796875,0.29296875,0.3056640625,0.3818359375,0.48046875,0.5595703125,0.6357421875,0.7177734375,0.7666015625,0.7470703125,0.6669921875,0.5673828125,0.4892578125,0.4248046875,0.3837890625,0.3876953125,0.4365234375,0.505859375,0.556640625,0.5693359375,0.5703125,0.5703125,0.568359375,0.5654296875,0.5615234375,0.5595703125,0.5595703125,0.5498046875,0.5087890625,0.45703125,0.4267578125,0.4404296875,0.4912109375,0.5595703125,0.6357421875,0.7216796875,0.7744140625,0.759765625,0.6806640625,0.580078125,0.5,0.41796875,0.3173828125,0.2373046875,0.220703125,0.2744140625,0.361328125,0.439453125,0.5009765625,0.521484375,0.4970703125,0.453125,0.42578125,0.44140625,0.5,0.5673828125,0.625,0.65234375,0.640625,0.60546875,0.5751953125,0.5693359375,0.5595703125,0.509765625,0.4404296875,0.388671875,0.3828125,0.423828125,0.4892578125,0.5595703125,0.6220703125,0.6552734375,0.6484375,0.6171875,0.5869140625,0.5791015625,0.5888671875,0.626953125,0.6748046875,0.69921875,0.681640625,0.6279296875,0.5595703125,0.5,0.484375,0.513671875,0.560546875,0.5888671875,0.5703125,0.509765625,0.44921875,0.439453125,0.4794921875,0.5400390625,0.580078125,0.5693359375,0.509765625,0.44921875,0.4345703125,0.4697265625,0.5244140625,0.560546875,0.5478515625,0.4892578125,0.419921875,0.3603515625,0.3330078125,0.345703125,0.384765625,0.419921875,0.4296875,0.4345703125,0.453125,0.4853515625,0.5234375,0.5556640625,0.57421875,0.5791015625,0.5673828125,0.5087890625,0.4208984375,0.3486328125,0.3251953125,0.35546875,0.419921875,0.4912109375,0.560546875,0.6083984375,0.6201171875,0.603515625,0.583984375,0.5791015625,0.5908203125,0.6337890625,0.6875,0.716796875,0.7021484375,0.6494140625,0.5791015625,0.49609375,0.384765625,0.287109375,0.25,0.2861328125,0.36328125,0.439453125,0.509765625,0.5615234375,0.5751953125,0.544921875,0.4912109375,0.44921875,0.439453125,0.451171875,0.5,0.568359375,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.748046875,0.76953125,0.7236328125,0.6435546875,0.5693359375,0.5029296875,0.4521484375,0.4384765625,0.4658203125,0.5146484375,0.5517578125,0.5595703125,0.5654296875,0.595703125,0.630859375,0.6416015625,0.615234375,0.5576171875,0.4892578125,0.4150390625,0.3349609375,0.2890625,0.310546875,0.3916015625,0.4912109375,0.5693359375,0.625,0.626953125,0.57421875,0.4990234375,0.4482421875,0.4521484375,0.509765625,0.576171875,0.619140625,0.6162109375,0.568359375,0.5,0.451171875,0.439453125,0.4326171875,0.408203125,0.3857421875,0.392578125,0.4365234375,0.505859375,0.5791015625,0.6572265625,0.7421875,0.7919921875,0.7724609375,0.6904296875,0.5888671875,0.509765625,0.4326171875,0.3466796875,0.2939453125,0.3095703125,0.3876953125,0.48828125,0.5693359375,0.638671875,0.6884765625,0.6982421875,0.6650390625,0.609375,0.568359375,0.5595703125,0.5673828125,0.5908203125,0.611328125,0.6025390625,0.5576171875,0.490234375,0.419921875,0.3662109375,0.3740234375,0.4443359375,0.5400390625,0.609375,0.6142578125,0.5595703125,0.4970703125,0.46875,0.4755859375,0.498046875,0.505859375,0.4794921875,0.419921875,0.36328125,0.353515625,0.39453125,0.455078125,0.4951171875,0.486328125,0.4296875,0.3623046875,0.310546875,0.294921875,0.3203125,0.369140625,0.4091796875,0.419921875,0.4150390625,0.392578125,0.3720703125,0.3779296875,0.4208984375,0.48828125,0.5595703125,0.6162109375,0.6201171875,0.568359375,0.4951171875,0.4453125,0.4501953125,0.509765625,0.5771484375,0.62109375,0.619140625,0.5703125,0.501953125,0.451171875,0.439453125,0.4296875,0.38671875,0.330078125,0.294921875,0.3037109375,0.3525390625,0.419921875,0.498046875,0.5927734375,0.662109375,0.6669921875,0.6064453125,0.517578125,0.439453125,0.37109375,0.318359375,0.302734375,0.3271484375,0.375,0.412109375,0.419921875,0.4208984375,0.435546875,0.4658203125,0.501953125,0.53515625,0.5546875,0.5595703125,0.55859375,0.544921875,0.517578125,0.4833984375,0.4521484375,0.4345703125,0.4296875,0.427734375,0.4267578125,0.427734375,0.4306640625,0.4345703125,0.4375,0.439453125,0.4501953125,0.490234375,0.5380859375,0.5615234375,0.54296875,0.48828125,0.419921875,0.35546875,0.3232421875,0.3447265625,0.4150390625,0.5,0.5576171875,0.5693359375,0.5771484375,0.615234375,0.666015625,0.6962890625,0.6845703125,0.6357421875,0.5693359375,0.4921875,0.3994140625,0.3310546875,0.3271484375,0.3896484375,0.48046875,0.5595703125,0.619140625,0.630859375,0.591796875,0.5322265625,0.4912109375,0.5009765625,0.5595703125,0.625,0.6611328125,0.646484375,0.5830078125,0.501953125,0.4443359375,0.4296875,0.421875,0.3974609375,0.3779296875,0.38671875,0.431640625,0.4990234375,0.5693359375,0.6259765625,0.63671875,0.599609375,0.5439453125,0.5078125,0.5205078125,0.5791015625,0.654296875,0.728515625,0.7626953125,0.7255859375,0.6298828125,0.5205078125,0.439453125,0.36328125,0.2802734375,0.23046875,0.2490234375,0.3291015625,0.4296875,0.509765625,0.5751953125,0.6142578125,0.6064453125,0.552734375,0.48046875,0.4296875,0.419921875,0.4326171875,0.484375,0.5537109375,0.6015625,0.6025390625,0.5576171875,0.4892578125,0.4111328125,0.326171875,0.2744140625,0.29296875,0.375,0.4775390625,0.5595703125,0.626953125,0.6650390625,0.6533203125,0.591796875,0.51171875,0.4541015625,0.439453125,0.427734375,0.3837890625,0.328125,0.2958984375,0.3076171875,0.3603515625,0.4296875,0.4990234375,0.55078125,0.5615234375,0.5283203125,0.47265625,0.4296875,0.419921875,0.43359375,0.4931640625,0.5810546875,0.6533203125,0.67578125,0.6435546875,0.5791015625,0.5,0.3994140625,0.3173828125,0.296875,0.34375,0.4248046875,0.5,0.5771484375,0.677734375,0.759765625,0.779296875,0.73046875,0.646484375,0.5693359375,0.486328125,0.375,0.27734375,0.240234375,0.2763671875,0.353515625,0.4296875,0.5,0.5517578125,0.564453125,0.53125,0.4755859375,0.431640625,0.419921875,0.41796875,0.4169921875,0.4169921875,0.4169921875,0.4189453125,0.419921875,0.419921875,0.423828125,0.4423828125,0.478515625,0.5205078125,0.556640625,0.5751953125,0.5791015625,0.576171875,0.55859375,0.5283203125,0.4912109375,0.4599609375,0.443359375,0.439453125,0.431640625,0.3994140625,0.3623046875,0.3515625,0.3798828125,0.439453125,0.509765625,0.5888671875,0.6904296875,0.7724609375,0.7919921875,0.7421875,0.6572265625,0.5791015625,0.517578125,0.4951171875,0.5146484375,0.552734375,0.576171875,0.5576171875,0.5,0.421875,0.3212890625,0.23828125,0.216796875,0.2626953125,0.34375,0.419921875,0.4990234375,0.5986328125,0.677734375,0.6953125,0.646484375,0.564453125,0.4892578125,0.421875,0.36328125,0.3359375,0.3486328125,0.38671875,0.419921875,0.4296875,0.431640625,0.43359375,0.4365234375,0.4384765625,0.439453125,0.439453125,0.439453125,0.4296875,0.38671875,0.3310546875,0.2978515625,0.30859375,0.3603515625,0.4296875,0.5107421875,0.611328125,0.69140625,0.7080078125,0.6572265625,0.57421875,0.5,0.4248046875,0.3427734375,0.2919921875,0.3076171875,0.384765625,0.4814453125,0.5595703125,0.6142578125,0.6162109375,0.5625,0.486328125,0.4326171875,0.4345703125,0.4892578125,0.5546875,0.5986328125,0.6005859375,0.55859375,0.49609375,0.4501953125,0.439453125,0.431640625,0.3994140625,0.3623046875,0.3515625,0.3798828125,0.439453125,0.509765625,0.5751953125,0.6162109375,0.6103515625,0.55859375,0.4892578125,0.439453125,0.4296875,0.44140625,0.482421875,0.5341796875,0.5615234375,0.544921875,0.490234375,0.419921875,0.3623046875,0.361328125,0.419921875,0.50390625,0.564453125,0.5654296875,0.509765625,0.451171875,0.44140625,0.482421875,0.5419921875,0.5810546875,0.5693359375,0.509765625,0.44921875,0.4375,0.4765625,0.537109375,0.5771484375,0.5673828125,0.509765625,0.443359375,0.400390625,0.4013671875,0.4482421875,0.5126953125,0.5595703125,0.5693359375,0.564453125,0.544921875,0.5107421875,0.47265625,0.4404296875,0.4228515625,0.419921875,0.4140625,0.392578125,0.3759765625,0.388671875,0.4365234375,0.5078125,0.5791015625,0.6435546875,0.67578125,0.6533203125,0.5810546875,0.4931640625,0.43359375,0.419921875,0.4296875,0.47265625,0.5283203125,0.5615234375,0.55078125,0.4990234375,0.4296875,0.353515625,0.27734375,0.2421875,0.27734375,0.3720703125,0.4794921875,0.5595703125,0.6259765625,0.6748046875,0.685546875,0.65625,0.60546875,0.5673828125,0.5595703125,0.5693359375,0.603515625,0.6416015625,0.6826171875,0.728515625,0.7197265625,0.673828125,0.6220703125,0.572265625,0.53515625,0.521484375,0.5341796875,0.55859375,0.57421875,0.5703125,0.564453125,0.5712890625,0.580078125,0.57421875,0.544921875,0.4990234375,0.4482421875,0.3955078125,0.349609375,0.3408203125,0.38671875,0.47265625,0.560546875,0.6220703125,0.6611328125,0.654296875,0.6025390625,0.5361328125,0.4931640625,0.5,0.55078125,0.6083984375,0.6376953125,0.6220703125,0.5634765625,0.4912109375,0.4404296875,0.4287109375,0.4248046875,0.4130859375,0.4140625,0.4482421875,0.515625,0.59765625,0.673828125,0.7490234375,0.822265625,0.853515625,0.8173828125,0.724609375,0.6240234375,0.55078125,0.4833984375,0.4052734375,0.3564453125,0.3701171875,0.4453125,0.5419921875,0.6220703125,0.6884765625,0.728515625,0.72265625,0.6748046875,0.611328125,0.5712890625,0.5703125,0.5810546875,0.5888671875,0.57421875,0.52734375,0.455078125,0.3828125,0.3251953125,0.2900390625,0.318359375,0.4091796875,0.521484375,0.6025390625,0.6171875,0.5703125,0.51171875,0.466796875,0.4384765625,0.421875,0.4033203125,0.3720703125,0.3251953125,0.2841796875,0.283203125,0.3232421875,0.3798828125,0.419921875,0.4189453125,0.376953125,0.3251953125,0.275390625,0.2470703125,0.25,0.2783203125,0.3095703125,0.3251953125,0.3330078125,0.3349609375,0.345703125,0.3798828125,0.4375,0.505859375,0.5703125,0.619140625,0.6201171875,0.57421875,0.5126953125,0.4755859375,0.490234375,0.55078125,0.6181640625,0.6552734375,0.6416015625,0.5791015625,0.498046875,0.44140625,0.4287109375,0.41796875,0.3701171875,0.30078125,0.248046875,0.236328125,0.2685546875,0.3251953125,0.396484375,0.4892578125,0.5693359375,0.5966796875,0.5625,0.4951171875,0.4287109375,0.3681640625,0.3173828125,0.2900390625,0.29296875,0.314453125,0.330078125,0.3251953125,0.3193359375,0.3359375,0.380859375,0.4453125,0.509765625,0.552734375,0.5703125,0.5771484375,0.5673828125,0.5341796875,0.4833984375,0.4306640625,0.3935546875,0.376953125,0.3671875,0.359375,0.361328125,0.375,0.396484375,0.416015625,0.4287109375,0.4453125,0.4755859375,0.5,0.4951171875,0.4521484375,0.3896484375,0.3251953125,0.2744140625,0.271484375,0.333984375,0.4423828125,0.552734375,0.6162109375,0.6220703125,0.619140625,0.640625,0.6767578125,0.703125,0.701171875,0.669921875,0.6220703125,0.560546875,0.4755859375,0.4013671875,0.37890625,0.4189453125,0.494140625,0.5703125,0.630859375,0.6484375,0.615234375,0.5595703125,0.517578125,0.5205078125,0.5703125,0.626953125,0.654296875,0.6298828125,0.5576171875,0.466796875,0.400390625,0.376953125,0.3662109375,0.3583984375,0.373046875,0.419921875,0.4921875,0.5654296875,0.6220703125,0.6640625,0.671875,0.6474609375,0.61328125,0.59765625,0.619140625,0.673828125,0.736328125,0.787109375,0.7890625,0.724609375,0.61328125,0.5029296875,0.4287109375,0.36328125,0.2978515625,0.2685546875,0.30078125,0.384765625,0.48046875,0.55078125,0.6044921875,0.615234375,0.5693359375,0.478515625,0.384765625,0.3291015625,0.3251953125,0.3486328125,0.4130859375,0.4951171875,0.5537109375,0.5595703125,0.5166015625,0.4482421875,0.37109375,0.2919921875,0.251953125,0.2841796875,0.37890625,0.4873046875,0.5703125,0.6376953125,0.6796875,0.6689453125,0.60546875,0.5185546875,0.4521484375,0.4287109375,0.408203125,0.3525390625,0.28515625,0.24609375,0.2548828125,0.3076171875,0.376953125,0.4462890625,0.4921875,0.494140625,0.4501953125,0.384765625,0.3369140625,0.3251953125,0.341796875,0.419921875,0.5439453125,0.6611328125,0.7275390625,0.724609375,0.673828125,0.6025390625,0.5068359375,0.4189453125,0.376953125,0.3935546875,0.4453125,0.5,0.5615234375,0.6552734375,0.74609375,0.787109375,0.7626953125,0.6953125,0.6220703125,0.5361328125,0.412109375,0.291015625,0.2265625,0.2392578125,0.3037109375,0.376953125,0.447265625,0.5,0.5087890625,0.4697265625,0.40234375,0.3466796875,0.3251953125,0.3154296875,0.3076171875,0.3056640625,0.310546875,0.318359375,0.32421875,0.3251953125,0.333984375,0.3759765625,0.453125,0.5458984375,0.623046875,0.6650390625,0.673828125,0.66796875,0.6376953125,0.5830078125,0.5185546875,0.46484375,0.4345703125,0.4287109375,0.4228515625,0.40234375,0.3837890625,0.390625,0.4287109375,0.48828125,0.55078125,0.6240234375,0.724609375,0.8173828125,0.853515625,0.822265625,0.7490234375,0.673828125,0.6064453125,0.5625,0.548828125,0.5546875,0.5595703125,0.54296875,0.5,0.4375,0.34375,0.2490234375,0.19921875,0.2099609375,0.2626953125,0.3251953125,0.3955078125,0.484375,0.5615234375,0.5888671875,0.5615234375,0.5029296875,0.4482421875,0.3955078125,0.34375,0.310546875,0.30859375,0.3330078125,0.361328125,0.376953125,0.388671875,0.40234375,0.416015625,0.4248046875,0.4287109375,0.4296875,0.4287109375,0.41796875,0.3701171875,0.3046875,0.2607421875,0.2626953125,0.30859375,0.376953125,0.45703125,0.5537109375,0.6328125,0.65625,0.6201171875,0.556640625,0.5,0.4443359375,0.3857421875,0.3544921875,0.373046875,0.4365234375,0.51171875,0.5703125,0.609375,0.6025390625,0.546875,0.4716796875,0.4150390625,0.408203125,0.4482421875,0.4970703125,0.5322265625,0.537109375,0.5107421875,0.46875,0.4365234375,0.4287109375,0.4228515625,0.40234375,0.3837890625,0.390625,0.4287109375,0.48828125,0.55078125,0.60546875,0.623046875,0.587890625,0.51171875,0.4287109375,0.3798828125,0.376953125,0.396484375,0.439453125,0.4833984375,0.4951171875,0.462890625,0.3984375,0.3251953125,0.26953125,0.2802734375,0.36328125,0.478515625,0.5712890625,0.595703125,0.55078125,0.501953125,0.498046875,0.5400390625,0.5966796875,0.62890625,0.6123046875,0.55078125,0.490234375,0.4736328125,0.505859375,0.5615234375,0.6044921875,0.6005859375,0.55078125,0.494140625,0.46484375,0.4765625,0.525390625,0.5849609375,0.6220703125,0.6220703125,0.6044921875,0.5615234375,0.4931640625,0.4189453125,0.361328125,0.3310546875,0.3251953125,0.3251953125,0.33203125,0.36328125,0.4296875,0.5185546875,0.60546875,0.673828125,0.724609375,0.7275390625,0.6611328125,0.5439453125,0.419921875,0.341796875,0.3251953125,0.3369140625,0.384765625,0.4501953125,0.494140625,0.4921875,0.4462890625,0.376953125,0.3046875,0.24609375,0.23828125,0.2978515625,0.4033203125,0.505859375,0.5703125,0.6181640625,0.6494140625,0.6513671875,0.625,0.5888671875,0.5673828125,0.5703125,0.5869140625,0.6220703125,0.6494140625,0.546875,0.6103515625,0.646484375,0.650390625,0.634765625,0.6181640625,0.6064453125,0.599609375,0.5908203125,0.576171875,0.5556640625,0.5302734375,0.50390625,0.478515625,0.4580078125,0.44140625,0.427734375,0.412109375,0.39453125,0.37890625,0.3828125,0.4189453125,0.482421875,0.5546875,0.6083984375,0.634765625,0.646484375,0.6298828125,0.5927734375,0.5576171875,0.5458984375,0.5634765625,0.6044921875,0.6455078125,0.662109375,0.640625,0.5849609375,0.521484375,0.478515625,0.46875,0.4658203125,0.45703125,0.4638671875,0.5048828125,0.5791015625,0.6640625,0.740234375,0.8134765625,0.875,0.892578125,0.8447265625,0.7529296875,0.662109375,0.6044921875,0.55078125,0.48046875,0.4248046875,0.421875,0.4755859375,0.55859375,0.634765625,0.6982421875,0.72265625,0.693359375,0.6240234375,0.5517578125,0.5166015625,0.5302734375,0.5517578125,0.548828125,0.5078125,0.4326171875,0.349609375,0.287109375,0.2587890625,0.2529296875,0.298828125,0.3896484375,0.48828125,0.5546875,0.5654296875,0.5302734375,0.482421875,0.4267578125,0.3720703125,0.328125,0.2978515625,0.27734375,0.2587890625,0.2451171875,0.255859375,0.2900390625,0.3330078125,0.3671875,0.376953125,0.3642578125,0.33984375,0.2978515625,0.2509765625,0.2197265625,0.2158203125,0.2333984375,0.2587890625,0.2841796875,0.310546875,0.341796875,0.3828125,0.4326171875,0.4833984375,0.5302734375,0.5654296875,0.56640625,0.5380859375,0.5078125,0.50390625,0.5390625,0.6044921875,0.6708984375,0.70703125,0.6904296875,0.6240234375,0.5400390625,0.482421875,0.46875,0.4580078125,0.40625,0.3251953125,0.2509765625,0.2119140625,0.2197265625,0.2587890625,0.314453125,0.3994140625,0.48828125,0.5439453125,0.548828125,0.5146484375,0.46875,0.423828125,0.380859375,0.3447265625,0.3193359375,0.3017578125,0.283203125,0.2587890625,0.236328125,0.234375,0.2705078125,0.341796875,0.4267578125,0.494140625,0.5302734375,0.5556640625,0.5703125,0.5576171875,0.513671875,0.4521484375,0.3974609375,0.3642578125,0.3369140625,0.3154296875,0.314453125,0.341796875,0.3896484375,0.4375,0.46875,0.49609375,0.5166015625,0.5078125,0.4609375,0.3857421875,0.3115234375,0.2587890625,0.2275390625,0.2548828125,0.3505859375,0.48046875,0.5927734375,0.6455078125,0.634765625,0.6123046875,0.603515625,0.61328125,0.6318359375,0.6484375,0.6494140625,0.634765625,0.6044921875,0.5361328125,0.455078125,0.4052734375,0.4091796875,0.4599609375,0.5302734375,0.59375,0.619140625,0.5986328125,0.5498046875,0.50390625,0.49609375,0.5302734375,0.57421875,0.6025390625,0.5927734375,0.541015625,0.4658203125,0.3994140625,0.3642578125,0.341796875,0.3447265625,0.3857421875,0.4609375,0.544921875,0.6064453125,0.634765625,0.6494140625,0.6494140625,0.642578125,0.6435546875,0.6611328125,0.6962890625,0.740234375,0.7841796875,0.810546875,0.7919921875,0.720703125,0.6181640625,0.525390625,0.46875,0.421875,0.37890625,0.3671875,0.40234375,0.4755859375,0.55078125,0.6044921875,0.63671875,0.61328125,0.5244140625,0.40234375,0.296875,0.248046875,0.2587890625,0.2978515625,0.375,0.4638671875,0.5185546875,0.515625,0.46484375,0.39453125,0.3173828125,0.240234375,0.2041015625,0.2392578125,0.3359375,0.447265625,0.5302734375,0.6015625,0.662109375,0.681640625,0.646484375,0.57421875,0.505859375,0.46875,0.4306640625,0.357421875,0.275390625,0.228515625,0.23828125,0.29296875,0.3642578125,0.431640625,0.470703125,0.4609375,0.40234375,0.326171875,0.271484375,0.2587890625,0.2763671875,0.361328125,0.501953125,0.6484375,0.748046875,0.7734375,0.740234375,0.6875,0.6142578125,0.5380859375,0.4853515625,0.4697265625,0.48046875,0.5,0.53125,0.603515625,0.6904296875,0.748046875,0.7509765625,0.7041015625,0.634765625,0.548828125,0.421875,0.294921875,0.2236328125,0.2294921875,0.291015625,0.3642578125,0.4345703125,0.490234375,0.4990234375,0.4521484375,0.37109375,0.296875,0.2587890625,0.2333984375,0.2138671875,0.208984375,0.220703125,0.240234375,0.2548828125,0.2587890625,0.2705078125,0.328125,0.435546875,0.5634765625,0.6708984375,0.728515625,0.740234375,0.7333984375,0.701171875,0.640625,0.568359375,0.5087890625,0.4755859375,0.46875,0.4658203125,0.4560546875,0.4521484375,0.46875,0.5078125,0.5576171875,0.6044921875,0.662109375,0.7529296875,0.8447265625,0.892578125,0.875,0.8134765625,0.740234375,0.6669921875,0.5966796875,0.5439453125,0.5185546875,0.5146484375,0.513671875,0.5,0.46875,0.3994140625,0.30859375,0.234375,0.203125,0.2177734375,0.2587890625,0.30859375,0.369140625,0.421875,0.447265625,0.439453125,0.416015625,0.39453125,0.3720703125,0.3388671875,0.30859375,0.2978515625,0.3095703125,0.3369140625,0.3642578125,0.392578125,0.423828125,0.4521484375,0.46875,0.47265625,0.470703125,0.46875,0.45703125,0.40234375,0.3251953125,0.267578125,0.2568359375,0.296875,0.3642578125,0.439453125,0.51953125,0.5771484375,0.5908203125,0.5634765625,0.5244140625,0.5,0.4794921875,0.4580078125,0.447265625,0.455078125,0.4794921875,0.5078125,0.5302734375,0.54296875,0.529296875,0.48828125,0.4365234375,0.3955078125,0.3818359375,0.39453125,0.4150390625,0.4375,0.4580078125,0.4697265625,0.4716796875,0.4697265625,0.46875,0.4658203125,0.4560546875,0.4521484375,0.46875,0.5078125,0.5576171875,0.6044921875,0.6396484375,0.6279296875,0.5634765625,0.46875,0.38671875,0.3505859375,0.3642578125,0.3974609375,0.4453125,0.48046875,0.4716796875,0.4150390625,0.3349609375,0.2587890625,0.203125,0.2197265625,0.3173828125,0.4580078125,0.580078125,0.630859375,0.6044921875,0.5703125,0.5791015625,0.6240234375,0.673828125,0.6943359375,0.66796875,0.6044921875,0.541015625,0.5146484375,0.53515625,0.5849609375,0.6298828125,0.638671875,0.6044921875,0.564453125,0.55078125,0.568359375,0.607421875,0.642578125,0.6533203125,0.634765625,0.6005859375,0.53515625,0.447265625,0.3583984375,0.2939453125,0.263671875,0.2587890625,0.263671875,0.2958984375,0.369140625,0.4775390625,0.5927734375,0.6845703125,0.740234375,0.7734375,0.748046875,0.6484375,0.501953125,0.361328125,0.2763671875,0.2587890625,0.271484375,0.326171875,0.40234375,0.4609375,0.470703125,0.431640625,0.3642578125,0.2958984375,0.251953125,0.26171875,0.328125,0.421875,0.498046875,0.5302734375,0.544921875,0.54296875,0.52734375,0.5078125,0.4990234375,0.5068359375,0.5302734375,0.5625,0.6064453125,0.634765625,0.388671875,0.4521484375,0.5234375,0.578125,0.6044921875,0.6259765625,0.650390625,0.6572265625,0.6328125,0.580078125,0.51953125,0.46875,0.419921875,0.36328125,0.3173828125,0.30078125,0.314453125,0.341796875,0.3642578125,0.390625,0.4443359375,0.5166015625,0.580078125,0.6162109375,0.6201171875,0.6044921875,0.5830078125,0.5576171875,0.541015625,0.5458984375,0.572265625,0.6064453125,0.634765625,0.658203125,0.6650390625,0.646484375,0.607421875,0.564453125,0.5361328125,0.5302734375,0.5244140625,0.5087890625,0.501953125,0.52734375,0.587890625,0.6650390625,0.740234375,0.8115234375,0.8662109375,0.8759765625,0.828125,0.7470703125,0.6728515625,0.634765625,0.5986328125,0.5341796875,0.46875,0.44140625,0.4677734375,0.5322265625,0.6044921875,0.6650390625,0.6748046875,0.6240234375,0.5380859375,0.462890625,0.4384765625,0.46875,0.505859375,0.501953125,0.44921875,0.3671875,0.2900390625,0.251953125,0.2587890625,0.2861328125,0.3408203125,0.4111328125,0.4697265625,0.4970703125,0.4921875,0.46875,0.435546875,0.3798828125,0.314453125,0.26171875,0.23828125,0.2421875,0.2587890625,0.2783203125,0.296875,0.31640625,0.3369140625,0.3564453125,0.375,0.39453125,0.4033203125,0.3740234375,0.3134765625,0.2509765625,0.21484375,0.220703125,0.2587890625,0.3046875,0.34765625,0.3828125,0.408203125,0.4267578125,0.4453125,0.46875,0.48828125,0.486328125,0.474609375,0.4775390625,0.5078125,0.5654296875,0.634765625,0.7021484375,0.7421875,0.7314453125,0.673828125,0.5966796875,0.5419921875,0.5302734375,0.51953125,0.4716796875,0.3916015625,0.30859375,0.2529296875,0.2392578125,0.2587890625,0.294921875,0.3623046875,0.447265625,0.5185546875,0.5546875,0.552734375,0.5302734375,0.50390625,0.478515625,0.447265625,0.4052734375,0.3564453125,0.3056640625,0.2587890625,0.2138671875,0.1796875,0.1845703125,0.240234375,0.3291015625,0.4140625,0.46875,0.517578125,0.568359375,0.59375,0.57421875,0.5146484375,0.4462890625,0.39453125,0.3466796875,0.3037109375,0.2919921875,0.328125,0.400390625,0.4765625,0.5302734375,0.5712890625,0.5869140625,0.5546875,0.474609375,0.3759765625,0.296875,0.2587890625,0.248046875,0.296875,0.40234375,0.5244140625,0.61328125,0.63671875,0.6044921875,0.5576171875,0.513671875,0.4912109375,0.501953125,0.5400390625,0.580078125,0.6044921875,0.6103515625,0.5654296875,0.4853515625,0.4111328125,0.3798828125,0.4052734375,0.46875,0.53515625,0.572265625,0.56640625,0.5244140625,0.4755859375,0.453125,0.46875,0.4990234375,0.5361328125,0.5576171875,0.5458984375,0.501953125,0.4443359375,0.39453125,0.357421875,0.361328125,0.4140625,0.4970703125,0.57421875,0.6123046875,0.6044921875,0.5859375,0.5732421875,0.580078125,0.6123046875,0.662109375,0.708984375,0.740234375,0.7646484375,0.7734375,0.7509765625,0.6953125,0.6240234375,0.564453125,0.5302734375,0.5029296875,0.4814453125,0.48046875,0.5078125,0.5556640625,0.603515625,0.634765625,0.6455078125,0.5927734375,0.48046875,0.3505859375,0.2548828125,0.2275390625,0.2587890625,0.3154296875,0.4033203125,0.48828125,0.52734375,0.50390625,0.4375,0.3642578125,0.287109375,0.205078125,0.162109375,0.189453125,0.2802734375,0.38671875,0.46875,0.546875,0.6328125,0.693359375,0.6982421875,0.650390625,0.58203125,0.5302734375,0.47265625,0.380859375,0.2890625,0.2421875,0.2587890625,0.3212890625,0.39453125,0.4609375,0.4970703125,0.48046875,0.4140625,0.330078125,0.2724609375,0.2587890625,0.2734375,0.34765625,0.474609375,0.61328125,0.7158203125,0.7548828125,0.740234375,0.7119140625,0.673828125,0.6298828125,0.5849609375,0.5478515625,0.51953125,0.5,0.4931640625,0.5341796875,0.607421875,0.673828125,0.6982421875,0.6689453125,0.6044921875,0.51953125,0.400390625,0.287109375,0.2314453125,0.2509765625,0.3193359375,0.39453125,0.4677734375,0.529296875,0.546875,0.5,0.4072265625,0.31640625,0.2587890625,0.21484375,0.181640625,0.1728515625,0.1923828125,0.2265625,0.2529296875,0.2587890625,0.2705078125,0.328125,0.435546875,0.5634765625,0.6708984375,0.728515625,0.740234375,0.7353515625,0.7099609375,0.6630859375,0.607421875,0.560546875,0.53515625,0.5302734375,0.5283203125,0.5263671875,0.5302734375,0.546875,0.5751953125,0.6064453125,0.634765625,0.6728515625,0.7470703125,0.828125,0.8759765625,0.8662109375,0.8115234375,0.740234375,0.662109375,0.5693359375,0.48828125,0.447265625,0.4501953125,0.4765625,0.5,0.5087890625,0.4775390625,0.408203125,0.3251953125,0.2626953125,0.2412109375,0.2587890625,0.2841796875,0.3056640625,0.3193359375,0.328125,0.3359375,0.3466796875,0.3642578125,0.376953125,0.3681640625,0.3447265625,0.3251953125,0.326171875,0.3525390625,0.39453125,0.44140625,0.4912109375,0.5302734375,0.546875,0.54296875,0.533203125,0.5302734375,0.5166015625,0.458984375,0.375,0.30859375,0.2919921875,0.328125,0.39453125,0.4638671875,0.5185546875,0.541015625,0.5302734375,0.50390625,0.48828125,0.5,0.51953125,0.541015625,0.5517578125,0.5439453125,0.51953125,0.4912109375,0.46875,0.451171875,0.435546875,0.4228515625,0.4111328125,0.3974609375,0.3818359375,0.3642578125,0.349609375,0.35546875,0.3896484375,0.44140625,0.4921875,0.5234375,0.5302734375,0.5283203125,0.5263671875,0.5302734375,0.546875,0.5751953125,0.6064453125,0.634765625,0.6484375,0.6123046875,0.5302734375,0.435546875,0.37109375,0.359375,0.39453125,0.4453125,0.50390625,0.53515625,0.5107421875,0.43359375,0.337890625,0.2587890625,0.201171875,0.2099609375,0.30078125,0.44140625,0.57421875,0.6416015625,0.634765625,0.619140625,0.6416015625,0.6904296875,0.7314453125,0.73828125,0.701171875,0.634765625,0.5693359375,0.5322265625,0.5380859375,0.580078125,0.6279296875,0.650390625,0.634765625,0.615234375,0.6181640625,0.640625,0.6630859375,0.6669921875,0.6455078125,0.6044921875,0.552734375,0.4775390625,0.3916015625,0.3193359375,0.2763671875,0.2607421875,0.2587890625,0.2666015625,0.3095703125,0.3974609375,0.513671875,0.6259765625,0.703125,0.740234375,0.7548828125,0.7158203125,0.61328125,0.474609375,0.34765625,0.2734375,0.2587890625,0.2724609375,0.330078125,0.4140625,0.48046875,0.4970703125,0.4609375,0.39453125,0.3291015625,0.296875,0.314453125,0.3720703125,0.4384765625,0.4755859375,0.46875,0.4443359375,0.404296875,0.3671875,0.35546875,0.3779296875,0.4228515625,0.46875,0.5205078125,0.5830078125,0.62109375,0.2705078125,0.31640625,0.40234375,0.490234375,0.55078125,0.6064453125,0.6640625,0.6923828125,0.6640625,0.587890625,0.4990234375,0.4287109375,0.361328125,0.2802734375,0.2197265625,0.2099609375,0.25390625,0.3203125,0.376953125,0.4384765625,0.5263671875,0.6123046875,0.658203125,0.6494140625,0.603515625,0.55078125,0.501953125,0.466796875,0.4658203125,0.501953125,0.556640625,0.6025390625,0.6220703125,0.630859375,0.6318359375,0.6220703125,0.6044921875,0.5849609375,0.572265625,0.5703125,0.5625,0.533203125,0.5029296875,0.5,0.5361328125,0.6015625,0.673828125,0.7431640625,0.7958984375,0.8046875,0.765625,0.6982421875,0.642578125,0.6220703125,0.599609375,0.5419921875,0.470703125,0.4267578125,0.431640625,0.4814453125,0.55078125,0.609375,0.611328125,0.5517578125,0.462890625,0.3935546875,0.3818359375,0.4287109375,0.4794921875,0.4814453125,0.4326171875,0.357421875,0.2978515625,0.287109375,0.3251953125,0.37890625,0.4345703125,0.4755859375,0.4853515625,0.46875,0.443359375,0.4287109375,0.4091796875,0.359375,0.296875,0.251953125,0.24609375,0.27734375,0.3251953125,0.37109375,0.3935546875,0.392578125,0.380859375,0.3798828125,0.40234375,0.4482421875,0.486328125,0.47265625,0.4091796875,0.3291015625,0.275390625,0.2763671875,0.3251953125,0.38671875,0.4375,0.4638671875,0.4609375,0.4404296875,0.4248046875,0.4287109375,0.43359375,0.4228515625,0.4140625,0.4306640625,0.4794921875,0.548828125,0.6220703125,0.6904296875,0.736328125,0.73828125,0.6943359375,0.62890625,0.5810546875,0.5703125,0.5625,0.52734375,0.46484375,0.3955078125,0.34375,0.3212890625,0.3251953125,0.3427734375,0.3857421875,0.4501953125,0.5146484375,0.5595703125,0.576171875,0.5703125,0.5625,0.5615234375,0.55078125,0.5166015625,0.4580078125,0.3896484375,0.3251953125,0.259765625,0.1923828125,0.158203125,0.185546875,0.265625,0.3583984375,0.4287109375,0.498046875,0.580078125,0.6416015625,0.646484375,0.59375,0.515625,0.4482421875,0.3828125,0.31640625,0.287109375,0.3193359375,0.4033203125,0.4990234375,0.5703125,0.625,0.646484375,0.611328125,0.525390625,0.4228515625,0.349609375,0.3251953125,0.3291015625,0.384765625,0.478515625,0.5693359375,0.615234375,0.6044921875,0.55078125,0.484375,0.41015625,0.3603515625,0.365234375,0.419921875,0.4931640625,0.55078125,0.587890625,0.568359375,0.4970703125,0.4130859375,0.361328125,0.369140625,0.4287109375,0.4970703125,0.5439453125,0.548828125,0.5146484375,0.462890625,0.4287109375,0.4287109375,0.4482421875,0.4931640625,0.5458984375,0.572265625,0.556640625,0.5087890625,0.4482421875,0.3974609375,0.39453125,0.4443359375,0.51953125,0.5791015625,0.58984375,0.55078125,0.5029296875,0.474609375,0.484375,0.5341796875,0.6015625,0.6533203125,0.673828125,0.6826171875,0.68359375,0.669921875,0.642578125,0.6103515625,0.583984375,0.5703125,0.5595703125,0.552734375,0.5546875,0.568359375,0.5888671875,0.609375,0.6220703125,0.6162109375,0.552734375,0.4423828125,0.333984375,0.271484375,0.2744140625,0.3251953125,0.396484375,0.4892578125,0.5654296875,0.583984375,0.5361328125,0.4541015625,0.376953125,0.298828125,0.2109375,0.15625,0.1689453125,0.248046875,0.34765625,0.4287109375,0.5107421875,0.6162109375,0.7060546875,0.7392578125,0.7060546875,0.63671875,0.5703125,0.4970703125,0.396484375,0.3037109375,0.267578125,0.298828125,0.3720703125,0.4482421875,0.5146484375,0.552734375,0.5380859375,0.4755859375,0.39453125,0.3388671875,0.3251953125,0.3349609375,0.3837890625,0.46875,0.5654296875,0.640625,0.67578125,0.673828125,0.666015625,0.6669921875,0.6640625,0.64453125,0.6044921875,0.5517578125,0.5,0.4609375,0.4716796875,0.52734375,0.5927734375,0.62890625,0.6123046875,0.55078125,0.46875,0.3623046875,0.2724609375,0.2451171875,0.2890625,0.3701171875,0.4482421875,0.5234375,0.5966796875,0.6279296875,0.591796875,0.5,0.3984375,0.3251953125,0.265625,0.220703125,0.2099609375,0.2353515625,0.28125,0.3173828125,0.3251953125,0.333984375,0.3759765625,0.453125,0.5458984375,0.623046875,0.6650390625,0.673828125,0.6708984375,0.658203125,0.6357421875,0.6083984375,0.5849609375,0.572265625,0.5703125,0.5693359375,0.5703125,0.57421875,0.5830078125,0.5966796875,0.6103515625,0.6220703125,0.642578125,0.6982421875,0.765625,0.8046875,0.7958984375,0.7431640625,0.673828125,0.5927734375,0.4892578125,0.3994140625,0.3623046875,0.3857421875,0.4443359375,0.5,0.5439453125,0.5537109375,0.5166015625,0.4443359375,0.3701171875,0.3271484375,0.3251953125,0.330078125,0.314453125,0.2900390625,0.27734375,0.2900390625,0.328125,0.376953125,0.419921875,0.4296875,0.4091796875,0.380859375,0.3701171875,0.3935546875,0.4482421875,0.5107421875,0.5703125,0.6083984375,0.615234375,0.5966796875,0.576171875,0.5703125,0.5576171875,0.5009765625,0.419921875,0.357421875,0.34375,0.380859375,0.4482421875,0.51171875,0.541015625,0.52734375,0.4892578125,0.45703125,0.458984375,0.5,0.5546875,0.61328125,0.64453125,0.6259765625,0.5625,0.4873046875,0.4287109375,0.3857421875,0.37109375,0.388671875,0.41796875,0.4345703125,0.4208984375,0.376953125,0.33203125,0.318359375,0.3515625,0.4248046875,0.505859375,0.55859375,0.5703125,0.5693359375,0.5703125,0.57421875,0.5830078125,0.5966796875,0.6103515625,0.6220703125,0.619140625,0.5703125,0.4873046875,0.4111328125,0.3759765625,0.3935546875,0.4482421875,0.5146484375,0.5859375,0.6240234375,0.595703125,0.509765625,0.4072265625,0.3251953125,0.2646484375,0.25390625,0.314453125,0.427734375,0.544921875,0.615234375,0.6220703125,0.62109375,0.6552734375,0.70703125,0.7421875,0.736328125,0.6904296875,0.6220703125,0.5537109375,0.5068359375,0.5009765625,0.5361328125,0.587890625,0.6220703125,0.6220703125,0.6181640625,0.6376953125,0.666015625,0.677734375,0.658203125,0.611328125,0.55078125,0.486328125,0.4140625,0.3525390625,0.318359375,0.314453125,0.322265625,0.3251953125,0.33203125,0.3681640625,0.4384765625,0.525390625,0.60546875,0.6552734375,0.673828125,0.67578125,0.640625,0.5654296875,0.46875,0.3837890625,0.3349609375,0.3251953125,0.3388671875,0.39453125,0.4755859375,0.5380859375,0.552734375,0.5146484375,0.4482421875,0.384765625,0.359375,0.3798828125,0.4267578125,0.466796875,0.46875,0.4287109375,0.37109375,0.2978515625,0.2431640625,0.23828125,0.2880859375,0.3623046875,0.4287109375,0.4970703125,0.578125,0.630859375,0.2294921875,0.2509765625,0.33203125,0.431640625,0.509765625,0.583984375,0.666015625,0.7158203125,0.6982421875,0.6181640625,0.5185546875,0.439453125,0.3623046875,0.26953125,0.203125,0.201171875,0.2646484375,0.353515625,0.4296875,0.5078125,0.607421875,0.6884765625,0.7099609375,0.6640625,0.583984375,0.509765625,0.4443359375,0.400390625,0.3994140625,0.4443359375,0.5087890625,0.556640625,0.5693359375,0.5703125,0.5703125,0.568359375,0.5654296875,0.5615234375,0.5595703125,0.5595703125,0.5498046875,0.5107421875,0.4619140625,0.4365234375,0.4541015625,0.5087890625,0.5791015625,0.6494140625,0.701171875,0.7138671875,0.681640625,0.625,0.5810546875,0.5693359375,0.556640625,0.505859375,0.439453125,0.3935546875,0.39453125,0.4404296875,0.509765625,0.568359375,0.5712890625,0.5166015625,0.4384765625,0.3818359375,0.3828125,0.439453125,0.498046875,0.5068359375,0.46484375,0.400390625,0.3564453125,0.36328125,0.419921875,0.4873046875,0.5400390625,0.55859375,0.5361328125,0.4892578125,0.4501953125,0.439453125,0.427734375,0.384765625,0.3291015625,0.2958984375,0.3046875,0.353515625,0.419921875,0.478515625,0.4970703125,0.474609375,0.4345703125,0.412109375,0.4306640625,0.4892578125,0.544921875,0.5458984375,0.490234375,0.4130859375,0.359375,0.3623046875,0.419921875,0.48828125,0.541015625,0.556640625,0.5322265625,0.484375,0.447265625,0.439453125,0.4345703125,0.4091796875,0.3857421875,0.388671875,0.4296875,0.4970703125,0.5693359375,0.638671875,0.6904296875,0.701171875,0.66796875,0.6123046875,0.5693359375,0.5595703125,0.5556640625,0.5380859375,0.505859375,0.4677734375,0.4375,0.421875,0.419921875,0.4248046875,0.4443359375,0.4765625,0.513671875,0.54296875,0.5576171875,0.5595703125,0.564453125,0.5869140625,0.607421875,0.6005859375,0.55859375,0.4912109375,0.419921875,0.3427734375,0.2529296875,0.1923828125,0.197265625,0.2666015625,0.361328125,0.439453125,0.5185546875,0.6171875,0.693359375,0.7060546875,0.65234375,0.56640625,0.4892578125,0.4130859375,0.330078125,0.2802734375,0.298828125,0.37890625,0.4794921875,0.5595703125,0.6240234375,0.6591796875,0.642578125,0.5771484375,0.4931640625,0.4345703125,0.419921875,0.4296875,0.48046875,0.552734375,0.6064453125,0.6142578125,0.5751953125,0.509765625,0.431640625,0.3408203125,0.27734375,0.27734375,0.3427734375,0.43359375,0.509765625,0.564453125,0.564453125,0.5078125,0.4296875,0.376953125,0.380859375,0.439453125,0.5087890625,0.560546875,0.572265625,0.5419921875,0.48828125,0.4482421875,0.439453125,0.4521484375,0.5,0.5634765625,0.6064453125,0.6025390625,0.556640625,0.4892578125,0.431640625,0.421875,0.46484375,0.5283203125,0.572265625,0.5654296875,0.509765625,0.4443359375,0.40234375,0.4033203125,0.4501953125,0.5166015625,0.56640625,0.5791015625,0.5810546875,0.580078125,0.5771484375,0.572265625,0.56640625,0.5615234375,0.5595703125,0.5576171875,0.556640625,0.5576171875,0.5595703125,0.5634765625,0.5673828125,0.5693359375,0.5576171875,0.5,0.4150390625,0.3447265625,0.3232421875,0.35546875,0.419921875,0.498046875,0.591796875,0.6611328125,0.6640625,0.6005859375,0.5087890625,0.4296875,0.3505859375,0.2568359375,0.1923828125,0.1953125,0.2646484375,0.359375,0.439453125,0.5224609375,0.6298828125,0.7216796875,0.7529296875,0.712890625,0.634765625,0.5595703125,0.4794921875,0.3779296875,0.2958984375,0.27734375,0.3271484375,0.412109375,0.4892578125,0.5576171875,0.6015625,0.599609375,0.55078125,0.4814453125,0.431640625,0.419921875,0.423828125,0.4443359375,0.48046875,0.5234375,0.55859375,0.5771484375,0.5791015625,0.5849609375,0.6142578125,0.6474609375,0.6552734375,0.6259765625,0.5673828125,0.5,0.443359375,0.4365234375,0.4794921875,0.541015625,0.5810546875,0.5693359375,0.509765625,0.4296875,0.3330078125,0.26171875,0.255859375,0.318359375,0.41015625,0.4892578125,0.5673828125,0.65234375,0.7021484375,0.6826171875,0.6005859375,0.5,0.419921875,0.3515625,0.30078125,0.287109375,0.3173828125,0.369140625,0.41015625,0.419921875,0.423828125,0.4423828125,0.478515625,0.5205078125,0.556640625,0.5751953125,0.5791015625,0.5791015625,0.576171875,0.572265625,0.56640625,0.5625,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.560546875,0.5625,0.5654296875,0.5673828125,0.5693359375,0.5810546875,0.625,0.681640625,0.7138671875,0.701171875,0.6494140625,0.5791015625,0.498046875,0.396484375,0.314453125,0.294921875,0.3427734375,0.4248046875,0.5,0.5634765625,0.603515625,0.5966796875,0.5458984375,0.4775390625,0.4296875,0.419921875,0.412109375,0.375,0.326171875,0.2998046875,0.3134765625,0.36328125,0.4296875,0.48828125,0.5048828125,0.478515625,0.435546875,0.4111328125,0.4296875,0.4892578125,0.5595703125,0.619140625,0.6474609375,0.63671875,0.599609375,0.5673828125,0.5595703125,0.5478515625,0.4970703125,0.4287109375,0.3798828125,0.3779296875,0.421875,0.4892578125,0.5498046875,0.5634765625,0.5283203125,0.4716796875,0.43359375,0.4423828125,0.5,0.57421875,0.65625,0.70703125,0.69140625,0.6142578125,0.517578125,0.439453125,0.3828125,0.37109375,0.4072265625,0.4619140625,0.498046875,0.4873046875,0.4296875,0.3662109375,0.33203125,0.3486328125,0.4111328125,0.4912109375,0.546875,0.5595703125,0.5595703125,0.5595703125,0.560546875,0.5625,0.5654296875,0.5673828125,0.5693359375,0.5595703125,0.509765625,0.4404296875,0.388671875,0.3828125,0.423828125,0.4892578125,0.56640625,0.650390625,0.701171875,0.68359375,0.6025390625,0.5009765625,0.419921875,0.353515625,0.3203125,0.341796875,0.412109375,0.4990234375,0.5576171875,0.5693359375,0.5771484375,0.6181640625,0.6708984375,0.7021484375,0.6904296875,0.638671875,0.5693359375,0.5,0.4482421875,0.4365234375,0.4677734375,0.5205078125,0.560546875,0.5693359375,0.576171875,0.6083984375,0.646484375,0.6611328125,0.63671875,0.5791015625,0.509765625,0.439453125,0.376953125,0.34375,0.3505859375,0.3818359375,0.412109375,0.419921875,0.4228515625,0.44140625,0.4755859375,0.517578125,0.5537109375,0.57421875,0.5791015625,0.5771484375,0.55859375,0.5234375,0.48046875,0.4443359375,0.423828125,0.419921875,0.431640625,0.4814453125,0.55078125,0.599609375,0.6015625,0.5576171875,0.4892578125,0.427734375,0.4091796875,0.435546875,0.482421875,0.51171875,0.4970703125,0.439453125,0.36328125,0.2724609375,0.2080078125,0.20703125,0.271484375,0.3623046875,0.439453125,0.517578125,0.609375,0.673828125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.2998046875,0.2783203125,0.3271484375,0.412109375,0.4892578125,0.5712890625,0.6748046875,0.7607421875,0.783203125,0.7373046875,0.6552734375,0.5791015625,0.5009765625,0.4072265625,0.337890625,0.3349609375,0.3984375,0.490234375,0.5693359375,0.6474609375,0.734375,0.7880859375,0.7724609375,0.6923828125,0.5908203125,0.509765625,0.4384765625,0.376953125,0.3466796875,0.357421875,0.392578125,0.4228515625,0.4296875,0.427734375,0.4267578125,0.42578125,0.423828125,0.4228515625,0.421875,0.419921875,0.408203125,0.3662109375,0.3134765625,0.28515625,0.298828125,0.3515625,0.419921875,0.48828125,0.5419921875,0.5595703125,0.53515625,0.4873046875,0.44921875,0.439453125,0.4306640625,0.396484375,0.35546875,0.3388671875,0.36328125,0.419921875,0.4892578125,0.5498046875,0.5693359375,0.546875,0.5068359375,0.4833984375,0.5009765625,0.5595703125,0.6171875,0.6298828125,0.595703125,0.54296875,0.5087890625,0.521484375,0.5791015625,0.6455078125,0.6943359375,0.703125,0.669921875,0.6142578125,0.5712890625,0.5595703125,0.5478515625,0.505859375,0.453125,0.4248046875,0.4384765625,0.4912109375,0.5595703125,0.6162109375,0.6181640625,0.5634765625,0.4853515625,0.4306640625,0.4326171875,0.4892578125,0.5498046875,0.5673828125,0.5419921875,0.5009765625,0.4775390625,0.498046875,0.5595703125,0.62890625,0.681640625,0.6943359375,0.6640625,0.611328125,0.5693359375,0.5595703125,0.546875,0.4912109375,0.4111328125,0.3486328125,0.33203125,0.3662109375,0.4296875,0.49609375,0.5458984375,0.5576171875,0.5263671875,0.4736328125,0.4306640625,0.419921875,0.421875,0.4375,0.46875,0.5087890625,0.5439453125,0.5634765625,0.5693359375,0.568359375,0.5537109375,0.5244140625,0.490234375,0.4599609375,0.443359375,0.439453125,0.453125,0.5107421875,0.59375,0.66015625,0.6787109375,0.64453125,0.5791015625,0.5009765625,0.4072265625,0.337890625,0.3349609375,0.3984375,0.490234375,0.5693359375,0.6474609375,0.7333984375,0.7841796875,0.765625,0.68359375,0.5810546875,0.5,0.41796875,0.3154296875,0.2333984375,0.21484375,0.265625,0.3515625,0.4296875,0.5029296875,0.5732421875,0.619140625,0.6259765625,0.603515625,0.5771484375,0.5693359375,0.5751953125,0.6044921875,0.63671875,0.6455078125,0.6162109375,0.5576171875,0.4892578125,0.4140625,0.3251953125,0.263671875,0.2666015625,0.33203125,0.4228515625,0.5,0.5576171875,0.5751953125,0.55078125,0.5087890625,0.4833984375,0.5009765625,0.5595703125,0.6259765625,0.6767578125,0.6904296875,0.6630859375,0.611328125,0.5703125,0.5595703125,0.56640625,0.599609375,0.640625,0.6572265625,0.634765625,0.578125,0.509765625,0.4501953125,0.4375,0.47265625,0.5263671875,0.5615234375,0.548828125,0.4892578125,0.419921875,0.3623046875,0.337890625,0.3525390625,0.390625,0.4228515625,0.4296875,0.4287109375,0.4296875,0.4326171875,0.4365234375,0.439453125,0.4404296875,0.439453125,0.4384765625,0.4365234375,0.435546875,0.4345703125,0.4326171875,0.431640625,0.4296875,0.421875,0.3974609375,0.3779296875,0.38671875,0.431640625,0.4990234375,0.5693359375,0.6455078125,0.7353515625,0.798828125,0.798828125,0.7353515625,0.6455078125,0.5693359375,0.4931640625,0.40234375,0.3359375,0.333984375,0.39453125,0.4833984375,0.5595703125,0.6318359375,0.7060546875,0.7412109375,0.70703125,0.6142578125,0.5087890625,0.4296875,0.35546875,0.2734375,0.224609375,0.244140625,0.326171875,0.4287109375,0.509765625,0.5810546875,0.642578125,0.6728515625,0.662109375,0.6240234375,0.5888671875,0.5791015625,0.57421875,0.5537109375,0.517578125,0.4755859375,0.44140625,0.4228515625,0.419921875,0.431640625,0.4833984375,0.5546875,0.60546875,0.6103515625,0.5673828125,0.5,0.439453125,0.4296875,0.470703125,0.533203125,0.576171875,0.5673828125,0.509765625,0.4306640625,0.3369140625,0.2685546875,0.2646484375,0.328125,0.419921875,0.5,0.5810546875,0.68359375,0.7666015625,0.787109375,0.73828125,0.6552734375,0.5791015625,0.5107421875,0.4599609375,0.447265625,0.4765625,0.5283203125,0.5693359375,0.5791015625,0.5751953125,0.556640625,0.521484375,0.4814453125,0.4482421875,0.431640625,0.4296875,0.4306640625,0.431640625,0.4306640625,0.4287109375,0.427734375,0.4287109375,0.4296875,0.431640625,0.43359375,0.435546875,0.435546875,0.43359375,0.431640625,0.4296875,0.4384765625,0.478515625,0.53125,0.5625,0.55078125,0.4990234375,0.4296875,0.3515625,0.2666015625,0.2158203125,0.2333984375,0.3125,0.412109375,0.4892578125,0.55859375,0.619140625,0.6513671875,0.646484375,0.615234375,0.5869140625,0.5791015625,0.568359375,0.5244140625,0.466796875,0.431640625,0.4404296875,0.490234375,0.5595703125,0.6181640625,0.6240234375,0.57421875,0.5009765625,0.44921875,0.4521484375,0.509765625,0.576171875,0.6171875,0.61328125,0.564453125,0.4970703125,0.44921875,0.439453125,0.4326171875,0.400390625,0.361328125,0.3447265625,0.3671875,0.421875,0.4892578125,0.5458984375,0.5556640625,0.517578125,0.4609375,0.4248046875,0.439453125,0.5,0.5810546875,0.68359375,0.7666015625,0.787109375,0.73828125,0.6552734375,0.5791015625,0.5205078125,0.509765625,0.548828125,0.60546875,0.642578125,0.6298828125,0.5693359375,0.49609375,0.4287109375,0.3857421875,0.3818359375,0.4072265625,0.4326171875,0.439453125,0.439453125,0.435546875,0.4296875,0.423828125,0.419921875,0.4189453125,0.419921875,0.4130859375,0.3837890625,0.3505859375,0.34375,0.3759765625,0.4375,0.509765625,0.5908203125,0.6923828125,0.7724609375,0.7880859375,0.734375,0.6474609375,0.5693359375,0.49609375,0.4287109375,0.3857421875,0.3818359375,0.4072265625,0.4326171875,0.439453125,0.44921875,0.4873046875,0.53515625,0.5595703125,0.5419921875,0.48828125,0.419921875,0.3515625,0.30078125,0.287109375,0.3173828125,0.369140625,0.41015625,0.419921875,0.4306640625,0.48046875,0.5498046875,0.599609375,0.6044921875,0.564453125,0.5,0.4345703125,0.39453125,0.3994140625,0.44921875,0.5185546875,0.568359375,0.5791015625,0.576171875,0.5576171875,0.5234375,0.4814453125,0.4453125,0.4248046875,0.419921875,0.4208984375,0.435546875,0.4658203125,0.501953125,0.53515625,0.5546875,0.5595703125,0.5693359375,0.60546875,0.646484375,0.662109375,0.6376953125,0.5791015625,0.509765625,0.453125,0.451171875,0.505859375,0.5830078125,0.6376953125,0.6357421875,0.5791015625,0.5009765625,0.4072265625,0.337890625,0.3349609375,0.3984375,0.490234375,0.5693359375,0.6484375,0.740234375,0.8037109375,0.3173828125,0.271484375,0.298828125,0.3720703125,0.4482421875,0.53125,0.646484375,0.755859375,0.8115234375,0.796875,0.7373046875,0.673828125,0.6025390625,0.509765625,0.43359375,0.4150390625,0.462890625,0.544921875,0.6220703125,0.7001953125,0.78515625,0.8359375,0.8173828125,0.7353515625,0.6328125,0.55078125,0.478515625,0.4111328125,0.3671875,0.35546875,0.3681640625,0.3818359375,0.376953125,0.3671875,0.359375,0.353515625,0.3486328125,0.34375,0.3359375,0.3251953125,0.306640625,0.263671875,0.2158203125,0.1943359375,0.2138671875,0.2646484375,0.3251953125,0.3876953125,0.4453125,0.4794921875,0.48046875,0.4580078125,0.435546875,0.4287109375,0.4208984375,0.3876953125,0.345703125,0.3251953125,0.3408203125,0.3876953125,0.4482421875,0.5029296875,0.533203125,0.5341796875,0.5185546875,0.509765625,0.5263671875,0.5703125,0.615234375,0.634765625,0.6298828125,0.6142578125,0.6083984375,0.62890625,0.673828125,0.7216796875,0.7529296875,0.7470703125,0.7021484375,0.6396484375,0.58984375,0.5703125,0.5517578125,0.5078125,0.4609375,0.4384765625,0.4580078125,0.5087890625,0.5703125,0.6181640625,0.6123046875,0.55078125,0.466796875,0.4052734375,0.3994140625,0.4482421875,0.5,0.5185546875,0.50390625,0.4794921875,0.474609375,0.505859375,0.5703125,0.6396484375,0.6923828125,0.705078125,0.6748046875,0.6220703125,0.580078125,0.5703125,0.55859375,0.505859375,0.4248046875,0.3515625,0.318359375,0.33203125,0.376953125,0.4267578125,0.4638671875,0.4697265625,0.4384765625,0.3876953125,0.34375,0.3251953125,0.3212890625,0.34375,0.3994140625,0.4775390625,0.5537109375,0.603515625,0.6220703125,0.626953125,0.611328125,0.5703125,0.5146484375,0.46484375,0.4345703125,0.4287109375,0.443359375,0.5087890625,0.6083984375,0.69921875,0.7421875,0.7275390625,0.673828125,0.6025390625,0.509765625,0.43359375,0.4150390625,0.462890625,0.544921875,0.6220703125,0.6982421875,0.7783203125,0.8173828125,0.78515625,0.69140625,0.58203125,0.5,0.4169921875,0.3076171875,0.2138671875,0.181640625,0.220703125,0.30078125,0.376953125,0.4541015625,0.5419921875,0.6181640625,0.65625,0.6552734375,0.6357421875,0.6220703125,0.6142578125,0.615234375,0.61328125,0.5927734375,0.552734375,0.5,0.4482421875,0.392578125,0.33203125,0.2958984375,0.3095703125,0.3681640625,0.44140625,0.5,0.5439453125,0.5595703125,0.546875,0.5224609375,0.509765625,0.5263671875,0.5703125,0.62109375,0.6640625,0.681640625,0.6640625,0.6240234375,0.5869140625,0.5703125,0.568359375,0.59375,0.6337890625,0.6591796875,0.6513671875,0.609375,0.55078125,0.498046875,0.4755859375,0.4873046875,0.51171875,0.5234375,0.5009765625,0.4482421875,0.3876953125,0.3408203125,0.3212890625,0.3330078125,0.361328125,0.380859375,0.376953125,0.3701171875,0.375,0.3916015625,0.4140625,0.431640625,0.4365234375,0.4287109375,0.4189453125,0.4111328125,0.4052734375,0.400390625,0.39453125,0.38671875,0.376953125,0.3662109375,0.3583984375,0.373046875,0.419921875,0.4921875,0.5654296875,0.6220703125,0.6787109375,0.7451171875,0.79296875,0.79296875,0.7451171875,0.6787109375,0.6220703125,0.5634765625,0.490234375,0.431640625,0.41796875,0.4541015625,0.5146484375,0.5703125,0.6220703125,0.666015625,0.669921875,0.619140625,0.5283203125,0.4384765625,0.376953125,0.322265625,0.263671875,0.240234375,0.27734375,0.3671875,0.470703125,0.55078125,0.625,0.6982421875,0.7470703125,0.7529296875,0.724609375,0.6904296875,0.673828125,0.6552734375,0.60546875,0.525390625,0.4384765625,0.3681640625,0.33203125,0.3251953125,0.33984375,0.40234375,0.4951171875,0.5712890625,0.5966796875,0.5654296875,0.5,0.439453125,0.4287109375,0.47265625,0.54296875,0.5966796875,0.599609375,0.55078125,0.48046875,0.3876953125,0.3115234375,0.29296875,0.3408203125,0.4228515625,0.5,0.58203125,0.69140625,0.7890625,0.830078125,0.8046875,0.7392578125,0.673828125,0.61328125,0.5693359375,0.5576171875,0.5830078125,0.62890625,0.6650390625,0.673828125,0.6650390625,0.623046875,0.548828125,0.466796875,0.40234375,0.3740234375,0.376953125,0.3857421875,0.3876953125,0.3818359375,0.373046875,0.3671875,0.369140625,0.376953125,0.388671875,0.40234375,0.412109375,0.412109375,0.40234375,0.388671875,0.376953125,0.376953125,0.4111328125,0.462890625,0.498046875,0.4921875,0.4453125,0.376953125,0.3017578125,0.228515625,0.193359375,0.220703125,0.298828125,0.38671875,0.4482421875,0.5029296875,0.5673828125,0.626953125,0.6650390625,0.677734375,0.6748046875,0.673828125,0.6611328125,0.6064453125,0.5302734375,0.47265625,0.462890625,0.5029296875,0.5703125,0.630859375,0.6455078125,0.6083984375,0.5478515625,0.5009765625,0.501953125,0.55078125,0.6064453125,0.630859375,0.6064453125,0.5439453125,0.4736328125,0.4306640625,0.4287109375,0.4326171875,0.4130859375,0.380859375,0.359375,0.3662109375,0.3994140625,0.4482421875,0.48828125,0.490234375,0.4580078125,0.419921875,0.40625,0.435546875,0.5,0.58203125,0.69140625,0.7890625,0.830078125,0.8046875,0.7392578125,0.673828125,0.6220703125,0.61328125,0.6435546875,0.6865234375,0.70703125,0.6845703125,0.6220703125,0.5478515625,0.4716796875,0.4150390625,0.39453125,0.4052734375,0.423828125,0.4287109375,0.4248046875,0.40625,0.3759765625,0.34375,0.3232421875,0.318359375,0.3251953125,0.3310546875,0.32421875,0.3232421875,0.34765625,0.404296875,0.4775390625,0.55078125,0.6328125,0.7353515625,0.8173828125,0.8359375,0.78515625,0.7001953125,0.6220703125,0.5478515625,0.4716796875,0.4150390625,0.39453125,0.4052734375,0.423828125,0.4287109375,0.435546875,0.4580078125,0.48046875,0.4794921875,0.4453125,0.3876953125,0.3251953125,0.265625,0.220703125,0.2099609375,0.2353515625,0.28125,0.3173828125,0.3251953125,0.3369140625,0.3876953125,0.4638671875,0.5322265625,0.5615234375,0.544921875,0.5,0.4541015625,0.4375,0.466796875,0.53515625,0.611328125,0.662109375,0.673828125,0.6669921875,0.630859375,0.560546875,0.4736328125,0.3935546875,0.34375,0.3251953125,0.3193359375,0.3359375,0.380859375,0.4453125,0.509765625,0.552734375,0.5703125,0.587890625,0.62890625,0.6728515625,0.689453125,0.666015625,0.6123046875,0.55078125,0.5029296875,0.5087890625,0.5703125,0.654296875,0.7158203125,0.7216796875,0.673828125,0.6025390625,0.509765625,0.43359375,0.4150390625,0.462890625,0.544921875,0.6220703125,0.69921875,0.7802734375,0.828125,0.3056640625,0.2421875,0.2548828125,0.3203125,0.39453125,0.478515625,0.599609375,0.7236328125,0.8037109375,0.8193359375,0.7861328125,0.740234375,0.68359375,0.595703125,0.5107421875,0.4716796875,0.4951171875,0.5615234375,0.634765625,0.7138671875,0.8046875,0.8642578125,0.8564453125,0.783203125,0.685546875,0.6044921875,0.533203125,0.466796875,0.4189453125,0.3974609375,0.392578125,0.3857421875,0.3642578125,0.33984375,0.3232421875,0.314453125,0.30859375,0.2998046875,0.283203125,0.2587890625,0.2265625,0.181640625,0.142578125,0.134765625,0.1630859375,0.2109375,0.2587890625,0.3076171875,0.3662109375,0.421875,0.4580078125,0.4716796875,0.470703125,0.46875,0.4609375,0.42578125,0.375,0.3359375,0.328125,0.3515625,0.39453125,0.439453125,0.4775390625,0.501953125,0.5107421875,0.5107421875,0.5146484375,0.5302734375,0.55078125,0.5791015625,0.615234375,0.654296875,0.69140625,0.7197265625,0.740234375,0.7568359375,0.7607421875,0.7373046875,0.6845703125,0.619140625,0.5634765625,0.5302734375,0.498046875,0.4521484375,0.4140625,0.4052734375,0.43359375,0.482421875,0.5302734375,0.564453125,0.5546875,0.4990234375,0.4248046875,0.369140625,0.359375,0.39453125,0.431640625,0.439453125,0.4248046875,0.4111328125,0.4208984375,0.462890625,0.5302734375,0.599609375,0.65234375,0.6650390625,0.634765625,0.5810546875,0.5400390625,0.5302734375,0.5234375,0.4921875,0.44140625,0.3896484375,0.35546875,0.349609375,0.3642578125,0.3837890625,0.400390625,0.3994140625,0.375,0.3330078125,0.2900390625,0.2587890625,0.23828125,0.2490234375,0.30859375,0.408203125,0.5166015625,0.5966796875,0.634765625,0.6572265625,0.65625,0.6240234375,0.568359375,0.51171875,0.4765625,0.46875,0.4814453125,0.541015625,0.6357421875,0.7255859375,0.7783203125,0.7783203125,0.740234375,0.68359375,0.595703125,0.5107421875,0.4716796875,0.4951171875,0.5615234375,0.634765625,0.7119140625,0.7890625,0.826171875,0.7900390625,0.693359375,0.58203125,0.5,0.4169921875,0.3056640625,0.208984375,0.1728515625,0.2099609375,0.287109375,0.3642578125,0.443359375,0.544921875,0.6376953125,0.6904296875,0.6923828125,0.6640625,0.634765625,0.6064453125,0.5693359375,0.5244140625,0.48046875,0.4423828125,0.4150390625,0.39453125,0.3759765625,0.36328125,0.369140625,0.3974609375,0.4384765625,0.4755859375,0.5,0.515625,0.5224609375,0.5185546875,0.5107421875,0.5068359375,0.513671875,0.5302734375,0.5517578125,0.5810546875,0.6044921875,0.607421875,0.5888671875,0.55859375,0.5302734375,0.5126953125,0.5283203125,0.57421875,0.6240234375,0.65234375,0.6435546875,0.6044921875,0.5615234375,0.529296875,0.5078125,0.4912109375,0.4697265625,0.4375,0.39453125,0.353515625,0.33203125,0.3359375,0.3583984375,0.380859375,0.3837890625,0.3642578125,0.3447265625,0.353515625,0.3916015625,0.44140625,0.4794921875,0.48828125,0.46875,0.4443359375,0.427734375,0.4189453125,0.4140625,0.4052734375,0.388671875,0.3642578125,0.341796875,0.3447265625,0.3857421875,0.4609375,0.544921875,0.6064453125,0.634765625,0.65625,0.6806640625,0.6982421875,0.6982421875,0.6806640625,0.65625,0.634765625,0.611328125,0.57421875,0.533203125,0.5048828125,0.4990234375,0.51171875,0.5302734375,0.546875,0.5517578125,0.5322265625,0.48828125,0.43359375,0.388671875,0.3642578125,0.3408203125,0.314453125,0.3115234375,0.3525390625,0.43359375,0.5263671875,0.6044921875,0.681640625,0.765625,0.828125,0.8447265625,0.8173828125,0.7724609375,0.740234375,0.703125,0.6259765625,0.513671875,0.3974609375,0.3095703125,0.2666015625,0.2587890625,0.2744140625,0.345703125,0.4521484375,0.546875,0.5869140625,0.5634765625,0.5,0.4384765625,0.4248046875,0.46875,0.546875,0.615234375,0.63671875,0.6044921875,0.5478515625,0.4609375,0.375,0.3359375,0.3603515625,0.42578125,0.5,0.5810546875,0.689453125,0.7900390625,0.8427734375,0.833984375,0.7880859375,0.740234375,0.6962890625,0.6630859375,0.654296875,0.673828125,0.70703125,0.7333984375,0.740234375,0.7275390625,0.6669921875,0.5634765625,0.4521484375,0.373046875,0.3466796875,0.3642578125,0.3857421875,0.3896484375,0.375,0.3525390625,0.337890625,0.341796875,0.3642578125,0.3935546875,0.427734375,0.4521484375,0.4521484375,0.427734375,0.3935546875,0.3642578125,0.3486328125,0.37109375,0.4189453125,0.4609375,0.466796875,0.4296875,0.3642578125,0.2919921875,0.232421875,0.2119140625,0.2421875,0.3056640625,0.365234375,0.39453125,0.4208984375,0.4765625,0.5576171875,0.640625,0.7041015625,0.734375,0.740234375,0.7255859375,0.658203125,0.5576171875,0.4716796875,0.4384765625,0.46484375,0.5302734375,0.5947265625,0.6298828125,0.6259765625,0.5966796875,0.568359375,0.568359375,0.6044921875,0.6416015625,0.6435546875,0.6015625,0.53515625,0.4765625,0.453125,0.46875,0.490234375,0.4892578125,0.4638671875,0.4248046875,0.3916015625,0.3818359375,0.39453125,0.4052734375,0.390625,0.36328125,0.353515625,0.3759765625,0.4296875,0.5,0.5810546875,0.689453125,0.7900390625,0.8427734375,0.833984375,0.7880859375,0.740234375,0.703125,0.69921875,0.720703125,0.7421875,0.7392578125,0.701171875,0.634765625,0.5615234375,0.4892578125,0.4384765625,0.4248046875,0.44140625,0.462890625,0.46875,0.4609375,0.419921875,0.353515625,0.2861328125,0.244140625,0.23828125,0.2587890625,0.2822265625,0.3017578125,0.3310546875,0.380859375,0.451171875,0.5302734375,0.6044921875,0.685546875,0.783203125,0.8564453125,0.8642578125,0.8046875,0.7138671875,0.634765625,0.5615234375,0.4892578125,0.4384765625,0.4248046875,0.44140625,0.462890625,0.46875,0.470703125,0.4716796875,0.4580078125,0.421875,0.3662109375,0.3076171875,0.2587890625,0.21484375,0.181640625,0.1728515625,0.1923828125,0.2265625,0.2529296875,0.2587890625,0.267578125,0.3076171875,0.375,0.447265625,0.4970703125,0.5126953125,0.5,0.486328125,0.501953125,0.5517578125,0.6240234375,0.69140625,0.7314453125,0.740234375,0.732421875,0.689453125,0.6015625,0.4853515625,0.373046875,0.2958984375,0.2587890625,0.236328125,0.234375,0.2705078125,0.341796875,0.4267578125,0.494140625,0.5302734375,0.5634765625,0.6181640625,0.673828125,0.701171875,0.6904296875,0.650390625,0.6044921875,0.5703125,0.580078125,0.6357421875,0.708984375,0.7646484375,0.7744140625,0.740234375,0.68359375,0.595703125,0.5107421875,0.4716796875,0.4951171875,0.5615234375,0.634765625,0.708984375,0.7744140625,0.7978515625,0.275390625,0.2119140625,0.224609375,0.2900390625,0.3642578125,0.4462890625,0.5595703125,0.6767578125,0.7568359375,0.7822265625,0.7666015625,0.740234375,0.701171875,0.6240234375,0.53515625,0.48046875,0.4833984375,0.5341796875,0.6044921875,0.685546875,0.783203125,0.8564453125,0.8642578125,0.8046875,0.7138671875,0.634765625,0.5654296875,0.5107421875,0.4775390625,0.4638671875,0.455078125,0.4345703125,0.39453125,0.353515625,0.330078125,0.3251953125,0.328125,0.3232421875,0.2998046875,0.2587890625,0.2109375,0.1630859375,0.134765625,0.142578125,0.181640625,0.2265625,0.2587890625,0.291015625,0.3427734375,0.408203125,0.46875,0.509765625,0.52734375,0.5302734375,0.5224609375,0.4873046875,0.4306640625,0.375,0.3427734375,0.341796875,0.3642578125,0.39453125,0.4375,0.48046875,0.5048828125,0.5048828125,0.4892578125,0.46875,0.4599609375,0.4892578125,0.560546875,0.6484375,0.7197265625,0.75,0.740234375,0.7216796875,0.701171875,0.6708984375,0.626953125,0.572265625,0.5166015625,0.46875,0.421875,0.373046875,0.3447265625,0.3525390625,0.3916015625,0.4375,0.46875,0.48828125,0.4794921875,0.44140625,0.3916015625,0.353515625,0.3447265625,0.3642578125,0.3818359375,0.3720703125,0.34765625,0.333984375,0.3505859375,0.400390625,0.46875,0.5390625,0.591796875,0.6044921875,0.57421875,0.5205078125,0.4794921875,0.46875,0.4697265625,0.4716796875,0.4697265625,0.4580078125,0.4375,0.4150390625,0.39453125,0.37890625,0.375,0.375,0.3662109375,0.341796875,0.3037109375,0.2587890625,0.216796875,0.19921875,0.234375,0.3251953125,0.4443359375,0.5458984375,0.6044921875,0.6474609375,0.6708984375,0.6630859375,0.6240234375,0.5732421875,0.5380859375,0.5302734375,0.5380859375,0.5791015625,0.6455078125,0.712890625,0.7548828125,0.7607421875,0.740234375,0.701171875,0.6240234375,0.53515625,0.48046875,0.4833984375,0.5341796875,0.6044921875,0.681640625,0.763671875,0.806640625,0.7783203125,0.6884765625,0.58203125,0.5,0.4169921875,0.310546875,0.220703125,0.1923828125,0.2353515625,0.3173828125,0.39453125,0.4755859375,0.580078125,0.673828125,0.7177734375,0.703125,0.6533203125,0.6044921875,0.552734375,0.478515625,0.40234375,0.3505859375,0.333984375,0.3447265625,0.3642578125,0.388671875,0.4296875,0.4775390625,0.513671875,0.525390625,0.517578125,0.5,0.4833984375,0.4765625,0.48046875,0.48828125,0.4921875,0.4853515625,0.46875,0.45703125,0.4697265625,0.5,0.52734375,0.533203125,0.5107421875,0.46875,0.4326171875,0.4345703125,0.4833984375,0.5576171875,0.623046875,0.650390625,0.634765625,0.6064453125,0.5703125,0.5244140625,0.474609375,0.4287109375,0.392578125,0.3642578125,0.345703125,0.3564453125,0.3916015625,0.4306640625,0.4482421875,0.4345703125,0.39453125,0.359375,0.369140625,0.4248046875,0.4990234375,0.5546875,0.564453125,0.5302734375,0.4892578125,0.4658203125,0.4609375,0.4638671875,0.458984375,0.435546875,0.39453125,0.357421875,0.361328125,0.4140625,0.4970703125,0.57421875,0.6123046875,0.6044921875,0.583984375,0.55859375,0.541015625,0.541015625,0.55859375,0.583984375,0.6044921875,0.6220703125,0.630859375,0.6181640625,0.5830078125,0.53515625,0.4931640625,0.46875,0.4462890625,0.412109375,0.3779296875,0.3583984375,0.359375,0.375,0.39453125,0.408203125,0.41015625,0.4140625,0.4384765625,0.4912109375,0.5625,0.634765625,0.7138671875,0.8046875,0.8759765625,0.892578125,0.853515625,0.7919921875,0.740234375,0.6845703125,0.5927734375,0.4775390625,0.369140625,0.2958984375,0.263671875,0.2587890625,0.2744140625,0.345703125,0.4521484375,0.546875,0.5869140625,0.5634765625,0.5,0.4365234375,0.416015625,0.4521484375,0.5302734375,0.6083984375,0.6474609375,0.634765625,0.595703125,0.5185546875,0.4306640625,0.375,0.3779296875,0.4296875,0.5,0.578125,0.67578125,0.76171875,0.806640625,0.8017578125,0.7705078125,0.740234375,0.71484375,0.6953125,0.6904296875,0.701171875,0.720703125,0.736328125,0.740234375,0.7255859375,0.6572265625,0.546875,0.435546875,0.3671875,0.3583984375,0.39453125,0.4326171875,0.439453125,0.4140625,0.375,0.349609375,0.3564453125,0.39453125,0.4443359375,0.50390625,0.546875,0.546875,0.50390625,0.4443359375,0.39453125,0.3603515625,0.369140625,0.4140625,0.4638671875,0.484375,0.4580078125,0.39453125,0.326171875,0.28125,0.275390625,0.3056640625,0.3486328125,0.373046875,0.3642578125,0.3544921875,0.3857421875,0.466796875,0.57421875,0.671875,0.728515625,0.740234375,0.7236328125,0.6494140625,0.53515625,0.43359375,0.3857421875,0.4052734375,0.46875,0.5390625,0.5966796875,0.626953125,0.62890625,0.6181640625,0.615234375,0.634765625,0.65234375,0.6318359375,0.580078125,0.521484375,0.4873046875,0.4921875,0.5302734375,0.572265625,0.5966796875,0.58203125,0.52734375,0.453125,0.392578125,0.3642578125,0.3388671875,0.2998046875,0.2734375,0.2861328125,0.34375,0.423828125,0.5,0.578125,0.67578125,0.76171875,0.806640625,0.8017578125,0.7705078125,0.740234375,0.7216796875,0.7275390625,0.7451171875,0.7509765625,0.7275390625,0.673828125,0.6044921875,0.533203125,0.4716796875,0.44140625,0.4521484375,0.4892578125,0.521484375,0.5302734375,0.517578125,0.4580078125,0.36328125,0.2734375,0.220703125,0.220703125,0.2587890625,0.3017578125,0.3388671875,0.3779296875,0.427734375,0.4912109375,0.5625,0.634765625,0.7138671875,0.8046875,0.8642578125,0.8564453125,0.783203125,0.685546875,0.6044921875,0.533203125,0.4716796875,0.44140625,0.4521484375,0.4892578125,0.521484375,0.5302734375,0.52734375,0.509765625,0.46875,0.408203125,0.3427734375,0.291015625,0.2587890625,0.2333984375,0.2138671875,0.208984375,0.220703125,0.240234375,0.2548828125,0.2587890625,0.26171875,0.2802734375,0.3193359375,0.375,0.4326171875,0.4755859375,0.5,0.5234375,0.56640625,0.6240234375,0.6796875,0.71875,0.7373046875,0.740234375,0.7353515625,0.703125,0.6298828125,0.521484375,0.40625,0.314453125,0.2587890625,0.2138671875,0.1796875,0.1845703125,0.240234375,0.3291015625,0.4140625,0.46875,0.5205078125,0.58984375,0.654296875,0.6904296875,0.6884765625,0.6630859375,0.634765625,0.615234375,0.6240234375,0.662109375,0.712890625,0.7509765625,0.759765625,0.740234375,0.701171875,0.6240234375,0.53515625,0.48046875,0.4833984375,0.5341796875,0.6044921875,0.6748046875,0.7265625,0.728515625,0.2470703125,0.201171875,0.228515625,0.3017578125,0.376953125,0.455078125,0.5498046875,0.63671875,0.689453125,0.7001953125,0.6865234375,0.673828125,0.650390625,0.5859375,0.50390625,0.4453125,0.439453125,0.482421875,0.55078125,0.6328125,0.7353515625,0.8173828125,0.8359375,0.78515625,0.7001953125,0.6220703125,0.556640625,0.5185546875,0.51171875,0.5224609375,0.525390625,0.501953125,0.4482421875,0.3935546875,0.3701171875,0.376953125,0.396484375,0.4033203125,0.3798828125,0.3251953125,0.2646484375,0.2138671875,0.1943359375,0.2158203125,0.263671875,0.306640625,0.3251953125,0.341796875,0.37890625,0.435546875,0.4951171875,0.5419921875,0.5654296875,0.5703125,0.564453125,0.5341796875,0.484375,0.4287109375,0.3876953125,0.3720703125,0.376953125,0.3955078125,0.439453125,0.490234375,0.521484375,0.515625,0.478515625,0.4287109375,0.392578125,0.4140625,0.4970703125,0.60546875,0.6884765625,0.7099609375,0.673828125,0.626953125,0.595703125,0.5771484375,0.560546875,0.5322265625,0.4873046875,0.4287109375,0.3681640625,0.3173828125,0.2978515625,0.3193359375,0.3671875,0.41015625,0.4287109375,0.4365234375,0.431640625,0.4140625,0.3916015625,0.375,0.3701171875,0.376953125,0.37890625,0.3505859375,0.310546875,0.2900390625,0.306640625,0.359375,0.4287109375,0.4990234375,0.55078125,0.564453125,0.5341796875,0.48046875,0.439453125,0.4287109375,0.4365234375,0.46875,0.5107421875,0.537109375,0.5322265625,0.4970703125,0.4482421875,0.404296875,0.3876953125,0.396484375,0.412109375,0.4111328125,0.380859375,0.3251953125,0.2626953125,0.2099609375,0.203125,0.2626953125,0.3701171875,0.4775390625,0.55078125,0.611328125,0.658203125,0.673828125,0.6533203125,0.611328125,0.578125,0.5703125,0.57421875,0.5927734375,0.623046875,0.6552734375,0.67578125,0.6806640625,0.673828125,0.650390625,0.5859375,0.50390625,0.4453125,0.439453125,0.482421875,0.55078125,0.6298828125,0.7177734375,0.7724609375,0.7587890625,0.6806640625,0.580078125,0.5,0.4189453125,0.318359375,0.240234375,0.2265625,0.28125,0.369140625,0.4482421875,0.5283203125,0.62890625,0.7109375,0.734375,0.6923828125,0.6181640625,0.55078125,0.48046875,0.384765625,0.296875,0.2548828125,0.271484375,0.3232421875,0.376953125,0.4365234375,0.5185546875,0.5927734375,0.6259765625,0.60546875,0.5537109375,0.5,0.455078125,0.439453125,0.4521484375,0.4765625,0.4892578125,0.47265625,0.4287109375,0.3876953125,0.38671875,0.4228515625,0.4697265625,0.4970703125,0.4814453125,0.4287109375,0.375,0.359375,0.3994140625,0.48046875,0.5673828125,0.619140625,0.6220703125,0.607421875,0.576171875,0.52734375,0.4716796875,0.4228515625,0.3916015625,0.376953125,0.376953125,0.4140625,0.4736328125,0.5224609375,0.5341796875,0.5048828125,0.4482421875,0.3994140625,0.4052734375,0.466796875,0.55078125,0.6123046875,0.6181640625,0.5703125,0.515625,0.4921875,0.4990234375,0.5185546875,0.525390625,0.501953125,0.4482421875,0.3974609375,0.39453125,0.4443359375,0.51953125,0.5791015625,0.58984375,0.55078125,0.494140625,0.427734375,0.3798828125,0.3798828125,0.427734375,0.494140625,0.55078125,0.60546875,0.6572265625,0.6767578125,0.64453125,0.5703125,0.48828125,0.4287109375,0.373046875,0.30859375,0.2646484375,0.26953125,0.3212890625,0.390625,0.4482421875,0.4912109375,0.5078125,0.5029296875,0.4970703125,0.5107421875,0.5546875,0.6220703125,0.701171875,0.7958984375,0.8662109375,0.875,0.822265625,0.7421875,0.673828125,0.60546875,0.5185546875,0.4296875,0.36328125,0.33203125,0.3251953125,0.3251953125,0.33984375,0.40234375,0.4951171875,0.5712890625,0.5966796875,0.5654296875,0.5,0.43359375,0.40234375,0.423828125,0.4912109375,0.5703125,0.619140625,0.6220703125,0.5986328125,0.5341796875,0.4521484375,0.3935546875,0.3876953125,0.4306640625,0.5,0.5751953125,0.654296875,0.7138671875,0.734375,0.7177734375,0.689453125,0.673828125,0.6630859375,0.6552734375,0.6533203125,0.658203125,0.666015625,0.671875,0.673828125,0.6591796875,0.5966796875,0.5009765625,0.4150390625,0.3759765625,0.3935546875,0.4482421875,0.4990234375,0.5078125,0.4736328125,0.421875,0.3876953125,0.396484375,0.4482421875,0.515625,0.5966796875,0.6533203125,0.6533203125,0.5966796875,0.515625,0.4482421875,0.3984375,0.39453125,0.4375,0.4931640625,0.525390625,0.5087890625,0.4482421875,0.3837890625,0.3525390625,0.361328125,0.39453125,0.4228515625,0.4189453125,0.376953125,0.3349609375,0.3330078125,0.3896484375,0.490234375,0.59375,0.6591796875,0.673828125,0.658203125,0.5859375,0.478515625,0.3837890625,0.341796875,0.365234375,0.4287109375,0.501953125,0.5712890625,0.6201171875,0.63671875,0.6279296875,0.6171875,0.6220703125,0.6220703125,0.587890625,0.5322265625,0.48828125,0.48046875,0.5126953125,0.5703125,0.6318359375,0.68359375,0.689453125,0.634765625,0.5361328125,0.439453125,0.376953125,0.3203125,0.2568359375,0.220703125,0.244140625,0.3232421875,0.419921875,0.5,0.5751953125,0.654296875,0.7138671875,0.734375,0.7177734375,0.689453125,0.673828125,0.669921875,0.689453125,0.7138671875,0.716796875,0.68359375,0.6220703125,0.55078125,0.4814453125,0.431640625,0.4228515625,0.4580078125,0.515625,0.5595703125,0.5703125,0.5556640625,0.490234375,0.390625,0.2998046875,0.2568359375,0.271484375,0.3251953125,0.3818359375,0.4208984375,0.4453125,0.466796875,0.5009765625,0.5537109375,0.6220703125,0.7001953125,0.78515625,0.8359375,0.8173828125,0.7353515625,0.6328125,0.55078125,0.4814453125,0.431640625,0.4228515625,0.4580078125,0.515625,0.5595703125,0.5703125,0.5654296875,0.5419921875,0.4951171875,0.435546875,0.37890625,0.341796875,0.3251953125,0.3154296875,0.3076171875,0.3056640625,0.310546875,0.318359375,0.32421875,0.3251953125,0.322265625,0.314453125,0.314453125,0.3388671875,0.3876953125,0.4462890625,0.5,0.552734375,0.611328125,0.66015625,0.6845703125,0.6845703125,0.6767578125,0.673828125,0.673828125,0.6669921875,0.6357421875,0.5693359375,0.48046875,0.3935546875,0.3251953125,0.259765625,0.1923828125,0.158203125,0.185546875,0.265625,0.3583984375,0.4287109375,0.494140625,0.5693359375,0.630859375,0.66015625,0.6552734375,0.6357421875,0.6220703125,0.6142578125,0.619140625,0.63671875,0.6591796875,0.67578125,0.6806640625,0.673828125,0.650390625,0.5859375,0.50390625,0.4453125,0.439453125,0.482421875,0.55078125,0.619140625,0.6630859375,0.6572265625,0.2392578125,0.21875,0.267578125,0.3515625,0.4296875,0.5029296875,0.5751953125,0.623046875,0.6328125,0.6123046875,0.5869140625,0.5791015625,0.56640625,0.5146484375,0.4453125,0.3974609375,0.396484375,0.44140625,0.509765625,0.5908203125,0.6923828125,0.7724609375,0.7880859375,0.734375,0.6474609375,0.5693359375,0.5078125,0.486328125,0.5068359375,0.5458984375,0.568359375,0.5498046875,0.4892578125,0.4296875,0.41015625,0.4345703125,0.474609375,0.4990234375,0.4794921875,0.419921875,0.3515625,0.298828125,0.28515625,0.3134765625,0.3662109375,0.408203125,0.419921875,0.4248046875,0.4423828125,0.474609375,0.5107421875,0.5400390625,0.556640625,0.5595703125,0.5556640625,0.5390625,0.5087890625,0.474609375,0.4453125,0.4306640625,0.4296875,0.44140625,0.4833984375,0.537109375,0.5673828125,0.5556640625,0.505859375,0.439453125,0.3857421875,0.392578125,0.4619140625,0.556640625,0.6259765625,0.6328125,0.5791015625,0.51953125,0.4931640625,0.5009765625,0.5234375,0.5302734375,0.501953125,0.439453125,0.37109375,0.3193359375,0.3046875,0.333984375,0.38671875,0.4287109375,0.439453125,0.4404296875,0.439453125,0.4365234375,0.4326171875,0.4296875,0.4287109375,0.4296875,0.421875,0.3828125,0.3310546875,0.302734375,0.3173828125,0.3701171875,0.439453125,0.509765625,0.5615234375,0.5751953125,0.544921875,0.4912109375,0.44921875,0.439453125,0.4501953125,0.49609375,0.55859375,0.6005859375,0.5986328125,0.5546875,0.4892578125,0.4306640625,0.4130859375,0.4375,0.4775390625,0.5,0.48046875,0.419921875,0.34375,0.2626953125,0.2177734375,0.2412109375,0.3271484375,0.4296875,0.509765625,0.5791015625,0.6357421875,0.66015625,0.6435546875,0.6025390625,0.568359375,0.5595703125,0.5595703125,0.5634765625,0.5693359375,0.5751953125,0.5791015625,0.580078125,0.5791015625,0.56640625,0.5146484375,0.4453125,0.3974609375,0.396484375,0.44140625,0.509765625,0.5888671875,0.681640625,0.74609375,0.744140625,0.6748046875,0.5791015625,0.5,0.419921875,0.32421875,0.2548828125,0.2529296875,0.3173828125,0.41015625,0.4892578125,0.5693359375,0.6650390625,0.7353515625,0.7392578125,0.677734375,0.5869140625,0.509765625,0.4296875,0.3291015625,0.248046875,0.2275390625,0.2744140625,0.35546875,0.4296875,0.5078125,0.60546875,0.6845703125,0.703125,0.6552734375,0.57421875,0.5,0.44140625,0.423828125,0.4482421875,0.490234375,0.515625,0.498046875,0.439453125,0.3828125,0.3740234375,0.4130859375,0.4716796875,0.509765625,0.498046875,0.439453125,0.375,0.33984375,0.357421875,0.421875,0.5029296875,0.55859375,0.5693359375,0.564453125,0.5478515625,0.517578125,0.4814453125,0.451171875,0.4345703125,0.4296875,0.439453125,0.486328125,0.55078125,0.59765625,0.5986328125,0.5556640625,0.4892578125,0.4326171875,0.4306640625,0.4853515625,0.5634765625,0.6181640625,0.6162109375,0.5595703125,0.4990234375,0.48046875,0.50390625,0.544921875,0.568359375,0.5498046875,0.4892578125,0.431640625,0.421875,0.46484375,0.5283203125,0.572265625,0.5654296875,0.509765625,0.43359375,0.34375,0.2802734375,0.2802734375,0.34375,0.43359375,0.509765625,0.583984375,0.6650390625,0.712890625,0.6943359375,0.615234375,0.517578125,0.439453125,0.365234375,0.28125,0.228515625,0.2421875,0.31640625,0.412109375,0.4892578125,0.5478515625,0.5654296875,0.54296875,0.5048828125,0.484375,0.5068359375,0.5693359375,0.6494140625,0.7431640625,0.8115234375,0.8134765625,0.7490234375,0.6572265625,0.5791015625,0.5078125,0.4365234375,0.388671875,0.3759765625,0.392578125,0.4140625,0.419921875,0.431640625,0.4833984375,0.5546875,0.60546875,0.6103515625,0.5673828125,0.5,0.431640625,0.388671875,0.392578125,0.44140625,0.5107421875,0.5595703125,0.5693359375,0.5556640625,0.5048828125,0.435546875,0.3876953125,0.3857421875,0.4306640625,0.5,0.5712890625,0.634765625,0.6669921875,0.658203125,0.6220703125,0.5888671875,0.5791015625,0.5771484375,0.576171875,0.576171875,0.5771484375,0.578125,0.5791015625,0.5791015625,0.5673828125,0.515625,0.443359375,0.390625,0.3828125,0.423828125,0.4892578125,0.5478515625,0.55859375,0.51953125,0.4599609375,0.4208984375,0.4306640625,0.4892578125,0.5673828125,0.6591796875,0.724609375,0.724609375,0.6591796875,0.5673828125,0.4892578125,0.431640625,0.421875,0.4619140625,0.5224609375,0.5615234375,0.5498046875,0.4892578125,0.427734375,0.408203125,0.4326171875,0.4755859375,0.5029296875,0.4873046875,0.4296875,0.3671875,0.3349609375,0.35546875,0.423828125,0.5087890625,0.56640625,0.5791015625,0.56640625,0.5078125,0.4228515625,0.35546875,0.337890625,0.373046875,0.439453125,0.5126953125,0.5791015625,0.6201171875,0.6240234375,0.599609375,0.57421875,0.5693359375,0.560546875,0.5205078125,0.4658203125,0.43359375,0.4423828125,0.4912109375,0.5595703125,0.6337890625,0.708984375,0.744140625,0.708984375,0.615234375,0.5087890625,0.4296875,0.3544921875,0.271484375,0.220703125,0.23828125,0.318359375,0.4189453125,0.5,0.5712890625,0.634765625,0.6669921875,0.658203125,0.6220703125,0.5888671875,0.5791015625,0.5859375,0.6181640625,0.6552734375,0.66796875,0.640625,0.5810546875,0.509765625,0.4404296875,0.39453125,0.392578125,0.435546875,0.5,0.5478515625,0.5595703125,0.5458984375,0.48828125,0.4052734375,0.3388671875,0.3203125,0.3544921875,0.419921875,0.4814453125,0.5087890625,0.501953125,0.4814453125,0.4755859375,0.505859375,0.5693359375,0.6474609375,0.734375,0.7880859375,0.7724609375,0.6923828125,0.5908203125,0.509765625,0.4404296875,0.39453125,0.392578125,0.435546875,0.5,0.5478515625,0.5595703125,0.556640625,0.5400390625,0.5107421875,0.474609375,0.4423828125,0.4248046875,0.419921875,0.41796875,0.4169921875,0.4169921875,0.4169921875,0.4189453125,0.419921875,0.419921875,0.412109375,0.3818359375,0.3486328125,0.3408203125,0.37109375,0.4306640625,0.5,0.568359375,0.6279296875,0.658203125,0.650390625,0.6171875,0.5869140625,0.5791015625,0.5849609375,0.6064453125,0.623046875,0.6103515625,0.5625,0.4912109375,0.419921875,0.3427734375,0.2529296875,0.1923828125,0.197265625,0.2666015625,0.361328125,0.439453125,0.5107421875,0.5791015625,0.6220703125,0.626953125,0.603515625,0.5771484375,0.5693359375,0.568359375,0.5693359375,0.572265625,0.576171875,0.5791015625,0.580078125,0.5791015625,0.56640625,0.5146484375,0.4453125,0.3974609375,0.396484375,0.44140625,0.509765625,0.578125,0.623046875,0.6220703125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.2783203125,0.2998046875,0.3837890625,0.4873046875,0.5693359375,0.6357421875,0.6708984375,0.65234375,0.5830078125,0.49609375,0.4345703125,0.419921875,0.41015625,0.375,0.3369140625,0.326171875,0.3564453125,0.41796875,0.4892578125,0.568359375,0.6552734375,0.708984375,0.6953125,0.6181640625,0.5185546875,0.439453125,0.3818359375,0.376953125,0.42578125,0.498046875,0.548828125,0.544921875,0.4892578125,0.4345703125,0.43359375,0.48828125,0.5654296875,0.619140625,0.6162109375,0.5595703125,0.4912109375,0.4404296875,0.4287109375,0.4599609375,0.5146484375,0.5576171875,0.5693359375,0.5673828125,0.5517578125,0.51953125,0.48046875,0.4453125,0.4248046875,0.419921875,0.421875,0.439453125,0.4736328125,0.5146484375,0.548828125,0.5673828125,0.5693359375,0.5771484375,0.6142578125,0.6630859375,0.689453125,0.67578125,0.6259765625,0.5595703125,0.5,0.4755859375,0.4892578125,0.515625,0.52734375,0.5009765625,0.439453125,0.384765625,0.3896484375,0.4560546875,0.5478515625,0.61328125,0.6162109375,0.5595703125,0.490234375,0.4384765625,0.4267578125,0.45703125,0.5107421875,0.55078125,0.5595703125,0.55859375,0.5595703125,0.5625,0.56640625,0.5693359375,0.5703125,0.5693359375,0.5576171875,0.515625,0.4619140625,0.431640625,0.443359375,0.4931640625,0.5595703125,0.6259765625,0.6748046875,0.685546875,0.65625,0.60546875,0.5673828125,0.5595703125,0.568359375,0.6015625,0.63671875,0.646484375,0.6171875,0.5576171875,0.4892578125,0.4345703125,0.43359375,0.48828125,0.5654296875,0.619140625,0.6162109375,0.5595703125,0.4794921875,0.37890625,0.298828125,0.2802734375,0.330078125,0.4130859375,0.4892578125,0.5556640625,0.5986328125,0.595703125,0.5478515625,0.48046875,0.4306640625,0.419921875,0.419921875,0.421875,0.4248046875,0.4296875,0.43359375,0.4375,0.439453125,0.4326171875,0.3994140625,0.3583984375,0.341796875,0.3642578125,0.4208984375,0.4892578125,0.5673828125,0.6591796875,0.7255859375,0.7275390625,0.6650390625,0.5751953125,0.5,0.4228515625,0.33203125,0.2666015625,0.263671875,0.3251953125,0.4140625,0.4892578125,0.56640625,0.658203125,0.7236328125,0.7255859375,0.6611328125,0.568359375,0.4892578125,0.4111328125,0.326171875,0.2744140625,0.29296875,0.375,0.4775390625,0.5595703125,0.6376953125,0.724609375,0.779296875,0.765625,0.6875,0.5888671875,0.509765625,0.453125,0.451171875,0.505859375,0.5830078125,0.6376953125,0.6357421875,0.5791015625,0.5205078125,0.5087890625,0.544921875,0.599609375,0.6337890625,0.6201171875,0.5595703125,0.486328125,0.419921875,0.3798828125,0.37890625,0.4052734375,0.4326171875,0.439453125,0.4423828125,0.45703125,0.4853515625,0.5185546875,0.5478515625,0.564453125,0.5693359375,0.5791015625,0.61328125,0.65234375,0.6630859375,0.6328125,0.5712890625,0.5,0.4375,0.41796875,0.4423828125,0.4853515625,0.513671875,0.498046875,0.439453125,0.384765625,0.3837890625,0.4384765625,0.515625,0.5693359375,0.56640625,0.509765625,0.451171875,0.44140625,0.482421875,0.5419921875,0.5810546875,0.5693359375,0.509765625,0.4296875,0.3330078125,0.26171875,0.255859375,0.318359375,0.41015625,0.4892578125,0.5712890625,0.6748046875,0.7607421875,0.783203125,0.7373046875,0.6552734375,0.5791015625,0.5,0.3994140625,0.3173828125,0.296875,0.34375,0.4248046875,0.5,0.5546875,0.556640625,0.5029296875,0.4267578125,0.373046875,0.3740234375,0.4296875,0.505859375,0.5986328125,0.6650390625,0.6689453125,0.6064453125,0.517578125,0.439453125,0.375,0.341796875,0.361328125,0.4287109375,0.51171875,0.568359375,0.5791015625,0.5859375,0.6171875,0.6533203125,0.6650390625,0.6376953125,0.5791015625,0.509765625,0.439453125,0.3779296875,0.3466796875,0.353515625,0.384765625,0.4140625,0.419921875,0.41015625,0.37890625,0.345703125,0.3388671875,0.3701171875,0.4306640625,0.5,0.5634765625,0.603515625,0.5966796875,0.5458984375,0.4775390625,0.4296875,0.419921875,0.421875,0.4228515625,0.423828125,0.42578125,0.4267578125,0.427734375,0.4296875,0.423828125,0.3935546875,0.359375,0.3505859375,0.3798828125,0.439453125,0.509765625,0.5673828125,0.576171875,0.533203125,0.470703125,0.4296875,0.439453125,0.5,0.5791015625,0.673828125,0.7412109375,0.7431640625,0.6787109375,0.5869140625,0.509765625,0.451171875,0.4404296875,0.4794921875,0.5390625,0.578125,0.568359375,0.509765625,0.453125,0.4501953125,0.50390625,0.580078125,0.6328125,0.6279296875,0.5693359375,0.49609375,0.42578125,0.37890625,0.3701171875,0.3896484375,0.4130859375,0.419921875,0.4130859375,0.390625,0.37109375,0.37890625,0.4228515625,0.4892578125,0.5595703125,0.6220703125,0.654296875,0.634765625,0.568359375,0.486328125,0.4306640625,0.419921875,0.412109375,0.375,0.326171875,0.2998046875,0.3134765625,0.36328125,0.4296875,0.509765625,0.6181640625,0.7158203125,0.75390625,0.720703125,0.6455078125,0.5693359375,0.48828125,0.384765625,0.3017578125,0.28125,0.330078125,0.4130859375,0.4892578125,0.556640625,0.6005859375,0.6005859375,0.5576171875,0.494140625,0.44921875,0.439453125,0.453125,0.5029296875,0.5712890625,0.6181640625,0.6201171875,0.576171875,0.509765625,0.439453125,0.3798828125,0.3515625,0.3623046875,0.3994140625,0.431640625,0.439453125,0.43359375,0.4091796875,0.388671875,0.3955078125,0.439453125,0.5078125,0.5791015625,0.6337890625,0.6259765625,0.552734375,0.4521484375,0.376953125,0.3671875,0.419921875,0.498046875,0.6005859375,0.6875,0.7119140625,0.66796875,0.5869140625,0.509765625,0.4375,0.3759765625,0.345703125,0.357421875,0.3955078125,0.4296875,0.439453125,0.4443359375,0.462890625,0.4931640625,0.52734375,0.5546875,0.568359375,0.5693359375,0.5673828125,0.5654296875,0.5625,0.560546875,0.5595703125,0.5595703125,0.5595703125,0.5478515625,0.5,0.43359375,0.3857421875,0.3828125,0.4248046875,0.4892578125,0.5546875,0.5947265625,0.5908203125,0.54296875,0.4765625,0.4296875,0.419921875,0.4345703125,0.4951171875,0.58203125,0.65234375,0.673828125,0.642578125,0.5791015625,0.5029296875,0.41015625,0.3427734375,0.3369140625,0.396484375,0.4833984375,0.5595703125,0.623046875,0.658203125,0.64453125,0.583984375,0.505859375,0.4521484375,0.439453125,0.439453125,0.435546875,0.4296875,0.423828125,0.419921875,0.4189453125,0.419921875,0.4130859375,0.3818359375,0.345703125,0.333984375,0.361328125,0.419921875,0.4892578125,0.5595703125,0.6220703125,0.6552734375,0.271484375,0.3173828125,0.4228515625,0.5380859375,0.6220703125,0.685546875,0.708984375,0.6630859375,0.5595703125,0.4375,0.3525390625,0.3251953125,0.30859375,0.2744140625,0.24609375,0.251953125,0.30078125,0.3740234375,0.4482421875,0.525390625,0.611328125,0.666015625,0.6572265625,0.587890625,0.4990234375,0.4287109375,0.376953125,0.3642578125,0.39453125,0.447265625,0.4873046875,0.48828125,0.4482421875,0.4091796875,0.4228515625,0.486328125,0.56640625,0.6201171875,0.6201171875,0.5703125,0.509765625,0.4658203125,0.4580078125,0.4931640625,0.552734375,0.6015625,0.6220703125,0.6259765625,0.6044921875,0.5478515625,0.4697265625,0.3935546875,0.34375,0.3251953125,0.32421875,0.3583984375,0.4296875,0.517578125,0.5888671875,0.623046875,0.6220703125,0.6171875,0.6328125,0.658203125,0.669921875,0.6572265625,0.619140625,0.5703125,0.525390625,0.5068359375,0.51171875,0.5224609375,0.517578125,0.4853515625,0.4287109375,0.3828125,0.396484375,0.4697265625,0.5634765625,0.6279296875,0.6279296875,0.5703125,0.501953125,0.455078125,0.4501953125,0.484375,0.5361328125,0.5703125,0.5703125,0.5625,0.5673828125,0.5849609375,0.607421875,0.6240234375,0.62890625,0.6220703125,0.603515625,0.5595703125,0.5087890625,0.4775390625,0.4833984375,0.5205078125,0.5703125,0.6181640625,0.6494140625,0.6513671875,0.625,0.5888671875,0.5673828125,0.5703125,0.583984375,0.6064453125,0.619140625,0.6044921875,0.5595703125,0.501953125,0.4482421875,0.4091796875,0.4228515625,0.486328125,0.56640625,0.6201171875,0.6201171875,0.5703125,0.4990234375,0.4033203125,0.3193359375,0.287109375,0.31640625,0.3828125,0.4482421875,0.5048828125,0.5341796875,0.5185546875,0.4609375,0.3876953125,0.3369140625,0.3251953125,0.326171875,0.3330078125,0.3486328125,0.37109375,0.396484375,0.4169921875,0.4287109375,0.4306640625,0.4052734375,0.365234375,0.33984375,0.34765625,0.3896484375,0.4482421875,0.515625,0.5966796875,0.6572265625,0.6669921875,0.623046875,0.556640625,0.5,0.44140625,0.3681640625,0.3095703125,0.2958984375,0.33203125,0.392578125,0.4482421875,0.5078125,0.5859375,0.6494140625,0.658203125,0.6064453125,0.5244140625,0.4482421875,0.37109375,0.2919921875,0.251953125,0.2841796875,0.37890625,0.4873046875,0.5703125,0.6474609375,0.7333984375,0.7880859375,0.779296875,0.7099609375,0.62109375,0.55078125,0.5029296875,0.5087890625,0.5703125,0.654296875,0.7158203125,0.7216796875,0.673828125,0.62109375,0.60546875,0.625,0.6533203125,0.6630859375,0.6337890625,0.5703125,0.4970703125,0.427734375,0.3828125,0.3759765625,0.3974609375,0.421875,0.4287109375,0.431640625,0.44921875,0.484375,0.53125,0.576171875,0.607421875,0.6220703125,0.638671875,0.673828125,0.701171875,0.6953125,0.646484375,0.5732421875,0.5,0.435546875,0.404296875,0.4130859375,0.4462890625,0.474609375,0.470703125,0.4287109375,0.390625,0.404296875,0.4677734375,0.5478515625,0.6015625,0.6005859375,0.55078125,0.501953125,0.498046875,0.5400390625,0.5966796875,0.62890625,0.6123046875,0.55078125,0.46875,0.3623046875,0.2724609375,0.2451171875,0.2890625,0.3701171875,0.4482421875,0.53125,0.646484375,0.755859375,0.8115234375,0.796875,0.7373046875,0.673828125,0.6025390625,0.5068359375,0.4189453125,0.376953125,0.3935546875,0.4453125,0.5,0.5390625,0.5322265625,0.4765625,0.400390625,0.3447265625,0.337890625,0.376953125,0.4365234375,0.515625,0.58203125,0.6005859375,0.5625,0.494140625,0.4287109375,0.3759765625,0.3671875,0.41796875,0.5126953125,0.611328125,0.6689453125,0.673828125,0.6689453125,0.6826171875,0.6982421875,0.697265625,0.666015625,0.6123046875,0.55078125,0.4873046875,0.421875,0.3671875,0.337890625,0.33203125,0.33203125,0.3251953125,0.3125,0.296875,0.294921875,0.32421875,0.3798828125,0.4443359375,0.5,0.5439453125,0.5537109375,0.5166015625,0.4443359375,0.3701171875,0.3271484375,0.3251953125,0.3359375,0.34375,0.3486328125,0.353515625,0.359375,0.3671875,0.376953125,0.3828125,0.3759765625,0.37109375,0.38671875,0.4287109375,0.4892578125,0.55078125,0.599609375,0.5966796875,0.54296875,0.47265625,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.744140625,0.7529296875,0.7001953125,0.6201171875,0.55078125,0.5,0.4912109375,0.525390625,0.5771484375,0.611328125,0.6025390625,0.55078125,0.5029296875,0.5087890625,0.56640625,0.6416015625,0.689453125,0.681640625,0.6220703125,0.544921875,0.45703125,0.376953125,0.3291015625,0.31640625,0.322265625,0.3251953125,0.32421875,0.32421875,0.3408203125,0.3837890625,0.4482421875,0.5146484375,0.5703125,0.6123046875,0.6142578125,0.5615234375,0.470703125,0.3798828125,0.328125,0.3251953125,0.330078125,0.314453125,0.2900390625,0.27734375,0.2900390625,0.328125,0.376953125,0.4423828125,0.55078125,0.6689453125,0.7421875,0.7451171875,0.6923828125,0.6220703125,0.5390625,0.4296875,0.33203125,0.291015625,0.31640625,0.3818359375,0.4482421875,0.505859375,0.5419921875,0.5419921875,0.505859375,0.4580078125,0.427734375,0.4287109375,0.4501953125,0.5087890625,0.5830078125,0.6376953125,0.6455078125,0.609375,0.55078125,0.48828125,0.4287109375,0.390625,0.3837890625,0.40234375,0.4228515625,0.4287109375,0.42578125,0.419921875,0.4287109375,0.4677734375,0.533203125,0.6083984375,0.673828125,0.7177734375,0.6904296875,0.5869140625,0.447265625,0.3330078125,0.29296875,0.3251953125,0.390625,0.4970703125,0.6103515625,0.6787109375,0.677734375,0.623046875,0.55078125,0.4775390625,0.404296875,0.35546875,0.349609375,0.376953125,0.412109375,0.4287109375,0.4453125,0.482421875,0.53515625,0.5859375,0.619140625,0.62890625,0.6220703125,0.6103515625,0.5966796875,0.5830078125,0.57421875,0.5703125,0.5693359375,0.5703125,0.560546875,0.515625,0.4501953125,0.396484375,0.37890625,0.4013671875,0.4482421875,0.4931640625,0.509765625,0.484375,0.42578125,0.3623046875,0.3251953125,0.3251953125,0.3505859375,0.4306640625,0.5478515625,0.6572265625,0.7177734375,0.7158203125,0.673828125,0.6142578125,0.53515625,0.46484375,0.4375,0.4619140625,0.515625,0.5703125,0.6162109375,0.63671875,0.6142578125,0.5556640625,0.486328125,0.439453125,0.4287109375,0.4248046875,0.40625,0.3759765625,0.34375,0.3232421875,0.318359375,0.3251953125,0.330078125,0.31640625,0.30078125,0.3017578125,0.3330078125,0.38671875,0.4482421875,0.5126953125,0.5849609375,0.646484375,0.2421875,0.3056640625,0.4267578125,0.5498046875,0.634765625,0.69921875,0.7216796875,0.6708984375,0.5517578125,0.41015625,0.3037109375,0.2587890625,0.2265625,0.181640625,0.154296875,0.1708984375,0.2333984375,0.3173828125,0.39453125,0.47265625,0.560546875,0.6240234375,0.6328125,0.5869140625,0.521484375,0.46875,0.42578125,0.39453125,0.3837890625,0.3916015625,0.4052734375,0.408203125,0.39453125,0.3857421875,0.4140625,0.474609375,0.5380859375,0.57421875,0.568359375,0.5302734375,0.484375,0.44921875,0.4443359375,0.48046875,0.5419921875,0.6005859375,0.634765625,0.6552734375,0.64453125,0.5849609375,0.4853515625,0.376953125,0.296875,0.2587890625,0.24609375,0.287109375,0.3857421875,0.5078125,0.6064453125,0.6484375,0.634765625,0.609375,0.5888671875,0.57421875,0.5654296875,0.55859375,0.546875,0.5302734375,0.5166015625,0.521484375,0.5380859375,0.5498046875,0.5419921875,0.51171875,0.46875,0.4365234375,0.4521484375,0.5107421875,0.576171875,0.6103515625,0.591796875,0.5302734375,0.4638671875,0.4267578125,0.4326171875,0.474609375,0.5234375,0.5458984375,0.5302734375,0.5107421875,0.51953125,0.5576171875,0.607421875,0.6455078125,0.654296875,0.634765625,0.6044921875,0.5615234375,0.5185546875,0.494140625,0.494140625,0.509765625,0.5302734375,0.544921875,0.54296875,0.52734375,0.5078125,0.4990234375,0.5068359375,0.5302734375,0.5546875,0.5693359375,0.5576171875,0.5185546875,0.46484375,0.419921875,0.39453125,0.3857421875,0.4140625,0.474609375,0.5380859375,0.57421875,0.568359375,0.5302734375,0.4765625,0.400390625,0.328125,0.2919921875,0.3037109375,0.3466796875,0.39453125,0.435546875,0.4521484375,0.4306640625,0.375,0.3115234375,0.2685546875,0.2587890625,0.259765625,0.2705078125,0.2978515625,0.341796875,0.3935546875,0.4384765625,0.46875,0.486328125,0.470703125,0.4248046875,0.375,0.3466796875,0.35546875,0.39453125,0.443359375,0.5009765625,0.546875,0.5634765625,0.548828125,0.521484375,0.5,0.4755859375,0.4384765625,0.3974609375,0.369140625,0.36328125,0.3759765625,0.39453125,0.4228515625,0.478515625,0.53515625,0.5576171875,0.5302734375,0.466796875,0.39453125,0.3173828125,0.240234375,0.2041015625,0.2392578125,0.3359375,0.447265625,0.5302734375,0.607421875,0.6953125,0.7587890625,0.767578125,0.72265625,0.6572265625,0.6044921875,0.5703125,0.580078125,0.6357421875,0.708984375,0.7646484375,0.7744140625,0.740234375,0.701171875,0.6845703125,0.6826171875,0.67578125,0.6494140625,0.5986328125,0.5302734375,0.458984375,0.3984375,0.3720703125,0.38671875,0.4267578125,0.4609375,0.46875,0.4697265625,0.474609375,0.4912109375,0.5244140625,0.56640625,0.60546875,0.634765625,0.6669921875,0.7119140625,0.740234375,0.7236328125,0.66015625,0.576171875,0.5,0.431640625,0.38671875,0.380859375,0.4111328125,0.4541015625,0.478515625,0.46875,0.4599609375,0.4892578125,0.5498046875,0.6123046875,0.6484375,0.642578125,0.6044921875,0.5703125,0.5791015625,0.6240234375,0.673828125,0.6943359375,0.66796875,0.6044921875,0.51953125,0.400390625,0.287109375,0.2314453125,0.2509765625,0.3193359375,0.39453125,0.478515625,0.599609375,0.7236328125,0.8037109375,0.8193359375,0.7861328125,0.740234375,0.6875,0.6142578125,0.5380859375,0.4853515625,0.4697265625,0.48046875,0.5,0.51171875,0.4990234375,0.4580078125,0.40625,0.365234375,0.3515625,0.3642578125,0.3916015625,0.4443359375,0.5048828125,0.5439453125,0.544921875,0.513671875,0.46875,0.4345703125,0.4501953125,0.521484375,0.6240234375,0.712890625,0.7529296875,0.740234375,0.7177734375,0.7080078125,0.70703125,0.701171875,0.6826171875,0.6484375,0.6044921875,0.5556640625,0.49609375,0.4306640625,0.369140625,0.3212890625,0.2861328125,0.2587890625,0.236328125,0.2353515625,0.26953125,0.3369140625,0.4130859375,0.4716796875,0.5,0.5087890625,0.4775390625,0.408203125,0.3251953125,0.2626953125,0.2412109375,0.2587890625,0.283203125,0.2998046875,0.30859375,0.314453125,0.3232421875,0.33984375,0.3642578125,0.388671875,0.4111328125,0.435546875,0.46875,0.51171875,0.55859375,0.6044921875,0.63671875,0.615234375,0.546875,0.46875,0.4248046875,0.4384765625,0.5,0.578125,0.669921875,0.740234375,0.7568359375,0.71875,0.65625,0.6044921875,0.56640625,0.5595703125,0.5849609375,0.6240234375,0.6494140625,0.642578125,0.6044921875,0.5712890625,0.5830078125,0.6357421875,0.6923828125,0.7197265625,0.697265625,0.634765625,0.556640625,0.4580078125,0.361328125,0.2919921875,0.26171875,0.2578125,0.2587890625,0.2626953125,0.2841796875,0.3310546875,0.39453125,0.4580078125,0.5048828125,0.5302734375,0.5380859375,0.50390625,0.427734375,0.3369140625,0.2666015625,0.2421875,0.2587890625,0.2841796875,0.3056640625,0.3193359375,0.328125,0.3359375,0.3466796875,0.3642578125,0.3984375,0.4873046875,0.6044921875,0.6982421875,0.7314453125,0.701171875,0.634765625,0.5537109375,0.4453125,0.3447265625,0.2919921875,0.30078125,0.345703125,0.39453125,0.4365234375,0.4638671875,0.46875,0.4580078125,0.4462890625,0.4482421875,0.46875,0.50390625,0.56640625,0.6357421875,0.6787109375,0.681640625,0.6494140625,0.6044921875,0.5576171875,0.5078125,0.46875,0.4521484375,0.4560546875,0.4658203125,0.46875,0.46875,0.4755859375,0.501953125,0.5546875,0.6240234375,0.689453125,0.740234375,0.7705078125,0.734375,0.62109375,0.466796875,0.3291015625,0.2578125,0.2587890625,0.294921875,0.392578125,0.52734375,0.640625,0.6904296875,0.6689453125,0.6044921875,0.5283203125,0.443359375,0.380859375,0.3642578125,0.392578125,0.4365234375,0.46875,0.501953125,0.556640625,0.619140625,0.662109375,0.6748046875,0.66015625,0.634765625,0.6064453125,0.5751953125,0.546875,0.5302734375,0.5263671875,0.5283203125,0.5302734375,0.5244140625,0.4970703125,0.4521484375,0.408203125,0.3818359375,0.37890625,0.39453125,0.40625,0.3876953125,0.341796875,0.287109375,0.2470703125,0.2392578125,0.2587890625,0.298828125,0.38671875,0.513671875,0.6376953125,0.7216796875,0.7509765625,0.740234375,0.7138671875,0.6640625,0.599609375,0.5439453125,0.5146484375,0.513671875,0.5302734375,0.546875,0.5537109375,0.54296875,0.51953125,0.4912109375,0.4736328125,0.46875,0.4609375,0.419921875,0.353515625,0.2861328125,0.244140625,0.23828125,0.2587890625,0.28125,0.291015625,0.2919921875,0.2978515625,0.31640625,0.3505859375,0.39453125,0.4462890625,0.521484375,0.607421875,0.2119140625,0.275390625,0.3955078125,0.51953125,0.6044921875,0.6728515625,0.708984375,0.6796875,0.5771484375,0.4375,0.3212890625,0.2587890625,0.20703125,0.1455078125,0.1064453125,0.123046875,0.1943359375,0.28515625,0.3642578125,0.44140625,0.529296875,0.599609375,0.6240234375,0.6025390625,0.5615234375,0.5302734375,0.498046875,0.447265625,0.3916015625,0.3505859375,0.3369140625,0.345703125,0.3642578125,0.388671875,0.4306640625,0.4775390625,0.5078125,0.5126953125,0.4951171875,0.46875,0.4404296875,0.4111328125,0.40234375,0.4306640625,0.4892578125,0.5537109375,0.6044921875,0.6474609375,0.6640625,0.6298828125,0.5380859375,0.4189453125,0.3173828125,0.2587890625,0.2294921875,0.2646484375,0.3671875,0.4970703125,0.599609375,0.634765625,0.6044921875,0.5546875,0.494140625,0.44140625,0.4169921875,0.423828125,0.447265625,0.46875,0.4931640625,0.529296875,0.56640625,0.5849609375,0.580078125,0.556640625,0.5302734375,0.5126953125,0.52734375,0.5625,0.587890625,0.5810546875,0.537109375,0.46875,0.4052734375,0.3798828125,0.400390625,0.44921875,0.4951171875,0.5029296875,0.46875,0.4345703125,0.4443359375,0.5,0.57421875,0.6298828125,0.6396484375,0.6044921875,0.5595703125,0.521484375,0.4970703125,0.48828125,0.48828125,0.484375,0.46875,0.4443359375,0.404296875,0.3671875,0.35546875,0.3779296875,0.4228515625,0.46875,0.5078125,0.517578125,0.48828125,0.43359375,0.3798828125,0.3544921875,0.3642578125,0.388671875,0.4306640625,0.4775390625,0.5078125,0.5126953125,0.4951171875,0.46875,0.4375,0.3896484375,0.341796875,0.314453125,0.3154296875,0.3369140625,0.3642578125,0.3876953125,0.3935546875,0.375,0.3359375,0.29296875,0.2646484375,0.2587890625,0.2587890625,0.265625,0.2919921875,0.3447265625,0.4130859375,0.4794921875,0.5302734375,0.56640625,0.564453125,0.515625,0.44140625,0.3759765625,0.3486328125,0.3642578125,0.390625,0.4150390625,0.435546875,0.4521484375,0.466796875,0.4814453125,0.5,0.517578125,0.525390625,0.513671875,0.4775390625,0.4296875,0.388671875,0.3642578125,0.35546875,0.3837890625,0.43359375,0.4716796875,0.47265625,0.431640625,0.3642578125,0.287109375,0.205078125,0.162109375,0.189453125,0.2802734375,0.38671875,0.46875,0.546875,0.634765625,0.7041015625,0.728515625,0.7080078125,0.6669921875,0.634765625,0.615234375,0.6240234375,0.662109375,0.712890625,0.7509765625,0.759765625,0.740234375,0.7177734375,0.7080078125,0.6953125,0.666015625,0.611328125,0.5419921875,0.46875,0.400390625,0.35546875,0.3564453125,0.40234375,0.4697265625,0.5185546875,0.5302734375,0.525390625,0.5078125,0.4912109375,0.4912109375,0.5166015625,0.55859375,0.6044921875,0.65625,0.71875,0.7568359375,0.740234375,0.669921875,0.578125,0.5,0.427734375,0.3681640625,0.34765625,0.3779296875,0.44140625,0.5009765625,0.5302734375,0.5546875,0.5966796875,0.642578125,0.673828125,0.6787109375,0.6611328125,0.634765625,0.619140625,0.6416015625,0.6904296875,0.7314453125,0.73828125,0.701171875,0.634765625,0.548828125,0.421875,0.294921875,0.2236328125,0.2294921875,0.291015625,0.3642578125,0.4462890625,0.5595703125,0.6767578125,0.7568359375,0.7822265625,0.7666015625,0.740234375,0.7119140625,0.673828125,0.6298828125,0.5849609375,0.5478515625,0.51953125,0.5,0.4814453125,0.4658203125,0.453125,0.44140625,0.4287109375,0.4130859375,0.39453125,0.3828125,0.400390625,0.447265625,0.501953125,0.5419921875,0.5498046875,0.5302734375,0.515625,0.5478515625,0.6240234375,0.7099609375,0.767578125,0.775390625,0.740234375,0.697265625,0.6669921875,0.654296875,0.6572265625,0.662109375,0.6572265625,0.634765625,0.6064453125,0.568359375,0.513671875,0.4443359375,0.3720703125,0.30859375,0.2587890625,0.22265625,0.23046875,0.2900390625,0.3798828125,0.4638671875,0.505859375,0.5,0.46875,0.3994140625,0.30859375,0.234375,0.203125,0.2177734375,0.2587890625,0.2998046875,0.3232421875,0.328125,0.3251953125,0.330078125,0.353515625,0.39453125,0.4404296875,0.4873046875,0.5302734375,0.5634765625,0.587890625,0.6103515625,0.634765625,0.6474609375,0.6083984375,0.5302734375,0.4521484375,0.416015625,0.4365234375,0.5,0.576171875,0.66015625,0.7236328125,0.740234375,0.7119140625,0.6669921875,0.634765625,0.61328125,0.609375,0.6240234375,0.646484375,0.6611328125,0.6572265625,0.634765625,0.6181640625,0.6376953125,0.6787109375,0.712890625,0.7119140625,0.671875,0.6044921875,0.5263671875,0.4326171875,0.341796875,0.28125,0.2568359375,0.2568359375,0.2587890625,0.2666015625,0.302734375,0.3642578125,0.427734375,0.470703125,0.482421875,0.46875,0.439453125,0.3740234375,0.2900390625,0.22265625,0.1982421875,0.216796875,0.2587890625,0.30859375,0.369140625,0.421875,0.447265625,0.439453125,0.416015625,0.39453125,0.390625,0.4443359375,0.541015625,0.634765625,0.6826171875,0.6669921875,0.6044921875,0.525390625,0.4287109375,0.341796875,0.2978515625,0.3017578125,0.333984375,0.3642578125,0.3876953125,0.400390625,0.408203125,0.421875,0.447265625,0.4853515625,0.5302734375,0.580078125,0.6416015625,0.6923828125,0.712890625,0.697265625,0.6640625,0.634765625,0.6064453125,0.5751953125,0.546875,0.5302734375,0.5263671875,0.5283203125,0.5302734375,0.53125,0.541015625,0.568359375,0.61328125,0.6650390625,0.7099609375,0.740234375,0.7568359375,0.7294921875,0.640625,0.5107421875,0.3798828125,0.2919921875,0.2587890625,0.2587890625,0.3330078125,0.466796875,0.6044921875,0.689453125,0.693359375,0.634765625,0.556640625,0.46484375,0.39453125,0.3779296875,0.416015625,0.478515625,0.5302734375,0.58203125,0.650390625,0.708984375,0.7294921875,0.7041015625,0.6533203125,0.6044921875,0.5576171875,0.5078125,0.46875,0.4521484375,0.4560546875,0.4658203125,0.46875,0.4697265625,0.4677734375,0.4580078125,0.4384765625,0.4111328125,0.384765625,0.3642578125,0.3369140625,0.2841796875,0.2236328125,0.1845703125,0.18359375,0.21484375,0.2587890625,0.3115234375,0.392578125,0.494140625,0.59375,0.6708984375,0.716796875,0.740234375,0.7548828125,0.7470703125,0.7041015625,0.6328125,0.5546875,0.49609375,0.46875,0.4521484375,0.4453125,0.4560546875,0.4794921875,0.5078125,0.525390625,0.5302734375,0.517578125,0.4580078125,0.36328125,0.2734375,0.220703125,0.220703125,0.2587890625,0.3017578125,0.33203125,0.3447265625,0.341796875,0.3369140625,0.341796875,0.3642578125,0.3984375,0.4638671875,0.5517578125,0.201171875,0.2470703125,0.3525390625,0.4677734375,0.55078125,0.6240234375,0.6845703125,0.693359375,0.6298828125,0.5146484375,0.400390625,0.3251953125,0.2568359375,0.1767578125,0.1240234375,0.1328125,0.203125,0.2978515625,0.376953125,0.453125,0.53515625,0.5986328125,0.6240234375,0.611328125,0.5859375,0.5703125,0.548828125,0.4873046875,0.4052734375,0.3369140625,0.310546875,0.3310546875,0.376953125,0.4296875,0.4794921875,0.5078125,0.50390625,0.4755859375,0.4453125,0.4287109375,0.4130859375,0.384765625,0.3642578125,0.375,0.421875,0.4873046875,0.55078125,0.6142578125,0.6669921875,0.673828125,0.6142578125,0.5068359375,0.3994140625,0.3251953125,0.279296875,0.2978515625,0.3828125,0.494140625,0.5791015625,0.5966796875,0.55078125,0.4814453125,0.392578125,0.3154296875,0.2880859375,0.3154296875,0.3740234375,0.4287109375,0.4833984375,0.5439453125,0.5927734375,0.6123046875,0.6044921875,0.583984375,0.5703125,0.56640625,0.583984375,0.603515625,0.6015625,0.564453125,0.5009765625,0.4287109375,0.3681640625,0.3505859375,0.3837890625,0.439453125,0.4814453125,0.478515625,0.4287109375,0.380859375,0.38671875,0.4482421875,0.5322265625,0.59375,0.599609375,0.55078125,0.49609375,0.4658203125,0.46484375,0.48046875,0.4892578125,0.47265625,0.4287109375,0.37109375,0.2978515625,0.2431640625,0.23828125,0.2880859375,0.3623046875,0.4287109375,0.48046875,0.4892578125,0.451171875,0.3896484375,0.341796875,0.337890625,0.376953125,0.4296875,0.4794921875,0.5078125,0.50390625,0.4755859375,0.4453125,0.4287109375,0.416015625,0.396484375,0.375,0.361328125,0.359375,0.3671875,0.376953125,0.3857421875,0.3876953125,0.3779296875,0.3603515625,0.3408203125,0.328125,0.3251953125,0.3232421875,0.31640625,0.3251953125,0.3642578125,0.4296875,0.5048828125,0.5703125,0.6240234375,0.6396484375,0.599609375,0.5185546875,0.431640625,0.3798828125,0.376953125,0.3828125,0.3759765625,0.3671875,0.373046875,0.40234375,0.4482421875,0.5,0.5537109375,0.60546875,0.6259765625,0.5927734375,0.5185546875,0.4365234375,0.376953125,0.337890625,0.341796875,0.3857421875,0.4384765625,0.462890625,0.4404296875,0.376953125,0.298828125,0.2109375,0.15625,0.1689453125,0.248046875,0.34765625,0.4287109375,0.5048828125,0.5869140625,0.650390625,0.67578125,0.6630859375,0.6376953125,0.6220703125,0.6142578125,0.619140625,0.63671875,0.6591796875,0.67578125,0.6806640625,0.673828125,0.66796875,0.671875,0.6689453125,0.638671875,0.5791015625,0.5029296875,0.4287109375,0.3623046875,0.3271484375,0.345703125,0.4130859375,0.498046875,0.556640625,0.5703125,0.5615234375,0.5234375,0.4736328125,0.4423828125,0.44921875,0.4921875,0.55078125,0.6201171875,0.7001953125,0.7529296875,0.744140625,0.673828125,0.5791015625,0.5,0.423828125,0.3505859375,0.3154296875,0.3427734375,0.4208984375,0.5087890625,0.5703125,0.6220703125,0.671875,0.7001953125,0.697265625,0.6689453125,0.6376953125,0.6220703125,0.62109375,0.6552734375,0.70703125,0.7421875,0.736328125,0.6904296875,0.6220703125,0.5361328125,0.412109375,0.291015625,0.2265625,0.2392578125,0.3037109375,0.376953125,0.455078125,0.5498046875,0.63671875,0.689453125,0.7001953125,0.6865234375,0.673828125,0.666015625,0.6669921875,0.6640625,0.64453125,0.6044921875,0.5517578125,0.5,0.4560546875,0.4423828125,0.458984375,0.48828125,0.505859375,0.4912109375,0.4482421875,0.40234375,0.3857421875,0.412109375,0.4697265625,0.533203125,0.5703125,0.5703125,0.5712890625,0.611328125,0.6787109375,0.736328125,0.755859375,0.7294921875,0.673828125,0.6142578125,0.5693359375,0.5537109375,0.5703125,0.6025390625,0.6240234375,0.6220703125,0.61328125,0.60546875,0.5830078125,0.53515625,0.4658203125,0.390625,0.3251953125,0.27734375,0.283203125,0.3486328125,0.4423828125,0.5166015625,0.5361328125,0.5,0.4375,0.34375,0.2490234375,0.19921875,0.2099609375,0.2626953125,0.3251953125,0.3798828125,0.4033203125,0.396484375,0.376953125,0.3701171875,0.3935546875,0.4482421875,0.509765625,0.5703125,0.6123046875,0.6279296875,0.623046875,0.6162109375,0.6220703125,0.619140625,0.5703125,0.4912109375,0.423828125,0.40234375,0.43359375,0.5,0.5732421875,0.646484375,0.6953125,0.701171875,0.673828125,0.638671875,0.6220703125,0.61328125,0.611328125,0.6171875,0.6259765625,0.6318359375,0.6298828125,0.6220703125,0.6201171875,0.6455078125,0.681640625,0.697265625,0.67578125,0.62109375,0.55078125,0.4765625,0.396484375,0.3330078125,0.3037109375,0.306640625,0.3212890625,0.3251953125,0.3349609375,0.376953125,0.4384765625,0.4873046875,0.5009765625,0.4765625,0.4287109375,0.3681640625,0.283203125,0.205078125,0.1728515625,0.19921875,0.26171875,0.3251953125,0.3955078125,0.484375,0.5615234375,0.5888671875,0.5615234375,0.5029296875,0.4482421875,0.41015625,0.427734375,0.4951171875,0.57421875,0.6220703125,0.611328125,0.55078125,0.4755859375,0.396484375,0.3369140625,0.31640625,0.3330078125,0.361328125,0.376953125,0.3837890625,0.37890625,0.3779296875,0.3984375,0.4453125,0.5068359375,0.5703125,0.6328125,0.689453125,0.7197265625,0.7119140625,0.67578125,0.638671875,0.6220703125,0.6103515625,0.5966796875,0.5830078125,0.57421875,0.5703125,0.5693359375,0.5703125,0.5712890625,0.5771484375,0.5927734375,0.6162109375,0.640625,0.6611328125,0.673828125,0.6826171875,0.677734375,0.6396484375,0.5654296875,0.470703125,0.384765625,0.3251953125,0.29296875,0.3330078125,0.443359375,0.5732421875,0.6640625,0.677734375,0.6220703125,0.5419921875,0.4482421875,0.376953125,0.3681640625,0.4208984375,0.501953125,0.5703125,0.6376953125,0.7158203125,0.7685546875,0.763671875,0.7021484375,0.6201171875,0.55078125,0.48828125,0.4287109375,0.390625,0.3837890625,0.40234375,0.4228515625,0.4287109375,0.4345703125,0.4580078125,0.484375,0.4921875,0.4716796875,0.427734375,0.376953125,0.318359375,0.2392578125,0.171875,0.154296875,0.1923828125,0.259765625,0.3251953125,0.38671875,0.443359375,0.4951171875,0.5390625,0.580078125,0.6240234375,0.673828125,0.724609375,0.76171875,0.7548828125,0.689453125,0.587890625,0.4912109375,0.4287109375,0.3828125,0.3623046875,0.384765625,0.443359375,0.5126953125,0.5595703125,0.5703125,0.5556640625,0.490234375,0.390625,0.2998046875,0.2568359375,0.271484375,0.3251953125,0.384765625,0.4296875,0.4453125,0.4287109375,0.396484375,0.375,0.376953125,0.39453125,0.4375,0.505859375,0.21875,0.2392578125,0.32421875,0.427734375,0.509765625,0.5869140625,0.6689453125,0.71484375,0.6904296875,0.603515625,0.5,0.419921875,0.341796875,0.25,0.185546875,0.1875,0.255859375,0.349609375,0.4296875,0.5029296875,0.572265625,0.615234375,0.6201171875,0.5947265625,0.568359375,0.5595703125,0.544921875,0.48828125,0.408203125,0.345703125,0.3310546875,0.3662109375,0.4296875,0.4970703125,0.548828125,0.5654296875,0.5390625,0.490234375,0.4501953125,0.439453125,0.4296875,0.396484375,0.359375,0.3486328125,0.37890625,0.439453125,0.509765625,0.5849609375,0.666015625,0.7119140625,0.6875,0.6025390625,0.5,0.419921875,0.36328125,0.3642578125,0.4228515625,0.505859375,0.5654296875,0.5654296875,0.509765625,0.4306640625,0.3310546875,0.2509765625,0.2333984375,0.283203125,0.365234375,0.439453125,0.5087890625,0.5751953125,0.615234375,0.619140625,0.59375,0.5673828125,0.5595703125,0.564453125,0.5908203125,0.6171875,0.6171875,0.578125,0.51171875,0.439453125,0.3798828125,0.3681640625,0.4072265625,0.466796875,0.5078125,0.498046875,0.439453125,0.3828125,0.380859375,0.435546875,0.513671875,0.568359375,0.56640625,0.509765625,0.44921875,0.4296875,0.4521484375,0.4921875,0.515625,0.498046875,0.439453125,0.36328125,0.2724609375,0.2080078125,0.20703125,0.271484375,0.3623046875,0.439453125,0.498046875,0.5087890625,0.4677734375,0.4072265625,0.365234375,0.373046875,0.4296875,0.4970703125,0.548828125,0.5654296875,0.5390625,0.490234375,0.4501953125,0.439453125,0.4375,0.4345703125,0.4306640625,0.427734375,0.4267578125,0.427734375,0.4296875,0.4306640625,0.4306640625,0.4296875,0.42578125,0.4228515625,0.419921875,0.419921875,0.4130859375,0.3896484375,0.3681640625,0.3759765625,0.419921875,0.48828125,0.5595703125,0.6240234375,0.6591796875,0.6416015625,0.5771484375,0.49609375,0.4404296875,0.4296875,0.423828125,0.3935546875,0.3583984375,0.3466796875,0.3740234375,0.431640625,0.5,0.57421875,0.6552734375,0.703125,0.6845703125,0.60546875,0.5078125,0.4296875,0.373046875,0.365234375,0.4052734375,0.46484375,0.5029296875,0.490234375,0.4296875,0.3505859375,0.2568359375,0.1923828125,0.1953125,0.2646484375,0.359375,0.439453125,0.5126953125,0.58203125,0.625,0.6298828125,0.60546875,0.578125,0.5693359375,0.568359375,0.5693359375,0.572265625,0.576171875,0.5791015625,0.580078125,0.5791015625,0.583984375,0.607421875,0.6298828125,0.6240234375,0.5810546875,0.5126953125,0.439453125,0.373046875,0.3349609375,0.3486328125,0.41015625,0.490234375,0.546875,0.5595703125,0.548828125,0.501953125,0.4384765625,0.3955078125,0.3974609375,0.4423828125,0.509765625,0.5869140625,0.6787109375,0.7431640625,0.7412109375,0.673828125,0.5791015625,0.5,0.421875,0.3369140625,0.2861328125,0.302734375,0.3828125,0.4814453125,0.5595703125,0.6259765625,0.6787109375,0.6943359375,0.6689453125,0.6201171875,0.580078125,0.5693359375,0.5771484375,0.6181640625,0.6708984375,0.7021484375,0.6904296875,0.638671875,0.5693359375,0.486328125,0.375,0.27734375,0.240234375,0.2763671875,0.353515625,0.4296875,0.5029296875,0.5751953125,0.623046875,0.6328125,0.6123046875,0.5869140625,0.5791015625,0.5849609375,0.6142578125,0.6474609375,0.6552734375,0.6259765625,0.5673828125,0.5,0.4423828125,0.4306640625,0.466796875,0.5224609375,0.55859375,0.546875,0.4892578125,0.4248046875,0.384765625,0.388671875,0.4365234375,0.5029296875,0.5498046875,0.5595703125,0.568359375,0.609375,0.666015625,0.7021484375,0.6943359375,0.646484375,0.5791015625,0.5107421875,0.4599609375,0.4453125,0.4736328125,0.5234375,0.5615234375,0.5693359375,0.57421875,0.595703125,0.6142578125,0.6044921875,0.5595703125,0.4912109375,0.419921875,0.36328125,0.361328125,0.4169921875,0.4970703125,0.5537109375,0.5546875,0.5,0.421875,0.3212890625,0.23828125,0.216796875,0.2626953125,0.34375,0.419921875,0.4794921875,0.4990234375,0.474609375,0.4345703125,0.41015625,0.4296875,0.4892578125,0.5595703125,0.619140625,0.6484375,0.6396484375,0.60546875,0.5751953125,0.5693359375,0.5595703125,0.5107421875,0.44140625,0.392578125,0.388671875,0.431640625,0.5,0.5712890625,0.6328125,0.6630859375,0.65234375,0.61328125,0.5791015625,0.5693359375,0.568359375,0.5673828125,0.568359375,0.5703125,0.5712890625,0.5703125,0.5693359375,0.576171875,0.609375,0.6494140625,0.6640625,0.638671875,0.580078125,0.509765625,0.4375,0.3740234375,0.3408203125,0.34765625,0.380859375,0.412109375,0.419921875,0.4296875,0.4716796875,0.52734375,0.5615234375,0.5537109375,0.505859375,0.439453125,0.36328125,0.26953125,0.2001953125,0.1943359375,0.25390625,0.3427734375,0.419921875,0.4990234375,0.5986328125,0.677734375,0.6953125,0.646484375,0.564453125,0.4892578125,0.43359375,0.427734375,0.47265625,0.537109375,0.5791015625,0.5693359375,0.509765625,0.4375,0.375,0.341796875,0.3505859375,0.38671875,0.419921875,0.4296875,0.4248046875,0.400390625,0.3779296875,0.3818359375,0.4228515625,0.48828125,0.5595703125,0.6279296875,0.681640625,0.697265625,0.671875,0.62109375,0.580078125,0.5693359375,0.5673828125,0.5654296875,0.5625,0.560546875,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.560546875,0.564453125,0.568359375,0.5732421875,0.5771484375,0.5791015625,0.5869140625,0.6083984375,0.6240234375,0.6103515625,0.560546875,0.490234375,0.419921875,0.3671875,0.376953125,0.451171875,0.5498046875,0.6201171875,0.6259765625,0.5693359375,0.4892578125,0.3955078125,0.3271484375,0.3251953125,0.3896484375,0.4814453125,0.5595703125,0.6357421875,0.7216796875,0.7763671875,0.7626953125,0.6865234375,0.5888671875,0.509765625,0.439453125,0.3798828125,0.3515625,0.3623046875,0.3994140625,0.431640625,0.439453125,0.44921875,0.4873046875,0.5361328125,0.5625,0.5478515625,0.49609375,0.4296875,0.353515625,0.26171875,0.1943359375,0.19140625,0.2529296875,0.3427734375,0.419921875,0.482421875,0.5126953125,0.5107421875,0.494140625,0.490234375,0.5185546875,0.5791015625,0.65234375,0.724609375,0.7568359375,0.720703125,0.6259765625,0.5185546875,0.439453125,0.3759765625,0.3408203125,0.3544921875,0.4150390625,0.4931640625,0.546875,0.5595703125,0.5458984375,0.48828125,0.4052734375,0.3388671875,0.3203125,0.3544921875,0.419921875,0.48828125,0.5390625,0.5537109375,0.525390625,0.4755859375,0.4375,0.4296875,0.4345703125,0.4541015625,0.48828125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.3154296875,0.298828125,0.349609375,0.43359375,0.509765625,0.5888671875,0.689453125,0.7705078125,0.7880859375,0.7392578125,0.6552734375,0.5791015625,0.5009765625,0.4091796875,0.3427734375,0.3408203125,0.4033203125,0.4931640625,0.5693359375,0.6328125,0.66796875,0.6533203125,0.5908203125,0.5107421875,0.4541015625,0.439453125,0.431640625,0.4052734375,0.3828125,0.3896484375,0.435546875,0.505859375,0.5791015625,0.6484375,0.69921875,0.708984375,0.6748046875,0.619140625,0.578125,0.5693359375,0.5595703125,0.509765625,0.4404296875,0.388671875,0.3828125,0.423828125,0.4892578125,0.5693359375,0.671875,0.755859375,0.7783203125,0.73046875,0.646484375,0.5693359375,0.5068359375,0.484375,0.5048828125,0.54296875,0.5654296875,0.5478515625,0.4892578125,0.4150390625,0.333984375,0.2880859375,0.310546875,0.39453125,0.498046875,0.5791015625,0.6455078125,0.681640625,0.6630859375,0.595703125,0.51171875,0.453125,0.439453125,0.4521484375,0.505859375,0.583984375,0.64453125,0.658203125,0.623046875,0.5595703125,0.5029296875,0.494140625,0.53515625,0.5947265625,0.6318359375,0.619140625,0.5595703125,0.498046875,0.4775390625,0.501953125,0.5458984375,0.5732421875,0.5576171875,0.5,0.4443359375,0.4453125,0.501953125,0.58203125,0.6376953125,0.6357421875,0.5791015625,0.5009765625,0.4072265625,0.337890625,0.3349609375,0.3984375,0.490234375,0.5693359375,0.62890625,0.638671875,0.595703125,0.5322265625,0.490234375,0.5,0.5595703125,0.6298828125,0.6845703125,0.7021484375,0.6767578125,0.6279296875,0.5888671875,0.5791015625,0.5791015625,0.5791015625,0.5791015625,0.5791015625,0.5791015625,0.5791015625,0.5791015625,0.5791015625,0.5791015625,0.5791015625,0.5791015625,0.5791015625,0.5791015625,0.5791015625,0.5654296875,0.505859375,0.41796875,0.345703125,0.3232421875,0.35546875,0.419921875,0.4912109375,0.5615234375,0.609375,0.6201171875,0.6005859375,0.5771484375,0.5693359375,0.5556640625,0.5048828125,0.435546875,0.3876953125,0.3857421875,0.4306640625,0.5,0.5810546875,0.68359375,0.765625,0.7841796875,0.7333984375,0.6474609375,0.5693359375,0.5087890625,0.49609375,0.533203125,0.58984375,0.6279296875,0.6181640625,0.5595703125,0.4814453125,0.390625,0.3271484375,0.3271484375,0.392578125,0.4833984375,0.5595703125,0.6220703125,0.654296875,0.634765625,0.568359375,0.486328125,0.4306640625,0.419921875,0.421875,0.423828125,0.427734375,0.431640625,0.435546875,0.4375,0.439453125,0.4541015625,0.5126953125,0.595703125,0.6591796875,0.673828125,0.63671875,0.5693359375,0.49609375,0.42578125,0.37890625,0.3701171875,0.3896484375,0.4130859375,0.419921875,0.412109375,0.3818359375,0.3505859375,0.34375,0.376953125,0.439453125,0.509765625,0.5869140625,0.6767578125,0.73828125,0.7353515625,0.66796875,0.576171875,0.5,0.421875,0.3212890625,0.23828125,0.216796875,0.2626953125,0.34375,0.419921875,0.4873046875,0.5380859375,0.5498046875,0.51953125,0.4677734375,0.427734375,0.419921875,0.431640625,0.4755859375,0.533203125,0.5673828125,0.5576171875,0.5078125,0.439453125,0.3642578125,0.287109375,0.25,0.283203125,0.3779296875,0.486328125,0.5693359375,0.6357421875,0.669921875,0.6513671875,0.5830078125,0.4990234375,0.44140625,0.4296875,0.443359375,0.494140625,0.564453125,0.615234375,0.6181640625,0.576171875,0.509765625,0.4501953125,0.4365234375,0.4697265625,0.5234375,0.55859375,0.546875,0.4892578125,0.421875,0.3662109375,0.341796875,0.357421875,0.3974609375,0.431640625,0.439453125,0.44921875,0.490234375,0.5419921875,0.572265625,0.55859375,0.5078125,0.439453125,0.37109375,0.3173828125,0.2998046875,0.32421875,0.3720703125,0.41015625,0.419921875,0.43359375,0.4931640625,0.5810546875,0.6533203125,0.67578125,0.6435546875,0.5791015625,0.51953125,0.5,0.5224609375,0.5615234375,0.5830078125,0.5615234375,0.5,0.421875,0.3369140625,0.2880859375,0.3095703125,0.3935546875,0.498046875,0.5791015625,0.6376953125,0.640625,0.5859375,0.5078125,0.4521484375,0.453125,0.509765625,0.576171875,0.619140625,0.6162109375,0.568359375,0.5,0.451171875,0.439453125,0.431640625,0.3994140625,0.361328125,0.3486328125,0.3740234375,0.431640625,0.5,0.564453125,0.607421875,0.6064453125,0.5615234375,0.498046875,0.4501953125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.451171875,0.5,0.568359375,0.6162109375,0.619140625,0.576171875,0.509765625,0.4423828125,0.3994140625,0.400390625,0.4482421875,0.515625,0.56640625,0.5791015625,0.5908203125,0.6328125,0.685546875,0.7138671875,0.7001953125,0.6474609375,0.5791015625,0.5009765625,0.4091796875,0.3447265625,0.3447265625,0.4091796875,0.5009765625,0.5791015625,0.6552734375,0.7353515625,0.7783203125,0.75390625,0.669921875,0.568359375,0.4892578125,0.4326171875,0.4248046875,0.4658203125,0.5244140625,0.5625,0.5498046875,0.4892578125,0.421875,0.3798828125,0.3857421875,0.4375,0.5087890625,0.55859375,0.5693359375,0.5546875,0.4970703125,0.416015625,0.3525390625,0.337890625,0.3740234375,0.439453125,0.5078125,0.55859375,0.572265625,0.5419921875,0.490234375,0.44921875,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.4375,0.43359375,0.4306640625,0.4287109375,0.4287109375,0.4296875,0.4443359375,0.501953125,0.583984375,0.6494140625,0.6669921875,0.6328125,0.5693359375,0.5087890625,0.4814453125,0.4873046875,0.5068359375,0.51171875,0.4814453125,0.419921875,0.341796875,0.25,0.185546875,0.1875,0.255859375,0.349609375,0.4296875,0.5107421875,0.6123046875,0.6923828125,0.7080078125,0.654296875,0.568359375,0.4892578125,0.421875,0.3779296875,0.380859375,0.431640625,0.5029296875,0.5556640625,0.5693359375,0.5810546875,0.6240234375,0.677734375,0.70703125,0.6923828125,0.6396484375,0.5693359375,0.4892578125,0.3935546875,0.3251953125,0.322265625,0.38671875,0.4794921875,0.5595703125,0.6162109375,0.611328125,0.5419921875,0.447265625,0.3779296875,0.373046875,0.4296875,0.51171875,0.6201171875,0.712890625,0.74609375,0.708984375,0.6328125,0.5595703125,0.490234375,0.423828125,0.380859375,0.3740234375,0.3935546875,0.4150390625,0.419921875,0.412109375,0.3896484375,0.37109375,0.3828125,0.4296875,0.4990234375,0.5693359375,0.63671875,0.6884765625,0.7041015625,0.6787109375,0.6298828125,0.58984375,0.5791015625,0.57421875,0.5546875,0.5224609375,0.4091796875,0.38671875,0.419921875,0.486328125,0.55078125,0.6220703125,0.7177734375,0.8017578125,0.833984375,0.8046875,0.73828125,0.673828125,0.60546875,0.5244140625,0.4638671875,0.4541015625,0.498046875,0.564453125,0.6220703125,0.66796875,0.6884765625,0.662109375,0.59375,0.51171875,0.4501953125,0.4287109375,0.4150390625,0.39453125,0.39453125,0.4326171875,0.5087890625,0.5966796875,0.673828125,0.740234375,0.7802734375,0.7744140625,0.7265625,0.6630859375,0.623046875,0.6220703125,0.619140625,0.5703125,0.4873046875,0.4111328125,0.3759765625,0.3935546875,0.4482421875,0.521484375,0.62890625,0.732421875,0.783203125,0.7626953125,0.6962890625,0.6220703125,0.5546875,0.5107421875,0.4970703125,0.5029296875,0.5078125,0.4912109375,0.4482421875,0.3935546875,0.341796875,0.3291015625,0.3798828125,0.4814453125,0.5908203125,0.673828125,0.7373046875,0.759765625,0.71875,0.6240234375,0.515625,0.4443359375,0.4287109375,0.439453125,0.486328125,0.5556640625,0.6142578125,0.63671875,0.6162109375,0.5703125,0.5302734375,0.53515625,0.5791015625,0.630859375,0.6552734375,0.6328125,0.5703125,0.505859375,0.474609375,0.4833984375,0.5166015625,0.544921875,0.541015625,0.5,0.462890625,0.482421875,0.556640625,0.650390625,0.7158203125,0.7216796875,0.673828125,0.6025390625,0.509765625,0.43359375,0.4150390625,0.462890625,0.544921875,0.6220703125,0.6806640625,0.6845703125,0.6328125,0.55859375,0.5068359375,0.51171875,0.5703125,0.642578125,0.70703125,0.7431640625,0.740234375,0.7099609375,0.6806640625,0.673828125,0.673828125,0.673828125,0.673828125,0.673828125,0.673828125,0.673828125,0.673828125,0.673828125,0.673828125,0.673828125,0.673828125,0.673828125,0.673828125,0.673828125,0.6572265625,0.5791015625,0.455078125,0.337890625,0.271484375,0.2744140625,0.3251953125,0.3935546875,0.48046875,0.5654296875,0.6220703125,0.640625,0.6337890625,0.6220703125,0.5986328125,0.5341796875,0.4521484375,0.3935546875,0.3876953125,0.4306640625,0.5,0.58203125,0.69140625,0.78515625,0.8173828125,0.7783203125,0.6982421875,0.6220703125,0.5595703125,0.5361328125,0.5576171875,0.599609375,0.6298828125,0.62109375,0.5703125,0.5029296875,0.4287109375,0.3798828125,0.3837890625,0.439453125,0.51171875,0.5703125,0.6123046875,0.6142578125,0.5615234375,0.470703125,0.3798828125,0.328125,0.3251953125,0.3369140625,0.3505859375,0.3681640625,0.38671875,0.404296875,0.41796875,0.4287109375,0.453125,0.5263671875,0.625,0.701171875,0.7236328125,0.6884765625,0.6220703125,0.544921875,0.45703125,0.376953125,0.3291015625,0.31640625,0.322265625,0.3251953125,0.322265625,0.314453125,0.318359375,0.3525390625,0.4140625,0.486328125,0.55078125,0.6171875,0.6845703125,0.72265625,0.705078125,0.6376953125,0.55859375,0.5,0.4375,0.34375,0.2490234375,0.19921875,0.2099609375,0.2626953125,0.3251953125,0.3837890625,0.4228515625,0.4267578125,0.3955078125,0.3525390625,0.32421875,0.3251953125,0.3466796875,0.40234375,0.4736328125,0.5224609375,0.5263671875,0.4873046875,0.4287109375,0.3642578125,0.30078125,0.279296875,0.3251953125,0.427734375,0.5390625,0.6220703125,0.6845703125,0.701171875,0.65234375,0.552734375,0.4462890625,0.3828125,0.376953125,0.400390625,0.46484375,0.55078125,0.6181640625,0.6376953125,0.6083984375,0.55078125,0.49609375,0.46875,0.4716796875,0.4921875,0.505859375,0.4912109375,0.4482421875,0.3974609375,0.3583984375,0.3447265625,0.361328125,0.39453125,0.421875,0.4287109375,0.4375,0.4736328125,0.5185546875,0.544921875,0.533203125,0.48828125,0.4287109375,0.3671875,0.3095703125,0.275390625,0.2734375,0.296875,0.3193359375,0.3251953125,0.341796875,0.419921875,0.5439453125,0.6611328125,0.7275390625,0.724609375,0.673828125,0.6201171875,0.595703125,0.5986328125,0.609375,0.6025390625,0.564453125,0.5,0.423828125,0.3505859375,0.3232421875,0.369140625,0.474609375,0.58984375,0.673828125,0.7314453125,0.7333984375,0.673828125,0.5849609375,0.515625,0.50390625,0.55078125,0.6083984375,0.6376953125,0.6220703125,0.5634765625,0.4912109375,0.4404296875,0.4287109375,0.423828125,0.40234375,0.3798828125,0.376953125,0.40234375,0.4482421875,0.5,0.5478515625,0.576171875,0.5703125,0.529296875,0.4755859375,0.4375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4404296875,0.4912109375,0.5634765625,0.6220703125,0.6376953125,0.6083984375,0.55078125,0.4931640625,0.45703125,0.46484375,0.5185546875,0.59375,0.65234375,0.673828125,0.6923828125,0.7353515625,0.783203125,0.8046875,0.78515625,0.734375,0.673828125,0.60546875,0.5244140625,0.4677734375,0.4677734375,0.5244140625,0.60546875,0.673828125,0.7353515625,0.7822265625,0.78125,0.716796875,0.611328125,0.5107421875,0.4482421875,0.408203125,0.4130859375,0.45703125,0.5087890625,0.533203125,0.5107421875,0.4482421875,0.3837890625,0.3583984375,0.3916015625,0.47265625,0.5625,0.6181640625,0.6220703125,0.5986328125,0.5322265625,0.44140625,0.369140625,0.3447265625,0.3720703125,0.4287109375,0.48828125,0.533203125,0.544921875,0.5185546875,0.4736328125,0.4375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4267578125,0.4140625,0.39453125,0.376953125,0.3671875,0.3681640625,0.376953125,0.400390625,0.466796875,0.5615234375,0.6435546875,0.6806640625,0.6669921875,0.6220703125,0.57421875,0.5361328125,0.5068359375,0.4755859375,0.4365234375,0.384765625,0.3251953125,0.2568359375,0.1767578125,0.1240234375,0.1328125,0.203125,0.2978515625,0.376953125,0.458984375,0.5615234375,0.6435546875,0.662109375,0.611328125,0.5263671875,0.4482421875,0.380859375,0.34375,0.361328125,0.4326171875,0.52734375,0.59765625,0.6220703125,0.6416015625,0.69140625,0.74609375,0.7724609375,0.7509765625,0.693359375,0.6220703125,0.541015625,0.4404296875,0.3623046875,0.3486328125,0.4033203125,0.4912109375,0.5703125,0.625,0.6123046875,0.529296875,0.41796875,0.3349609375,0.322265625,0.376953125,0.458984375,0.564453125,0.658203125,0.7001953125,0.6806640625,0.625,0.5703125,0.5166015625,0.455078125,0.3994140625,0.3603515625,0.341796875,0.333984375,0.3251953125,0.3154296875,0.314453125,0.33984375,0.4013671875,0.484375,0.5634765625,0.6220703125,0.673828125,0.7236328125,0.751953125,0.7490234375,0.720703125,0.689453125,0.673828125,0.65625,0.61328125,0.548828125,0.521484375,0.501953125,0.5185546875,0.55859375,0.6044921875,0.658203125,0.734375,0.806640625,0.8427734375,0.830078125,0.787109375,0.740234375,0.6904296875,0.6337890625,0.587890625,0.5712890625,0.5849609375,0.6123046875,0.634765625,0.6533203125,0.662109375,0.6484375,0.607421875,0.5517578125,0.5009765625,0.46875,0.439453125,0.412109375,0.4140625,0.4658203125,0.5595703125,0.66015625,0.740234375,0.8037109375,0.828125,0.7978515625,0.728515625,0.6572265625,0.6220703125,0.634765625,0.6484375,0.6123046875,0.5302734375,0.435546875,0.37109375,0.359375,0.39453125,0.4541015625,0.55859375,0.673828125,0.748046875,0.7548828125,0.705078125,0.634765625,0.5625,0.4912109375,0.4384765625,0.4140625,0.41015625,0.408203125,0.39453125,0.3740234375,0.3603515625,0.380859375,0.44921875,0.5546875,0.6591796875,0.740234375,0.8037109375,0.8232421875,0.775390625,0.673828125,0.5595703125,0.4853515625,0.46875,0.4736328125,0.4912109375,0.51953125,0.54296875,0.5537109375,0.546875,0.5302734375,0.521484375,0.548828125,0.599609375,0.6376953125,0.638671875,0.5966796875,0.5302734375,0.4619140625,0.4169921875,0.4111328125,0.44140625,0.484375,0.5087890625,0.5,0.4931640625,0.53515625,0.619140625,0.708984375,0.7685546875,0.7763671875,0.740234375,0.68359375,0.595703125,0.5107421875,0.4716796875,0.4951171875,0.5615234375,0.634765625,0.6923828125,0.6904296875,0.626953125,0.5380859375,0.474609375,0.47265625,0.5302734375,0.6044921875,0.6826171875,0.7421875,0.767578125,0.76171875,0.7451171875,0.740234375,0.740234375,0.740234375,0.740234375,0.740234375,0.740234375,0.740234375,0.740234375,0.740234375,0.740234375,0.740234375,0.740234375,0.740234375,0.740234375,0.740234375,0.72265625,0.6376953125,0.4970703125,0.3505859375,0.2509765625,0.2255859375,0.2587890625,0.3154296875,0.4091796875,0.521484375,0.61328125,0.658203125,0.658203125,0.634765625,0.595703125,0.5185546875,0.4306640625,0.375,0.3779296875,0.4296875,0.5,0.58203125,0.693359375,0.7900390625,0.826171875,0.7890625,0.7119140625,0.634765625,0.5693359375,0.5302734375,0.52734375,0.548828125,0.5703125,0.56640625,0.5302734375,0.4833984375,0.439453125,0.416015625,0.427734375,0.46484375,0.5048828125,0.5302734375,0.5380859375,0.50390625,0.427734375,0.3369140625,0.2666015625,0.2421875,0.2587890625,0.2861328125,0.3154296875,0.34765625,0.380859375,0.4130859375,0.4423828125,0.46875,0.5087890625,0.58984375,0.685546875,0.748046875,0.751953125,0.7041015625,0.634765625,0.556640625,0.4580078125,0.361328125,0.2919921875,0.26171875,0.2578125,0.2587890625,0.2607421875,0.2763671875,0.3193359375,0.3916015625,0.4775390625,0.552734375,0.6044921875,0.6484375,0.6806640625,0.6796875,0.640625,0.580078125,0.5263671875,0.5,0.46875,0.3994140625,0.30859375,0.234375,0.203125,0.2177734375,0.2587890625,0.2998046875,0.3173828125,0.3056640625,0.275390625,0.2470703125,0.2392578125,0.2587890625,0.2958984375,0.3671875,0.4521484375,0.5166015625,0.53515625,0.51171875,0.46875,0.4189453125,0.3642578125,0.33984375,0.3720703125,0.4560546875,0.5546875,0.634765625,0.6943359375,0.69921875,0.6318359375,0.5185546875,0.41015625,0.3544921875,0.3642578125,0.4013671875,0.4765625,0.568359375,0.640625,0.666015625,0.646484375,0.6044921875,0.55859375,0.5107421875,0.4697265625,0.44140625,0.4248046875,0.4111328125,0.39453125,0.3779296875,0.373046875,0.3857421875,0.4140625,0.4443359375,0.46484375,0.46875,0.4755859375,0.501953125,0.53515625,0.5546875,0.546875,0.513671875,0.46875,0.419921875,0.361328125,0.306640625,0.26953125,0.2568359375,0.2578125,0.2587890625,0.2763671875,0.361328125,0.501953125,0.6484375,0.748046875,0.7734375,0.740234375,0.7001953125,0.6796875,0.6708984375,0.6572265625,0.6240234375,0.568359375,0.5,0.42578125,0.3603515625,0.34765625,0.4111328125,0.53125,0.654296875,0.740234375,0.80078125,0.8095703125,0.7587890625,0.673828125,0.5986328125,0.5732421875,0.6044921875,0.6455078125,0.662109375,0.640625,0.5849609375,0.521484375,0.478515625,0.46875,0.466796875,0.4599609375,0.4521484375,0.4521484375,0.462890625,0.48046875,0.5,0.517578125,0.52734375,0.5244140625,0.5078125,0.4873046875,0.47265625,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.478515625,0.521484375,0.5849609375,0.640625,0.662109375,0.6455078125,0.6044921875,0.5595703125,0.5283203125,0.5302734375,0.57421875,0.642578125,0.705078125,0.740234375,0.7724609375,0.8173828125,0.8564453125,0.8642578125,0.8359375,0.7880859375,0.740234375,0.689453125,0.6298828125,0.587890625,0.587890625,0.6298828125,0.689453125,0.740234375,0.7783203125,0.78125,0.7265625,0.6240234375,0.509765625,0.4267578125,0.39453125,0.3857421875,0.4140625,0.4638671875,0.501953125,0.5029296875,0.4619140625,0.39453125,0.333984375,0.326171875,0.3857421875,0.4912109375,0.59375,0.6455078125,0.634765625,0.599609375,0.533203125,0.4580078125,0.40625,0.396484375,0.4248046875,0.46875,0.513671875,0.546875,0.5546875,0.53515625,0.501953125,0.4755859375,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.462890625,0.4345703125,0.3916015625,0.3525390625,0.333984375,0.3408203125,0.3642578125,0.3984375,0.4619140625,0.541015625,0.609375,0.6474609375,0.650390625,0.634765625,0.6142578125,0.5810546875,0.52734375,0.455078125,0.376953125,0.3095703125,0.2587890625,0.20703125,0.1455078125,0.1064453125,0.123046875,0.1943359375,0.28515625,0.3642578125,0.4443359375,0.5419921875,0.6162109375,0.6240234375,0.5634765625,0.4736328125,0.39453125,0.326171875,0.2880859375,0.30859375,0.3916015625,0.50390625,0.59375,0.634765625,0.6708984375,0.7314453125,0.7900390625,0.8095703125,0.7763671875,0.7080078125,0.634765625,0.552734375,0.4462890625,0.35546875,0.328125,0.37109375,0.4521484375,0.5302734375,0.5859375,0.576171875,0.4990234375,0.39453125,0.3173828125,0.30859375,0.3642578125,0.4404296875,0.5234375,0.587890625,0.609375,0.58984375,0.5546875,0.5302734375,0.5087890625,0.4775390625,0.4326171875,0.380859375,0.3291015625,0.2880859375,0.2587890625,0.2392578125,0.2548828125,0.3193359375,0.421875,0.529296875,0.6044921875,0.634765625,0.6591796875,0.701171875,0.748046875,0.779296875,0.783203125,0.765625,0.740234375,0.7041015625,0.63671875,0.5517578125,0.61328125,0.6015625,0.599609375,0.611328125,0.634765625,0.6669921875,0.7138671875,0.76171875,0.7900390625,0.7890625,0.7666015625,0.740234375,0.7138671875,0.689453125,0.66796875,0.6513671875,0.6376953125,0.6220703125,0.6044921875,0.5908203125,0.59375,0.607421875,0.615234375,0.6044921875,0.5732421875,0.5302734375,0.48046875,0.431640625,0.416015625,0.4609375,0.5546875,0.6591796875,0.740234375,0.80078125,0.8095703125,0.7587890625,0.673828125,0.5986328125,0.5732421875,0.6044921875,0.6396484375,0.6279296875,0.5634765625,0.46875,0.38671875,0.3505859375,0.3642578125,0.4052734375,0.4951171875,0.607421875,0.6904296875,0.7109375,0.6728515625,0.6044921875,0.5263671875,0.43359375,0.3525390625,0.3115234375,0.314453125,0.3408203125,0.3642578125,0.380859375,0.3994140625,0.4326171875,0.494140625,0.5771484375,0.6640625,0.740234375,0.8046875,0.83203125,0.7978515625,0.7119140625,0.6123046875,0.544921875,0.5302734375,0.525390625,0.5078125,0.4794921875,0.4560546875,0.4453125,0.4521484375,0.46875,0.498046875,0.552734375,0.6103515625,0.6328125,0.60546875,0.5419921875,0.46875,0.3974609375,0.337890625,0.3173828125,0.34765625,0.4111328125,0.470703125,0.5,0.52734375,0.5859375,0.662109375,0.7294921875,0.763671875,0.7626953125,0.740234375,0.701171875,0.6240234375,0.53515625,0.48046875,0.4833984375,0.5341796875,0.6044921875,0.6611328125,0.6552734375,0.5849609375,0.48828125,0.41796875,0.412109375,0.46875,0.544921875,0.630859375,0.7041015625,0.7451171875,0.7529296875,0.744140625,0.740234375,0.740234375,0.740234375,0.740234375,0.740234375,0.740234375,0.740234375,0.740234375,0.740234375,0.740234375,0.740234375,0.740234375,0.740234375,0.740234375,0.740234375,0.7255859375,0.6513671875,0.5244140625,0.3857421875,0.283203125,0.244140625,0.2587890625,0.298828125,0.38671875,0.501953125,0.6015625,0.650390625,0.64453125,0.6044921875,0.5478515625,0.4609375,0.375,0.3359375,0.3603515625,0.42578125,0.5,0.58203125,0.6884765625,0.7783203125,0.806640625,0.763671875,0.681640625,0.6044921875,0.53515625,0.4814453125,0.4580078125,0.4638671875,0.482421875,0.48828125,0.46875,0.4462890625,0.4375,0.447265625,0.4658203125,0.482421875,0.484375,0.46875,0.439453125,0.3740234375,0.2900390625,0.22265625,0.1982421875,0.216796875,0.2587890625,0.302734375,0.3427734375,0.3779296875,0.4111328125,0.4462890625,0.4853515625,0.5302734375,0.5859375,0.669921875,0.748046875,0.779296875,0.7490234375,0.6787109375,0.6044921875,0.5263671875,0.4326171875,0.341796875,0.28125,0.2568359375,0.2568359375,0.2587890625,0.263671875,0.2939453125,0.3583984375,0.447265625,0.53515625,0.6005859375,0.634765625,0.6552734375,0.646484375,0.607421875,0.5517578125,0.505859375,0.48828125,0.5,0.5087890625,0.4775390625,0.408203125,0.3251953125,0.2626953125,0.2412109375,0.2587890625,0.2783203125,0.271484375,0.2421875,0.2119140625,0.201171875,0.21875,0.2587890625,0.3134765625,0.39453125,0.482421875,0.546875,0.568359375,0.5556640625,0.5302734375,0.49609375,0.4443359375,0.40234375,0.4033203125,0.4521484375,0.529296875,0.6044921875,0.6630859375,0.6640625,0.5966796875,0.4912109375,0.3994140625,0.365234375,0.39453125,0.4482421875,0.525390625,0.607421875,0.6630859375,0.677734375,0.6611328125,0.634765625,0.6005859375,0.537109375,0.4580078125,0.3896484375,0.3515625,0.3486328125,0.3642578125,0.38671875,0.419921875,0.4609375,0.4970703125,0.51953125,0.5283203125,0.5302734375,0.533203125,0.548828125,0.568359375,0.580078125,0.5751953125,0.5556640625,0.5302734375,0.498046875,0.4453125,0.3798828125,0.3203125,0.279296875,0.26171875,0.2587890625,0.2734375,0.34765625,0.474609375,0.61328125,0.7158203125,0.7548828125,0.740234375,0.71875,0.7119140625,0.70703125,0.6845703125,0.6376953125,0.5712890625,0.5,0.42578125,0.3603515625,0.34765625,0.4111328125,0.53125,0.654296875,0.740234375,0.8037109375,0.828125,0.7978515625,0.728515625,0.6572265625,0.6220703125,0.634765625,0.658203125,0.6650390625,0.646484375,0.607421875,0.564453125,0.5361328125,0.5302734375,0.5322265625,0.5390625,0.546875,0.546875,0.5361328125,0.5185546875,0.5,0.4814453125,0.4716796875,0.474609375,0.4912109375,0.51171875,0.5263671875,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5361328125,0.564453125,0.607421875,0.646484375,0.6650390625,0.658203125,0.634765625,0.60546875,0.572265625,0.5576171875,0.5771484375,0.62890625,0.689453125,0.740234375,0.7880859375,0.8359375,0.8642578125,0.8564453125,0.8173828125,0.7724609375,0.740234375,0.7109375,0.67578125,0.6513671875,0.6513671875,0.67578125,0.7109375,0.740234375,0.75390625,0.716796875,0.6240234375,0.5048828125,0.4052734375,0.3583984375,0.3642578125,0.392578125,0.4482421875,0.5048828125,0.52734375,0.5,0.4365234375,0.3642578125,0.306640625,0.3095703125,0.3837890625,0.4970703125,0.595703125,0.6328125,0.6044921875,0.5546875,0.4970703125,0.453125,0.44140625,0.462890625,0.5,0.5302734375,0.5556640625,0.5751953125,0.580078125,0.568359375,0.548828125,0.533203125,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5205078125,0.4775390625,0.4140625,0.3583984375,0.3369140625,0.353515625,0.39453125,0.4404296875,0.48828125,0.529296875,0.5576171875,0.57421875,0.587890625,0.6044921875,0.619140625,0.60546875,0.5517578125,0.4638671875,0.3671875,0.294921875,0.2587890625,0.2265625,0.181640625,0.154296875,0.1708984375,0.2333984375,0.3173828125,0.39453125,0.4736328125,0.5634765625,0.6240234375,0.6162109375,0.5419921875,0.4443359375,0.3642578125,0.2939453125,0.244140625,0.2509765625,0.3251953125,0.4404296875,0.544921875,0.6044921875,0.6591796875,0.7333984375,0.794921875,0.806640625,0.759765625,0.6806640625,0.6044921875,0.521484375,0.4111328125,0.314453125,0.2783203125,0.314453125,0.392578125,0.46875,0.52734375,0.529296875,0.4716796875,0.3916015625,0.3349609375,0.3359375,0.39453125,0.462890625,0.513671875,0.529296875,0.5107421875,0.4775390625,0.458984375,0.46875,0.4892578125,0.50390625,0.494140625,0.44921875,0.3798828125,0.310546875,0.2587890625,0.2255859375,0.2451171875,0.328125,0.447265625,0.5546875,0.6083984375,0.6044921875,0.595703125,0.625,0.685546875,0.748046875,0.7841796875,0.7783203125,0.740234375,0.6845703125,0.599609375,0.5107421875,0.658203125,0.650390625,0.630859375,0.6171875,0.6220703125,0.634765625,0.654296875,0.67578125,0.689453125,0.69140625,0.68359375,0.673828125,0.66796875,0.6748046875,0.68359375,0.6767578125,0.6484375,0.6025390625,0.55078125,0.5107421875,0.51171875,0.5517578125,0.6044921875,0.634765625,0.6220703125,0.5703125,0.5029296875,0.4287109375,0.38671875,0.41015625,0.4921875,0.5927734375,0.673828125,0.7314453125,0.7333984375,0.673828125,0.5849609375,0.515625,0.50390625,0.55078125,0.60546875,0.623046875,0.587890625,0.51171875,0.4287109375,0.3798828125,0.376953125,0.4013671875,0.4716796875,0.56640625,0.6376953125,0.6552734375,0.6181640625,0.55078125,0.470703125,0.3671875,0.27734375,0.240234375,0.263671875,0.322265625,0.376953125,0.423828125,0.455078125,0.4775390625,0.50390625,0.544921875,0.603515625,0.673828125,0.7412109375,0.7802734375,0.7705078125,0.712890625,0.63671875,0.58203125,0.5703125,0.5595703125,0.5126953125,0.443359375,0.384765625,0.3623046875,0.3828125,0.4287109375,0.48828125,0.5673828125,0.6298828125,0.638671875,0.587890625,0.505859375,0.4287109375,0.353515625,0.2802734375,0.2451171875,0.2724609375,0.3505859375,0.4384765625,0.5,0.5546875,0.619140625,0.6748046875,0.7041015625,0.7021484375,0.6865234375,0.673828125,0.650390625,0.5859375,0.50390625,0.4453125,0.439453125,0.482421875,0.55078125,0.6083984375,0.6044921875,0.5361328125,0.443359375,0.3759765625,0.3720703125,0.4287109375,0.5048828125,0.5869140625,0.654296875,0.6884765625,0.689453125,0.677734375,0.673828125,0.673828125,0.673828125,0.673828125,0.673828125,0.673828125,0.673828125,0.673828125,0.673828125,0.673828125,0.673828125,0.673828125,0.673828125,0.673828125,0.673828125,0.6640625,0.615234375,0.5302734375,0.43359375,0.3583984375,0.3232421875,0.3251953125,0.349609375,0.419921875,0.5185546875,0.599609375,0.630859375,0.607421875,0.55078125,0.48046875,0.3876953125,0.3115234375,0.29296875,0.3408203125,0.4228515625,0.5,0.580078125,0.6806640625,0.7587890625,0.7724609375,0.7177734375,0.6298828125,0.55078125,0.48046875,0.4189453125,0.3857421875,0.388671875,0.4130859375,0.431640625,0.4287109375,0.42578125,0.4482421875,0.484375,0.509765625,0.5087890625,0.4775390625,0.4287109375,0.3681640625,0.283203125,0.205078125,0.1728515625,0.19921875,0.26171875,0.3251953125,0.3828125,0.4208984375,0.44140625,0.4541015625,0.474609375,0.513671875,0.5703125,0.6396484375,0.7236328125,0.7841796875,0.783203125,0.720703125,0.6298828125,0.55078125,0.4765625,0.396484375,0.3330078125,0.3037109375,0.306640625,0.3212890625,0.3251953125,0.3310546875,0.361328125,0.4189453125,0.4931640625,0.5615234375,0.6044921875,0.6220703125,0.6220703125,0.5849609375,0.521484375,0.4638671875,0.4375,0.4541015625,0.5,0.5439453125,0.5537109375,0.5166015625,0.4443359375,0.3701171875,0.3271484375,0.3251953125,0.3271484375,0.298828125,0.2548828125,0.224609375,0.228515625,0.267578125,0.3251953125,0.392578125,0.47265625,0.546875,0.58984375,0.5966796875,0.5830078125,0.5703125,0.5498046875,0.498046875,0.4384765625,0.4072265625,0.423828125,0.48046875,0.55078125,0.6103515625,0.6142578125,0.55859375,0.4755859375,0.41015625,0.400390625,0.4482421875,0.5126953125,0.5849609375,0.642578125,0.6669921875,0.658203125,0.63671875,0.6220703125,0.5986328125,0.5322265625,0.4375,0.35546875,0.318359375,0.33203125,0.376953125,0.431640625,0.4921875,0.544921875,0.57421875,0.5791015625,0.572265625,0.5703125,0.5712890625,0.5771484375,0.5849609375,0.58984375,0.587890625,0.580078125,0.5703125,0.5546875,0.5166015625,0.4609375,0.400390625,0.353515625,0.330078125,0.3251953125,0.3349609375,0.3837890625,0.46875,0.5654296875,0.640625,0.67578125,0.673828125,0.6689453125,0.6826171875,0.6953125,0.68359375,0.6396484375,0.572265625,0.5,0.423828125,0.3505859375,0.3232421875,0.369140625,0.474609375,0.58984375,0.673828125,0.740234375,0.7802734375,0.7744140625,0.7265625,0.6630859375,0.623046875,0.6220703125,0.630859375,0.6318359375,0.6220703125,0.6044921875,0.5849609375,0.572265625,0.5703125,0.5751953125,0.5966796875,0.619140625,0.6220703125,0.5966796875,0.55078125,0.5,0.451171875,0.4228515625,0.4287109375,0.4697265625,0.5234375,0.5615234375,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.572265625,0.5849609375,0.6044921875,0.6220703125,0.6318359375,0.630859375,0.6220703125,0.6044921875,0.5673828125,0.53125,0.5234375,0.5537109375,0.611328125,0.673828125,0.734375,0.78515625,0.8046875,0.783203125,0.7353515625,0.6923828125,0.673828125,0.662109375,0.6484375,0.638671875,0.638671875,0.6484375,0.662109375,0.673828125,0.669921875,0.611328125,0.509765625,0.4052734375,0.3408203125,0.3359375,0.376953125,0.4365234375,0.515625,0.5791015625,0.587890625,0.5361328125,0.4541015625,0.376953125,0.3203125,0.32421875,0.3955078125,0.498046875,0.5791015625,0.5966796875,0.55078125,0.490234375,0.4423828125,0.4267578125,0.453125,0.505859375,0.55078125,0.5703125,0.580078125,0.587890625,0.58984375,0.5849609375,0.5771484375,0.5712890625,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.55859375,0.5078125,0.435546875,0.376953125,0.361328125,0.390625,0.4482421875,0.5029296875,0.5302734375,0.52734375,0.5068359375,0.4931640625,0.5078125,0.55078125,0.5966796875,0.61328125,0.580078125,0.5029296875,0.4130859375,0.34765625,0.3251953125,0.30859375,0.2744140625,0.24609375,0.251953125,0.30078125,0.3740234375,0.4482421875,0.5263671875,0.611328125,0.662109375,0.6435546875,0.5615234375,0.458984375,0.376953125,0.302734375,0.236328125,0.2158203125,0.2666015625,0.3701171875,0.4775390625,0.55078125,0.62109375,0.70703125,0.7724609375,0.7763671875,0.7177734375,0.6298828125,0.55078125,0.46875,0.359375,0.265625,0.2333984375,0.2724609375,0.3525390625,0.4287109375,0.4892578125,0.501953125,0.4658203125,0.41015625,0.375,0.3876953125,0.4482421875,0.509765625,0.5302734375,0.501953125,0.4443359375,0.396484375,0.3896484375,0.4287109375,0.484375,0.544921875,0.5771484375,0.5546875,0.4814453125,0.39453125,0.3251953125,0.2783203125,0.2900390625,0.3671875,0.474609375,0.5615234375,0.5869140625,0.55078125,0.5126953125,0.5263671875,0.58984375,0.669921875,0.7236328125,0.72265625,0.673828125,0.6025390625,0.509765625,0.4296875,0.658203125,0.64453125,0.607421875,0.576171875,0.5693359375,0.5712890625,0.5751953125,0.578125,0.5810546875,0.58203125,0.5810546875,0.5791015625,0.5859375,0.615234375,0.650390625,0.662109375,0.634765625,0.5771484375,0.509765625,0.4541015625,0.4501953125,0.5009765625,0.5732421875,0.6220703125,0.6171875,0.5595703125,0.4814453125,0.3916015625,0.3291015625,0.333984375,0.4033203125,0.4990234375,0.5791015625,0.6376953125,0.640625,0.5859375,0.5078125,0.4521484375,0.453125,0.509765625,0.5751953125,0.6162109375,0.6103515625,0.55859375,0.4892578125,0.439453125,0.4296875,0.443359375,0.49609375,0.5673828125,0.6181640625,0.62109375,0.5771484375,0.509765625,0.4287109375,0.326171875,0.244140625,0.224609375,0.2734375,0.35546875,0.4296875,0.490234375,0.5166015625,0.5087890625,0.4892578125,0.484375,0.515625,0.5791015625,0.6484375,0.6982421875,0.70703125,0.671875,0.6142578125,0.5693359375,0.5595703125,0.546875,0.4931640625,0.4150390625,0.3544921875,0.3408203125,0.3759765625,0.439453125,0.5166015625,0.607421875,0.673828125,0.67578125,0.611328125,0.5185546875,0.439453125,0.3623046875,0.27734375,0.2255859375,0.2431640625,0.322265625,0.421875,0.5,0.568359375,0.62890625,0.66015625,0.6533203125,0.6201171875,0.5888671875,0.5791015625,0.56640625,0.5146484375,0.4453125,0.3974609375,0.396484375,0.44140625,0.509765625,0.5673828125,0.5703125,0.5146484375,0.4345703125,0.37890625,0.3818359375,0.439453125,0.5126953125,0.58203125,0.626953125,0.6328125,0.6103515625,0.5859375,0.5791015625,0.5791015625,0.5791015625,0.5791015625,0.5791015625,0.5791015625,0.5791015625,0.5791015625,0.5791015625,0.5791015625,0.5791015625,0.5791015625,0.5791015625,0.5791015625,0.5791015625,0.5751953125,0.5546875,0.5185546875,0.4755859375,0.4404296875,0.421875,0.419921875,0.43359375,0.486328125,0.55859375,0.611328125,0.6171875,0.576171875,0.509765625,0.4306640625,0.3369140625,0.2685546875,0.2646484375,0.328125,0.419921875,0.5,0.5791015625,0.6748046875,0.744140625,0.74609375,0.681640625,0.5888671875,0.509765625,0.4384765625,0.3779296875,0.3505859375,0.36328125,0.4013671875,0.4326171875,0.439453125,0.447265625,0.486328125,0.537109375,0.56640625,0.5546875,0.505859375,0.439453125,0.36328125,0.26953125,0.2001953125,0.1943359375,0.25390625,0.3427734375,0.419921875,0.4814453125,0.5087890625,0.5009765625,0.478515625,0.470703125,0.498046875,0.5595703125,0.63671875,0.72265625,0.7783203125,0.765625,0.689453125,0.58984375,0.509765625,0.4375,0.3740234375,0.3408203125,0.34765625,0.380859375,0.412109375,0.419921875,0.4228515625,0.4404296875,0.47265625,0.5107421875,0.544921875,0.564453125,0.5693359375,0.5595703125,0.5126953125,0.4462890625,0.3984375,0.39453125,0.4345703125,0.5,0.5634765625,0.603515625,0.5966796875,0.5458984375,0.4775390625,0.4296875,0.419921875,0.412109375,0.3720703125,0.3203125,0.2900390625,0.3017578125,0.3515625,0.419921875,0.4912109375,0.560546875,0.60546875,0.6142578125,0.5927734375,0.5673828125,0.5595703125,0.546875,0.498046875,0.4326171875,0.3896484375,0.3935546875,0.4404296875,0.509765625,0.5693359375,0.578125,0.53515625,0.4697265625,0.4248046875,0.431640625,0.4892578125,0.5595703125,0.6220703125,0.6533203125,0.6455078125,0.611328125,0.5791015625,0.5693359375,0.5546875,0.4970703125,0.4150390625,0.349609375,0.33203125,0.3662109375,0.4296875,0.4990234375,0.5654296875,0.6064453125,0.6123046875,0.58984375,0.5654296875,0.5595703125,0.5595703125,0.560546875,0.5615234375,0.5625,0.5625,0.560546875,0.5595703125,0.5546875,0.5361328125,0.5048828125,0.46875,0.4384765625,0.4228515625,0.419921875,0.423828125,0.4443359375,0.48046875,0.5234375,0.55859375,0.5771484375,0.5791015625,0.5859375,0.6162109375,0.65234375,0.662109375,0.6318359375,0.5712890625,0.5,0.421875,0.3369140625,0.2880859375,0.3095703125,0.3935546875,0.498046875,0.5791015625,0.6484375,0.69921875,0.708984375,0.6748046875,0.619140625,0.578125,0.5693359375,0.5703125,0.5703125,0.568359375,0.5654296875,0.5615234375,0.5595703125,0.5595703125,0.5673828125,0.599609375,0.6376953125,0.650390625,0.625,0.5673828125,0.5,0.4345703125,0.3916015625,0.392578125,0.4375,0.5009765625,0.548828125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5615234375,0.5654296875,0.568359375,0.5703125,0.5703125,0.5693359375,0.55859375,0.517578125,0.466796875,0.4404296875,0.45703125,0.5107421875,0.5791015625,0.6474609375,0.7001953125,0.7138671875,0.685546875,0.6328125,0.5908203125,0.5791015625,0.5771484375,0.5751953125,0.5732421875,0.5732421875,0.5751953125,0.5771484375,0.5791015625,0.568359375,0.5107421875,0.4267578125,0.3583984375,0.3359375,0.3671875,0.4296875,0.505859375,0.59765625,0.6640625,0.6650390625,0.6015625,0.5087890625,0.4296875,0.37109375,0.369140625,0.4267578125,0.5078125,0.5654296875,0.5654296875,0.509765625,0.4423828125,0.396484375,0.392578125,0.435546875,0.4990234375,0.546875,0.5595703125,0.560546875,0.5625,0.5625,0.5615234375,0.560546875,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5478515625,0.4990234375,0.4306640625,0.3828125,0.3798828125,0.4228515625,0.4892578125,0.548828125,0.5625,0.529296875,0.4755859375,0.4404296875,0.4521484375,0.509765625,0.57421875,0.6142578125,0.6083984375,0.5556640625,0.4853515625,0.4326171875,0.419921875,0.41015625,0.375,0.3369140625,0.326171875,0.3564453125,0.41796875,0.4892578125,0.568359375,0.654296875,0.7080078125,0.6923828125,0.6123046875,0.5107421875,0.4296875,0.3525390625,0.2685546875,0.220703125,0.2431640625,0.3271484375,0.4296875,0.509765625,0.587890625,0.6806640625,0.7470703125,0.748046875,0.6826171875,0.5888671875,0.509765625,0.427734375,0.3251953125,0.2431640625,0.224609375,0.2763671875,0.361328125,0.439453125,0.5009765625,0.517578125,0.48828125,0.4404296875,0.412109375,0.4287109375,0.4892578125,0.548828125,0.5556640625,0.5068359375,0.43359375,0.3818359375,0.384765625,0.439453125,0.515625,0.603515625,0.6640625,0.6591796875,0.5908203125,0.498046875,0.419921875,0.36328125,0.3623046875,0.4208984375,0.5029296875,0.5625,0.564453125,0.509765625,0.4541015625,0.453125,0.5087890625,0.5859375,0.6396484375,0.63671875,0.5791015625,0.5009765625,0.40625,0.3369140625,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.615234375,0.564453125,0.494140625,0.443359375,0.4296875,0.427734375,0.423828125,0.4208984375,0.41796875,0.4169921875,0.41796875,0.419921875,0.43359375,0.486328125,0.55859375,0.611328125,0.6171875,0.576171875,0.509765625,0.44921875,0.427734375,0.4482421875,0.4853515625,0.5068359375,0.48828125,0.4296875,0.353515625,0.2646484375,0.201171875,0.203125,0.26953125,0.3623046875,0.439453125,0.5,0.5185546875,0.494140625,0.451171875,0.4248046875,0.44140625,0.5,0.568359375,0.6279296875,0.658203125,0.650390625,0.6171875,0.5869140625,0.5791015625,0.5869140625,0.6181640625,0.6513671875,0.658203125,0.625,0.5615234375,0.4892578125,0.412109375,0.330078125,0.2841796875,0.30859375,0.3955078125,0.4990234375,0.5791015625,0.634765625,0.62890625,0.5595703125,0.46484375,0.3935546875,0.3857421875,0.439453125,0.505859375,0.5537109375,0.5625,0.5302734375,0.4775390625,0.4375,0.4296875,0.42578125,0.4052734375,0.3876953125,0.3974609375,0.4423828125,0.509765625,0.5791015625,0.6552734375,0.74609375,0.8095703125,0.80859375,0.7421875,0.6484375,0.5693359375,0.48828125,0.38671875,0.3046875,0.2841796875,0.3330078125,0.4150390625,0.4892578125,0.5546875,0.595703125,0.5947265625,0.548828125,0.484375,0.439453125,0.4296875,0.4228515625,0.390625,0.3525390625,0.337890625,0.3623046875,0.419921875,0.4892578125,0.5498046875,0.5693359375,0.546875,0.5068359375,0.4833984375,0.5009765625,0.5595703125,0.623046875,0.65625,0.638671875,0.57421875,0.4951171875,0.4404296875,0.4296875,0.431640625,0.43359375,0.435546875,0.435546875,0.43359375,0.431640625,0.4296875,0.427734375,0.42578125,0.423828125,0.423828125,0.42578125,0.427734375,0.4296875,0.4345703125,0.4541015625,0.48828125,0.5263671875,0.55859375,0.576171875,0.5791015625,0.5869140625,0.615234375,0.646484375,0.6513671875,0.619140625,0.55859375,0.4892578125,0.4130859375,0.322265625,0.2578125,0.2568359375,0.3212890625,0.412109375,0.4892578125,0.5673828125,0.66015625,0.7265625,0.7275390625,0.662109375,0.5693359375,0.4892578125,0.421875,0.3798828125,0.38671875,0.44140625,0.5146484375,0.5673828125,0.5791015625,0.5888671875,0.6298828125,0.681640625,0.7119140625,0.6982421875,0.6474609375,0.5791015625,0.5009765625,0.4091796875,0.3447265625,0.3447265625,0.4091796875,0.5009765625,0.5791015625,0.634765625,0.6279296875,0.5576171875,0.4609375,0.390625,0.384765625,0.439453125,0.51953125,0.6201171875,0.7001953125,0.71875,0.6689453125,0.5859375,0.509765625,0.4423828125,0.3984375,0.3984375,0.44140625,0.5048828125,0.5498046875,0.5595703125,0.5546875,0.5390625,0.51171875,0.4814453125,0.4560546875,0.4423828125,0.439453125,0.4306640625,0.396484375,0.3564453125,0.341796875,0.369140625,0.4287109375,0.5,0.5712890625,0.634765625,0.6669921875,0.658203125,0.6220703125,0.5888671875,0.5791015625,0.5673828125,0.521484375,0.4638671875,0.4287109375,0.4384765625,0.490234375,0.5595703125,0.626953125,0.6650390625,0.6533203125,0.591796875,0.51171875,0.4541015625,0.439453125,0.4296875,0.396484375,0.359375,0.3486328125,0.37890625,0.439453125,0.509765625,0.568359375,0.578125,0.5390625,0.4794921875,0.4404296875,0.451171875,0.509765625,0.576171875,0.619140625,0.6162109375,0.568359375,0.5,0.451171875,0.439453125,0.4326171875,0.4052734375,0.37890625,0.3798828125,0.419921875,0.486328125,0.5595703125,0.6259765625,0.6611328125,0.6435546875,0.576171875,0.4912109375,0.4326171875,0.419921875,0.419921875,0.4228515625,0.4267578125,0.4326171875,0.4365234375,0.439453125,0.439453125,0.443359375,0.4599609375,0.4912109375,0.5283203125,0.55859375,0.576171875,0.5791015625,0.5751953125,0.556640625,0.5205078125,0.478515625,0.4423828125,0.423828125,0.419921875,0.431640625,0.4833984375,0.5556640625,0.6083984375,0.6162109375,0.5751953125,0.509765625,0.4296875,0.3271484375,0.2412109375,0.2177734375,0.2626953125,0.34375,0.419921875,0.48828125,0.5419921875,0.5595703125,0.53515625,0.4873046875,0.44921875,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.451171875,0.5,0.56640625,0.61328125,0.61328125,0.568359375,0.5,0.427734375,0.3662109375,0.3349609375,0.34375,0.3798828125,0.412109375,0.419921875,0.419921875,0.4208984375,0.421875,0.4228515625,0.4228515625,0.421875,0.419921875,0.4189453125,0.419921875,0.423828125,0.4296875,0.435546875,0.439453125,0.439453125,0.4306640625,0.390625,0.33984375,0.310546875,0.3232421875,0.373046875,0.439453125,0.505859375,0.5546875,0.56640625,0.537109375,0.486328125,0.447265625,0.439453125,0.4404296875,0.439453125,0.4365234375,0.4326171875,0.4296875,0.4287109375,0.4296875,0.4248046875,0.4013671875,0.37890625,0.384765625,0.427734375,0.49609375,0.5693359375,0.6484375,0.7412109375,0.8046875,0.8037109375,0.7373046875,0.6455078125,0.5693359375,0.5107421875,0.490234375,0.5107421875,0.5478515625,0.568359375,0.548828125,0.4892578125,0.4208984375,0.361328125,0.33203125,0.341796875,0.3779296875,0.41015625,0.419921875,0.421875,0.423828125,0.427734375,0.431640625,0.435546875,0.4375,0.439453125,0.44140625,0.4423828125,0.4423828125,0.4423828125,0.4404296875,0.4404296875,0.439453125,0.4306640625,0.3955078125,0.3525390625,0.3359375,0.3603515625,0.4189453125,0.4892578125,0.5498046875,0.5634765625,0.5283203125,0.4716796875,0.43359375,0.4423828125,0.5,0.568359375,0.626953125,0.6572265625,0.6474609375,0.611328125,0.5791015625,0.5693359375,0.5556640625,0.5048828125,0.435546875,0.3876953125,0.3857421875,0.4306640625,0.5,0.580078125,0.6806640625,0.759765625,0.7744140625,0.7216796875,0.6357421875,0.5595703125,0.48046875,0.3818359375,0.3056640625,0.29296875,0.3466796875,0.4326171875,0.509765625,0.5869140625,0.6796875,0.744140625,0.744140625,0.6796875,0.5869140625,0.509765625,0.4326171875,0.34765625,0.294921875,0.3095703125,0.384765625,0.4814453125,0.5595703125,0.6142578125,0.6162109375,0.5625,0.486328125,0.4326171875,0.4345703125,0.4892578125,0.5478515625,0.5673828125,0.546875,0.5107421875,0.4931640625,0.5166015625,0.5791015625,0.658203125,0.7490234375,0.8095703125,0.8037109375,0.7333984375,0.6376953125,0.5595703125,0.4990234375,0.48046875,0.50390625,0.544921875,0.568359375,0.5498046875,0.4892578125,0.4296875,0.4111328125,0.435546875,0.478515625,0.5048828125,0.48828125,0.4296875,0.353515625,0.26171875,0.1953125,0.6181640625,0.55078125,0.46484375,0.400390625,0.376953125,0.3642578125,0.3447265625,0.3232421875,0.3095703125,0.3076171875,0.3154296875,0.3251953125,0.349609375,0.419921875,0.5185546875,0.599609375,0.630859375,0.607421875,0.55078125,0.494140625,0.4580078125,0.4462890625,0.447265625,0.4453125,0.4228515625,0.376953125,0.3203125,0.25390625,0.2099609375,0.2197265625,0.2802734375,0.361328125,0.4287109375,0.4833984375,0.5068359375,0.49609375,0.466796875,0.4462890625,0.45703125,0.5,0.552734375,0.611328125,0.66015625,0.6845703125,0.6845703125,0.6767578125,0.673828125,0.677734375,0.6923828125,0.6953125,0.666015625,0.6025390625,0.5224609375,0.4482421875,0.375,0.314453125,0.3056640625,0.369140625,0.484375,0.5986328125,0.673828125,0.720703125,0.7060546875,0.625,0.5126953125,0.421875,0.3935546875,0.4287109375,0.4755859375,0.5009765625,0.4912109375,0.451171875,0.404296875,0.3759765625,0.376953125,0.3876953125,0.4013671875,0.4306640625,0.4833984375,0.55078125,0.6181640625,0.673828125,0.7314453125,0.8046875,0.85546875,0.8505859375,0.7880859375,0.7001953125,0.6220703125,0.541015625,0.4375,0.34765625,0.310546875,0.3349609375,0.392578125,0.4482421875,0.494140625,0.5166015625,0.5029296875,0.4580078125,0.40625,0.3759765625,0.376953125,0.380859375,0.361328125,0.3330078125,0.3212890625,0.3408203125,0.3876953125,0.4482421875,0.5029296875,0.533203125,0.5341796875,0.5185546875,0.509765625,0.5263671875,0.5703125,0.61328125,0.62109375,0.580078125,0.5029296875,0.423828125,0.37890625,0.376953125,0.388671875,0.40234375,0.412109375,0.412109375,0.40234375,0.388671875,0.376953125,0.3662109375,0.3525390625,0.3427734375,0.3427734375,0.3525390625,0.3662109375,0.376953125,0.39453125,0.4375,0.505859375,0.580078125,0.6376953125,0.66796875,0.673828125,0.6748046875,0.677734375,0.6650390625,0.626953125,0.5673828125,0.5029296875,0.4482421875,0.3896484375,0.31640625,0.26171875,0.2568359375,0.306640625,0.380859375,0.4482421875,0.517578125,0.6044921875,0.6689453125,0.6728515625,0.6142578125,0.5263671875,0.4482421875,0.3837890625,0.3583984375,0.3955078125,0.4853515625,0.5888671875,0.658203125,0.673828125,0.681640625,0.7177734375,0.763671875,0.7890625,0.7783203125,0.7333984375,0.673828125,0.60546875,0.5244140625,0.4677734375,0.4677734375,0.5244140625,0.60546875,0.673828125,0.71875,0.6982421875,0.609375,0.4931640625,0.404296875,0.3837890625,0.4287109375,0.5,0.595703125,0.6796875,0.7119140625,0.6826171875,0.6162109375,0.55078125,0.4931640625,0.45703125,0.45703125,0.4931640625,0.541015625,0.5712890625,0.5703125,0.556640625,0.5322265625,0.4990234375,0.4658203125,0.4423828125,0.4306640625,0.4287109375,0.4208984375,0.3876953125,0.349609375,0.337890625,0.3671875,0.427734375,0.5,0.5751953125,0.654296875,0.7138671875,0.734375,0.7177734375,0.689453125,0.673828125,0.6513671875,0.5888671875,0.5107421875,0.45703125,0.455078125,0.5009765625,0.5703125,0.6376953125,0.6796875,0.6689453125,0.60546875,0.5185546875,0.4521484375,0.4287109375,0.4130859375,0.384765625,0.3642578125,0.375,0.421875,0.4873046875,0.55078125,0.6025390625,0.611328125,0.5771484375,0.525390625,0.4912109375,0.5,0.55078125,0.6083984375,0.6376953125,0.6220703125,0.5634765625,0.4912109375,0.4404296875,0.4287109375,0.421875,0.3974609375,0.3759765625,0.3828125,0.427734375,0.4970703125,0.5703125,0.6337890625,0.6572265625,0.615234375,0.5205078125,0.4130859375,0.3408203125,0.3251953125,0.328125,0.3408203125,0.36328125,0.390625,0.4140625,0.4267578125,0.4287109375,0.4345703125,0.46484375,0.5185546875,0.5830078125,0.6376953125,0.66796875,0.673828125,0.6650390625,0.623046875,0.5458984375,0.453125,0.3759765625,0.333984375,0.3251953125,0.33984375,0.40234375,0.498046875,0.583984375,0.623046875,0.60546875,0.55078125,0.4775390625,0.3701171875,0.2626953125,0.203125,0.2099609375,0.2626953125,0.3251953125,0.3876953125,0.4453125,0.4794921875,0.48046875,0.4580078125,0.435546875,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4404296875,0.4912109375,0.5595703125,0.609375,0.611328125,0.5673828125,0.5,0.42578125,0.3525390625,0.2998046875,0.2841796875,0.298828125,0.3193359375,0.3251953125,0.3271484375,0.3330078125,0.3408203125,0.345703125,0.34375,0.3359375,0.3251953125,0.318359375,0.3232421875,0.34375,0.3759765625,0.40625,0.4248046875,0.4287109375,0.421875,0.392578125,0.3544921875,0.3330078125,0.341796875,0.3798828125,0.4287109375,0.4775390625,0.5087890625,0.509765625,0.484375,0.4482421875,0.42578125,0.4287109375,0.4365234375,0.431640625,0.4140625,0.3916015625,0.375,0.3701171875,0.376953125,0.3828125,0.37890625,0.3818359375,0.4111328125,0.4716796875,0.5478515625,0.6220703125,0.6982421875,0.7802734375,0.83203125,0.8232421875,0.759765625,0.681640625,0.6220703125,0.5751953125,0.546875,0.5361328125,0.533203125,0.5234375,0.494140625,0.4482421875,0.3935546875,0.3359375,0.291015625,0.2763671875,0.2890625,0.3115234375,0.3251953125,0.3369140625,0.3505859375,0.3681640625,0.38671875,0.404296875,0.41796875,0.4287109375,0.439453125,0.4462890625,0.4482421875,0.4443359375,0.4365234375,0.4306640625,0.4287109375,0.419921875,0.3798828125,0.3310546875,0.3056640625,0.3232421875,0.3779296875,0.4482421875,0.51171875,0.541015625,0.52734375,0.4892578125,0.45703125,0.458984375,0.5,0.5537109375,0.611328125,0.65625,0.6708984375,0.658203125,0.6357421875,0.6220703125,0.5986328125,0.5341796875,0.4521484375,0.3935546875,0.3876953125,0.4306640625,0.5,0.5791015625,0.67578125,0.7509765625,0.7646484375,0.7158203125,0.6376953125,0.5703125,0.5009765625,0.4189453125,0.357421875,0.3525390625,0.4052734375,0.4833984375,0.55078125,0.619140625,0.7001953125,0.7568359375,0.7568359375,0.7001953125,0.619140625,0.55078125,0.4853515625,0.4130859375,0.3671875,0.376953125,0.4365234375,0.51171875,0.5703125,0.609375,0.6025390625,0.546875,0.4716796875,0.4150390625,0.408203125,0.4482421875,0.4931640625,0.515625,0.521484375,0.529296875,0.5556640625,0.60546875,0.673828125,0.7490234375,0.8251953125,0.8603515625,0.8291015625,0.7412109375,0.6416015625,0.5703125,0.515625,0.4921875,0.4990234375,0.5185546875,0.525390625,0.501953125,0.4482421875,0.3935546875,0.3701171875,0.380859375,0.4091796875,0.4296875,0.419921875,0.376953125,0.3173828125,0.2392578125,0.17578125,0.640625,0.568359375,0.4765625,0.4013671875,0.3642578125,0.33203125,0.28515625,0.2373046875,0.208984375,0.2099609375,0.232421875,0.2587890625,0.298828125,0.38671875,0.501953125,0.6015625,0.650390625,0.64453125,0.6044921875,0.5576171875,0.505859375,0.4580078125,0.421875,0.3984375,0.3818359375,0.3642578125,0.341796875,0.314453125,0.30078125,0.3173828125,0.36328125,0.419921875,0.46875,0.51171875,0.537109375,0.5380859375,0.5185546875,0.4951171875,0.486328125,0.5,0.5234375,0.56640625,0.6240234375,0.6796875,0.71875,0.7373046875,0.740234375,0.7421875,0.7421875,0.7177734375,0.6572265625,0.56640625,0.47265625,0.39453125,0.326171875,0.2900390625,0.3193359375,0.421875,0.5615234375,0.677734375,0.740234375,0.775390625,0.7646484375,0.6982421875,0.599609375,0.5087890625,0.462890625,0.46875,0.4814453125,0.466796875,0.427734375,0.380859375,0.34765625,0.34375,0.3642578125,0.3955078125,0.4501953125,0.5244140625,0.6044921875,0.6728515625,0.716796875,0.740234375,0.765625,0.80859375,0.8427734375,0.8369140625,0.7861328125,0.7099609375,0.634765625,0.556640625,0.4638671875,0.3828125,0.341796875,0.345703125,0.3720703125,0.39453125,0.408203125,0.4033203125,0.3798828125,0.353515625,0.3369140625,0.341796875,0.3642578125,0.3837890625,0.380859375,0.3583984375,0.3359375,0.33203125,0.353515625,0.39453125,0.439453125,0.4775390625,0.501953125,0.5107421875,0.5107421875,0.5146484375,0.5302734375,0.541015625,0.51953125,0.4658203125,0.4033203125,0.3564453125,0.3447265625,0.3642578125,0.3935546875,0.427734375,0.4521484375,0.4521484375,0.427734375,0.3935546875,0.3642578125,0.3349609375,0.2998046875,0.275390625,0.275390625,0.2998046875,0.3349609375,0.3642578125,0.3984375,0.4638671875,0.5517578125,0.640625,0.705078125,0.7353515625,0.740234375,0.734375,0.7041015625,0.640625,0.5576171875,0.4765625,0.4208984375,0.39453125,0.3701171875,0.3291015625,0.2919921875,0.28125,0.3037109375,0.34765625,0.39453125,0.4482421875,0.5234375,0.5849609375,0.5966796875,0.548828125,0.470703125,0.39453125,0.3330078125,0.322265625,0.3857421875,0.5078125,0.638671875,0.7216796875,0.740234375,0.74609375,0.7724609375,0.806640625,0.826171875,0.8173828125,0.7841796875,0.740234375,0.689453125,0.6298828125,0.587890625,0.587890625,0.6298828125,0.689453125,0.740234375,0.771484375,0.7451171875,0.6591796875,0.5498046875,0.4638671875,0.4375,0.46875,0.5224609375,0.5986328125,0.6708984375,0.70703125,0.6953125,0.65234375,0.6044921875,0.5625,0.53515625,0.5302734375,0.541015625,0.552734375,0.55078125,0.5302734375,0.5029296875,0.4765625,0.4580078125,0.453125,0.458984375,0.466796875,0.46875,0.4599609375,0.421875,0.375,0.3525390625,0.373046875,0.4287109375,0.5,0.578125,0.67578125,0.76171875,0.806640625,0.8017578125,0.7705078125,0.740234375,0.69921875,0.61328125,0.5078125,0.4326171875,0.4189453125,0.4609375,0.5302734375,0.6015625,0.662109375,0.681640625,0.646484375,0.57421875,0.505859375,0.46875,0.4404296875,0.4111328125,0.40234375,0.4306640625,0.4892578125,0.5537109375,0.6044921875,0.642578125,0.6494140625,0.6240234375,0.5849609375,0.5595703125,0.56640625,0.6044921875,0.6455078125,0.662109375,0.640625,0.5849609375,0.521484375,0.478515625,0.46875,0.4609375,0.4267578125,0.38671875,0.3720703125,0.3984375,0.458984375,0.5302734375,0.59375,0.61328125,0.5654296875,0.4638671875,0.349609375,0.275390625,0.2587890625,0.263671875,0.2890625,0.3359375,0.3916015625,0.4384765625,0.4638671875,0.46875,0.4755859375,0.5087890625,0.568359375,0.640625,0.701171875,0.7333984375,0.740234375,0.728515625,0.6708984375,0.5634765625,0.435546875,0.328125,0.2705078125,0.2587890625,0.2734375,0.341796875,0.4521484375,0.5634765625,0.6318359375,0.640625,0.6044921875,0.5458984375,0.4443359375,0.3251953125,0.234375,0.19921875,0.216796875,0.2587890625,0.3076171875,0.3662109375,0.421875,0.4580078125,0.4716796875,0.470703125,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.4794921875,0.525390625,0.5849609375,0.6240234375,0.6171875,0.568359375,0.5,0.423828125,0.3427734375,0.275390625,0.2421875,0.2421875,0.2548828125,0.2587890625,0.2626953125,0.2783203125,0.2978515625,0.30859375,0.3037109375,0.2841796875,0.2587890625,0.23828125,0.244140625,0.2861328125,0.353515625,0.419921875,0.4609375,0.46875,0.466796875,0.455078125,0.44140625,0.43359375,0.4365234375,0.451171875,0.46875,0.484375,0.482421875,0.4658203125,0.447265625,0.4375,0.4462890625,0.46875,0.48828125,0.4794921875,0.44140625,0.3916015625,0.353515625,0.3447265625,0.3642578125,0.3857421875,0.396484375,0.408203125,0.4384765625,0.4921875,0.5625,0.634765625,0.70703125,0.7705078125,0.7978515625,0.775390625,0.71875,0.6630859375,0.634765625,0.61328125,0.5810546875,0.5380859375,0.4912109375,0.4482421875,0.416015625,0.39453125,0.369140625,0.3232421875,0.2705078125,0.2314453125,0.2197265625,0.2333984375,0.2587890625,0.2861328125,0.3154296875,0.34765625,0.380859375,0.4130859375,0.4423828125,0.46875,0.4951171875,0.513671875,0.5185546875,0.5078125,0.48828125,0.47265625,0.46875,0.45703125,0.40625,0.3369140625,0.2861328125,0.283203125,0.326171875,0.39453125,0.4638671875,0.5185546875,0.541015625,0.5302734375,0.50390625,0.48828125,0.5,0.5244140625,0.5703125,0.6240234375,0.6630859375,0.673828125,0.66015625,0.634765625,0.595703125,0.5185546875,0.4306640625,0.375,0.3779296875,0.4296875,0.5,0.576171875,0.6591796875,0.712890625,0.708984375,0.654296875,0.5830078125,0.5302734375,0.4814453125,0.4306640625,0.4052734375,0.4248046875,0.484375,0.552734375,0.6044921875,0.6552734375,0.71484375,0.7568359375,0.7568359375,0.71484375,0.6552734375,0.6044921875,0.5556640625,0.5029296875,0.4638671875,0.455078125,0.4755859375,0.5068359375,0.5302734375,0.54296875,0.529296875,0.48828125,0.4365234375,0.3955078125,0.3818359375,0.39453125,0.4111328125,0.4248046875,0.4521484375,0.5048828125,0.5810546875,0.6650390625,0.740234375,0.8115234375,0.8642578125,0.8642578125,0.7978515625,0.689453125,0.5888671875,0.5302734375,0.4892578125,0.4658203125,0.4609375,0.4638671875,0.458984375,0.435546875,0.39453125,0.3525390625,0.326171875,0.3251953125,0.3447265625,0.3681640625,0.376953125,0.3642578125,0.3359375,0.2802734375,0.2236328125,0.6630859375,0.607421875,0.525390625,0.4482421875,0.39453125,0.3408203125,0.2646484375,0.1923828125,0.15625,0.1689453125,0.2119140625,0.2587890625,0.3154296875,0.4091796875,0.521484375,0.61328125,0.658203125,0.658203125,0.634765625,0.6005859375,0.5419921875,0.46875,0.408203125,0.3779296875,0.3779296875,0.39453125,0.412109375,0.427734375,0.44140625,0.4580078125,0.478515625,0.50390625,0.5302734375,0.5576171875,0.583984375,0.5966796875,0.5849609375,0.5556640625,0.5224609375,0.5,0.486328125,0.501953125,0.5517578125,0.6240234375,0.69140625,0.7314453125,0.740234375,0.7412109375,0.7373046875,0.70703125,0.6376953125,0.541015625,0.4423828125,0.3642578125,0.2998046875,0.27734375,0.328125,0.447265625,0.5888671875,0.6953125,0.740234375,0.763671875,0.7685546875,0.740234375,0.681640625,0.611328125,0.556640625,0.5302734375,0.501953125,0.4453125,0.3779296875,0.3310546875,0.3232421875,0.3505859375,0.39453125,0.44921875,0.53515625,0.634765625,0.71484375,0.7548828125,0.7568359375,0.740234375,0.728515625,0.740234375,0.759765625,0.76171875,0.732421875,0.6748046875,0.6044921875,0.5322265625,0.4609375,0.408203125,0.3828125,0.3798828125,0.3779296875,0.3642578125,0.33984375,0.3037109375,0.2734375,0.26953125,0.298828125,0.3466796875,0.39453125,0.4345703125,0.4482421875,0.4306640625,0.3916015625,0.3564453125,0.345703125,0.3642578125,0.39453125,0.4375,0.48046875,0.5048828125,0.5048828125,0.4892578125,0.46875,0.4423828125,0.3935546875,0.33984375,0.30859375,0.314453125,0.349609375,0.39453125,0.4443359375,0.50390625,0.546875,0.546875,0.50390625,0.4443359375,0.39453125,0.34375,0.2841796875,0.2421875,0.2421875,0.2841796875,0.34375,0.39453125,0.4462890625,0.521484375,0.607421875,0.6796875,0.72265625,0.73828125,0.740234375,0.728515625,0.671875,0.57421875,0.466796875,0.3857421875,0.3544921875,0.3642578125,0.37890625,0.376953125,0.361328125,0.341796875,0.3330078125,0.3408203125,0.3642578125,0.3994140625,0.4609375,0.5185546875,0.5380859375,0.5048828125,0.4375,0.3642578125,0.302734375,0.2958984375,0.3671875,0.4970703125,0.6337890625,0.7216796875,0.740234375,0.744140625,0.7587890625,0.7783203125,0.7900390625,0.78515625,0.765625,0.740234375,0.7109375,0.67578125,0.6513671875,0.6513671875,0.67578125,0.7109375,0.740234375,0.7568359375,0.7353515625,0.673828125,0.595703125,0.5341796875,0.5126953125,0.5302734375,0.5615234375,0.609375,0.6572265625,0.6845703125,0.68359375,0.662109375,0.634765625,0.611328125,0.5986328125,0.5908203125,0.5771484375,0.5517578125,0.513671875,0.46875,0.4267578125,0.400390625,0.40625,0.44140625,0.48828125,0.5224609375,0.5302734375,0.51953125,0.4736328125,0.4140625,0.375,0.3818359375,0.4306640625,0.5,0.5810546875,0.689453125,0.7900390625,0.8427734375,0.833984375,0.7880859375,0.740234375,0.6796875,0.572265625,0.44921875,0.3671875,0.353515625,0.3994140625,0.46875,0.546875,0.6328125,0.693359375,0.6982421875,0.650390625,0.58203125,0.5302734375,0.484375,0.44921875,0.4443359375,0.48046875,0.5419921875,0.6005859375,0.634765625,0.6572265625,0.6611328125,0.646484375,0.6240234375,0.609375,0.61328125,0.634765625,0.658203125,0.6650390625,0.646484375,0.607421875,0.564453125,0.5361328125,0.5302734375,0.5185546875,0.4697265625,0.40234375,0.3564453125,0.35546875,0.400390625,0.46875,0.5341796875,0.560546875,0.52734375,0.44140625,0.3408203125,0.2734375,0.2587890625,0.265625,0.2978515625,0.3583984375,0.4306640625,0.490234375,0.5234375,0.5302734375,0.53515625,0.560546875,0.607421875,0.6630859375,0.7099609375,0.7353515625,0.740234375,0.728515625,0.6708984375,0.5634765625,0.435546875,0.328125,0.2705078125,0.2587890625,0.271484375,0.33203125,0.435546875,0.546875,0.6259765625,0.65234375,0.634765625,0.5966796875,0.5166015625,0.408203125,0.30859375,0.2490234375,0.23828125,0.2587890625,0.291015625,0.3427734375,0.408203125,0.46875,0.509765625,0.52734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5390625,0.5771484375,0.6240234375,0.646484375,0.6259765625,0.5703125,0.5,0.423828125,0.3427734375,0.275390625,0.2421875,0.2421875,0.2548828125,0.2587890625,0.265625,0.2919921875,0.3251953125,0.3447265625,0.3359375,0.302734375,0.2587890625,0.220703125,0.220703125,0.2734375,0.36328125,0.4580078125,0.517578125,0.5302734375,0.5322265625,0.5439453125,0.5576171875,0.5654296875,0.5625,0.5478515625,0.5302734375,0.5048828125,0.46484375,0.427734375,0.416015625,0.439453125,0.4833984375,0.5302734375,0.564453125,0.5546875,0.4990234375,0.4248046875,0.369140625,0.359375,0.39453125,0.43359375,0.4501953125,0.4521484375,0.4580078125,0.484375,0.5361328125,0.6044921875,0.671875,0.712890625,0.7119140625,0.673828125,0.6240234375,0.595703125,0.6044921875,0.615234375,0.5888671875,0.5244140625,0.4443359375,0.3798828125,0.353515625,0.3642578125,0.3740234375,0.3486328125,0.294921875,0.240234375,0.2109375,0.2197265625,0.2587890625,0.302734375,0.3427734375,0.3779296875,0.4111328125,0.4462890625,0.4853515625,0.5302734375,0.57421875,0.607421875,0.615234375,0.5966796875,0.5625,0.5361328125,0.5302734375,0.515625,0.4541015625,0.36328125,0.2900390625,0.265625,0.2978515625,0.3642578125,0.439453125,0.51953125,0.5771484375,0.5908203125,0.5634765625,0.5244140625,0.5,0.490234375,0.5146484375,0.568359375,0.6240234375,0.6533203125,0.6435546875,0.6044921875,0.5478515625,0.4609375,0.375,0.3359375,0.3603515625,0.42578125,0.5,0.572265625,0.63671875,0.662109375,0.6357421875,0.5703125,0.505859375,0.46875,0.443359375,0.4287109375,0.44140625,0.4853515625,0.546875,0.6015625,0.634765625,0.6640625,0.69921875,0.7236328125,0.7236328125,0.69921875,0.6640625,0.634765625,0.6083984375,0.580078125,0.5517578125,0.52734375,0.5068359375,0.4873046875,0.46875,0.451171875,0.435546875,0.4228515625,0.4111328125,0.3974609375,0.3818359375,0.3642578125,0.3447265625,0.3349609375,0.361328125,0.4384765625,0.5498046875,0.6591796875,0.740234375,0.8076171875,0.841796875,0.814453125,0.7236328125,0.60546875,0.5107421875,0.46875,0.4443359375,0.427734375,0.4189453125,0.4140625,0.4052734375,0.388671875,0.3642578125,0.3369140625,0.3095703125,0.2978515625,0.30859375,0.3388671875,0.3720703125,0.39453125,0.4033203125,0.375,0.3251953125,0.6669921875,0.642578125,0.5849609375,0.5126953125,0.4482421875,0.376953125,0.28125,0.197265625,0.1650390625,0.1943359375,0.2607421875,0.3251953125,0.3935546875,0.48046875,0.5654296875,0.6220703125,0.640625,0.6337890625,0.6220703125,0.6005859375,0.5419921875,0.4638671875,0.400390625,0.37890625,0.400390625,0.4482421875,0.4990234375,0.544921875,0.57421875,0.580078125,0.5712890625,0.564453125,0.5703125,0.5859375,0.6142578125,0.638671875,0.63671875,0.6044921875,0.5517578125,0.5,0.4541015625,0.4375,0.466796875,0.53515625,0.611328125,0.662109375,0.673828125,0.6767578125,0.6826171875,0.669921875,0.6220703125,0.5419921875,0.4541015625,0.376953125,0.3134765625,0.2900390625,0.3359375,0.439453125,0.5615234375,0.646484375,0.673828125,0.6884765625,0.712890625,0.7294921875,0.7197265625,0.6796875,0.623046875,0.5703125,0.5087890625,0.4208984375,0.3388671875,0.3017578125,0.32421875,0.3837890625,0.4482421875,0.51953125,0.6220703125,0.7216796875,0.7763671875,0.771484375,0.7265625,0.673828125,0.630859375,0.6201171875,0.6376953125,0.6572265625,0.654296875,0.6171875,0.55078125,0.484375,0.4404296875,0.4267578125,0.4326171875,0.4375,0.4208984375,0.376953125,0.3212890625,0.2568359375,0.216796875,0.2314453125,0.296875,0.3798828125,0.4482421875,0.5048828125,0.5341796875,0.5224609375,0.4736328125,0.4140625,0.376953125,0.376953125,0.3955078125,0.439453125,0.490234375,0.521484375,0.515625,0.478515625,0.4287109375,0.37109375,0.30078125,0.25,0.25,0.3037109375,0.380859375,0.4482421875,0.515625,0.5966796875,0.6533203125,0.6533203125,0.5966796875,0.515625,0.4482421875,0.3798828125,0.298828125,0.2421875,0.2421875,0.298828125,0.3798828125,0.4482421875,0.5126953125,0.5849609375,0.646484375,0.6806640625,0.6845703125,0.6767578125,0.673828125,0.6591796875,0.59375,0.490234375,0.3896484375,0.3330078125,0.3349609375,0.376953125,0.42578125,0.45703125,0.4580078125,0.4326171875,0.396484375,0.3740234375,0.376953125,0.3974609375,0.4462890625,0.501953125,0.5283203125,0.5068359375,0.4482421875,0.376953125,0.314453125,0.2978515625,0.3505859375,0.458984375,0.5791015625,0.65625,0.673828125,0.6748046875,0.6806640625,0.6884765625,0.693359375,0.69140625,0.68359375,0.673828125,0.662109375,0.6484375,0.638671875,0.638671875,0.6484375,0.662109375,0.673828125,0.6796875,0.6689453125,0.6396484375,0.603515625,0.5751953125,0.5634765625,0.5703125,0.5830078125,0.6025390625,0.6240234375,0.6376953125,0.6396484375,0.6318359375,0.6220703125,0.615234375,0.6201171875,0.62109375,0.6005859375,0.5537109375,0.4921875,0.4287109375,0.373046875,0.3447265625,0.365234375,0.4287109375,0.505859375,0.55859375,0.5703125,0.55859375,0.5078125,0.439453125,0.3896484375,0.3876953125,0.431640625,0.5,0.58203125,0.69140625,0.7890625,0.830078125,0.8046875,0.7392578125,0.673828125,0.59765625,0.4814453125,0.3623046875,0.2939453125,0.2978515625,0.3564453125,0.4287109375,0.5107421875,0.6162109375,0.7060546875,0.7392578125,0.7060546875,0.63671875,0.5703125,0.509765625,0.4658203125,0.4580078125,0.4931640625,0.552734375,0.6015625,0.6220703125,0.6298828125,0.6318359375,0.6259765625,0.6171875,0.611328125,0.61328125,0.6220703125,0.630859375,0.6318359375,0.6220703125,0.6044921875,0.5849609375,0.572265625,0.5703125,0.556640625,0.498046875,0.4130859375,0.345703125,0.3271484375,0.3623046875,0.4287109375,0.49609375,0.5361328125,0.5263671875,0.46875,0.392578125,0.337890625,0.3251953125,0.3310546875,0.361328125,0.416015625,0.48046875,0.5341796875,0.564453125,0.5703125,0.572265625,0.5849609375,0.6083984375,0.6357421875,0.658203125,0.6708984375,0.673828125,0.6650390625,0.623046875,0.5458984375,0.453125,0.3759765625,0.333984375,0.3251953125,0.333984375,0.3759765625,0.4501953125,0.5322265625,0.5966796875,0.625,0.6220703125,0.603515625,0.5537109375,0.4775390625,0.3994140625,0.34375,0.3212890625,0.3251953125,0.341796875,0.37890625,0.435546875,0.4951171875,0.5419921875,0.5654296875,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.578125,0.611328125,0.6494140625,0.6611328125,0.6318359375,0.5712890625,0.5,0.42578125,0.3525390625,0.2998046875,0.2841796875,0.298828125,0.3193359375,0.3251953125,0.333984375,0.3701171875,0.416015625,0.44140625,0.4296875,0.3857421875,0.3251953125,0.271484375,0.2568359375,0.2998046875,0.390625,0.490234375,0.5556640625,0.5703125,0.5771484375,0.6064453125,0.64453125,0.666015625,0.6572265625,0.619140625,0.5703125,0.51171875,0.439453125,0.3837890625,0.3798828125,0.4287109375,0.5029296875,0.5703125,0.6181640625,0.6123046875,0.55078125,0.466796875,0.4052734375,0.3994140625,0.4482421875,0.5,0.515625,0.4970703125,0.4677734375,0.4580078125,0.4873046875,0.55078125,0.6142578125,0.63671875,0.6123046875,0.5595703125,0.515625,0.51171875,0.55078125,0.58984375,0.576171875,0.5087890625,0.419921875,0.3525390625,0.3388671875,0.376953125,0.4169921875,0.412109375,0.3642578125,0.3037109375,0.265625,0.2744140625,0.3251953125,0.3828125,0.4208984375,0.44140625,0.4541015625,0.474609375,0.513671875,0.5703125,0.6298828125,0.6748046875,0.685546875,0.66015625,0.6142578125,0.578125,0.5703125,0.5556640625,0.490234375,0.3935546875,0.3125,0.283203125,0.3125,0.376953125,0.45703125,0.5537109375,0.6328125,0.65625,0.6201171875,0.556640625,0.5,0.4599609375,0.46484375,0.51171875,0.5732421875,0.611328125,0.6025390625,0.55078125,0.48046875,0.3876953125,0.3115234375,0.29296875,0.3408203125,0.4228515625,0.5,0.5693359375,0.619140625,0.6240234375,0.580078125,0.5087890625,0.451171875,0.4287109375,0.421875,0.431640625,0.46484375,0.515625,0.568359375,0.60546875,0.6220703125,0.6328125,0.646484375,0.65625,0.65625,0.646484375,0.6328125,0.6220703125,0.6142578125,0.61328125,0.60546875,0.5810546875,0.5361328125,0.4814453125,0.4287109375,0.3857421875,0.37109375,0.388671875,0.41796875,0.4345703125,0.4208984375,0.376953125,0.32421875,0.28125,0.28515625,0.3544921875,0.4716796875,0.58984375,0.673828125,0.7392578125,0.767578125,0.734375,0.6435546875,0.5341796875,0.455078125,0.4287109375,0.4189453125,0.4111328125,0.4052734375,0.400390625,0.39453125,0.38671875,0.376953125,0.361328125,0.3330078125,0.30859375,0.310546875,0.34375,0.3955078125,0.4482421875,0.4873046875,0.4833984375,0.439453125,0.6455078125,0.6533203125,0.6220703125,0.5595703125,0.4892578125,0.41015625,0.3095703125,0.228515625,0.2109375,0.259765625,0.34375,0.419921875,0.4912109375,0.5615234375,0.609375,0.6201171875,0.6005859375,0.5771484375,0.5693359375,0.556640625,0.505859375,0.4365234375,0.3876953125,0.3837890625,0.4248046875,0.4892578125,0.5576171875,0.615234375,0.6416015625,0.630859375,0.595703125,0.5654296875,0.5595703125,0.5693359375,0.6025390625,0.640625,0.6533203125,0.6259765625,0.5673828125,0.5,0.4345703125,0.39453125,0.3994140625,0.44921875,0.5185546875,0.568359375,0.5791015625,0.5859375,0.609375,0.62890625,0.6201171875,0.5732421875,0.5029296875,0.4296875,0.36328125,0.328125,0.3466796875,0.416015625,0.5029296875,0.564453125,0.5791015625,0.58984375,0.62890625,0.6748046875,0.6982421875,0.6796875,0.626953125,0.5595703125,0.4814453125,0.3818359375,0.3017578125,0.2822265625,0.3310546875,0.4130859375,0.4892578125,0.5693359375,0.6708984375,0.7548828125,0.7783203125,0.7333984375,0.6533203125,0.5791015625,0.521484375,0.50390625,0.529296875,0.5703125,0.5927734375,0.5712890625,0.509765625,0.447265625,0.4248046875,0.4453125,0.4833984375,0.505859375,0.48828125,0.4296875,0.3544921875,0.271484375,0.2197265625,0.2353515625,0.3125,0.41015625,0.4892578125,0.5556640625,0.5986328125,0.59765625,0.55078125,0.486328125,0.439453125,0.4296875,0.44140625,0.4833984375,0.537109375,0.5673828125,0.5556640625,0.505859375,0.439453125,0.3642578125,0.2802734375,0.2265625,0.23828125,0.3134765625,0.4111328125,0.4892578125,0.5673828125,0.6591796875,0.724609375,0.724609375,0.6591796875,0.5673828125,0.4892578125,0.412109375,0.3193359375,0.2548828125,0.2548828125,0.3193359375,0.412109375,0.4892578125,0.5595703125,0.6220703125,0.6552734375,0.6484375,0.6171875,0.5869140625,0.5791015625,0.56640625,0.5087890625,0.423828125,0.35546875,0.3349609375,0.3671875,0.4296875,0.49609375,0.544921875,0.556640625,0.5263671875,0.4765625,0.4375,0.4296875,0.44140625,0.484375,0.5380859375,0.5673828125,0.552734375,0.5,0.4296875,0.36328125,0.3291015625,0.349609375,0.4189453125,0.505859375,0.5654296875,0.5791015625,0.5791015625,0.580078125,0.58203125,0.58203125,0.58203125,0.5810546875,0.5791015625,0.5771484375,0.5751953125,0.5732421875,0.5732421875,0.5751953125,0.5771484375,0.5791015625,0.580078125,0.578125,0.572265625,0.56640625,0.560546875,0.55859375,0.5595703125,0.5615234375,0.564453125,0.568359375,0.5712890625,0.572265625,0.5712890625,0.5693359375,0.57421875,0.5986328125,0.62109375,0.6171875,0.576171875,0.5107421875,0.439453125,0.3740234375,0.337890625,0.3515625,0.4130859375,0.4912109375,0.546875,0.5595703125,0.5478515625,0.4990234375,0.4326171875,0.3857421875,0.3857421875,0.4306640625,0.5,0.5810546875,0.68359375,0.7666015625,0.787109375,0.73828125,0.6552734375,0.5791015625,0.498046875,0.3876953125,0.2900390625,0.2529296875,0.287109375,0.36328125,0.439453125,0.5224609375,0.6298828125,0.7216796875,0.7529296875,0.712890625,0.634765625,0.5595703125,0.4912109375,0.4404296875,0.4287109375,0.4599609375,0.5146484375,0.5576171875,0.5693359375,0.5703125,0.5712890625,0.5703125,0.568359375,0.5673828125,0.568359375,0.5693359375,0.5703125,0.5703125,0.568359375,0.5654296875,0.5615234375,0.5595703125,0.5595703125,0.546875,0.490234375,0.41015625,0.3486328125,0.3349609375,0.373046875,0.439453125,0.5087890625,0.55859375,0.5673828125,0.5322265625,0.474609375,0.4306640625,0.419921875,0.4228515625,0.4404296875,0.470703125,0.5078125,0.5390625,0.5556640625,0.5595703125,0.5595703125,0.5625,0.56640625,0.572265625,0.576171875,0.5791015625,0.5791015625,0.5751953125,0.556640625,0.5205078125,0.478515625,0.4423828125,0.423828125,0.419921875,0.423828125,0.4423828125,0.4775390625,0.517578125,0.55078125,0.5673828125,0.5693359375,0.5634765625,0.5439453125,0.5087890625,0.46875,0.4375,0.421875,0.419921875,0.4248046875,0.4423828125,0.474609375,0.5107421875,0.5400390625,0.556640625,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.568359375,0.6025390625,0.642578125,0.6572265625,0.6298828125,0.5703125,0.5,0.427734375,0.3662109375,0.3349609375,0.34375,0.3798828125,0.412109375,0.419921875,0.4296875,0.470703125,0.5224609375,0.5517578125,0.5390625,0.48828125,0.419921875,0.3544921875,0.3203125,0.3388671875,0.4052734375,0.48828125,0.5458984375,0.5595703125,0.568359375,0.6083984375,0.6591796875,0.6884765625,0.67578125,0.6259765625,0.5595703125,0.4833984375,0.392578125,0.3271484375,0.3271484375,0.390625,0.4814453125,0.5595703125,0.6162109375,0.6181640625,0.5634765625,0.4853515625,0.4306640625,0.4326171875,0.4892578125,0.5478515625,0.560546875,0.5244140625,0.4697265625,0.4345703125,0.44921875,0.509765625,0.5693359375,0.58203125,0.544921875,0.4853515625,0.4443359375,0.453125,0.509765625,0.564453125,0.5654296875,0.5087890625,0.4296875,0.3740234375,0.375,0.4296875,0.486328125,0.494140625,0.4521484375,0.3916015625,0.3515625,0.361328125,0.419921875,0.4814453125,0.5087890625,0.5009765625,0.478515625,0.470703125,0.498046875,0.5595703125,0.6279296875,0.6787109375,0.69140625,0.662109375,0.609375,0.5693359375,0.5595703125,0.5458984375,0.4892578125,0.40625,0.341796875,0.326171875,0.36328125,0.4296875,0.5107421875,0.611328125,0.69140625,0.7080078125,0.6572265625,0.57421875,0.5,0.443359375,0.4345703125,0.4765625,0.5380859375,0.578125,0.568359375,0.509765625,0.4306640625,0.3369140625,0.2685546875,0.2646484375,0.328125,0.419921875,0.5,0.568359375,0.6142578125,0.615234375,0.5703125,0.5029296875,0.453125,0.439453125,0.4404296875,0.4541015625,0.4814453125,0.515625,0.546875,0.564453125,0.5693359375,0.5712890625,0.5732421875,0.5751953125,0.5751953125,0.5732421875,0.5712890625,0.5693359375,0.57421875,0.5966796875,0.619140625,0.6142578125,0.57421875,0.5087890625,0.439453125,0.3828125,0.37109375,0.4072265625,0.4619140625,0.498046875,0.4873046875,0.4296875,0.3564453125,0.283203125,0.25,0.2890625,0.3857421875,0.49609375,0.5791015625,0.646484375,0.6826171875,0.666015625,0.599609375,0.5146484375,0.4541015625,0.439453125,0.4384765625,0.4365234375,0.435546875,0.4345703125,0.4326171875,0.431640625,0.4296875,0.419921875,0.38671875,0.3486328125,0.3359375,0.36328125,0.421875,0.4892578125,0.5458984375,0.5546875,0.513671875,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.5546875,0.599609375,0.5986328125,0.5546875,0.4892578125,0.4150390625,0.333984375,0.2880859375,0.310546875,0.39453125,0.498046875,0.5791015625,0.6455078125,0.6787109375,0.65625,0.583984375,0.494140625,0.43359375,0.419921875,0.412109375,0.3818359375,0.3486328125,0.3408203125,0.37109375,0.4306640625,0.5,0.564453125,0.607421875,0.60546875,0.55859375,0.4921875,0.4423828125,0.4296875,0.439453125,0.4873046875,0.5537109375,0.6005859375,0.6015625,0.5576171875,0.4892578125,0.4189453125,0.3603515625,0.3349609375,0.349609375,0.3896484375,0.4228515625,0.4296875,0.4404296875,0.49609375,0.578125,0.64453125,0.6640625,0.6318359375,0.5693359375,0.4990234375,0.4306640625,0.384765625,0.375,0.392578125,0.4140625,0.419921875,0.4306640625,0.474609375,0.5322265625,0.5673828125,0.55859375,0.5087890625,0.439453125,0.361328125,0.2744140625,0.220703125,0.2373046875,0.3173828125,0.41796875,0.5,0.5771484375,0.6591796875,0.7060546875,0.68359375,0.599609375,0.498046875,0.419921875,0.365234375,0.3671875,0.4267578125,0.5087890625,0.56640625,0.56640625,0.509765625,0.453125,0.4501953125,0.50390625,0.580078125,0.6328125,0.6279296875,0.5693359375,0.48828125,0.3876953125,0.3095703125,0.2939453125,0.3466796875,0.4326171875,0.509765625,0.5791015625,0.6396484375,0.669921875,0.6591796875,0.6220703125,0.5888671875,0.5791015625,0.5869140625,0.626953125,0.6787109375,0.708984375,0.697265625,0.6474609375,0.5791015625,0.5,0.3984375,0.31640625,0.296875,0.3466796875,0.431640625,0.509765625,0.5888671875,0.6806640625,0.7431640625,0.7373046875,0.666015625,0.5693359375,0.4892578125,0.41015625,0.3193359375,0.2587890625,0.2646484375,0.3359375,0.4306640625,0.509765625,0.5751953125,0.6162109375,0.6083984375,0.5556640625,0.4833984375,0.431640625,0.419921875,0.4140625,0.392578125,0.3759765625,0.388671875,0.4365234375,0.5078125,0.5791015625,0.6474609375,0.6982421875,0.7099609375,0.6787109375,0.6240234375,0.5810546875,0.5693359375,0.5771484375,0.615234375,0.666015625,0.6962890625,0.6845703125,0.6357421875,0.5693359375,0.5,0.4326171875,0.3896484375,0.3837890625,0.40625,0.431640625,0.439453125,0.4404296875,0.4384765625,0.4326171875,0.4267578125,0.4208984375,0.4189453125,0.419921875,0.421875,0.423828125,0.42578125,0.42578125,0.423828125,0.421875,0.419921875,0.41796875,0.416015625,0.4140625,0.4140625,0.416015625,0.41796875,0.419921875,0.421875,0.423828125,0.42578125,0.42578125,0.423828125,0.421875,0.419921875,0.431640625,0.490234375,0.578125,0.650390625,0.673828125,0.6435546875,0.5791015625,0.5078125,0.439453125,0.3955078125,0.388671875,0.4091796875,0.43359375,0.439453125,0.4306640625,0.396484375,0.35546875,0.3388671875,0.36328125,0.419921875,0.4892578125,0.5654296875,0.6494140625,0.7001953125,0.68359375,0.60546875,0.5078125,0.4296875,0.357421875,0.2841796875,0.2529296875,0.2919921875,0.388671875,0.498046875,0.5791015625,0.6533203125,0.7265625,0.7568359375,0.716796875,0.6181640625,0.509765625,0.4296875,0.36328125,0.314453125,0.302734375,0.3330078125,0.3837890625,0.421875,0.4296875,0.427734375,0.423828125,0.4208984375,0.41796875,0.4169921875,0.41796875,0.419921875,0.421875,0.423828125,0.42578125,0.42578125,0.423828125,0.421875,0.419921875,0.412109375,0.3876953125,0.3681640625,0.3759765625,0.421875,0.4892578125,0.5595703125,0.6259765625,0.6787109375,0.6953125,0.671875,0.6259765625,0.587890625,0.5791015625,0.5751953125,0.556640625,0.5205078125,0.478515625,0.4423828125,0.423828125,0.419921875,0.4208984375,0.423828125,0.4296875,0.435546875,0.439453125,0.4404296875,0.439453125,0.44140625,0.4560546875,0.4853515625,0.5224609375,0.5546875,0.57421875,0.5791015625,0.5771484375,0.55859375,0.5234375,0.48046875,0.4443359375,0.423828125,0.419921875,0.4228515625,0.4404296875,0.47265625,0.5107421875,0.544921875,0.564453125,0.5693359375,0.568359375,0.5537109375,0.5244140625,0.490234375,0.4599609375,0.443359375,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.451171875,0.5,0.56640625,0.61328125,0.61328125,0.568359375,0.5,0.431640625,0.38671875,0.388671875,0.435546875,0.501953125,0.5498046875,0.5595703125,0.5673828125,0.607421875,0.6591796875,0.689453125,0.677734375,0.626953125,0.5595703125,0.48828125,0.421875,0.380859375,0.3779296875,0.4033203125,0.4306640625,0.439453125,0.4501953125,0.490234375,0.5380859375,0.5615234375,0.54296875,0.48828125,0.419921875,0.3427734375,0.2529296875,0.1923828125,0.197265625,0.2666015625,0.361328125,0.439453125,0.4990234375,0.5146484375,0.4853515625,0.4384765625,0.41015625,0.4287109375,0.4892578125,0.5498046875,0.5595703125,0.51953125,0.458984375,0.4189453125,0.4296875,0.4892578125,0.5498046875,0.564453125,0.529296875,0.474609375,0.4384765625,0.451171875,0.509765625,0.568359375,0.583984375,0.5546875,0.5078125,0.48046875,0.498046875,0.5595703125,0.6201171875,0.6337890625,0.599609375,0.544921875,0.5087890625,0.5205078125,0.5791015625,0.6337890625,0.625,0.5517578125,0.4521484375,0.3798828125,0.373046875,0.4296875,0.5,0.5517578125,0.56640625,0.5380859375,0.4873046875,0.4482421875,0.439453125,0.4345703125,0.412109375,0.390625,0.39453125,0.435546875,0.5,0.5693359375,0.64453125,0.7275390625,0.779296875,0.763671875,0.6865234375,0.5888671875,0.509765625,0.451171875,0.4384765625,0.474609375,0.529296875,0.564453125,0.5498046875,0.4892578125,0.41015625,0.3193359375,0.2578125,0.26171875,0.330078125,0.4228515625,0.5,0.568359375,0.6279296875,0.658203125,0.650390625,0.6171875,0.5869140625,0.5791015625,0.576171875,0.55859375,0.5263671875,0.48828125,0.4541015625,0.4345703125,0.4296875,0.4287109375,0.4287109375,0.4306640625,0.43359375,0.4375,0.439453125,0.439453125,0.453125,0.5107421875,0.59375,0.66015625,0.6787109375,0.64453125,0.5791015625,0.521484375,0.51171875,0.5517578125,0.6123046875,0.6513671875,0.6396484375,0.5791015625,0.4970703125,0.3876953125,0.2919921875,0.2568359375,0.2919921875,0.3662109375,0.439453125,0.509765625,0.576171875,0.6201171875,0.6279296875,0.6083984375,0.5859375,0.5791015625,0.5791015625,0.576171875,0.5732421875,0.5693359375,0.568359375,0.568359375,0.5693359375,0.5595703125,0.509765625,0.4404296875,0.388671875,0.3828125,0.423828125,0.4892578125,0.5478515625,0.5595703125,0.521484375,0.4970703125,0.533203125,0.5322265625,0.4970703125,0.4482421875,0.3935546875,0.341796875,0.3291015625,0.3798828125,0.4814453125,0.5908203125,0.673828125,0.7353515625,0.7451171875,0.6806640625,0.55859375,0.427734375,0.34375,0.3251953125,0.322265625,0.314453125,0.314453125,0.3388671875,0.3876953125,0.4462890625,0.5,0.5478515625,0.576171875,0.56640625,0.5166015625,0.44921875,0.3974609375,0.376953125,0.37890625,0.421875,0.4892578125,0.5419921875,0.552734375,0.5146484375,0.4482421875,0.3779296875,0.3232421875,0.3017578125,0.3173828125,0.353515625,0.37890625,0.376953125,0.3798828125,0.431640625,0.5224609375,0.61328125,0.666015625,0.6640625,0.6220703125,0.5654296875,0.4921875,0.4169921875,0.3603515625,0.33203125,0.3251953125,0.3251953125,0.337890625,0.392578125,0.46875,0.5263671875,0.5361328125,0.49609375,0.4287109375,0.3505859375,0.265625,0.21484375,0.2333984375,0.3154296875,0.41796875,0.5,0.572265625,0.6328125,0.6455078125,0.5908203125,0.4892578125,0.3896484375,0.3251953125,0.2900390625,0.3154296875,0.40234375,0.509765625,0.5859375,0.5986328125,0.55078125,0.5029296875,0.5087890625,0.56640625,0.6416015625,0.689453125,0.681640625,0.6220703125,0.5419921875,0.4453125,0.3701171875,0.3564453125,0.4052734375,0.4833984375,0.55078125,0.615234375,0.6806640625,0.7275390625,0.73828125,0.7177734375,0.689453125,0.673828125,0.671875,0.7001953125,0.744140625,0.7744140625,0.7705078125,0.7314453125,0.673828125,0.6005859375,0.5,0.4072265625,0.37109375,0.40234375,0.4755859375,0.55078125,0.62890625,0.7099609375,0.75390625,0.7265625,0.63671875,0.5302734375,0.4482421875,0.3720703125,0.296875,0.2607421875,0.2919921875,0.3798828125,0.4794921875,0.55078125,0.60546875,0.623046875,0.583984375,0.498046875,0.40234375,0.33984375,0.3251953125,0.3251953125,0.33203125,0.36328125,0.4296875,0.5185546875,0.60546875,0.673828125,0.7333984375,0.7783203125,0.78515625,0.75,0.69140625,0.6416015625,0.6220703125,0.619140625,0.640625,0.6767578125,0.703125,0.701171875,0.669921875,0.6220703125,0.56640625,0.4990234375,0.439453125,0.4052734375,0.40234375,0.416015625,0.4287109375,0.435546875,0.423828125,0.3955078125,0.359375,0.330078125,0.3193359375,0.3251953125,0.3369140625,0.3505859375,0.3603515625,0.3603515625,0.3505859375,0.3369140625,0.3251953125,0.314453125,0.30078125,0.291015625,0.291015625,0.30078125,0.314453125,0.3251953125,0.3369140625,0.3505859375,0.3603515625,0.3603515625,0.3505859375,0.3369140625,0.3251953125,0.33203125,0.40234375,0.5234375,0.646484375,0.7197265625,0.7236328125,0.673828125,0.6083984375,0.533203125,0.4677734375,0.4287109375,0.419921875,0.42578125,0.4287109375,0.4208984375,0.3876953125,0.345703125,0.3251953125,0.3408203125,0.3876953125,0.4482421875,0.5126953125,0.5791015625,0.6123046875,0.58984375,0.5185546875,0.4375,0.376953125,0.326171875,0.2890625,0.2998046875,0.3740234375,0.4892578125,0.599609375,0.673828125,0.7333984375,0.771484375,0.7548828125,0.6728515625,0.55078125,0.4423828125,0.376953125,0.3291015625,0.2978515625,0.2958984375,0.322265625,0.3583984375,0.3798828125,0.376953125,0.3642578125,0.3447265625,0.3232421875,0.3095703125,0.3076171875,0.3154296875,0.3251953125,0.3369140625,0.3505859375,0.3603515625,0.3603515625,0.3505859375,0.3369140625,0.3251953125,0.314453125,0.306640625,0.3212890625,0.369140625,0.4404296875,0.513671875,0.5703125,0.6220703125,0.671875,0.7041015625,0.7099609375,0.6953125,0.677734375,0.673828125,0.6650390625,0.623046875,0.5458984375,0.453125,0.3759765625,0.333984375,0.3251953125,0.3291015625,0.34765625,0.37890625,0.41015625,0.431640625,0.4365234375,0.4287109375,0.4228515625,0.439453125,0.484375,0.548828125,0.61328125,0.65625,0.673828125,0.67578125,0.640625,0.5654296875,0.46875,0.3837890625,0.3349609375,0.3251953125,0.3310546875,0.361328125,0.4189453125,0.4931640625,0.5615234375,0.6044921875,0.6220703125,0.626953125,0.611328125,0.5703125,0.5146484375,0.46484375,0.4345703125,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4404296875,0.4912109375,0.5595703125,0.609375,0.611328125,0.5673828125,0.5,0.4326171875,0.39453125,0.4052734375,0.458984375,0.525390625,0.568359375,0.5703125,0.568359375,0.5966796875,0.640625,0.6708984375,0.6669921875,0.6279296875,0.5703125,0.505859375,0.4375,0.38671875,0.37109375,0.3876953125,0.4140625,0.4287109375,0.4453125,0.4755859375,0.5,0.4951171875,0.4521484375,0.3896484375,0.3251953125,0.259765625,0.1923828125,0.158203125,0.185546875,0.265625,0.3583984375,0.4287109375,0.4794921875,0.484375,0.4462890625,0.3955078125,0.3671875,0.3857421875,0.4482421875,0.5078125,0.5185546875,0.478515625,0.41796875,0.376953125,0.3876953125,0.4482421875,0.51171875,0.541015625,0.53125,0.501953125,0.4833984375,0.4990234375,0.55078125,0.6015625,0.6064453125,0.5693359375,0.517578125,0.4892578125,0.5087890625,0.5703125,0.6337890625,0.6630859375,0.6533203125,0.625,0.60546875,0.62109375,0.673828125,0.7158203125,0.68359375,0.5751953125,0.4404296875,0.341796875,0.3232421875,0.376953125,0.447265625,0.5,0.5166015625,0.4951171875,0.455078125,0.427734375,0.4287109375,0.4365234375,0.4375,0.4443359375,0.4697265625,0.5146484375,0.5693359375,0.6220703125,0.677734375,0.7421875,0.7822265625,0.767578125,0.7021484375,0.619140625,0.55078125,0.4990234375,0.4833984375,0.501953125,0.53125,0.541015625,0.51171875,0.4482421875,0.3720703125,0.296875,0.2568359375,0.279296875,0.353515625,0.4384765625,0.5,0.552734375,0.611328125,0.66015625,0.6845703125,0.6845703125,0.6767578125,0.673828125,0.66796875,0.6376953125,0.580078125,0.505859375,0.4375,0.39453125,0.376953125,0.3681640625,0.3671875,0.376953125,0.39453125,0.4140625,0.4267578125,0.4287109375,0.443359375,0.5087890625,0.6083984375,0.69921875,0.7421875,0.7275390625,0.673828125,0.6240234375,0.6201171875,0.6630859375,0.71875,0.7509765625,0.734375,0.673828125,0.5908203125,0.4794921875,0.373046875,0.3173828125,0.326171875,0.375,0.4287109375,0.484375,0.55078125,0.615234375,0.658203125,0.6748046875,0.6748046875,0.673828125,0.6708984375,0.658203125,0.638671875,0.62109375,0.611328125,0.61328125,0.6220703125,0.619140625,0.5703125,0.4873046875,0.4111328125,0.3759765625,0.3935546875,0.4482421875,0.5,0.515625,0.4892578125,0.453125,0.4580078125,0.44140625,0.416015625,0.39453125,0.3740234375,0.3603515625,0.380859375,0.44921875,0.5546875,0.6591796875,0.740234375,0.798828125,0.79296875,0.6982421875,0.541015625,0.3798828125,0.2802734375,0.2587890625,0.26171875,0.2802734375,0.3193359375,0.375,0.4326171875,0.4755859375,0.5,0.5185546875,0.53125,0.5244140625,0.4912109375,0.4423828125,0.3955078125,0.3642578125,0.3486328125,0.375,0.4306640625,0.48046875,0.4931640625,0.4599609375,0.39453125,0.3271484375,0.287109375,0.2861328125,0.3203125,0.361328125,0.380859375,0.3642578125,0.34765625,0.3720703125,0.44140625,0.5322265625,0.609375,0.6435546875,0.634765625,0.607421875,0.5478515625,0.4609375,0.369140625,0.2998046875,0.2646484375,0.2587890625,0.2734375,0.3408203125,0.44140625,0.52734375,0.560546875,0.5341796875,0.46875,0.3896484375,0.2998046875,0.240234375,0.248046875,0.3212890625,0.4189453125,0.5,0.56640625,0.6005859375,0.57421875,0.48828125,0.3779296875,0.29296875,0.2587890625,0.2548828125,0.3095703125,0.4169921875,0.53515625,0.6181640625,0.6376953125,0.6044921875,0.5712890625,0.5830078125,0.6357421875,0.6923828125,0.7197265625,0.697265625,0.634765625,0.55859375,0.4755859375,0.421875,0.4248046875,0.48046875,0.55078125,0.6044921875,0.6552734375,0.720703125,0.7783203125,0.806640625,0.7978515625,0.7685546875,0.740234375,0.720703125,0.7275390625,0.7568359375,0.787109375,0.7978515625,0.7802734375,0.740234375,0.6826171875,0.591796875,0.5,0.4521484375,0.4697265625,0.53125,0.6044921875,0.6796875,0.748046875,0.767578125,0.7119140625,0.5986328125,0.4794921875,0.39453125,0.3232421875,0.26953125,0.26953125,0.3369140625,0.4453125,0.5458984375,0.6044921875,0.640625,0.6318359375,0.5634765625,0.4521484375,0.341796875,0.2734375,0.2587890625,0.263671875,0.2958984375,0.369140625,0.4775390625,0.5927734375,0.6845703125,0.740234375,0.78515625,0.8212890625,0.826171875,0.7900390625,0.7275390625,0.6689453125,0.634765625,0.6123046875,0.603515625,0.61328125,0.6318359375,0.6484375,0.6494140625,0.634765625,0.609375,0.5595703125,0.4990234375,0.4521484375,0.4345703125,0.4443359375,0.46875,0.486328125,0.46484375,0.4033203125,0.3251953125,0.263671875,0.2421875,0.2587890625,0.2880859375,0.3232421875,0.34765625,0.34765625,0.3232421875,0.2880859375,0.2587890625,0.2294921875,0.1953125,0.1708984375,0.1708984375,0.1953125,0.2294921875,0.2587890625,0.2880859375,0.3232421875,0.34765625,0.34765625,0.3232421875,0.2880859375,0.2587890625,0.2509765625,0.31640625,0.4521484375,0.6103515625,0.728515625,0.76953125,0.740234375,0.689453125,0.6240234375,0.5546875,0.501953125,0.4755859375,0.46875,0.46875,0.4609375,0.42578125,0.375,0.3359375,0.328125,0.3515625,0.39453125,0.4404296875,0.48046875,0.4970703125,0.4775390625,0.43359375,0.3896484375,0.3642578125,0.34765625,0.353515625,0.400390625,0.48828125,0.5947265625,0.6845703125,0.740234375,0.7783203125,0.7763671875,0.71484375,0.6044921875,0.4833984375,0.3974609375,0.3642578125,0.349609375,0.3505859375,0.3671875,0.3857421875,0.3955078125,0.38671875,0.3642578125,0.33203125,0.28515625,0.2373046875,0.208984375,0.2099609375,0.232421875,0.2587890625,0.2880859375,0.3232421875,0.34765625,0.34765625,0.3232421875,0.2880859375,0.2587890625,0.2373046875,0.2392578125,0.28125,0.35546875,0.439453125,0.5009765625,0.5302734375,0.552734375,0.5927734375,0.642578125,0.6904296875,0.7236328125,0.73828125,0.740234375,0.728515625,0.6708984375,0.5634765625,0.435546875,0.328125,0.2705078125,0.2587890625,0.267578125,0.30859375,0.375,0.44140625,0.4833984375,0.490234375,0.46875,0.4462890625,0.4443359375,0.48046875,0.5517578125,0.63671875,0.7041015625,0.740234375,0.7548828125,0.7158203125,0.61328125,0.474609375,0.34765625,0.2734375,0.2587890625,0.263671875,0.2939453125,0.3583984375,0.447265625,0.53515625,0.6005859375,0.634765625,0.6572265625,0.65625,0.6240234375,0.568359375,0.51171875,0.4765625,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.4794921875,0.525390625,0.5849609375,0.6240234375,0.6171875,0.568359375,0.5,0.4345703125,0.400390625,0.4140625,0.4638671875,0.5185546875,0.544921875,0.5302734375,0.5107421875,0.517578125,0.546875,0.5771484375,0.587890625,0.5703125,0.5302734375,0.48046875,0.4248046875,0.3828125,0.375,0.400390625,0.4384765625,0.46875,0.49609375,0.5166015625,0.5078125,0.4609375,0.3857421875,0.3115234375,0.2587890625,0.2138671875,0.1796875,0.1845703125,0.240234375,0.3291015625,0.4140625,0.46875,0.501953125,0.484375,0.421875,0.3525390625,0.3154296875,0.3330078125,0.39453125,0.4541015625,0.46484375,0.4248046875,0.3642578125,0.32421875,0.3349609375,0.39453125,0.462890625,0.5146484375,0.541015625,0.546875,0.548828125,0.5654296875,0.6044921875,0.63671875,0.619140625,0.5576171875,0.48828125,0.451171875,0.4677734375,0.5302734375,0.5986328125,0.6494140625,0.67578125,0.6826171875,0.6845703125,0.701171875,0.740234375,0.765625,0.7109375,0.58203125,0.43359375,0.3291015625,0.3095703125,0.3642578125,0.4326171875,0.482421875,0.5,0.4853515625,0.4609375,0.451171875,0.46875,0.49609375,0.5244140625,0.5517578125,0.5771484375,0.59765625,0.6162109375,0.634765625,0.6591796875,0.6953125,0.7255859375,0.7294921875,0.7001953125,0.65234375,0.6044921875,0.5654296875,0.548828125,0.546875,0.541015625,0.5146484375,0.462890625,0.39453125,0.32421875,0.2734375,0.26953125,0.3203125,0.400390625,0.46875,0.5,0.5234375,0.56640625,0.6240234375,0.6796875,0.71875,0.7373046875,0.740234375,0.7353515625,0.705078125,0.640625,0.5517578125,0.4638671875,0.3984375,0.3642578125,0.3408203125,0.333984375,0.3525390625,0.3916015625,0.4345703125,0.462890625,0.46875,0.4814453125,0.541015625,0.6357421875,0.7255859375,0.7783203125,0.7783203125,0.740234375,0.7060546875,0.71484375,0.759765625,0.8095703125,0.830078125,0.8037109375,0.740234375,0.6611328125,0.5654296875,0.4775390625,0.427734375,0.4248046875,0.447265625,0.46875,0.494140625,0.541015625,0.6044921875,0.66796875,0.71484375,0.736328125,0.740234375,0.734375,0.7060546875,0.6630859375,0.6240234375,0.60546875,0.611328125,0.634765625,0.6484375,0.6123046875,0.5302734375,0.435546875,0.37109375,0.359375,0.39453125,0.435546875,0.4580078125,0.4521484375,0.44140625,0.40625,0.369140625,0.3525390625,0.3642578125,0.380859375,0.3994140625,0.4326171875,0.494140625,0.5771484375,0.6640625,0.740234375,0.798828125,0.79296875,0.6982421875,0.541015625,0.3798828125,0.2802734375,0.2587890625,0.267578125,0.3076171875,0.375,0.447265625,0.4970703125,0.5126953125,0.5,0.4853515625,0.484375,0.4912109375,0.4912109375,0.4736328125,0.4384765625,0.39453125,0.359375,0.3642578125,0.40234375,0.4443359375,0.4580078125,0.4287109375,0.3642578125,0.3017578125,0.279296875,0.306640625,0.36328125,0.416015625,0.427734375,0.39453125,0.3525390625,0.333984375,0.3583984375,0.4248046875,0.5087890625,0.5751953125,0.6044921875,0.615234375,0.5869140625,0.513671875,0.4140625,0.322265625,0.26953125,0.2587890625,0.275390625,0.349609375,0.4638671875,0.5654296875,0.61328125,0.59375,0.5302734375,0.44921875,0.3515625,0.2783203125,0.2705078125,0.330078125,0.4208984375,0.5,0.5615234375,0.5732421875,0.5185546875,0.4169921875,0.3134765625,0.255859375,0.2587890625,0.2900390625,0.3642578125,0.4716796875,0.57421875,0.6396484375,0.654296875,0.634765625,0.6181640625,0.6376953125,0.6787109375,0.712890625,0.7119140625,0.671875,0.6044921875,0.5322265625,0.4677734375,0.44140625,0.46875,0.5341796875,0.5986328125,0.634765625,0.6689453125,0.7275390625,0.7900390625,0.826171875,0.8212890625,0.78515625,0.740234375,0.69921875,0.681640625,0.693359375,0.7236328125,0.751953125,0.759765625,0.740234375,0.7021484375,0.6279296875,0.546875,0.5,0.5087890625,0.564453125,0.634765625,0.7080078125,0.76953125,0.775390625,0.7041015625,0.5771484375,0.4501953125,0.3642578125,0.296875,0.26171875,0.2900390625,0.3798828125,0.4990234375,0.5927734375,0.634765625,0.65234375,0.6259765625,0.546875,0.435546875,0.33203125,0.271484375,0.2587890625,0.2666015625,0.3095703125,0.3974609375,0.513671875,0.6259765625,0.703125,0.740234375,0.7685546875,0.7978515625,0.806640625,0.7783203125,0.720703125,0.6552734375,0.6044921875,0.5576171875,0.513671875,0.4912109375,0.501953125,0.5400390625,0.580078125,0.6044921875,0.615234375,0.59375,0.546875,0.5,0.4775390625,0.490234375,0.5302734375,0.5615234375,0.53515625,0.44921875,0.33984375,0.25390625,0.2275390625,0.2587890625,0.3095703125,0.369140625,0.4111328125,0.4111328125,0.369140625,0.3095703125,0.2587890625,0.208984375,0.1494140625,0.1064453125,0.1064453125,0.1494140625,0.208984375,0.2587890625,0.3095703125,0.369140625,0.4111328125,0.4111328125,0.369140625,0.3095703125,0.2587890625,0.2294921875,0.2705078125,0.388671875,0.546875,0.6826171875,0.748046875,0.740234375,0.7099609375,0.6650390625,0.61328125,0.568359375,0.541015625,0.53125,0.5302734375,0.5224609375,0.4873046875,0.4306640625,0.375,0.3427734375,0.341796875,0.3642578125,0.3876953125,0.3994140625,0.3974609375,0.3857421875,0.376953125,0.37890625,0.39453125,0.4169921875,0.4580078125,0.5185546875,0.5908203125,0.6591796875,0.708984375,0.740234375,0.7548828125,0.7216796875,0.634765625,0.5244140625,0.4306640625,0.3876953125,0.39453125,0.4189453125,0.458984375,0.4970703125,0.5078125,0.4853515625,0.44140625,0.39453125,0.3408203125,0.2646484375,0.1923828125,0.15625,0.1689453125,0.2119140625,0.2587890625,0.3095703125,0.369140625,0.4111328125,0.4111328125,0.369140625,0.3095703125,0.2587890625,0.22265625,0.2255859375,0.2783203125,0.361328125,0.4384765625,0.4765625,0.46875,0.45703125,0.4765625,0.533203125,0.6123046875,0.6875,0.7314453125,0.740234375,0.728515625,0.6708984375,0.5634765625,0.435546875,0.328125,0.2705078125,0.2587890625,0.271484375,0.3310546875,0.4248046875,0.515625,0.568359375,0.5673828125,0.5302734375,0.484375,0.4501953125,0.455078125,0.5107421875,0.599609375,0.6845703125,0.740234375,0.7734375,0.748046875,0.6484375,0.501953125,0.361328125,0.2763671875,0.2587890625,0.2607421875,0.2763671875,0.3193359375,0.3916015625,0.4775390625,0.552734375,0.6044921875,0.6474609375,0.6708984375,0.6630859375,0.6240234375,0.5732421875,0.5380859375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5390625,0.5771484375,0.6240234375,0.646484375,0.6259765625,0.5703125,0.5,0.435546875,0.4052734375,0.4189453125,0.4609375,0.4990234375,0.50390625,0.46875,0.4287109375,0.4111328125,0.421875,0.4521484375,0.4814453125,0.48828125,0.46875,0.4384765625,0.400390625,0.375,0.3828125,0.4248046875,0.48046875,0.5302734375,0.5712890625,0.5869140625,0.5546875,0.474609375,0.3759765625,0.296875,0.2587890625,0.236328125,0.234375,0.2705078125,0.341796875,0.4267578125,0.494140625,0.5302734375,0.5419921875,0.4990234375,0.4140625,0.328125,0.28515625,0.3017578125,0.3642578125,0.423828125,0.4345703125,0.39453125,0.333984375,0.2939453125,0.3046875,0.3642578125,0.4365234375,0.5068359375,0.560546875,0.5908203125,0.6025390625,0.61328125,0.634765625,0.646484375,0.6044921875,0.5185546875,0.43359375,0.3896484375,0.4072265625,0.46875,0.5419921875,0.611328125,0.666015625,0.6953125,0.7080078125,0.7177734375,0.740234375,0.748046875,0.68359375,0.5576171875,0.4248046875,0.3408203125,0.3359375,0.39453125,0.4609375,0.50390625,0.513671875,0.5,0.484375,0.4921875,0.5302734375,0.578125,0.6318359375,0.6708984375,0.6796875,0.6591796875,0.6279296875,0.6044921875,0.5908203125,0.595703125,0.619140625,0.6455078125,0.662109375,0.6572265625,0.634765625,0.61328125,0.6025390625,0.5908203125,0.560546875,0.5068359375,0.4365234375,0.3642578125,0.2998046875,0.275390625,0.306640625,0.3798828125,0.4609375,0.5048828125,0.5,0.486328125,0.501953125,0.5517578125,0.6240234375,0.69140625,0.7314453125,0.740234375,0.73828125,0.72265625,0.6796875,0.607421875,0.521484375,0.4462890625,0.39453125,0.353515625,0.3369140625,0.3583984375,0.4140625,0.4775390625,0.5205078125,0.5302734375,0.5380859375,0.5791015625,0.6455078125,0.712890625,0.7548828125,0.7607421875,0.740234375,0.724609375,0.7470703125,0.794921875,0.8369140625,0.8427734375,0.806640625,0.740234375,0.66796875,0.6015625,0.5546875,0.5380859375,0.541015625,0.54296875,0.5302734375,0.5166015625,0.5283203125,0.5712890625,0.634765625,0.6962890625,0.732421875,0.740234375,0.73046875,0.6875,0.6240234375,0.568359375,0.546875,0.5634765625,0.6044921875,0.6396484375,0.6279296875,0.5634765625,0.46875,0.38671875,0.3505859375,0.3642578125,0.392578125,0.4228515625,0.44140625,0.462890625,0.396484375,0.3447265625,0.337890625,0.376953125,0.423828125,0.455078125,0.4775390625,0.50390625,0.544921875,0.603515625,0.673828125,0.7353515625,0.7451171875,0.6806640625,0.55859375,0.427734375,0.34375,0.3251953125,0.3369140625,0.3876953125,0.4638671875,0.5322265625,0.5615234375,0.544921875,0.5,0.45703125,0.44921875,0.474609375,0.5078125,0.5234375,0.501953125,0.4482421875,0.396484375,0.384765625,0.4111328125,0.44921875,0.4658203125,0.4404296875,0.376953125,0.3173828125,0.3095703125,0.357421875,0.4326171875,0.490234375,0.49609375,0.4482421875,0.3837890625,0.3212890625,0.294921875,0.3271484375,0.4052734375,0.490234375,0.55078125,0.595703125,0.60546875,0.564453125,0.4833984375,0.39453125,0.337890625,0.3251953125,0.3408203125,0.4130859375,0.5205078125,0.615234375,0.6572265625,0.6337890625,0.5703125,0.48828125,0.3857421875,0.3037109375,0.28515625,0.3359375,0.421875,0.5,0.55859375,0.5595703125,0.49609375,0.3984375,0.3154296875,0.2900390625,0.3251953125,0.3837890625,0.462890625,0.5458984375,0.607421875,0.6328125,0.6318359375,0.6220703125,0.6201171875,0.6455078125,0.681640625,0.697265625,0.67578125,0.62109375,0.55078125,0.4814453125,0.431640625,0.4267578125,0.470703125,0.5419921875,0.599609375,0.6220703125,0.6416015625,0.69140625,0.75,0.78515625,0.7783203125,0.7333984375,0.673828125,0.615234375,0.576171875,0.572265625,0.603515625,0.646484375,0.6748046875,0.673828125,0.65234375,0.5966796875,0.529296875,0.490234375,0.5,0.5517578125,0.6220703125,0.6953125,0.759765625,0.7724609375,0.7080078125,0.5869140625,0.462890625,0.376953125,0.3115234375,0.283203125,0.31640625,0.4072265625,0.5166015625,0.595703125,0.6220703125,0.625,0.5966796875,0.5322265625,0.4501953125,0.3759765625,0.333984375,0.3251953125,0.33203125,0.3681640625,0.4384765625,0.525390625,0.60546875,0.6552734375,0.673828125,0.689453125,0.7177734375,0.73828125,0.7275390625,0.6806640625,0.615234375,0.55078125,0.484375,0.41015625,0.3603515625,0.365234375,0.419921875,0.4931640625,0.55078125,0.5927734375,0.5966796875,0.564453125,0.521484375,0.5,0.5166015625,0.5703125,0.615234375,0.5947265625,0.505859375,0.3896484375,0.30078125,0.2802734375,0.3251953125,0.3935546875,0.474609375,0.53125,0.53125,0.474609375,0.3935546875,0.3251953125,0.2578125,0.1767578125,0.1201171875,0.1201171875,0.1767578125,0.2578125,0.3251953125,0.3935546875,0.474609375,0.53125,0.53125,0.474609375,0.3935546875,0.3251953125,0.275390625,0.279296875,0.3525390625,0.4755859375,0.5966796875,0.6669921875,0.673828125,0.6611328125,0.640625,0.6162109375,0.5927734375,0.5771484375,0.5712890625,0.5703125,0.564453125,0.5341796875,0.484375,0.4287109375,0.3876953125,0.3720703125,0.376953125,0.3818359375,0.3681640625,0.3486328125,0.3408203125,0.3583984375,0.3984375,0.4482421875,0.5009765625,0.5595703125,0.6123046875,0.6455078125,0.66015625,0.6650390625,0.673828125,0.6708984375,0.6220703125,0.53515625,0.4501953125,0.4013671875,0.4052734375,0.4482421875,0.505859375,0.5791015625,0.6337890625,0.638671875,0.5888671875,0.5146484375,0.4482421875,0.376953125,0.28125,0.197265625,0.1650390625,0.1943359375,0.2607421875,0.3251953125,0.3935546875,0.474609375,0.53125,0.53125,0.474609375,0.3935546875,0.3251953125,0.275390625,0.2724609375,0.322265625,0.3974609375,0.45703125,0.4677734375,0.4287109375,0.384765625,0.3779296875,0.4228515625,0.5087890625,0.6015625,0.66015625,0.673828125,0.6650390625,0.623046875,0.5458984375,0.453125,0.3759765625,0.333984375,0.3251953125,0.33984375,0.4052734375,0.505859375,0.595703125,0.6396484375,0.6240234375,0.5703125,0.50390625,0.4365234375,0.40234375,0.4296875,0.509765625,0.6025390625,0.673828125,0.724609375,0.7275390625,0.6611328125,0.5439453125,0.419921875,0.341796875,0.3251953125,0.322265625,0.314453125,0.318359375,0.3525390625,0.4140625,0.486328125,0.55078125,0.611328125,0.658203125,0.673828125,0.6533203125,0.611328125,0.578125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.578125,0.611328125,0.6494140625,0.6611328125,0.6318359375,0.5712890625,0.5,0.4365234375,0.4111328125,0.427734375,0.4658203125,0.4921875,0.48046875,0.4287109375,0.37109375,0.33203125,0.328125,0.3583984375,0.40234375,0.4306640625,0.4287109375,0.4140625,0.3876953125,0.37109375,0.38671875,0.4375,0.505859375,0.5703125,0.625,0.646484375,0.611328125,0.525390625,0.4228515625,0.349609375,0.3251953125,0.3193359375,0.3359375,0.380859375,0.4453125,0.509765625,0.552734375,0.5703125,0.5654296875,0.5078125,0.4140625,0.328125,0.2900390625,0.3134765625,0.376953125,0.4375,0.4482421875,0.4072265625,0.3466796875,0.306640625,0.3173828125,0.376953125,0.451171875,0.52734375,0.587890625,0.6171875,0.6201171875,0.6162109375,0.6220703125,0.6171875,0.5595703125,0.46484375,0.3798828125,0.341796875,0.365234375,0.4287109375,0.5029296875,0.5791015625,0.638671875,0.6689453125,0.671875,0.66796875,0.673828125,0.66796875,0.6064453125,0.5048828125,0.41015625,0.3662109375,0.384765625,0.4482421875,0.51171875,0.5439453125,0.5380859375,0.5146484375,0.5,0.517578125,0.5703125,0.63671875,0.708984375,0.75390625,0.744140625,0.6845703125,0.609375,0.55078125,0.5048828125,0.482421875,0.49609375,0.541015625,0.5927734375,0.623046875,0.6220703125,0.6162109375,0.6201171875,0.6171875,0.587890625,0.52734375,0.451171875,0.376953125,0.3173828125,0.3095703125,0.361328125,0.4453125,0.5166015625,0.5361328125,0.5,0.4541015625,0.4375,0.466796875,0.53515625,0.611328125,0.662109375,0.673828125,0.6767578125,0.6845703125,0.6806640625,0.646484375,0.5849609375,0.5126953125,0.4482421875,0.390625,0.361328125,0.376953125,0.435546875,0.5078125,0.55859375,0.5703125,0.57421875,0.5927734375,0.623046875,0.6552734375,0.67578125,0.6806640625,0.673828125,0.6728515625,0.70703125,0.7587890625,0.7939453125,0.7880859375,0.7421875,0.673828125,0.6083984375,0.5732421875,0.57421875,0.599609375,0.6201171875,0.6123046875,0.5703125,0.5224609375,0.498046875,0.51171875,0.560546875,0.6220703125,0.6640625,0.673828125,0.662109375,0.611328125,0.5380859375,0.48046875,0.46484375,0.494140625,0.55078125,0.60546875,0.623046875,0.587890625,0.51171875,0.4287109375,0.3798828125,0.376953125,0.39453125,0.431640625,0.4716796875,0.5,0.4248046875,0.3720703125,0.3740234375,0.4296875,0.490234375,0.5166015625,0.5087890625,0.4892578125,0.484375,0.515625,0.5791015625,0.6455078125,0.6787109375,0.65625,0.583984375,0.494140625,0.43359375,0.419921875,0.4306640625,0.48046875,0.5498046875,0.599609375,0.6044921875,0.564453125,0.5,0.4423828125,0.431640625,0.4697265625,0.525390625,0.5615234375,0.548828125,0.4892578125,0.4296875,0.4130859375,0.4404296875,0.484375,0.509765625,0.4912109375,0.4296875,0.37109375,0.3662109375,0.4189453125,0.4951171875,0.548828125,0.5458984375,0.4892578125,0.412109375,0.32421875,0.2646484375,0.2705078125,0.33984375,0.4326171875,0.509765625,0.57421875,0.61328125,0.60546875,0.552734375,0.482421875,0.431640625,0.419921875,0.4326171875,0.4912109375,0.576171875,0.6435546875,0.6611328125,0.6259765625,0.5595703125,0.478515625,0.376953125,0.296875,0.28125,0.333984375,0.4208984375,0.5,0.5576171875,0.560546875,0.505859375,0.4248046875,0.3662109375,0.365234375,0.419921875,0.490234375,0.5595703125,0.6064453125,0.6171875,0.599609375,0.5771484375,0.5693359375,0.576171875,0.609375,0.6494140625,0.6640625,0.638671875,0.580078125,0.509765625,0.4404296875,0.39453125,0.3935546875,0.439453125,0.505859375,0.556640625,0.5693359375,0.5810546875,0.6240234375,0.6787109375,0.7099609375,0.6982421875,0.6474609375,0.5791015625,0.51171875,0.4609375,0.44921875,0.4794921875,0.53125,0.5712890625,0.5791015625,0.5673828125,0.5234375,0.4677734375,0.4345703125,0.447265625,0.5,0.5693359375,0.6455078125,0.72265625,0.7587890625,0.7216796875,0.6240234375,0.5126953125,0.4296875,0.36328125,0.326171875,0.3427734375,0.41015625,0.494140625,0.5546875,0.5693359375,0.5673828125,0.55078125,0.517578125,0.4775390625,0.4423828125,0.423828125,0.419921875,0.4228515625,0.44140625,0.4755859375,0.517578125,0.5537109375,0.57421875,0.5791015625,0.5888671875,0.6220703125,0.6591796875,0.669921875,0.6396484375,0.5791015625,0.509765625,0.431640625,0.3408203125,0.27734375,0.27734375,0.3427734375,0.43359375,0.509765625,0.5673828125,0.5830078125,0.5546875,0.5087890625,0.482421875,0.5,0.5595703125,0.6142578125,0.6083984375,0.5380859375,0.44140625,0.37109375,0.3642578125,0.419921875,0.498046875,0.58984375,0.654296875,0.654296875,0.58984375,0.498046875,0.419921875,0.341796875,0.25,0.1845703125,0.1845703125,0.25,0.341796875,0.419921875,0.498046875,0.58984375,0.654296875,0.654296875,0.58984375,0.498046875,0.419921875,0.35546875,0.3251953125,0.3486328125,0.4208984375,0.5087890625,0.5673828125,0.5791015625,0.5771484375,0.5732421875,0.568359375,0.564453125,0.560546875,0.5595703125,0.5595703125,0.5556640625,0.5390625,0.5087890625,0.474609375,0.4453125,0.4306640625,0.4296875,0.4228515625,0.3916015625,0.3544921875,0.3408203125,0.365234375,0.421875,0.4892578125,0.5576171875,0.6181640625,0.6494140625,0.6435546875,0.6123046875,0.5849609375,0.5791015625,0.5693359375,0.51953125,0.44921875,0.3955078125,0.3876953125,0.42578125,0.4892578125,0.5654296875,0.65625,0.7216796875,0.7216796875,0.658203125,0.5673828125,0.4892578125,0.41015625,0.3095703125,0.228515625,0.2109375,0.259765625,0.34375,0.419921875,0.498046875,0.58984375,0.654296875,0.654296875,0.58984375,0.498046875,0.419921875,0.361328125,0.3525390625,0.3955078125,0.458984375,0.5029296875,0.49609375,0.439453125,0.3759765625,0.34375,0.3623046875,0.427734375,0.509765625,0.56640625,0.5791015625,0.5751953125,0.556640625,0.5205078125,0.478515625,0.4423828125,0.423828125,0.419921875,0.4326171875,0.490234375,0.57421875,0.640625,0.658203125,0.6240234375,0.5595703125,0.4814453125,0.392578125,0.33203125,0.3369140625,0.40625,0.5009765625,0.5791015625,0.6435546875,0.67578125,0.6533203125,0.5810546875,0.4931640625,0.43359375,0.419921875,0.412109375,0.3818359375,0.3505859375,0.34375,0.376953125,0.439453125,0.509765625,0.5791015625,0.6357421875,0.66015625,0.6435546875,0.6025390625,0.568359375,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.568359375,0.6025390625,0.642578125,0.6572265625,0.6298828125,0.5703125,0.5,0.4384765625,0.4189453125,0.4443359375,0.4892578125,0.515625,0.4990234375,0.439453125,0.3720703125,0.3212890625,0.3095703125,0.33984375,0.3916015625,0.431640625,0.439453125,0.4306640625,0.4033203125,0.3779296875,0.380859375,0.421875,0.48828125,0.5595703125,0.6240234375,0.6591796875,0.642578125,0.5771484375,0.4931640625,0.4345703125,0.419921875,0.4208984375,0.435546875,0.4658203125,0.501953125,0.53515625,0.5546875,0.5595703125,0.5478515625,0.4921875,0.41015625,0.3447265625,0.3271484375,0.36328125,0.4296875,0.4892578125,0.5,0.4599609375,0.3994140625,0.359375,0.3701171875,0.4296875,0.5029296875,0.5712890625,0.6142578125,0.6201171875,0.59765625,0.57421875,0.5693359375,0.5576171875,0.501953125,0.419921875,0.3544921875,0.337890625,0.373046875,0.439453125,0.5126953125,0.5810546875,0.6240234375,0.6298828125,0.607421875,0.583984375,0.5791015625,0.568359375,0.517578125,0.4443359375,0.3896484375,0.3818359375,0.421875,0.4892578125,0.55078125,0.5712890625,0.5478515625,0.5068359375,0.4814453125,0.5,0.5595703125,0.6357421875,0.720703125,0.7734375,0.759765625,0.68359375,0.5869140625,0.509765625,0.4443359375,0.4033203125,0.404296875,0.4501953125,0.5146484375,0.5595703125,0.5693359375,0.57421875,0.59765625,0.6201171875,0.6142578125,0.5712890625,0.5029296875,0.4296875,0.37109375,0.3671875,0.419921875,0.498046875,0.5546875,0.5546875,0.5,0.4345703125,0.39453125,0.3994140625,0.44921875,0.5185546875,0.568359375,0.5791015625,0.5869140625,0.6171875,0.6484375,0.6552734375,0.6220703125,0.5595703125,0.4892578125,0.4228515625,0.3798828125,0.3828125,0.4306640625,0.4990234375,0.5478515625,0.5595703125,0.5595703125,0.5634765625,0.5693359375,0.5751953125,0.5791015625,0.580078125,0.5791015625,0.587890625,0.6279296875,0.681640625,0.7119140625,0.7001953125,0.6484375,0.5791015625,0.5185546875,0.50390625,0.537109375,0.5908203125,0.626953125,0.6162109375,0.5595703125,0.4931640625,0.4453125,0.4375,0.4716796875,0.52734375,0.5693359375,0.5791015625,0.568359375,0.5185546875,0.451171875,0.4033203125,0.400390625,0.443359375,0.509765625,0.5751953125,0.6162109375,0.6103515625,0.55859375,0.4892578125,0.439453125,0.4296875,0.4404296875,0.4814453125,0.533203125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.5625,0.5205078125,0.4970703125,0.517578125,0.5791015625,0.6357421875,0.6279296875,0.5537109375,0.451171875,0.375,0.365234375,0.419921875,0.4912109375,0.560546875,0.60546875,0.6142578125,0.5927734375,0.5673828125,0.5595703125,0.56640625,0.599609375,0.640625,0.6572265625,0.634765625,0.578125,0.509765625,0.451171875,0.4404296875,0.4794921875,0.5390625,0.578125,0.568359375,0.509765625,0.453125,0.451171875,0.505859375,0.5830078125,0.6376953125,0.6357421875,0.5791015625,0.5185546875,0.4990234375,0.51953125,0.5556640625,0.57421875,0.5517578125,0.4892578125,0.41015625,0.3154296875,0.2490234375,0.2490234375,0.3154296875,0.41015625,0.4892578125,0.560546875,0.62109375,0.6484375,0.6357421875,0.59765625,0.56640625,0.5595703125,0.5673828125,0.5908203125,0.611328125,0.6025390625,0.5576171875,0.490234375,0.419921875,0.345703125,0.265625,0.2197265625,0.2412109375,0.322265625,0.421875,0.5,0.55859375,0.578125,0.5576171875,0.5205078125,0.5,0.5205078125,0.5791015625,0.642578125,0.673828125,0.65234375,0.58203125,0.4951171875,0.4345703125,0.419921875,0.4296875,0.48046875,0.552734375,0.6064453125,0.6142578125,0.5751953125,0.509765625,0.439453125,0.3759765625,0.341796875,0.3466796875,0.3798828125,0.41015625,0.419921875,0.4306640625,0.4736328125,0.5263671875,0.5576171875,0.5458984375,0.49609375,0.4296875,0.36328125,0.3134765625,0.3017578125,0.3330078125,0.3857421875,0.4287109375,0.439453125,0.431640625,0.390625,0.3349609375,0.30078125,0.3076171875,0.353515625,0.419921875,0.4990234375,0.607421875,0.703125,0.740234375,0.7080078125,0.6337890625,0.5595703125,0.48828125,0.4228515625,0.3828125,0.380859375,0.40625,0.4326171875,0.439453125,0.4423828125,0.458984375,0.48828125,0.5244140625,0.556640625,0.57421875,0.5791015625,0.5771484375,0.55859375,0.5234375,0.48046875,0.4443359375,0.423828125,0.419921875,0.4306640625,0.4794921875,0.5458984375,0.5927734375,0.595703125,0.5546875,0.4892578125,0.4140625,0.3251953125,0.2646484375,0.26953125,0.337890625,0.431640625,0.509765625,0.5654296875,0.5654296875,0.5078125,0.4267578125,0.369140625,0.37109375,0.4296875,0.4931640625,0.5224609375,0.5166015625,0.494140625,0.484375,0.509765625,0.5693359375,0.6455078125,0.736328125,0.802734375,0.8046875,0.7431640625,0.6552734375,0.5791015625,0.5029296875,0.412109375,0.34765625,0.3466796875,0.41015625,0.501953125,0.5791015625,0.6572265625,0.7490234375,0.814453125,0.814453125,0.7490234375,0.6572265625,0.5791015625,0.5078125,0.4384765625,0.390625,0.37890625,0.3955078125,0.4150390625,0.419921875,0.4189453125,0.419921875,0.423828125,0.4296875,0.435546875,0.439453125,0.439453125,0.443359375,0.4599609375,0.490234375,0.5244140625,0.5537109375,0.568359375,0.5693359375,0.556640625,0.5068359375,0.44140625,0.396484375,0.3974609375,0.4423828125,0.509765625,0.576171875,0.6181640625,0.615234375,0.564453125,0.494140625,0.443359375,0.4296875,0.419921875,0.3876953125,0.3515625,0.341796875,0.3720703125,0.4306640625,0.5,0.5751953125,0.6640625,0.7255859375,0.72265625,0.6572265625,0.5654296875,0.4892578125,0.4150390625,0.3349609375,0.2890625,0.310546875,0.3916015625,0.4912109375,0.5693359375,0.6455078125,0.736328125,0.802734375,0.8046875,0.7431640625,0.6552734375,0.5791015625,0.5224609375,0.513671875,0.552734375,0.611328125,0.6494140625,0.6376953125,0.5791015625,0.5078125,0.4375,0.3896484375,0.37890625,0.3984375,0.421875,0.4296875,0.4345703125,0.4541015625,0.48828125,0.5263671875,0.55859375,0.576171875,0.5791015625,0.5859375,0.607421875,0.6259765625,0.6142578125,0.5654296875,0.4931640625,0.419921875,0.33984375,0.2470703125,0.1826171875,0.185546875,0.2548828125,0.349609375,0.4296875,0.5029296875,0.5732421875,0.6201171875,0.62890625,0.609375,0.5859375,0.5791015625,0.5673828125,0.515625,0.443359375,0.390625,0.3828125,0.423828125,0.4892578125,0.556640625,0.6015625,0.603515625,0.560546875,0.4970703125,0.4501953125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.451171875,0.4990234375,0.5654296875,0.61328125,0.6162109375,0.57421875,0.509765625,0.4541015625,0.453125,0.5087890625,0.5859375,0.6396484375,0.63671875,0.5791015625,0.5107421875,0.4599609375,0.447265625,0.4765625,0.5283203125,0.5693359375,0.5791015625,0.5654296875,0.505859375,0.4189453125,0.349609375,0.3291015625,0.36328125,0.4296875,0.5029296875,0.572265625,0.615234375,0.6201171875,0.5947265625,0.568359375,0.5595703125,0.5546875,0.53515625,0.501953125,0.4658203125,0.435546875,0.4208984375,0.419921875,0.4150390625,0.39453125,0.3779296875,0.3876953125,0.4326171875,0.5,0.5693359375,0.6259765625,0.63671875,0.5986328125,0.5400390625,0.501953125,0.5126953125,0.5693359375,0.6318359375,0.6640625,0.64453125,0.578125,0.49609375,0.4404296875,0.4296875,0.4248046875,0.40234375,0.3798828125,0.384765625,0.4248046875,0.490234375,0.5595703125,0.623046875,0.6552734375,0.63671875,0.5712890625,0.4892578125,0.4326171875,0.419921875,0.412109375,0.3798828125,0.34375,0.3349609375,0.3662109375,0.427734375,0.5,0.55859375,0.5625,0.5087890625,0.431640625,0.375,0.375,0.4296875,0.5078125,0.6083984375,0.6904296875,0.712890625,0.6669921875,0.5849609375,0.509765625,0.439453125,0.3759765625,0.341796875,0.3466796875,0.3798828125,0.41015625,0.419921875,0.4345703125,0.4931640625,0.5771484375,0.642578125,0.6591796875,0.6240234375,0.5595703125,0.5,0.4833984375,0.509765625,0.5546875,0.580078125,0.560546875,0.5,0.427734375,0.3671875,0.33984375,0.353515625,0.3935546875,0.4296875,0.439453125,0.453125,0.5029296875,0.5712890625,0.6181640625,0.6201171875,0.576171875,0.509765625,0.439453125,0.37890625,0.3486328125,0.359375,0.396484375,0.4296875,0.439453125,0.4404296875,0.439453125,0.4365234375,0.4326171875,0.4296875,0.4287109375,0.4296875,0.4404296875,0.48046875,0.529296875,0.5546875,0.5390625,0.486328125,0.419921875,0.36328125,0.357421875,0.4033203125,0.4677734375,0.509765625,0.5,0.439453125,0.369140625,0.314453125,0.2978515625,0.3251953125,0.376953125,0.41796875,0.4296875,0.423828125,0.3935546875,0.359375,0.3505859375,0.3798828125,0.439453125,0.509765625,0.5791015625,0.638671875,0.666015625,0.6533203125,0.6142578125,0.5791015625,0.5693359375,0.5771484375,0.6181640625,0.6708984375,0.6064453125,0.5830078125,0.578125,0.609375,0.673828125,0.7265625,0.701171875,0.5908203125,0.4423828125,0.3232421875,0.2841796875,0.3251953125,0.392578125,0.47265625,0.546875,0.58984375,0.5966796875,0.5830078125,0.5703125,0.568359375,0.59375,0.6337890625,0.6591796875,0.6513671875,0.609375,0.55078125,0.5,0.4912109375,0.525390625,0.5771484375,0.611328125,0.6025390625,0.55078125,0.5029296875,0.5087890625,0.5703125,0.654296875,0.7158203125,0.7216796875,0.673828125,0.6181640625,0.587890625,0.580078125,0.576171875,0.55859375,0.5146484375,0.4482421875,0.3681640625,0.2744140625,0.20703125,0.20703125,0.2744140625,0.3681640625,0.4482421875,0.5185546875,0.580078125,0.61328125,0.6103515625,0.5859375,0.5673828125,0.5703125,0.5810546875,0.5888671875,0.57421875,0.52734375,0.455078125,0.3828125,0.3251953125,0.2734375,0.2275390625,0.21875,0.2646484375,0.3505859375,0.4384765625,0.5,0.5458984375,0.5751953125,0.5849609375,0.587890625,0.59765625,0.626953125,0.673828125,0.7158203125,0.7177734375,0.6572265625,0.5478515625,0.4306640625,0.3505859375,0.3251953125,0.3291015625,0.384765625,0.478515625,0.5693359375,0.615234375,0.6044921875,0.55078125,0.484375,0.40625,0.3369140625,0.298828125,0.296875,0.3125,0.3251953125,0.34375,0.3876953125,0.4384765625,0.4697265625,0.4638671875,0.4267578125,0.376953125,0.3271484375,0.2900390625,0.28515625,0.3154296875,0.3671875,0.41015625,0.4287109375,0.4296875,0.39453125,0.3359375,0.2822265625,0.26171875,0.2802734375,0.3251953125,0.3896484375,0.4921875,0.6015625,0.6708984375,0.67578125,0.630859375,0.5703125,0.5068359375,0.4453125,0.40234375,0.390625,0.4052734375,0.423828125,0.4287109375,0.43359375,0.45703125,0.50390625,0.5634765625,0.6201171875,0.6572265625,0.673828125,0.67578125,0.640625,0.5654296875,0.46875,0.3837890625,0.3349609375,0.3251953125,0.3359375,0.3798828125,0.4453125,0.4990234375,0.5166015625,0.494140625,0.4482421875,0.392578125,0.33203125,0.2998046875,0.322265625,0.39453125,0.482421875,0.55078125,0.5966796875,0.5791015625,0.498046875,0.3955078125,0.32421875,0.3203125,0.376953125,0.4453125,0.498046875,0.5283203125,0.541015625,0.55078125,0.576171875,0.6220703125,0.6796875,0.7529296875,0.8115234375,0.8251953125,0.7890625,0.728515625,0.673828125,0.615234375,0.5419921875,0.4873046875,0.482421875,0.5322265625,0.6064453125,0.673828125,0.7412109375,0.822265625,0.87890625,0.87890625,0.822265625,0.7412109375,0.673828125,0.607421875,0.5263671875,0.4443359375,0.3828125,0.349609375,0.3349609375,0.3251953125,0.318359375,0.3232421875,0.34375,0.3759765625,0.40625,0.4248046875,0.4287109375,0.4345703125,0.46484375,0.5146484375,0.5703125,0.611328125,0.626953125,0.6220703125,0.6015625,0.5498046875,0.486328125,0.4462890625,0.44921875,0.4921875,0.55078125,0.6083984375,0.6376953125,0.6181640625,0.55078125,0.46484375,0.400390625,0.376953125,0.36328125,0.3408203125,0.328125,0.3427734375,0.3876953125,0.4453125,0.5,0.5546875,0.615234375,0.6513671875,0.6376953125,0.5791015625,0.505859375,0.4482421875,0.3955078125,0.349609375,0.3408203125,0.38671875,0.47265625,0.560546875,0.6220703125,0.6796875,0.7529296875,0.8115234375,0.8251953125,0.7890625,0.728515625,0.673828125,0.6328125,0.630859375,0.6669921875,0.71484375,0.7412109375,0.7255859375,0.673828125,0.60546875,0.5185546875,0.43359375,0.376953125,0.3583984375,0.365234375,0.376953125,0.39453125,0.4375,0.505859375,0.580078125,0.6376953125,0.66796875,0.673828125,0.6748046875,0.6748046875,0.650390625,0.5888671875,0.498046875,0.4033203125,0.3251953125,0.2470703125,0.1591796875,0.1044921875,0.1181640625,0.1962890625,0.296875,0.376953125,0.4541015625,0.5419921875,0.6220703125,0.669921875,0.6826171875,0.6767578125,0.673828125,0.6591796875,0.5966796875,0.5009765625,0.4150390625,0.3759765625,0.3935546875,0.4482421875,0.5068359375,0.5498046875,0.556640625,0.525390625,0.4755859375,0.4375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4384765625,0.4833984375,0.548828125,0.6025390625,0.6201171875,0.59765625,0.55078125,0.5126953125,0.5263671875,0.58984375,0.669921875,0.7236328125,0.72265625,0.673828125,0.61328125,0.5693359375,0.5576171875,0.5830078125,0.62890625,0.6650390625,0.673828125,0.65625,0.5791015625,0.458984375,0.3505859375,0.2978515625,0.314453125,0.376953125,0.453125,0.53515625,0.5986328125,0.6240234375,0.611328125,0.5859375,0.5703125,0.552734375,0.509765625,0.4453125,0.380859375,0.3359375,0.3193359375,0.3251953125,0.3359375,0.349609375,0.3798828125,0.431640625,0.5,0.56640625,0.6220703125,0.6640625,0.671875,0.6435546875,0.6005859375,0.5712890625,0.5791015625,0.6220703125,0.6640625,0.666015625,0.61328125,0.5224609375,0.431640625,0.3798828125,0.376953125,0.384765625,0.3857421875,0.3935546875,0.41796875,0.462890625,0.517578125,0.5703125,0.6142578125,0.62109375,0.576171875,0.490234375,0.3974609375,0.3388671875,0.3251953125,0.3193359375,0.298828125,0.2841796875,0.2998046875,0.3525390625,0.42578125,0.5,0.5595703125,0.5673828125,0.515625,0.4306640625,0.359375,0.3408203125,0.376953125,0.439453125,0.533203125,0.626953125,0.677734375,0.6669921875,0.6142578125,0.55078125,0.484375,0.40625,0.3369140625,0.298828125,0.296875,0.3125,0.3251953125,0.349609375,0.4228515625,0.525390625,0.611328125,0.646484375,0.625,0.5703125,0.5185546875,0.5068359375,0.533203125,0.5712890625,0.587890625,0.5625,0.5,0.4267578125,0.359375,0.3232421875,0.330078125,0.3701171875,0.41015625,0.4287109375,0.4501953125,0.5087890625,0.5830078125,0.6376953125,0.6455078125,0.609375,0.55078125,0.4873046875,0.421875,0.375,0.3642578125,0.384765625,0.4130859375,0.4287109375,0.4365234375,0.431640625,0.4140625,0.3916015625,0.375,0.3701171875,0.376953125,0.3935546875,0.423828125,0.4521484375,0.4560546875,0.427734375,0.3779296875,0.3251953125,0.2880859375,0.3056640625,0.3720703125,0.4521484375,0.5,0.4892578125,0.4287109375,0.3564453125,0.2919921875,0.259765625,0.271484375,0.3154296875,0.3583984375,0.376953125,0.3828125,0.3759765625,0.37109375,0.38671875,0.4287109375,0.4892578125,0.55078125,0.6142578125,0.673828125,0.7080078125,0.705078125,0.673828125,0.638671875,0.6220703125,0.62109375,0.6552734375,0.70703125,0.634765625,0.62109375,0.630859375,0.673828125,0.740234375,0.7919921875,0.759765625,0.6318359375,0.455078125,0.302734375,0.236328125,0.2587890625,0.3134765625,0.39453125,0.482421875,0.546875,0.568359375,0.5556640625,0.5302734375,0.5126953125,0.5283203125,0.57421875,0.6240234375,0.65234375,0.6435546875,0.6044921875,0.56640625,0.5595703125,0.5849609375,0.6240234375,0.6494140625,0.642578125,0.6044921875,0.5703125,0.580078125,0.6357421875,0.708984375,0.7646484375,0.7744140625,0.740234375,0.6982421875,0.6640625,0.6328125,0.5908203125,0.5341796875,0.4658203125,0.39453125,0.314453125,0.220703125,0.154296875,0.154296875,0.220703125,0.314453125,0.39453125,0.4638671875,0.517578125,0.541015625,0.53515625,0.5166015625,0.5107421875,0.5302734375,0.5517578125,0.548828125,0.5078125,0.4326171875,0.349609375,0.287109375,0.2587890625,0.2431640625,0.248046875,0.2841796875,0.34765625,0.4189453125,0.47265625,0.5,0.5205078125,0.552734375,0.595703125,0.6435546875,0.6865234375,0.71875,0.740234375,0.7509765625,0.7216796875,0.6376953125,0.513671875,0.38671875,0.298828125,0.2587890625,0.248046875,0.296875,0.40234375,0.5244140625,0.61328125,0.63671875,0.6044921875,0.548828125,0.4580078125,0.353515625,0.26953125,0.2314453125,0.2353515625,0.2587890625,0.2900390625,0.3330078125,0.375,0.3994140625,0.400390625,0.3837890625,0.3642578125,0.3447265625,0.328125,0.328125,0.3525390625,0.3955078125,0.4384765625,0.46875,0.4873046875,0.4697265625,0.4140625,0.3388671875,0.2763671875,0.2490234375,0.2587890625,0.2900390625,0.36328125,0.4609375,0.5439453125,0.58203125,0.5703125,0.5302734375,0.484375,0.443359375,0.421875,0.4248046875,0.4453125,0.4638671875,0.46875,0.4716796875,0.4892578125,0.5302734375,0.5908203125,0.65625,0.7080078125,0.740234375,0.7548828125,0.7158203125,0.61328125,0.474609375,0.34765625,0.2734375,0.2587890625,0.2646484375,0.2919921875,0.3369140625,0.3798828125,0.4072265625,0.41015625,0.39453125,0.375,0.3603515625,0.369140625,0.4140625,0.4833984375,0.552734375,0.6044921875,0.6328125,0.595703125,0.4970703125,0.3837890625,0.3095703125,0.306640625,0.3642578125,0.4375,0.51171875,0.5712890625,0.6044921875,0.615234375,0.6201171875,0.634765625,0.658203125,0.6962890625,0.7373046875,0.7646484375,0.7705078125,0.7587890625,0.740234375,0.7158203125,0.6748046875,0.6376953125,0.626953125,0.6494140625,0.693359375,0.740234375,0.7900390625,0.849609375,0.892578125,0.892578125,0.849609375,0.7900390625,0.740234375,0.6884765625,0.6123046875,0.5166015625,0.4189453125,0.3408203125,0.2890625,0.2587890625,0.23828125,0.244140625,0.2861328125,0.353515625,0.419921875,0.4609375,0.46875,0.4765625,0.51171875,0.568359375,0.6240234375,0.65625,0.6572265625,0.634765625,0.6025390625,0.552734375,0.5078125,0.4912109375,0.5126953125,0.5576171875,0.6044921875,0.646484375,0.666015625,0.640625,0.568359375,0.4765625,0.4013671875,0.3642578125,0.3388671875,0.3251953125,0.3359375,0.375,0.4287109375,0.474609375,0.5,0.5185546875,0.5302734375,0.5244140625,0.4970703125,0.455078125,0.41796875,0.39453125,0.37890625,0.3828125,0.4189453125,0.482421875,0.5546875,0.6083984375,0.634765625,0.658203125,0.6962890625,0.7373046875,0.7646484375,0.7705078125,0.7587890625,0.740234375,0.7275390625,0.740234375,0.7705078125,0.7978515625,0.8037109375,0.78125,0.740234375,0.68359375,0.58984375,0.4775390625,0.3857421875,0.3408203125,0.3408203125,0.3642578125,0.3984375,0.4638671875,0.5517578125,0.640625,0.705078125,0.7353515625,0.740234375,0.7392578125,0.7216796875,0.66796875,0.5712890625,0.451171875,0.33984375,0.2587890625,0.181640625,0.1005859375,0.056640625,0.0849609375,0.1748046875,0.2822265625,0.3642578125,0.4423828125,0.541015625,0.6376953125,0.70703125,0.7373046875,0.7412109375,0.740234375,0.7255859375,0.6572265625,0.546875,0.435546875,0.3671875,0.3583984375,0.39453125,0.4404296875,0.482421875,0.5078125,0.5078125,0.4912109375,0.4736328125,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.474609375,0.501953125,0.546875,0.5908203125,0.6171875,0.6201171875,0.6044921875,0.595703125,0.625,0.685546875,0.748046875,0.7841796875,0.7783203125,0.740234375,0.6962890625,0.6630859375,0.654296875,0.673828125,0.70703125,0.7333984375,0.740234375,0.7216796875,0.6337890625,0.4970703125,0.3671875,0.2958984375,0.302734375,0.3642578125,0.44140625,0.529296875,0.599609375,0.6240234375,0.6025390625,0.5615234375,0.5302734375,0.494140625,0.4267578125,0.341796875,0.2705078125,0.234375,0.236328125,0.2587890625,0.291015625,0.3447265625,0.4189453125,0.5,0.5673828125,0.611328125,0.634765625,0.650390625,0.6533203125,0.642578125,0.626953125,0.6162109375,0.619140625,0.634765625,0.6435546875,0.609375,0.5322265625,0.44140625,0.3720703125,0.34765625,0.3642578125,0.390625,0.4189453125,0.447265625,0.4716796875,0.4921875,0.51171875,0.5302734375,0.5419921875,0.5224609375,0.4658203125,0.38671875,0.3115234375,0.267578125,0.2587890625,0.2548828125,0.2421875,0.2421875,0.275390625,0.3427734375,0.423828125,0.5,0.5634765625,0.5888671875,0.5576171875,0.4833984375,0.4033203125,0.3583984375,0.3642578125,0.39453125,0.4638671875,0.5546875,0.6298828125,0.6611328125,0.6455078125,0.6044921875,0.548828125,0.4580078125,0.353515625,0.26953125,0.2314453125,0.2353515625,0.2587890625,0.296875,0.3759765625,0.474609375,0.5546875,0.5869140625,0.5712890625,0.5302734375,0.4951171875,0.5,0.5380859375,0.580078125,0.59375,0.5634765625,0.5,0.42578125,0.353515625,0.314453125,0.3251953125,0.376953125,0.4345703125,0.46875,0.50390625,0.56640625,0.6357421875,0.6787109375,0.681640625,0.6494140625,0.6044921875,0.5537109375,0.4892578125,0.4306640625,0.40234375,0.4111328125,0.4404296875,0.46875,0.48828125,0.4794921875,0.44140625,0.3916015625,0.353515625,0.3447265625,0.3642578125,0.3896484375,0.4072265625,0.4033203125,0.3720703125,0.3251953125,0.283203125,0.2587890625,0.255859375,0.30859375,0.4052734375,0.4990234375,0.546875,0.53125,0.46875,0.3935546875,0.3125,0.2568359375,0.248046875,0.2822265625,0.3310546875,0.3642578125,0.388671875,0.4111328125,0.435546875,0.46875,0.51171875,0.55859375,0.6044921875,0.6533203125,0.705078125,0.740234375,0.740234375,0.7080078125,0.666015625,0.634765625,0.619140625,0.6416015625,0.6904296875,0.6181640625,0.6044921875,0.6220703125,0.671875,0.740234375,0.794921875,0.7734375,0.66015625,0.4912109375,0.3349609375,0.2548828125,0.2587890625,0.2958984375,0.3671875,0.4521484375,0.5166015625,0.53515625,0.51171875,0.46875,0.4326171875,0.4345703125,0.4833984375,0.5576171875,0.623046875,0.650390625,0.634765625,0.61328125,0.609375,0.6240234375,0.646484375,0.6611328125,0.6572265625,0.634765625,0.615234375,0.6240234375,0.662109375,0.712890625,0.7509765625,0.759765625,0.740234375,0.7158203125,0.6923828125,0.6572265625,0.599609375,0.521484375,0.4384765625,0.3642578125,0.2841796875,0.1904296875,0.123046875,0.123046875,0.1904296875,0.2841796875,0.3642578125,0.4296875,0.46875,0.4716796875,0.4501953125,0.4287109375,0.4326171875,0.46875,0.505859375,0.501953125,0.44921875,0.3671875,0.2900390625,0.251953125,0.2587890625,0.28515625,0.33984375,0.4111328125,0.474609375,0.5107421875,0.5146484375,0.5,0.4892578125,0.515625,0.580078125,0.6591796875,0.7236328125,0.75,0.740234375,0.716796875,0.6708984375,0.59375,0.494140625,0.392578125,0.3115234375,0.2587890625,0.2275390625,0.2548828125,0.3505859375,0.48046875,0.5927734375,0.6455078125,0.634765625,0.5947265625,0.5029296875,0.3798828125,0.2734375,0.216796875,0.2197265625,0.2587890625,0.3037109375,0.341796875,0.3662109375,0.375,0.375,0.37890625,0.39453125,0.41015625,0.4140625,0.4140625,0.421875,0.4462890625,0.4853515625,0.5302734375,0.5703125,0.58203125,0.5439453125,0.4609375,0.36328125,0.2900390625,0.2587890625,0.2490234375,0.2763671875,0.3388671875,0.4140625,0.4697265625,0.4873046875,0.46875,0.4453125,0.4326171875,0.44140625,0.46875,0.501953125,0.5244140625,0.5302734375,0.5283203125,0.52734375,0.541015625,0.5771484375,0.6328125,0.69140625,0.740234375,0.7734375,0.748046875,0.6484375,0.501953125,0.361328125,0.2763671875,0.2587890625,0.2587890625,0.2607421875,0.26953125,0.2900390625,0.31640625,0.3427734375,0.3642578125,0.384765625,0.4169921875,0.4609375,0.513671875,0.564453125,0.60546875,0.634765625,0.6455078125,0.59375,0.4912109375,0.3857421875,0.326171875,0.333984375,0.39453125,0.4716796875,0.560546875,0.634765625,0.66796875,0.658203125,0.6279296875,0.6044921875,0.5869140625,0.578125,0.5908203125,0.626953125,0.6748046875,0.7158203125,0.740234375,0.7548828125,0.7529296875,0.7373046875,0.7177734375,0.708984375,0.716796875,0.740234375,0.76953125,0.8037109375,0.828125,0.828125,0.8037109375,0.76953125,0.740234375,0.7099609375,0.658203125,0.580078125,0.482421875,0.38671875,0.310546875,0.2587890625,0.220703125,0.220703125,0.2734375,0.36328125,0.4580078125,0.517578125,0.5302734375,0.5380859375,0.5732421875,0.6240234375,0.6630859375,0.6708984375,0.6474609375,0.6044921875,0.5576171875,0.5126953125,0.4912109375,0.5078125,0.552734375,0.6025390625,0.634765625,0.6611328125,0.677734375,0.6630859375,0.607421875,0.525390625,0.4482421875,0.39453125,0.35546875,0.345703125,0.375,0.4306640625,0.484375,0.5087890625,0.5,0.4755859375,0.43359375,0.3857421875,0.3505859375,0.337890625,0.345703125,0.3642578125,0.390625,0.4443359375,0.5166015625,0.580078125,0.6162109375,0.6201171875,0.6044921875,0.5869140625,0.578125,0.5908203125,0.626953125,0.6748046875,0.7158203125,0.740234375,0.76171875,0.791015625,0.814453125,0.8173828125,0.798828125,0.7685546875,0.740234375,0.7001953125,0.6123046875,0.4970703125,0.3974609375,0.3486328125,0.3544921875,0.39453125,0.4462890625,0.521484375,0.607421875,0.6796875,0.72265625,0.73828125,0.740234375,0.7392578125,0.7216796875,0.66796875,0.5712890625,0.451171875,0.33984375,0.2587890625,0.1826171875,0.1044921875,0.068359375,0.1044921875,0.201171875,0.3115234375,0.39453125,0.47265625,0.56640625,0.6572265625,0.7177734375,0.7421875,0.7421875,0.740234375,0.7275390625,0.6669921875,0.5634765625,0.4521484375,0.373046875,0.3466796875,0.3642578125,0.3935546875,0.4326171875,0.474609375,0.5078125,0.5244140625,0.529296875,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.529296875,0.53125,0.541015625,0.560546875,0.587890625,0.6142578125,0.634765625,0.6591796875,0.701171875,0.748046875,0.779296875,0.783203125,0.765625,0.740234375,0.71484375,0.6953125,0.6904296875,0.701171875,0.720703125,0.736328125,0.740234375,0.7216796875,0.638671875,0.5078125,0.3857421875,0.322265625,0.3330078125,0.39453125,0.47265625,0.560546875,0.6240234375,0.6328125,0.5869140625,0.521484375,0.46875,0.4140625,0.3291015625,0.240234375,0.1845703125,0.1796875,0.2138671875,0.2587890625,0.3134765625,0.3994140625,0.4990234375,0.580078125,0.619140625,0.62109375,0.6044921875,0.5888671875,0.5859375,0.5966796875,0.6123046875,0.623046875,0.6201171875,0.6044921875,0.5751953125,0.5087890625,0.4248046875,0.3583984375,0.333984375,0.3525390625,0.39453125,0.443359375,0.49609375,0.53515625,0.5439453125,0.5234375,0.4921875,0.46875,0.4462890625,0.40625,0.3564453125,0.30859375,0.275390625,0.2607421875,0.2587890625,0.2548828125,0.2421875,0.2421875,0.275390625,0.3427734375,0.423828125,0.5,0.5693359375,0.6201171875,0.6240234375,0.57421875,0.4931640625,0.4248046875,0.39453125,0.384765625,0.416015625,0.4853515625,0.568359375,0.6318359375,0.65234375,0.634765625,0.5947265625,0.5029296875,0.3798828125,0.2734375,0.216796875,0.2197265625,0.2587890625,0.3115234375,0.3857421875,0.4609375,0.5078125,0.5166015625,0.49609375,0.46875,0.4541015625,0.48046875,0.53515625,0.5849609375,0.5986328125,0.564453125,0.5,0.423828125,0.3486328125,0.30859375,0.328125,0.396484375,0.474609375,0.5302734375,0.580078125,0.6416015625,0.6923828125,0.712890625,0.697265625,0.6640625,0.634765625,0.6005859375,0.5419921875,0.48046875,0.4443359375,0.44921875,0.484375,0.5302734375,0.564453125,0.5546875,0.4990234375,0.4248046875,0.369140625,0.359375,0.39453125,0.4326171875,0.4384765625,0.40234375,0.33984375,0.279296875,0.25,0.2587890625,0.2939453125,0.3818359375,0.5,0.59375,0.626953125,0.595703125,0.5302734375,0.4501953125,0.35546875,0.2783203125,0.25390625,0.28515625,0.34375,0.39453125,0.4404296875,0.4873046875,0.5302734375,0.5634765625,0.587890625,0.6103515625,0.634765625,0.666015625,0.7080078125,0.740234375,0.740234375,0.705078125,0.6533203125,0.6044921875,0.5703125,0.5791015625,0.6240234375,0.5556640625,0.5341796875,0.55078125,0.603515625,0.673828125,0.7333984375,0.7373046875,0.666015625,0.5390625,0.41015625,0.333984375,0.3251953125,0.3466796875,0.40234375,0.4736328125,0.5224609375,0.5263671875,0.4873046875,0.4287109375,0.375,0.359375,0.3994140625,0.48046875,0.5673828125,0.619140625,0.6220703125,0.61328125,0.611328125,0.6171875,0.6259765625,0.6318359375,0.6298828125,0.6220703125,0.6142578125,0.619140625,0.63671875,0.6591796875,0.67578125,0.6806640625,0.673828125,0.666015625,0.6640625,0.650390625,0.6064453125,0.53515625,0.4521484375,0.376953125,0.2978515625,0.203125,0.13671875,0.13671875,0.203125,0.2978515625,0.376953125,0.439453125,0.462890625,0.44140625,0.3994140625,0.369140625,0.3779296875,0.4287109375,0.4794921875,0.4814453125,0.4326171875,0.357421875,0.2978515625,0.287109375,0.3251953125,0.38671875,0.474609375,0.560546875,0.6064453125,0.59765625,0.5517578125,0.5,0.4609375,0.474609375,0.5419921875,0.630859375,0.6982421875,0.7119140625,0.673828125,0.6240234375,0.580078125,0.5390625,0.4951171875,0.443359375,0.38671875,0.3251953125,0.2744140625,0.271484375,0.333984375,0.4423828125,0.552734375,0.6162109375,0.6220703125,0.595703125,0.5166015625,0.4033203125,0.3037109375,0.2568359375,0.271484375,0.3251953125,0.380859375,0.4111328125,0.412109375,0.396484375,0.3876953125,0.404296875,0.4482421875,0.4921875,0.5078125,0.4990234375,0.484375,0.484375,0.5146484375,0.5703125,0.630859375,0.67578125,0.6708984375,0.6015625,0.4921875,0.3896484375,0.3251953125,0.2802734375,0.26171875,0.2822265625,0.3359375,0.39453125,0.4296875,0.4287109375,0.421875,0.431640625,0.4609375,0.5029296875,0.5419921875,0.5654296875,0.5703125,0.5634765625,0.541015625,0.5185546875,0.51953125,0.5537109375,0.611328125,0.673828125,0.724609375,0.7275390625,0.6611328125,0.5439453125,0.419921875,0.341796875,0.3251953125,0.3193359375,0.296875,0.26953125,0.26171875,0.283203125,0.326171875,0.376953125,0.4306640625,0.4921875,0.5478515625,0.5869140625,0.60546875,0.61328125,0.6220703125,0.6181640625,0.5625,0.47265625,0.3916015625,0.3583984375,0.3837890625,0.4482421875,0.52734375,0.6220703125,0.6962890625,0.71484375,0.6748046875,0.6083984375,0.55078125,0.4970703125,0.4453125,0.4248046875,0.45703125,0.5322265625,0.6142578125,0.673828125,0.7216796875,0.7529296875,0.7548828125,0.728515625,0.6923828125,0.669921875,0.673828125,0.6845703125,0.6982421875,0.7080078125,0.7080078125,0.6982421875,0.6845703125,0.673828125,0.6640625,0.6494140625,0.6162109375,0.5546875,0.47265625,0.3916015625,0.3251953125,0.271484375,0.2568359375,0.2998046875,0.390625,0.490234375,0.5556640625,0.5703125,0.578125,0.611328125,0.6533203125,0.673828125,0.658203125,0.611328125,0.55078125,0.4921875,0.44921875,0.4462890625,0.486328125,0.5498046875,0.6015625,0.6220703125,0.63671875,0.658203125,0.6669921875,0.642578125,0.5849609375,0.5126953125,0.4482421875,0.396484375,0.3876953125,0.42578125,0.4873046875,0.5341796875,0.5390625,0.5,0.4404296875,0.3583984375,0.283203125,0.2509765625,0.271484375,0.3232421875,0.376953125,0.4384765625,0.5263671875,0.6123046875,0.658203125,0.6494140625,0.603515625,0.55078125,0.4970703125,0.4453125,0.4248046875,0.45703125,0.5322265625,0.6142578125,0.673828125,0.724609375,0.767578125,0.78515625,0.767578125,0.7275390625,0.6904296875,0.673828125,0.6494140625,0.5791015625,0.48046875,0.3994140625,0.3681640625,0.3916015625,0.4482421875,0.5126953125,0.5849609375,0.646484375,0.6806640625,0.6845703125,0.6767578125,0.673828125,0.6748046875,0.6748046875,0.650390625,0.5888671875,0.498046875,0.4033203125,0.3251953125,0.2490234375,0.169921875,0.1298828125,0.162109375,0.255859375,0.365234375,0.4482421875,0.5224609375,0.6025390625,0.666015625,0.6953125,0.6923828125,0.677734375,0.673828125,0.6650390625,0.623046875,0.548828125,0.466796875,0.40234375,0.3740234375,0.376953125,0.3916015625,0.4228515625,0.4677734375,0.5146484375,0.5498046875,0.5673828125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.564453125,0.541015625,0.5146484375,0.5068359375,0.52734375,0.5712890625,0.6220703125,0.673828125,0.7236328125,0.751953125,0.7490234375,0.720703125,0.689453125,0.673828125,0.6630859375,0.6552734375,0.6533203125,0.658203125,0.666015625,0.671875,0.673828125,0.658203125,0.5888671875,0.4853515625,0.3955078125,0.3583984375,0.3837890625,0.4482421875,0.525390625,0.611328125,0.666015625,0.6572265625,0.587890625,0.4990234375,0.4287109375,0.3583984375,0.265625,0.185546875,0.158203125,0.1923828125,0.259765625,0.3251953125,0.3974609375,0.4990234375,0.599609375,0.654296875,0.6494140625,0.6044921875,0.55078125,0.5087890625,0.5009765625,0.529296875,0.572265625,0.6015625,0.59375,0.55078125,0.490234375,0.4052734375,0.3271484375,0.294921875,0.3212890625,0.3837890625,0.4482421875,0.513671875,0.5859375,0.6318359375,0.6220703125,0.5625,0.4873046875,0.4287109375,0.376953125,0.3271484375,0.294921875,0.2890625,0.3037109375,0.3212890625,0.3251953125,0.3193359375,0.298828125,0.2841796875,0.2998046875,0.3525390625,0.42578125,0.5,0.5751953125,0.6513671875,0.6904296875,0.66796875,0.59375,0.5087890625,0.4482421875,0.4033203125,0.3935546875,0.4306640625,0.5029296875,0.5771484375,0.62109375,0.6220703125,0.595703125,0.5166015625,0.4033203125,0.3037109375,0.2568359375,0.271484375,0.3251953125,0.3896484375,0.4521484375,0.4951171875,0.5,0.4755859375,0.4453125,0.4287109375,0.4306640625,0.4736328125,0.5400390625,0.59375,0.6044921875,0.56640625,0.5,0.4228515625,0.34375,0.2998046875,0.3232421875,0.4033203125,0.4990234375,0.5703125,0.6328125,0.689453125,0.7197265625,0.7119140625,0.67578125,0.638671875,0.6220703125,0.6015625,0.552734375,0.4931640625,0.4580078125,0.4658203125,0.509765625,0.5703125,0.6181640625,0.6123046875,0.55078125,0.466796875,0.4052734375,0.3994140625,0.4482421875,0.498046875,0.498046875,0.4443359375,0.3642578125,0.30078125,0.287109375,0.3251953125,0.390625,0.4990234375,0.6171875,0.6904296875,0.693359375,0.6416015625,0.5703125,0.4892578125,0.3857421875,0.2998046875,0.271484375,0.3095703125,0.380859375,0.4482421875,0.509765625,0.5703125,0.6123046875,0.6279296875,0.623046875,0.6162109375,0.6220703125,0.638671875,0.673828125,0.705078125,0.7080078125,0.673828125,0.6142578125,0.55078125,0.501953125,0.498046875,0.5400390625,0.470703125,0.4423828125,0.45703125,0.509765625,0.5791015625,0.6455078125,0.6767578125,0.6533203125,0.580078125,0.4912109375,0.431640625,0.419921875,0.431640625,0.4755859375,0.533203125,0.5673828125,0.5576171875,0.5078125,0.439453125,0.375,0.33984375,0.357421875,0.421875,0.5029296875,0.55859375,0.5693359375,0.568359375,0.5673828125,0.568359375,0.5703125,0.5712890625,0.5703125,0.5693359375,0.568359375,0.5693359375,0.572265625,0.576171875,0.5791015625,0.580078125,0.5791015625,0.583984375,0.6064453125,0.6259765625,0.6181640625,0.572265625,0.5029296875,0.4296875,0.349609375,0.255859375,0.189453125,0.189453125,0.255859375,0.349609375,0.4296875,0.490234375,0.5029296875,0.4658203125,0.4091796875,0.37109375,0.380859375,0.439453125,0.498046875,0.5068359375,0.46484375,0.400390625,0.3564453125,0.36328125,0.419921875,0.498046875,0.5966796875,0.6787109375,0.69921875,0.6533203125,0.5732421875,0.5,0.4443359375,0.443359375,0.5,0.5791015625,0.634765625,0.634765625,0.5791015625,0.5185546875,0.490234375,0.494140625,0.5107421875,0.5126953125,0.482421875,0.419921875,0.35546875,0.3232421875,0.3447265625,0.4150390625,0.5,0.5576171875,0.5693359375,0.5546875,0.494140625,0.408203125,0.33984375,0.3212890625,0.3544921875,0.419921875,0.48046875,0.5,0.4775390625,0.4375,0.4130859375,0.4306640625,0.4892578125,0.5478515625,0.5654296875,0.5419921875,0.501953125,0.4794921875,0.4990234375,0.5595703125,0.6337890625,0.7080078125,0.740234375,0.703125,0.607421875,0.4990234375,0.419921875,0.353515625,0.3076171875,0.30078125,0.3349609375,0.390625,0.431640625,0.439453125,0.4404296875,0.4541015625,0.48046875,0.5126953125,0.541015625,0.556640625,0.5595703125,0.5498046875,0.51171875,0.4638671875,0.439453125,0.45703125,0.5107421875,0.5791015625,0.6435546875,0.67578125,0.6533203125,0.5810546875,0.4931640625,0.43359375,0.419921875,0.41015625,0.3720703125,0.3232421875,0.296875,0.3115234375,0.36328125,0.4296875,0.4990234375,0.5654296875,0.607421875,0.615234375,0.595703125,0.57421875,0.5693359375,0.55859375,0.5087890625,0.4375,0.3857421875,0.3798828125,0.421875,0.4892578125,0.5693359375,0.6640625,0.732421875,0.736328125,0.6748046875,0.5859375,0.509765625,0.435546875,0.353515625,0.3056640625,0.32421875,0.4033203125,0.501953125,0.5791015625,0.6455078125,0.6943359375,0.7060546875,0.6767578125,0.6259765625,0.5869140625,0.5791015625,0.5810546875,0.5830078125,0.5849609375,0.5849609375,0.5830078125,0.5810546875,0.5791015625,0.583984375,0.603515625,0.6201171875,0.6083984375,0.560546875,0.4912109375,0.419921875,0.3544921875,0.3203125,0.3388671875,0.4052734375,0.48828125,0.5458984375,0.5595703125,0.568359375,0.6025390625,0.6435546875,0.66015625,0.6357421875,0.5791015625,0.509765625,0.4423828125,0.3974609375,0.396484375,0.44140625,0.5068359375,0.556640625,0.5693359375,0.5791015625,0.611328125,0.6455078125,0.6533203125,0.6220703125,0.5595703125,0.4892578125,0.4306640625,0.4208984375,0.4609375,0.5224609375,0.564453125,0.5556640625,0.5,0.421875,0.3232421875,0.244140625,0.2255859375,0.2744140625,0.35546875,0.4296875,0.5078125,0.607421875,0.6884765625,0.7099609375,0.6640625,0.583984375,0.509765625,0.435546875,0.353515625,0.3056640625,0.32421875,0.4033203125,0.501953125,0.5791015625,0.646484375,0.697265625,0.7109375,0.6826171875,0.6318359375,0.5908203125,0.5791015625,0.5654296875,0.5126953125,0.4404296875,0.3876953125,0.3818359375,0.4228515625,0.4892578125,0.5595703125,0.6220703125,0.6552734375,0.6484375,0.6171875,0.5869140625,0.5791015625,0.5859375,0.607421875,0.6259765625,0.6142578125,0.5654296875,0.4931640625,0.419921875,0.341796875,0.255859375,0.205078125,0.2236328125,0.3056640625,0.408203125,0.4892578125,0.5615234375,0.625,0.658203125,0.6513671875,0.6181640625,0.5869140625,0.5791015625,0.5751953125,0.556640625,0.521484375,0.4814453125,0.4482421875,0.431640625,0.4296875,0.4345703125,0.451171875,0.48046875,0.513671875,0.5419921875,0.556640625,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5498046875,0.51171875,0.462890625,0.4365234375,0.451171875,0.5029296875,0.5693359375,0.63671875,0.6884765625,0.7041015625,0.6787109375,0.6298828125,0.58984375,0.5791015625,0.5771484375,0.576171875,0.576171875,0.5771484375,0.578125,0.5791015625,0.5791015625,0.5673828125,0.5146484375,0.44140625,0.38671875,0.3798828125,0.421875,0.4892578125,0.568359375,0.6552734375,0.708984375,0.6953125,0.6181640625,0.5185546875,0.439453125,0.361328125,0.2666015625,0.197265625,0.1923828125,0.2529296875,0.3427734375,0.419921875,0.4990234375,0.6015625,0.685546875,0.7080078125,0.6630859375,0.583984375,0.509765625,0.4521484375,0.4423828125,0.48046875,0.5380859375,0.5771484375,0.56640625,0.509765625,0.4326171875,0.33984375,0.2705078125,0.2646484375,0.32421875,0.412109375,0.4892578125,0.56640625,0.6513671875,0.7041015625,0.689453125,0.6142578125,0.517578125,0.439453125,0.373046875,0.3203125,0.3037109375,0.3271484375,0.373046875,0.4111328125,0.419921875,0.412109375,0.3798828125,0.34375,0.3349609375,0.3662109375,0.427734375,0.5,0.578125,0.669921875,0.7314453125,0.7275390625,0.6591796875,0.56640625,0.4892578125,0.4248046875,0.3857421875,0.392578125,0.443359375,0.51171875,0.5595703125,0.5693359375,0.5546875,0.494140625,0.408203125,0.33984375,0.3212890625,0.3544921875,0.419921875,0.48828125,0.54296875,0.5615234375,0.5380859375,0.490234375,0.4501953125,0.439453125,0.44921875,0.4970703125,0.5634765625,0.6103515625,0.6123046875,0.5673828125,0.5,0.421875,0.3359375,0.283203125,0.2998046875,0.3798828125,0.4794921875,0.5595703125,0.6279296875,0.681640625,0.697265625,0.671875,0.62109375,0.580078125,0.5693359375,0.5576171875,0.5146484375,0.4599609375,0.4287109375,0.4404296875,0.4912109375,0.5595703125,0.6162109375,0.6181640625,0.5634765625,0.4853515625,0.4306640625,0.4326171875,0.4892578125,0.546875,0.5498046875,0.49609375,0.4189453125,0.3642578125,0.3642578125,0.419921875,0.5,0.6083984375,0.705078125,0.7431640625,0.7109375,0.6357421875,0.5595703125,0.478515625,0.376953125,0.2958984375,0.27734375,0.3291015625,0.4130859375,0.4892578125,0.5595703125,0.619140625,0.6484375,0.6396484375,0.60546875,0.5751953125,0.5693359375,0.5791015625,0.6142578125,0.6533203125,0.666015625,0.638671875,0.5791015625,0.509765625,0.451171875,0.44140625,0.482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.3271484375,0.302734375,0.318359375,0.37109375,0.439453125,0.5107421875,0.576171875,0.6171875,0.62109375,0.5986328125,0.57421875,0.5693359375,0.580078125,0.62109375,0.671875,0.697265625,0.681640625,0.6279296875,0.5595703125,0.48828125,0.4228515625,0.3828125,0.380859375,0.40625,0.4326171875,0.439453125,0.439453125,0.4365234375,0.4326171875,0.4267578125,0.4228515625,0.419921875,0.419921875,0.419921875,0.419921875,0.419921875,0.419921875,0.419921875,0.419921875,0.419921875,0.4326171875,0.490234375,0.57421875,0.640625,0.658203125,0.6240234375,0.5595703125,0.4814453125,0.3896484375,0.3251953125,0.3271484375,0.3955078125,0.4892578125,0.5693359375,0.62890625,0.640625,0.6005859375,0.5390625,0.49609375,0.5029296875,0.5595703125,0.6162109375,0.625,0.5859375,0.52734375,0.4892578125,0.5009765625,0.5595703125,0.6357421875,0.7216796875,0.7744140625,0.759765625,0.6806640625,0.580078125,0.5,0.4384765625,0.4189453125,0.4443359375,0.4892578125,0.515625,0.4990234375,0.439453125,0.384765625,0.390625,0.4609375,0.5576171875,0.6279296875,0.634765625,0.5791015625,0.5078125,0.439453125,0.3955078125,0.388671875,0.4091796875,0.43359375,0.439453125,0.43359375,0.4091796875,0.38671875,0.392578125,0.43359375,0.5,0.5693359375,0.6240234375,0.6240234375,0.56640625,0.486328125,0.4306640625,0.4326171875,0.4892578125,0.546875,0.55078125,0.5009765625,0.4287109375,0.3779296875,0.3828125,0.439453125,0.5205078125,0.626953125,0.7197265625,0.75390625,0.7177734375,0.642578125,0.5693359375,0.5029296875,0.4521484375,0.4384765625,0.4658203125,0.5146484375,0.5517578125,0.5595703125,0.5546875,0.5390625,0.51171875,0.4814453125,0.4560546875,0.4423828125,0.439453125,0.4306640625,0.390625,0.33984375,0.310546875,0.3232421875,0.373046875,0.439453125,0.5087890625,0.572265625,0.6103515625,0.6123046875,0.5888671875,0.564453125,0.5595703125,0.55078125,0.5107421875,0.45703125,0.4267578125,0.4384765625,0.490234375,0.5595703125,0.6259765625,0.6611328125,0.64453125,0.5791015625,0.4970703125,0.44140625,0.4296875,0.4228515625,0.3916015625,0.3544921875,0.3408203125,0.365234375,0.421875,0.4892578125,0.5654296875,0.65625,0.7216796875,0.7216796875,0.658203125,0.5673828125,0.4892578125,0.41015625,0.3095703125,0.23046875,0.2138671875,0.265625,0.3515625,0.4296875,0.4990234375,0.55078125,0.5615234375,0.5283203125,0.47265625,0.4296875,0.419921875,0.419921875,0.419921875,0.419921875,0.419921875,0.419921875,0.419921875,0.419921875,0.43359375,0.4931640625,0.5810546875,0.6533203125,0.67578125,0.6435546875,0.5791015625,0.5078125,0.4384765625,0.390625,0.37890625,0.3955078125,0.4150390625,0.419921875,0.4296875,0.4765625,0.54296875,0.5908203125,0.5947265625,0.5546875,0.4892578125,0.421875,0.3642578125,0.3369140625,0.3486328125,0.3837890625,0.4130859375,0.419921875,0.4296875,0.48046875,0.55078125,0.603515625,0.609375,0.5673828125,0.5,0.439453125,0.4296875,0.470703125,0.533203125,0.576171875,0.5673828125,0.509765625,0.4326171875,0.3486328125,0.2978515625,0.3154296875,0.396484375,0.498046875,0.5791015625,0.6572265625,0.7431640625,0.7939453125,0.775390625,0.693359375,0.5908203125,0.509765625,0.427734375,0.32421875,0.23828125,0.2158203125,0.26171875,0.34375,0.419921875,0.48828125,0.541015625,0.556640625,0.5322265625,0.484375,0.447265625,0.439453125,0.43359375,0.40234375,0.3662109375,0.353515625,0.380859375,0.4404296875,0.509765625,0.5751953125,0.6162109375,0.6103515625,0.55859375,0.4892578125,0.439453125,0.4296875,0.4443359375,0.5048828125,0.5888671875,0.65625,0.6728515625,0.6357421875,0.5693359375,0.48828125,0.38671875,0.306640625,0.291015625,0.3447265625,0.4306640625,0.509765625,0.578125,0.623046875,0.6220703125,0.5732421875,0.50390625,0.453125,0.439453125,0.44140625,0.45703125,0.48828125,0.525390625,0.5576171875,0.576171875,0.5791015625,0.576171875,0.55859375,0.5283203125,0.4912109375,0.4599609375,0.443359375,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.4296875,0.38671875,0.3310546875,0.2978515625,0.30859375,0.3603515625,0.4296875,0.5,0.5517578125,0.564453125,0.53125,0.4755859375,0.431640625,0.419921875,0.41796875,0.4169921875,0.41796875,0.4208984375,0.423828125,0.427734375,0.4296875,0.4228515625,0.390625,0.353515625,0.3408203125,0.3681640625,0.4287109375,0.5,0.5810546875,0.681640625,0.76171875,0.7783203125,0.724609375,0.6376953125,0.5595703125,0.48046875,0.3896484375,0.328125,0.3349609375,0.4052734375,0.5009765625,0.5791015625,0.6552734375,0.7392578125,0.7880859375,0.7705078125,0.689453125,0.5888671875,0.509765625,0.451171875,0.4404296875,0.4794921875,0.5390625,0.578125,0.568359375,0.509765625,0.431640625,0.33984375,0.2744140625,0.2744140625,0.33984375,0.431640625,0.509765625,0.5888671875,0.689453125,0.7705078125,0.7880859375,0.7392578125,0.6552734375,0.5791015625,0.5107421875,0.4599609375,0.447265625,0.4765625,0.5283203125,0.5693359375,0.5791015625,0.568359375,0.5185546875,0.44921875,0.3994140625,0.39453125,0.4345703125,0.5,0.5751953125,0.6640625,0.7255859375,0.72265625,0.6572265625,0.5654296875,0.4892578125,0.421875,0.3642578125,0.3369140625,0.3486328125,0.3837890625,0.4130859375,0.419921875,0.412109375,0.3896484375,0.373046875,0.3857421875,0.435546875,0.5068359375,0.5791015625,0.6474609375,0.6982421875,0.7119140625,0.681640625,0.6298828125,0.5888671875,0.5791015625,0.5869140625,0.6201171875,0.65625,0.6669921875,0.638671875,0.5791015625,0.509765625,0.4296875,0.3271484375,0.2431640625,0.220703125,0.2685546875,0.3525390625,0.4296875,0.5,0.5537109375,0.5693359375,0.541015625,0.490234375,0.44921875,0.439453125,0.4296875,0.38671875,0.3310546875,0.2978515625,0.30859375,0.3603515625,0.4296875,0.4912109375,0.5126953125,0.4921875,0.453125,0.4306640625,0.44921875,0.509765625,0.5693359375,0.5859375,0.5576171875,0.51171875,0.4833984375,0.5,0.5595703125,0.6337890625,0.7080078125,0.740234375,0.703125,0.607421875,0.4990234375,0.419921875,0.345703125,0.2646484375,0.21875,0.2412109375,0.3251953125,0.427734375,0.509765625,0.5771484375,0.62109375,0.619140625,0.5703125,0.501953125,0.451171875,0.439453125,0.4501953125,0.498046875,0.5615234375,0.6064453125,0.607421875,0.564453125,0.5,0.4423828125,0.43359375,0.4716796875,0.29296875,0.2900390625,0.3173828125,0.3681640625,0.4287109375,0.4921875,0.5537109375,0.6005859375,0.62109375,0.6201171875,0.615234375,0.6220703125,0.638671875,0.67578125,0.7119140625,0.7197265625,0.689453125,0.6328125,0.5703125,0.5068359375,0.4453125,0.40234375,0.390625,0.4052734375,0.423828125,0.4287109375,0.4267578125,0.4140625,0.390625,0.36328125,0.3408203125,0.328125,0.3251953125,0.3251953125,0.3251953125,0.3251953125,0.3251953125,0.3251953125,0.3251953125,0.3251953125,0.33984375,0.4052734375,0.505859375,0.595703125,0.6396484375,0.6240234375,0.5703125,0.501953125,0.4208984375,0.3681640625,0.376953125,0.4482421875,0.5419921875,0.6220703125,0.68359375,0.69921875,0.6630859375,0.59765625,0.5419921875,0.53125,0.5703125,0.611328125,0.6123046875,0.576171875,0.529296875,0.501953125,0.517578125,0.5703125,0.6376953125,0.7158203125,0.7646484375,0.7509765625,0.67578125,0.5791015625,0.5,0.4365234375,0.4111328125,0.427734375,0.4658203125,0.4921875,0.48046875,0.4287109375,0.3837890625,0.404296875,0.4931640625,0.609375,0.6982421875,0.71875,0.673828125,0.6083984375,0.533203125,0.4677734375,0.4287109375,0.419921875,0.42578125,0.4287109375,0.4267578125,0.419921875,0.4248046875,0.4541015625,0.5068359375,0.5673828125,0.6220703125,0.6591796875,0.6396484375,0.564453125,0.470703125,0.4052734375,0.3994140625,0.4482421875,0.4990234375,0.505859375,0.466796875,0.41015625,0.37109375,0.3779296875,0.4287109375,0.5,0.59765625,0.6904296875,0.7373046875,0.724609375,0.67578125,0.6220703125,0.572265625,0.53515625,0.521484375,0.5341796875,0.55859375,0.57421875,0.5703125,0.556640625,0.5322265625,0.4990234375,0.4658203125,0.4423828125,0.4306640625,0.4287109375,0.421875,0.392578125,0.3544921875,0.3330078125,0.341796875,0.3798828125,0.4287109375,0.48046875,0.5283203125,0.5615234375,0.5732421875,0.568359375,0.5634765625,0.5703125,0.5703125,0.5361328125,0.484375,0.4501953125,0.455078125,0.501953125,0.5703125,0.6337890625,0.6572265625,0.619140625,0.5341796875,0.439453125,0.3818359375,0.376953125,0.3818359375,0.3681640625,0.3486328125,0.3408203125,0.3583984375,0.3984375,0.4482421875,0.505859375,0.5791015625,0.6337890625,0.638671875,0.5888671875,0.5146484375,0.4482421875,0.376953125,0.28125,0.201171875,0.177734375,0.220703125,0.30078125,0.376953125,0.4462890625,0.4921875,0.494140625,0.4501953125,0.384765625,0.3369140625,0.3251953125,0.3251953125,0.3251953125,0.3251953125,0.3251953125,0.3251953125,0.3251953125,0.3251953125,0.341796875,0.419921875,0.5439453125,0.6611328125,0.7275390625,0.724609375,0.673828125,0.607421875,0.5263671875,0.4443359375,0.3828125,0.349609375,0.3349609375,0.3251953125,0.3251953125,0.3623046875,0.42578125,0.484375,0.509765625,0.4931640625,0.4482421875,0.396484375,0.3505859375,0.322265625,0.3154296875,0.32421875,0.3310546875,0.3251953125,0.3291015625,0.384765625,0.4755859375,0.5556640625,0.5888671875,0.5634765625,0.5,0.439453125,0.4287109375,0.47265625,0.54296875,0.5966796875,0.599609375,0.55078125,0.484375,0.4130859375,0.375,0.4033203125,0.4892578125,0.591796875,0.673828125,0.75,0.8291015625,0.869140625,0.8369140625,0.7431640625,0.6337890625,0.55078125,0.4677734375,0.3525390625,0.2431640625,0.1875,0.2021484375,0.26171875,0.3251953125,0.38671875,0.4375,0.4638671875,0.4609375,0.4404296875,0.4248046875,0.4287109375,0.43359375,0.419921875,0.4033203125,0.4052734375,0.4365234375,0.490234375,0.55078125,0.60546875,0.623046875,0.587890625,0.51171875,0.4287109375,0.3798828125,0.376953125,0.4033203125,0.482421875,0.591796875,0.6826171875,0.7158203125,0.6875,0.6220703125,0.5400390625,0.4375,0.35546875,0.3369140625,0.3876953125,0.47265625,0.55078125,0.619140625,0.6630859375,0.6572265625,0.5986328125,0.515625,0.4521484375,0.4287109375,0.4248046875,0.4462890625,0.4990234375,0.568359375,0.630859375,0.666015625,0.673828125,0.66796875,0.6376953125,0.5830078125,0.5185546875,0.46484375,0.4345703125,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.41796875,0.3701171875,0.3046875,0.2607421875,0.2626953125,0.30859375,0.376953125,0.447265625,0.5,0.5087890625,0.4697265625,0.40234375,0.3466796875,0.3251953125,0.3154296875,0.3076171875,0.3095703125,0.3232421875,0.3447265625,0.3642578125,0.376953125,0.3798828125,0.361328125,0.3369140625,0.333984375,0.3671875,0.4287109375,0.5,0.5810546875,0.68359375,0.765625,0.7841796875,0.7333984375,0.6484375,0.5703125,0.494140625,0.4189453125,0.3828125,0.4140625,0.501953125,0.6015625,0.673828125,0.73828125,0.8046875,0.833984375,0.8017578125,0.7177734375,0.6220703125,0.55078125,0.5,0.4912109375,0.525390625,0.5771484375,0.611328125,0.6025390625,0.55078125,0.4833984375,0.40234375,0.345703125,0.345703125,0.40234375,0.4833984375,0.55078125,0.6220703125,0.7177734375,0.8017578125,0.833984375,0.8046875,0.73828125,0.673828125,0.61328125,0.5693359375,0.5576171875,0.5830078125,0.62890625,0.6650390625,0.673828125,0.662109375,0.611328125,0.53515625,0.466796875,0.4375,0.4541015625,0.5,0.5546875,0.615234375,0.6513671875,0.6376953125,0.5791015625,0.505859375,0.4482421875,0.396484375,0.3505859375,0.322265625,0.3154296875,0.32421875,0.3310546875,0.3251953125,0.3154296875,0.314453125,0.34375,0.4140625,0.5107421875,0.6044921875,0.673828125,0.7333984375,0.7783203125,0.7890625,0.763671875,0.7177734375,0.681640625,0.673828125,0.6787109375,0.7001953125,0.71875,0.7119140625,0.673828125,0.61328125,0.55078125,0.4775390625,0.3701171875,0.2666015625,0.2158203125,0.236328125,0.302734375,0.376953125,0.4482421875,0.5068359375,0.5322265625,0.5146484375,0.4736328125,0.4375,0.4287109375,0.41796875,0.3701171875,0.3046875,0.2607421875,0.2626953125,0.30859375,0.376953125,0.4423828125,0.48046875,0.4873046875,0.4765625,0.4736328125,0.4970703125,0.55078125,0.6025390625,0.6142578125,0.583984375,0.537109375,0.5068359375,0.5185546875,0.5703125,0.630859375,0.67578125,0.6708984375,0.6015625,0.4921875,0.3896484375,0.3251953125,0.271484375,0.2197265625,0.20703125,0.2578125,0.359375,0.46875,0.55078125,0.6181640625,0.6552734375,0.6416015625,0.5791015625,0.498046875,0.44140625,0.4287109375,0.4375,0.4755859375,0.529296875,0.5703125,0.576171875,0.5478515625,0.5,0.458984375,0.45703125,0.4892578125,0.3193359375,0.3447265625,0.380859375,0.423828125,0.46875,0.513671875,0.5517578125,0.5771484375,0.5908203125,0.5986328125,0.611328125,0.634765625,0.6640625,0.697265625,0.712890625,0.6923828125,0.6416015625,0.580078125,0.5302734375,0.484375,0.443359375,0.421875,0.4248046875,0.4453125,0.4638671875,0.46875,0.4638671875,0.4384765625,0.3916015625,0.3359375,0.2890625,0.263671875,0.2587890625,0.2587890625,0.2587890625,0.2587890625,0.2587890625,0.2587890625,0.2587890625,0.2587890625,0.271484375,0.3310546875,0.4248046875,0.515625,0.568359375,0.5673828125,0.5302734375,0.478515625,0.416015625,0.3779296875,0.39453125,0.46484375,0.556640625,0.634765625,0.69921875,0.728515625,0.7041015625,0.6376953125,0.564453125,0.5234375,0.5302734375,0.5419921875,0.529296875,0.4990234375,0.4716796875,0.4658203125,0.48828125,0.5302734375,0.5830078125,0.654296875,0.708984375,0.712890625,0.6591796875,0.576171875,0.5,0.435546875,0.4052734375,0.4189453125,0.4609375,0.4990234375,0.50390625,0.46875,0.4375,0.4638671875,0.5498046875,0.6591796875,0.7451171875,0.771484375,0.740234375,0.689453125,0.6240234375,0.5546875,0.501953125,0.4755859375,0.46875,0.46875,0.470703125,0.4794921875,0.501953125,0.5380859375,0.5791015625,0.6123046875,0.634765625,0.6416015625,0.599609375,0.515625,0.4248046875,0.365234375,0.3583984375,0.39453125,0.43359375,0.4501953125,0.44140625,0.4228515625,0.4140625,0.4296875,0.46875,0.51953125,0.583984375,0.6435546875,0.67578125,0.67578125,0.65625,0.634765625,0.6181640625,0.6064453125,0.599609375,0.5908203125,0.576171875,0.5556640625,0.5302734375,0.5029296875,0.4765625,0.4580078125,0.453125,0.458984375,0.466796875,0.46875,0.466796875,0.455078125,0.44140625,0.43359375,0.4365234375,0.451171875,0.46875,0.4853515625,0.4912109375,0.48828125,0.4853515625,0.490234375,0.505859375,0.5302734375,0.5458984375,0.5234375,0.474609375,0.4326171875,0.4267578125,0.4638671875,0.5302734375,0.591796875,0.609375,0.5654296875,0.48046875,0.39453125,0.3525390625,0.3642578125,0.3876953125,0.3994140625,0.3974609375,0.3857421875,0.376953125,0.37890625,0.39453125,0.4189453125,0.458984375,0.4970703125,0.5078125,0.4853515625,0.44140625,0.39453125,0.33984375,0.2607421875,0.1923828125,0.1728515625,0.2138671875,0.2890625,0.3642578125,0.431640625,0.470703125,0.4609375,0.40234375,0.326171875,0.271484375,0.2587890625,0.2587890625,0.2587890625,0.2587890625,0.2587890625,0.2587890625,0.2587890625,0.2587890625,0.2763671875,0.361328125,0.501953125,0.6484375,0.748046875,0.7734375,0.740234375,0.6884765625,0.6123046875,0.5166015625,0.4189453125,0.3408203125,0.2890625,0.2587890625,0.2392578125,0.2470703125,0.287109375,0.341796875,0.3876953125,0.40625,0.39453125,0.376953125,0.361328125,0.34765625,0.3310546875,0.3095703125,0.28515625,0.2587890625,0.2490234375,0.30078125,0.40234375,0.5078125,0.568359375,0.5595703125,0.5,0.4384765625,0.4248046875,0.46875,0.546875,0.615234375,0.63671875,0.6044921875,0.5537109375,0.4951171875,0.4638671875,0.48828125,0.5654296875,0.6611328125,0.740234375,0.81640625,0.89453125,0.9306640625,0.89453125,0.7978515625,0.6875,0.6044921875,0.5205078125,0.3994140625,0.275390625,0.1953125,0.1796875,0.212890625,0.2587890625,0.3046875,0.34765625,0.3828125,0.408203125,0.4267578125,0.4453125,0.46875,0.4912109375,0.5009765625,0.501953125,0.5078125,0.5263671875,0.5615234375,0.6044921875,0.6396484375,0.6279296875,0.5634765625,0.46875,0.38671875,0.3505859375,0.3642578125,0.40625,0.5,0.619140625,0.708984375,0.7373046875,0.7021484375,0.634765625,0.5546875,0.45703125,0.3828125,0.375,0.435546875,0.525390625,0.6044921875,0.6748046875,0.7265625,0.728515625,0.673828125,0.5849609375,0.5078125,0.46875,0.4501953125,0.4638671875,0.5185546875,0.6015625,0.681640625,0.73046875,0.740234375,0.7333984375,0.701171875,0.640625,0.568359375,0.5087890625,0.4755859375,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.45703125,0.40234375,0.3251953125,0.267578125,0.2568359375,0.296875,0.3642578125,0.4345703125,0.490234375,0.5,0.4521484375,0.37109375,0.296875,0.2587890625,0.232421875,0.2099609375,0.208984375,0.2373046875,0.28515625,0.33203125,0.3642578125,0.3828125,0.376953125,0.3583984375,0.3525390625,0.376953125,0.4306640625,0.5,0.580078125,0.677734375,0.7509765625,0.7587890625,0.69921875,0.609375,0.5302734375,0.458984375,0.4052734375,0.4052734375,0.4716796875,0.5810546875,0.6806640625,0.740234375,0.787109375,0.830078125,0.8427734375,0.806640625,0.734375,0.658203125,0.6044921875,0.56640625,0.5595703125,0.5849609375,0.6240234375,0.6494140625,0.642578125,0.6044921875,0.5546875,0.4951171875,0.4521484375,0.4521484375,0.4951171875,0.5546875,0.6044921875,0.658203125,0.734375,0.806640625,0.8427734375,0.830078125,0.787109375,0.740234375,0.6962890625,0.6630859375,0.654296875,0.673828125,0.70703125,0.7333984375,0.740234375,0.7314453125,0.69140625,0.6240234375,0.5517578125,0.501953125,0.486328125,0.5,0.5185546875,0.5302734375,0.5244140625,0.4970703125,0.455078125,0.41796875,0.39453125,0.376953125,0.361328125,0.34765625,0.3310546875,0.3095703125,0.28515625,0.2587890625,0.23828125,0.2509765625,0.3193359375,0.4384765625,0.57421875,0.6806640625,0.740234375,0.7841796875,0.8173828125,0.826171875,0.806640625,0.7724609375,0.74609375,0.740234375,0.7431640625,0.7529296875,0.7568359375,0.740234375,0.701171875,0.65234375,0.6044921875,0.544921875,0.4404296875,0.3251953125,0.2509765625,0.244140625,0.2939453125,0.3642578125,0.4365234375,0.5009765625,0.5380859375,0.53515625,0.505859375,0.4765625,0.46875,0.45703125,0.40234375,0.3251953125,0.267578125,0.2568359375,0.296875,0.3642578125,0.43359375,0.48828125,0.521484375,0.53515625,0.5439453125,0.564453125,0.6044921875,0.640625,0.638671875,0.5966796875,0.5380859375,0.49609375,0.494140625,0.5302734375,0.5703125,0.58203125,0.5439453125,0.4609375,0.36328125,0.2900390625,0.2587890625,0.23828125,0.224609375,0.2451171875,0.314453125,0.4189453125,0.5244140625,0.6044921875,0.6708984375,0.70703125,0.6904296875,0.6240234375,0.5400390625,0.482421875,0.46875,0.47265625,0.4873046875,0.5078125,0.5244140625,0.52734375,0.517578125,0.5,0.48828125,0.50390625,0.5302734375,0.4052734375,0.447265625,0.478515625,0.50390625,0.5302734375,0.55078125,0.552734375,0.541015625,0.5302734375,0.53515625,0.5625,0.6044921875,0.6494140625,0.681640625,0.6787109375,0.6357421875,0.56640625,0.50390625,0.46875,0.4453125,0.4326171875,0.44140625,0.46875,0.501953125,0.5244140625,0.5302734375,0.5234375,0.490234375,0.4306640625,0.3583984375,0.2978515625,0.265625,0.2587890625,0.2587890625,0.2587890625,0.2587890625,0.2587890625,0.2587890625,0.2587890625,0.2587890625,0.267578125,0.30859375,0.375,0.44140625,0.4833984375,0.490234375,0.46875,0.4365234375,0.392578125,0.3642578125,0.380859375,0.443359375,0.5283203125,0.6044921875,0.673828125,0.720703125,0.7177734375,0.66015625,0.572265625,0.5009765625,0.46875,0.447265625,0.41796875,0.39453125,0.3916015625,0.41015625,0.4404296875,0.46875,0.505859375,0.5703125,0.6357421875,0.662109375,0.63671875,0.572265625,0.5,0.4345703125,0.400390625,0.4140625,0.4638671875,0.5185546875,0.544921875,0.5302734375,0.5126953125,0.5341796875,0.595703125,0.673828125,0.7353515625,0.7568359375,0.740234375,0.7099609375,0.6650390625,0.61328125,0.568359375,0.541015625,0.53125,0.5302734375,0.5341796875,0.5546875,0.5849609375,0.61328125,0.6259765625,0.62109375,0.6044921875,0.5771484375,0.5185546875,0.44140625,0.375,0.33984375,0.341796875,0.3642578125,0.3896484375,0.4140625,0.4365234375,0.4580078125,0.4794921875,0.50390625,0.5302734375,0.5546875,0.572265625,0.5791015625,0.580078125,0.580078125,0.587890625,0.6044921875,0.6259765625,0.650390625,0.6572265625,0.6328125,0.580078125,0.51953125,0.46875,0.4267578125,0.400390625,0.40625,0.44140625,0.48828125,0.5224609375,0.5302734375,0.5322265625,0.5439453125,0.5576171875,0.5654296875,0.5625,0.5478515625,0.5302734375,0.50390625,0.4560546875,0.4052734375,0.3779296875,0.38671875,0.423828125,0.46875,0.5029296875,0.4951171875,0.44921875,0.400390625,0.3798828125,0.4052734375,0.46875,0.53125,0.5478515625,0.5107421875,0.44140625,0.3798828125,0.3623046875,0.39453125,0.4404296875,0.48046875,0.4970703125,0.4775390625,0.43359375,0.3896484375,0.3642578125,0.349609375,0.3505859375,0.3671875,0.3857421875,0.3955078125,0.38671875,0.3642578125,0.3291015625,0.271484375,0.220703125,0.208984375,0.2490234375,0.3203125,0.39453125,0.4609375,0.4970703125,0.48046875,0.4140625,0.330078125,0.2724609375,0.2587890625,0.2587890625,0.2587890625,0.2587890625,0.2587890625,0.2587890625,0.2587890625,0.2587890625,0.2734375,0.34765625,0.474609375,0.61328125,0.7158203125,0.7548828125,0.740234375,0.7099609375,0.658203125,0.580078125,0.482421875,0.38671875,0.310546875,0.2587890625,0.21484375,0.18359375,0.1845703125,0.2236328125,0.2841796875,0.3369140625,0.3642578125,0.38671875,0.4140625,0.427734375,0.4111328125,0.365234375,0.30859375,0.2587890625,0.23046875,0.2685546875,0.3671875,0.48046875,0.5546875,0.5576171875,0.5,0.4365234375,0.416015625,0.4521484375,0.5302734375,0.6083984375,0.6474609375,0.634765625,0.6015625,0.5537109375,0.5185546875,0.52734375,0.583984375,0.6640625,0.740234375,0.8173828125,0.8984375,0.9423828125,0.9140625,0.82421875,0.716796875,0.634765625,0.552734375,0.439453125,0.322265625,0.2421875,0.216796875,0.232421875,0.2587890625,0.2841796875,0.310546875,0.341796875,0.3828125,0.4326171875,0.4833984375,0.5302734375,0.572265625,0.603515625,0.615234375,0.61328125,0.607421875,0.61328125,0.634765625,0.6484375,0.6123046875,0.5302734375,0.435546875,0.37109375,0.359375,0.39453125,0.453125,0.5537109375,0.662109375,0.7294921875,0.7294921875,0.67578125,0.6044921875,0.525390625,0.435546875,0.375,0.3828125,0.45703125,0.5546875,0.634765625,0.708984375,0.7744140625,0.7978515625,0.7587890625,0.673828125,0.5859375,0.5302734375,0.490234375,0.4833984375,0.521484375,0.5966796875,0.6767578125,0.728515625,0.740234375,0.7353515625,0.7099609375,0.6630859375,0.607421875,0.560546875,0.53515625,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5166015625,0.458984375,0.375,0.30859375,0.2919921875,0.328125,0.39453125,0.4677734375,0.529296875,0.546875,0.5,0.4072265625,0.31640625,0.2587890625,0.2119140625,0.1689453125,0.15625,0.1923828125,0.2646484375,0.3408203125,0.39453125,0.4306640625,0.435546875,0.4140625,0.3916015625,0.39453125,0.43359375,0.5,0.578125,0.6689453125,0.728515625,0.720703125,0.6474609375,0.5498046875,0.46875,0.40234375,0.3671875,0.39453125,0.4853515625,0.6044921875,0.6982421875,0.740234375,0.7666015625,0.7890625,0.7900390625,0.76171875,0.7138671875,0.6669921875,0.634765625,0.61328125,0.609375,0.6240234375,0.646484375,0.6611328125,0.6572265625,0.634765625,0.60546875,0.5712890625,0.546875,0.546875,0.5712890625,0.60546875,0.634765625,0.6669921875,0.7138671875,0.76171875,0.7900390625,0.7890625,0.7666015625,0.740234375,0.71484375,0.6953125,0.6904296875,0.701171875,0.720703125,0.736328125,0.740234375,0.7373046875,0.71875,0.6796875,0.6240234375,0.56640625,0.5234375,0.5,0.4755859375,0.43359375,0.3857421875,0.3505859375,0.337890625,0.345703125,0.3642578125,0.38671875,0.4140625,0.427734375,0.4111328125,0.365234375,0.30859375,0.2587890625,0.22265625,0.232421875,0.3115234375,0.447265625,0.5927734375,0.697265625,0.740234375,0.765625,0.78515625,0.7900390625,0.7783203125,0.7587890625,0.744140625,0.740234375,0.7412109375,0.744140625,0.740234375,0.7236328125,0.6953125,0.6630859375,0.634765625,0.59375,0.50390625,0.3916015625,0.30859375,0.2880859375,0.326171875,0.39453125,0.4677734375,0.5361328125,0.580078125,0.5849609375,0.5615234375,0.537109375,0.5302734375,0.5166015625,0.458984375,0.375,0.30859375,0.2919921875,0.328125,0.39453125,0.4658203125,0.5322265625,0.580078125,0.6015625,0.6064453125,0.61328125,0.634765625,0.6533203125,0.63671875,0.5849609375,0.5185546875,0.466796875,0.451171875,0.46875,0.4873046875,0.4697265625,0.4140625,0.3388671875,0.2763671875,0.2490234375,0.2587890625,0.2763671875,0.2939453125,0.328125,0.388671875,0.4716796875,0.5595703125,0.634765625,0.7021484375,0.7421875,0.7314453125,0.673828125,0.5966796875,0.5419921875,0.5302734375,0.5263671875,0.51171875,0.4912109375,0.474609375,0.4716796875,0.4814453125,0.5,0.5244140625,0.5634765625,0.5908203125,0.5166015625,0.55078125,0.5615234375,0.5625,0.5703125,0.5712890625,0.541015625,0.4931640625,0.45703125,0.45703125,0.4931640625,0.55078125,0.609375,0.6455078125,0.6376953125,0.5830078125,0.5087890625,0.4501953125,0.4287109375,0.421875,0.431640625,0.4609375,0.5029296875,0.5419921875,0.5654296875,0.5703125,0.564453125,0.5341796875,0.48046875,0.416015625,0.361328125,0.3310546875,0.3251953125,0.3251953125,0.3251953125,0.3251953125,0.3251953125,0.3251953125,0.3251953125,0.3251953125,0.3291015625,0.34765625,0.37890625,0.41015625,0.431640625,0.4365234375,0.4287109375,0.412109375,0.376953125,0.349609375,0.35546875,0.404296875,0.4775390625,0.55078125,0.625,0.6923828125,0.716796875,0.67578125,0.5849609375,0.4912109375,0.4287109375,0.3779296875,0.3349609375,0.3173828125,0.3349609375,0.375,0.412109375,0.4287109375,0.451171875,0.5087890625,0.580078125,0.6240234375,0.619140625,0.5693359375,0.5,0.4326171875,0.39453125,0.4052734375,0.458984375,0.525390625,0.568359375,0.5703125,0.5634765625,0.5751953125,0.603515625,0.6396484375,0.6689453125,0.6796875,0.673828125,0.6611328125,0.640625,0.6162109375,0.5927734375,0.5771484375,0.5712890625,0.5703125,0.5771484375,0.6044921875,0.6376953125,0.654296875,0.640625,0.6015625,0.55078125,0.49609375,0.431640625,0.3759765625,0.3466796875,0.34765625,0.3642578125,0.376953125,0.390625,0.4150390625,0.4521484375,0.4951171875,0.5322265625,0.556640625,0.5703125,0.572265625,0.5478515625,0.5078125,0.4775390625,0.474609375,0.50390625,0.55078125,0.6064453125,0.6640625,0.6923828125,0.6640625,0.587890625,0.4990234375,0.4287109375,0.373046875,0.3447265625,0.365234375,0.4287109375,0.505859375,0.55859375,0.5703125,0.5771484375,0.6064453125,0.64453125,0.666015625,0.6572265625,0.619140625,0.5703125,0.5087890625,0.4189453125,0.33203125,0.2900390625,0.30859375,0.365234375,0.4287109375,0.478515625,0.4814453125,0.439453125,0.3837890625,0.3505859375,0.3681640625,0.4287109375,0.490234375,0.509765625,0.4814453125,0.4296875,0.392578125,0.3974609375,0.4482421875,0.5126953125,0.5791015625,0.6123046875,0.58984375,0.5185546875,0.4375,0.376953125,0.3291015625,0.2978515625,0.2958984375,0.322265625,0.3583984375,0.3798828125,0.376953125,0.359375,0.318359375,0.2783203125,0.271484375,0.3076171875,0.375,0.4482421875,0.5146484375,0.552734375,0.5380859375,0.4755859375,0.39453125,0.3388671875,0.3251953125,0.3251953125,0.3251953125,0.3251953125,0.3251953125,0.3251953125,0.3251953125,0.3251953125,0.3349609375,0.3837890625,0.46875,0.5654296875,0.640625,0.67578125,0.673828125,0.6640625,0.6494140625,0.6162109375,0.5546875,0.47265625,0.3916015625,0.3251953125,0.259765625,0.1923828125,0.154296875,0.171875,0.2392578125,0.318359375,0.376953125,0.4345703125,0.5009765625,0.544921875,0.53515625,0.474609375,0.3935546875,0.3251953125,0.2802734375,0.2978515625,0.37890625,0.4814453125,0.552734375,0.556640625,0.5,0.43359375,0.40234375,0.423828125,0.4912109375,0.5703125,0.619140625,0.6220703125,0.6025390625,0.5595703125,0.515625,0.50390625,0.5361328125,0.6005859375,0.673828125,0.751953125,0.83984375,0.89453125,0.880859375,0.802734375,0.7021484375,0.6220703125,0.5439453125,0.44921875,0.3623046875,0.3095703125,0.298828125,0.3125,0.3251953125,0.3330078125,0.3349609375,0.345703125,0.3798828125,0.4375,0.505859375,0.5703125,0.6298828125,0.6748046875,0.689453125,0.6728515625,0.640625,0.619140625,0.6220703125,0.619140625,0.5703125,0.4873046875,0.4111328125,0.3759765625,0.3935546875,0.4482421875,0.51953125,0.619140625,0.70703125,0.73828125,0.7021484375,0.626953125,0.55078125,0.47265625,0.3876953125,0.3369140625,0.35546875,0.4375,0.5400390625,0.6220703125,0.69921875,0.7802734375,0.828125,0.8095703125,0.7333984375,0.640625,0.5703125,0.5126953125,0.48046875,0.4921875,0.5458984375,0.6142578125,0.662109375,0.673828125,0.6708984375,0.658203125,0.6357421875,0.6083984375,0.5849609375,0.572265625,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5576171875,0.5009765625,0.419921875,0.357421875,0.34375,0.380859375,0.4482421875,0.5234375,0.5966796875,0.6279296875,0.591796875,0.5,0.3984375,0.3251953125,0.2607421875,0.1943359375,0.1650390625,0.197265625,0.28125,0.376953125,0.4482421875,0.4990234375,0.5078125,0.4775390625,0.4345703125,0.4140625,0.4375,0.5,0.5771484375,0.6630859375,0.7138671875,0.6953125,0.61328125,0.5107421875,0.4287109375,0.36328125,0.3349609375,0.3681640625,0.458984375,0.568359375,0.6474609375,0.673828125,0.68359375,0.69140625,0.689453125,0.67578125,0.654296875,0.634765625,0.6220703125,0.61328125,0.611328125,0.6171875,0.6259765625,0.6318359375,0.6298828125,0.6220703125,0.6103515625,0.5966796875,0.5869140625,0.5869140625,0.5966796875,0.6103515625,0.6220703125,0.634765625,0.654296875,0.67578125,0.689453125,0.69140625,0.68359375,0.673828125,0.6630859375,0.6552734375,0.6533203125,0.658203125,0.666015625,0.671875,0.673828125,0.6767578125,0.6845703125,0.6845703125,0.66015625,0.611328125,0.552734375,0.5,0.4404296875,0.3583984375,0.283203125,0.2509765625,0.271484375,0.3232421875,0.376953125,0.4345703125,0.5009765625,0.544921875,0.53515625,0.474609375,0.3935546875,0.3251953125,0.2724609375,0.263671875,0.322265625,0.435546875,0.5615234375,0.646484375,0.673828125,0.68359375,0.69140625,0.693359375,0.6884765625,0.6806640625,0.6748046875,0.673828125,0.673828125,0.673828125,0.669921875,0.66015625,0.646484375,0.6328125,0.6220703125,0.59765625,0.52734375,0.4326171875,0.361328125,0.34375,0.380859375,0.4482421875,0.5205078125,0.587890625,0.6279296875,0.6298828125,0.6044921875,0.5771484375,0.5703125,0.5576171875,0.5009765625,0.419921875,0.357421875,0.34375,0.380859375,0.4482421875,0.5205078125,0.587890625,0.6318359375,0.6435546875,0.630859375,0.6171875,0.6220703125,0.6259765625,0.6044921875,0.5556640625,0.4951171875,0.4462890625,0.4248046875,0.4287109375,0.4296875,0.39453125,0.3359375,0.2822265625,0.26171875,0.2802734375,0.3251953125,0.3720703125,0.4033203125,0.42578125,0.4521484375,0.4931640625,0.5517578125,0.6220703125,0.6904296875,0.736328125,0.73828125,0.6943359375,0.62890625,0.5810546875,0.5703125,0.5615234375,0.5234375,0.4697265625,0.4287109375,0.4228515625,0.451171875,0.5,0.556640625,0.6201171875,0.65625,0.6005859375,0.607421875,0.5869140625,0.564453125,0.5595703125,0.5498046875,0.5048828125,0.44140625,0.3984375,0.3984375,0.4423828125,0.509765625,0.576171875,0.6201171875,0.6181640625,0.5712890625,0.5029296875,0.453125,0.439453125,0.4404296875,0.4541015625,0.48046875,0.5126953125,0.541015625,0.556640625,0.5595703125,0.5556640625,0.5390625,0.5078125,0.470703125,0.4404296875,0.4228515625,0.419921875,0.419921875,0.419921875,0.419921875,0.419921875,0.419921875,0.419921875,0.419921875,0.4208984375,0.423828125,0.4296875,0.435546875,0.439453125,0.4404296875,0.439453125,0.4296875,0.3955078125,0.357421875,0.345703125,0.3759765625,0.4375,0.509765625,0.5869140625,0.6708984375,0.7197265625,0.69921875,0.6181640625,0.517578125,0.439453125,0.373046875,0.322265625,0.30859375,0.3359375,0.3876953125,0.4287109375,0.439453125,0.453125,0.5029296875,0.5703125,0.615234375,0.6142578125,0.568359375,0.5,0.431640625,0.38671875,0.388671875,0.435546875,0.501953125,0.5498046875,0.5595703125,0.55859375,0.560546875,0.56640625,0.572265625,0.578125,0.580078125,0.5791015625,0.5771484375,0.5732421875,0.568359375,0.564453125,0.560546875,0.5595703125,0.5595703125,0.5673828125,0.6015625,0.6416015625,0.6572265625,0.6328125,0.5771484375,0.509765625,0.4404296875,0.3798828125,0.3486328125,0.35546875,0.3896484375,0.4208984375,0.4296875,0.4345703125,0.4501953125,0.478515625,0.5107421875,0.5390625,0.5546875,0.5595703125,0.5498046875,0.505859375,0.4443359375,0.4013671875,0.4013671875,0.4443359375,0.509765625,0.583984375,0.666015625,0.7158203125,0.6982421875,0.6181640625,0.5185546875,0.439453125,0.3740234375,0.337890625,0.3515625,0.4130859375,0.4912109375,0.546875,0.5595703125,0.568359375,0.6083984375,0.6591796875,0.6884765625,0.67578125,0.6259765625,0.5595703125,0.48046875,0.375,0.283203125,0.2509765625,0.2880859375,0.365234375,0.439453125,0.498046875,0.5078125,0.466796875,0.4072265625,0.3681640625,0.3798828125,0.439453125,0.5009765625,0.5185546875,0.4912109375,0.4443359375,0.4150390625,0.4306640625,0.4892578125,0.5654296875,0.6494140625,0.7001953125,0.68359375,0.60546875,0.5078125,0.4296875,0.36328125,0.314453125,0.302734375,0.3330078125,0.3837890625,0.421875,0.4296875,0.419921875,0.3837890625,0.34375,0.330078125,0.357421875,0.41796875,0.4892578125,0.5576171875,0.6015625,0.599609375,0.55078125,0.4814453125,0.431640625,0.419921875,0.419921875,0.419921875,0.419921875,0.419921875,0.419921875,0.419921875,0.419921875,0.423828125,0.4443359375,0.48046875,0.5234375,0.55859375,0.5771484375,0.5791015625,0.583984375,0.603515625,0.6201171875,0.6083984375,0.560546875,0.4912109375,0.419921875,0.3427734375,0.2529296875,0.19140625,0.1943359375,0.26171875,0.353515625,0.4296875,0.505859375,0.595703125,0.658203125,0.65625,0.58984375,0.498046875,0.419921875,0.36328125,0.36328125,0.421875,0.5029296875,0.5595703125,0.5576171875,0.5,0.431640625,0.388671875,0.392578125,0.44140625,0.5107421875,0.5595703125,0.5693359375,0.5576171875,0.5166015625,0.46484375,0.4375,0.4541015625,0.5087890625,0.5791015625,0.6591796875,0.751953125,0.81640625,0.8134765625,0.744140625,0.6494140625,0.5693359375,0.49609375,0.423828125,0.3759765625,0.3662109375,0.38671875,0.412109375,0.419921875,0.4150390625,0.392578125,0.3720703125,0.3779296875,0.4208984375,0.48828125,0.5595703125,0.6279296875,0.6787109375,0.6923828125,0.6650390625,0.615234375,0.5771484375,0.5693359375,0.5595703125,0.509765625,0.4404296875,0.388671875,0.3828125,0.423828125,0.4892578125,0.568359375,0.6630859375,0.734375,0.740234375,0.6796875,0.5888671875,0.509765625,0.4306640625,0.3447265625,0.291015625,0.306640625,0.38671875,0.48828125,0.5693359375,0.6484375,0.740234375,0.8037109375,0.80078125,0.7314453125,0.6376953125,0.5595703125,0.4912109375,0.4423828125,0.4345703125,0.4697265625,0.5263671875,0.5693359375,0.5791015625,0.5791015625,0.576171875,0.572265625,0.56640625,0.5625,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5478515625,0.4970703125,0.4287109375,0.3798828125,0.3779296875,0.421875,0.4892578125,0.5673828125,0.65234375,0.7021484375,0.6826171875,0.6005859375,0.5,0.419921875,0.34375,0.259765625,0.2109375,0.228515625,0.3095703125,0.41015625,0.4892578125,0.5478515625,0.55859375,0.5205078125,0.462890625,0.4267578125,0.439453125,0.5,0.578125,0.6650390625,0.7177734375,0.7021484375,0.6220703125,0.5205078125,0.439453125,0.373046875,0.3369140625,0.353515625,0.419921875,0.5048828125,0.564453125,0.5791015625,0.5810546875,0.58203125,0.5810546875,0.578125,0.5751953125,0.5712890625,0.5693359375,0.568359375,0.5673828125,0.568359375,0.5703125,0.5712890625,0.5703125,0.5693359375,0.5673828125,0.5654296875,0.5634765625,0.5634765625,0.5654296875,0.5673828125,0.5693359375,0.5712890625,0.5751953125,0.578125,0.5810546875,0.58203125,0.5810546875,0.5791015625,0.5771484375,0.576171875,0.576171875,0.5771484375,0.578125,0.5791015625,0.5791015625,0.5869140625,0.6171875,0.650390625,0.658203125,0.6279296875,0.568359375,0.5,0.421875,0.3232421875,0.244140625,0.2255859375,0.2744140625,0.35546875,0.4296875,0.505859375,0.595703125,0.658203125,0.65625,0.58984375,0.498046875,0.419921875,0.35546875,0.322265625,0.34375,0.4150390625,0.5029296875,0.564453125,0.5791015625,0.5810546875,0.58203125,0.58203125,0.58203125,0.580078125,0.5791015625,0.5791015625,0.5791015625,0.5791015625,0.578125,0.576171875,0.5732421875,0.5712890625,0.5693359375,0.5556640625,0.5029296875,0.431640625,0.380859375,0.3779296875,0.421875,0.4892578125,0.560546875,0.6220703125,0.650390625,0.638671875,0.6005859375,0.5673828125,0.5595703125,0.5478515625,0.4970703125,0.4287109375,0.3798828125,0.3779296875,0.421875,0.4892578125,0.560546875,0.6220703125,0.65234375,0.6416015625,0.6064453125,0.576171875,0.5693359375,0.5673828125,0.5517578125,0.5224609375,0.486328125,0.45703125,0.44140625,0.439453125,0.431640625,0.390625,0.3349609375,0.30078125,0.3076171875,0.353515625,0.419921875,0.4794921875,0.505859375,0.4990234375,0.4794921875,0.474609375,0.505859375,0.5693359375,0.638671875,0.6904296875,0.701171875,0.66796875,0.6123046875,0.5693359375,0.5595703125,0.548828125,0.5009765625,0.4375,0.392578125,0.3916015625,0.4345703125,0.5,0.57421875,0.6572265625,0.7080078125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.6591796875,0.5908203125,0.5048828125,0.4443359375,0.4296875,0.419921875,0.384765625,0.345703125,0.3330078125,0.3603515625,0.419921875,0.4892578125,0.55859375,0.6181640625,0.6455078125,0.6328125,0.5966796875,0.5654296875,0.5595703125,0.5576171875,0.54296875,0.513671875,0.4765625,0.4443359375,0.4248046875,0.419921875,0.421875,0.4375,0.4677734375,0.505859375,0.5380859375,0.5556640625,0.5595703125,0.5595703125,0.5634765625,0.5693359375,0.5751953125,0.5791015625,0.580078125,0.5791015625,0.5771484375,0.5751953125,0.5712890625,0.5673828125,0.5634765625,0.5615234375,0.5595703125,0.546875,0.4990234375,0.435546875,0.392578125,0.396484375,0.4423828125,0.509765625,0.587890625,0.685546875,0.7607421875,0.7724609375,0.71875,0.634765625,0.5595703125,0.4931640625,0.4443359375,0.4326171875,0.4619140625,0.5126953125,0.5517578125,0.5595703125,0.56640625,0.599609375,0.6396484375,0.654296875,0.62890625,0.5703125,0.5,0.4287109375,0.369140625,0.341796875,0.3564453125,0.396484375,0.4306640625,0.439453125,0.439453125,0.4365234375,0.4326171875,0.4267578125,0.4228515625,0.419921875,0.419921875,0.419921875,0.421875,0.4248046875,0.4296875,0.43359375,0.4375,0.439453125,0.453125,0.50390625,0.5732421875,0.6220703125,0.623046875,0.578125,0.509765625,0.44140625,0.3974609375,0.3984375,0.4453125,0.51171875,0.5595703125,0.5693359375,0.5634765625,0.5439453125,0.5087890625,0.46875,0.4375,0.421875,0.419921875,0.4140625,0.384765625,0.3515625,0.34375,0.373046875,0.431640625,0.5,0.5771484375,0.67578125,0.7548828125,0.7734375,0.724609375,0.6435546875,0.5693359375,0.5,0.43359375,0.392578125,0.38671875,0.4091796875,0.43359375,0.439453125,0.44921875,0.4873046875,0.53515625,0.5595703125,0.5419921875,0.48828125,0.419921875,0.345703125,0.271484375,0.23828125,0.2763671875,0.3720703125,0.4794921875,0.5595703125,0.6162109375,0.626953125,0.587890625,0.5302734375,0.4921875,0.501953125,0.5595703125,0.615234375,0.6181640625,0.5673828125,0.49609375,0.4462890625,0.4521484375,0.509765625,0.5888671875,0.689453125,0.7685546875,0.78515625,0.7333984375,0.6474609375,0.5693359375,0.4990234375,0.4462890625,0.431640625,0.4609375,0.5146484375,0.5576171875,0.5693359375,0.5595703125,0.51171875,0.443359375,0.392578125,0.3857421875,0.4248046875,0.4892578125,0.55859375,0.619140625,0.6513671875,0.646484375,0.615234375,0.5869140625,0.5791015625,0.5791015625,0.578125,0.5771484375,0.576171875,0.576171875,0.5771484375,0.5791015625,0.5771484375,0.5576171875,0.521484375,0.4775390625,0.44140625,0.421875,0.419921875,0.4345703125,0.4931640625,0.5771484375,0.642578125,0.6591796875,0.6240234375,0.5595703125,0.4814453125,0.388671875,0.322265625,0.3212890625,0.38671875,0.4794921875,0.5595703125,0.6396484375,0.734375,0.8046875,0.8095703125,0.7470703125,0.6572265625,0.5791015625,0.5185546875,0.498046875,0.517578125,0.5556640625,0.5771484375,0.55859375,0.5,0.431640625,0.3740234375,0.3486328125,0.361328125,0.3994140625,0.431640625,0.439453125,0.4296875,0.3896484375,0.3369140625,0.3076171875,0.3203125,0.37109375,0.439453125,0.517578125,0.609375,0.6748046875,0.6748046875,0.609375,0.517578125,0.439453125,0.3740234375,0.3369140625,0.3486328125,0.4091796875,0.48828125,0.544921875,0.5595703125,0.548828125,0.494140625,0.416015625,0.353515625,0.3388671875,0.375,0.439453125,0.5078125,0.55859375,0.572265625,0.5419921875,0.490234375,0.44921875,0.439453125,0.431640625,0.3994140625,0.3623046875,0.3515625,0.3798828125,0.439453125,0.509765625,0.587890625,0.6806640625,0.7470703125,0.748046875,0.6826171875,0.5888671875,0.509765625,0.4287109375,0.326171875,0.244140625,0.224609375,0.2734375,0.35546875,0.4296875,0.505859375,0.5966796875,0.66015625,0.6591796875,0.5927734375,0.4990234375,0.419921875,0.3505859375,0.2998046875,0.2900390625,0.32421875,0.3798828125,0.4208984375,0.4296875,0.4287109375,0.4287109375,0.4306640625,0.43359375,0.4375,0.439453125,0.439453125,0.439453125,0.4384765625,0.4375,0.4365234375,0.4365234375,0.4384765625,0.439453125,0.43359375,0.40234375,0.3662109375,0.353515625,0.380859375,0.4404296875,0.509765625,0.5888671875,0.689453125,0.7705078125,0.7880859375,0.7392578125,0.6552734375,0.5791015625,0.5,0.3984375,0.31640625,0.296875,0.3466796875,0.431640625,0.509765625,0.5693359375,0.5810546875,0.541015625,0.4794921875,0.4365234375,0.443359375,0.5,0.578125,0.6796875,0.7626953125,0.78515625,0.7392578125,0.65625,0.5791015625,0.505859375,0.43359375,0.384765625,0.373046875,0.3916015625,0.4130859375,0.419921875,0.419921875,0.4208984375,0.421875,0.4228515625,0.4228515625,0.421875,0.419921875,0.41796875,0.4169921875,0.4169921875,0.4169921875,0.4189453125,0.419921875,0.419921875,0.419921875,0.4189453125,0.4169921875,0.4169921875,0.4169921875,0.41796875,0.419921875,0.4208984375,0.421875,0.4208984375,0.4189453125,0.41796875,0.41796875,0.419921875,0.4208984375,0.421875,0.4208984375,0.4189453125,0.41796875,0.41796875,0.419921875,0.43359375,0.4853515625,0.5576171875,0.6083984375,0.611328125,0.5673828125,0.5,0.421875,0.3359375,0.2841796875,0.302734375,0.3857421875,0.48828125,0.5693359375,0.6484375,0.740234375,0.8037109375,0.80078125,0.7314453125,0.6376953125,0.5595703125,0.48828125,0.4208984375,0.3779296875,0.3720703125,0.392578125,0.4150390625,0.419921875,0.41796875,0.4189453125,0.421875,0.4267578125,0.4326171875,0.4375,0.439453125,0.4404296875,0.439453125,0.435546875,0.4296875,0.423828125,0.4208984375,0.419921875,0.412109375,0.380859375,0.345703125,0.3349609375,0.36328125,0.421875,0.4892578125,0.5546875,0.595703125,0.5927734375,0.5458984375,0.4794921875,0.4306640625,0.419921875,0.412109375,0.3798828125,0.34375,0.3349609375,0.3662109375,0.427734375,0.5,0.5673828125,0.609375,0.603515625,0.55078125,0.48046875,0.4296875,0.419921875,0.4248046875,0.4423828125,0.474609375,0.5107421875,0.5400390625,0.556640625,0.5595703125,0.5498046875,0.5087890625,0.45703125,0.4267578125,0.4404296875,0.4912109375,0.5595703125,0.6142578125,0.609375,0.5400390625,0.4443359375,0.3740234375,0.3662109375,0.419921875,0.486328125,0.5390625,0.556640625,0.5322265625,0.486328125,0.44921875,0.439453125,0.431640625,0.3974609375,0.357421875,0.341796875,0.3662109375,0.421875,0.4892578125,0.5673828125,0.6669921875,0.748046875,0.6953125,0.595703125,0.482421875,0.4033203125,0.376953125,0.3603515625,0.3251953125,0.2939453125,0.291015625,0.3251953125,0.384765625,0.4482421875,0.5087890625,0.5625,0.59375,0.595703125,0.5791015625,0.5654296875,0.5703125,0.576171875,0.5595703125,0.5146484375,0.4501953125,0.3857421875,0.3427734375,0.3251953125,0.3212890625,0.34375,0.3955078125,0.46484375,0.52734375,0.5625,0.5703125,0.57421875,0.5927734375,0.623046875,0.6552734375,0.67578125,0.6806640625,0.673828125,0.662109375,0.6484375,0.630859375,0.6123046875,0.5947265625,0.5810546875,0.5703125,0.55078125,0.505859375,0.453125,0.4267578125,0.4423828125,0.490234375,0.55078125,0.6181640625,0.6953125,0.7490234375,0.7490234375,0.6982421875,0.6279296875,0.5703125,0.521484375,0.490234375,0.4892578125,0.5146484375,0.55078125,0.5732421875,0.5703125,0.568359375,0.59375,0.6298828125,0.6455078125,0.6240234375,0.5693359375,0.5,0.427734375,0.3671875,0.337890625,0.349609375,0.3876953125,0.4208984375,0.4287109375,0.4267578125,0.4140625,0.390625,0.36328125,0.3408203125,0.328125,0.3251953125,0.326171875,0.3330078125,0.3486328125,0.37109375,0.396484375,0.4169921875,0.4287109375,0.4521484375,0.515625,0.5986328125,0.6572265625,0.6630859375,0.619140625,0.55078125,0.484375,0.4462890625,0.45703125,0.509765625,0.5771484375,0.6201171875,0.6220703125,0.603515625,0.5537109375,0.4775390625,0.3994140625,0.34375,0.3212890625,0.3251953125,0.3330078125,0.33203125,0.3349609375,0.3544921875,0.39453125,0.447265625,0.5,0.55859375,0.640625,0.7158203125,0.748046875,0.7275390625,0.67578125,0.6220703125,0.5673828125,0.5068359375,0.4541015625,0.4248046875,0.419921875,0.4267578125,0.4287109375,0.435546875,0.4580078125,0.48046875,0.4794921875,0.4453125,0.3876953125,0.3251953125,0.2646484375,0.2197265625,0.224609375,0.2939453125,0.4033203125,0.505859375,0.5703125,0.6123046875,0.6201171875,0.591796875,0.548828125,0.51953125,0.52734375,0.5703125,0.6103515625,0.6103515625,0.5693359375,0.5166015625,0.486328125,0.4990234375,0.55078125,0.6220703125,0.7177734375,0.7978515625,0.8212890625,0.7783203125,0.6982421875,0.6220703125,0.55078125,0.4921875,0.470703125,0.4970703125,0.552734375,0.6015625,0.6220703125,0.62109375,0.5771484375,0.5029296875,0.4306640625,0.3935546875,0.4033203125,0.4482421875,0.5029296875,0.5673828125,0.626953125,0.6650390625,0.677734375,0.6748046875,0.673828125,0.671875,0.666015625,0.658203125,0.6533203125,0.6552734375,0.6630859375,0.673828125,0.673828125,0.6328125,0.5498046875,0.44921875,0.3662109375,0.3251953125,0.3251953125,0.349609375,0.4228515625,0.525390625,0.611328125,0.646484375,0.625,0.5703125,0.5,0.4140625,0.3486328125,0.3447265625,0.4033203125,0.4921875,0.5703125,0.650390625,0.7509765625,0.8330078125,0.8564453125,0.814453125,0.740234375,0.673828125,0.6171875,0.580078125,0.568359375,0.5703125,0.5673828125,0.544921875,0.5,0.4482421875,0.40234375,0.376953125,0.3798828125,0.40234375,0.423828125,0.4287109375,0.4208984375,0.384765625,0.3388671875,0.3134765625,0.32421875,0.369140625,0.4287109375,0.4970703125,0.578125,0.634765625,0.634765625,0.578125,0.4970703125,0.4287109375,0.37109375,0.337890625,0.349609375,0.408203125,0.4873046875,0.5478515625,0.5703125,0.568359375,0.5234375,0.4482421875,0.3798828125,0.3525390625,0.3740234375,0.4287109375,0.48828125,0.533203125,0.544921875,0.5185546875,0.4736328125,0.4375,0.4287109375,0.4228515625,0.40234375,0.3837890625,0.390625,0.4287109375,0.48828125,0.55078125,0.62109375,0.70703125,0.7724609375,0.7763671875,0.7177734375,0.6298828125,0.55078125,0.470703125,0.3671875,0.27734375,0.240234375,0.263671875,0.322265625,0.376953125,0.435546875,0.5087890625,0.5595703125,0.5546875,0.4921875,0.4033203125,0.3251953125,0.2587890625,0.21875,0.224609375,0.2724609375,0.3359375,0.3759765625,0.376953125,0.3681640625,0.3671875,0.376953125,0.39453125,0.4140625,0.4267578125,0.4287109375,0.427734375,0.421875,0.4140625,0.4091796875,0.4111328125,0.4189453125,0.4287109375,0.43359375,0.419921875,0.4033203125,0.4052734375,0.4365234375,0.490234375,0.55078125,0.6220703125,0.7177734375,0.8017578125,0.833984375,0.8046875,0.73828125,0.673828125,0.6005859375,0.5,0.4072265625,0.37109375,0.40234375,0.4755859375,0.55078125,0.6123046875,0.62890625,0.5927734375,0.52734375,0.4716796875,0.4609375,0.5,0.5634765625,0.6630859375,0.7646484375,0.8193359375,0.806640625,0.74609375,0.673828125,0.595703125,0.5009765625,0.41015625,0.3486328125,0.32421875,0.32421875,0.3251953125,0.3271484375,0.3330078125,0.3408203125,0.345703125,0.34375,0.3359375,0.3251953125,0.3154296875,0.3076171875,0.3056640625,0.310546875,0.318359375,0.32421875,0.3251953125,0.32421875,0.318359375,0.310546875,0.3056640625,0.3076171875,0.3154296875,0.3251953125,0.333984375,0.3359375,0.330078125,0.3212890625,0.3154296875,0.3173828125,0.3251953125,0.333984375,0.3359375,0.330078125,0.3212890625,0.3154296875,0.3173828125,0.3251953125,0.349609375,0.419921875,0.5146484375,0.5859375,0.6044921875,0.56640625,0.5,0.4228515625,0.34375,0.3037109375,0.3359375,0.4296875,0.5390625,0.6220703125,0.69921875,0.7802734375,0.828125,0.8095703125,0.7333984375,0.640625,0.5703125,0.505859375,0.4375,0.3798828125,0.345703125,0.3349609375,0.3330078125,0.3251953125,0.31640625,0.3154296875,0.3291015625,0.3564453125,0.388671875,0.4150390625,0.4287109375,0.4365234375,0.431640625,0.41015625,0.37890625,0.34765625,0.3291015625,0.3251953125,0.3212890625,0.306640625,0.2958984375,0.306640625,0.34375,0.3955078125,0.4482421875,0.494140625,0.5166015625,0.4990234375,0.4453125,0.3798828125,0.3359375,0.3251953125,0.3193359375,0.298828125,0.2841796875,0.2998046875,0.3525390625,0.42578125,0.5,0.5634765625,0.5888671875,0.5556640625,0.4755859375,0.384765625,0.3291015625,0.3251953125,0.341796875,0.37890625,0.435546875,0.4951171875,0.5419921875,0.5654296875,0.5703125,0.5615234375,0.525390625,0.48046875,0.4541015625,0.4658203125,0.5107421875,0.5703125,0.6171875,0.6025390625,0.521484375,0.4091796875,0.318359375,0.2900390625,0.3251953125,0.3779296875,0.427734375,0.4599609375,0.4658203125,0.451171875,0.43359375,0.4287109375,0.421875,0.39453125,0.361328125,0.3447265625,0.3583984375,0.3974609375,0.4482421875,0.5087890625,0.5966796875,0.6826171875,0.7255859375,0.619140625,0.49609375,0.404296875,0.3642578125,0.3330078125,0.291015625,0.2587890625,0.2587890625,0.2939453125,0.345703125,0.39453125,0.4375,0.47265625,0.4912109375,0.4970703125,0.498046875,0.5078125,0.5302734375,0.552734375,0.5546875,0.5185546875,0.447265625,0.3623046875,0.294921875,0.2587890625,0.2392578125,0.2529296875,0.30859375,0.3916015625,0.4716796875,0.51953125,0.5302734375,0.5380859375,0.5791015625,0.6455078125,0.712890625,0.7548828125,0.7607421875,0.740234375,0.712890625,0.68359375,0.6513671875,0.6181640625,0.5859375,0.556640625,0.5302734375,0.5,0.462890625,0.44140625,0.453125,0.4970703125,0.5546875,0.6044921875,0.6494140625,0.6845703125,0.6904296875,0.6591796875,0.60546875,0.556640625,0.5302734375,0.5146484375,0.5166015625,0.533203125,0.5517578125,0.5615234375,0.552734375,0.5302734375,0.513671875,0.5322265625,0.57421875,0.607421875,0.607421875,0.56640625,0.5,0.4287109375,0.373046875,0.3525390625,0.375,0.421875,0.4599609375,0.46875,0.4638671875,0.4384765625,0.3916015625,0.3359375,0.2890625,0.263671875,0.2587890625,0.259765625,0.2705078125,0.2978515625,0.341796875,0.3935546875,0.4384765625,0.46875,0.5078125,0.5849609375,0.673828125,0.728515625,0.7265625,0.6748046875,0.6044921875,0.5390625,0.505859375,0.5185546875,0.568359375,0.6240234375,0.650390625,0.634765625,0.5966796875,0.5166015625,0.408203125,0.30859375,0.2490234375,0.23828125,0.2587890625,0.287109375,0.3251953125,0.369140625,0.4140625,0.451171875,0.4794921875,0.5,0.5234375,0.5654296875,0.61328125,0.6484375,0.6611328125,0.6533203125,0.634765625,0.6123046875,0.5791015625,0.5380859375,0.501953125,0.4794921875,0.470703125,0.46875,0.470703125,0.4716796875,0.4580078125,0.421875,0.3662109375,0.3076171875,0.2587890625,0.21875,0.20703125,0.2451171875,0.328125,0.42578125,0.4990234375,0.5302734375,0.5458984375,0.548828125,0.5380859375,0.521484375,0.5107421875,0.513671875,0.5302734375,0.5439453125,0.5400390625,0.5263671875,0.51953125,0.5302734375,0.5615234375,0.6044921875,0.6591796875,0.73828125,0.806640625,0.826171875,0.78515625,0.7099609375,0.634765625,0.5615234375,0.494140625,0.4609375,0.48046875,0.5380859375,0.599609375,0.634765625,0.65234375,0.6318359375,0.568359375,0.4853515625,0.416015625,0.384765625,0.39453125,0.4208984375,0.4765625,0.5576171875,0.640625,0.7041015625,0.734375,0.740234375,0.736328125,0.720703125,0.701171875,0.6904296875,0.6953125,0.71484375,0.740234375,0.7509765625,0.6962890625,0.57421875,0.4248046875,0.302734375,0.248046875,0.2587890625,0.296875,0.3759765625,0.474609375,0.5546875,0.5869140625,0.5712890625,0.5302734375,0.4755859375,0.4013671875,0.3388671875,0.328125,0.375,0.4541015625,0.5302734375,0.6103515625,0.71484375,0.8095703125,0.853515625,0.8388671875,0.7890625,0.740234375,0.693359375,0.6416015625,0.59375,0.5576171875,0.5341796875,0.517578125,0.5,0.48046875,0.462890625,0.4521484375,0.4521484375,0.4599609375,0.466796875,0.46875,0.462890625,0.4365234375,0.40234375,0.3837890625,0.3916015625,0.4248046875,0.46875,0.51953125,0.5791015625,0.62109375,0.62109375,0.5791015625,0.51953125,0.46875,0.4228515625,0.3818359375,0.3671875,0.3916015625,0.443359375,0.49609375,0.5302734375,0.5478515625,0.533203125,0.4912109375,0.4443359375,0.419921875,0.4296875,0.46875,0.513671875,0.546875,0.5546875,0.53515625,0.501953125,0.4755859375,0.46875,0.4658203125,0.4560546875,0.4521484375,0.46875,0.5078125,0.5576171875,0.6044921875,0.6591796875,0.7333984375,0.794921875,0.806640625,0.759765625,0.6806640625,0.6044921875,0.5263671875,0.43359375,0.3525390625,0.3115234375,0.314453125,0.3408203125,0.3642578125,0.3896484375,0.4326171875,0.4658203125,0.4609375,0.41015625,0.333984375,0.2587890625,0.1953125,0.1708984375,0.201171875,0.2705078125,0.341796875,0.376953125,0.3642578125,0.3408203125,0.333984375,0.3525390625,0.3916015625,0.4345703125,0.462890625,0.46875,0.4658203125,0.4501953125,0.4306640625,0.4189453125,0.423828125,0.443359375,0.46875,0.4912109375,0.5009765625,0.501953125,0.5078125,0.5263671875,0.5615234375,0.6044921875,0.658203125,0.734375,0.806640625,0.8427734375,0.830078125,0.787109375,0.740234375,0.6826171875,0.591796875,0.5,0.4521484375,0.4697265625,0.53125,0.6044921875,0.6689453125,0.6982421875,0.673828125,0.607421875,0.5341796875,0.4931640625,0.5,0.533203125,0.6181640625,0.728515625,0.814453125,0.8408203125,0.806640625,0.740234375,0.6591796875,0.5478515625,0.427734375,0.3310546875,0.27734375,0.259765625,0.2587890625,0.2626953125,0.2783203125,0.2978515625,0.30859375,0.3037109375,0.2841796875,0.2587890625,0.2333984375,0.2138671875,0.208984375,0.220703125,0.240234375,0.2548828125,0.2587890625,0.2548828125,0.240234375,0.220703125,0.208984375,0.2138671875,0.2333984375,0.2587890625,0.28125,0.28515625,0.2705078125,0.248046875,0.2333984375,0.2373046875,0.2587890625,0.28125,0.28515625,0.2705078125,0.248046875,0.2333984375,0.2373046875,0.2587890625,0.2998046875,0.390625,0.501953125,0.5849609375,0.60546875,0.5673828125,0.5,0.4228515625,0.345703125,0.30859375,0.3447265625,0.44140625,0.5517578125,0.634765625,0.708984375,0.7744140625,0.7978515625,0.7587890625,0.673828125,0.5859375,0.5302734375,0.4833984375,0.4326171875,0.3828125,0.341796875,0.310546875,0.2841796875,0.2587890625,0.234375,0.2255859375,0.248046875,0.3037109375,0.375,0.4345703125,0.46875,0.490234375,0.4833984375,0.44140625,0.375,0.30859375,0.267578125,0.2587890625,0.259765625,0.2646484375,0.28125,0.30859375,0.3427734375,0.373046875,0.39453125,0.41015625,0.4072265625,0.3798828125,0.3369140625,0.2919921875,0.2646484375,0.2587890625,0.2548828125,0.2421875,0.2421875,0.275390625,0.3427734375,0.423828125,0.5,0.5595703125,0.568359375,0.5078125,0.40234375,0.30078125,0.2490234375,0.2587890625,0.291015625,0.3427734375,0.408203125,0.46875,0.509765625,0.52734375,0.5302734375,0.5234375,0.4970703125,0.4638671875,0.4443359375,0.4521484375,0.4853515625,0.5302734375,0.5654296875,0.5546875,0.48828125,0.3896484375,0.298828125,0.2529296875,0.2587890625,0.2822265625,0.3212890625,0.3720703125,0.419921875,0.4521484375,0.466796875,0.46875,0.46484375,0.4443359375,0.4140625,0.3857421875,0.373046875,0.3779296875,0.39453125,0.4208984375,0.4755859375,0.546875,0.7294921875,0.6455078125,0.541015625,0.4501953125,0.39453125,0.345703125,0.2939453125,0.2587890625,0.2587890625,0.291015625,0.3330078125,0.3642578125,0.3857421875,0.3916015625,0.3857421875,0.3837890625,0.3955078125,0.4267578125,0.46875,0.5146484375,0.548828125,0.5439453125,0.48828125,0.3994140625,0.314453125,0.2587890625,0.2197265625,0.2119140625,0.2509765625,0.3251953125,0.40625,0.4580078125,0.46875,0.4814453125,0.541015625,0.6357421875,0.7255859375,0.7783203125,0.7783203125,0.740234375,0.6962890625,0.65625,0.62109375,0.587890625,0.552734375,0.513671875,0.46875,0.4248046875,0.396484375,0.40625,0.4580078125,0.533203125,0.599609375,0.634765625,0.654296875,0.642578125,0.595703125,0.533203125,0.4794921875,0.4580078125,0.46875,0.494140625,0.5341796875,0.5712890625,0.5830078125,0.5595703125,0.515625,0.46875,0.435546875,0.4482421875,0.5,0.5576171875,0.5849609375,0.5625,0.5,0.4306640625,0.3818359375,0.375,0.4140625,0.4736328125,0.51953125,0.5302734375,0.5234375,0.490234375,0.4306640625,0.3583984375,0.2978515625,0.265625,0.2587890625,0.2587890625,0.265625,0.2919921875,0.3447265625,0.4130859375,0.4794921875,0.5302734375,0.5859375,0.673828125,0.7587890625,0.7978515625,0.7744140625,0.708984375,0.634765625,0.5703125,0.541015625,0.5546875,0.5966796875,0.634765625,0.6396484375,0.6044921875,0.5458984375,0.4443359375,0.3251953125,0.234375,0.19921875,0.216796875,0.2587890625,0.3115234375,0.384765625,0.4609375,0.513671875,0.529296875,0.5185546875,0.5,0.48046875,0.46875,0.474609375,0.501953125,0.5439453125,0.5810546875,0.6044921875,0.62109375,0.6259765625,0.61328125,0.5849609375,0.5546875,0.5341796875,0.5302734375,0.52734375,0.509765625,0.46875,0.408203125,0.3427734375,0.291015625,0.2587890625,0.2412109375,0.2578125,0.314453125,0.388671875,0.4521484375,0.4794921875,0.46875,0.453125,0.4501953125,0.4609375,0.4775390625,0.48828125,0.4853515625,0.46875,0.451171875,0.44140625,0.4560546875,0.49609375,0.552734375,0.6025390625,0.634765625,0.669921875,0.7275390625,0.7783203125,0.7900390625,0.75,0.6787109375,0.6044921875,0.5283203125,0.4501953125,0.40234375,0.4140625,0.4755859375,0.55078125,0.6044921875,0.6455078125,0.6611328125,0.6298828125,0.5546875,0.4638671875,0.39453125,0.3642578125,0.3544921875,0.3857421875,0.466796875,0.57421875,0.671875,0.728515625,0.740234375,0.7333984375,0.70703125,0.673828125,0.654296875,0.6630859375,0.6962890625,0.740234375,0.7666015625,0.71484375,0.58203125,0.4169921875,0.2841796875,0.232421875,0.2587890625,0.3115234375,0.3857421875,0.4609375,0.5078125,0.5166015625,0.49609375,0.46875,0.43359375,0.3720703125,0.314453125,0.294921875,0.328125,0.3955078125,0.46875,0.548828125,0.6494140625,0.7431640625,0.794921875,0.7978515625,0.76953125,0.740234375,0.7060546875,0.646484375,0.57421875,0.513671875,0.4833984375,0.4833984375,0.5,0.5185546875,0.5361328125,0.546875,0.546875,0.5390625,0.5322265625,0.5302734375,0.5263671875,0.5107421875,0.4912109375,0.48046875,0.4853515625,0.50390625,0.5302734375,0.5595703125,0.59375,0.6181640625,0.6181640625,0.59375,0.5595703125,0.5302734375,0.49609375,0.443359375,0.3916015625,0.3671875,0.3818359375,0.4228515625,0.46875,0.5107421875,0.5361328125,0.5380859375,0.5244140625,0.5087890625,0.5087890625,0.5302734375,0.5556640625,0.5751953125,0.580078125,0.568359375,0.548828125,0.533203125,0.5302734375,0.5283203125,0.5263671875,0.5302734375,0.546875,0.5751953125,0.6064453125,0.634765625,0.6708984375,0.7314453125,0.7900390625,0.8095703125,0.7763671875,0.7080078125,0.634765625,0.5625,0.4912109375,0.4384765625,0.4140625,0.41015625,0.408203125,0.39453125,0.3828125,0.39453125,0.4140625,0.416015625,0.38671875,0.3291015625,0.2587890625,0.1982421875,0.189453125,0.240234375,0.3251953125,0.400390625,0.42578125,0.39453125,0.353515625,0.3369140625,0.3583984375,0.4140625,0.4775390625,0.5205078125,0.5302734375,0.5234375,0.4970703125,0.4638671875,0.4443359375,0.4521484375,0.4853515625,0.5302734375,0.572265625,0.603515625,0.615234375,0.61328125,0.607421875,0.61328125,0.634765625,0.6669921875,0.7138671875,0.76171875,0.7900390625,0.7890625,0.7666015625,0.740234375,0.7021484375,0.6279296875,0.546875,0.5,0.5087890625,0.564453125,0.634765625,0.7041015625,0.7509765625,0.748046875,0.6904296875,0.603515625,0.53125,0.5,0.4970703125,0.5537109375,0.6572265625,0.7587890625,0.8134765625,0.8017578125,0.740234375,0.6591796875,0.5478515625,0.427734375,0.3310546875,0.27734375,0.259765625,0.2587890625,0.265625,0.2919921875,0.3251953125,0.3447265625,0.3359375,0.302734375,0.2587890625,0.21484375,0.181640625,0.1728515625,0.1923828125,0.2265625,0.2529296875,0.2587890625,0.2529296875,0.2265625,0.1923828125,0.1728515625,0.181640625,0.21484375,0.2587890625,0.296875,0.3037109375,0.2783203125,0.240234375,0.21484375,0.220703125,0.2587890625,0.296875,0.3037109375,0.2783203125,0.240234375,0.21484375,0.220703125,0.2587890625,0.318359375,0.4228515625,0.5380859375,0.61328125,0.619140625,0.5703125,0.5,0.421875,0.3408203125,0.2978515625,0.3251953125,0.416015625,0.5224609375,0.6044921875,0.6748046875,0.7265625,0.728515625,0.673828125,0.5849609375,0.5078125,0.46875,0.4453125,0.4267578125,0.408203125,0.3828125,0.34765625,0.3046875,0.2587890625,0.21484375,0.1884765625,0.20703125,0.2783203125,0.380859375,0.4736328125,0.5302734375,0.5673828125,0.568359375,0.515625,0.4248046875,0.3310546875,0.271484375,0.2587890625,0.263671875,0.2880859375,0.3251953125,0.361328125,0.380859375,0.3798828125,0.3642578125,0.3427734375,0.31640625,0.2900390625,0.26953125,0.2607421875,0.2587890625,0.2587890625,0.2548828125,0.2421875,0.2421875,0.275390625,0.3427734375,0.423828125,0.5,0.5576171875,0.5546875,0.48046875,0.3671875,0.2685546875,0.23046875,0.2587890625,0.3076171875,0.3662109375,0.421875,0.4580078125,0.4716796875,0.470703125,0.46875,0.4658203125,0.4501953125,0.4306640625,0.4189453125,0.423828125,0.443359375,0.46875,0.4921875,0.4970703125,0.4697265625,0.4111328125,0.3408203125,0.2861328125,0.2587890625,0.2470703125,0.265625,0.3232421875,0.40234375,0.4765625,0.5205078125,0.5302734375,0.5283203125,0.51953125,0.4970703125,0.4609375,0.419921875,0.38671875,0.3642578125,0.3486328125,0.3525390625,0.388671875,0.7001953125,0.662109375,0.5927734375,0.5146484375,0.4482421875,0.384765625,0.3251953125,0.291015625,0.2939453125,0.3251953125,0.3603515625,0.376953125,0.3798828125,0.3583984375,0.326171875,0.3095703125,0.32421875,0.369140625,0.4287109375,0.4951171875,0.5625,0.5966796875,0.5693359375,0.4892578125,0.396484375,0.3251953125,0.2685546875,0.236328125,0.248046875,0.30078125,0.3701171875,0.41796875,0.4287109375,0.443359375,0.5087890625,0.6083984375,0.69921875,0.7421875,0.7275390625,0.673828125,0.6162109375,0.578125,0.5576171875,0.544921875,0.5244140625,0.4853515625,0.4287109375,0.3720703125,0.3447265625,0.369140625,0.44140625,0.5322265625,0.5986328125,0.6220703125,0.6201171875,0.5751953125,0.49609375,0.4189453125,0.3779296875,0.3857421875,0.4287109375,0.4873046875,0.5595703125,0.615234375,0.619140625,0.5703125,0.49609375,0.4287109375,0.380859375,0.38671875,0.4443359375,0.51953125,0.5673828125,0.5595703125,0.5,0.431640625,0.3876953125,0.3896484375,0.439453125,0.5078125,0.55859375,0.5703125,0.564453125,0.5341796875,0.48046875,0.416015625,0.361328125,0.3310546875,0.3251953125,0.3232421875,0.31640625,0.3251953125,0.3642578125,0.4296875,0.5048828125,0.5703125,0.640625,0.7333984375,0.8095703125,0.828125,0.7802734375,0.69921875,0.6220703125,0.55859375,0.533203125,0.5498046875,0.587890625,0.6142578125,0.6025390625,0.55078125,0.4775390625,0.3701171875,0.2626953125,0.203125,0.2099609375,0.2626953125,0.3251953125,0.396484375,0.4921875,0.580078125,0.6220703125,0.60546875,0.5537109375,0.5,0.4443359375,0.3837890625,0.34765625,0.361328125,0.419921875,0.4931640625,0.55078125,0.6015625,0.640625,0.654296875,0.6376953125,0.6044921875,0.5771484375,0.5703125,0.5654296875,0.5419921875,0.4951171875,0.435546875,0.37890625,0.341796875,0.3251953125,0.3251953125,0.359375,0.4189453125,0.4716796875,0.4931640625,0.474609375,0.4287109375,0.38671875,0.37890625,0.4072265625,0.4501953125,0.4794921875,0.4716796875,0.4287109375,0.3828125,0.3623046875,0.388671875,0.4560546875,0.5390625,0.599609375,0.6220703125,0.6396484375,0.6806640625,0.720703125,0.7275390625,0.69140625,0.6240234375,0.55078125,0.47265625,0.384765625,0.326171875,0.330078125,0.39453125,0.4814453125,0.55078125,0.6142578125,0.6669921875,0.677734375,0.626953125,0.533203125,0.439453125,0.376953125,0.3349609375,0.3330078125,0.3896484375,0.490234375,0.59375,0.6591796875,0.673828125,0.6650390625,0.62890625,0.5830078125,0.5576171875,0.5693359375,0.61328125,0.673828125,0.716796875,0.68359375,0.5712890625,0.427734375,0.3154296875,0.2822265625,0.3251953125,0.3896484375,0.4521484375,0.4951171875,0.5,0.4755859375,0.4453125,0.4287109375,0.4091796875,0.359375,0.3046875,0.2783203125,0.2998046875,0.357421875,0.4287109375,0.505859375,0.59375,0.669921875,0.7080078125,0.70703125,0.6875,0.673828125,0.65234375,0.59375,0.5146484375,0.4521484375,0.4306640625,0.4521484375,0.5,0.55078125,0.5966796875,0.6220703125,0.619140625,0.5966796875,0.5751953125,0.5703125,0.568359375,0.5625,0.5546875,0.55078125,0.552734375,0.5595703125,0.5703125,0.58203125,0.5947265625,0.6044921875,0.6044921875,0.5947265625,0.58203125,0.5703125,0.5478515625,0.4873046875,0.408203125,0.349609375,0.337890625,0.37109375,0.4287109375,0.490234375,0.546875,0.5810546875,0.5888671875,0.576171875,0.5654296875,0.5703125,0.580078125,0.587890625,0.58984375,0.5849609375,0.5771484375,0.5712890625,0.5703125,0.5693359375,0.5703125,0.57421875,0.5830078125,0.5966796875,0.6103515625,0.6220703125,0.6416015625,0.69140625,0.74609375,0.7724609375,0.7509765625,0.693359375,0.6220703125,0.5546875,0.5107421875,0.4970703125,0.5029296875,0.5078125,0.4912109375,0.4482421875,0.4052734375,0.39453125,0.412109375,0.431640625,0.4287109375,0.3916015625,0.3251953125,0.267578125,0.265625,0.3251953125,0.4140625,0.4833984375,0.4951171875,0.4482421875,0.390625,0.361328125,0.376953125,0.435546875,0.5078125,0.55859375,0.5703125,0.5615234375,0.525390625,0.48046875,0.4541015625,0.4658203125,0.5107421875,0.5703125,0.6298828125,0.6748046875,0.689453125,0.6728515625,0.640625,0.619140625,0.6220703125,0.634765625,0.654296875,0.67578125,0.689453125,0.69140625,0.68359375,0.673828125,0.65234375,0.5966796875,0.529296875,0.490234375,0.5,0.5517578125,0.6220703125,0.6953125,0.7626953125,0.787109375,0.74609375,0.6552734375,0.5615234375,0.5,0.4638671875,0.4892578125,0.572265625,0.669921875,0.7333984375,0.732421875,0.673828125,0.595703125,0.5009765625,0.41015625,0.3486328125,0.32421875,0.32421875,0.3251953125,0.333984375,0.3701171875,0.416015625,0.44140625,0.4296875,0.3857421875,0.3251953125,0.265625,0.220703125,0.2099609375,0.2353515625,0.28125,0.3173828125,0.3251953125,0.3173828125,0.28125,0.2353515625,0.2099609375,0.220703125,0.265625,0.3251953125,0.376953125,0.3857421875,0.3515625,0.2998046875,0.265625,0.2744140625,0.3251953125,0.376953125,0.3857421875,0.3515625,0.2998046875,0.265625,0.2744140625,0.3251953125,0.3994140625,0.5068359375,0.6103515625,0.6611328125,0.640625,0.57421875,0.5,0.4208984375,0.3330078125,0.2783203125,0.2919921875,0.3701171875,0.470703125,0.55078125,0.619140625,0.6630859375,0.6572265625,0.5986328125,0.515625,0.4521484375,0.4287109375,0.4248046875,0.4404296875,0.4609375,0.4638671875,0.4375,0.38671875,0.3251953125,0.2626953125,0.2119140625,0.2099609375,0.2744140625,0.3857421875,0.49609375,0.5703125,0.6240234375,0.6396484375,0.595703125,0.505859375,0.4052734375,0.33984375,0.3251953125,0.333984375,0.3701171875,0.4189453125,0.4541015625,0.45703125,0.42578125,0.376953125,0.326171875,0.283203125,0.26171875,0.26953125,0.296875,0.3193359375,0.3251953125,0.3193359375,0.298828125,0.2841796875,0.2998046875,0.3525390625,0.42578125,0.5,0.556640625,0.552734375,0.4814453125,0.37890625,0.2978515625,0.2802734375,0.3251953125,0.3876953125,0.4453125,0.4794921875,0.48046875,0.4580078125,0.435546875,0.4287109375,0.427734375,0.421875,0.4140625,0.4091796875,0.4111328125,0.4189453125,0.4287109375,0.443359375,0.46875,0.4853515625,0.4755859375,0.4345703125,0.37890625,0.3251953125,0.2822265625,0.2744140625,0.3193359375,0.4052734375,0.498046875,0.5576171875,0.5703125,0.572265625,0.5791015625,0.57421875,0.544921875,0.4921875,0.431640625,0.376953125,0.3251953125,0.279296875,0.2705078125,0.65234375,0.6572265625,0.623046875,0.5595703125,0.4892578125,0.419921875,0.3603515625,0.3330078125,0.345703125,0.384765625,0.419921875,0.4296875,0.421875,0.3837890625,0.333984375,0.306640625,0.3203125,0.37109375,0.439453125,0.517578125,0.6064453125,0.6669921875,0.662109375,0.5927734375,0.498046875,0.419921875,0.3525390625,0.3037109375,0.294921875,0.330078125,0.38671875,0.4296875,0.439453125,0.453125,0.5107421875,0.59375,0.66015625,0.6787109375,0.64453125,0.5791015625,0.517578125,0.490234375,0.498046875,0.5205078125,0.5283203125,0.5009765625,0.439453125,0.3740234375,0.337890625,0.3525390625,0.416015625,0.4970703125,0.5546875,0.5693359375,0.55859375,0.50390625,0.4248046875,0.3603515625,0.3427734375,0.3759765625,0.439453125,0.515625,0.6064453125,0.671875,0.671875,0.6083984375,0.517578125,0.439453125,0.3828125,0.380859375,0.4345703125,0.5107421875,0.5625,0.55859375,0.5,0.4306640625,0.3857421875,0.3857421875,0.4326171875,0.4990234375,0.5478515625,0.5595703125,0.5556640625,0.5390625,0.5078125,0.470703125,0.4404296875,0.4228515625,0.419921875,0.4130859375,0.3896484375,0.3681640625,0.3759765625,0.419921875,0.48828125,0.5595703125,0.6376953125,0.7314453125,0.80078125,0.8037109375,0.740234375,0.6484375,0.5693359375,0.5078125,0.4892578125,0.5146484375,0.55859375,0.5859375,0.5693359375,0.509765625,0.4296875,0.3271484375,0.2412109375,0.2177734375,0.2626953125,0.34375,0.419921875,0.4990234375,0.599609375,0.681640625,0.7021484375,0.6552734375,0.57421875,0.5,0.423828125,0.3349609375,0.2734375,0.2763671875,0.341796875,0.43359375,0.509765625,0.5771484375,0.6328125,0.6572265625,0.6416015625,0.6015625,0.5673828125,0.5595703125,0.556640625,0.5400390625,0.5107421875,0.474609375,0.4423828125,0.4248046875,0.419921875,0.427734375,0.46875,0.5244140625,0.5595703125,0.5517578125,0.505859375,0.439453125,0.3828125,0.3720703125,0.4111328125,0.46875,0.5068359375,0.4970703125,0.439453125,0.3759765625,0.3408203125,0.35546875,0.41796875,0.498046875,0.5546875,0.5693359375,0.5791015625,0.615234375,0.6552734375,0.6689453125,0.6416015625,0.5810546875,0.509765625,0.4296875,0.3369140625,0.271484375,0.2724609375,0.3388671875,0.431640625,0.509765625,0.5849609375,0.6669921875,0.712890625,0.6904296875,0.6083984375,0.5078125,0.4296875,0.3671875,0.3349609375,0.35546875,0.423828125,0.5087890625,0.56640625,0.5791015625,0.5693359375,0.5283203125,0.4765625,0.447265625,0.4599609375,0.5107421875,0.5791015625,0.6337890625,0.625,0.5498046875,0.44921875,0.3740234375,0.365234375,0.419921875,0.48828125,0.54296875,0.5615234375,0.5380859375,0.490234375,0.4501953125,0.439453125,0.427734375,0.384765625,0.3310546875,0.3017578125,0.31640625,0.3701171875,0.439453125,0.5126953125,0.5830078125,0.62890625,0.6357421875,0.61328125,0.587890625,0.5791015625,0.56640625,0.515625,0.4462890625,0.3974609375,0.3935546875,0.4345703125,0.5,0.5673828125,0.625,0.650390625,0.6376953125,0.599609375,0.5673828125,0.5595703125,0.55859375,0.55859375,0.556640625,0.556640625,0.556640625,0.5576171875,0.5595703125,0.5615234375,0.5634765625,0.564453125,0.564453125,0.5634765625,0.5615234375,0.5595703125,0.544921875,0.48828125,0.4091796875,0.3486328125,0.3369140625,0.3740234375,0.439453125,0.5107421875,0.5751953125,0.61328125,0.615234375,0.58984375,0.564453125,0.5595703125,0.560546875,0.5625,0.5625,0.5615234375,0.560546875,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.560546875,0.5625,0.5654296875,0.5673828125,0.5693359375,0.5810546875,0.6240234375,0.677734375,0.70703125,0.6923828125,0.6396484375,0.5693359375,0.5068359375,0.484375,0.5048828125,0.54296875,0.5654296875,0.5478515625,0.4892578125,0.431640625,0.4150390625,0.439453125,0.48046875,0.5029296875,0.4814453125,0.419921875,0.361328125,0.3583984375,0.4130859375,0.4912109375,0.546875,0.5458984375,0.4892578125,0.4228515625,0.3798828125,0.3828125,0.4306640625,0.4990234375,0.5478515625,0.5595703125,0.5498046875,0.5087890625,0.45703125,0.4267578125,0.4404296875,0.4912109375,0.5595703125,0.6279296875,0.6787109375,0.6923828125,0.6650390625,0.615234375,0.5771484375,0.5693359375,0.5712890625,0.5751953125,0.578125,0.5810546875,0.58203125,0.5810546875,0.5791015625,0.5673828125,0.5234375,0.4677734375,0.4345703125,0.447265625,0.5,0.5693359375,0.646484375,0.73046875,0.779296875,0.759765625,0.677734375,0.5771484375,0.5,0.4443359375,0.4462890625,0.5048828125,0.5849609375,0.640625,0.6376953125,0.5791015625,0.505859375,0.43359375,0.384765625,0.373046875,0.3916015625,0.4130859375,0.419921875,0.4296875,0.470703125,0.5224609375,0.5517578125,0.5390625,0.48828125,0.419921875,0.3515625,0.30078125,0.287109375,0.3173828125,0.369140625,0.41015625,0.419921875,0.41015625,0.369140625,0.3173828125,0.287109375,0.30078125,0.3515625,0.419921875,0.478515625,0.48828125,0.44921875,0.3896484375,0.3505859375,0.361328125,0.419921875,0.478515625,0.48828125,0.44921875,0.3896484375,0.3505859375,0.361328125,0.419921875,0.5,0.6025390625,0.6865234375,0.7080078125,0.66015625,0.5771484375,0.5,0.419921875,0.3271484375,0.2626953125,0.265625,0.333984375,0.4296875,0.509765625,0.578125,0.623046875,0.6220703125,0.5732421875,0.50390625,0.453125,0.439453125,0.447265625,0.484375,0.5322265625,0.556640625,0.541015625,0.48828125,0.419921875,0.3447265625,0.2705078125,0.236328125,0.2734375,0.369140625,0.478515625,0.5595703125,0.6240234375,0.658203125,0.640625,0.57421875,0.490234375,0.4326171875,0.419921875,0.4296875,0.470703125,0.5234375,0.5556640625,0.544921875,0.49609375,0.4296875,0.36328125,0.3115234375,0.296875,0.3232421875,0.3720703125,0.41015625,0.419921875,0.412109375,0.3798828125,0.34375,0.3349609375,0.3662109375,0.427734375,0.5,0.5576171875,0.5595703125,0.5029296875,0.421875,0.36328125,0.36328125,0.419921875,0.48828125,0.5419921875,0.5595703125,0.53515625,0.4873046875,0.44921875,0.439453125,0.439453125,0.4384765625,0.4375,0.4365234375,0.4365234375,0.4384765625,0.439453125,0.4501953125,0.4892578125,0.5361328125,0.55859375,0.5400390625,0.4873046875,0.419921875,0.3564453125,0.3232421875,0.341796875,0.408203125,0.490234375,0.546875,0.5595703125,0.5654296875,0.58984375,0.6123046875,0.6064453125,0.5654296875,0.4990234375,0.4296875,0.35546875,0.275390625,0.2294921875,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.564453125,0.615234375,0.6181640625,0.576171875,0.509765625,0.443359375,0.400390625,0.4033203125,0.451171875,0.5185546875,0.568359375,0.5791015625,0.5693359375,0.5263671875,0.470703125,0.4375,0.4482421875,0.5,0.5693359375,0.6484375,0.7421875,0.80859375,0.8095703125,0.74609375,0.6552734375,0.5791015625,0.5126953125,0.4599609375,0.4443359375,0.4697265625,0.5185546875,0.55859375,0.5693359375,0.5771484375,0.603515625,0.626953125,0.6220703125,0.5791015625,0.5107421875,0.439453125,0.3837890625,0.388671875,0.455078125,0.5478515625,0.6162109375,0.623046875,0.5693359375,0.5,0.43359375,0.3916015625,0.3837890625,0.4033203125,0.4248046875,0.4296875,0.421875,0.396484375,0.376953125,0.38671875,0.4345703125,0.505859375,0.5791015625,0.658203125,0.75,0.8125,0.8076171875,0.736328125,0.6396484375,0.5595703125,0.498046875,0.4794921875,0.505859375,0.5517578125,0.5810546875,0.5673828125,0.509765625,0.4404296875,0.3798828125,0.3486328125,0.35546875,0.3896484375,0.4208984375,0.4296875,0.4345703125,0.453125,0.4853515625,0.5234375,0.5556640625,0.57421875,0.5791015625,0.5673828125,0.5087890625,0.421875,0.3515625,0.330078125,0.36328125,0.4296875,0.509765625,0.603515625,0.671875,0.673828125,0.609375,0.517578125,0.439453125,0.3828125,0.3779296875,0.4296875,0.50390625,0.556640625,0.5546875,0.5,0.4248046875,0.34375,0.296875,0.3173828125,0.3994140625,0.5,0.5791015625,0.6552734375,0.7392578125,0.7880859375,0.7705078125,0.689453125,0.5888671875,0.509765625,0.431640625,0.3408203125,0.27734375,0.27734375,0.3427734375,0.43359375,0.509765625,0.57421875,0.6162109375,0.61328125,0.5654296875,0.4990234375,0.451171875,0.439453125,0.4423828125,0.4580078125,0.486328125,0.5185546875,0.544921875,0.55859375,0.5595703125,0.5673828125,0.60546875,0.65625,0.685546875,0.6748046875,0.6259765625,0.5595703125,0.5029296875,0.49609375,0.5400390625,0.603515625,0.646484375,0.6376953125,0.5791015625,0.5068359375,0.435546875,0.3857421875,0.373046875,0.3896484375,0.412109375,0.419921875,0.4326171875,0.484375,0.5537109375,0.6015625,0.6025390625,0.5576171875,0.4892578125,0.41015625,0.3193359375,0.2587890625,0.2646484375,0.3359375,0.4306640625,0.509765625,0.5888671875,0.6904296875,0.7724609375,0.7919921875,0.7421875,0.6572265625,0.5791015625,0.505859375,0.4326171875,0.3828125,0.3701171875,0.388671875,0.412109375,0.419921875,0.412109375,0.3720703125,0.3212890625,0.29296875,0.3076171875,0.3603515625,0.4296875,0.4931640625,0.521484375,0.5146484375,0.494140625,0.4873046875,0.515625,0.5791015625,0.6484375,0.69921875,0.708984375,0.6748046875,0.619140625,0.578125,0.5693359375,0.5615234375,0.521484375,0.46875,0.4365234375,0.4453125,0.4931640625,0.5595703125,0.623046875,0.6572265625,0.6416015625,0.5810546875,0.50390625,0.4501953125,0.439453125,0.4326171875,0.3994140625,0.359375,0.3447265625,0.3701171875,0.4287109375,0.5,0.5673828125,0.611328125,0.6083984375,0.5576171875,0.4853515625,0.43359375,0.419921875,0.4189453125,0.419921875,0.4228515625,0.4267578125,0.4296875,0.4306640625,0.4296875,0.4287109375,0.4296875,0.4326171875,0.4365234375,0.439453125,0.4404296875,0.439453125,0.4306640625,0.40234375,0.375,0.376953125,0.4189453125,0.486328125,0.5595703125,0.6259765625,0.66015625,0.640625,0.5732421875,0.4892578125,0.431640625,0.419921875,0.421875,0.42578125,0.4306640625,0.4345703125,0.4384765625,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.44921875,0.4873046875,0.53515625,0.5595703125,0.5419921875,0.48828125,0.419921875,0.3623046875,0.359375,0.4130859375,0.490234375,0.5458984375,0.544921875,0.4892578125,0.4345703125,0.4365234375,0.4951171875,0.5751953125,0.630859375,0.6279296875,0.5693359375,0.5078125,0.4873046875,0.509765625,0.548828125,0.5712890625,0.55078125,0.4892578125,0.41796875,0.359375,0.3330078125,0.349609375,0.392578125,0.4296875,0.439453125,0.431640625,0.3916015625,0.3388671875,0.306640625,0.3154296875,0.36328125,0.4296875,0.49609375,0.5478515625,0.5615234375,0.533203125,0.4814453125,0.4404296875,0.4296875,0.427734375,0.423828125,0.4208984375,0.41796875,0.4169921875,0.41796875,0.419921875,0.412109375,0.373046875,0.322265625,0.29296875,0.3046875,0.353515625,0.419921875,0.498046875,0.599609375,0.68359375,0.7060546875,0.6591796875,0.5771484375,0.5,0.4384765625,0.4189453125,0.443359375,0.4853515625,0.5107421875,0.4912109375,0.4296875,0.36328125,0.3291015625,0.349609375,0.4189453125,0.505859375,0.5654296875,0.5791015625,0.5888671875,0.626953125,0.6748046875,0.69921875,0.681640625,0.6279296875,0.5595703125,0.4912109375,0.44140625,0.4296875,0.4599609375,0.51171875,0.55078125,0.5595703125,0.548828125,0.5087890625,0.4609375,0.4375,0.4560546875,0.5107421875,0.5791015625,0.6376953125,0.6474609375,0.607421875,0.546875,0.5048828125,0.5126953125,0.5693359375,0.6259765625,0.6328125,0.58984375,0.52734375,0.48828125,0.4990234375,0.5595703125,0.6376953125,0.724609375,0.779296875,0.765625,0.6875,0.5888671875,0.509765625,0.4306640625,0.3359375,0.2646484375,0.2587890625,0.3193359375,0.41015625,0.4892578125,0.5615234375,0.623046875,0.6533203125,0.6416015625,0.603515625,0.5693359375,0.5595703125,0.5673828125,0.6083984375,0.6640625,0.6982421875,0.69140625,0.6455078125,0.5791015625,0.4990234375,0.3896484375,0.2900390625,0.2490234375,0.2802734375,0.353515625,0.4296875,0.5029296875,0.5732421875,0.6201171875,0.62890625,0.609375,0.5859375,0.5791015625,0.5888671875,0.6298828125,0.6806640625,0.7080078125,0.693359375,0.6396484375,0.5693359375,0.5,0.447265625,0.4326171875,0.4609375,0.51171875,0.55078125,0.5595703125,0.546875,0.4990234375,0.43359375,0.3896484375,0.390625,0.4345703125,0.5,0.55859375,0.5771484375,0.5537109375,0.5146484375,0.4921875,0.5107421875,0.5693359375,0.6357421875,0.68359375,0.6923828125,0.66015625,0.607421875,0.5673828125,0.5595703125,0.5615234375,0.5634765625,0.564453125,0.564453125,0.5634765625,0.5615234375,0.5595703125,0.5673828125,0.607421875,0.66015625,0.6923828125,0.68359375,0.6357421875,0.5693359375,0.5,0.43359375,0.392578125,0.38671875,0.4091796875,0.43359375,0.439453125,0.453125,0.509765625,0.5927734375,0.6572265625,0.6728515625,0.6357421875,0.5693359375,0.48828125,0.3876953125,0.3095703125,0.55078125,0.6181640625,0.6376953125,0.6083984375,0.55078125,0.494140625,0.46484375,0.48046875,0.5380859375,0.611328125,0.662109375,0.673828125,0.662109375,0.6142578125,0.548828125,0.5048828125,0.5068359375,0.552734375,0.6220703125,0.7001953125,0.7880859375,0.8505859375,0.85546875,0.8046875,0.7314453125,0.673828125,0.62109375,0.5712890625,0.54296875,0.546875,0.5751953125,0.60546875,0.6220703125,0.6357421875,0.6552734375,0.66015625,0.630859375,0.5693359375,0.494140625,0.4287109375,0.380859375,0.388671875,0.458984375,0.5576171875,0.63671875,0.658203125,0.6220703125,0.568359375,0.5068359375,0.451171875,0.412109375,0.3935546875,0.3857421875,0.376953125,0.3642578125,0.3505859375,0.361328125,0.4140625,0.5009765625,0.595703125,0.673828125,0.7509765625,0.83203125,0.8759765625,0.8486328125,0.7587890625,0.65234375,0.5703125,0.5068359375,0.4814453125,0.501953125,0.548828125,0.5888671875,0.5908203125,0.55078125,0.49609375,0.431640625,0.3759765625,0.3466796875,0.34765625,0.3642578125,0.376953125,0.392578125,0.4306640625,0.490234375,0.560546875,0.6201171875,0.658203125,0.673828125,0.6669921875,0.5966796875,0.478515625,0.3662109375,0.3056640625,0.3154296875,0.376953125,0.45703125,0.55078125,0.6220703125,0.630859375,0.578125,0.4970703125,0.4287109375,0.3779296875,0.37109375,0.4140625,0.4794921875,0.5322265625,0.5390625,0.5,0.4453125,0.3935546875,0.376953125,0.4189453125,0.5068359375,0.6025390625,0.673828125,0.73828125,0.8046875,0.833984375,0.8017578125,0.7177734375,0.6220703125,0.55078125,0.484375,0.41015625,0.3603515625,0.365234375,0.419921875,0.4931640625,0.55078125,0.59765625,0.6201171875,0.6025390625,0.548828125,0.4833984375,0.4384765625,0.4287109375,0.43359375,0.45703125,0.49609375,0.5380859375,0.5673828125,0.5771484375,0.5703125,0.5673828125,0.5888671875,0.625,0.6513671875,0.6494140625,0.6181640625,0.5703125,0.53125,0.5419921875,0.6015625,0.6767578125,0.7265625,0.7236328125,0.673828125,0.6044921875,0.5107421875,0.4140625,0.34375,0.314453125,0.3154296875,0.3251953125,0.3486328125,0.4130859375,0.4951171875,0.5537109375,0.5595703125,0.5166015625,0.4482421875,0.3720703125,0.296875,0.2607421875,0.2919921875,0.3798828125,0.4794921875,0.55078125,0.6240234375,0.724609375,0.8173828125,0.853515625,0.822265625,0.7490234375,0.673828125,0.59375,0.4931640625,0.39453125,0.3291015625,0.306640625,0.3134765625,0.3251953125,0.3271484375,0.298828125,0.2587890625,0.23828125,0.2548828125,0.3076171875,0.376953125,0.4443359375,0.490234375,0.5166015625,0.5341796875,0.5595703125,0.6064453125,0.673828125,0.740234375,0.7802734375,0.7744140625,0.7265625,0.6630859375,0.623046875,0.6220703125,0.623046875,0.5947265625,0.5478515625,0.5078125,0.498046875,0.5234375,0.5703125,0.615234375,0.62890625,0.599609375,0.5361328125,0.46875,0.4296875,0.4287109375,0.4306640625,0.4052734375,0.369140625,0.353515625,0.375,0.4296875,0.5,0.56640625,0.6044921875,0.5859375,0.5146484375,0.419921875,0.349609375,0.3251953125,0.318359375,0.3232421875,0.33984375,0.3623046875,0.3798828125,0.384765625,0.376953125,0.3701171875,0.375,0.3916015625,0.4140625,0.431640625,0.4365234375,0.4287109375,0.412109375,0.3798828125,0.3564453125,0.3671875,0.419921875,0.4951171875,0.5703125,0.6328125,0.6494140625,0.6005859375,0.5009765625,0.39453125,0.3310546875,0.3251953125,0.337890625,0.3583984375,0.3828125,0.40625,0.421875,0.427734375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.435546875,0.4580078125,0.48046875,0.4794921875,0.4453125,0.3876953125,0.3251953125,0.2763671875,0.275390625,0.3291015625,0.4091796875,0.47265625,0.486328125,0.4482421875,0.412109375,0.4375,0.5205078125,0.6181640625,0.681640625,0.6806640625,0.6220703125,0.5576171875,0.5263671875,0.52734375,0.5419921875,0.5439453125,0.51171875,0.4482421875,0.3759765625,0.3154296875,0.2900390625,0.3115234375,0.3623046875,0.4091796875,0.4287109375,0.4306640625,0.40234375,0.3544921875,0.3154296875,0.3056640625,0.330078125,0.376953125,0.4287109375,0.4716796875,0.4892578125,0.4716796875,0.431640625,0.39453125,0.376953125,0.3642578125,0.3447265625,0.3232421875,0.3095703125,0.3076171875,0.3154296875,0.3251953125,0.3291015625,0.306640625,0.2705078125,0.244140625,0.24609375,0.27734375,0.3251953125,0.3896484375,0.4892578125,0.5908203125,0.6455078125,0.6328125,0.572265625,0.5,0.4365234375,0.4111328125,0.423828125,0.4521484375,0.4658203125,0.4404296875,0.376953125,0.314453125,0.2978515625,0.3505859375,0.458984375,0.5791015625,0.65625,0.673828125,0.6796875,0.7021484375,0.7255859375,0.7236328125,0.689453125,0.6318359375,0.5703125,0.51171875,0.47265625,0.4697265625,0.5,0.5439453125,0.5712890625,0.5703125,0.5537109375,0.5234375,0.4990234375,0.50390625,0.546875,0.609375,0.673828125,0.724609375,0.7333984375,0.6953125,0.634765625,0.5869140625,0.58203125,0.6220703125,0.66015625,0.6494140625,0.59375,0.5283203125,0.4921875,0.5087890625,0.5703125,0.6474609375,0.7333984375,0.7880859375,0.779296875,0.7099609375,0.62109375,0.55078125,0.4794921875,0.3798828125,0.2919921875,0.2607421875,0.296875,0.3720703125,0.4482421875,0.521484375,0.5947265625,0.6435546875,0.6494140625,0.6220703125,0.5869140625,0.5703125,0.5693359375,0.6044921875,0.6630859375,0.716796875,0.7373046875,0.71875,0.673828125,0.607421875,0.4921875,0.36328125,0.2763671875,0.26171875,0.3076171875,0.376953125,0.4541015625,0.5419921875,0.6220703125,0.669921875,0.6826171875,0.6767578125,0.673828125,0.6826171875,0.7177734375,0.759765625,0.7763671875,0.7509765625,0.6923828125,0.6220703125,0.5517578125,0.5,0.482421875,0.50390625,0.5439453125,0.5712890625,0.5703125,0.55078125,0.505859375,0.4501953125,0.4140625,0.4150390625,0.4501953125,0.5,0.544921875,0.5673828125,0.56640625,0.5556640625,0.5537109375,0.576171875,0.6220703125,0.6689453125,0.693359375,0.68359375,0.64453125,0.5966796875,0.568359375,0.5703125,0.58203125,0.5947265625,0.6044921875,0.6044921875,0.5947265625,0.58203125,0.5703125,0.568359375,0.5966796875,0.64453125,0.68359375,0.693359375,0.6689453125,0.6220703125,0.5673828125,0.5068359375,0.4541015625,0.4248046875,0.419921875,0.4267578125,0.4287109375,0.443359375,0.5087890625,0.60546875,0.6865234375,0.7158203125,0.6865234375,0.6220703125,0.5419921875,0.4453125,0.3701171875,0.568359375,0.640625,0.666015625,0.646484375,0.6044921875,0.5634765625,0.546875,0.568359375,0.6240234375,0.6875,0.73046875,0.740234375,0.7275390625,0.6728515625,0.5966796875,0.5380859375,0.5283203125,0.5673828125,0.634765625,0.7099609375,0.7861328125,0.8369140625,0.8427734375,0.80859375,0.765625,0.740234375,0.7158203125,0.673828125,0.626953125,0.595703125,0.591796875,0.609375,0.634765625,0.6630859375,0.6884765625,0.6904296875,0.654296875,0.58984375,0.5205078125,0.46875,0.431640625,0.4296875,0.47265625,0.54296875,0.6103515625,0.6435546875,0.634765625,0.6142578125,0.58203125,0.5380859375,0.4853515625,0.4345703125,0.3935546875,0.3642578125,0.3369140625,0.322265625,0.34765625,0.427734375,0.544921875,0.658203125,0.740234375,0.814453125,0.8837890625,0.9033203125,0.84765625,0.734375,0.6142578125,0.5302734375,0.46484375,0.4326171875,0.44921875,0.5078125,0.57421875,0.611328125,0.6044921875,0.5771484375,0.5185546875,0.44140625,0.375,0.33984375,0.341796875,0.3642578125,0.39453125,0.4443359375,0.513671875,0.5908203125,0.66015625,0.708984375,0.740234375,0.7470703125,0.6787109375,0.546875,0.4052734375,0.3154296875,0.306640625,0.3642578125,0.4423828125,0.5341796875,0.6044921875,0.62109375,0.5830078125,0.5205078125,0.46875,0.4287109375,0.41015625,0.4228515625,0.4580078125,0.4951171875,0.5107421875,0.5,0.48046875,0.4697265625,0.4853515625,0.5380859375,0.6142578125,0.6875,0.740234375,0.787109375,0.830078125,0.8427734375,0.806640625,0.734375,0.658203125,0.6044921875,0.5576171875,0.513671875,0.4912109375,0.501953125,0.5400390625,0.580078125,0.6044921875,0.6201171875,0.6171875,0.5908203125,0.546875,0.501953125,0.474609375,0.46875,0.474609375,0.4970703125,0.5302734375,0.5576171875,0.56640625,0.5537109375,0.5302734375,0.5068359375,0.4990234375,0.5078125,0.52734375,0.54296875,0.544921875,0.5302734375,0.5224609375,0.560546875,0.6376953125,0.720703125,0.7734375,0.7763671875,0.740234375,0.6806640625,0.57421875,0.4384765625,0.3193359375,0.2509765625,0.23828125,0.2587890625,0.2978515625,0.375,0.4638671875,0.5185546875,0.515625,0.46484375,0.39453125,0.3232421875,0.26953125,0.26953125,0.3369140625,0.4453125,0.5458984375,0.6044921875,0.662109375,0.7529296875,0.8447265625,0.892578125,0.875,0.8134765625,0.740234375,0.6552734375,0.529296875,0.388671875,0.28125,0.232421875,0.234375,0.2587890625,0.27734375,0.267578125,0.2421875,0.228515625,0.24609375,0.2958984375,0.3642578125,0.4326171875,0.4892578125,0.533203125,0.5712890625,0.615234375,0.671875,0.740234375,0.8037109375,0.828125,0.7978515625,0.728515625,0.6572265625,0.6220703125,0.634765625,0.6552734375,0.6513671875,0.6181640625,0.5712890625,0.5322265625,0.517578125,0.5302734375,0.54296875,0.5341796875,0.5048828125,0.4697265625,0.4462890625,0.447265625,0.46875,0.4853515625,0.466796875,0.4248046875,0.3916015625,0.3916015625,0.4326171875,0.5,0.5673828125,0.60546875,0.5849609375,0.501953125,0.390625,0.2998046875,0.2587890625,0.2392578125,0.248046875,0.2861328125,0.3369140625,0.375,0.3837890625,0.3642578125,0.3447265625,0.353515625,0.3916015625,0.44140625,0.4794921875,0.48828125,0.46875,0.4345703125,0.380859375,0.3369140625,0.3330078125,0.3798828125,0.455078125,0.5302734375,0.58984375,0.59375,0.52734375,0.4140625,0.3046875,0.25,0.2587890625,0.2890625,0.333984375,0.3857421875,0.4306640625,0.4580078125,0.4677734375,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.470703125,0.4716796875,0.4580078125,0.421875,0.3662109375,0.3076171875,0.2587890625,0.220703125,0.21484375,0.2509765625,0.3134765625,0.3740234375,0.4033203125,0.39453125,0.3916015625,0.4482421875,0.5517578125,0.654296875,0.708984375,0.6962890625,0.634765625,0.5693359375,0.529296875,0.5166015625,0.513671875,0.5,0.4599609375,0.39453125,0.322265625,0.263671875,0.248046875,0.287109375,0.361328125,0.431640625,0.46875,0.490234375,0.4853515625,0.4521484375,0.4052734375,0.3662109375,0.3515625,0.3642578125,0.3857421875,0.4150390625,0.4384765625,0.44140625,0.4228515625,0.392578125,0.3642578125,0.33203125,0.28515625,0.2373046875,0.208984375,0.2099609375,0.232421875,0.2587890625,0.2822265625,0.2900390625,0.28125,0.26171875,0.24609375,0.244140625,0.2587890625,0.29296875,0.3779296875,0.48828125,0.57421875,0.6005859375,0.56640625,0.5,0.4365234375,0.4091796875,0.4189453125,0.4443359375,0.4541015625,0.4267578125,0.3642578125,0.302734375,0.2958984375,0.3671875,0.4970703125,0.6337890625,0.7216796875,0.740234375,0.7412109375,0.7421875,0.7294921875,0.6923828125,0.6376953125,0.5791015625,0.5302734375,0.4892578125,0.4716796875,0.482421875,0.513671875,0.5419921875,0.548828125,0.5302734375,0.5029296875,0.482421875,0.4912109375,0.5380859375,0.61328125,0.6875,0.740234375,0.779296875,0.7880859375,0.7587890625,0.7041015625,0.650390625,0.625,0.634765625,0.640625,0.6005859375,0.52734375,0.4609375,0.4365234375,0.46484375,0.5302734375,0.607421875,0.6953125,0.7587890625,0.767578125,0.72265625,0.6572265625,0.6044921875,0.5458984375,0.4453125,0.3369140625,0.26953125,0.26953125,0.3232421875,0.39453125,0.470703125,0.5556640625,0.6181640625,0.634765625,0.6064453125,0.5625,0.5302734375,0.51171875,0.529296875,0.5849609375,0.66015625,0.72265625,0.75,0.740234375,0.703125,0.6015625,0.4609375,0.3388671875,0.2822265625,0.30078125,0.3642578125,0.4423828125,0.541015625,0.6376953125,0.70703125,0.7373046875,0.7412109375,0.740234375,0.748046875,0.7763671875,0.806640625,0.8095703125,0.7724609375,0.70703125,0.634765625,0.56640625,0.5166015625,0.5,0.513671875,0.5380859375,0.5478515625,0.5302734375,0.5009765625,0.466796875,0.44140625,0.4365234375,0.4521484375,0.478515625,0.5,0.5185546875,0.5380859375,0.5576171875,0.5771484375,0.5966796875,0.6162109375,0.634765625,0.6474609375,0.6328125,0.59375,0.546875,0.513671875,0.5087890625,0.5302734375,0.5595703125,0.59375,0.6181640625,0.6181640625,0.59375,0.5595703125,0.5302734375,0.5087890625,0.513671875,0.546875,0.59375,0.6328125,0.6474609375,0.634765625,0.6123046875,0.5791015625,0.5380859375,0.501953125,0.4794921875,0.470703125,0.46875,0.4833984375,0.544921875,0.6357421875,0.708984375,0.7333984375,0.701171875,0.634765625,0.55859375,0.4755859375,0.421875,0.607421875,0.6630859375,0.677734375,0.6611328125,0.634765625,0.611328125,0.60546875,0.6240234375,0.6630859375,0.7060546875,0.734375,0.740234375,0.7265625,0.6689453125,0.5849609375,0.5185546875,0.501953125,0.5380859375,0.6044921875,0.6748046875,0.732421875,0.76171875,0.759765625,0.740234375,0.728515625,0.740234375,0.7490234375,0.7197265625,0.6591796875,0.5966796875,0.560546875,0.56640625,0.6044921875,0.650390625,0.6904296875,0.701171875,0.673828125,0.6181640625,0.5634765625,0.5302734375,0.5029296875,0.482421875,0.4794921875,0.5029296875,0.54296875,0.5810546875,0.6044921875,0.6240234375,0.638671875,0.6298828125,0.5849609375,0.515625,0.4462890625,0.39453125,0.3486328125,0.3154296875,0.3310546875,0.4111328125,0.53515625,0.65625,0.740234375,0.8134765625,0.875,0.880859375,0.8095703125,0.6826171875,0.5556640625,0.46875,0.400390625,0.357421875,0.3671875,0.4326171875,0.52734375,0.6025390625,0.634765625,0.6416015625,0.599609375,0.515625,0.4248046875,0.365234375,0.3583984375,0.39453125,0.4404296875,0.4892578125,0.541015625,0.59375,0.6455078125,0.6943359375,0.740234375,0.7666015625,0.7158203125,0.59375,0.4521484375,0.3544921875,0.3388671875,0.39453125,0.470703125,0.5556640625,0.6181640625,0.634765625,0.6064453125,0.5625,0.5302734375,0.5009765625,0.466796875,0.44140625,0.4365234375,0.4521484375,0.478515625,0.5,0.51953125,0.5478515625,0.5849609375,0.6298828125,0.673828125,0.7119140625,0.740234375,0.7666015625,0.7890625,0.7900390625,0.76171875,0.7138671875,0.6669921875,0.634765625,0.6123046875,0.603515625,0.61328125,0.6318359375,0.6484375,0.6494140625,0.634765625,0.6142578125,0.587890625,0.560546875,0.541015625,0.53125,0.529296875,0.5302734375,0.53515625,0.5537109375,0.57421875,0.5771484375,0.5556640625,0.5146484375,0.46875,0.4228515625,0.3779296875,0.35546875,0.3671875,0.404296875,0.4443359375,0.46875,0.498046875,0.5595703125,0.6435546875,0.7177734375,0.759765625,0.76171875,0.740234375,0.697265625,0.5927734375,0.447265625,0.3115234375,0.232421875,0.22265625,0.2587890625,0.3154296875,0.4033203125,0.48828125,0.52734375,0.50390625,0.4375,0.3642578125,0.296875,0.26171875,0.2900390625,0.3798828125,0.4990234375,0.5927734375,0.634765625,0.6728515625,0.7470703125,0.828125,0.8759765625,0.8662109375,0.8115234375,0.740234375,0.65234375,0.515625,0.361328125,0.2451171875,0.19921875,0.2158203125,0.2587890625,0.2958984375,0.3037109375,0.2890625,0.275390625,0.28515625,0.328125,0.39453125,0.4619140625,0.5146484375,0.5517578125,0.5830078125,0.619140625,0.671875,0.740234375,0.80078125,0.8095703125,0.7587890625,0.673828125,0.5986328125,0.5732421875,0.6044921875,0.6484375,0.67578125,0.66796875,0.62109375,0.5537109375,0.4970703125,0.46875,0.4462890625,0.4130859375,0.3896484375,0.39453125,0.4306640625,0.4814453125,0.5302734375,0.5634765625,0.55078125,0.4990234375,0.44140625,0.4140625,0.4365234375,0.5,0.5703125,0.619140625,0.61328125,0.5380859375,0.4228515625,0.318359375,0.2587890625,0.224609375,0.234375,0.2900390625,0.36328125,0.4189453125,0.4287109375,0.39453125,0.359375,0.369140625,0.4248046875,0.4990234375,0.5546875,0.564453125,0.5302734375,0.474609375,0.392578125,0.31640625,0.2900390625,0.3232421875,0.39453125,0.46875,0.52734375,0.5283203125,0.4609375,0.35546875,0.263671875,0.2294921875,0.2587890625,0.3095703125,0.375,0.4443359375,0.4970703125,0.5234375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.52734375,0.509765625,0.46875,0.408203125,0.3427734375,0.291015625,0.2587890625,0.2333984375,0.2158203125,0.2197265625,0.2509765625,0.2978515625,0.33984375,0.3642578125,0.3984375,0.482421875,0.59375,0.6796875,0.7060546875,0.671875,0.6044921875,0.5390625,0.4990234375,0.4853515625,0.482421875,0.4697265625,0.4296875,0.3642578125,0.2919921875,0.2333984375,0.2236328125,0.2783203125,0.376953125,0.4716796875,0.5302734375,0.5732421875,0.6015625,0.59375,0.546875,0.478515625,0.421875,0.39453125,0.3818359375,0.39453125,0.4248046875,0.4521484375,0.4580078125,0.435546875,0.39453125,0.3408203125,0.2646484375,0.1923828125,0.15625,0.1689453125,0.2119140625,0.2587890625,0.3056640625,0.349609375,0.3720703125,0.361328125,0.32421875,0.283203125,0.2587890625,0.255859375,0.3134765625,0.4169921875,0.5185546875,0.5732421875,0.5615234375,0.5,0.4375,0.4140625,0.4306640625,0.4638671875,0.48046875,0.45703125,0.39453125,0.3330078125,0.322265625,0.3857421875,0.5078125,0.638671875,0.7216796875,0.740234375,0.7373046875,0.7197265625,0.6787109375,0.619140625,0.5537109375,0.5009765625,0.46875,0.4501953125,0.45703125,0.4853515625,0.5166015625,0.52734375,0.509765625,0.46875,0.427734375,0.412109375,0.4443359375,0.5244140625,0.623046875,0.7021484375,0.740234375,0.765625,0.779296875,0.767578125,0.728515625,0.67578125,0.6298828125,0.6044921875,0.5732421875,0.5009765625,0.4140625,0.35546875,0.3525390625,0.400390625,0.46875,0.546875,0.634765625,0.7041015625,0.728515625,0.7080078125,0.6669921875,0.634765625,0.5927734375,0.4990234375,0.3798828125,0.2900390625,0.26171875,0.296875,0.3642578125,0.4423828125,0.5341796875,0.6044921875,0.62109375,0.5830078125,0.5205078125,0.46875,0.4287109375,0.4169921875,0.455078125,0.5380859375,0.6357421875,0.708984375,0.740234375,0.740234375,0.6708984375,0.5439453125,0.4140625,0.3359375,0.3349609375,0.39453125,0.47265625,0.56640625,0.6572265625,0.7177734375,0.7421875,0.7421875,0.740234375,0.7470703125,0.7724609375,0.794921875,0.7900390625,0.74609375,0.677734375,0.6044921875,0.5380859375,0.4951171875,0.4853515625,0.5,0.5146484375,0.5068359375,0.46875,0.4287109375,0.41015625,0.4228515625,0.4580078125,0.4951171875,0.5107421875,0.5,0.486328125,0.49609375,0.5302734375,0.57421875,0.6083984375,0.6181640625,0.6044921875,0.5771484375,0.5205078125,0.4521484375,0.4052734375,0.3974609375,0.42578125,0.46875,0.51953125,0.5791015625,0.62109375,0.62109375,0.5791015625,0.51953125,0.46875,0.42578125,0.3974609375,0.4052734375,0.4521484375,0.5205078125,0.5771484375,0.6044921875,0.62109375,0.6259765625,0.61328125,0.5849609375,0.5546875,0.5341796875,0.5302734375,0.5419921875,0.5927734375,0.662109375,0.712890625,0.7158203125,0.6728515625,0.6044921875,0.5322265625,0.4677734375,0.44140625,0.642578125,0.6669921875,0.658203125,0.63671875,0.6220703125,0.61328125,0.611328125,0.62109375,0.638671875,0.658203125,0.6708984375,0.673828125,0.66015625,0.6044921875,0.5234375,0.4609375,0.4462890625,0.484375,0.55078125,0.6171875,0.654296875,0.6572265625,0.6376953125,0.6201171875,0.630859375,0.673828125,0.7119140625,0.6982421875,0.634765625,0.5546875,0.5009765625,0.5009765625,0.55078125,0.6123046875,0.666015625,0.689453125,0.6728515625,0.62890625,0.587890625,0.5703125,0.552734375,0.5126953125,0.46875,0.4462890625,0.4599609375,0.5009765625,0.55078125,0.6064453125,0.6669921875,0.69921875,0.6767578125,0.6044921875,0.5166015625,0.4482421875,0.3837890625,0.32421875,0.3095703125,0.365234375,0.474609375,0.58984375,0.673828125,0.7470703125,0.8115234375,0.82421875,0.759765625,0.638671875,0.5146484375,0.4287109375,0.3564453125,0.2978515625,0.2900390625,0.349609375,0.455078125,0.5576171875,0.6220703125,0.6591796875,0.6396484375,0.564453125,0.470703125,0.4052734375,0.3994140625,0.4482421875,0.50390625,0.541015625,0.556640625,0.564453125,0.580078125,0.6171875,0.673828125,0.7177734375,0.693359375,0.6015625,0.4853515625,0.40234375,0.3916015625,0.4482421875,0.521484375,0.5947265625,0.6435546875,0.6494140625,0.6220703125,0.5869140625,0.5703125,0.55078125,0.505859375,0.4501953125,0.4140625,0.4150390625,0.4501953125,0.5,0.5517578125,0.6044921875,0.64453125,0.6640625,0.6669921875,0.666015625,0.673828125,0.68359375,0.69140625,0.689453125,0.67578125,0.654296875,0.634765625,0.6220703125,0.619140625,0.640625,0.6767578125,0.703125,0.701171875,0.669921875,0.6220703125,0.5712890625,0.52734375,0.5068359375,0.5146484375,0.541015625,0.564453125,0.5703125,0.5751953125,0.59375,0.6083984375,0.5966796875,0.5537109375,0.4921875,0.4287109375,0.3623046875,0.2880859375,0.23828125,0.2431640625,0.2978515625,0.37109375,0.4287109375,0.4853515625,0.55859375,0.6298828125,0.677734375,0.6923828125,0.6845703125,0.673828125,0.646484375,0.5615234375,0.435546875,0.322265625,0.263671875,0.2724609375,0.3251953125,0.396484375,0.4892578125,0.5654296875,0.583984375,0.5361328125,0.4541015625,0.376953125,0.3115234375,0.283203125,0.31640625,0.4072265625,0.5166015625,0.595703125,0.6220703125,0.642578125,0.6982421875,0.765625,0.8046875,0.7958984375,0.7431640625,0.673828125,0.5869140625,0.45703125,0.3203125,0.232421875,0.2197265625,0.263671875,0.3251953125,0.3779296875,0.396484375,0.380859375,0.357421875,0.3525390625,0.3837890625,0.4482421875,0.5126953125,0.55078125,0.5615234375,0.5595703125,0.5703125,0.6083984375,0.673828125,0.7314453125,0.7333984375,0.673828125,0.5849609375,0.515625,0.50390625,0.55078125,0.615234375,0.6748046875,0.697265625,0.66015625,0.578125,0.490234375,0.4287109375,0.3740234375,0.318359375,0.294921875,0.3271484375,0.408203125,0.5,0.5703125,0.6181640625,0.6123046875,0.5546875,0.4794921875,0.431640625,0.439453125,0.5,0.57421875,0.640625,0.6611328125,0.6103515625,0.5068359375,0.3994140625,0.3251953125,0.27734375,0.283203125,0.3447265625,0.4287109375,0.490234375,0.49609375,0.4482421875,0.3994140625,0.4052734375,0.466796875,0.55078125,0.6123046875,0.6181640625,0.5703125,0.4970703125,0.3935546875,0.296875,0.255859375,0.283203125,0.353515625,0.4287109375,0.48828125,0.4921875,0.4365234375,0.3525390625,0.2880859375,0.2783203125,0.3251953125,0.390625,0.4658203125,0.53125,0.5703125,0.5791015625,0.5732421875,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5654296875,0.5419921875,0.4951171875,0.435546875,0.37890625,0.341796875,0.3251953125,0.3095703125,0.2783203125,0.25,0.2470703125,0.275390625,0.3251953125,0.376953125,0.4404296875,0.541015625,0.642578125,0.697265625,0.6845703125,0.6240234375,0.55078125,0.4873046875,0.455078125,0.45703125,0.4716796875,0.47265625,0.44140625,0.376953125,0.3037109375,0.2392578125,0.22265625,0.2783203125,0.3857421875,0.49609375,0.5703125,0.6337890625,0.693359375,0.7158203125,0.6787109375,0.5966796875,0.5087890625,0.4482421875,0.4072265625,0.4052734375,0.44140625,0.4892578125,0.515625,0.5,0.4482421875,0.376953125,0.28125,0.197265625,0.1650390625,0.1943359375,0.2607421875,0.3251953125,0.392578125,0.466796875,0.5166015625,0.51171875,0.45703125,0.3837890625,0.3251953125,0.2900390625,0.3154296875,0.3984375,0.49609375,0.5595703125,0.55859375,0.5,0.4384765625,0.421875,0.4501953125,0.4970703125,0.525390625,0.5087890625,0.4482421875,0.3837890625,0.3583984375,0.3955078125,0.4853515625,0.5888671875,0.658203125,0.673828125,0.6689453125,0.6455078125,0.5986328125,0.5380859375,0.482421875,0.4443359375,0.4287109375,0.427734375,0.455078125,0.4990234375,0.529296875,0.5263671875,0.4873046875,0.4287109375,0.3740234375,0.3525390625,0.3876953125,0.4736328125,0.576171875,0.6494140625,0.673828125,0.6875,0.7099609375,0.72265625,0.7080078125,0.6630859375,0.60546875,0.55078125,0.4892578125,0.39453125,0.3046875,0.263671875,0.2880859375,0.35546875,0.4287109375,0.5048828125,0.5869140625,0.650390625,0.67578125,0.6630859375,0.6376953125,0.6220703125,0.595703125,0.5166015625,0.4072265625,0.31640625,0.283203125,0.3115234375,0.376953125,0.45703125,0.55078125,0.6220703125,0.630859375,0.578125,0.4970703125,0.4287109375,0.3681640625,0.3232421875,0.328125,0.3974609375,0.5068359375,0.609375,0.673828125,0.7080078125,0.67578125,0.58203125,0.4697265625,0.39453125,0.390625,0.4482421875,0.5224609375,0.6025390625,0.666015625,0.6953125,0.6923828125,0.677734375,0.673828125,0.6806640625,0.70703125,0.7333984375,0.7314453125,0.69140625,0.6240234375,0.55078125,0.4873046875,0.455078125,0.4609375,0.484375,0.5,0.4814453125,0.4287109375,0.3779296875,0.37109375,0.4140625,0.4794921875,0.5322265625,0.5390625,0.5,0.4580078125,0.45703125,0.4970703125,0.5537109375,0.59375,0.5927734375,0.55078125,0.490234375,0.40234375,0.3203125,0.283203125,0.3056640625,0.365234375,0.4287109375,0.4970703125,0.578125,0.634765625,0.634765625,0.578125,0.4970703125,0.4287109375,0.365234375,0.3056640625,0.283203125,0.3203125,0.40234375,0.490234375,0.55078125,0.6015625,0.640625,0.654296875,0.6376953125,0.6044921875,0.5771484375,0.5703125,0.5791015625,0.619140625,0.66796875,0.693359375,0.67578125,0.62109375,0.55078125,0.4814453125,0.431640625,0.4267578125,0.6533203125,0.6455078125,0.611328125,0.5791015625,0.5693359375,0.568359375,0.568359375,0.5693359375,0.5732421875,0.576171875,0.5791015625,0.5791015625,0.5673828125,0.517578125,0.4482421875,0.3994140625,0.3974609375,0.44140625,0.509765625,0.5712890625,0.5927734375,0.5703125,0.529296875,0.50390625,0.521484375,0.5791015625,0.634765625,0.634765625,0.580078125,0.5029296875,0.44921875,0.4521484375,0.509765625,0.5791015625,0.6376953125,0.662109375,0.646484375,0.60546875,0.5693359375,0.5595703125,0.546875,0.5,0.4375,0.396484375,0.3994140625,0.4443359375,0.509765625,0.5849609375,0.673828125,0.734375,0.7294921875,0.6611328125,0.5673828125,0.4892578125,0.4130859375,0.3310546875,0.28515625,0.30859375,0.3935546875,0.498046875,0.5791015625,0.6552734375,0.7333984375,0.7685546875,0.7314453125,0.6337890625,0.5224609375,0.439453125,0.36328125,0.287109375,0.251953125,0.287109375,0.3828125,0.490234375,0.5693359375,0.6240234375,0.6240234375,0.56640625,0.486328125,0.4306640625,0.4326171875,0.4892578125,0.5498046875,0.5712890625,0.5517578125,0.5166015625,0.4970703125,0.5185546875,0.5791015625,0.6357421875,0.6337890625,0.5732421875,0.490234375,0.4306640625,0.431640625,0.4892578125,0.5615234375,0.623046875,0.6533203125,0.6416015625,0.603515625,0.5693359375,0.5595703125,0.546875,0.4990234375,0.43359375,0.3896484375,0.390625,0.4345703125,0.5,0.5673828125,0.6259765625,0.6552734375,0.6474609375,0.6142578125,0.5849609375,0.5791015625,0.5810546875,0.58203125,0.5810546875,0.578125,0.5751953125,0.5712890625,0.5693359375,0.5771484375,0.615234375,0.666015625,0.6962890625,0.6845703125,0.6357421875,0.5693359375,0.5029296875,0.451171875,0.4365234375,0.462890625,0.51171875,0.5498046875,0.5595703125,0.56640625,0.5927734375,0.6181640625,0.6162109375,0.576171875,0.5107421875,0.439453125,0.3623046875,0.271484375,0.20703125,0.2080078125,0.2724609375,0.36328125,0.439453125,0.509765625,0.5771484375,0.623046875,0.630859375,0.611328125,0.5869140625,0.5791015625,0.564453125,0.5029296875,0.4150390625,0.34375,0.322265625,0.35546875,0.419921875,0.498046875,0.591796875,0.6611328125,0.6640625,0.6005859375,0.5087890625,0.4296875,0.36328125,0.326171875,0.3427734375,0.41015625,0.494140625,0.5546875,0.5693359375,0.5810546875,0.625,0.681640625,0.7138671875,0.701171875,0.6494140625,0.5791015625,0.49609375,0.3837890625,0.2822265625,0.2412109375,0.271484375,0.345703125,0.419921875,0.4794921875,0.4970703125,0.47265625,0.4306640625,0.408203125,0.427734375,0.4892578125,0.5517578125,0.5732421875,0.552734375,0.515625,0.49609375,0.517578125,0.5791015625,0.6376953125,0.640625,0.5859375,0.5078125,0.4521484375,0.453125,0.509765625,0.5859375,0.66796875,0.716796875,0.697265625,0.6171875,0.517578125,0.439453125,0.3662109375,0.2900390625,0.251953125,0.283203125,0.373046875,0.478515625,0.5595703125,0.6162109375,0.6181640625,0.564453125,0.48828125,0.4365234375,0.4404296875,0.5,0.5771484375,0.66015625,0.7080078125,0.6865234375,0.6025390625,0.5,0.419921875,0.36328125,0.361328125,0.416015625,0.4931640625,0.5478515625,0.5458984375,0.4892578125,0.4326171875,0.4306640625,0.4853515625,0.5634765625,0.6181640625,0.6162109375,0.5595703125,0.478515625,0.37109375,0.2783203125,0.2451171875,0.2841796875,0.36328125,0.439453125,0.4990234375,0.5087890625,0.46484375,0.400390625,0.35546875,0.3623046875,0.419921875,0.4912109375,0.5595703125,0.603515625,0.6103515625,0.58984375,0.5654296875,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.556640625,0.5400390625,0.5107421875,0.474609375,0.4423828125,0.4248046875,0.419921875,0.4091796875,0.369140625,0.3203125,0.294921875,0.310546875,0.3623046875,0.4296875,0.5078125,0.609375,0.693359375,0.7158203125,0.6689453125,0.5869140625,0.509765625,0.4482421875,0.427734375,0.4501953125,0.4892578125,0.51171875,0.4912109375,0.4296875,0.353515625,0.275390625,0.2392578125,0.2744140625,0.369140625,0.478515625,0.5595703125,0.6357421875,0.7177734375,0.7666015625,0.7470703125,0.6669921875,0.5673828125,0.4892578125,0.4326171875,0.423828125,0.462890625,0.521484375,0.5595703125,0.5478515625,0.4892578125,0.41015625,0.3095703125,0.228515625,0.2109375,0.259765625,0.34375,0.419921875,0.4970703125,0.5888671875,0.65234375,0.6513671875,0.5869140625,0.49609375,0.419921875,0.365234375,0.3662109375,0.4248046875,0.505859375,0.560546875,0.5576171875,0.5,0.439453125,0.427734375,0.4658203125,0.5234375,0.5615234375,0.5498046875,0.4892578125,0.421875,0.3798828125,0.38671875,0.44140625,0.5146484375,0.5673828125,0.5791015625,0.576171875,0.560546875,0.5302734375,0.494140625,0.462890625,0.4443359375,0.439453125,0.4482421875,0.4873046875,0.5390625,0.5693359375,0.5576171875,0.5078125,0.439453125,0.375,0.33984375,0.3564453125,0.421875,0.505859375,0.564453125,0.5791015625,0.5888671875,0.62109375,0.6572265625,0.6669921875,0.6376953125,0.578125,0.509765625,0.431640625,0.3310546875,0.25,0.2294921875,0.2783203125,0.3623046875,0.439453125,0.5126953125,0.58203125,0.625,0.6298828125,0.60546875,0.578125,0.5693359375,0.5546875,0.494140625,0.41015625,0.3427734375,0.326171875,0.36328125,0.4296875,0.509765625,0.603515625,0.671875,0.673828125,0.609375,0.517578125,0.439453125,0.365234375,0.291015625,0.2587890625,0.2958984375,0.3916015625,0.5,0.5791015625,0.6337890625,0.630859375,0.5703125,0.4873046875,0.4296875,0.431640625,0.4892578125,0.5615234375,0.625,0.658203125,0.6513671875,0.6181640625,0.5869140625,0.5791015625,0.587890625,0.62109375,0.6591796875,0.6708984375,0.6416015625,0.5810546875,0.509765625,0.4482421875,0.427734375,0.451171875,0.4921875,0.517578125,0.5,0.439453125,0.3828125,0.3779296875,0.4296875,0.50390625,0.556640625,0.5546875,0.5,0.4423828125,0.43359375,0.474609375,0.53515625,0.5751953125,0.56640625,0.509765625,0.431640625,0.33203125,0.251953125,0.232421875,0.28125,0.36328125,0.439453125,0.517578125,0.609375,0.6748046875,0.6748046875,0.609375,0.517578125,0.439453125,0.36328125,0.28125,0.232421875,0.251953125,0.33203125,0.431640625,0.509765625,0.5771484375,0.6328125,0.6572265625,0.6416015625,0.6015625,0.5673828125,0.5595703125,0.568359375,0.603515625,0.646484375,0.6630859375,0.638671875,0.580078125,0.509765625,0.4404296875,0.39453125,0.3935546875,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.599609375,0.55078125,0.4814453125,0.431640625,0.419921875,0.419921875,0.4228515625,0.42578125,0.4296875,0.4306640625,0.4306640625,0.4296875,0.419921875,0.384765625,0.345703125,0.3330078125,0.3603515625,0.419921875,0.4892578125,0.5458984375,0.5478515625,0.4931640625,0.416015625,0.361328125,0.36328125,0.419921875,0.48046875,0.501953125,0.482421875,0.447265625,0.427734375,0.44921875,0.509765625,0.576171875,0.619140625,0.6162109375,0.568359375,0.5,0.451171875,0.439453125,0.431640625,0.400390625,0.365234375,0.3544921875,0.3828125,0.44140625,0.509765625,0.5849609375,0.6728515625,0.7314453125,0.7265625,0.658203125,0.56640625,0.4892578125,0.412109375,0.31640625,0.2421875,0.228515625,0.28125,0.365234375,0.439453125,0.51953125,0.626953125,0.7216796875,0.7568359375,0.7216796875,0.6455078125,0.5693359375,0.486328125,0.375,0.27734375,0.240234375,0.2763671875,0.353515625,0.4296875,0.4912109375,0.5107421875,0.4853515625,0.443359375,0.4189453125,0.4384765625,0.5,0.5576171875,0.5595703125,0.50390625,0.4248046875,0.369140625,0.37109375,0.4296875,0.4912109375,0.5107421875,0.4853515625,0.443359375,0.4189453125,0.4384765625,0.5,0.568359375,0.6142578125,0.615234375,0.5703125,0.5029296875,0.453125,0.439453125,0.4296875,0.39453125,0.3544921875,0.33984375,0.3642578125,0.421875,0.4892578125,0.5546875,0.595703125,0.5927734375,0.5458984375,0.4794921875,0.4306640625,0.419921875,0.419921875,0.4189453125,0.4169921875,0.4169921875,0.4169921875,0.41796875,0.419921875,0.431640625,0.4755859375,0.533203125,0.5673828125,0.5576171875,0.5078125,0.439453125,0.37109375,0.3203125,0.3076171875,0.3369140625,0.3896484375,0.4296875,0.439453125,0.4521484375,0.5087890625,0.5888671875,0.650390625,0.6640625,0.6259765625,0.5595703125,0.48046875,0.388671875,0.326171875,0.3310546875,0.40234375,0.4990234375,0.5791015625,0.6455078125,0.6767578125,0.6533203125,0.580078125,0.4912109375,0.431640625,0.419921875,0.4150390625,0.3955078125,0.37890625,0.390625,0.4384765625,0.5078125,0.5791015625,0.65625,0.74609375,0.8076171875,0.8046875,0.7373046875,0.6455078125,0.5693359375,0.5,0.43359375,0.392578125,0.38671875,0.4091796875,0.43359375,0.439453125,0.44921875,0.486328125,0.5322265625,0.556640625,0.5390625,0.486328125,0.419921875,0.3466796875,0.271484375,0.2373046875,0.2724609375,0.3671875,0.4765625,0.5595703125,0.6181640625,0.623046875,0.5712890625,0.4970703125,0.4462890625,0.451171875,0.509765625,0.5673828125,0.568359375,0.5087890625,0.42578125,0.365234375,0.36328125,0.419921875,0.48046875,0.5009765625,0.4814453125,0.443359375,0.421875,0.4404296875,0.5,0.5771484375,0.677734375,0.7607421875,0.7822265625,0.736328125,0.6552734375,0.5791015625,0.498046875,0.38671875,0.28515625,0.2431640625,0.2734375,0.345703125,0.419921875,0.4794921875,0.4990234375,0.474609375,0.4345703125,0.41015625,0.4296875,0.4892578125,0.5693359375,0.6708984375,0.7548828125,0.7783203125,0.7333984375,0.6533203125,0.5791015625,0.5205078125,0.5029296875,0.52734375,0.5673828125,0.58984375,0.5693359375,0.509765625,0.44921875,0.427734375,0.4482421875,0.4853515625,0.5068359375,0.48828125,0.4296875,0.3564453125,0.2802734375,0.2431640625,0.2763671875,0.369140625,0.4765625,0.5595703125,0.6201171875,0.6337890625,0.599609375,0.544921875,0.5087890625,0.5205078125,0.5791015625,0.64453125,0.6787109375,0.66015625,0.59375,0.5107421875,0.453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.443359375,0.4599609375,0.490234375,0.5244140625,0.5537109375,0.568359375,0.5693359375,0.5576171875,0.513671875,0.45703125,0.4248046875,0.4375,0.4892578125,0.5595703125,0.6376953125,0.7255859375,0.78125,0.7685546875,0.6904296875,0.5908203125,0.509765625,0.4501953125,0.4453125,0.4951171875,0.568359375,0.6201171875,0.6162109375,0.5595703125,0.478515625,0.3720703125,0.279296875,0.2451171875,0.28125,0.3564453125,0.4296875,0.5068359375,0.6044921875,0.6806640625,0.697265625,0.646484375,0.564453125,0.4892578125,0.43359375,0.4267578125,0.470703125,0.5341796875,0.5771484375,0.5673828125,0.509765625,0.4326171875,0.3486328125,0.2978515625,0.3154296875,0.396484375,0.498046875,0.5791015625,0.658203125,0.7490234375,0.8115234375,0.8076171875,0.7392578125,0.646484375,0.5693359375,0.5107421875,0.494140625,0.5205078125,0.5634765625,0.587890625,0.5693359375,0.509765625,0.451171875,0.4404296875,0.4794921875,0.5390625,0.578125,0.568359375,0.509765625,0.439453125,0.3759765625,0.341796875,0.3466796875,0.3798828125,0.41015625,0.419921875,0.4248046875,0.4443359375,0.4765625,0.513671875,0.54296875,0.5576171875,0.5595703125,0.5673828125,0.607421875,0.6591796875,0.689453125,0.677734375,0.626953125,0.5595703125,0.48828125,0.419921875,0.376953125,0.3720703125,0.3955078125,0.421875,0.4296875,0.4423828125,0.4921875,0.5576171875,0.6025390625,0.6015625,0.556640625,0.4892578125,0.4130859375,0.3310546875,0.2822265625,0.3017578125,0.3818359375,0.4814453125,0.5595703125,0.623046875,0.6552734375,0.63671875,0.5712890625,0.4892578125,0.4326171875,0.419921875,0.4140625,0.392578125,0.375,0.384765625,0.4306640625,0.4990234375,0.5693359375,0.6455078125,0.736328125,0.7998046875,0.798828125,0.732421875,0.638671875,0.5595703125,0.4765625,0.3662109375,0.271484375,0.2373046875,0.2744140625,0.3525390625,0.4296875,0.4912109375,0.51171875,0.4873046875,0.443359375,0.416015625,0.431640625,0.4892578125,0.5546875,0.599609375,0.6025390625,0.5615234375,0.4990234375,0.4521484375,0.439453125,0.44921875,0.49609375,0.5595703125,0.6044921875,0.603515625,0.5576171875,0.4892578125,0.431640625,0.4306640625,0.490234375,0.5732421875,0.6337890625,0.6357421875,0.5791015625,0.51953125,0.5,0.5224609375,0.5615234375,0.5830078125,0.5615234375,0.5,0.4404296875,0.4306640625,0.47265625,0.5361328125,0.578125,0.5693359375,0.509765625,0.4306640625,0.3447265625,0.291015625,0.306640625,0.38671875,0.48828125,0.5693359375,0.6484375,0.7421875,0.806640625,0.8037109375,0.734375,0.6396484375,0.5595703125,0.478515625,0.37890625,0.3017578125,0.287109375,0.33984375,0.4248046875,0.5,0.564453125,0.60546875,0.6015625,0.552734375,0.4833984375,0.4326171875,0.419921875,0.4296875,0.48046875,0.552734375,0.6064453125,0.6142578125,0.5751953125,0.509765625,0.439453125,0.376953125,0.345703125,0.5380859375,0.4755859375,0.39453125,0.3388671875,0.3251953125,0.328125,0.3408203125,0.3603515625,0.3779296875,0.3876953125,0.3857421875,0.376953125,0.3603515625,0.3251953125,0.2939453125,0.291015625,0.3251953125,0.384765625,0.4482421875,0.49609375,0.490234375,0.4287109375,0.3447265625,0.283203125,0.27734375,0.3251953125,0.3818359375,0.4189453125,0.4345703125,0.4423828125,0.4580078125,0.4951171875,0.55078125,0.6083984375,0.6376953125,0.6220703125,0.5634765625,0.4912109375,0.4404296875,0.4287109375,0.4248046875,0.41015625,0.3994140625,0.41015625,0.4462890625,0.4990234375,0.55078125,0.60546875,0.66015625,0.6845703125,0.6572265625,0.5859375,0.5068359375,0.4482421875,0.390625,0.3212890625,0.26953125,0.2646484375,0.30859375,0.373046875,0.4287109375,0.4931640625,0.595703125,0.701171875,0.7607421875,0.7529296875,0.6943359375,0.6220703125,0.5361328125,0.412109375,0.291015625,0.2265625,0.2392578125,0.3037109375,0.376953125,0.4404296875,0.4658203125,0.4521484375,0.423828125,0.4111328125,0.4365234375,0.5,0.556640625,0.552734375,0.4853515625,0.3916015625,0.32421875,0.3203125,0.376953125,0.4404296875,0.4658203125,0.4521484375,0.423828125,0.4111328125,0.4365234375,0.5,0.5693359375,0.619140625,0.6240234375,0.580078125,0.5087890625,0.451171875,0.4287109375,0.412109375,0.376953125,0.341796875,0.3291015625,0.3505859375,0.396484375,0.4482421875,0.494140625,0.5166015625,0.4990234375,0.4453125,0.3798828125,0.3359375,0.3251953125,0.32421875,0.318359375,0.310546875,0.3056640625,0.3076171875,0.3154296875,0.3251953125,0.3466796875,0.40234375,0.4736328125,0.5224609375,0.5263671875,0.4873046875,0.4287109375,0.369140625,0.32421875,0.3134765625,0.3388671875,0.384765625,0.4208984375,0.4287109375,0.4423828125,0.5009765625,0.5859375,0.6533203125,0.671875,0.63671875,0.5703125,0.4931640625,0.4111328125,0.3671875,0.39453125,0.484375,0.5908203125,0.673828125,0.7333984375,0.7373046875,0.666015625,0.5390625,0.41015625,0.333984375,0.3251953125,0.3349609375,0.349609375,0.3828125,0.4443359375,0.5263671875,0.607421875,0.673828125,0.7392578125,0.806640625,0.8447265625,0.8271484375,0.759765625,0.6806640625,0.6220703125,0.5673828125,0.5068359375,0.4541015625,0.4248046875,0.419921875,0.4267578125,0.4287109375,0.43359375,0.451171875,0.4658203125,0.4599609375,0.427734375,0.3779296875,0.3251953125,0.271484375,0.22265625,0.2138671875,0.26953125,0.3759765625,0.4873046875,0.5703125,0.62890625,0.6376953125,0.59375,0.52734375,0.4833984375,0.4921875,0.55078125,0.607421875,0.5966796875,0.513671875,0.3974609375,0.3056640625,0.28125,0.3251953125,0.3818359375,0.4189453125,0.4306640625,0.4287109375,0.431640625,0.4541015625,0.5,0.5615234375,0.6552734375,0.75,0.7998046875,0.7890625,0.736328125,0.673828125,0.5966796875,0.474609375,0.33984375,0.248046875,0.2275390625,0.265625,0.3251953125,0.3798828125,0.4033203125,0.396484375,0.376953125,0.3701171875,0.3935546875,0.4482421875,0.51953125,0.6220703125,0.7216796875,0.7763671875,0.771484375,0.7265625,0.673828125,0.6298828125,0.61328125,0.6220703125,0.6376953125,0.63671875,0.6064453125,0.55078125,0.494140625,0.4580078125,0.4462890625,0.447265625,0.4453125,0.4228515625,0.376953125,0.322265625,0.2666015625,0.2470703125,0.2890625,0.3828125,0.48828125,0.5703125,0.6337890625,0.6630859375,0.6533203125,0.625,0.60546875,0.62109375,0.673828125,0.7275390625,0.7421875,0.69921875,0.6083984375,0.5087890625,0.443359375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4345703125,0.46484375,0.5146484375,0.5703125,0.611328125,0.626953125,0.6220703125,0.6005859375,0.544921875,0.4775390625,0.4384765625,0.4482421875,0.5,0.5703125,0.6494140625,0.7412109375,0.8037109375,0.798828125,0.7275390625,0.6318359375,0.55078125,0.490234375,0.4755859375,0.5126953125,0.57421875,0.6201171875,0.619140625,0.5703125,0.4990234375,0.4013671875,0.30859375,0.26171875,0.2744140625,0.3232421875,0.376953125,0.435546875,0.5107421875,0.57421875,0.5927734375,0.5615234375,0.5029296875,0.4482421875,0.4091796875,0.419921875,0.4794921875,0.5546875,0.6044921875,0.6015625,0.55078125,0.484375,0.4130859375,0.375,0.4033203125,0.4892578125,0.591796875,0.673828125,0.7490234375,0.8251953125,0.8642578125,0.841796875,0.767578125,0.6826171875,0.6220703125,0.5791015625,0.5693359375,0.58984375,0.6181640625,0.62890625,0.60546875,0.55078125,0.5,0.4912109375,0.525390625,0.5771484375,0.611328125,0.6025390625,0.55078125,0.484375,0.40625,0.3369140625,0.298828125,0.296875,0.3125,0.3251953125,0.3427734375,0.3857421875,0.4501953125,0.5146484375,0.5595703125,0.576171875,0.5703125,0.568359375,0.5966796875,0.640625,0.6708984375,0.6669921875,0.6279296875,0.5703125,0.5048828125,0.4296875,0.3681640625,0.3388671875,0.34375,0.36328125,0.376953125,0.3974609375,0.44921875,0.5126953125,0.552734375,0.5498046875,0.5068359375,0.4482421875,0.3837890625,0.32421875,0.3017578125,0.3388671875,0.4208984375,0.5087890625,0.5703125,0.6142578125,0.62109375,0.576171875,0.490234375,0.3974609375,0.3388671875,0.3251953125,0.3251953125,0.33203125,0.3603515625,0.4169921875,0.4921875,0.5654296875,0.6220703125,0.6796875,0.7529296875,0.8037109375,0.798828125,0.736328125,0.6484375,0.5703125,0.4853515625,0.3681640625,0.2587890625,0.2080078125,0.2314453125,0.3017578125,0.376953125,0.44140625,0.47265625,0.4638671875,0.4306640625,0.40234375,0.40625,0.4482421875,0.498046875,0.5390625,0.552734375,0.5302734375,0.486328125,0.4462890625,0.4287109375,0.4296875,0.4658203125,0.521484375,0.5615234375,0.5595703125,0.515625,0.4482421875,0.3916015625,0.40234375,0.4853515625,0.6015625,0.693359375,0.7177734375,0.673828125,0.6201171875,0.595703125,0.5986328125,0.609375,0.6025390625,0.564453125,0.5,0.4404296875,0.4365234375,0.48828125,0.5625,0.6142578125,0.609375,0.55078125,0.47265625,0.3876953125,0.3369140625,0.35546875,0.4375,0.5400390625,0.6220703125,0.7001953125,0.7880859375,0.8427734375,0.830078125,0.7509765625,0.6513671875,0.5703125,0.4912109375,0.4013671875,0.333984375,0.32421875,0.37109375,0.44140625,0.5,0.546875,0.568359375,0.546875,0.484375,0.4052734375,0.3466796875,0.3251953125,0.3291015625,0.384765625,0.478515625,0.5693359375,0.615234375,0.6044921875,0.55078125,0.486328125,0.4140625,0.3564453125,0.48046875,0.4140625,0.330078125,0.2724609375,0.2587890625,0.2646484375,0.29296875,0.3359375,0.375,0.3935546875,0.3876953125,0.3642578125,0.3330078125,0.291015625,0.2587890625,0.2587890625,0.2939453125,0.345703125,0.39453125,0.4287109375,0.4189453125,0.36328125,0.2900390625,0.234375,0.224609375,0.2587890625,0.3046875,0.353515625,0.4052734375,0.4580078125,0.509765625,0.55859375,0.6044921875,0.6455078125,0.662109375,0.640625,0.5849609375,0.521484375,0.478515625,0.46875,0.4697265625,0.4755859375,0.4912109375,0.5185546875,0.552734375,0.5830078125,0.6044921875,0.62109375,0.6201171875,0.5908203125,0.53515625,0.470703125,0.419921875,0.39453125,0.375,0.359375,0.3583984375,0.3779296875,0.412109375,0.4462890625,0.46875,0.5009765625,0.5771484375,0.6708984375,0.7373046875,0.7470703125,0.703125,0.634765625,0.548828125,0.421875,0.294921875,0.2236328125,0.2294921875,0.291015625,0.3642578125,0.4267578125,0.4541015625,0.4443359375,0.4189453125,0.4091796875,0.4365234375,0.5,0.556640625,0.55078125,0.48046875,0.3837890625,0.3134765625,0.3076171875,0.3642578125,0.4267578125,0.4541015625,0.4443359375,0.4189453125,0.4091796875,0.4365234375,0.5,0.572265625,0.63671875,0.662109375,0.6357421875,0.5703125,0.505859375,0.46875,0.439453125,0.3994140625,0.3642578125,0.34765625,0.353515625,0.3740234375,0.39453125,0.41015625,0.4072265625,0.3798828125,0.3369140625,0.2919921875,0.2646484375,0.2587890625,0.2548828125,0.240234375,0.220703125,0.208984375,0.2138671875,0.2333984375,0.2587890625,0.2958984375,0.3671875,0.4521484375,0.5166015625,0.53515625,0.51171875,0.46875,0.4248046875,0.3916015625,0.3837890625,0.40234375,0.4365234375,0.462890625,0.46875,0.48046875,0.529296875,0.5966796875,0.642578125,0.6435546875,0.5986328125,0.5302734375,0.455078125,0.38671875,0.3662109375,0.421875,0.5361328125,0.6552734375,0.740234375,0.794921875,0.7734375,0.66015625,0.4912109375,0.3349609375,0.2548828125,0.2587890625,0.2890625,0.3408203125,0.4189453125,0.5166015625,0.6123046875,0.6884765625,0.740234375,0.7841796875,0.8154296875,0.814453125,0.775390625,0.71484375,0.662109375,0.634765625,0.6123046875,0.5791015625,0.5380859375,0.501953125,0.4794921875,0.470703125,0.46875,0.466796875,0.4521484375,0.419921875,0.3720703125,0.3212890625,0.2822265625,0.2587890625,0.2373046875,0.2138671875,0.2177734375,0.2666015625,0.3544921875,0.451171875,0.5302734375,0.591796875,0.611328125,0.587890625,0.546875,0.5234375,0.54296875,0.6044921875,0.66015625,0.64453125,0.546875,0.4052734375,0.283203125,0.232421875,0.2587890625,0.3056640625,0.357421875,0.4052734375,0.44140625,0.46484375,0.4814453125,0.5,0.5302734375,0.599609375,0.6904296875,0.7646484375,0.7958984375,0.78125,0.740234375,0.6787109375,0.560546875,0.4111328125,0.2841796875,0.21875,0.2197265625,0.2587890625,0.2998046875,0.3232421875,0.328125,0.3251953125,0.330078125,0.353515625,0.39453125,0.44921875,0.53515625,0.634765625,0.71484375,0.7548828125,0.7568359375,0.740234375,0.724609375,0.720703125,0.720703125,0.7119140625,0.6875,0.6494140625,0.6044921875,0.5576171875,0.505859375,0.4580078125,0.421875,0.3984375,0.3818359375,0.3642578125,0.33984375,0.3037109375,0.2841796875,0.3056640625,0.3701171875,0.453125,0.5302734375,0.5986328125,0.6494140625,0.67578125,0.6826171875,0.6845703125,0.701171875,0.740234375,0.7783203125,0.7783203125,0.7255859375,0.6357421875,0.541015625,0.4814453125,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.4765625,0.51171875,0.568359375,0.6240234375,0.65625,0.6572265625,0.634765625,0.5966796875,0.5234375,0.44140625,0.39453125,0.404296875,0.458984375,0.5302734375,0.611328125,0.71484375,0.7978515625,0.8173828125,0.767578125,0.6826171875,0.6044921875,0.5390625,0.50390625,0.5078125,0.5380859375,0.56640625,0.5654296875,0.5302734375,0.4794921875,0.4150390625,0.35546875,0.3232421875,0.3232421875,0.3427734375,0.3642578125,0.3857421875,0.4140625,0.4384765625,0.447265625,0.435546875,0.4150390625,0.39453125,0.38671875,0.4248046875,0.501953125,0.5849609375,0.6376953125,0.6416015625,0.6044921875,0.5537109375,0.4951171875,0.4638671875,0.48828125,0.5654296875,0.6611328125,0.740234375,0.8095703125,0.8603515625,0.8642578125,0.814453125,0.734375,0.666015625,0.634765625,0.6220703125,0.630859375,0.654296875,0.673828125,0.6728515625,0.646484375,0.6044921875,0.56640625,0.5595703125,0.5849609375,0.6240234375,0.6494140625,0.642578125,0.6044921875,0.548828125,0.4580078125,0.353515625,0.26953125,0.2314453125,0.2353515625,0.2587890625,0.294921875,0.3623046875,0.447265625,0.5185546875,0.5546875,0.552734375,0.5302734375,0.5107421875,0.517578125,0.546875,0.5771484375,0.587890625,0.5703125,0.5302734375,0.478515625,0.4091796875,0.3447265625,0.30859375,0.310546875,0.3359375,0.3642578125,0.396484375,0.4462890625,0.4912109375,0.5078125,0.486328125,0.44140625,0.39453125,0.3505859375,0.3232421875,0.3310546875,0.3779296875,0.4453125,0.501953125,0.5302734375,0.5419921875,0.5224609375,0.4658203125,0.38671875,0.3115234375,0.267578125,0.2587890625,0.2646484375,0.2998046875,0.369140625,0.4609375,0.5478515625,0.607421875,0.634765625,0.6611328125,0.7041015625,0.7373046875,0.7314453125,0.6806640625,0.6044921875,0.5302734375,0.4462890625,0.33203125,0.228515625,0.1845703125,0.2138671875,0.2880859375,0.3642578125,0.431640625,0.4765625,0.482421875,0.4521484375,0.4091796875,0.384765625,0.39453125,0.41796875,0.4560546875,0.49609375,0.51953125,0.5166015625,0.49609375,0.46875,0.4521484375,0.46484375,0.4970703125,0.5185546875,0.5087890625,0.4619140625,0.39453125,0.3388671875,0.3544921875,0.4521484375,0.59375,0.7158203125,0.7666015625,0.740234375,0.7001953125,0.6796875,0.6708984375,0.6572265625,0.6240234375,0.568359375,0.5,0.4423828125,0.4443359375,0.5078125,0.5966796875,0.66015625,0.662109375,0.6044921875,0.525390625,0.435546875,0.375,0.3828125,0.45703125,0.5546875,0.634765625,0.7119140625,0.7939453125,0.8369140625,0.8095703125,0.71875,0.6123046875,0.5302734375,0.45703125,0.3896484375,0.35546875,0.3701171875,0.419921875,0.4716796875,0.5,0.515625,0.515625,0.4853515625,0.4248046875,0.3525390625,0.29296875,0.2587890625,0.248046875,0.296875,0.40234375,0.5244140625,0.61328125,0.63671875,0.6044921875,0.55078125,0.4736328125,0.3916015625,0.4609375,0.40234375,0.326171875,0.271484375,0.2587890625,0.2685546875,0.3115234375,0.375,0.4306640625,0.4521484375,0.435546875,0.39453125,0.345703125,0.2939453125,0.2587890625,0.2587890625,0.291015625,0.3330078125,0.3642578125,0.3837890625,0.375,0.3369140625,0.2861328125,0.248046875,0.2392578125,0.2587890625,0.2900390625,0.3388671875,0.408203125,0.4853515625,0.5546875,0.6044921875,0.634765625,0.658203125,0.6650390625,0.646484375,0.607421875,0.564453125,0.5361328125,0.5302734375,0.53515625,0.55859375,0.5966796875,0.6318359375,0.65234375,0.6513671875,0.634765625,0.607421875,0.5498046875,0.4716796875,0.400390625,0.357421875,0.349609375,0.3642578125,0.388671875,0.43359375,0.48828125,0.5322265625,0.5517578125,0.546875,0.5302734375,0.5234375,0.560546875,0.626953125,0.6845703125,0.7021484375,0.669921875,0.6044921875,0.51953125,0.400390625,0.287109375,0.2314453125,0.2509765625,0.3193359375,0.39453125,0.45703125,0.48046875,0.4638671875,0.4306640625,0.4140625,0.4375,0.5,0.556640625,0.5546875,0.4912109375,0.40234375,0.3388671875,0.3369140625,0.39453125,0.45703125,0.48046875,0.4638671875,0.4306640625,0.4140625,0.4375,0.5,0.576171875,0.6591796875,0.712890625,0.708984375,0.654296875,0.5830078125,0.5302734375,0.484375,0.4423828125,0.4111328125,0.39453125,0.3876953125,0.3798828125,0.3642578125,0.3427734375,0.31640625,0.2900390625,0.26953125,0.2607421875,0.2587890625,0.2587890625,0.2529296875,0.2265625,0.1923828125,0.1728515625,0.181640625,0.21484375,0.2587890625,0.3134765625,0.39453125,0.482421875,0.546875,0.568359375,0.5556640625,0.5302734375,0.50390625,0.4853515625,0.48046875,0.4912109375,0.5107421875,0.5263671875,0.5302734375,0.5380859375,0.572265625,0.6123046875,0.626953125,0.6005859375,0.5400390625,0.46875,0.3955078125,0.3349609375,0.328125,0.3994140625,0.52734375,0.654296875,0.740234375,0.7919921875,0.759765625,0.6318359375,0.455078125,0.302734375,0.236328125,0.2587890625,0.310546875,0.38671875,0.482421875,0.580078125,0.658203125,0.7099609375,0.740234375,0.759765625,0.751953125,0.7119140625,0.6572265625,0.611328125,0.5927734375,0.6044921875,0.62109375,0.6259765625,0.61328125,0.5849609375,0.5546875,0.5341796875,0.5302734375,0.5205078125,0.4765625,0.40234375,0.3232421875,0.265625,0.2470703125,0.2587890625,0.2724609375,0.26953125,0.2666015625,0.2841796875,0.330078125,0.3974609375,0.46875,0.533203125,0.5634765625,0.560546875,0.5439453125,0.5400390625,0.5712890625,0.634765625,0.6923828125,0.68359375,0.59375,0.4521484375,0.3203125,0.251953125,0.2587890625,0.29296875,0.3525390625,0.4248046875,0.4853515625,0.515625,0.515625,0.5,0.490234375,0.521484375,0.5908203125,0.673828125,0.736328125,0.7578125,0.740234375,0.69921875,0.6064453125,0.474609375,0.34765625,0.2646484375,0.2412109375,0.2587890625,0.283203125,0.2998046875,0.30859375,0.314453125,0.3232421875,0.33984375,0.3642578125,0.3955078125,0.4501953125,0.5244140625,0.6044921875,0.6728515625,0.716796875,0.740234375,0.759765625,0.7763671875,0.775390625,0.7509765625,0.708984375,0.666015625,0.634765625,0.6005859375,0.5419921875,0.46875,0.408203125,0.3779296875,0.3779296875,0.39453125,0.404296875,0.3857421875,0.3525390625,0.333984375,0.349609375,0.400390625,0.46875,0.5419921875,0.611328125,0.666015625,0.6953125,0.7080078125,0.7177734375,0.740234375,0.7607421875,0.7548828125,0.712890625,0.6455078125,0.5791015625,0.5380859375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5380859375,0.5732421875,0.6240234375,0.6630859375,0.6708984375,0.6474609375,0.6044921875,0.5478515625,0.4560546875,0.3642578125,0.3173828125,0.333984375,0.396484375,0.46875,0.552734375,0.6669921875,0.7705078125,0.814453125,0.78515625,0.7109375,0.634765625,0.5654296875,0.5078125,0.4775390625,0.474609375,0.486328125,0.48828125,0.46875,0.4443359375,0.4267578125,0.419921875,0.4189453125,0.4189453125,0.4111328125,0.39453125,0.373046875,0.34375,0.3193359375,0.3115234375,0.322265625,0.34375,0.3642578125,0.392578125,0.4541015625,0.5380859375,0.61328125,0.654296875,0.6572265625,0.634765625,0.6015625,0.5537109375,0.5185546875,0.52734375,0.583984375,0.6640625,0.740234375,0.8037109375,0.8291015625,0.7978515625,0.7236328125,0.6435546875,0.599609375,0.6044921875,0.626953125,0.66015625,0.6904296875,0.701171875,0.689453125,0.662109375,0.634765625,0.61328125,0.609375,0.6240234375,0.646484375,0.6611328125,0.6572265625,0.634765625,0.5947265625,0.5029296875,0.3798828125,0.2734375,0.216796875,0.2197265625,0.2587890625,0.314453125,0.3994140625,0.48828125,0.5439453125,0.548828125,0.5146484375,0.46875,0.4287109375,0.4111328125,0.421875,0.4521484375,0.4814453125,0.48828125,0.46875,0.435546875,0.380859375,0.3251953125,0.2978515625,0.30859375,0.3486328125,0.39453125,0.44140625,0.486328125,0.5078125,0.4912109375,0.4462890625,0.396484375,0.3642578125,0.34375,0.34765625,0.380859375,0.427734375,0.466796875,0.4814453125,0.46875,0.4462890625,0.40625,0.3564453125,0.30859375,0.275390625,0.2607421875,0.2587890625,0.26953125,0.322265625,0.4140625,0.513671875,0.5869140625,0.615234375,0.6044921875,0.5927734375,0.6044921875,0.6240234375,0.626953125,0.59765625,0.5390625,0.46875,0.3876953125,0.2841796875,0.201171875,0.181640625,0.2314453125,0.31640625,0.39453125,0.4658203125,0.525390625,0.546875,0.5166015625,0.4521484375,0.3935546875,0.3642578125,0.35546875,0.388671875,0.4560546875,0.5263671875,0.5693359375,0.5673828125,0.5302734375,0.4921875,0.48046875,0.48828125,0.494140625,0.4775390625,0.431640625,0.3642578125,0.306640625,0.3154296875,0.4052734375,0.546875,0.6787109375,0.7470703125,0.740234375,0.71875,0.7119140625,0.70703125,0.6845703125,0.6376953125,0.5712890625,0.5,0.4423828125,0.4482421875,0.5185546875,0.615234375,0.685546875,0.69140625,0.634765625,0.5546875,0.45703125,0.3828125,0.375,0.435546875,0.525390625,0.6044921875,0.681640625,0.7587890625,0.794921875,0.759765625,0.6630859375,0.5517578125,0.46875,0.40234375,0.365234375,0.373046875,0.4189453125,0.4755859375,0.5068359375,0.5,0.4814453125,0.46484375,0.44140625,0.4052734375,0.357421875,0.3056640625,0.2587890625,0.2275390625,0.2548828125,0.3505859375,0.48046875,0.5927734375,0.6455078125,0.634765625,0.59765625,0.5224609375,0.4306640625,0.494140625,0.4501953125,0.384765625,0.3369140625,0.3251953125,0.3369140625,0.3876953125,0.4609375,0.5185546875,0.5341796875,0.5048828125,0.4482421875,0.384765625,0.3251953125,0.291015625,0.2939453125,0.3251953125,0.3603515625,0.376953125,0.384765625,0.3798828125,0.3623046875,0.33984375,0.3232421875,0.318359375,0.3251953125,0.3408203125,0.37890625,0.4384765625,0.5087890625,0.568359375,0.6064453125,0.6220703125,0.630859375,0.6318359375,0.6220703125,0.6044921875,0.5849609375,0.572265625,0.5703125,0.578125,0.6142578125,0.6640625,0.69921875,0.701171875,0.669921875,0.6220703125,0.5595703125,0.462890625,0.361328125,0.2958984375,0.2890625,0.326171875,0.376953125,0.4384765625,0.5283203125,0.619140625,0.669921875,0.666015625,0.6220703125,0.5703125,0.5302734375,0.5322265625,0.572265625,0.619140625,0.6396484375,0.6142578125,0.55078125,0.46875,0.3623046875,0.2724609375,0.2451171875,0.2890625,0.3701171875,0.4482421875,0.5087890625,0.525390625,0.4970703125,0.4501953125,0.421875,0.4384765625,0.5,0.55859375,0.5625,0.5107421875,0.4365234375,0.384765625,0.3896484375,0.4482421875,0.5087890625,0.525390625,0.4970703125,0.4501953125,0.421875,0.4384765625,0.5,0.5791015625,0.67578125,0.7509765625,0.7646484375,0.7158203125,0.6376953125,0.5703125,0.5126953125,0.474609375,0.4580078125,0.4541015625,0.4482421875,0.4228515625,0.376953125,0.326171875,0.283203125,0.26171875,0.26953125,0.296875,0.3193359375,0.3251953125,0.3173828125,0.28125,0.2353515625,0.2099609375,0.220703125,0.265625,0.3251953125,0.392578125,0.47265625,0.546875,0.58984375,0.5966796875,0.5830078125,0.5703125,0.5595703125,0.552734375,0.55078125,0.5546875,0.5625,0.568359375,0.5703125,0.5771484375,0.6015625,0.623046875,0.6162109375,0.5712890625,0.501953125,0.4287109375,0.3544921875,0.2900390625,0.2783203125,0.3427734375,0.4638671875,0.587890625,0.673828125,0.7265625,0.701171875,0.5908203125,0.4423828125,0.3232421875,0.2841796875,0.3251953125,0.3916015625,0.47265625,0.5546875,0.6162109375,0.6494140625,0.6640625,0.673828125,0.673828125,0.63671875,0.5732421875,0.5146484375,0.4892578125,0.505859375,0.55078125,0.6015625,0.640625,0.654296875,0.6376953125,0.6044921875,0.5771484375,0.5703125,0.5576171875,0.498046875,0.4052734375,0.3193359375,0.2744140625,0.2822265625,0.3251953125,0.3671875,0.3759765625,0.3544921875,0.330078125,0.328125,0.3642578125,0.4287109375,0.4931640625,0.52734375,0.5302734375,0.5205078125,0.5234375,0.5576171875,0.6220703125,0.68359375,0.693359375,0.6328125,0.5205078125,0.40234375,0.33203125,0.3251953125,0.3466796875,0.4052734375,0.484375,0.546875,0.568359375,0.546875,0.5,0.455078125,0.4453125,0.482421875,0.5546875,0.62890625,0.671875,0.673828125,0.6533203125,0.59765625,0.5107421875,0.4189453125,0.3505859375,0.322265625,0.3251953125,0.3359375,0.34375,0.3486328125,0.353515625,0.359375,0.3671875,0.376953125,0.3876953125,0.4013671875,0.4306640625,0.4833984375,0.55078125,0.6181640625,0.673828125,0.7236328125,0.759765625,0.765625,0.7353515625,0.68359375,0.6396484375,0.6220703125,0.6005859375,0.5419921875,0.4638671875,0.400390625,0.37890625,0.400390625,0.4482421875,0.4873046875,0.48046875,0.431640625,0.375,0.3466796875,0.3671875,0.4287109375,0.5029296875,0.5791015625,0.638671875,0.6689453125,0.671875,0.66796875,0.673828125,0.6806640625,0.67578125,0.6552734375,0.623046875,0.5927734375,0.57421875,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.578125,0.611328125,0.6533203125,0.673828125,0.658203125,0.611328125,0.55078125,0.478515625,0.376953125,0.28515625,0.2490234375,0.2802734375,0.353515625,0.4287109375,0.513671875,0.630859375,0.740234375,0.791015625,0.767578125,0.697265625,0.6220703125,0.548828125,0.4794921875,0.4306640625,0.4140625,0.4228515625,0.43359375,0.4287109375,0.4267578125,0.451171875,0.4912109375,0.521484375,0.5244140625,0.4951171875,0.4482421875,0.3896484375,0.314453125,0.2509765625,0.232421875,0.263671875,0.322265625,0.376953125,0.43359375,0.5068359375,0.5791015625,0.6259765625,0.640625,0.6328125,0.6220703125,0.6025390625,0.5595703125,0.515625,0.50390625,0.5361328125,0.6005859375,0.673828125,0.7333984375,0.7412109375,0.689453125,0.60546875,0.5341796875,0.5146484375,0.55078125,0.603515625,0.6552734375,0.6884765625,0.6904296875,0.666015625,0.6376953125,0.6220703125,0.61328125,0.611328125,0.6171875,0.6259765625,0.6318359375,0.6298828125,0.6220703125,0.595703125,0.5166015625,0.4033203125,0.3037109375,0.2568359375,0.271484375,0.3251953125,0.396484375,0.4892578125,0.5693359375,0.5966796875,0.5625,0.4951171875,0.4287109375,0.37109375,0.33203125,0.328125,0.3583984375,0.40234375,0.4306640625,0.4287109375,0.4111328125,0.3701171875,0.326171875,0.3095703125,0.3330078125,0.38671875,0.4482421875,0.5068359375,0.5498046875,0.552734375,0.5126953125,0.44921875,0.3974609375,0.376953125,0.3759765625,0.404296875,0.451171875,0.4912109375,0.5009765625,0.4755859375,0.4287109375,0.376953125,0.3271484375,0.294921875,0.2890625,0.3037109375,0.3212890625,0.3251953125,0.337890625,0.39453125,0.4833984375,0.564453125,0.60546875,0.595703125,0.55078125,0.5087890625,0.498046875,0.5146484375,0.53515625,0.5322265625,0.494140625,0.4287109375,0.349609375,0.2578125,0.1953125,0.2001953125,0.271484375,0.3671875,0.4482421875,0.5234375,0.5966796875,0.6318359375,0.6044921875,0.5263671875,0.4384765625,0.376953125,0.3408203125,0.3623046875,0.44140625,0.5400390625,0.6103515625,0.6181640625,0.5703125,0.515625,0.4892578125,0.48828125,0.494140625,0.4833984375,0.443359375,0.376953125,0.3154296875,0.3056640625,0.3662109375,0.478515625,0.5966796875,0.6669921875,0.673828125,0.6689453125,0.6826171875,0.6953125,0.68359375,0.6396484375,0.572265625,0.5,0.4423828125,0.4462890625,0.513671875,0.607421875,0.6748046875,0.6787109375,0.6220703125,0.5400390625,0.4375,0.35546875,0.3369140625,0.3876953125,0.47265625,0.55078125,0.6279296875,0.70703125,0.7470703125,0.71484375,0.6201171875,0.51171875,0.4287109375,0.3681640625,0.353515625,0.39453125,0.46484375,0.5244140625,0.537109375,0.5,0.4541015625,0.431640625,0.4287109375,0.4306640625,0.4189453125,0.3818359375,0.3251953125,0.2744140625,0.271484375,0.333984375,0.4423828125,0.552734375,0.6162109375,0.6220703125,0.5986328125,0.5341796875,0.4482421875,0.5615234375,0.5283203125,0.47265625,0.4296875,0.419921875,0.4306640625,0.48046875,0.5478515625,0.595703125,0.5986328125,0.5556640625,0.4892578125,0.419921875,0.3603515625,0.3330078125,0.345703125,0.384765625,0.419921875,0.4296875,0.4306640625,0.4296875,0.4267578125,0.4228515625,0.419921875,0.4189453125,0.419921875,0.4248046875,0.443359375,0.4755859375,0.513671875,0.5458984375,0.564453125,0.5693359375,0.5703125,0.5703125,0.568359375,0.5654296875,0.5615234375,0.5595703125,0.5595703125,0.5693359375,0.6103515625,0.6630859375,0.6943359375,0.6845703125,0.6357421875,0.5693359375,0.490234375,0.3837890625,0.2890625,0.251953125,0.2841796875,0.357421875,0.4296875,0.5087890625,0.6142578125,0.70703125,0.7412109375,0.7060546875,0.6318359375,0.5595703125,0.501953125,0.4873046875,0.5166015625,0.5634765625,0.58984375,0.5712890625,0.509765625,0.4296875,0.3330078125,0.26171875,0.255859375,0.318359375,0.41015625,0.4892578125,0.5498046875,0.5615234375,0.5234375,0.4658203125,0.427734375,0.439453125,0.5,0.55859375,0.568359375,0.5263671875,0.462890625,0.4208984375,0.4296875,0.4892578125,0.5498046875,0.5615234375,0.5234375,0.4658203125,0.427734375,0.439453125,0.5,0.580078125,0.6806640625,0.759765625,0.7744140625,0.7216796875,0.6357421875,0.5595703125,0.498046875,0.470703125,0.4794921875,0.50390625,0.5146484375,0.4892578125,0.4296875,0.36328125,0.3115234375,0.296875,0.3232421875,0.3720703125,0.41015625,0.419921875,0.41015625,0.369140625,0.3173828125,0.287109375,0.30078125,0.3515625,0.419921875,0.4912109375,0.560546875,0.60546875,0.6142578125,0.5927734375,0.5673828125,0.5595703125,0.5576171875,0.556640625,0.556640625,0.556640625,0.55859375,0.55859375,0.5595703125,0.56640625,0.59375,0.6201171875,0.619140625,0.5791015625,0.5126953125,0.439453125,0.36328125,0.2861328125,0.25,0.287109375,0.384765625,0.49609375,0.5791015625,0.6357421875,0.6279296875,0.5537109375,0.451171875,0.375,0.365234375,0.419921875,0.4912109375,0.560546875,0.6083984375,0.6201171875,0.603515625,0.583984375,0.5791015625,0.5693359375,0.5224609375,0.4560546875,0.408203125,0.404296875,0.4443359375,0.509765625,0.5771484375,0.6328125,0.6572265625,0.6416015625,0.6015625,0.5673828125,0.5595703125,0.546875,0.490234375,0.408203125,0.341796875,0.3232421875,0.3564453125,0.419921875,0.4765625,0.4873046875,0.451171875,0.3974609375,0.3642578125,0.37890625,0.439453125,0.5029296875,0.529296875,0.517578125,0.4912109375,0.48046875,0.5068359375,0.5693359375,0.6357421875,0.6689453125,0.6474609375,0.5771484375,0.490234375,0.431640625,0.419921875,0.4326171875,0.4833984375,0.552734375,0.6015625,0.60546875,0.564453125,0.5,0.435546875,0.3955078125,0.40234375,0.453125,0.521484375,0.5693359375,0.5791015625,0.5732421875,0.5517578125,0.5146484375,0.47265625,0.4384765625,0.421875,0.419921875,0.421875,0.4228515625,0.423828125,0.42578125,0.4267578125,0.427734375,0.4296875,0.42578125,0.4052734375,0.3876953125,0.3974609375,0.4423828125,0.509765625,0.5791015625,0.6455078125,0.6953125,0.70703125,0.6767578125,0.623046875,0.5810546875,0.5693359375,0.556640625,0.505859375,0.4365234375,0.3876953125,0.3837890625,0.4248046875,0.4892578125,0.544921875,0.546875,0.4951171875,0.4228515625,0.3740234375,0.380859375,0.439453125,0.5126953125,0.5810546875,0.6240234375,0.6298828125,0.607421875,0.583984375,0.5791015625,0.580078125,0.5791015625,0.5751953125,0.5693359375,0.5634765625,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.568359375,0.6025390625,0.6435546875,0.66015625,0.6357421875,0.5791015625,0.509765625,0.4296875,0.328125,0.24609375,0.2275390625,0.27734375,0.3623046875,0.439453125,0.5224609375,0.6328125,0.7275390625,0.76171875,0.724609375,0.646484375,0.5693359375,0.4970703125,0.4296875,0.388671875,0.3857421875,0.4091796875,0.4345703125,0.439453125,0.44921875,0.4931640625,0.5546875,0.59765625,0.59765625,0.5546875,0.4892578125,0.412109375,0.3154296875,0.23828125,0.22265625,0.2724609375,0.35546875,0.4296875,0.5,0.5673828125,0.6123046875,0.62109375,0.6015625,0.5771484375,0.5693359375,0.5576171875,0.5166015625,0.46484375,0.4375,0.4541015625,0.5087890625,0.5791015625,0.6376953125,0.6416015625,0.5888671875,0.5107421875,0.455078125,0.4541015625,0.509765625,0.5771484375,0.6357421875,0.6630859375,0.650390625,0.6123046875,0.5791015625,0.5693359375,0.568359375,0.5673828125,0.568359375,0.5703125,0.5712890625,0.5703125,0.5693359375,0.5546875,0.494140625,0.408203125,0.33984375,0.3212890625,0.3544921875,0.419921875,0.498046875,0.5927734375,0.662109375,0.6669921875,0.6064453125,0.517578125,0.439453125,0.3720703125,0.3212890625,0.3095703125,0.33984375,0.3916015625,0.431640625,0.439453125,0.4296875,0.3935546875,0.3525390625,0.3369140625,0.361328125,0.419921875,0.4892578125,0.556640625,0.6015625,0.6025390625,0.5576171875,0.4921875,0.4423828125,0.4296875,0.4375,0.4775390625,0.5302734375,0.5625,0.5537109375,0.505859375,0.439453125,0.373046875,0.3203125,0.3037109375,0.3271484375,0.373046875,0.4111328125,0.419921875,0.431640625,0.482421875,0.552734375,0.60546875,0.61328125,0.57421875,0.509765625,0.451171875,0.4345703125,0.4599609375,0.5009765625,0.5224609375,0.501953125,0.439453125,0.361328125,0.2734375,0.2177734375,0.23046875,0.30859375,0.408203125,0.4892578125,0.5673828125,0.65234375,0.703125,0.685546875,0.6064453125,0.5078125,0.4296875,0.3759765625,0.3828125,0.451171875,0.5439453125,0.6103515625,0.615234375,0.5595703125,0.498046875,0.47265625,0.484375,0.509765625,0.5205078125,0.4931640625,0.4296875,0.36328125,0.330078125,0.3515625,0.421875,0.5087890625,0.5673828125,0.5791015625,0.5859375,0.6162109375,0.65234375,0.662109375,0.6318359375,0.5712890625,0.5,0.44140625,0.439453125,0.4951171875,0.57421875,0.6298828125,0.6279296875,0.5693359375,0.48828125,0.38671875,0.306640625,0.291015625,0.3447265625,0.4306640625,0.509765625,0.587890625,0.6728515625,0.724609375,0.7060546875,0.6240234375,0.521484375,0.439453125,0.380859375,0.375,0.4267578125,0.501953125,0.5556640625,0.5546875,0.5,0.4404296875,0.421875,0.443359375,0.4814453125,0.5009765625,0.48046875,0.419921875,0.35546875,0.3232421875,0.3447265625,0.4150390625,0.5,0.5576171875,0.5693359375,0.5556640625,0.5048828125,0.4345703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.6943359375,0.6630859375,0.6103515625,0.5693359375,0.5595703125,0.5673828125,0.6005859375,0.638671875,0.650390625,0.6220703125,0.560546875,0.4892578125,0.421875,0.3798828125,0.3857421875,0.4375,0.5087890625,0.55859375,0.5693359375,0.5673828125,0.5634765625,0.5595703125,0.5576171875,0.556640625,0.5576171875,0.5595703125,0.55859375,0.544921875,0.517578125,0.4833984375,0.4521484375,0.4345703125,0.4296875,0.427734375,0.42578125,0.4228515625,0.4208984375,0.419921875,0.419921875,0.419921875,0.4296875,0.47265625,0.529296875,0.564453125,0.556640625,0.5078125,0.439453125,0.365234375,0.2890625,0.25390625,0.2900390625,0.38671875,0.49609375,0.5791015625,0.6552734375,0.7333984375,0.7685546875,0.7314453125,0.6337890625,0.5224609375,0.439453125,0.380859375,0.3779296875,0.4326171875,0.5107421875,0.5673828125,0.56640625,0.509765625,0.431640625,0.33984375,0.2744140625,0.2744140625,0.33984375,0.431640625,0.509765625,0.568359375,0.578125,0.5380859375,0.4765625,0.4345703125,0.443359375,0.5,0.556640625,0.5654296875,0.52734375,0.470703125,0.435546875,0.44921875,0.509765625,0.5693359375,0.5810546875,0.541015625,0.4794921875,0.4365234375,0.443359375,0.5,0.57421875,0.6552734375,0.703125,0.6845703125,0.60546875,0.5078125,0.4296875,0.3759765625,0.384765625,0.45703125,0.552734375,0.6220703125,0.6259765625,0.5693359375,0.5,0.4482421875,0.4375,0.470703125,0.5263671875,0.5693359375,0.5791015625,0.5693359375,0.5283203125,0.4765625,0.447265625,0.4599609375,0.5107421875,0.5791015625,0.64453125,0.6796875,0.6630859375,0.5966796875,0.513671875,0.4541015625,0.439453125,0.4375,0.435546875,0.4345703125,0.4345703125,0.435546875,0.4375,0.439453125,0.4541015625,0.5146484375,0.599609375,0.666015625,0.6826171875,0.646484375,0.5791015625,0.4970703125,0.3876953125,0.2919921875,0.2568359375,0.2919921875,0.3662109375,0.439453125,0.5,0.525390625,0.5166015625,0.4931640625,0.4833984375,0.5087890625,0.5693359375,0.6318359375,0.6640625,0.64453125,0.578125,0.49609375,0.4404296875,0.4296875,0.423828125,0.3935546875,0.359375,0.3505859375,0.3798828125,0.439453125,0.509765625,0.576171875,0.619140625,0.6162109375,0.568359375,0.5,0.451171875,0.439453125,0.4326171875,0.40625,0.380859375,0.3828125,0.4228515625,0.48828125,0.5595703125,0.6181640625,0.62890625,0.591796875,0.533203125,0.4931640625,0.5029296875,0.5595703125,0.61328125,0.607421875,0.541015625,0.4482421875,0.380859375,0.3759765625,0.4296875,0.4990234375,0.5654296875,0.607421875,0.615234375,0.595703125,0.57421875,0.5693359375,0.5791015625,0.6123046875,0.6484375,0.6572265625,0.6240234375,0.5615234375,0.4892578125,0.41796875,0.3564453125,0.326171875,0.3369140625,0.375,0.41015625,0.419921875,0.4248046875,0.4453125,0.4814453125,0.5234375,0.5576171875,0.576171875,0.5791015625,0.5791015625,0.5791015625,0.578125,0.576171875,0.5732421875,0.5712890625,0.5693359375,0.5546875,0.494140625,0.408203125,0.33984375,0.3212890625,0.3544921875,0.419921875,0.48828125,0.5390625,0.5517578125,0.5224609375,0.470703125,0.4296875,0.419921875,0.412109375,0.3818359375,0.3486328125,0.3408203125,0.37109375,0.4306640625,0.5,0.55859375,0.5771484375,0.5556640625,0.517578125,0.498046875,0.5185546875,0.5791015625,0.6435546875,0.67578125,0.6533203125,0.5810546875,0.4931640625,0.43359375,0.419921875,0.419921875,0.4228515625,0.4267578125,0.4326171875,0.4365234375,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.451171875,0.4990234375,0.5634765625,0.6064453125,0.6044921875,0.55859375,0.4892578125,0.412109375,0.328125,0.279296875,0.2998046875,0.380859375,0.4814453125,0.5595703125,0.6318359375,0.7060546875,0.740234375,0.7041015625,0.6083984375,0.5009765625,0.419921875,0.35546875,0.322265625,0.3408203125,0.408203125,0.4912109375,0.5478515625,0.5595703125,0.5654296875,0.595703125,0.630859375,0.6416015625,0.615234375,0.5576171875,0.4892578125,0.4150390625,0.3330078125,0.2841796875,0.3046875,0.38671875,0.48828125,0.5693359375,0.6357421875,0.6689453125,0.6474609375,0.5771484375,0.490234375,0.431640625,0.419921875,0.412109375,0.3720703125,0.3203125,0.2900390625,0.3017578125,0.3515625,0.419921875,0.48046875,0.5009765625,0.4814453125,0.443359375,0.421875,0.4404296875,0.5,0.564453125,0.6044921875,0.599609375,0.5498046875,0.48046875,0.4306640625,0.419921875,0.419921875,0.4228515625,0.4267578125,0.4326171875,0.4365234375,0.439453125,0.439453125,0.4326171875,0.4052734375,0.37890625,0.3798828125,0.419921875,0.486328125,0.5595703125,0.638671875,0.7333984375,0.7998046875,0.7998046875,0.7333984375,0.638671875,0.5595703125,0.4892578125,0.435546875,0.421875,0.451171875,0.5048828125,0.5478515625,0.5595703125,0.5498046875,0.5,0.431640625,0.3818359375,0.37890625,0.421875,0.4892578125,0.560546875,0.6220703125,0.65234375,0.6416015625,0.6064453125,0.576171875,0.5693359375,0.5810546875,0.6240234375,0.6787109375,0.7099609375,0.6982421875,0.6474609375,0.5791015625,0.5107421875,0.4599609375,0.447265625,0.4765625,0.5283203125,0.5693359375,0.5791015625,0.5869140625,0.6201171875,0.65625,0.6669921875,0.638671875,0.5791015625,0.509765625,0.4521484375,0.4462890625,0.49609375,0.5673828125,0.6181640625,0.615234375,0.5595703125,0.4814453125,0.3837890625,0.3046875,0.2861328125,0.333984375,0.4150390625,0.4892578125,0.568359375,0.6689453125,0.7529296875,0.775390625,0.7294921875,0.646484375,0.5693359375,0.505859375,0.4775390625,0.484375,0.5048828125,0.51171875,0.4833984375,0.419921875,0.36328125,0.3681640625,0.439453125,0.5380859375,0.6123046875,0.6220703125,0.5693359375,0.5,0.4326171875,0.3876953125,0.3779296875,0.39453125,0.4150390625,0.419921875,0.4296875,0.48046875,0.552734375,0.6064453125,0.6142578125,0.5751953125,0.509765625,0.44921875,0.4306640625,0.4541015625,0.4951171875,0.5185546875,0.5,0.439453125,0.36328125,0.27734375,0.22265625,0.236328125,0.3125,0.41015625,0.4892578125,0.5693359375,0.671875,0.755859375,0.7783203125,0.73046875,0.646484375,0.5693359375,0.5078125,0.4892578125,0.5146484375,0.55859375,0.5859375,0.5693359375,0.509765625,0.4521484375,0.4482421875,0.498046875,0.5703125,0.62109375,0.6162109375,0.5595703125,0.48828125,0.4228515625,0.3828125,0.380859375,0.40625,0.4326171875,0.439453125,0.431640625,0.3994140625,0.3623046875,0.69921875,0.6640625,0.6142578125,0.578125,0.5703125,0.5771484375,0.6044921875,0.6298828125,0.6279296875,0.587890625,0.5205078125,0.4482421875,0.3837890625,0.3583984375,0.3916015625,0.47265625,0.5625,0.6181640625,0.6220703125,0.609375,0.5888671875,0.568359375,0.5546875,0.552734375,0.5595703125,0.5703125,0.5771484375,0.5673828125,0.5341796875,0.4833984375,0.4306640625,0.3935546875,0.376953125,0.3662109375,0.3525390625,0.3388671875,0.3291015625,0.3251953125,0.3251953125,0.3251953125,0.3369140625,0.384765625,0.453125,0.5068359375,0.5185546875,0.486328125,0.4287109375,0.365234375,0.30859375,0.2978515625,0.3583984375,0.4716796875,0.58984375,0.673828125,0.7470703125,0.8115234375,0.82421875,0.759765625,0.638671875,0.5146484375,0.4287109375,0.37109375,0.369140625,0.4287109375,0.5166015625,0.5859375,0.59765625,0.55078125,0.4833984375,0.40234375,0.345703125,0.345703125,0.40234375,0.4833984375,0.55078125,0.6025390625,0.611328125,0.5732421875,0.51171875,0.46484375,0.4599609375,0.5,0.5400390625,0.5419921875,0.509765625,0.4716796875,0.4580078125,0.4873046875,0.55078125,0.6123046875,0.62890625,0.5927734375,0.52734375,0.4716796875,0.4609375,0.5,0.5537109375,0.60546875,0.6259765625,0.5927734375,0.5185546875,0.4365234375,0.376953125,0.34375,0.3779296875,0.4765625,0.5927734375,0.671875,0.6787109375,0.6220703125,0.552734375,0.5068359375,0.5048828125,0.548828125,0.6142578125,0.662109375,0.673828125,0.6650390625,0.62890625,0.5830078125,0.5576171875,0.5693359375,0.61328125,0.673828125,0.728515625,0.75,0.71484375,0.6279296875,0.5263671875,0.453125,0.4287109375,0.4169921875,0.404296875,0.39453125,0.39453125,0.404296875,0.4169921875,0.4287109375,0.455078125,0.5341796875,0.6435546875,0.734375,0.767578125,0.7392578125,0.673828125,0.5908203125,0.4794921875,0.373046875,0.3173828125,0.326171875,0.375,0.4287109375,0.4755859375,0.5068359375,0.521484375,0.529296875,0.5439453125,0.5751953125,0.6220703125,0.6640625,0.666015625,0.61328125,0.5224609375,0.431640625,0.3798828125,0.376953125,0.3828125,0.3759765625,0.37109375,0.38671875,0.4287109375,0.4892578125,0.55078125,0.6083984375,0.6376953125,0.6220703125,0.5634765625,0.4912109375,0.4404296875,0.4287109375,0.423828125,0.4052734375,0.390625,0.40234375,0.4453125,0.5068359375,0.5703125,0.623046875,0.6376953125,0.611328125,0.5634765625,0.52734375,0.529296875,0.5703125,0.6083984375,0.591796875,0.5205078125,0.4267578125,0.35546875,0.3388671875,0.376953125,0.4306640625,0.4921875,0.5478515625,0.5869140625,0.60546875,0.61328125,0.6220703125,0.6376953125,0.666015625,0.6826171875,0.662109375,0.6025390625,0.5234375,0.4482421875,0.3740234375,0.30078125,0.251953125,0.24609375,0.2744140625,0.30859375,0.3251953125,0.34375,0.3935546875,0.4736328125,0.560546875,0.630859375,0.6669921875,0.673828125,0.673828125,0.673828125,0.669921875,0.66015625,0.646484375,0.6328125,0.6220703125,0.595703125,0.5166015625,0.4033203125,0.3037109375,0.2568359375,0.271484375,0.3251953125,0.3857421875,0.4296875,0.44140625,0.416015625,0.3701171875,0.333984375,0.3251953125,0.322265625,0.314453125,0.314453125,0.3388671875,0.3876953125,0.4462890625,0.5,0.544921875,0.5673828125,0.5703125,0.568359375,0.580078125,0.6171875,0.673828125,0.724609375,0.7275390625,0.6611328125,0.5439453125,0.419921875,0.341796875,0.3251953125,0.328125,0.3408203125,0.36328125,0.390625,0.4140625,0.4267578125,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.439453125,0.4833984375,0.541015625,0.576171875,0.5673828125,0.517578125,0.4482421875,0.3740234375,0.306640625,0.2822265625,0.3232421875,0.4140625,0.5078125,0.5703125,0.6220703125,0.666015625,0.666015625,0.6064453125,0.501953125,0.3984375,0.3251953125,0.2734375,0.263671875,0.314453125,0.41015625,0.5078125,0.5654296875,0.5703125,0.564453125,0.5712890625,0.580078125,0.57421875,0.544921875,0.4990234375,0.4482421875,0.392578125,0.3349609375,0.310546875,0.34765625,0.4375,0.541015625,0.6220703125,0.68359375,0.693359375,0.6328125,0.5205078125,0.40234375,0.33203125,0.3251953125,0.3271484375,0.298828125,0.2548828125,0.224609375,0.228515625,0.267578125,0.3251953125,0.3818359375,0.4189453125,0.4306640625,0.4287109375,0.431640625,0.4541015625,0.5,0.544921875,0.5615234375,0.5322265625,0.4638671875,0.3876953125,0.3369140625,0.3251953125,0.328125,0.3408203125,0.36328125,0.390625,0.4140625,0.4267578125,0.4287109375,0.421875,0.3974609375,0.3759765625,0.3828125,0.427734375,0.4970703125,0.5703125,0.6494140625,0.744140625,0.810546875,0.810546875,0.744140625,0.6494140625,0.5703125,0.4990234375,0.4404296875,0.4189453125,0.4453125,0.5009765625,0.5498046875,0.5703125,0.5673828125,0.5185546875,0.439453125,0.3720703125,0.3505859375,0.3828125,0.4482421875,0.5205078125,0.587890625,0.6318359375,0.6435546875,0.630859375,0.6171875,0.6220703125,0.6416015625,0.69140625,0.75,0.78515625,0.7783203125,0.7333984375,0.673828125,0.61328125,0.5693359375,0.5576171875,0.5830078125,0.62890625,0.6650390625,0.673828125,0.6787109375,0.7001953125,0.71875,0.7119140625,0.673828125,0.61328125,0.55078125,0.4990234375,0.486328125,0.5166015625,0.5693359375,0.6103515625,0.6103515625,0.5703125,0.5107421875,0.4287109375,0.3544921875,0.322265625,0.341796875,0.3935546875,0.4482421875,0.51171875,0.611328125,0.712890625,0.767578125,0.755859375,0.6943359375,0.6220703125,0.5546875,0.5087890625,0.482421875,0.46484375,0.439453125,0.392578125,0.3251953125,0.26953125,0.283203125,0.3740234375,0.50390625,0.6142578125,0.654296875,0.6220703125,0.56640625,0.5,0.431640625,0.3798828125,0.349609375,0.3359375,0.3251953125,0.3291015625,0.384765625,0.478515625,0.5693359375,0.615234375,0.6044921875,0.55078125,0.4970703125,0.4736328125,0.48046875,0.5,0.5068359375,0.4833984375,0.4287109375,0.361328125,0.283203125,0.23046875,0.2353515625,0.296875,0.37890625,0.4482421875,0.521484375,0.62890625,0.732421875,0.783203125,0.7626953125,0.6962890625,0.6220703125,0.55859375,0.533203125,0.5498046875,0.587890625,0.6142578125,0.6025390625,0.55078125,0.5,0.4931640625,0.5322265625,0.5888671875,0.6279296875,0.62109375,0.5703125,0.5068359375,0.4453125,0.40234375,0.390625,0.4052734375,0.423828125,0.4287109375,0.4228515625,0.40234375,0.3837890625,0.6318359375,0.5966796875,0.55859375,0.53515625,0.5302734375,0.537109375,0.5615234375,0.5849609375,0.580078125,0.5361328125,0.4677734375,0.39453125,0.333984375,0.326171875,0.3857421875,0.4912109375,0.59375,0.6455078125,0.634765625,0.603515625,0.5556640625,0.5078125,0.48046875,0.4814453125,0.5029296875,0.5302734375,0.5556640625,0.5703125,0.5576171875,0.513671875,0.4521484375,0.3974609375,0.3642578125,0.3359375,0.3037109375,0.275390625,0.2587890625,0.2548828125,0.2578125,0.2587890625,0.2705078125,0.322265625,0.40234375,0.4775390625,0.515625,0.5087890625,0.46875,0.421875,0.3798828125,0.3779296875,0.4384765625,0.5458984375,0.6572265625,0.740234375,0.8134765625,0.875,0.880859375,0.8095703125,0.6826171875,0.5556640625,0.46875,0.4091796875,0.3994140625,0.4501953125,0.53515625,0.6103515625,0.6357421875,0.6044921875,0.5546875,0.4951171875,0.4521484375,0.4521484375,0.4951171875,0.5546875,0.6044921875,0.6435546875,0.6533203125,0.6240234375,0.568359375,0.5146484375,0.490234375,0.5,0.5107421875,0.4951171875,0.46875,0.4580078125,0.48046875,0.53515625,0.6044921875,0.6689453125,0.6982421875,0.673828125,0.607421875,0.5341796875,0.4931640625,0.5,0.517578125,0.525390625,0.513671875,0.4775390625,0.4296875,0.388671875,0.3642578125,0.3623046875,0.4228515625,0.533203125,0.642578125,0.7041015625,0.6953125,0.634765625,0.5673828125,0.5283203125,0.5380859375,0.5966796875,0.6728515625,0.7275390625,0.740234375,0.7333984375,0.70703125,0.673828125,0.654296875,0.6630859375,0.6962890625,0.740234375,0.78125,0.796875,0.7646484375,0.685546875,0.5859375,0.5078125,0.46875,0.439453125,0.4052734375,0.380859375,0.380859375,0.4052734375,0.439453125,0.46875,0.5107421875,0.60546875,0.7236328125,0.814453125,0.841796875,0.8076171875,0.740234375,0.6611328125,0.5654296875,0.4775390625,0.427734375,0.4248046875,0.447265625,0.46875,0.4892578125,0.51171875,0.5380859375,0.56640625,0.5927734375,0.615234375,0.634765625,0.6435546875,0.609375,0.5322265625,0.44140625,0.3720703125,0.34765625,0.3642578125,0.388671875,0.4111328125,0.435546875,0.46875,0.51171875,0.55859375,0.6044921875,0.6455078125,0.662109375,0.640625,0.5849609375,0.521484375,0.478515625,0.46875,0.4638671875,0.4453125,0.4248046875,0.421875,0.443359375,0.484375,0.5302734375,0.5712890625,0.59375,0.587890625,0.560546875,0.5302734375,0.517578125,0.5302734375,0.5419921875,0.5244140625,0.4765625,0.4169921875,0.369140625,0.3525390625,0.3642578125,0.384765625,0.4169921875,0.4609375,0.513671875,0.564453125,0.60546875,0.634765625,0.6650390625,0.697265625,0.701171875,0.6572265625,0.5703125,0.4736328125,0.39453125,0.3173828125,0.2333984375,0.1708984375,0.154296875,0.181640625,0.2265625,0.2587890625,0.2958984375,0.373046875,0.4853515625,0.6015625,0.689453125,0.732421875,0.740234375,0.7412109375,0.744140625,0.740234375,0.7236328125,0.6953125,0.6630859375,0.634765625,0.5947265625,0.5029296875,0.3798828125,0.2734375,0.216796875,0.2197265625,0.2587890625,0.302734375,0.3359375,0.3447265625,0.3251953125,0.2919921875,0.265625,0.2587890625,0.26171875,0.2802734375,0.3193359375,0.375,0.4326171875,0.4755859375,0.5,0.517578125,0.5341796875,0.5576171875,0.59375,0.6416015625,0.693359375,0.740234375,0.7734375,0.748046875,0.6484375,0.501953125,0.361328125,0.2763671875,0.2587890625,0.263671875,0.2890625,0.3359375,0.3916015625,0.4384765625,0.4638671875,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.4775390625,0.509765625,0.546875,0.5576171875,0.52734375,0.4658203125,0.39453125,0.3251953125,0.2783203125,0.28125,0.3388671875,0.4267578125,0.498046875,0.5302734375,0.5478515625,0.5556640625,0.5322265625,0.4716796875,0.388671875,0.3115234375,0.2587890625,0.224609375,0.240234375,0.3115234375,0.4140625,0.5029296875,0.54296875,0.5302734375,0.50390625,0.478515625,0.4580078125,0.44140625,0.427734375,0.412109375,0.39453125,0.3720703125,0.345703125,0.341796875,0.3828125,0.4638671875,0.556640625,0.634765625,0.6923828125,0.68359375,0.59375,0.4521484375,0.3203125,0.251953125,0.2587890625,0.2783203125,0.271484375,0.2421875,0.2119140625,0.201171875,0.21875,0.2587890625,0.3056640625,0.357421875,0.4052734375,0.44140625,0.46484375,0.4814453125,0.5,0.5126953125,0.4970703125,0.447265625,0.375,0.3076171875,0.267578125,0.2587890625,0.263671875,0.2890625,0.3359375,0.3916015625,0.4384765625,0.4638671875,0.46875,0.4609375,0.4267578125,0.38671875,0.3720703125,0.3984375,0.458984375,0.5302734375,0.609375,0.7041015625,0.7705078125,0.7705078125,0.7041015625,0.609375,0.5302734375,0.4560546875,0.388671875,0.35546875,0.375,0.43359375,0.494140625,0.5302734375,0.5419921875,0.50390625,0.4248046875,0.34765625,0.310546875,0.3310546875,0.39453125,0.4658203125,0.5322265625,0.580078125,0.6015625,0.6064453125,0.61328125,0.634765625,0.6689453125,0.7275390625,0.7900390625,0.826171875,0.8212890625,0.78515625,0.740234375,0.6962890625,0.6630859375,0.654296875,0.673828125,0.70703125,0.7333984375,0.740234375,0.7431640625,0.7529296875,0.7568359375,0.740234375,0.701171875,0.65234375,0.6044921875,0.5615234375,0.5302734375,0.51953125,0.5263671875,0.5400390625,0.5439453125,0.5302734375,0.505859375,0.4638671875,0.416015625,0.380859375,0.3681640625,0.376953125,0.39453125,0.4287109375,0.5126953125,0.6240234375,0.7099609375,0.736328125,0.7021484375,0.634765625,0.56640625,0.509765625,0.4658203125,0.427734375,0.3837890625,0.3271484375,0.2587890625,0.2001953125,0.205078125,0.2900390625,0.427734375,0.5615234375,0.634765625,0.634765625,0.611328125,0.5673828125,0.5,0.4189453125,0.3447265625,0.291015625,0.2587890625,0.248046875,0.296875,0.40234375,0.5244140625,0.61328125,0.63671875,0.6044921875,0.5634765625,0.5400390625,0.53515625,0.5380859375,0.533203125,0.509765625,0.46875,0.4169921875,0.3486328125,0.2900390625,0.26953125,0.294921875,0.345703125,0.39453125,0.4541015625,0.55859375,0.673828125,0.748046875,0.7548828125,0.705078125,0.634765625,0.5703125,0.541015625,0.5546875,0.5966796875,0.634765625,0.6396484375,0.6044921875,0.5654296875,0.548828125,0.5576171875,0.576171875,0.5849609375,0.5693359375,0.5302734375,0.484375,0.443359375,0.421875,0.4248046875,0.4453125,0.4638671875,0.46875,0.4658203125,0.4560546875,0.4521484375,0.5185546875,0.4912109375,0.4755859375,0.4697265625,0.46875,0.4765625,0.505859375,0.53515625,0.5380859375,0.5009765625,0.4365234375,0.3642578125,0.306640625,0.3095703125,0.3837890625,0.4970703125,0.595703125,0.6328125,0.6044921875,0.55078125,0.4755859375,0.40234375,0.3671875,0.37890625,0.421875,0.46875,0.517578125,0.568359375,0.59375,0.57421875,0.5146484375,0.4462890625,0.39453125,0.3466796875,0.2978515625,0.2587890625,0.2421875,0.24609375,0.255859375,0.2587890625,0.2685546875,0.3173828125,0.3974609375,0.48046875,0.53515625,0.548828125,0.5302734375,0.4990234375,0.4638671875,0.4521484375,0.48828125,0.568359375,0.662109375,0.740234375,0.814453125,0.8837890625,0.9033203125,0.84765625,0.734375,0.6142578125,0.5302734375,0.4658203125,0.44140625,0.4716796875,0.541015625,0.61328125,0.6484375,0.634765625,0.60546875,0.5712890625,0.546875,0.546875,0.5712890625,0.60546875,0.634765625,0.66015625,0.673828125,0.6630859375,0.6240234375,0.5703125,0.5244140625,0.5,0.474609375,0.435546875,0.408203125,0.421875,0.4794921875,0.5595703125,0.634765625,0.7041015625,0.7509765625,0.748046875,0.6904296875,0.603515625,0.53125,0.5,0.4755859375,0.4384765625,0.3974609375,0.369140625,0.36328125,0.3759765625,0.39453125,0.427734375,0.5087890625,0.6123046875,0.6904296875,0.7099609375,0.671875,0.6044921875,0.5380859375,0.501953125,0.5185546875,0.5849609375,0.6689453125,0.7265625,0.740234375,0.736328125,0.720703125,0.701171875,0.6904296875,0.6953125,0.71484375,0.740234375,0.767578125,0.787109375,0.779296875,0.7314453125,0.65625,0.58203125,0.5302734375,0.4794921875,0.419921875,0.3779296875,0.3779296875,0.419921875,0.4794921875,0.5302734375,0.5888671875,0.689453125,0.7978515625,0.8642578125,0.8642578125,0.8115234375,0.740234375,0.66796875,0.6015625,0.5546875,0.5380859375,0.541015625,0.54296875,0.5302734375,0.515625,0.5224609375,0.5498046875,0.5849609375,0.6123046875,0.619140625,0.6044921875,0.5751953125,0.5087890625,0.4248046875,0.3583984375,0.333984375,0.3525390625,0.39453125,0.4404296875,0.4873046875,0.5302734375,0.5634765625,0.587890625,0.6103515625,0.634765625,0.658203125,0.6650390625,0.646484375,0.607421875,0.564453125,0.5361328125,0.5302734375,0.5244140625,0.501953125,0.46875,0.44140625,0.4326171875,0.4453125,0.46875,0.4970703125,0.52734375,0.546875,0.5439453125,0.5205078125,0.4912109375,0.46875,0.451171875,0.439453125,0.43359375,0.4296875,0.423828125,0.412109375,0.39453125,0.375,0.3603515625,0.369140625,0.4140625,0.4833984375,0.552734375,0.6044921875,0.6533203125,0.6982421875,0.70703125,0.654296875,0.5537109375,0.4453125,0.3642578125,0.28515625,0.1943359375,0.123046875,0.1064453125,0.1455078125,0.20703125,0.2587890625,0.314453125,0.40625,0.521484375,0.6298828125,0.703125,0.7353515625,0.740234375,0.7431640625,0.7529296875,0.7568359375,0.740234375,0.701171875,0.65234375,0.6044921875,0.548828125,0.4580078125,0.353515625,0.26953125,0.2314453125,0.2353515625,0.2587890625,0.2841796875,0.3037109375,0.30859375,0.2978515625,0.2783203125,0.2626953125,0.2587890625,0.267578125,0.3076171875,0.375,0.447265625,0.4970703125,0.5126953125,0.5,0.4833984375,0.4833984375,0.513671875,0.57421875,0.646484375,0.7060546875,0.740234375,0.7548828125,0.7158203125,0.61328125,0.474609375,0.34765625,0.2734375,0.2587890625,0.265625,0.2978515625,0.3583984375,0.4306640625,0.490234375,0.5234375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5361328125,0.5576171875,0.57421875,0.560546875,0.509765625,0.4375,0.3642578125,0.2998046875,0.2705078125,0.294921875,0.361328125,0.4345703125,0.4755859375,0.46875,0.44921875,0.42578125,0.39453125,0.3583984375,0.3203125,0.287109375,0.2587890625,0.244140625,0.27734375,0.3525390625,0.4384765625,0.4970703125,0.5048828125,0.46875,0.419921875,0.36328125,0.3173828125,0.30078125,0.314453125,0.341796875,0.3642578125,0.3779296875,0.3798828125,0.3828125,0.408203125,0.4609375,0.5322265625,0.6044921875,0.66015625,0.64453125,0.546875,0.4052734375,0.283203125,0.232421875,0.2587890625,0.2998046875,0.3173828125,0.3056640625,0.275390625,0.2470703125,0.2392578125,0.2587890625,0.29296875,0.3525390625,0.4248046875,0.4853515625,0.515625,0.515625,0.5,0.4755859375,0.4326171875,0.375,0.3193359375,0.2802734375,0.26171875,0.2587890625,0.265625,0.2978515625,0.3583984375,0.4306640625,0.490234375,0.5234375,0.5302734375,0.5185546875,0.4697265625,0.40234375,0.3564453125,0.35546875,0.400390625,0.46875,0.548828125,0.642578125,0.7099609375,0.7099609375,0.642578125,0.548828125,0.46875,0.3935546875,0.314453125,0.267578125,0.2783203125,0.33984375,0.4150390625,0.46875,0.5009765625,0.4794921875,0.4111328125,0.333984375,0.2900390625,0.302734375,0.3642578125,0.43359375,0.48828125,0.521484375,0.53515625,0.5439453125,0.564453125,0.6044921875,0.6552734375,0.720703125,0.7783203125,0.806640625,0.7978515625,0.7685546875,0.740234375,0.71484375,0.6953125,0.6904296875,0.701171875,0.720703125,0.736328125,0.740234375,0.7412109375,0.744140625,0.740234375,0.7236328125,0.6953125,0.6630859375,0.634765625,0.6025390625,0.552734375,0.49609375,0.4560546875,0.44140625,0.451171875,0.46875,0.4873046875,0.5,0.494140625,0.4658203125,0.4248046875,0.3876953125,0.3642578125,0.361328125,0.41796875,0.521484375,0.6240234375,0.6787109375,0.666015625,0.6044921875,0.537109375,0.484375,0.447265625,0.416015625,0.3798828125,0.3271484375,0.2587890625,0.1943359375,0.1728515625,0.22265625,0.3369140625,0.470703125,0.568359375,0.6044921875,0.62109375,0.619140625,0.580078125,0.4990234375,0.3994140625,0.3134765625,0.2587890625,0.2275390625,0.2548828125,0.3505859375,0.48046875,0.5927734375,0.6455078125,0.634765625,0.6103515625,0.59375,0.5849609375,0.580078125,0.5712890625,0.5546875,0.5302734375,0.4970703125,0.4423828125,0.3798828125,0.3369140625,0.32421875,0.3388671875,0.3642578125,0.4052734375,0.4951171875,0.607421875,0.6904296875,0.7109375,0.6728515625,0.6044921875,0.5390625,0.505859375,0.5185546875,0.568359375,0.6240234375,0.650390625,0.634765625,0.609375,0.5849609375,0.5625,0.541015625,0.51953125,0.4951171875,0.46875,0.4453125,0.4326171875,0.44140625,0.46875,0.501953125,0.5244140625,0.5302734375,0.5283203125,0.5263671875,0.5302734375,0.41015625,0.3994140625,0.41015625,0.4248046875,0.4287109375,0.4375,0.4736328125,0.5146484375,0.5322265625,0.5068359375,0.4482421875,0.376953125,0.3203125,0.32421875,0.3955078125,0.498046875,0.5791015625,0.5966796875,0.55078125,0.48046875,0.384765625,0.30078125,0.2685546875,0.2978515625,0.36328125,0.4287109375,0.498046875,0.580078125,0.6416015625,0.646484375,0.59375,0.515625,0.4482421875,0.3857421875,0.3251953125,0.287109375,0.2802734375,0.298828125,0.3203125,0.3251953125,0.3330078125,0.3681640625,0.4306640625,0.5,0.552734375,0.57421875,0.5703125,0.552734375,0.515625,0.4833984375,0.484375,0.5283203125,0.599609375,0.673828125,0.7509765625,0.83203125,0.8759765625,0.8486328125,0.7587890625,0.65234375,0.5703125,0.5029296875,0.462890625,0.46875,0.517578125,0.580078125,0.62109375,0.6220703125,0.6103515625,0.5966796875,0.5869140625,0.5869140625,0.5966796875,0.6103515625,0.6220703125,0.6357421875,0.658203125,0.6708984375,0.65625,0.611328125,0.5537109375,0.5,0.4423828125,0.37890625,0.3427734375,0.3662109375,0.4453125,0.5419921875,0.6220703125,0.6953125,0.7626953125,0.787109375,0.74609375,0.6552734375,0.5615234375,0.5,0.44140625,0.3681640625,0.3095703125,0.2958984375,0.33203125,0.392578125,0.4482421875,0.509765625,0.6015625,0.6875,0.7236328125,0.6953125,0.6259765625,0.55078125,0.484375,0.4462890625,0.4609375,0.5234375,0.6044921875,0.66015625,0.673828125,0.671875,0.666015625,0.658203125,0.6533203125,0.6552734375,0.6630859375,0.673828125,0.689453125,0.720703125,0.7451171875,0.7392578125,0.697265625,0.6337890625,0.5703125,0.501953125,0.4208984375,0.3642578125,0.3642578125,0.4208984375,0.501953125,0.5703125,0.6416015625,0.7412109375,0.8291015625,0.8603515625,0.8251953125,0.7490234375,0.673828125,0.6083984375,0.5732421875,0.57421875,0.599609375,0.6201171875,0.6123046875,0.5703125,0.52734375,0.517578125,0.5419921875,0.580078125,0.6044921875,0.59375,0.55078125,0.490234375,0.4052734375,0.3271484375,0.294921875,0.3212890625,0.3837890625,0.4482421875,0.509765625,0.5703125,0.6123046875,0.6279296875,0.623046875,0.6162109375,0.6220703125,0.630859375,0.6318359375,0.6220703125,0.6044921875,0.5849609375,0.572265625,0.5703125,0.5654296875,0.5419921875,0.5029296875,0.4609375,0.431640625,0.421875,0.4287109375,0.4462890625,0.4833984375,0.5234375,0.5400390625,0.5234375,0.48046875,0.4287109375,0.38671875,0.3818359375,0.4140625,0.462890625,0.4951171875,0.490234375,0.4482421875,0.392578125,0.33203125,0.2998046875,0.322265625,0.39453125,0.482421875,0.55078125,0.6171875,0.6826171875,0.7080078125,0.6669921875,0.5693359375,0.4599609375,0.376953125,0.2978515625,0.203125,0.1328125,0.1240234375,0.1767578125,0.2568359375,0.3251953125,0.3935546875,0.48046875,0.5693359375,0.6357421875,0.6669921875,0.673828125,0.673828125,0.6787109375,0.7001953125,0.71875,0.7119140625,0.673828125,0.61328125,0.55078125,0.484375,0.40625,0.3369140625,0.298828125,0.296875,0.3125,0.3251953125,0.3359375,0.34375,0.345703125,0.3408203125,0.3330078125,0.3271484375,0.3251953125,0.3369140625,0.3876953125,0.4638671875,0.5322265625,0.5615234375,0.544921875,0.5,0.4521484375,0.4306640625,0.4521484375,0.5146484375,0.59375,0.65234375,0.673828125,0.67578125,0.640625,0.5654296875,0.46875,0.3837890625,0.3349609375,0.3251953125,0.3310546875,0.361328125,0.416015625,0.48046875,0.5341796875,0.564453125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5751953125,0.59375,0.6044921875,0.583984375,0.52734375,0.451171875,0.376953125,0.3154296875,0.2998046875,0.3359375,0.4013671875,0.45703125,0.4677734375,0.4287109375,0.37890625,0.3349609375,0.3095703125,0.30859375,0.3212890625,0.3310546875,0.3251953125,0.326171875,0.3671875,0.43359375,0.4912109375,0.5107421875,0.484375,0.4287109375,0.361328125,0.2802734375,0.2197265625,0.2099609375,0.25390625,0.3203125,0.376953125,0.4208984375,0.4375,0.4326171875,0.4267578125,0.4404296875,0.484375,0.55078125,0.607421875,0.5966796875,0.513671875,0.3974609375,0.3056640625,0.28125,0.3251953125,0.3837890625,0.4228515625,0.4267578125,0.3955078125,0.3525390625,0.32421875,0.3251953125,0.3466796875,0.4052734375,0.484375,0.546875,0.568359375,0.546875,0.5,0.4462890625,0.3876953125,0.3388671875,0.314453125,0.314453125,0.322265625,0.3251953125,0.3310546875,0.361328125,0.416015625,0.48046875,0.5341796875,0.564453125,0.5703125,0.556640625,0.498046875,0.4130859375,0.345703125,0.3271484375,0.3623046875,0.4287109375,0.5087890625,0.6025390625,0.669921875,0.669921875,0.6025390625,0.5087890625,0.4287109375,0.3505859375,0.2626953125,0.2041015625,0.2080078125,0.2724609375,0.359375,0.4287109375,0.4775390625,0.474609375,0.4208984375,0.3505859375,0.306640625,0.3173828125,0.376953125,0.4423828125,0.48046875,0.4873046875,0.4765625,0.4736328125,0.4970703125,0.55078125,0.615234375,0.6806640625,0.7275390625,0.73828125,0.7177734375,0.689453125,0.673828125,0.6630859375,0.6552734375,0.6533203125,0.658203125,0.666015625,0.671875,0.673828125,0.673828125,0.673828125,0.669921875,0.66015625,0.646484375,0.6328125,0.6220703125,0.599609375,0.5390625,0.4560546875,0.388671875,0.3623046875,0.3828125,0.4287109375,0.484375,0.544921875,0.5810546875,0.5673828125,0.5087890625,0.435546875,0.376953125,0.341796875,0.3671875,0.4501953125,0.5478515625,0.611328125,0.609375,0.55078125,0.486328125,0.4482421875,0.4375,0.439453125,0.4287109375,0.390625,0.3251953125,0.25390625,0.19921875,0.1982421875,0.2666015625,0.3798828125,0.486328125,0.55078125,0.6044921875,0.6494140625,0.654296875,0.599609375,0.4990234375,0.3974609375,0.3251953125,0.2744140625,0.271484375,0.333984375,0.4423828125,0.552734375,0.6162109375,0.6220703125,0.6123046875,0.6044921875,0.5986328125,0.59375,0.587890625,0.580078125,0.5703125,0.5537109375,0.5166015625,0.4638671875,0.4130859375,0.3798828125,0.3701171875,0.376953125,0.4013671875,0.4716796875,0.56640625,0.6376953125,0.6552734375,0.6181640625,0.55078125,0.484375,0.4462890625,0.45703125,0.509765625,0.5771484375,0.6201171875,0.6220703125,0.6083984375,0.583984375,0.546875,0.50390625,0.466796875,0.4423828125,0.4287109375,0.421875,0.431640625,0.4609375,0.5029296875,0.5419921875,0.5654296875,0.5703125,0.5693359375,0.5703125,0.57421875,0.3544921875,0.365234375,0.400390625,0.431640625,0.439453125,0.44921875,0.490234375,0.541015625,0.5693359375,0.5537109375,0.5,0.4296875,0.37109375,0.369140625,0.4267578125,0.5078125,0.5654296875,0.5654296875,0.509765625,0.4296875,0.3291015625,0.2490234375,0.23046875,0.2802734375,0.36328125,0.439453125,0.5185546875,0.6171875,0.693359375,0.7060546875,0.65234375,0.56640625,0.4892578125,0.419921875,0.3603515625,0.33203125,0.3427734375,0.37890625,0.412109375,0.419921875,0.4228515625,0.44140625,0.4736328125,0.5107421875,0.5419921875,0.5576171875,0.5595703125,0.5478515625,0.5078125,0.4580078125,0.43359375,0.453125,0.5087890625,0.5791015625,0.658203125,0.75,0.8125,0.8076171875,0.736328125,0.6396484375,0.5595703125,0.490234375,0.439453125,0.4296875,0.4638671875,0.5185546875,0.560546875,0.5693359375,0.5673828125,0.5654296875,0.5634765625,0.5634765625,0.5654296875,0.5673828125,0.5693359375,0.5791015625,0.611328125,0.6474609375,0.6572265625,0.626953125,0.568359375,0.5,0.4248046875,0.341796875,0.291015625,0.3076171875,0.3876953125,0.48828125,0.5693359375,0.646484375,0.73046875,0.779296875,0.759765625,0.677734375,0.5771484375,0.5,0.4228515625,0.33203125,0.2666015625,0.263671875,0.3251953125,0.4140625,0.4892578125,0.56640625,0.66015625,0.7314453125,0.73828125,0.677734375,0.587890625,0.509765625,0.44140625,0.3974609375,0.3994140625,0.4482421875,0.517578125,0.5673828125,0.5791015625,0.5791015625,0.578125,0.5771484375,0.576171875,0.576171875,0.5771484375,0.5791015625,0.58984375,0.6298828125,0.677734375,0.701171875,0.6826171875,0.6279296875,0.5595703125,0.4814453125,0.3896484375,0.32421875,0.32421875,0.3896484375,0.4814453125,0.5595703125,0.6376953125,0.7333984375,0.8037109375,0.8095703125,0.7490234375,0.658203125,0.5791015625,0.5185546875,0.50390625,0.537109375,0.5908203125,0.626953125,0.6162109375,0.5595703125,0.5009765625,0.4853515625,0.51171875,0.556640625,0.583984375,0.5673828125,0.509765625,0.4326171875,0.33984375,0.2705078125,0.2646484375,0.32421875,0.412109375,0.4892578125,0.5595703125,0.619140625,0.6484375,0.6396484375,0.60546875,0.5751953125,0.5693359375,0.5703125,0.5703125,0.568359375,0.5654296875,0.5615234375,0.5595703125,0.5595703125,0.556640625,0.541015625,0.5126953125,0.48046875,0.4541015625,0.4404296875,0.439453125,0.451171875,0.4921875,0.54296875,0.5712890625,0.5576171875,0.5068359375,0.439453125,0.3837890625,0.3798828125,0.4287109375,0.5,0.5498046875,0.544921875,0.4892578125,0.4140625,0.3251953125,0.2646484375,0.26953125,0.337890625,0.431640625,0.509765625,0.5859375,0.6689453125,0.7177734375,0.697265625,0.6142578125,0.5107421875,0.4296875,0.349609375,0.255859375,0.1875,0.185546875,0.25,0.341796875,0.419921875,0.4912109375,0.5625,0.6103515625,0.623046875,0.6064453125,0.5849609375,0.5791015625,0.5869140625,0.6201171875,0.65625,0.6669921875,0.638671875,0.5791015625,0.509765625,0.439453125,0.3759765625,0.341796875,0.3466796875,0.3798828125,0.41015625,0.419921875,0.421875,0.4228515625,0.4228515625,0.421875,0.4208984375,0.419921875,0.419921875,0.4306640625,0.48046875,0.5498046875,0.599609375,0.6044921875,0.564453125,0.5,0.4345703125,0.3935546875,0.3974609375,0.4462890625,0.515625,0.56640625,0.5791015625,0.5771484375,0.55859375,0.5234375,0.48046875,0.4443359375,0.423828125,0.419921875,0.4228515625,0.4404296875,0.470703125,0.5078125,0.5390625,0.5556640625,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.56640625,0.591796875,0.6171875,0.61328125,0.5703125,0.5029296875,0.4296875,0.3701171875,0.3583984375,0.3984375,0.4599609375,0.5029296875,0.49609375,0.439453125,0.373046875,0.3212890625,0.3056640625,0.330078125,0.3759765625,0.412109375,0.419921875,0.4287109375,0.470703125,0.5263671875,0.5625,0.5546875,0.5068359375,0.439453125,0.3623046875,0.26953125,0.203125,0.201171875,0.2646484375,0.353515625,0.4296875,0.48828125,0.505859375,0.4833984375,0.4453125,0.4248046875,0.447265625,0.509765625,0.5673828125,0.568359375,0.5087890625,0.42578125,0.365234375,0.36328125,0.419921875,0.4873046875,0.5380859375,0.5498046875,0.51953125,0.4677734375,0.427734375,0.419921875,0.4326171875,0.4833984375,0.552734375,0.6015625,0.60546875,0.564453125,0.5,0.4306640625,0.37109375,0.3408203125,0.3486328125,0.3818359375,0.412109375,0.419921875,0.4228515625,0.4404296875,0.470703125,0.5078125,0.5390625,0.5556640625,0.5595703125,0.546875,0.490234375,0.41015625,0.3486328125,0.3349609375,0.373046875,0.439453125,0.51953125,0.61328125,0.6806640625,0.6806640625,0.61328125,0.51953125,0.439453125,0.3603515625,0.2666015625,0.201171875,0.2021484375,0.2685546875,0.361328125,0.439453125,0.498046875,0.505859375,0.462890625,0.400390625,0.359375,0.3701171875,0.4296875,0.4912109375,0.5126953125,0.4921875,0.453125,0.4306640625,0.44921875,0.509765625,0.5791015625,0.6396484375,0.669921875,0.6591796875,0.6220703125,0.5888671875,0.5791015625,0.5771484375,0.576171875,0.576171875,0.5771484375,0.578125,0.5791015625,0.5791015625,0.5791015625,0.5791015625,0.578125,0.576171875,0.5732421875,0.5712890625,0.5693359375,0.5546875,0.498046875,0.41796875,0.35546875,0.3408203125,0.3759765625,0.439453125,0.515625,0.6044921875,0.6650390625,0.6630859375,0.5966796875,0.505859375,0.4296875,0.375,0.3759765625,0.4345703125,0.515625,0.5712890625,0.568359375,0.509765625,0.447265625,0.42578125,0.4462890625,0.4833984375,0.5029296875,0.4814453125,0.419921875,0.3427734375,0.26171875,0.216796875,0.2421875,0.328125,0.4306640625,0.509765625,0.583984375,0.6630859375,0.7080078125,0.685546875,0.6015625,0.5,0.419921875,0.35546875,0.3232421875,0.3447265625,0.4150390625,0.5,0.5576171875,0.5693359375,0.5673828125,0.56640625,0.564453125,0.5634765625,0.5625,0.560546875,0.5595703125,0.5546875,0.5361328125,0.505859375,0.4716796875,0.4443359375,0.4306640625,0.4296875,0.443359375,0.49609375,0.5673828125,0.6181640625,0.62109375,0.5771484375,0.509765625,0.44140625,0.3974609375,0.3984375,0.4453125,0.51171875,0.5595703125,0.5693359375,0.564453125,0.548828125,0.5205078125,0.48828125,0.4599609375,0.4443359375,0.439453125,0.4404296875,0.4541015625,0.48046875,0.5126953125,0.541015625,0.556640625,0.5595703125,0.5595703125,0.5595703125,0.560546875,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.396484375,0.44140625,0.5068359375,0.556640625,0.5693359375,0.580078125,0.62109375,0.671875,0.697265625,0.681640625,0.6279296875,0.5595703125,0.4990234375,0.4794921875,0.501953125,0.5419921875,0.5654296875,0.5478515625,0.4892578125,0.4150390625,0.3310546875,0.28125,0.2978515625,0.3779296875,0.478515625,0.5595703125,0.6376953125,0.724609375,0.779296875,0.765625,0.6875,0.5888671875,0.509765625,0.443359375,0.400390625,0.4033203125,0.451171875,0.5185546875,0.568359375,0.5791015625,0.576171875,0.560546875,0.5302734375,0.494140625,0.462890625,0.4443359375,0.439453125,0.4287109375,0.38671875,0.333984375,0.3046875,0.3193359375,0.37109375,0.439453125,0.5166015625,0.60546875,0.6650390625,0.6591796875,0.58984375,0.49609375,0.419921875,0.353515625,0.3046875,0.29296875,0.322265625,0.373046875,0.412109375,0.419921875,0.4189453125,0.419921875,0.4228515625,0.4267578125,0.4296875,0.4306640625,0.4296875,0.439453125,0.48828125,0.5576171875,0.6064453125,0.6103515625,0.5673828125,0.5,0.4189453125,0.318359375,0.23828125,0.220703125,0.271484375,0.3544921875,0.4296875,0.5078125,0.6083984375,0.689453125,0.7099609375,0.6611328125,0.5771484375,0.5,0.419921875,0.328125,0.263671875,0.265625,0.3310546875,0.4228515625,0.5,0.576171875,0.66796875,0.7353515625,0.73828125,0.6767578125,0.5869140625,0.509765625,0.439453125,0.3759765625,0.341796875,0.3466796875,0.3798828125,0.41015625,0.419921875,0.421875,0.423828125,0.42578125,0.42578125,0.423828125,0.421875,0.419921875,0.427734375,0.46875,0.5244140625,0.5595703125,0.5517578125,0.505859375,0.439453125,0.36328125,0.2724609375,0.20703125,0.2041015625,0.265625,0.353515625,0.4296875,0.505859375,0.59765625,0.6640625,0.6650390625,0.6015625,0.5087890625,0.4296875,0.3701171875,0.3603515625,0.4033203125,0.466796875,0.5087890625,0.4990234375,0.439453125,0.380859375,0.375,0.4248046875,0.498046875,0.5498046875,0.546875,0.4892578125,0.4111328125,0.318359375,0.251953125,0.2509765625,0.31640625,0.41015625,0.4892578125,0.5576171875,0.6015625,0.6005859375,0.5537109375,0.4873046875,0.439453125,0.4296875,0.431640625,0.43359375,0.4365234375,0.4384765625,0.439453125,0.439453125,0.439453125,0.4423828125,0.45703125,0.4833984375,0.515625,0.5419921875,0.556640625,0.5595703125,0.5693359375,0.6123046875,0.6689453125,0.7041015625,0.6953125,0.646484375,0.5791015625,0.5185546875,0.49609375,0.5146484375,0.548828125,0.568359375,0.548828125,0.4892578125,0.4130859375,0.322265625,0.2578125,0.2568359375,0.3212890625,0.412109375,0.4892578125,0.5693359375,0.671875,0.7578125,0.78125,0.736328125,0.6552734375,0.5791015625,0.5009765625,0.4091796875,0.3427734375,0.3408203125,0.4033203125,0.4931640625,0.5693359375,0.6318359375,0.6640625,0.6435546875,0.5751953125,0.490234375,0.4326171875,0.419921875,0.4306640625,0.4794921875,0.5458984375,0.5927734375,0.595703125,0.5546875,0.4892578125,0.4248046875,0.3818359375,0.3837890625,0.4306640625,0.4970703125,0.546875,0.5595703125,0.560546875,0.5625,0.5625,0.5615234375,0.560546875,0.5595703125,0.5595703125,0.568359375,0.6025390625,0.6435546875,0.66015625,0.6357421875,0.5791015625,0.509765625,0.439453125,0.376953125,0.345703125,0.353515625,0.3876953125,0.419921875,0.4296875,0.4345703125,0.4541015625,0.48828125,0.5263671875,0.55859375,0.576171875,0.5791015625,0.576171875,0.55859375,0.5283203125,0.4912109375,0.4599609375,0.443359375,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.4521484375,0.5078125,0.5859375,0.6474609375,0.6611328125,0.625,0.5595703125,0.5009765625,0.4931640625,0.537109375,0.6015625,0.6455078125,0.63671875,0.5791015625,0.5107421875,0.4599609375,0.4453125,0.4736328125,0.5234375,0.5615234375,0.5693359375,0.5771484375,0.615234375,0.666015625,0.6962890625,0.6845703125,0.6357421875,0.5693359375,0.4931640625,0.4013671875,0.3349609375,0.333984375,0.3974609375,0.490234375,0.5693359375,0.626953125,0.6279296875,0.5703125,0.48828125,0.4306640625,0.431640625,0.4892578125,0.55078125,0.5703125,0.5458984375,0.5029296875,0.478515625,0.498046875,0.5595703125,0.62890625,0.681640625,0.6962890625,0.66796875,0.6162109375,0.5771484375,0.5693359375,0.5791015625,0.6142578125,0.6533203125,0.666015625,0.638671875,0.5791015625,0.509765625,0.443359375,0.400390625,0.4033203125,0.451171875,0.5185546875,0.568359375,0.5791015625,0.576171875,0.5576171875,0.5234375,0.4814453125,0.4453125,0.4248046875,0.419921875,0.412109375,0.3876953125,0.3681640625,0.3759765625,0.421875,0.4892578125,0.5595703125,0.6357421875,0.724609375,0.7890625,0.7890625,0.724609375,0.6357421875,0.5595703125,0.4833984375,0.392578125,0.3291015625,0.330078125,0.396484375,0.490234375,0.5693359375,0.6298828125,0.642578125,0.6044921875,0.544921875,0.5048828125,0.5126953125,0.5693359375,0.625,0.626953125,0.57421875,0.4990234375,0.4482421875,0.4521484375,0.509765625,0.5751953125,0.6162109375,0.6103515625,0.55859375,0.4892578125,0.439453125,0.4296875,0.431640625,0.435546875,0.439453125,0.44140625,0.4423828125,0.44140625,0.439453125,0.4375,0.43359375,0.4296875,0.4248046875,0.421875,0.419921875,0.419921875,0.4140625,0.3935546875,0.3779296875,0.3916015625,0.439453125,0.5087890625,0.5791015625,0.6552734375,0.7470703125,0.8134765625,0.814453125,0.7509765625,0.658203125,0.5791015625,0.517578125,0.49609375,0.515625,0.552734375,0.5732421875,0.5517578125,0.4892578125,0.431640625,0.4306640625,0.48828125,0.5703125,0.6279296875,0.626953125,0.5693359375,0.48828125,0.3876953125,0.3095703125,0.2939453125,0.3466796875,0.4326171875,0.509765625,0.5888671875,0.689453125,0.7705078125,0.7880859375,0.7392578125,0.6552734375,0.5791015625,0.5078125,0.4365234375,0.388671875,0.3759765625,0.392578125,0.4140625,0.419921875,0.4208984375,0.423828125,0.4296875,0.435546875,0.439453125,0.4404296875,0.439453125,0.44140625,0.4580078125,0.490234375,0.5283203125,0.560546875,0.5771484375,0.5791015625,0.5859375,0.6171875,0.6533203125,0.6650390625,0.6376953125,0.5791015625,0.509765625,0.439453125,0.3759765625,0.341796875,0.3466796875,0.3798828125,0.41015625,0.419921875,0.4248046875,0.443359375,0.4755859375,0.513671875,0.5458984375,0.564453125,0.5693359375,0.5673828125,0.5517578125,0.5224609375,0.486328125,0.45703125,0.44140625,0.439453125,0.4404296875,0.4384765625,0.4326171875,0.4462890625,0.486328125,0.5498046875,0.6015625,0.6220703125,0.638671875,0.67578125,0.7119140625,0.7197265625,0.689453125,0.6328125,0.5703125,0.5146484375,0.484375,0.484375,0.4990234375,0.5078125,0.4921875,0.4482421875,0.3916015625,0.3271484375,0.291015625,0.314453125,0.3935546875,0.490234375,0.5703125,0.6474609375,0.7333984375,0.7880859375,0.779296875,0.7099609375,0.62109375,0.55078125,0.494140625,0.46484375,0.48046875,0.5380859375,0.611328125,0.662109375,0.673828125,0.6689453125,0.6455078125,0.5986328125,0.5380859375,0.482421875,0.4443359375,0.4287109375,0.41015625,0.3671875,0.3193359375,0.2978515625,0.3173828125,0.3681640625,0.4287109375,0.4931640625,0.5556640625,0.5810546875,0.5498046875,0.4716796875,0.3857421875,0.3251953125,0.27734375,0.24609375,0.244140625,0.2705078125,0.306640625,0.3291015625,0.3251953125,0.318359375,0.3232421875,0.33984375,0.3623046875,0.3798828125,0.384765625,0.376953125,0.3798828125,0.4287109375,0.5078125,0.5751953125,0.5966796875,0.5654296875,0.5,0.419921875,0.3232421875,0.244140625,0.220703125,0.2568359375,0.3203125,0.376953125,0.439453125,0.533203125,0.6240234375,0.6650390625,0.640625,0.5732421875,0.5,0.4228515625,0.3408203125,0.2890625,0.2978515625,0.361328125,0.4404296875,0.5,0.55859375,0.6376953125,0.705078125,0.72265625,0.6845703125,0.6171875,0.55078125,0.484375,0.40625,0.3369140625,0.298828125,0.296875,0.3125,0.3251953125,0.3369140625,0.3505859375,0.3603515625,0.3603515625,0.3505859375,0.3369140625,0.3251953125,0.3251953125,0.359375,0.4189453125,0.4716796875,0.4931640625,0.474609375,0.4287109375,0.37109375,0.2978515625,0.2392578125,0.2255859375,0.26171875,0.322265625,0.376953125,0.4365234375,0.515625,0.5791015625,0.587890625,0.5361328125,0.4541015625,0.376953125,0.318359375,0.314453125,0.3662109375,0.4404296875,0.4921875,0.4873046875,0.4287109375,0.3681640625,0.353515625,0.390625,0.451171875,0.498046875,0.4970703125,0.4482421875,0.3779296875,0.2919921875,0.2265625,0.22265625,0.28125,0.369140625,0.4482421875,0.5146484375,0.552734375,0.5419921875,0.4892578125,0.421875,0.37890625,0.376953125,0.388671875,0.40234375,0.416015625,0.4248046875,0.4287109375,0.4296875,0.4287109375,0.4326171875,0.44921875,0.48046875,0.5185546875,0.5498046875,0.56640625,0.5703125,0.5810546875,0.62890625,0.6982421875,0.7509765625,0.7626953125,0.73046875,0.673828125,0.615234375,0.5732421875,0.548828125,0.537109375,0.5234375,0.494140625,0.4482421875,0.3896484375,0.31640625,0.26171875,0.2568359375,0.306640625,0.380859375,0.4482421875,0.521484375,0.62890625,0.736328125,0.7958984375,0.7890625,0.736328125,0.673828125,0.60546875,0.5244140625,0.4638671875,0.4541015625,0.498046875,0.564453125,0.6220703125,0.6640625,0.666015625,0.609375,0.5087890625,0.4052734375,0.33984375,0.3251953125,0.3359375,0.3798828125,0.4453125,0.4990234375,0.5166015625,0.494140625,0.4482421875,0.3994140625,0.37109375,0.380859375,0.4306640625,0.498046875,0.5498046875,0.5703125,0.580078125,0.587890625,0.58984375,0.5849609375,0.5771484375,0.5712890625,0.5703125,0.578125,0.611328125,0.6533203125,0.673828125,0.658203125,0.611328125,0.55078125,0.486328125,0.4140625,0.3564453125,0.33203125,0.3408203125,0.3623046875,0.376953125,0.39453125,0.4375,0.505859375,0.580078125,0.6376953125,0.66796875,0.673828125,0.66796875,0.6376953125,0.5830078125,0.5185546875,0.46484375,0.4345703125,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4404296875,0.4931640625,0.5703125,0.6337890625,0.654296875,0.6259765625,0.5703125,0.521484375,0.5244140625,0.58203125,0.6611328125,0.71875,0.7216796875,0.673828125,0.6142578125,0.5693359375,0.5537109375,0.5703125,0.6025390625,0.6240234375,0.6220703125,0.619140625,0.640625,0.6767578125,0.703125,0.701171875,0.669921875,0.6220703125,0.5625,0.4833984375,0.419921875,0.4111328125,0.462890625,0.544921875,0.6220703125,0.677734375,0.6669921875,0.587890625,0.4814453125,0.40234375,0.3916015625,0.4482421875,0.5107421875,0.5361328125,0.5234375,0.4951171875,0.4814453125,0.5078125,0.5703125,0.6396484375,0.6923828125,0.708984375,0.6884765625,0.6484375,0.6201171875,0.6220703125,0.638671875,0.673828125,0.705078125,0.7080078125,0.673828125,0.6142578125,0.55078125,0.494140625,0.46484375,0.48046875,0.5380859375,0.611328125,0.662109375,0.673828125,0.6669921875,0.630859375,0.560546875,0.4736328125,0.3935546875,0.34375,0.3251953125,0.314453125,0.306640625,0.3212890625,0.369140625,0.4404296875,0.513671875,0.5703125,0.626953125,0.693359375,0.7412109375,0.7412109375,0.693359375,0.626953125,0.5703125,0.51171875,0.439453125,0.3876953125,0.392578125,0.455078125,0.5439453125,0.6220703125,0.6845703125,0.70703125,0.6826171875,0.630859375,0.5869140625,0.58203125,0.6220703125,0.6611328125,0.654296875,0.6025390625,0.5361328125,0.4931640625,0.5,0.55078125,0.60546875,0.623046875,0.587890625,0.51171875,0.4287109375,0.3798828125,0.376953125,0.3896484375,0.41015625,0.4306640625,0.4443359375,0.4462890625,0.439453125,0.4287109375,0.4169921875,0.396484375,0.37109375,0.3486328125,0.3330078125,0.326171875,0.3251953125,0.326171875,0.3388671875,0.37890625,0.44921875,0.5361328125,0.615234375,0.673828125,0.7333984375,0.8115234375,0.875,0.8837890625,0.83203125,0.75,0.673828125,0.6083984375,0.5703125,0.5595703125,0.5615234375,0.55078125,0.5126953125,0.4482421875,0.3916015625,0.40234375,0.4814453125,0.587890625,0.6669921875,0.677734375,0.6220703125,0.5419921875,0.4453125,0.3701171875,0.3564453125,0.4052734375,0.4833984375,0.55078125,0.6220703125,0.7177734375,0.8017578125,0.833984375,0.8046875,0.73828125,0.673828125,0.60546875,0.5185546875,0.4296875,0.36328125,0.33203125,0.3251953125,0.3251953125,0.3291015625,0.34765625,0.37890625,0.41015625,0.431640625,0.4365234375,0.4287109375,0.42578125,0.4541015625,0.5146484375,0.587890625,0.6484375,0.6767578125,0.673828125,0.6689453125,0.6826171875,0.6982421875,0.697265625,0.666015625,0.6123046875,0.55078125,0.484375,0.40625,0.3369140625,0.298828125,0.296875,0.3125,0.3251953125,0.3408203125,0.37890625,0.4384765625,0.5087890625,0.568359375,0.6064453125,0.6220703125,0.6259765625,0.6044921875,0.5556640625,0.4951171875,0.4462890625,0.4248046875,0.4287109375,0.435546875,0.423828125,0.3955078125,0.4912109375,0.5078125,0.552734375,0.6025390625,0.634765625,0.6640625,0.697265625,0.712890625,0.6923828125,0.6416015625,0.580078125,0.5302734375,0.4853515625,0.4462890625,0.421875,0.4140625,0.4140625,0.41015625,0.39453125,0.369140625,0.330078125,0.3037109375,0.31640625,0.3740234375,0.4541015625,0.5302734375,0.607421875,0.6953125,0.7587890625,0.767578125,0.72265625,0.6572265625,0.6044921875,0.5634765625,0.546875,0.568359375,0.6240234375,0.6875,0.73046875,0.740234375,0.7373046875,0.7197265625,0.6787109375,0.619140625,0.5537109375,0.5009765625,0.46875,0.4375,0.3916015625,0.3525390625,0.3447265625,0.373046875,0.421875,0.46875,0.5107421875,0.529296875,0.5048828125,0.4384765625,0.3544921875,0.2890625,0.2587890625,0.244140625,0.24609375,0.26171875,0.28125,0.2900390625,0.2822265625,0.2587890625,0.2392578125,0.248046875,0.2861328125,0.3369140625,0.375,0.3837890625,0.3642578125,0.3515625,0.390625,0.46875,0.546875,0.5830078125,0.5625,0.5,0.423828125,0.34375,0.2861328125,0.2734375,0.2998046875,0.3388671875,0.3642578125,0.3955078125,0.4677734375,0.5546875,0.61328125,0.6162109375,0.568359375,0.5,0.4267578125,0.36328125,0.3359375,0.3583984375,0.416015625,0.470703125,0.5,0.5263671875,0.580078125,0.640625,0.6796875,0.6806640625,0.6484375,0.6044921875,0.548828125,0.4580078125,0.353515625,0.26953125,0.2314453125,0.2353515625,0.2587890625,0.2880859375,0.3232421875,0.34765625,0.34765625,0.3232421875,0.2880859375,0.2587890625,0.2412109375,0.2578125,0.314453125,0.388671875,0.4521484375,0.4794921875,0.46875,0.4453125,0.408203125,0.3671875,0.3388671875,0.3330078125,0.345703125,0.3642578125,0.392578125,0.4482421875,0.5048828125,0.52734375,0.5,0.4365234375,0.3642578125,0.306640625,0.30859375,0.3720703125,0.4609375,0.5244140625,0.5263671875,0.46875,0.404296875,0.369140625,0.373046875,0.40234375,0.4306640625,0.4306640625,0.39453125,0.33984375,0.265625,0.2041015625,0.1923828125,0.2392578125,0.318359375,0.39453125,0.4599609375,0.4931640625,0.48046875,0.4306640625,0.375,0.3486328125,0.3642578125,0.392578125,0.423828125,0.4521484375,0.46875,0.47265625,0.470703125,0.46875,0.470703125,0.4775390625,0.4912109375,0.5078125,0.521484375,0.5283203125,0.5302734375,0.541015625,0.5927734375,0.673828125,0.748046875,0.787109375,0.779296875,0.740234375,0.6904296875,0.626953125,0.5546875,0.4912109375,0.4443359375,0.4150390625,0.39453125,0.3701171875,0.3291015625,0.2919921875,0.28125,0.3037109375,0.34765625,0.39453125,0.453125,0.5546875,0.673828125,0.7646484375,0.7998046875,0.7822265625,0.740234375,0.6904296875,0.6337890625,0.587890625,0.5712890625,0.5849609375,0.6123046875,0.634765625,0.64453125,0.61328125,0.5322265625,0.4248046875,0.3271484375,0.2705078125,0.2587890625,0.2646484375,0.2919921875,0.3369140625,0.3798828125,0.4072265625,0.41015625,0.39453125,0.375,0.3623046875,0.3701171875,0.40234375,0.451171875,0.498046875,0.5302734375,0.5556640625,0.5751953125,0.580078125,0.568359375,0.548828125,0.533203125,0.5302734375,0.5380859375,0.5732421875,0.6240234375,0.6630859375,0.6708984375,0.6474609375,0.6044921875,0.55078125,0.4736328125,0.3916015625,0.3359375,0.3212890625,0.337890625,0.3642578125,0.3984375,0.4638671875,0.5517578125,0.640625,0.705078125,0.7353515625,0.740234375,0.7333984375,0.701171875,0.640625,0.568359375,0.5087890625,0.4755859375,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.4765625,0.5107421875,0.5576171875,0.5927734375,0.5986328125,0.572265625,0.5302734375,0.4970703125,0.515625,0.587890625,0.681640625,0.75390625,0.7734375,0.740234375,0.697265625,0.6669921875,0.654296875,0.6572265625,0.662109375,0.6572265625,0.634765625,0.6123046875,0.603515625,0.61328125,0.6318359375,0.6484375,0.6494140625,0.634765625,0.6064453125,0.55078125,0.494140625,0.4716796875,0.4990234375,0.5625,0.634765625,0.689453125,0.6708984375,0.5771484375,0.4521484375,0.3583984375,0.33984375,0.39453125,0.45703125,0.484375,0.474609375,0.44921875,0.439453125,0.466796875,0.5302734375,0.5986328125,0.6484375,0.6650390625,0.6513671875,0.626953125,0.6171875,0.634765625,0.666015625,0.7080078125,0.740234375,0.740234375,0.705078125,0.6533203125,0.6044921875,0.5634765625,0.546875,0.568359375,0.6240234375,0.6875,0.73046875,0.740234375,0.732421875,0.689453125,0.6015625,0.4853515625,0.373046875,0.2958984375,0.2587890625,0.2373046875,0.2392578125,0.28125,0.35546875,0.439453125,0.5009765625,0.5302734375,0.55078125,0.576171875,0.59375,0.59375,0.576171875,0.55078125,0.5302734375,0.50390625,0.4609375,0.427734375,0.4326171875,0.484375,0.560546875,0.634765625,0.7021484375,0.7431640625,0.7421875,0.7041015625,0.654296875,0.626953125,0.634765625,0.646484375,0.6298828125,0.5927734375,0.5576171875,0.5458984375,0.5634765625,0.6044921875,0.6396484375,0.6279296875,0.5634765625,0.46875,0.38671875,0.3505859375,0.3642578125,0.3955078125,0.443359375,0.4912109375,0.5185546875,0.517578125,0.49609375,0.46875,0.4384765625,0.3935546875,0.341796875,0.2978515625,0.2705078125,0.259765625,0.2587890625,0.267578125,0.314453125,0.408203125,0.52734375,0.6376953125,0.7099609375,0.740234375,0.7685546875,0.82421875,0.880859375,0.9033203125,0.8759765625,0.8125,0.740234375,0.671875,0.619140625,0.5830078125,0.5517578125,0.5146484375,0.4619140625,0.39453125,0.33984375,0.3583984375,0.4521484375,0.5771484375,0.6708984375,0.689453125,0.634765625,0.55859375,0.4755859375,0.421875,0.4248046875,0.48046875,0.55078125,0.6044921875,0.658203125,0.734375,0.806640625,0.8427734375,0.830078125,0.787109375,0.740234375,0.6845703125,0.5927734375,0.4775390625,0.369140625,0.2958984375,0.263671875,0.2587890625,0.267578125,0.30859375,0.375,0.44140625,0.4833984375,0.490234375,0.46875,0.453125,0.482421875,0.5576171875,0.6513671875,0.7265625,0.755859375,0.740234375,0.7177734375,0.7080078125,0.70703125,0.701171875,0.6826171875,0.6484375,0.6044921875,0.548828125,0.4580078125,0.353515625,0.26953125,0.2314453125,0.2353515625,0.2587890625,0.2900390625,0.3388671875,0.408203125,0.4853515625,0.5546875,0.6044921875,0.634765625,0.6533203125,0.63671875,0.5849609375,0.5185546875,0.466796875,0.451171875,0.46875,0.486328125,0.46484375,0.4033203125,0.5078125,0.4912109375,0.5126953125,0.5576171875,0.6044921875,0.6494140625,0.681640625,0.6787109375,0.6357421875,0.56640625,0.50390625,0.46875,0.4384765625,0.3955078125,0.3525390625,0.328125,0.328125,0.3447265625,0.3642578125,0.375,0.3603515625,0.3330078125,0.3232421875,0.345703125,0.3994140625,0.46875,0.546875,0.634765625,0.7041015625,0.728515625,0.7080078125,0.6669921875,0.634765625,0.611328125,0.60546875,0.6240234375,0.6630859375,0.7060546875,0.734375,0.740234375,0.7412109375,0.7421875,0.7294921875,0.6923828125,0.6376953125,0.5791015625,0.5302734375,0.482421875,0.43359375,0.4052734375,0.4140625,0.4521484375,0.498046875,0.5302734375,0.546875,0.521484375,0.4521484375,0.361328125,0.28515625,0.25,0.2587890625,0.283203125,0.32421875,0.361328125,0.3720703125,0.349609375,0.3056640625,0.2587890625,0.224609375,0.234375,0.2900390625,0.36328125,0.4189453125,0.4287109375,0.39453125,0.3623046875,0.3837890625,0.4521484375,0.5302734375,0.57421875,0.560546875,0.5,0.4296875,0.3759765625,0.353515625,0.36328125,0.390625,0.4052734375,0.39453125,0.388671875,0.4287109375,0.501953125,0.568359375,0.5927734375,0.564453125,0.5,0.4326171875,0.390625,0.3916015625,0.4306640625,0.48046875,0.5078125,0.5,0.48828125,0.505859375,0.5517578125,0.607421875,0.646484375,0.6552734375,0.634765625,0.5947265625,0.5029296875,0.3798828125,0.2734375,0.216796875,0.2197265625,0.2587890625,0.3095703125,0.369140625,0.4111328125,0.4111328125,0.369140625,0.3095703125,0.2587890625,0.21875,0.20703125,0.2451171875,0.328125,0.42578125,0.4990234375,0.5302734375,0.5478515625,0.556640625,0.5439453125,0.5078125,0.4599609375,0.4189453125,0.39453125,0.3857421875,0.4140625,0.4638671875,0.501953125,0.5029296875,0.4619140625,0.39453125,0.337890625,0.34375,0.4140625,0.5107421875,0.5810546875,0.5869140625,0.5302734375,0.4599609375,0.40234375,0.3720703125,0.3701171875,0.380859375,0.3837890625,0.3642578125,0.328125,0.267578125,0.208984375,0.189453125,0.22265625,0.291015625,0.3642578125,0.4287109375,0.4580078125,0.4443359375,0.40234375,0.3642578125,0.359375,0.39453125,0.44140625,0.4912109375,0.5302734375,0.546875,0.54296875,0.533203125,0.5302734375,0.5283203125,0.521484375,0.5078125,0.4912109375,0.4775390625,0.470703125,0.46875,0.4794921875,0.52734375,0.607421875,0.6904296875,0.74609375,0.759765625,0.740234375,0.703125,0.626953125,0.5244140625,0.427734375,0.3671875,0.3505859375,0.3642578125,0.37890625,0.376953125,0.361328125,0.341796875,0.3330078125,0.3408203125,0.3642578125,0.40234375,0.482421875,0.5908203125,0.6904296875,0.75,0.7607421875,0.740234375,0.7138671875,0.689453125,0.66796875,0.6513671875,0.6376953125,0.6220703125,0.6044921875,0.578125,0.5224609375,0.44140625,0.3583984375,0.294921875,0.2646484375,0.2587890625,0.2587890625,0.2607421875,0.26953125,0.2900390625,0.31640625,0.3427734375,0.3642578125,0.37890625,0.37890625,0.3720703125,0.373046875,0.390625,0.4248046875,0.46875,0.513671875,0.546875,0.5546875,0.53515625,0.501953125,0.4755859375,0.46875,0.4765625,0.51171875,0.568359375,0.6240234375,0.65625,0.6572265625,0.634765625,0.59765625,0.5224609375,0.4306640625,0.3583984375,0.3330078125,0.3525390625,0.39453125,0.4462890625,0.521484375,0.607421875,0.6796875,0.72265625,0.73828125,0.740234375,0.7353515625,0.7099609375,0.6630859375,0.607421875,0.560546875,0.53515625,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5322265625,0.5400390625,0.5458984375,0.541015625,0.5224609375,0.49609375,0.46875,0.453125,0.482421875,0.5576171875,0.6513671875,0.7265625,0.755859375,0.740234375,0.7177734375,0.7080078125,0.70703125,0.701171875,0.6826171875,0.6484375,0.6044921875,0.5576171875,0.513671875,0.4912109375,0.501953125,0.5400390625,0.580078125,0.6044921875,0.61328125,0.5849609375,0.53515625,0.4970703125,0.49609375,0.537109375,0.6044921875,0.6591796875,0.640625,0.546875,0.421875,0.328125,0.3095703125,0.3642578125,0.4267578125,0.4501953125,0.4326171875,0.400390625,0.3837890625,0.4072265625,0.46875,0.5361328125,0.578125,0.587890625,0.57421875,0.5595703125,0.5673828125,0.6044921875,0.6533203125,0.705078125,0.740234375,0.740234375,0.7080078125,0.666015625,0.634765625,0.611328125,0.60546875,0.6240234375,0.6630859375,0.7060546875,0.734375,0.740234375,0.7353515625,0.703125,0.6298828125,0.521484375,0.40625,0.314453125,0.2587890625,0.22265625,0.2255859375,0.2783203125,0.361328125,0.4384765625,0.4765625,0.46875,0.4482421875,0.4228515625,0.4052734375,0.4052734375,0.4228515625,0.4482421875,0.46875,0.48046875,0.4697265625,0.44921875,0.447265625,0.4765625,0.5341796875,0.6044921875,0.6767578125,0.740234375,0.767578125,0.7451171875,0.6884765625,0.6328125,0.6044921875,0.5830078125,0.5576171875,0.541015625,0.5458984375,0.572265625,0.6064453125,0.634765625,0.6484375,0.6123046875,0.5302734375,0.435546875,0.37109375,0.359375,0.39453125,0.4482421875,0.5234375,0.5966796875,0.6318359375,0.6201171875,0.5771484375,0.5302734375,0.4794921875,0.4130859375,0.3447265625,0.2919921875,0.265625,0.2587890625,0.2587890625,0.2724609375,0.341796875,0.4638671875,0.5986328125,0.703125,0.7470703125,0.740234375,0.7314453125,0.759765625,0.8095703125,0.84765625,0.8486328125,0.8076171875,0.740234375,0.671875,0.615234375,0.5712890625,0.533203125,0.4892578125,0.4326171875,0.3642578125,0.3095703125,0.328125,0.421875,0.546875,0.640625,0.6591796875,0.6044921875,0.5322265625,0.4677734375,0.44140625,0.46875,0.5341796875,0.5986328125,0.634765625,0.6669921875,0.7138671875,0.76171875,0.7900390625,0.7890625,0.7666015625,0.740234375,0.703125,0.6259765625,0.513671875,0.3974609375,0.3095703125,0.2666015625,0.2587890625,0.271484375,0.3310546875,0.4248046875,0.515625,0.568359375,0.5673828125,0.5302734375,0.4970703125,0.515625,0.587890625,0.681640625,0.75390625,0.7734375,0.740234375,0.697265625,0.6669921875,0.654296875,0.6572265625,0.662109375,0.6572265625,0.634765625,0.5947265625,0.5029296875,0.3798828125,0.2734375,0.216796875,0.2197265625,0.2587890625,0.3046875,0.353515625,0.4052734375,0.4580078125,0.509765625,0.55859375,0.6044921875,0.640625,0.638671875,0.5966796875,0.5380859375,0.49609375,0.494140625,0.5302734375,0.5615234375,0.53515625,0.44921875,0.486328125,0.4462890625,0.44921875,0.4921875,0.55078125,0.609375,0.6455078125,0.6376953125,0.5830078125,0.5087890625,0.4501953125,0.4287109375,0.41015625,0.3671875,0.3154296875,0.28515625,0.2900390625,0.3271484375,0.376953125,0.41796875,0.419921875,0.3876953125,0.349609375,0.3359375,0.365234375,0.4287109375,0.5048828125,0.5869140625,0.650390625,0.67578125,0.6630859375,0.6376953125,0.6220703125,0.61328125,0.611328125,0.62109375,0.638671875,0.658203125,0.6708984375,0.673828125,0.6796875,0.7021484375,0.7255859375,0.7236328125,0.689453125,0.6318359375,0.5703125,0.5087890625,0.4580078125,0.4384765625,0.4609375,0.5078125,0.5517578125,0.5703125,0.5673828125,0.515625,0.4248046875,0.3349609375,0.28125,0.283203125,0.3251953125,0.3837890625,0.45703125,0.51171875,0.5166015625,0.466796875,0.392578125,0.3251953125,0.27734375,0.283203125,0.3447265625,0.4287109375,0.490234375,0.49609375,0.4482421875,0.3994140625,0.40234375,0.4560546875,0.5263671875,0.5703125,0.5595703125,0.5,0.435546875,0.40625,0.419921875,0.4580078125,0.490234375,0.48828125,0.4482421875,0.4091796875,0.419921875,0.4755859375,0.541015625,0.5771484375,0.560546875,0.5,0.4365234375,0.4140625,0.4384765625,0.490234375,0.5341796875,0.5390625,0.5,0.4541015625,0.4375,0.4638671875,0.521484375,0.5849609375,0.6220703125,0.6220703125,0.595703125,0.5166015625,0.4033203125,0.3037109375,0.2568359375,0.271484375,0.3251953125,0.3935546875,0.474609375,0.53125,0.53125,0.474609375,0.3935546875,0.3251953125,0.2646484375,0.2197265625,0.224609375,0.2939453125,0.4033203125,0.505859375,0.5703125,0.6240234375,0.67578125,0.6962890625,0.6640625,0.5888671875,0.5078125,0.4482421875,0.408203125,0.4130859375,0.45703125,0.5087890625,0.533203125,0.5107421875,0.4482421875,0.390625,0.39453125,0.462890625,0.5556640625,0.623046875,0.626953125,0.5703125,0.4970703125,0.427734375,0.37890625,0.3623046875,0.37109375,0.3818359375,0.376953125,0.357421875,0.3076171875,0.2529296875,0.2265625,0.248046875,0.3056640625,0.376953125,0.4404296875,0.4658203125,0.44921875,0.4111328125,0.384765625,0.396484375,0.4482421875,0.5107421875,0.5703125,0.6083984375,0.615234375,0.5966796875,0.576171875,0.5703125,0.56640625,0.5498046875,0.5185546875,0.48046875,0.44921875,0.4326171875,0.4287109375,0.4365234375,0.4716796875,0.5341796875,0.603515625,0.6552734375,0.677734375,0.673828125,0.6494140625,0.576171875,0.4697265625,0.375,0.326171875,0.3330078125,0.376953125,0.42578125,0.45703125,0.4580078125,0.4326171875,0.396484375,0.3740234375,0.376953125,0.3955078125,0.4453125,0.521484375,0.599609375,0.6552734375,0.677734375,0.673828125,0.66796875,0.6748046875,0.68359375,0.6767578125,0.6484375,0.6025390625,0.55078125,0.49609375,0.431640625,0.3720703125,0.333984375,0.3212890625,0.32421875,0.3251953125,0.3193359375,0.296875,0.26953125,0.26171875,0.283203125,0.326171875,0.376953125,0.419921875,0.427734375,0.40234375,0.369140625,0.353515625,0.375,0.4287109375,0.48828125,0.533203125,0.544921875,0.5185546875,0.4736328125,0.4375,0.4287109375,0.4345703125,0.46484375,0.5146484375,0.5703125,0.611328125,0.626953125,0.6220703125,0.5986328125,0.5341796875,0.4482421875,0.380859375,0.361328125,0.390625,0.4482421875,0.5126953125,0.5849609375,0.646484375,0.6806640625,0.6845703125,0.6767578125,0.673828125,0.6708984375,0.658203125,0.6357421875,0.6083984375,0.5849609375,0.572265625,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.568359375,0.556640625,0.533203125,0.5,0.466796875,0.4423828125,0.4287109375,0.42578125,0.4541015625,0.5146484375,0.587890625,0.6484375,0.6767578125,0.673828125,0.6689453125,0.6826171875,0.6982421875,0.697265625,0.666015625,0.6123046875,0.55078125,0.484375,0.41015625,0.3603515625,0.365234375,0.419921875,0.4931640625,0.55078125,0.5908203125,0.5859375,0.5419921875,0.490234375,0.4658203125,0.48828125,0.55078125,0.607421875,0.5966796875,0.517578125,0.4111328125,0.33203125,0.3212890625,0.376953125,0.4384765625,0.455078125,0.4267578125,0.3798828125,0.3505859375,0.3681640625,0.4287109375,0.4931640625,0.5244140625,0.51953125,0.4951171875,0.48046875,0.4990234375,0.55078125,0.6142578125,0.673828125,0.7080078125,0.705078125,0.673828125,0.638671875,0.6220703125,0.61328125,0.611328125,0.62109375,0.638671875,0.658203125,0.6708984375,0.673828125,0.673828125,0.6669921875,0.6357421875,0.5693359375,0.48046875,0.3935546875,0.3251953125,0.275390625,0.2724609375,0.322265625,0.3974609375,0.45703125,0.4677734375,0.4287109375,0.3720703125,0.3056640625,0.2578125,0.2578125,0.3056640625,0.3720703125,0.4287109375,0.4716796875,0.4814453125,0.46484375,0.4453125,0.4482421875,0.4853515625,0.55078125,0.6279296875,0.7099609375,0.76171875,0.7529296875,0.689453125,0.6103515625,0.55078125,0.501953125,0.466796875,0.4658203125,0.501953125,0.556640625,0.6025390625,0.6220703125,0.619140625,0.5703125,0.4873046875,0.4111328125,0.3759765625,0.3935546875,0.4482421875,0.5185546875,0.6142578125,0.6982421875,0.73046875,0.701171875,0.6357421875,0.5703125,0.5048828125,0.4296875,0.3642578125,0.3251953125,0.31640625,0.3232421875,0.3251953125,0.3408203125,0.4130859375,0.5283203125,0.6416015625,0.7099609375,0.71484375,0.673828125,0.6337890625,0.638671875,0.6826171875,0.734375,0.7587890625,0.736328125,0.673828125,0.6064453125,0.5595703125,0.5341796875,0.5166015625,0.490234375,0.4443359375,0.376953125,0.3212890625,0.33203125,0.4111328125,0.517578125,0.5966796875,0.607421875,0.55078125,0.4814453125,0.431640625,0.4267578125,0.470703125,0.5419921875,0.599609375,0.6220703125,0.634765625,0.654296875,0.67578125,0.689453125,0.69140625,0.68359375,0.673828125,0.6552734375,0.60546875,0.525390625,0.4384765625,0.3681640625,0.33203125,0.3251953125,0.33984375,0.4052734375,0.505859375,0.595703125,0.6396484375,0.6240234375,0.5703125,0.521484375,0.5244140625,0.58203125,0.6611328125,0.71875,0.7216796875,0.673828125,0.6142578125,0.5693359375,0.5537109375,0.5703125,0.6025390625,0.6240234375,0.6220703125,0.595703125,0.5166015625,0.4033203125,0.3037109375,0.2568359375,0.271484375,0.3251953125,0.3818359375,0.4189453125,0.4345703125,0.4423828125,0.4580078125,0.4951171875,0.55078125,0.6025390625,0.6142578125,0.583984375,0.537109375,0.5068359375,0.5185546875,0.5703125,0.615234375,0.5947265625,0.505859375,0.44140625,0.396484375,0.3974609375,0.4423828125,0.509765625,0.576171875,0.6201171875,0.6181640625,0.5712890625,0.5029296875,0.453125,0.439453125,0.4287109375,0.3857421875,0.3330078125,0.3017578125,0.3134765625,0.36328125,0.4296875,0.486328125,0.49609375,0.45703125,0.400390625,0.365234375,0.37890625,0.439453125,0.5126953125,0.58203125,0.625,0.6298828125,0.60546875,0.578125,0.5693359375,0.568359375,0.568359375,0.5693359375,0.5732421875,0.576171875,0.5791015625,0.5791015625,0.5888671875,0.626953125,0.6748046875,0.69921875,0.681640625,0.6279296875,0.5595703125,0.4912109375,0.4384765625,0.4248046875,0.453125,0.505859375,0.5478515625,0.5595703125,0.5478515625,0.4931640625,0.4111328125,0.3447265625,0.32421875,0.3564453125,0.419921875,0.49609375,0.5869140625,0.6513671875,0.65234375,0.5888671875,0.4970703125,0.419921875,0.36328125,0.361328125,0.416015625,0.4931640625,0.5478515625,0.5458984375,0.4892578125,0.431640625,0.4228515625,0.4658203125,0.5283203125,0.5693359375,0.5595703125,0.5,0.439453125,0.4248046875,0.4609375,0.517578125,0.5556640625,0.5458984375,0.4892578125,0.43359375,0.42578125,0.46875,0.53125,0.5712890625,0.5595703125,0.5,0.439453125,0.4267578125,0.4638671875,0.5234375,0.564453125,0.5556640625,0.5,0.4345703125,0.39453125,0.3984375,0.4462890625,0.5126953125,0.5595703125,0.5693359375,0.5546875,0.494140625,0.408203125,0.33984375,0.3212890625,0.3544921875,0.419921875,0.498046875,0.58984375,0.654296875,0.654296875,0.58984375,0.498046875,0.419921875,0.345703125,0.271484375,0.23828125,0.2763671875,0.3720703125,0.4794921875,0.5595703125,0.6337890625,0.71484375,0.7626953125,0.744140625,0.6650390625,0.5673828125,0.4892578125,0.4326171875,0.4248046875,0.4658203125,0.5244140625,0.5625,0.5498046875,0.4892578125,0.431640625,0.4287109375,0.484375,0.564453125,0.6201171875,0.6171875,0.5595703125,0.486328125,0.419921875,0.37890625,0.375,0.3994140625,0.4248046875,0.4296875,0.41796875,0.375,0.3212890625,0.2919921875,0.306640625,0.359375,0.4296875,0.4912109375,0.509765625,0.484375,0.4404296875,0.4130859375,0.4296875,0.4892578125,0.5595703125,0.619140625,0.6474609375,0.63671875,0.599609375,0.5673828125,0.5595703125,0.556640625,0.5419921875,0.515625,0.4833984375,0.45703125,0.4423828125,0.439453125,0.443359375,0.4609375,0.4931640625,0.53125,0.5615234375,0.5771484375,0.5791015625,0.564453125,0.505859375,0.4208984375,0.353515625,0.333984375,0.3662109375,0.4296875,0.49609375,0.544921875,0.556640625,0.5263671875,0.4765625,0.4375,0.4296875,0.435546875,0.455078125,0.490234375,0.5302734375,0.5615234375,0.5771484375,0.5791015625,0.5859375,0.615234375,0.650390625,0.662109375,0.634765625,0.5771484375,0.509765625,0.4404296875,0.3798828125,0.34765625,0.3525390625,0.3837890625,0.412109375,0.419921875,0.41015625,0.3720703125,0.3232421875,0.296875,0.3115234375,0.36328125,0.4296875,0.486328125,0.4970703125,0.4599609375,0.404296875,0.3681640625,0.380859375,0.439453125,0.5078125,0.55859375,0.572265625,0.5419921875,0.490234375,0.44921875,0.439453125,0.443359375,0.4599609375,0.490234375,0.5244140625,0.5537109375,0.568359375,0.5693359375,0.5556640625,0.5048828125,0.4345703125,0.3837890625,0.380859375,0.4228515625,0.4892578125,0.5595703125,0.6220703125,0.6552734375,0.6484375,0.6171875,0.5869140625,0.5791015625,0.5791015625,0.576171875,0.572265625,0.56640625,0.5625,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.556640625,0.54296875,0.517578125,0.4873046875,0.4599609375,0.4443359375,0.439453125,0.44140625,0.4580078125,0.490234375,0.5283203125,0.560546875,0.5771484375,0.5791015625,0.5859375,0.6171875,0.6533203125,0.6650390625,0.6376953125,0.5791015625,0.509765625,0.431640625,0.3408203125,0.27734375,0.27734375,0.3427734375,0.43359375,0.509765625,0.56640625,0.57421875,0.533203125,0.474609375,0.4365234375,0.44921875,0.509765625,0.5673828125,0.568359375,0.5107421875,0.4287109375,0.37109375,0.3720703125,0.4296875,0.490234375,0.501953125,0.4638671875,0.4052734375,0.3681640625,0.3798828125,0.439453125,0.5009765625,0.521484375,0.498046875,0.45703125,0.431640625,0.44921875,0.509765625,0.5791015625,0.638671875,0.666015625,0.6533203125,0.6142578125,0.5791015625,0.5693359375,0.568359375,0.568359375,0.5693359375,0.5732421875,0.576171875,0.5791015625,0.5791015625,0.5849609375,0.6064453125,0.623046875,0.6103515625,0.5625,0.4912109375,0.419921875,0.361328125,0.3525390625,0.3955078125,0.458984375,0.5029296875,0.49609375,0.439453125,0.36328125,0.2744140625,0.2099609375,0.2099609375,0.2744140625,0.36328125,0.439453125,0.498046875,0.5146484375,0.4892578125,0.4482421875,0.4267578125,0.447265625,0.509765625,0.5888671875,0.6806640625,0.7451171875,0.744140625,0.677734375,0.5859375,0.509765625,0.4443359375,0.400390625,0.3994140625,0.4443359375,0.5087890625,0.556640625,0.5693359375,0.5595703125,0.509765625,0.4404296875,0.388671875,0.3828125,0.423828125,0.4892578125,0.5693359375,0.669921875,0.75,0.7685546875,0.71875,0.6357421875,0.5595703125,0.48828125,0.419921875,0.3759765625,0.3681640625,0.3896484375,0.4130859375,0.419921875,0.4326171875,0.4921875,0.5791015625,0.6494140625,0.6728515625,0.6416015625,0.5791015625,0.5224609375,0.5146484375,0.5556640625,0.6142578125,0.65234375,0.6396484375,0.5791015625,0.515625,0.4873046875,0.494140625,0.5146484375,0.521484375,0.4931640625,0.4296875,0.3720703125,0.37109375,0.4287109375,0.5107421875,0.568359375,0.5673828125,0.509765625,0.4404296875,0.39453125,0.3935546875,0.439453125,0.505859375,0.556640625,0.5693359375,0.5712890625,0.5751953125,0.578125,0.5810546875,0.58203125,0.5810546875,0.5791015625,0.57421875,0.5537109375,0.517578125,0.4755859375,0.44140625,0.4228515625,0.419921875,0.4326171875,0.490234375,0.57421875,0.640625,0.658203125,0.6240234375,0.5595703125,0.5009765625,0.4931640625,0.537109375,0.6015625,0.6455078125,0.63671875,0.5791015625,0.5107421875,0.4599609375,0.4453125,0.4736328125,0.5234375,0.5615234375,0.5693359375,0.5546875,0.494140625,0.408203125,0.33984375,0.3212890625,0.3544921875,0.419921875,0.48046875,0.501953125,0.482421875,0.447265625,0.427734375,0.44921875,0.509765625,0.5693359375,0.5859375,0.5576171875,0.51171875,0.4833984375,0.5,0.5595703125,0.6142578125,0.6083984375,0.5380859375,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.3466796875,0.341796875,0.3759765625,0.439453125,0.509765625,0.5791015625,0.6376953125,0.662109375,0.646484375,0.60546875,0.5693359375,0.5595703125,0.548828125,0.5087890625,0.4609375,0.4375,0.4560546875,0.5107421875,0.5791015625,0.63671875,0.6435546875,0.5986328125,0.5341796875,0.490234375,0.5,0.5595703125,0.6259765625,0.6640625,0.650390625,0.5888671875,0.5087890625,0.4521484375,0.439453125,0.439453125,0.4375,0.43359375,0.4306640625,0.4287109375,0.4287109375,0.4296875,0.44140625,0.4833984375,0.537109375,0.5673828125,0.5556640625,0.505859375,0.439453125,0.373046875,0.3232421875,0.3095703125,0.3359375,0.384765625,0.421875,0.4296875,0.421875,0.3955078125,0.3720703125,0.376953125,0.419921875,0.48828125,0.5595703125,0.6376953125,0.732421875,0.8017578125,0.806640625,0.74609375,0.65625,0.5791015625,0.51953125,0.5,0.5244140625,0.564453125,0.5888671875,0.5693359375,0.509765625,0.451171875,0.4404296875,0.478515625,0.5361328125,0.572265625,0.5595703125,0.5,0.439453125,0.4248046875,0.4609375,0.517578125,0.5556640625,0.5458984375,0.4892578125,0.43359375,0.4267578125,0.470703125,0.5341796875,0.5771484375,0.5673828125,0.509765625,0.451171875,0.4404296875,0.4794921875,0.5390625,0.578125,0.568359375,0.509765625,0.439453125,0.3798828125,0.3515625,0.3623046875,0.3994140625,0.431640625,0.439453125,0.4326171875,0.4052734375,0.37890625,0.3798828125,0.419921875,0.486328125,0.5595703125,0.638671875,0.7333984375,0.802734375,0.806640625,0.744140625,0.6552734375,0.5791015625,0.4990234375,0.3896484375,0.2890625,0.24609375,0.2744140625,0.345703125,0.419921875,0.4990234375,0.5986328125,0.677734375,0.6953125,0.646484375,0.564453125,0.4892578125,0.43359375,0.4267578125,0.470703125,0.5341796875,0.5771484375,0.5673828125,0.509765625,0.44921875,0.4267578125,0.4443359375,0.4794921875,0.4990234375,0.478515625,0.419921875,0.3564453125,0.3232421875,0.3427734375,0.4111328125,0.4951171875,0.5546875,0.5693359375,0.5615234375,0.5224609375,0.47265625,0.4423828125,0.4541015625,0.5029296875,0.5693359375,0.625,0.626953125,0.57421875,0.4990234375,0.4482421875,0.4521484375,0.509765625,0.576171875,0.6171875,0.611328125,0.55859375,0.486328125,0.43359375,0.419921875,0.4208984375,0.435546875,0.4658203125,0.501953125,0.53515625,0.5546875,0.5595703125,0.5576171875,0.5419921875,0.5126953125,0.4765625,0.447265625,0.431640625,0.4296875,0.4248046875,0.3994140625,0.375,0.37890625,0.419921875,0.486328125,0.5595703125,0.6298828125,0.6845703125,0.7021484375,0.6767578125,0.6279296875,0.5888671875,0.5791015625,0.5751953125,0.556640625,0.5205078125,0.478515625,0.4423828125,0.423828125,0.419921875,0.4306640625,0.48046875,0.5478515625,0.595703125,0.5986328125,0.5556640625,0.4892578125,0.4228515625,0.3818359375,0.3876953125,0.4404296875,0.5126953125,0.5654296875,0.5791015625,0.5703125,0.52734375,0.4697265625,0.43359375,0.44140625,0.490234375,0.5595703125,0.619140625,0.6298828125,0.58984375,0.529296875,0.4892578125,0.5,0.5595703125,0.62890625,0.681640625,0.6962890625,0.66796875,0.6162109375,0.5771484375,0.5693359375,0.568359375,0.5537109375,0.5244140625,0.490234375,0.4599609375,0.443359375,0.439453125,0.4306640625,0.3955078125,0.3525390625,0.3359375,0.3603515625,0.4189453125,0.4892578125,0.5576171875,0.6005859375,0.5966796875,0.5478515625,0.478515625,0.4296875,0.419921875,0.421875,0.423828125,0.427734375,0.431640625,0.435546875,0.4375,0.439453125,0.44140625,0.4423828125,0.4423828125,0.4423828125,0.4404296875,0.4404296875,0.439453125,0.443359375,0.4599609375,0.4912109375,0.5283203125,0.55859375,0.576171875,0.5791015625,0.576171875,0.5576171875,0.525390625,0.48828125,0.45703125,0.44140625,0.439453125,0.4521484375,0.5009765625,0.56640625,0.609375,0.60546875,0.55859375,0.4892578125,0.4111328125,0.3212890625,0.2607421875,0.267578125,0.3388671875,0.4326171875,0.509765625,0.5654296875,0.5712890625,0.5263671875,0.4619140625,0.419921875,0.4296875,0.4892578125,0.5517578125,0.57421875,0.5537109375,0.515625,0.4931640625,0.5107421875,0.5693359375,0.6259765625,0.63671875,0.599609375,0.5439453125,0.5078125,0.5205078125,0.5791015625,0.6357421875,0.634765625,0.576171875,0.4931640625,0.43359375,0.43359375,0.4892578125,0.5556640625,0.59765625,0.59375,0.544921875,0.4775390625,0.4296875,0.419921875,0.421875,0.4267578125,0.4326171875,0.4375,0.4404296875,0.44140625,0.439453125,0.4501953125,0.5048828125,0.5830078125,0.6455078125,0.66015625,0.6240234375,0.5595703125,0.5009765625,0.4931640625,0.537109375,0.6015625,0.6455078125,0.63671875,0.5791015625,0.501953125,0.41015625,0.3466796875,0.34765625,0.412109375,0.5029296875,0.5791015625,0.6337890625,0.6318359375,0.572265625,0.490234375,0.4326171875,0.4326171875,0.4892578125,0.568359375,0.662109375,0.7314453125,0.7373046875,0.6767578125,0.5869140625,0.509765625,0.439453125,0.3798828125,0.3515625,0.3623046875,0.3994140625,0.431640625,0.439453125,0.431640625,0.3994140625,0.3623046875,0.3515625,0.3798828125,0.439453125,0.509765625,0.5859375,0.66796875,0.7138671875,0.6904296875,0.60546875,0.5009765625,0.419921875,0.353515625,0.3193359375,0.337890625,0.40625,0.490234375,0.5478515625,0.5595703125,0.5634765625,0.5859375,0.60546875,0.59765625,0.5556640625,0.4892578125,0.419921875,0.3623046875,0.3525390625,0.390625,0.4482421875,0.4873046875,0.4765625,0.419921875,0.3662109375,0.3740234375,0.4462890625,0.54296875,0.615234375,0.623046875,0.5693359375,0.51171875,0.49609375,0.5234375,0.56640625,0.5908203125,0.5712890625,0.509765625,0.4375,0.375,0.341796875,0.3505859375,0.38671875,0.419921875,0.4296875,0.4306640625,0.4296875,0.4267578125,0.4228515625,0.419921875,0.4189453125,0.419921875,0.4248046875,0.4453125,0.4814453125,0.5234375,0.5576171875,0.576171875,0.5791015625,0.5849609375,0.6064453125,0.6240234375,0.6142578125,0.568359375,0.5,0.4296875,0.373046875,0.3623046875,0.400390625,0.458984375,0.4970703125,0.486328125,0.4296875,0.36328125,0.3134765625,0.2998046875,0.326171875,0.375,0.412109375,0.419921875,0.412109375,0.3896484375,0.373046875,0.3857421875,0.435546875,0.5068359375,0.5791015625,0.6357421875,0.6376953125,0.58203125,0.501953125,0.4453125,0.4443359375,0.5,0.5546875,0.5546875,0.498046875,0.419921875,0.3671875,0.37109375,0.4296875,0.4931640625,0.5234375,0.517578125,0.298828125,0.3369140625,0.40625,0.484375,0.55078125,0.6123046875,0.666015625,0.689453125,0.6728515625,0.62890625,0.587890625,0.5703125,0.5537109375,0.5234375,0.4990234375,0.50390625,0.546875,0.609375,0.673828125,0.720703125,0.7109375,0.646484375,0.5625,0.5068359375,0.5107421875,0.5703125,0.63671875,0.671875,0.6533203125,0.5859375,0.5009765625,0.4423828125,0.4287109375,0.4267578125,0.4140625,0.39453125,0.376953125,0.3671875,0.3681640625,0.376953125,0.3955078125,0.439453125,0.490234375,0.521484375,0.515625,0.478515625,0.4287109375,0.3798828125,0.341796875,0.3291015625,0.3408203125,0.3662109375,0.3818359375,0.376953125,0.36328125,0.34375,0.3388671875,0.3681640625,0.4296875,0.5048828125,0.5703125,0.640625,0.7333984375,0.8134765625,0.8408203125,0.806640625,0.7392578125,0.673828125,0.619140625,0.595703125,0.6025390625,0.6220703125,0.62890625,0.60546875,0.55078125,0.5,0.4912109375,0.521484375,0.564453125,0.5849609375,0.5615234375,0.5,0.435546875,0.40625,0.419921875,0.4580078125,0.490234375,0.48828125,0.4482421875,0.4091796875,0.419921875,0.4794921875,0.5546875,0.6044921875,0.6015625,0.55078125,0.5,0.4912109375,0.525390625,0.5771484375,0.611328125,0.6025390625,0.55078125,0.48828125,0.4287109375,0.390625,0.3837890625,0.40234375,0.4228515625,0.4287109375,0.421875,0.3974609375,0.3759765625,0.3828125,0.427734375,0.4970703125,0.5703125,0.6494140625,0.744140625,0.818359375,0.8369140625,0.796875,0.73046875,0.673828125,0.607421875,0.4921875,0.359375,0.2626953125,0.234375,0.2666015625,0.3251953125,0.3955078125,0.484375,0.5615234375,0.5888671875,0.5615234375,0.5029296875,0.4482421875,0.4091796875,0.419921875,0.4794921875,0.5546875,0.6044921875,0.6015625,0.55078125,0.4931640625,0.451171875,0.4267578125,0.4150390625,0.4013671875,0.3720703125,0.3251953125,0.28125,0.2744140625,0.3232421875,0.4189453125,0.5244140625,0.59765625,0.6220703125,0.625,0.6025390625,0.56640625,0.541015625,0.5419921875,0.5732421875,0.6220703125,0.6611328125,0.654296875,0.6025390625,0.5361328125,0.4931640625,0.5,0.55078125,0.607421875,0.630859375,0.599609375,0.5185546875,0.419921875,0.349609375,0.3251953125,0.3193359375,0.3359375,0.380859375,0.4453125,0.509765625,0.552734375,0.5703125,0.57421875,0.552734375,0.50390625,0.443359375,0.39453125,0.373046875,0.376953125,0.3818359375,0.37109375,0.3623046875,0.37890625,0.427734375,0.4970703125,0.5703125,0.642578125,0.70703125,0.7431640625,0.740234375,0.7099609375,0.6806640625,0.673828125,0.6650390625,0.623046875,0.5458984375,0.453125,0.3759765625,0.333984375,0.3251953125,0.3369140625,0.3876953125,0.4609375,0.5185546875,0.5341796875,0.5048828125,0.4482421875,0.3916015625,0.3681640625,0.3994140625,0.48046875,0.5791015625,0.6494140625,0.673828125,0.6708984375,0.6240234375,0.5498046875,0.48828125,0.470703125,0.50390625,0.5703125,0.6298828125,0.640625,0.6005859375,0.5400390625,0.4990234375,0.509765625,0.5703125,0.6396484375,0.6923828125,0.708984375,0.6884765625,0.6484375,0.6201171875,0.6220703125,0.626953125,0.611328125,0.5703125,0.5146484375,0.46484375,0.4345703125,0.4287109375,0.419921875,0.3798828125,0.3310546875,0.3056640625,0.3232421875,0.3779296875,0.4482421875,0.513671875,0.544921875,0.5234375,0.4560546875,0.376953125,0.328125,0.3251953125,0.3369140625,0.3505859375,0.3681640625,0.38671875,0.404296875,0.41796875,0.4287109375,0.439453125,0.4462890625,0.4482421875,0.4443359375,0.4365234375,0.4306640625,0.4287109375,0.4345703125,0.46484375,0.5185546875,0.5830078125,0.6376953125,0.66796875,0.673828125,0.666015625,0.630859375,0.568359375,0.4990234375,0.4462890625,0.4248046875,0.4287109375,0.44921875,0.5009765625,0.560546875,0.591796875,0.5751953125,0.5185546875,0.4482421875,0.373046875,0.3037109375,0.275390625,0.3115234375,0.3974609375,0.4892578125,0.55078125,0.5888671875,0.5712890625,0.50390625,0.4248046875,0.376953125,0.3876953125,0.4482421875,0.5146484375,0.55859375,0.572265625,0.56640625,0.5615234375,0.578125,0.6220703125,0.6640625,0.671875,0.6474609375,0.61328125,0.59765625,0.619140625,0.673828125,0.7197265625,0.701171875,0.6162109375,0.5048828125,0.419921875,0.40234375,0.4482421875,0.5029296875,0.52734375,0.50390625,0.4404296875,0.3701171875,0.3271484375,0.3251953125,0.33984375,0.3662109375,0.3984375,0.42578125,0.439453125,0.4384765625,0.4287109375,0.4306640625,0.4755859375,0.55078125,0.619140625,0.646484375,0.625,0.5703125,0.521484375,0.5244140625,0.58203125,0.6611328125,0.71875,0.7216796875,0.673828125,0.6064453125,0.5322265625,0.482421875,0.4873046875,0.5419921875,0.615234375,0.673828125,0.708984375,0.68359375,0.5966796875,0.4892578125,0.4130859375,0.400390625,0.4482421875,0.5185546875,0.611328125,0.69140625,0.71875,0.6845703125,0.6171875,0.55078125,0.48828125,0.4287109375,0.390625,0.3837890625,0.40234375,0.4228515625,0.4287109375,0.4228515625,0.40234375,0.3837890625,0.390625,0.4287109375,0.48828125,0.55078125,0.615234375,0.6748046875,0.689453125,0.6337890625,0.5244140625,0.4091796875,0.3251953125,0.2626953125,0.24609375,0.294921875,0.39453125,0.5009765625,0.564453125,0.5703125,0.5615234375,0.5537109375,0.53515625,0.4970703125,0.4404296875,0.3798828125,0.3251953125,0.283203125,0.275390625,0.3037109375,0.34765625,0.3759765625,0.3681640625,0.3251953125,0.2900390625,0.318359375,0.4130859375,0.5341796875,0.62890625,0.6572265625,0.6220703125,0.580078125,0.576171875,0.6044921875,0.6376953125,0.646484375,0.615234375,0.55078125,0.4755859375,0.396484375,0.3369140625,0.31640625,0.3330078125,0.361328125,0.376953125,0.384765625,0.3798828125,0.3623046875,0.33984375,0.3232421875,0.318359375,0.3251953125,0.34375,0.3935546875,0.4736328125,0.560546875,0.630859375,0.6669921875,0.673828125,0.673828125,0.6669921875,0.638671875,0.58203125,0.5068359375,0.43359375,0.376953125,0.3349609375,0.3271484375,0.35546875,0.3984375,0.427734375,0.419921875,0.376953125,0.328125,0.2900390625,0.27734375,0.2900390625,0.314453125,0.330078125,0.3251953125,0.3154296875,0.314453125,0.34375,0.4140625,0.5107421875,0.6044921875,0.673828125,0.7216796875,0.7158203125,0.650390625,0.556640625,0.482421875,0.462890625,0.5,0.5361328125,0.5166015625,0.4453125,0.361328125,0.3095703125,0.3173828125,0.376953125,0.4453125,0.498046875,0.5322265625,0.26953125,0.353515625,0.4580078125,0.548828125,0.6044921875,0.650390625,0.6904296875,0.701171875,0.673828125,0.6181640625,0.5634765625,0.5302734375,0.5029296875,0.482421875,0.4912109375,0.5380859375,0.61328125,0.6875,0.740234375,0.76953125,0.7353515625,0.6435546875,0.5380859375,0.470703125,0.4716796875,0.5302734375,0.5986328125,0.6435546875,0.642578125,0.5966796875,0.529296875,0.48046875,0.46875,0.462890625,0.4345703125,0.3916015625,0.3525390625,0.333984375,0.3408203125,0.3642578125,0.39453125,0.4375,0.48046875,0.5048828125,0.5048828125,0.4892578125,0.46875,0.4521484375,0.4404296875,0.43359375,0.4248046875,0.41015625,0.3896484375,0.3642578125,0.3359375,0.310546875,0.30859375,0.3447265625,0.4091796875,0.478515625,0.5302734375,0.5849609375,0.669921875,0.7587890625,0.814453125,0.8193359375,0.78515625,0.740234375,0.69921875,0.67578125,0.6708984375,0.673828125,0.6689453125,0.6455078125,0.6044921875,0.568359375,0.5634765625,0.5849609375,0.607421875,0.6044921875,0.5654296875,0.5,0.4296875,0.3759765625,0.353515625,0.36328125,0.390625,0.4052734375,0.39453125,0.38671875,0.4248046875,0.501953125,0.5849609375,0.6376953125,0.6416015625,0.6044921875,0.56640625,0.5595703125,0.5849609375,0.6240234375,0.6494140625,0.642578125,0.6044921875,0.5576171875,0.5078125,0.46875,0.4521484375,0.4560546875,0.4658203125,0.46875,0.4609375,0.4267578125,0.38671875,0.3720703125,0.3984375,0.458984375,0.5302734375,0.607421875,0.6962890625,0.7705078125,0.8037109375,0.7939453125,0.763671875,0.740234375,0.7041015625,0.60546875,0.4609375,0.322265625,0.2373046875,0.2236328125,0.2587890625,0.30859375,0.369140625,0.421875,0.447265625,0.439453125,0.416015625,0.39453125,0.38671875,0.4248046875,0.501953125,0.5849609375,0.6376953125,0.6416015625,0.6044921875,0.5546875,0.4912109375,0.419921875,0.35546875,0.30859375,0.279296875,0.2587890625,0.2451171875,0.26171875,0.3232421875,0.4189453125,0.521484375,0.59765625,0.634765625,0.658203125,0.666015625,0.6572265625,0.6376953125,0.6220703125,0.6201171875,0.634765625,0.646484375,0.6298828125,0.5927734375,0.5576171875,0.5458984375,0.5634765625,0.6044921875,0.64453125,0.650390625,0.6015625,0.501953125,0.38671875,0.298828125,0.2587890625,0.236328125,0.234375,0.2705078125,0.341796875,0.4267578125,0.494140625,0.5302734375,0.5478515625,0.5322265625,0.48046875,0.4140625,0.3623046875,0.345703125,0.3642578125,0.3837890625,0.380859375,0.3701171875,0.3720703125,0.40234375,0.4599609375,0.5302734375,0.6044921875,0.6826171875,0.7421875,0.767578125,0.76171875,0.7451171875,0.740234375,0.728515625,0.6708984375,0.5634765625,0.435546875,0.328125,0.2705078125,0.2587890625,0.2685546875,0.3115234375,0.375,0.4306640625,0.4521484375,0.435546875,0.39453125,0.3544921875,0.3486328125,0.3974609375,0.4970703125,0.6123046875,0.7001953125,0.740234375,0.7509765625,0.703125,0.607421875,0.5107421875,0.45703125,0.46875,0.5302734375,0.58984375,0.6005859375,0.560546875,0.4990234375,0.458984375,0.4697265625,0.5302734375,0.5986328125,0.6484375,0.6650390625,0.6513671875,0.626953125,0.6171875,0.634765625,0.6572265625,0.65625,0.6240234375,0.568359375,0.51171875,0.4765625,0.46875,0.45703125,0.40625,0.3369140625,0.2861328125,0.283203125,0.326171875,0.39453125,0.45703125,0.4775390625,0.44140625,0.3642578125,0.28515625,0.24609375,0.2587890625,0.2861328125,0.3154296875,0.34765625,0.380859375,0.4130859375,0.4423828125,0.46875,0.4951171875,0.513671875,0.5185546875,0.5078125,0.48828125,0.47265625,0.46875,0.4755859375,0.5087890625,0.568359375,0.640625,0.701171875,0.7333984375,0.740234375,0.73046875,0.681640625,0.6015625,0.5185546875,0.4638671875,0.4501953125,0.46875,0.5029296875,0.5546875,0.5966796875,0.595703125,0.546875,0.4697265625,0.39453125,0.3271484375,0.2890625,0.30859375,0.38671875,0.490234375,0.5712890625,0.6044921875,0.6083984375,0.5546875,0.4580078125,0.3642578125,0.31640625,0.33203125,0.39453125,0.466796875,0.5380859375,0.5908203125,0.6162109375,0.619140625,0.62109375,0.634765625,0.6494140625,0.6494140625,0.642578125,0.6435546875,0.6611328125,0.6962890625,0.740234375,0.76953125,0.734375,0.6318359375,0.501953125,0.3994140625,0.3642578125,0.39453125,0.431640625,0.4326171875,0.3916015625,0.3251953125,0.2666015625,0.2431640625,0.2587890625,0.29296875,0.353515625,0.4248046875,0.48046875,0.5029296875,0.4931640625,0.46875,0.451171875,0.4658203125,0.5078125,0.5546875,0.5791015625,0.5693359375,0.5302734375,0.4970703125,0.515625,0.587890625,0.681640625,0.75390625,0.7734375,0.740234375,0.693359375,0.6494140625,0.626953125,0.6376953125,0.6748046875,0.7158203125,0.740234375,0.744140625,0.689453125,0.58203125,0.4638671875,0.380859375,0.361328125,0.39453125,0.44921875,0.53515625,0.6240234375,0.6796875,0.6845703125,0.650390625,0.6044921875,0.5576171875,0.5078125,0.46875,0.4521484375,0.4560546875,0.4658203125,0.46875,0.4658203125,0.4560546875,0.4521484375,0.46875,0.5078125,0.5576171875,0.6044921875,0.650390625,0.68359375,0.66796875,0.587890625,0.4638671875,0.3427734375,0.2587890625,0.19921875,0.1953125,0.26171875,0.375,0.484375,0.5390625,0.5302734375,0.5009765625,0.458984375,0.408203125,0.35546875,0.3115234375,0.2802734375,0.2587890625,0.2431640625,0.240234375,0.2509765625,0.2666015625,0.27734375,0.2744140625,0.2587890625,0.251953125,0.294921875,0.3896484375,0.5048828125,0.599609375,0.6416015625,0.634765625,0.6259765625,0.650390625,0.693359375,0.7236328125,0.7177734375,0.6728515625,0.6044921875,0.525390625,0.4287109375,0.341796875,0.2978515625,0.3017578125,0.333984375,0.3642578125,0.3837890625,0.375,0.3369140625,0.2861328125,0.248046875,0.2392578125,0.2587890625,0.2958984375,0.373046875,0.4853515625,0.6015625,0.689453125,0.732421875,0.740234375,0.734375,0.69921875,0.6298828125,0.5380859375,0.451171875,0.3916015625,0.3642578125,0.3486328125,0.345703125,0.3564453125,0.3720703125,0.3828125,0.3798828125,0.3642578125,0.3466796875,0.3359375,0.328125,0.3193359375,0.3056640625,0.2841796875,0.2587890625,0.23828125,0.2509765625,0.3193359375,0.4384765625,0.57421875,0.6806640625,0.740234375,0.7763671875,0.7685546875,0.708984375,0.619140625,0.53515625,0.4931640625,0.5,0.5048828125,0.4609375,0.3798828125,0.306640625,0.275390625,0.2998046875,0.3642578125,0.4365234375,0.5078125,0.5712890625,0.2734375,0.3798828125,0.5029296875,0.5947265625,0.634765625,0.6630859375,0.6884765625,0.6904296875,0.654296875,0.58984375,0.5205078125,0.46875,0.427734375,0.412109375,0.4443359375,0.5244140625,0.623046875,0.7021484375,0.740234375,0.7490234375,0.6943359375,0.5849609375,0.4716796875,0.4052734375,0.4091796875,0.46875,0.5400390625,0.6005859375,0.626953125,0.6123046875,0.572265625,0.5380859375,0.5302734375,0.5205078125,0.4775390625,0.4140625,0.3583984375,0.3369140625,0.353515625,0.39453125,0.439453125,0.4775390625,0.501953125,0.5107421875,0.5107421875,0.5146484375,0.5302734375,0.5517578125,0.5751953125,0.58203125,0.5576171875,0.5048828125,0.4443359375,0.39453125,0.3486328125,0.30859375,0.2978515625,0.3251953125,0.380859375,0.435546875,0.46875,0.5048828125,0.572265625,0.6572265625,0.728515625,0.7646484375,0.7626953125,0.740234375,0.7158203125,0.69921875,0.6904296875,0.6845703125,0.67578125,0.6591796875,0.634765625,0.6162109375,0.6220703125,0.640625,0.646484375,0.6220703125,0.568359375,0.5,0.423828125,0.34375,0.2861328125,0.2734375,0.2998046875,0.3388671875,0.3642578125,0.392578125,0.4541015625,0.5380859375,0.61328125,0.654296875,0.6572265625,0.634765625,0.61328125,0.609375,0.6240234375,0.646484375,0.6611328125,0.6572265625,0.634765625,0.6064453125,0.5751953125,0.546875,0.5302734375,0.5263671875,0.5283203125,0.5302734375,0.5185546875,0.4697265625,0.40234375,0.3564453125,0.35546875,0.400390625,0.46875,0.54296875,0.6171875,0.6767578125,0.7099609375,0.720703125,0.7255859375,0.740234375,0.7431640625,0.68359375,0.560546875,0.4140625,0.296875,0.2470703125,0.2587890625,0.2841796875,0.3056640625,0.3193359375,0.328125,0.3359375,0.3466796875,0.3642578125,0.392578125,0.4541015625,0.5380859375,0.61328125,0.654296875,0.6572265625,0.634765625,0.59765625,0.521484375,0.4189453125,0.3232421875,0.26171875,0.2451171875,0.2587890625,0.279296875,0.30859375,0.35546875,0.419921875,0.4912109375,0.5546875,0.6044921875,0.6513671875,0.6953125,0.7177734375,0.70703125,0.669921875,0.62890625,0.6044921875,0.5830078125,0.5576171875,0.541015625,0.5458984375,0.572265625,0.6064453125,0.634765625,0.658203125,0.658203125,0.61328125,0.521484375,0.4091796875,0.3154296875,0.2587890625,0.2138671875,0.1796875,0.1845703125,0.240234375,0.3291015625,0.4140625,0.46875,0.5048828125,0.5029296875,0.4609375,0.40234375,0.3603515625,0.3583984375,0.39453125,0.4306640625,0.4306640625,0.40234375,0.373046875,0.369140625,0.404296875,0.46875,0.544921875,0.630859375,0.7041015625,0.7451171875,0.7529296875,0.744140625,0.740234375,0.728515625,0.6708984375,0.5634765625,0.435546875,0.328125,0.2705078125,0.2587890625,0.2646484375,0.29296875,0.3359375,0.375,0.3935546875,0.3876953125,0.3642578125,0.3408203125,0.3408203125,0.3857421875,0.4775390625,0.58984375,0.68359375,0.740234375,0.767578125,0.7265625,0.62109375,0.5,0.4189453125,0.412109375,0.46875,0.529296875,0.5400390625,0.5,0.4384765625,0.3984375,0.4091796875,0.46875,0.5361328125,0.578125,0.587890625,0.57421875,0.5595703125,0.5673828125,0.6044921875,0.6474609375,0.6708984375,0.6630859375,0.6240234375,0.5732421875,0.5380859375,0.5302734375,0.515625,0.4541015625,0.36328125,0.2900390625,0.265625,0.2978515625,0.3642578125,0.4248046875,0.4384765625,0.39453125,0.3173828125,0.2490234375,0.2275390625,0.2587890625,0.302734375,0.3427734375,0.3779296875,0.4111328125,0.4462890625,0.4853515625,0.5302734375,0.57421875,0.607421875,0.615234375,0.5966796875,0.5625,0.5361328125,0.5302734375,0.53515625,0.560546875,0.607421875,0.6630859375,0.7099609375,0.7353515625,0.740234375,0.728515625,0.6767578125,0.5966796875,0.521484375,0.4833984375,0.490234375,0.5302734375,0.580078125,0.634765625,0.6591796875,0.626953125,0.54296875,0.4443359375,0.3642578125,0.3037109375,0.294921875,0.3564453125,0.4658203125,0.576171875,0.63671875,0.634765625,0.6005859375,0.51171875,0.39453125,0.30078125,0.267578125,0.2978515625,0.3642578125,0.4423828125,0.53515625,0.6162109375,0.6572265625,0.6533203125,0.626953125,0.6044921875,0.5859375,0.5732421875,0.580078125,0.6123046875,0.662109375,0.708984375,0.740234375,0.7529296875,0.7119140625,0.61328125,0.4912109375,0.392578125,0.3505859375,0.3642578125,0.380859375,0.361328125,0.30859375,0.2509765625,0.2158203125,0.220703125,0.2587890625,0.3154296875,0.408203125,0.5107421875,0.58203125,0.6005859375,0.57421875,0.5302734375,0.48828125,0.462890625,0.4609375,0.474609375,0.490234375,0.490234375,0.46875,0.453125,0.482421875,0.5576171875,0.6513671875,0.7265625,0.755859375,0.740234375,0.716796875,0.708984375,0.7177734375,0.7373046875,0.7529296875,0.7548828125,0.740234375,0.708984375,0.634765625,0.52734375,0.4248046875,0.359375,0.3447265625,0.3642578125,0.3994140625,0.466796875,0.5517578125,0.6240234375,0.66015625,0.658203125,0.634765625,0.6064453125,0.5751953125,0.546875,0.5302734375,0.5263671875,0.5283203125,0.5302734375,0.5283203125,0.5263671875,0.5302734375,0.546875,0.5751953125,0.6064453125,0.634765625,0.662109375,0.6767578125,0.6513671875,0.5712890625,0.4541015625,0.3408203125,0.2587890625,0.2001953125,0.2001953125,0.267578125,0.3720703125,0.4638671875,0.498046875,0.46875,0.41796875,0.34765625,0.2783203125,0.234375,0.224609375,0.2392578125,0.2587890625,0.2744140625,0.27734375,0.2666015625,0.2509765625,0.240234375,0.2431640625,0.2587890625,0.283203125,0.3271484375,0.39453125,0.4697265625,0.5361328125,0.5810546875,0.6044921875,0.6337890625,0.693359375,0.7568359375,0.787109375,0.7666015625,0.70703125,0.634765625,0.5537109375,0.4453125,0.3447265625,0.2919921875,0.30078125,0.345703125,0.39453125,0.4287109375,0.4189453125,0.36328125,0.2900390625,0.234375,0.224609375,0.2587890625,0.314453125,0.40625,0.521484375,0.6298828125,0.703125,0.7353515625,0.740234375,0.7294921875,0.6767578125,0.5849609375,0.4853515625,0.412109375,0.3837890625,0.39453125,0.41015625,0.4130859375,0.40234375,0.38671875,0.3759765625,0.37890625,0.39453125,0.416015625,0.439453125,0.447265625,0.421875,0.369140625,0.30859375,0.2587890625,0.22265625,0.232421875,0.3115234375,0.447265625,0.5927734375,0.697265625,0.740234375,0.7626953125,0.763671875,0.7294921875,0.662109375,0.5859375,0.52734375,0.5,0.46875,0.400390625,0.3203125,0.26953125,0.2734375,0.32421875,0.39453125,0.46875,0.5478515625,0.6181640625,0.3037109375,0.4033203125,0.5166015625,0.595703125,0.6220703125,0.6357421875,0.6552734375,0.66015625,0.630859375,0.5693359375,0.494140625,0.4287109375,0.3740234375,0.3525390625,0.3876953125,0.4736328125,0.576171875,0.6494140625,0.673828125,0.66796875,0.6044921875,0.498046875,0.3984375,0.349609375,0.3662109375,0.4287109375,0.501953125,0.5712890625,0.6162109375,0.623046875,0.6015625,0.5771484375,0.5703125,0.55859375,0.5078125,0.435546875,0.376953125,0.361328125,0.390625,0.4482421875,0.5029296875,0.533203125,0.5341796875,0.5185546875,0.509765625,0.5263671875,0.5703125,0.625,0.68359375,0.7109375,0.68359375,0.6064453125,0.517578125,0.4482421875,0.38671875,0.3330078125,0.3095703125,0.326171875,0.3701171875,0.4111328125,0.4287109375,0.4462890625,0.4892578125,0.5537109375,0.6181640625,0.6630859375,0.6796875,0.673828125,0.6630859375,0.6552734375,0.650390625,0.6455078125,0.6396484375,0.6318359375,0.6220703125,0.619140625,0.6376953125,0.662109375,0.6650390625,0.6318359375,0.5703125,0.5,0.419921875,0.3232421875,0.244140625,0.220703125,0.2568359375,0.3203125,0.376953125,0.43359375,0.5068359375,0.5791015625,0.6259765625,0.640625,0.6328125,0.6220703125,0.61328125,0.611328125,0.6171875,0.6259765625,0.6318359375,0.6298828125,0.6220703125,0.6103515625,0.5966796875,0.5830078125,0.57421875,0.5703125,0.5693359375,0.5703125,0.556640625,0.498046875,0.4130859375,0.345703125,0.3271484375,0.3623046875,0.4287109375,0.4970703125,0.5498046875,0.580078125,0.5927734375,0.6025390625,0.6279296875,0.673828125,0.7138671875,0.7021484375,0.626953125,0.5087890625,0.39453125,0.3310546875,0.3251953125,0.330078125,0.314453125,0.2900390625,0.27734375,0.2900390625,0.328125,0.376953125,0.43359375,0.5068359375,0.5791015625,0.6259765625,0.640625,0.6328125,0.6220703125,0.59765625,0.5244140625,0.4189453125,0.3232421875,0.2744140625,0.28125,0.3251953125,0.3720703125,0.4013671875,0.4150390625,0.4267578125,0.451171875,0.4931640625,0.55078125,0.6181640625,0.6923828125,0.7421875,0.7373046875,0.6826171875,0.609375,0.55078125,0.501953125,0.466796875,0.4658203125,0.501953125,0.556640625,0.6025390625,0.6220703125,0.6337890625,0.640625,0.6220703125,0.5654296875,0.48046875,0.3935546875,0.3251953125,0.259765625,0.1923828125,0.158203125,0.185546875,0.265625,0.3583984375,0.4287109375,0.48046875,0.4921875,0.4619140625,0.4150390625,0.384765625,0.396484375,0.4482421875,0.4970703125,0.498046875,0.451171875,0.390625,0.353515625,0.3681640625,0.4287109375,0.5048828125,0.5869140625,0.654296875,0.6884765625,0.689453125,0.677734375,0.673828125,0.6650390625,0.623046875,0.5458984375,0.453125,0.3759765625,0.333984375,0.3251953125,0.328125,0.3408203125,0.3603515625,0.3779296875,0.3876953125,0.3857421875,0.376953125,0.365234375,0.3583984375,0.376953125,0.43359375,0.5185546875,0.60546875,0.673828125,0.7177734375,0.6904296875,0.59375,0.4736328125,0.38671875,0.373046875,0.4287109375,0.4892578125,0.5,0.458984375,0.3984375,0.3583984375,0.369140625,0.4287109375,0.4931640625,0.5244140625,0.51953125,0.4951171875,0.48046875,0.4990234375,0.55078125,0.611328125,0.658203125,0.673828125,0.6533203125,0.611328125,0.578125,0.5703125,0.5556640625,0.490234375,0.3935546875,0.3125,0.283203125,0.3125,0.376953125,0.4375,0.4482421875,0.404296875,0.333984375,0.2802734375,0.27734375,0.3251953125,0.3828125,0.4208984375,0.44140625,0.4541015625,0.474609375,0.513671875,0.5703125,0.6298828125,0.6748046875,0.685546875,0.66015625,0.6142578125,0.578125,0.5703125,0.572265625,0.5849609375,0.6083984375,0.6357421875,0.658203125,0.6708984375,0.673828125,0.662109375,0.6142578125,0.5458984375,0.4921875,0.48046875,0.5126953125,0.5703125,0.634765625,0.6982421875,0.7197265625,0.673828125,0.5712890625,0.4599609375,0.376953125,0.3203125,0.3271484375,0.40625,0.5224609375,0.62109375,0.6552734375,0.6220703125,0.556640625,0.4482421875,0.330078125,0.2568359375,0.25390625,0.306640625,0.376953125,0.4580078125,0.5615234375,0.6513671875,0.6884765625,0.6640625,0.6064453125,0.55078125,0.5029296875,0.474609375,0.484375,0.5341796875,0.6015625,0.6533203125,0.673828125,0.6748046875,0.640625,0.5693359375,0.4814453125,0.41015625,0.3759765625,0.376953125,0.3779296875,0.34375,0.2880859375,0.244140625,0.236328125,0.2685546875,0.3251953125,0.3994140625,0.509765625,0.62109375,0.685546875,0.68359375,0.6328125,0.5703125,0.5087890625,0.4521484375,0.41796875,0.41015625,0.4228515625,0.43359375,0.4287109375,0.42578125,0.4541015625,0.5146484375,0.587890625,0.6484375,0.6767578125,0.673828125,0.669921875,0.6923828125,0.728515625,0.7548828125,0.7529296875,0.7216796875,0.673828125,0.615234375,0.5361328125,0.453125,0.3916015625,0.3662109375,0.3671875,0.376953125,0.39453125,0.4375,0.501953125,0.56640625,0.611328125,0.6279296875,0.6220703125,0.6103515625,0.5966796875,0.5830078125,0.57421875,0.5703125,0.5693359375,0.5703125,0.5693359375,0.5703125,0.57421875,0.5830078125,0.5966796875,0.6103515625,0.6220703125,0.634765625,0.6484375,0.6376953125,0.5849609375,0.498046875,0.4033203125,0.3251953125,0.2666015625,0.2626953125,0.318359375,0.4013671875,0.466796875,0.4765625,0.4287109375,0.359375,0.2724609375,0.2001953125,0.177734375,0.2099609375,0.26953125,0.3251953125,0.3681640625,0.3759765625,0.34765625,0.3037109375,0.275390625,0.283203125,0.3251953125,0.373046875,0.408203125,0.4306640625,0.4462890625,0.46875,0.50390625,0.55078125,0.6123046875,0.7001953125,0.7783203125,0.8056640625,0.7705078125,0.697265625,0.6220703125,0.5390625,0.4296875,0.33203125,0.291015625,0.31640625,0.3818359375,0.4482421875,0.49609375,0.490234375,0.4287109375,0.3447265625,0.283203125,0.27734375,0.3251953125,0.3935546875,0.48046875,0.5693359375,0.6357421875,0.6669921875,0.673828125,0.673828125,0.6611328125,0.6044921875,0.515625,0.4345703125,0.3935546875,0.4033203125,0.4482421875,0.490234375,0.498046875,0.4697265625,0.4267578125,0.3974609375,0.4052734375,0.4482421875,0.5029296875,0.5615234375,0.5888671875,0.5615234375,0.484375,0.3955078125,0.3251953125,0.2724609375,0.263671875,0.322265625,0.435546875,0.5615234375,0.646484375,0.673828125,0.6865234375,0.7021484375,0.7041015625,0.6748046875,0.619140625,0.5546875,0.5,0.4384765625,0.353515625,0.279296875,0.2568359375,0.296875,0.3720703125,0.4482421875,0.521484375,0.5947265625,0.6513671875,0.33984375,0.408203125,0.494140625,0.5546875,0.5693359375,0.5771484375,0.603515625,0.626953125,0.6220703125,0.5791015625,0.5107421875,0.439453125,0.375,0.33984375,0.3564453125,0.421875,0.505859375,0.564453125,0.5791015625,0.5673828125,0.509765625,0.42578125,0.3583984375,0.3388671875,0.373046875,0.439453125,0.5126953125,0.5791015625,0.619140625,0.6201171875,0.59375,0.56640625,0.5595703125,0.5478515625,0.4990234375,0.4306640625,0.3828125,0.3798828125,0.4228515625,0.4892578125,0.5498046875,0.5693359375,0.546875,0.5068359375,0.4833984375,0.5009765625,0.5595703125,0.6337890625,0.7158203125,0.765625,0.748046875,0.66796875,0.568359375,0.4892578125,0.419921875,0.361328125,0.3369140625,0.3525390625,0.3935546875,0.4296875,0.439453125,0.4443359375,0.4638671875,0.4970703125,0.533203125,0.5634765625,0.578125,0.5791015625,0.5771484375,0.576171875,0.5751953125,0.5732421875,0.572265625,0.5712890625,0.5693359375,0.576171875,0.6083984375,0.6455078125,0.658203125,0.630859375,0.5703125,0.5,0.4189453125,0.318359375,0.23828125,0.220703125,0.271484375,0.3544921875,0.4296875,0.5,0.5673828125,0.6123046875,0.62109375,0.6015625,0.5771484375,0.5693359375,0.568359375,0.5673828125,0.568359375,0.5703125,0.5712890625,0.5703125,0.5693359375,0.5673828125,0.5654296875,0.5625,0.560546875,0.5595703125,0.5595703125,0.5595703125,0.546875,0.490234375,0.41015625,0.3486328125,0.3349609375,0.373046875,0.439453125,0.5029296875,0.533203125,0.5263671875,0.50390625,0.494140625,0.51953125,0.5791015625,0.6416015625,0.671875,0.6474609375,0.5751953125,0.4892578125,0.431640625,0.419921875,0.412109375,0.375,0.326171875,0.2998046875,0.3134765625,0.36328125,0.4296875,0.5,0.5673828125,0.6123046875,0.62109375,0.6015625,0.5771484375,0.5693359375,0.5546875,0.4951171875,0.4111328125,0.3427734375,0.3232421875,0.3564453125,0.419921875,0.478515625,0.4990234375,0.4794921875,0.4443359375,0.4267578125,0.44921875,0.509765625,0.5869140625,0.677734375,0.7421875,0.7412109375,0.6767578125,0.5859375,0.509765625,0.4443359375,0.400390625,0.3994140625,0.4443359375,0.5087890625,0.556640625,0.5693359375,0.5771484375,0.6005859375,0.6201171875,0.609375,0.5615234375,0.4912109375,0.419921875,0.3427734375,0.2529296875,0.1923828125,0.197265625,0.2666015625,0.361328125,0.439453125,0.4990234375,0.515625,0.4873046875,0.44140625,0.4130859375,0.4296875,0.4892578125,0.546875,0.5498046875,0.498046875,0.4248046875,0.375,0.380859375,0.439453125,0.5126953125,0.58203125,0.626953125,0.6328125,0.6103515625,0.5859375,0.5791015625,0.5751953125,0.556640625,0.5205078125,0.478515625,0.4423828125,0.423828125,0.419921875,0.419921875,0.4228515625,0.42578125,0.4296875,0.4306640625,0.4306640625,0.4296875,0.421875,0.3984375,0.37890625,0.3896484375,0.4375,0.5078125,0.5791015625,0.6337890625,0.626953125,0.5546875,0.4580078125,0.388671875,0.3828125,0.439453125,0.5,0.509765625,0.4697265625,0.4091796875,0.369140625,0.3798828125,0.439453125,0.5009765625,0.521484375,0.498046875,0.45703125,0.431640625,0.44921875,0.509765625,0.5791015625,0.6357421875,0.66015625,0.6435546875,0.6025390625,0.568359375,0.5595703125,0.5458984375,0.4892578125,0.40625,0.341796875,0.326171875,0.36328125,0.4296875,0.4892578125,0.5,0.458984375,0.396484375,0.353515625,0.3623046875,0.419921875,0.4814453125,0.5087890625,0.5009765625,0.478515625,0.470703125,0.498046875,0.5595703125,0.6279296875,0.6787109375,0.69140625,0.662109375,0.609375,0.5693359375,0.5595703125,0.5595703125,0.5625,0.56640625,0.572265625,0.576171875,0.5791015625,0.5791015625,0.5693359375,0.5263671875,0.4697265625,0.4345703125,0.4423828125,0.4912109375,0.5595703125,0.634765625,0.7119140625,0.7490234375,0.7158203125,0.62109375,0.5126953125,0.4296875,0.373046875,0.376953125,0.4462890625,0.5419921875,0.6142578125,0.623046875,0.5693359375,0.4892578125,0.380859375,0.283203125,0.2451171875,0.2783203125,0.353515625,0.4296875,0.5107421875,0.6123046875,0.6943359375,0.71484375,0.666015625,0.583984375,0.509765625,0.4443359375,0.40234375,0.4033203125,0.4501953125,0.5166015625,0.56640625,0.5791015625,0.5771484375,0.5595703125,0.525390625,0.484375,0.4501953125,0.431640625,0.4296875,0.421875,0.380859375,0.326171875,0.2939453125,0.302734375,0.3525390625,0.419921875,0.5009765625,0.609375,0.7060546875,0.7431640625,0.708984375,0.6337890625,0.5595703125,0.48828125,0.423828125,0.3857421875,0.3837890625,0.4091796875,0.4345703125,0.439453125,0.44140625,0.4580078125,0.490234375,0.5283203125,0.560546875,0.5771484375,0.5791015625,0.5869140625,0.6259765625,0.6767578125,0.7060546875,0.6943359375,0.6455078125,0.5791015625,0.5087890625,0.439453125,0.392578125,0.3818359375,0.3994140625,0.421875,0.4296875,0.4345703125,0.4541015625,0.486328125,0.5234375,0.552734375,0.568359375,0.5693359375,0.5673828125,0.5654296875,0.5625,0.560546875,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.560546875,0.5625,0.5654296875,0.5673828125,0.5693359375,0.5771484375,0.6025390625,0.6220703125,0.6123046875,0.564453125,0.4931640625,0.419921875,0.3603515625,0.3505859375,0.39453125,0.4599609375,0.5048828125,0.4970703125,0.439453125,0.361328125,0.2685546875,0.2001953125,0.1953125,0.255859375,0.34375,0.419921875,0.4765625,0.4873046875,0.4482421875,0.390625,0.3525390625,0.3623046875,0.419921875,0.478515625,0.5,0.4814453125,0.447265625,0.4296875,0.4501953125,0.509765625,0.5869140625,0.6865234375,0.765625,0.783203125,0.732421875,0.6474609375,0.5693359375,0.48828125,0.384765625,0.3017578125,0.28125,0.330078125,0.4130859375,0.4892578125,0.5458984375,0.5478515625,0.4931640625,0.416015625,0.361328125,0.36328125,0.419921875,0.4912109375,0.5625,0.6103515625,0.623046875,0.6064453125,0.5849609375,0.5791015625,0.5673828125,0.5166015625,0.4462890625,0.3935546875,0.3857421875,0.4248046875,0.4892578125,0.546875,0.556640625,0.5185546875,0.4609375,0.421875,0.4326171875,0.4892578125,0.564453125,0.646484375,0.6953125,0.677734375,0.5986328125,0.4990234375,0.419921875,0.35546875,0.322265625,0.34375,0.4150390625,0.5029296875,0.564453125,0.5791015625,0.5888671875,0.6201171875,0.6533203125,0.66015625,0.62890625,0.568359375,0.5,0.4228515625,0.330078125,0.26171875,0.2578125,0.3193359375,0.41015625,0.4892578125,0.5615234375,0.623046875,0.6552734375,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.3818359375,0.3779296875,0.400390625,0.4248046875,0.4296875,0.4404296875,0.49609375,0.578125,0.64453125,0.6640625,0.6318359375,0.5693359375,0.4990234375,0.4306640625,0.384765625,0.375,0.392578125,0.4140625,0.419921875,0.4140625,0.392578125,0.3759765625,0.388671875,0.4365234375,0.5078125,0.5791015625,0.6435546875,0.67578125,0.6533203125,0.5810546875,0.4931640625,0.43359375,0.419921875,0.412109375,0.3818359375,0.3505859375,0.34375,0.376953125,0.439453125,0.509765625,0.5654296875,0.5654296875,0.505859375,0.4228515625,0.3642578125,0.36328125,0.419921875,0.5,0.6025390625,0.6875,0.7119140625,0.666015625,0.5849609375,0.509765625,0.4423828125,0.3984375,0.3984375,0.44140625,0.5048828125,0.5498046875,0.5595703125,0.5546875,0.5361328125,0.5048828125,0.46875,0.4384765625,0.4228515625,0.419921875,0.419921875,0.4189453125,0.4169921875,0.4169921875,0.4169921875,0.41796875,0.419921875,0.4326171875,0.4853515625,0.5556640625,0.6083984375,0.6142578125,0.57421875,0.509765625,0.4345703125,0.3486328125,0.2939453125,0.3056640625,0.380859375,0.478515625,0.5595703125,0.6259765625,0.6611328125,0.6435546875,0.576171875,0.4912109375,0.4326171875,0.419921875,0.419921875,0.4228515625,0.4267578125,0.4326171875,0.4365234375,0.439453125,0.439453125,0.439453125,0.4384765625,0.4375,0.4365234375,0.4365234375,0.4384765625,0.439453125,0.4345703125,0.41015625,0.38671875,0.388671875,0.4267578125,0.490234375,0.5595703125,0.61328125,0.60546875,0.5361328125,0.4423828125,0.3759765625,0.3720703125,0.4296875,0.5029296875,0.5751953125,0.623046875,0.6328125,0.6123046875,0.5869140625,0.5791015625,0.5673828125,0.5234375,0.4677734375,0.4345703125,0.447265625,0.5,0.5693359375,0.6357421875,0.6728515625,0.6572265625,0.5927734375,0.509765625,0.453125,0.439453125,0.4326171875,0.40625,0.380859375,0.3828125,0.4228515625,0.48828125,0.5595703125,0.6162109375,0.62109375,0.5703125,0.498046875,0.4482421875,0.4521484375,0.509765625,0.5869140625,0.6796875,0.744140625,0.744140625,0.6796875,0.5869140625,0.509765625,0.439453125,0.3759765625,0.341796875,0.3466796875,0.3798828125,0.41015625,0.419921875,0.4345703125,0.4931640625,0.5771484375,0.642578125,0.6591796875,0.6240234375,0.5595703125,0.4814453125,0.3896484375,0.3251953125,0.3271484375,0.3955078125,0.4892578125,0.5693359375,0.6279296875,0.6328125,0.580078125,0.50390625,0.4501953125,0.453125,0.509765625,0.5693359375,0.5869140625,0.5595703125,0.5146484375,0.486328125,0.5009765625,0.5595703125,0.623046875,0.658203125,0.6435546875,0.5810546875,0.5009765625,0.4443359375,0.4296875,0.431640625,0.4501953125,0.484375,0.525390625,0.5595703125,0.5771484375,0.5791015625,0.5771484375,0.57421875,0.5703125,0.5673828125,0.56640625,0.5673828125,0.5693359375,0.55859375,0.50390625,0.4248046875,0.3603515625,0.3427734375,0.3759765625,0.439453125,0.4990234375,0.5244140625,0.5126953125,0.486328125,0.474609375,0.5,0.5595703125,0.6162109375,0.6240234375,0.5830078125,0.5244140625,0.486328125,0.4990234375,0.5595703125,0.6181640625,0.6240234375,0.57421875,0.5009765625,0.44921875,0.4521484375,0.509765625,0.576171875,0.6171875,0.611328125,0.55859375,0.486328125,0.43359375,0.419921875,0.412109375,0.3896484375,0.373046875,0.3857421875,0.435546875,0.5068359375,0.5791015625,0.63671875,0.6435546875,0.5986328125,0.5341796875,0.490234375,0.5,0.5595703125,0.6162109375,0.61328125,0.546875,0.453125,0.3837890625,0.3759765625,0.4296875,0.49609375,0.546875,0.560546875,0.533203125,0.484375,0.447265625,0.439453125,0.44140625,0.44140625,0.4404296875,0.439453125,0.4384765625,0.4384765625,0.439453125,0.431640625,0.3916015625,0.33984375,0.3095703125,0.3212890625,0.3720703125,0.439453125,0.5205078125,0.626953125,0.71875,0.75,0.7119140625,0.634765625,0.5595703125,0.498046875,0.47265625,0.4853515625,0.513671875,0.5263671875,0.5009765625,0.439453125,0.365234375,0.2900390625,0.2548828125,0.2900390625,0.3837890625,0.490234375,0.5693359375,0.64453125,0.7275390625,0.779296875,0.763671875,0.6865234375,0.5888671875,0.509765625,0.439453125,0.3798828125,0.3505859375,0.359375,0.3935546875,0.423828125,0.4296875,0.431640625,0.4482421875,0.4814453125,0.521484375,0.556640625,0.5751953125,0.5791015625,0.5693359375,0.5283203125,0.4765625,0.447265625,0.4599609375,0.5107421875,0.5791015625,0.6533203125,0.7275390625,0.7578125,0.716796875,0.615234375,0.5029296875,0.419921875,0.353515625,0.3203125,0.3427734375,0.4150390625,0.5048828125,0.5654296875,0.5791015625,0.5751953125,0.556640625,0.521484375,0.4814453125,0.4482421875,0.431640625,0.4296875,0.4404296875,0.48046875,0.529296875,0.5546875,0.5390625,0.486328125,0.419921875,0.357421875,0.326171875,0.34765625,0.4169921875,0.5009765625,0.5576171875,0.5693359375,0.564453125,0.5458984375,0.513671875,0.4755859375,0.443359375,0.4248046875,0.419921875,0.4189453125,0.419921875,0.423828125,0.4296875,0.435546875,0.439453125,0.439453125,0.439453125,0.435546875,0.4296875,0.423828125,0.419921875,0.4189453125,0.419921875,0.4345703125,0.49609375,0.5830078125,0.65234375,0.6708984375,0.6357421875,0.5693359375,0.5087890625,0.49609375,0.533203125,0.58984375,0.6279296875,0.6181640625,0.5595703125,0.482421875,0.3935546875,0.333984375,0.33984375,0.4091796875,0.5029296875,0.5791015625,0.6357421875,0.642578125,0.5986328125,0.5341796875,0.4921875,0.5009765625,0.5595703125,0.6162109375,0.62109375,0.5703125,0.498046875,0.4482421875,0.4521484375,0.509765625,0.5849609375,0.666015625,0.7119140625,0.6875,0.6025390625,0.5,0.419921875,0.34375,0.2626953125,0.2177734375,0.2412109375,0.3271484375,0.4296875,0.509765625,0.5693359375,0.5869140625,0.5625,0.5205078125,0.4970703125,0.517578125,0.5791015625,0.646484375,0.6826171875,0.666015625,0.599609375,0.5146484375,0.4541015625,0.439453125,0.4296875,0.396484375,0.3583984375,0.345703125,0.373046875,0.431640625,0.5,0.5556640625,0.564453125,0.5224609375,0.4609375,0.4208984375,0.4306640625,0.4892578125,0.5693359375,0.671875,0.7578125,0.78125,0.736328125,0.6552734375,0.5791015625,0.5078125,0.4384765625,0.390625,0.37890625,0.3955078125,0.4150390625,0.419921875,0.4296875,0.478515625,0.5478515625,0.5966796875,0.6005859375,0.5576171875,0.4892578125,0.41015625,0.3173828125,0.2529296875,0.2548828125,0.32421875,0.419921875,0.5,0.5673828125,0.6103515625,0.6064453125,0.3984375,0.3779296875,0.37890625,0.3837890625,0.376953125,0.3798828125,0.431640625,0.5224609375,0.61328125,0.666015625,0.6640625,0.6220703125,0.5654296875,0.4921875,0.4169921875,0.3603515625,0.33203125,0.3251953125,0.3251953125,0.3251953125,0.33203125,0.36328125,0.4296875,0.5185546875,0.60546875,0.673828125,0.724609375,0.7275390625,0.6611328125,0.5439453125,0.419921875,0.341796875,0.3251953125,0.322265625,0.314453125,0.318359375,0.3525390625,0.4140625,0.486328125,0.55078125,0.5966796875,0.5791015625,0.494140625,0.3828125,0.2978515625,0.279296875,0.3251953125,0.3994140625,0.5068359375,0.6142578125,0.673828125,0.6669921875,0.6142578125,0.55078125,0.4931640625,0.45703125,0.45703125,0.4931640625,0.541015625,0.5712890625,0.5703125,0.5546875,0.5166015625,0.4609375,0.400390625,0.353515625,0.330078125,0.3251953125,0.32421875,0.318359375,0.310546875,0.3056640625,0.3076171875,0.3154296875,0.3251953125,0.34765625,0.4130859375,0.5029296875,0.580078125,0.61328125,0.5966796875,0.55078125,0.4921875,0.4150390625,0.3564453125,0.3525390625,0.408203125,0.4931640625,0.5703125,0.6337890625,0.6572265625,0.615234375,0.5205078125,0.4130859375,0.3408203125,0.3251953125,0.328125,0.3408203125,0.36328125,0.390625,0.4140625,0.4267578125,0.4287109375,0.427734375,0.421875,0.4140625,0.4091796875,0.4111328125,0.4189453125,0.4287109375,0.435546875,0.4306640625,0.42578125,0.4375,0.470703125,0.5185546875,0.5703125,0.60546875,0.5771484375,0.490234375,0.3876953125,0.3193359375,0.3193359375,0.376953125,0.455078125,0.5498046875,0.63671875,0.689453125,0.7001953125,0.6865234375,0.673828125,0.65234375,0.5966796875,0.529296875,0.490234375,0.5,0.5517578125,0.6220703125,0.6865234375,0.7158203125,0.6865234375,0.60546875,0.5087890625,0.443359375,0.4287109375,0.423828125,0.4052734375,0.390625,0.40234375,0.4453125,0.5068359375,0.5703125,0.62109375,0.6279296875,0.5888671875,0.5322265625,0.4931640625,0.5,0.55078125,0.619140625,0.7001953125,0.7568359375,0.7568359375,0.7001953125,0.619140625,0.55078125,0.484375,0.40625,0.3369140625,0.298828125,0.296875,0.3125,0.3251953125,0.349609375,0.4228515625,0.525390625,0.611328125,0.646484375,0.625,0.5703125,0.501953125,0.4208984375,0.3681640625,0.376953125,0.4482421875,0.5419921875,0.6220703125,0.681640625,0.689453125,0.6416015625,0.56640625,0.5087890625,0.5029296875,0.55078125,0.6044921875,0.6220703125,0.599609375,0.556640625,0.5244140625,0.5283203125,0.5703125,0.6162109375,0.63671875,0.6103515625,0.54296875,0.4599609375,0.3994140625,0.376953125,0.3759765625,0.41015625,0.4814453125,0.5693359375,0.640625,0.6748046875,0.673828125,0.66015625,0.640625,0.619140625,0.60546875,0.6044921875,0.611328125,0.6220703125,0.6201171875,0.5751953125,0.49609375,0.4189453125,0.3779296875,0.3857421875,0.4287109375,0.474609375,0.5,0.5029296875,0.49609375,0.4990234375,0.5244140625,0.5703125,0.609375,0.60546875,0.5615234375,0.5087890625,0.484375,0.5078125,0.5703125,0.630859375,0.6455078125,0.6083984375,0.5478515625,0.5009765625,0.501953125,0.55078125,0.607421875,0.630859375,0.599609375,0.5185546875,0.419921875,0.349609375,0.3251953125,0.3154296875,0.314453125,0.34375,0.4140625,0.5107421875,0.6044921875,0.673828125,0.720703125,0.7109375,0.646484375,0.5625,0.5068359375,0.5107421875,0.5703125,0.6279296875,0.6279296875,0.5595703125,0.45703125,0.3701171875,0.341796875,0.376953125,0.4267578125,0.4638671875,0.4775390625,0.46484375,0.4404296875,0.4248046875,0.4287109375,0.4375,0.439453125,0.43359375,0.4248046875,0.4189453125,0.419921875,0.4287109375,0.4306640625,0.40234375,0.3583984375,0.328125,0.33203125,0.37109375,0.4287109375,0.5,0.59765625,0.6865234375,0.7236328125,0.6982421875,0.634765625,0.5703125,0.515625,0.4892578125,0.4921875,0.5068359375,0.509765625,0.4833984375,0.4287109375,0.3671875,0.3154296875,0.3095703125,0.3642578125,0.462890625,0.5595703125,0.6220703125,0.677734375,0.7421875,0.7822265625,0.767578125,0.7021484375,0.619140625,0.55078125,0.4892578125,0.4287109375,0.38671875,0.37109375,0.3759765625,0.3828125,0.376953125,0.3740234375,0.40234375,0.466796875,0.548828125,0.623046875,0.6650390625,0.673828125,0.6650390625,0.62890625,0.5830078125,0.5576171875,0.5693359375,0.61328125,0.673828125,0.7353515625,0.779296875,0.7666015625,0.6787109375,0.5419921875,0.412109375,0.3251953125,0.263671875,0.25390625,0.318359375,0.4404296875,0.5712890625,0.6552734375,0.673828125,0.6650390625,0.623046875,0.548828125,0.466796875,0.40234375,0.3740234375,0.376953125,0.3935546875,0.423828125,0.4521484375,0.4560546875,0.427734375,0.3779296875,0.3251953125,0.2841796875,0.2890625,0.353515625,0.4580078125,0.5595703125,0.6181640625,0.6220703125,0.6064453125,0.568359375,0.5087890625,0.4384765625,0.37890625,0.3408203125,0.3251953125,0.318359375,0.3232421875,0.34375,0.3759765625,0.40625,0.4248046875,0.4287109375,0.4248046875,0.40625,0.3759765625,0.34375,0.3232421875,0.318359375,0.3251953125,0.3525390625,0.4375,0.5595703125,0.6630859375,0.708984375,0.685546875,0.6220703125,0.5595703125,0.5361328125,0.5576171875,0.599609375,0.6298828125,0.62109375,0.5703125,0.505859375,0.443359375,0.41796875,0.44921875,0.52734375,0.61328125,0.673828125,0.7119140625,0.701171875,0.6416015625,0.56640625,0.517578125,0.51953125,0.5703125,0.62109375,0.6279296875,0.5888671875,0.5322265625,0.4931640625,0.5,0.55078125,0.6142578125,0.6669921875,0.673828125,0.6142578125,0.5068359375,0.3994140625,0.3251953125,0.2626953125,0.2099609375,0.203125,0.2626953125,0.3701171875,0.4775390625,0.55078125,0.603515625,0.6220703125,0.6064453125,0.5830078125,0.578125,0.609375,0.673828125,0.7392578125,0.767578125,0.734375,0.6435546875,0.5341796875,0.455078125,0.4287109375,0.4130859375,0.384765625,0.3603515625,0.3623046875,0.39453125,0.447265625,0.5,0.5390625,0.5341796875,0.4873046875,0.42578125,0.3876953125,0.396484375,0.4482421875,0.521484375,0.62890625,0.736328125,0.7958984375,0.7890625,0.736328125,0.673828125,0.607421875,0.5263671875,0.4443359375,0.3828125,0.349609375,0.3349609375,0.3251953125,0.328125,0.376953125,0.4560546875,0.5234375,0.544921875,0.513671875,0.4482421875,0.369140625,0.28125,0.2265625,0.240234375,0.318359375,0.4189453125,0.5,0.5654296875,0.5966796875,0.5751953125,0.421875,0.408203125,0.400390625,0.3876953125,0.3642578125,0.34765625,0.3720703125,0.44140625,0.5322265625,0.609375,0.6435546875,0.634765625,0.607421875,0.5478515625,0.4609375,0.369140625,0.2998046875,0.2646484375,0.2587890625,0.263671875,0.2958984375,0.369140625,0.4775390625,0.5927734375,0.6845703125,0.740234375,0.7734375,0.748046875,0.6484375,0.501953125,0.361328125,0.2763671875,0.2587890625,0.2607421875,0.2763671875,0.3193359375,0.3916015625,0.4775390625,0.552734375,0.6044921875,0.634765625,0.599609375,0.4970703125,0.3671875,0.2646484375,0.2294921875,0.2587890625,0.3173828125,0.4189453125,0.5380859375,0.6298828125,0.6640625,0.6474609375,0.6044921875,0.5625,0.53515625,0.5302734375,0.541015625,0.552734375,0.55078125,0.5302734375,0.498046875,0.4453125,0.3798828125,0.3203125,0.279296875,0.26171875,0.2587890625,0.2548828125,0.240234375,0.220703125,0.208984375,0.2138671875,0.2333984375,0.2587890625,0.294921875,0.3671875,0.4638671875,0.5517578125,0.60546875,0.619140625,0.6044921875,0.57421875,0.509765625,0.4365234375,0.39453125,0.4052734375,0.458984375,0.5302734375,0.59375,0.61328125,0.5654296875,0.4638671875,0.349609375,0.275390625,0.2587890625,0.263671875,0.2890625,0.3359375,0.3916015625,0.4384765625,0.4638671875,0.46875,0.4658203125,0.4501953125,0.4306640625,0.4189453125,0.423828125,0.443359375,0.46875,0.4931640625,0.5087890625,0.513671875,0.5107421875,0.5078125,0.513671875,0.5302734375,0.5341796875,0.486328125,0.3994140625,0.3173828125,0.279296875,0.30078125,0.3642578125,0.4462890625,0.5595703125,0.6767578125,0.7568359375,0.7822265625,0.7666015625,0.740234375,0.7021484375,0.6279296875,0.546875,0.4990234375,0.5087890625,0.564453125,0.634765625,0.701171875,0.7333984375,0.708984375,0.6357421875,0.544921875,0.4833984375,0.46875,0.4638671875,0.4453125,0.4248046875,0.421875,0.443359375,0.484375,0.5302734375,0.5693359375,0.5849609375,0.576171875,0.5576171875,0.548828125,0.5654296875,0.6044921875,0.6552734375,0.71484375,0.7568359375,0.7568359375,0.71484375,0.6552734375,0.6044921875,0.548828125,0.4580078125,0.353515625,0.26953125,0.2314453125,0.2353515625,0.2587890625,0.296875,0.3759765625,0.474609375,0.5546875,0.5869140625,0.5712890625,0.5302734375,0.478515625,0.416015625,0.3779296875,0.39453125,0.46484375,0.556640625,0.634765625,0.697265625,0.7197265625,0.6923828125,0.6357421875,0.5830078125,0.5712890625,0.6044921875,0.64453125,0.6572265625,0.634765625,0.587890625,0.541015625,0.51953125,0.5302734375,0.5478515625,0.5576171875,0.54296875,0.5029296875,0.4462890625,0.396484375,0.3642578125,0.3505859375,0.392578125,0.4912109375,0.61328125,0.7119140625,0.7529296875,0.740234375,0.7080078125,0.6611328125,0.61328125,0.5849609375,0.5859375,0.6083984375,0.634765625,0.654296875,0.642578125,0.595703125,0.533203125,0.4794921875,0.4580078125,0.46875,0.486328125,0.49609375,0.5,0.5,0.5029296875,0.5126953125,0.5302734375,0.5380859375,0.5107421875,0.4609375,0.421875,0.4208984375,0.462890625,0.5302734375,0.5947265625,0.6298828125,0.6259765625,0.5966796875,0.568359375,0.568359375,0.6044921875,0.64453125,0.650390625,0.6015625,0.501953125,0.38671875,0.298828125,0.2587890625,0.23828125,0.2509765625,0.3193359375,0.4384765625,0.57421875,0.6806640625,0.740234375,0.76953125,0.7353515625,0.6435546875,0.5380859375,0.470703125,0.4716796875,0.5302734375,0.5927734375,0.6142578125,0.576171875,0.494140625,0.4072265625,0.359375,0.3642578125,0.380859375,0.392578125,0.3994140625,0.408203125,0.4228515625,0.443359375,0.46875,0.4912109375,0.4951171875,0.48046875,0.4580078125,0.443359375,0.447265625,0.46875,0.48828125,0.4814453125,0.4521484375,0.421875,0.4111328125,0.4287109375,0.46875,0.5205078125,0.587890625,0.6435546875,0.6591796875,0.630859375,0.5791015625,0.5302734375,0.490234375,0.4765625,0.48828125,0.5107421875,0.5224609375,0.5087890625,0.46875,0.4267578125,0.40234375,0.4169921875,0.4716796875,0.5458984375,0.6064453125,0.634765625,0.6591796875,0.6953125,0.7255859375,0.7294921875,0.7001953125,0.65234375,0.6044921875,0.55859375,0.51171875,0.46875,0.435546875,0.4111328125,0.388671875,0.3642578125,0.3466796875,0.373046875,0.4521484375,0.5634765625,0.6669921875,0.7275390625,0.740234375,0.7333984375,0.70703125,0.673828125,0.654296875,0.6630859375,0.6962890625,0.740234375,0.783203125,0.7998046875,0.75390625,0.6376953125,0.4833984375,0.3466796875,0.2587890625,0.2001953125,0.2060546875,0.30078125,0.4580078125,0.619140625,0.71875,0.740234375,0.7275390625,0.6669921875,0.5634765625,0.4521484375,0.373046875,0.3466796875,0.3642578125,0.3896484375,0.4072265625,0.4033203125,0.3720703125,0.3251953125,0.283203125,0.2587890625,0.2529296875,0.2998046875,0.400390625,0.5185546875,0.6123046875,0.6494140625,0.634765625,0.6044921875,0.5546875,0.4853515625,0.408203125,0.3388671875,0.2900390625,0.2587890625,0.23828125,0.244140625,0.2861328125,0.353515625,0.419921875,0.4609375,0.46875,0.4609375,0.419921875,0.353515625,0.2861328125,0.244140625,0.23828125,0.2587890625,0.3037109375,0.41015625,0.5517578125,0.6708984375,0.7216796875,0.69921875,0.634765625,0.5693359375,0.5302734375,0.52734375,0.548828125,0.5703125,0.56640625,0.5302734375,0.48828125,0.4697265625,0.494140625,0.560546875,0.64453125,0.7099609375,0.740234375,0.7470703125,0.708984375,0.6318359375,0.5498046875,0.4970703125,0.4931640625,0.5302734375,0.5693359375,0.5849609375,0.576171875,0.5576171875,0.548828125,0.5654296875,0.6044921875,0.6474609375,0.6640625,0.6298828125,0.5380859375,0.4189453125,0.3173828125,0.2587890625,0.216796875,0.19921875,0.234375,0.3251953125,0.4443359375,0.5458984375,0.6044921875,0.6416015625,0.6494140625,0.634765625,0.62109375,0.630859375,0.673828125,0.740234375,0.8076171875,0.841796875,0.814453125,0.7236328125,0.60546875,0.5107421875,0.46875,0.44140625,0.4150390625,0.40234375,0.4140625,0.443359375,0.4765625,0.5,0.5087890625,0.484375,0.4306640625,0.375,0.345703125,0.35546875,0.39453125,0.453125,0.5546875,0.673828125,0.7646484375,0.7998046875,0.7822265625,0.740234375,0.6884765625,0.6123046875,0.5166015625,0.4189453125,0.3408203125,0.2890625,0.2587890625,0.24609375,0.28515625,0.3642578125,0.44140625,0.4775390625,0.45703125,0.39453125,0.3173828125,0.2353515625,0.1923828125,0.220703125,0.310546875,0.4169921875,0.5,0.5625,0.5830078125,0.546875,0.4580078125,0.46875,0.4638671875,0.4365234375,0.39453125,0.3525390625,0.333984375,0.3583984375,0.4248046875,0.5087890625,0.5751953125,0.6044921875,0.615234375,0.5869140625,0.513671875,0.4140625,0.322265625,0.26953125,0.2587890625,0.2666015625,0.3095703125,0.3974609375,0.513671875,0.6259765625,0.703125,0.740234375,0.7548828125,0.7158203125,0.61328125,0.474609375,0.34765625,0.2734375,0.2587890625,0.263671875,0.2939453125,0.3583984375,0.447265625,0.53515625,0.6005859375,0.634765625,0.6484375,0.6064453125,0.5078125,0.3857421875,0.287109375,0.24609375,0.2587890625,0.296875,0.376953125,0.4853515625,0.5849609375,0.64453125,0.6552734375,0.634765625,0.611328125,0.5986328125,0.5908203125,0.5771484375,0.5517578125,0.513671875,0.46875,0.419921875,0.361328125,0.306640625,0.26953125,0.2568359375,0.2578125,0.2587890625,0.2529296875,0.2265625,0.1923828125,0.1728515625,0.181640625,0.21484375,0.2587890625,0.3095703125,0.376953125,0.455078125,0.52734375,0.5810546875,0.6142578125,0.634765625,0.6396484375,0.591796875,0.5048828125,0.4228515625,0.384765625,0.40625,0.46875,0.5341796875,0.560546875,0.52734375,0.44140625,0.3408203125,0.2734375,0.2587890625,0.265625,0.2978515625,0.3583984375,0.4306640625,0.490234375,0.5234375,0.5302734375,0.5234375,0.4970703125,0.4638671875,0.4443359375,0.4521484375,0.4853515625,0.5302734375,0.5751953125,0.6123046875,0.62109375,0.59375,0.54296875,0.4951171875,0.46875,0.439453125,0.3740234375,0.30078125,0.2587890625,0.26953125,0.32421875,0.39453125,0.478515625,0.599609375,0.7236328125,0.8037109375,0.8193359375,0.7861328125,0.740234375,0.6826171875,0.591796875,0.5,0.4521484375,0.4697265625,0.53125,0.6044921875,0.6728515625,0.7158203125,0.712890625,0.662109375,0.5927734375,0.5419921875,0.5302734375,0.5244140625,0.501953125,0.46875,0.44140625,0.4326171875,0.4453125,0.46875,0.4951171875,0.51953125,0.541015625,0.5625,0.5849609375,0.609375,0.634765625,0.6640625,0.69921875,0.7236328125,0.7236328125,0.69921875,0.6640625,0.634765625,0.5947265625,0.5029296875,0.3798828125,0.2734375,0.216796875,0.2197265625,0.2587890625,0.3115234375,0.3857421875,0.4609375,0.5078125,0.5166015625,0.49609375,0.46875,0.4365234375,0.392578125,0.3642578125,0.380859375,0.443359375,0.5283203125,0.6044921875,0.671875,0.7119140625,0.712890625,0.6787109375,0.6376953125,0.6181640625,0.634765625,0.6591796875,0.669921875,0.6513671875,0.6044921875,0.544921875,0.4951171875,0.46875,0.455078125,0.458984375,0.47265625,0.4794921875,0.46875,0.4375,0.39453125,0.3642578125,0.3994140625,0.501953125,0.6318359375,0.734375,0.76953125,0.740234375,0.6865234375,0.6103515625,0.5380859375,0.501953125,0.5146484375,0.5576171875,0.6044921875,0.6494140625,0.6845703125,0.6904296875,0.6591796875,0.60546875,0.556640625,0.5302734375,0.5126953125,0.5029296875,0.5,0.5,0.49609375,0.486328125,0.46875,0.4404296875,0.384765625,0.328125,0.3056640625,0.3330078125,0.396484375,0.46875,0.5390625,0.5966796875,0.626953125,0.62890625,0.6181640625,0.615234375,0.634765625,0.658203125,0.658203125,0.61328125,0.521484375,0.4091796875,0.3154296875,0.2587890625,0.22265625,0.232421875,0.3115234375,0.447265625,0.5927734375,0.697265625,0.740234375,0.7490234375,0.6943359375,0.5849609375,0.4716796875,0.4052734375,0.4091796875,0.46875,0.5400390625,0.59375,0.6044921875,0.5625,0.4892578125,0.4248046875,0.39453125,0.373046875,0.3486328125,0.341796875,0.3662109375,0.4189453125,0.4794921875,0.5302734375,0.5673828125,0.57421875,0.548828125,0.5107421875,0.4853515625,0.4921875,0.5302734375,0.5703125,0.587890625,0.5771484375,0.546875,0.517578125,0.5107421875,0.5302734375,0.5576171875,0.5849609375,0.595703125,0.580078125,0.5419921875,0.5,0.46875,0.4482421875,0.4521484375,0.48046875,0.5185546875,0.546875,0.55078125,0.5302734375,0.5087890625,0.509765625,0.53515625,0.57421875,0.607421875,0.6171875,0.6044921875,0.5908203125,0.595703125,0.619140625,0.6455078125,0.662109375,0.6572265625,0.634765625,0.6103515625,0.587890625,0.5634765625,0.5302734375,0.4873046875,0.4404296875,0.39453125,0.3583984375,0.3671875,0.435546875,0.546875,0.6572265625,0.7255859375,0.740234375,0.736328125,0.720703125,0.701171875,0.6904296875,0.6953125,0.71484375,0.740234375,0.7646484375,0.7666015625,0.7177734375,0.6103515625,0.4697265625,0.34375,0.2587890625,0.2001953125,0.2060546875,0.30078125,0.4580078125,0.619140625,0.71875,0.740234375,0.7255859375,0.6572265625,0.546875,0.435546875,0.3671875,0.3583984375,0.39453125,0.4326171875,0.4384765625,0.40234375,0.33984375,0.279296875,0.25,0.2587890625,0.2919921875,0.3740234375,0.48828125,0.5908203125,0.6455078125,0.6435546875,0.6044921875,0.55859375,0.509765625,0.4580078125,0.4052734375,0.353515625,0.3046875,0.2587890625,0.220703125,0.220703125,0.2734375,0.36328125,0.4580078125,0.517578125,0.5302734375,0.517578125,0.4580078125,0.36328125,0.2734375,0.220703125,0.220703125,0.2587890625,0.3212890625,0.4375,0.5771484375,0.6796875,0.708984375,0.6728515625,0.6044921875,0.53515625,0.4814453125,0.4580078125,0.4638671875,0.482421875,0.48828125,0.46875,0.4521484375,0.4775390625,0.546875,0.6376953125,0.7138671875,0.7490234375,0.740234375,0.7119140625,0.6494140625,0.56640625,0.4912109375,0.4501953125,0.447265625,0.46875,0.4951171875,0.51953125,0.541015625,0.5625,0.5849609375,0.609375,0.634765625,0.6552734375,0.64453125,0.5849609375,0.4853515625,0.376953125,0.296875,0.2587890625,0.23828125,0.2490234375,0.30859375,0.408203125,0.5166015625,0.5966796875,0.634765625,0.6533203125,0.6435546875,0.6181640625,0.6044921875,0.6220703125,0.671875,0.740234375,0.8115234375,0.8642578125,0.8642578125,0.7978515625,0.689453125,0.5888671875,0.5302734375,0.4873046875,0.4619140625,0.4609375,0.48046875,0.50390625,0.5126953125,0.5,0.474609375,0.4287109375,0.375,0.3359375,0.3251953125,0.3388671875,0.3642578125,0.40234375,0.482421875,0.5908203125,0.6904296875,0.75,0.7607421875,0.740234375,0.7099609375,0.658203125,0.580078125,0.482421875,0.38671875,0.310546875,0.2587890625,0.2275390625,0.2490234375,0.3173828125,0.39453125,0.4384765625,0.4248046875,0.3642578125,0.287109375,0.2099609375,0.1728515625,0.208984375,0.3056640625,0.4169921875,0.5,0.560546875,0.57421875,0.5302734375,0.505859375,0.5419921875,0.5419921875,0.505859375,0.4482421875,0.3837890625,0.3212890625,0.294921875,0.3271484375,0.4052734375,0.490234375,0.55078125,0.595703125,0.60546875,0.564453125,0.4833984375,0.39453125,0.337890625,0.3251953125,0.33203125,0.3681640625,0.4384765625,0.525390625,0.60546875,0.6552734375,0.673828125,0.67578125,0.640625,0.5654296875,0.46875,0.3837890625,0.3349609375,0.3251953125,0.3310546875,0.361328125,0.4189453125,0.4931640625,0.5615234375,0.6044921875,0.6220703125,0.623046875,0.5888671875,0.517578125,0.4296875,0.3583984375,0.32421875,0.3251953125,0.34375,0.3935546875,0.4697265625,0.5478515625,0.6044921875,0.6259765625,0.6220703125,0.615234375,0.6201171875,0.62109375,0.6005859375,0.5537109375,0.4921875,0.4287109375,0.3671875,0.3095703125,0.275390625,0.2734375,0.296875,0.3193359375,0.3251953125,0.3173828125,0.28125,0.2353515625,0.2099609375,0.220703125,0.265625,0.3251953125,0.384765625,0.4365234375,0.4755859375,0.5068359375,0.5361328125,0.57421875,0.6220703125,0.6572265625,0.62890625,0.5419921875,0.439453125,0.37109375,0.37109375,0.4287109375,0.49609375,0.5361328125,0.5263671875,0.46875,0.392578125,0.337890625,0.3251953125,0.3310546875,0.361328125,0.416015625,0.48046875,0.5341796875,0.564453125,0.5703125,0.5615234375,0.525390625,0.48046875,0.4541015625,0.4658203125,0.5107421875,0.5703125,0.6337890625,0.6904296875,0.708984375,0.6669921875,0.580078125,0.490234375,0.4287109375,0.3701171875,0.29296875,0.234375,0.23046875,0.2861328125,0.3701171875,0.4482421875,0.53125,0.646484375,0.755859375,0.8115234375,0.796875,0.7373046875,0.673828125,0.6005859375,0.5,0.4072265625,0.37109375,0.40234375,0.4755859375,0.55078125,0.62109375,0.67578125,0.693359375,0.66796875,0.619140625,0.5791015625,0.5703125,0.5654296875,0.5419921875,0.5029296875,0.4609375,0.431640625,0.421875,0.4287109375,0.4423828125,0.466796875,0.50390625,0.546875,0.583984375,0.6083984375,0.6220703125,0.6328125,0.646484375,0.65625,0.65625,0.646484375,0.6328125,0.6220703125,0.595703125,0.5166015625,0.4033203125,0.3037109375,0.2568359375,0.271484375,0.3251953125,0.3896484375,0.4521484375,0.4951171875,0.5,0.4755859375,0.4453125,0.4287109375,0.412109375,0.376953125,0.349609375,0.35546875,0.404296875,0.4775390625,0.55078125,0.62109375,0.67578125,0.697265625,0.681640625,0.6455078125,0.6201171875,0.6220703125,0.634765625,0.6484375,0.6455078125,0.611328125,0.55078125,0.484375,0.4287109375,0.388671875,0.388671875,0.4296875,0.482421875,0.5126953125,0.5,0.4482421875,0.40234375,0.419921875,0.5048828125,0.6162109375,0.701171875,0.7197265625,0.673828125,0.6025390625,0.5068359375,0.4228515625,0.390625,0.419921875,0.4853515625,0.55078125,0.6181640625,0.6953125,0.7490234375,0.7490234375,0.6982421875,0.6279296875,0.5703125,0.5244140625,0.5,0.49609375,0.5029296875,0.5,0.474609375,0.4287109375,0.369140625,0.2900390625,0.2275390625,0.21875,0.2705078125,0.3525390625,0.4287109375,0.501953125,0.5712890625,0.6201171875,0.63671875,0.6279296875,0.6171875,0.6220703125,0.6337890625,0.640625,0.6220703125,0.5654296875,0.48046875,0.3935546875,0.3251953125,0.2724609375,0.263671875,0.322265625,0.435546875,0.5615234375,0.646484375,0.673828125,0.66796875,0.6044921875,0.498046875,0.3984375,0.349609375,0.3662109375,0.4287109375,0.505859375,0.5908203125,0.646484375,0.642578125,0.583984375,0.5068359375,0.4482421875,0.392578125,0.3349609375,0.306640625,0.3349609375,0.4111328125,0.5,0.5703125,0.62109375,0.6298828125,0.595703125,0.5439453125,0.509765625,0.5185546875,0.5703125,0.6279296875,0.6669921875,0.6708984375,0.640625,0.5966796875,0.568359375,0.5703125,0.578125,0.5751953125,0.552734375,0.515625,0.474609375,0.443359375,0.4287109375,0.423828125,0.439453125,0.4765625,0.5224609375,0.5595703125,0.5751953125,0.5703125,0.56640625,0.5859375,0.6181640625,0.6396484375,0.6328125,0.599609375,0.55078125,0.5048828125,0.482421875,0.49609375,0.541015625,0.5927734375,0.623046875,0.6220703125,0.6162109375,0.623046875,0.6279296875,0.6123046875,0.5703125,0.509765625,0.4482421875,0.3935546875,0.3759765625,0.4150390625,0.5009765625,0.5966796875,0.6591796875,0.673828125,0.671875,0.666015625,0.658203125,0.6533203125,0.6552734375,0.6630859375,0.673828125,0.685546875,0.6923828125,0.669921875,0.6044921875,0.505859375,0.4052734375,0.3251953125,0.263671875,0.25390625,0.318359375,0.4404296875,0.5712890625,0.6552734375,0.673828125,0.6591796875,0.5966796875,0.5009765625,0.4150390625,0.3759765625,0.3935546875,0.4482421875,0.498046875,0.498046875,0.4443359375,0.3642578125,0.30078125,0.287109375,0.3251953125,0.388671875,0.4892578125,0.5947265625,0.6591796875,0.66015625,0.6123046875,0.55078125,0.4951171875,0.4580078125,0.4423828125,0.4345703125,0.4189453125,0.3818359375,0.3251953125,0.271484375,0.2568359375,0.2998046875,0.390625,0.490234375,0.5556640625,0.5703125,0.5556640625,0.490234375,0.390625,0.2998046875,0.2568359375,0.271484375,0.3251953125,0.400390625,0.5146484375,0.6298828125,0.693359375,0.6845703125,0.6240234375,0.55078125,0.48046875,0.4189453125,0.3857421875,0.388671875,0.4130859375,0.431640625,0.4287109375,0.431640625,0.4833984375,0.57421875,0.6640625,0.7177734375,0.7158203125,0.673828125,0.6162109375,0.5439453125,0.4716796875,0.4248046875,0.41015625,0.41796875,0.4287109375,0.4423828125,0.466796875,0.50390625,0.546875,0.583984375,0.6083984375,0.6220703125,0.6259765625,0.6044921875,0.5478515625,0.4697265625,0.3935546875,0.34375,0.3251953125,0.3212890625,0.34375,0.3994140625,0.4775390625,0.5537109375,0.603515625,0.6220703125,0.623046875,0.5947265625,0.5556640625,0.5341796875,0.55078125,0.603515625,0.673828125,0.7490234375,0.8251953125,0.8603515625,0.8291015625,0.7412109375,0.6416015625,0.5703125,0.515625,0.4921875,0.5029296875,0.5322265625,0.552734375,0.5419921875,0.5,0.4453125,0.3876953125,0.3427734375,0.328125,0.3408203125,0.36328125,0.376953125,0.3955078125,0.4453125,0.521484375,0.599609375,0.6552734375,0.677734375,0.673828125,0.6640625,0.6494140625,0.6162109375,0.5546875,0.47265625,0.3916015625,0.3251953125,0.27734375,0.2802734375,0.333984375,0.404296875,0.4482421875,0.4375,0.376953125,0.30078125,0.220703125,0.181640625,0.2138671875,0.3076171875,0.4169921875,0.5,0.5595703125,0.5703125,0.5263671875,0.5576171875,0.6005859375,0.6005859375,0.556640625,0.4892578125,0.412109375,0.32421875,0.2646484375,0.2705078125,0.33984375,0.4326171875,0.509765625,0.57421875,0.61328125,0.60546875,0.552734375,0.482421875,0.431640625,0.419921875,0.4228515625,0.44140625,0.4755859375,0.517578125,0.5537109375,0.57421875,0.5791015625,0.5771484375,0.55859375,0.5234375,0.48046875,0.4443359375,0.423828125,0.419921875,0.4228515625,0.4404296875,0.47265625,0.5107421875,0.544921875,0.564453125,0.5693359375,0.5673828125,0.548828125,0.5146484375,0.4736328125,0.439453125,0.421875,0.419921875,0.4248046875,0.4453125,0.48046875,0.51953125,0.5517578125,0.5673828125,0.5693359375,0.57421875,0.5986328125,0.62109375,0.6171875,0.576171875,0.5107421875,0.439453125,0.37109375,0.3173828125,0.2998046875,0.32421875,0.3720703125,0.41015625,0.419921875,0.41015625,0.369140625,0.3173828125,0.287109375,0.30078125,0.3515625,0.419921875,0.4814453125,0.51171875,0.5068359375,0.4873046875,0.4814453125,0.5087890625,0.5693359375,0.623046875,0.615234375,0.5458984375,0.4521484375,0.3857421875,0.3828125,0.439453125,0.5087890625,0.55859375,0.5673828125,0.5322265625,0.474609375,0.4306640625,0.419921875,0.4228515625,0.4404296875,0.470703125,0.5078125,0.5390625,0.5556640625,0.5595703125,0.5498046875,0.5087890625,0.45703125,0.4267578125,0.4404296875,0.4912109375,0.5595703125,0.6337890625,0.7109375,0.748046875,0.7158203125,0.6240234375,0.5185546875,0.439453125,0.3642578125,0.2783203125,0.2236328125,0.2353515625,0.310546875,0.4091796875,0.4892578125,0.5712890625,0.6748046875,0.7607421875,0.783203125,0.7373046875,0.6552734375,0.5791015625,0.5,0.3984375,0.31640625,0.296875,0.3466796875,0.431640625,0.509765625,0.580078125,0.638671875,0.6630859375,0.646484375,0.603515625,0.568359375,0.5595703125,0.556640625,0.541015625,0.5126953125,0.48046875,0.4541015625,0.4404296875,0.439453125,0.4443359375,0.4599609375,0.48828125,0.5205078125,0.548828125,0.564453125,0.5693359375,0.5712890625,0.5732421875,0.5751953125,0.5751953125,0.5732421875,0.5712890625,0.5693359375,0.5546875,0.494140625,0.408203125,0.33984375,0.3212890625,0.3544921875,0.419921875,0.48828125,0.54296875,0.5615234375,0.5380859375,0.490234375,0.4501953125,0.439453125,0.4296875,0.3955078125,0.357421875,0.345703125,0.3759765625,0.4375,0.509765625,0.580078125,0.638671875,0.6640625,0.6494140625,0.609375,0.576171875,0.5693359375,0.5771484375,0.6025390625,0.625,0.619140625,0.576171875,0.509765625,0.439453125,0.3837890625,0.380859375,0.431640625,0.5029296875,0.552734375,0.546875,0.4892578125,0.43359375,0.43359375,0.4931640625,0.576171875,0.634765625,0.6357421875,0.5791015625,0.5,0.3994140625,0.318359375,0.2998046875,0.349609375,0.43359375,0.509765625,0.587890625,0.685546875,0.7607421875,0.7724609375,0.71875,0.634765625,0.5595703125,0.5,0.474609375,0.486328125,0.5126953125,0.5244140625,0.4990234375,0.439453125,0.36328125,0.271484375,0.205078125,0.2041015625,0.2685546875,0.3603515625,0.439453125,0.5126953125,0.5791015625,0.6201171875,0.6240234375,0.599609375,0.57421875,0.5693359375,0.5771484375,0.6005859375,0.6201171875,0.609375,0.5615234375,0.4912109375,0.419921875,0.35546875,0.322265625,0.34375,0.4150390625,0.5029296875,0.564453125,0.5791015625,0.5673828125,0.509765625,0.42578125,0.3583984375,0.3388671875,0.373046875,0.439453125,0.5205078125,0.6181640625,0.693359375,0.705078125,0.650390625,0.564453125,0.4892578125,0.4150390625,0.3330078125,0.283203125,0.30078125,0.380859375,0.48046875,0.5595703125,0.6181640625,0.6279296875,0.5888671875,0.529296875,0.490234375,0.5009765625,0.5595703125,0.626953125,0.677734375,0.689453125,0.6591796875,0.607421875,0.5673828125,0.5595703125,0.55859375,0.5458984375,0.5205078125,0.4892578125,0.4609375,0.4443359375,0.439453125,0.44140625,0.455078125,0.4833984375,0.515625,0.5439453125,0.5576171875,0.5595703125,0.56640625,0.5986328125,0.6376953125,0.654296875,0.6318359375,0.5771484375,0.509765625,0.4443359375,0.4033203125,0.404296875,0.4501953125,0.5146484375,0.5595703125,0.5693359375,0.5751953125,0.60546875,0.6396484375,0.6484375,0.619140625,0.5595703125,0.4892578125,0.423828125,0.3828125,0.390625,0.443359375,0.515625,0.5673828125,0.5791015625,0.5791015625,0.578125,0.5771484375,0.576171875,0.576171875,0.5771484375,0.5791015625,0.5869140625,0.6103515625,0.62890625,0.6162109375,0.56640625,0.4931640625,0.419921875,0.353515625,0.3203125,0.3427734375,0.4150390625,0.5048828125,0.5654296875,0.5791015625,0.5673828125,0.515625,0.443359375,0.390625,0.3828125,0.423828125,0.4892578125,0.546875,0.5498046875,0.49609375,0.4189453125,0.3642578125,0.3642578125,0.419921875,0.498046875,0.599609375,0.6845703125,0.708984375,0.6650390625,0.5849609375,0.509765625,0.44921875,0.427734375,0.447265625,0.482421875,0.501953125,0.48046875,0.419921875,0.3544921875,0.3203125,0.3388671875,0.4052734375,0.48828125,0.5458984375,0.5595703125,0.5458984375,0.48828125,0.4052734375,0.3388671875,0.3203125,0.3544921875,0.419921875,0.5,0.603515625,0.6904296875,0.71484375,0.6689453125,0.5869140625,0.509765625,0.4384765625,0.3779296875,0.3505859375,0.36328125,0.4013671875,0.4326171875,0.439453125,0.451171875,0.505859375,0.587890625,0.654296875,0.6748046875,0.642578125,0.5791015625,0.5087890625,0.44140625,0.396484375,0.3876953125,0.408203125,0.431640625,0.439453125,0.4443359375,0.4599609375,0.48828125,0.5205078125,0.548828125,0.564453125,0.5693359375,0.5673828125,0.5517578125,0.51953125,0.48046875,0.4453125,0.4248046875,0.419921875,0.421875,0.4375,0.46875,0.5087890625,0.5439453125,0.5634765625,0.5693359375,0.5615234375,0.521484375,0.470703125,0.4423828125,0.45703125,0.509765625,0.5791015625,0.658203125,0.7490234375,0.8095703125,0.8037109375,0.7333984375,0.6376953125,0.5595703125,0.4990234375,0.48046875,0.5048828125,0.5478515625,0.57421875,0.5576171875,0.5,0.4306640625,0.3720703125,0.341796875,0.3515625,0.3876953125,0.419921875,0.4296875,0.435546875,0.455078125,0.490234375,0.5302734375,0.5615234375,0.5771484375,0.5791015625,0.583984375,0.603515625,0.6201171875,0.6083984375,0.560546875,0.4912109375,0.419921875,0.3623046875,0.353515625,0.396484375,0.458984375,0.5,0.4892578125,0.4296875,0.3515625,0.265625,0.21484375,0.2333984375,0.3154296875,0.41796875,0.5,0.5595703125,0.5693359375,0.5283203125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.640625,0.6572265625,0.634765625,0.578125,0.509765625,0.431640625,0.3408203125,0.27734375,0.27734375,0.3427734375,0.43359375,0.509765625,0.5771484375,0.6318359375,0.654296875,0.6376953125,0.5986328125,0.56640625,0.5595703125,0.5576171875,0.5419921875,0.5126953125,0.4765625,0.447265625,0.431640625,0.4296875,0.4345703125,0.4521484375,0.4833984375,0.517578125,0.544921875,0.55859375,0.5595703125,0.5546875,0.5390625,0.51171875,0.4814453125,0.4560546875,0.4423828125,0.439453125,0.443359375,0.4609375,0.4931640625,0.53125,0.5615234375,0.5771484375,0.5791015625,0.57421875,0.5537109375,0.517578125,0.4755859375,0.44140625,0.4228515625,0.419921875,0.4326171875,0.4912109375,0.576171875,0.6435546875,0.6611328125,0.6259765625,0.5595703125,0.490234375,0.4384765625,0.4287109375,0.4638671875,0.521484375,0.5673828125,0.5791015625,0.5703125,0.52734375,0.4697265625,0.43359375,0.44140625,0.490234375,0.5595703125,0.6162109375,0.611328125,0.5419921875,0.447265625,0.3779296875,0.373046875,0.4296875,0.4931640625,0.521484375,0.5126953125,0.4873046875,0.4755859375,0.5,0.5595703125,0.6259765625,0.6787109375,0.6953125,0.671875,0.6259765625,0.587890625,0.5791015625,0.576171875,0.5576171875,0.5234375,0.4814453125,0.4453125,0.4248046875,0.419921875,0.408203125,0.3662109375,0.3154296875,0.2880859375,0.3046875,0.359375,0.4296875,0.5126953125,0.6240234375,0.72265625,0.76171875,0.728515625,0.654296875,0.5791015625,0.5,0.3974609375,0.3134765625,0.291015625,0.3359375,0.4150390625,0.4892578125,0.564453125,0.646484375,0.697265625,0.6806640625,0.6044921875,0.5068359375,0.4296875,0.3544921875,0.2705078125,0.2177734375,0.2314453125,0.3095703125,0.4091796875,0.4892578125,0.5576171875,0.6025390625,0.6015625,0.5537109375,0.484375,0.4326171875,0.419921875,0.421875,0.4384765625,0.470703125,0.5087890625,0.541015625,0.5576171875,0.5595703125,0.5546875,0.5390625,0.51171875,0.4814453125,0.4560546875,0.4423828125,0.439453125,0.439453125,0.4384765625,0.4345703125,0.4306640625,0.42578125,0.421875,0.419921875,0.412109375,0.3896484375,0.373046875,0.3857421875,0.435546875,0.5068359375,0.5791015625,0.646484375,0.6962890625,0.705078125,0.6728515625,0.6181640625,0.5771484375,0.5693359375,0.5595703125,0.509765625,0.4404296875,0.388671875,0.3828125,0.423828125,0.4892578125,0.5556640625,0.59765625,0.59375,0.544921875,0.4775390625,0.4296875,0.419921875,0.4345703125,0.49609375,0.583984375,0.6552734375,0.6767578125,0.6435546875,0.5791015625,0.5185546875,0.4990234375,0.51953125,0.5556640625,0.57421875,0.5517578125,0.4892578125,0.4287109375,0.41015625,0.4384765625,0.4853515625,0.5146484375,0.4990234375,0.439453125,0.36328125,0.2802734375,0.23046875,0.2490234375,0.3291015625,0.4296875,0.509765625,0.5849609375,0.666015625,0.7119140625,0.6875,0.6025390625,0.5,0.419921875,0.365234375,0.3740234375,0.44921875,0.5498046875,0.625,0.6337890625,0.5791015625,0.5009765625,0.4091796875,0.3447265625,0.3447265625,0.4091796875,0.5009765625,0.5791015625,0.64453125,0.677734375,0.6591796875,0.5908203125,0.5048828125,0.4443359375,0.4296875,0.44140625,0.498046875,0.58203125,0.6513671875,0.6728515625,0.6416015625,0.5791015625,0.509765625,0.4423828125,0.3974609375,0.3876953125,0.4052734375,0.42578125,0.4296875,0.421875,0.396484375,0.3740234375,0.3798828125,0.4228515625,0.4892578125,0.5595703125,0.6337890625,0.71484375,0.7626953125,0.744140625,0.6650390625,0.5673828125,0.4892578125,0.412109375,0.3154296875,0.23828125,0.22265625,0.2724609375,0.35546875,0.4296875,0.486328125,0.494140625,0.4541015625,0.39453125,0.3564453125,0.369140625,0.4296875,0.4990234375,0.548828125,0.5595703125,0.525390625,0.4697265625,0.4287109375,0.419921875,0.4248046875,0.4453125,0.4814453125,0.5234375,0.5576171875,0.576171875,0.5791015625,0.576171875,0.560546875,0.5302734375,0.494140625,0.462890625,0.4443359375,0.439453125,0.44921875,0.4970703125,0.564453125,0.61328125,0.6171875,0.576171875,0.509765625,0.439453125,0.376953125,0.34375,0.3505859375,0.3818359375,0.412109375,0.419921875,0.431640625,0.4833984375,0.5546875,0.60546875,0.6103515625,0.5673828125,0.5,0.4287109375,0.3681640625,0.3408203125,0.353515625,0.390625,0.4228515625,0.4296875,0.427734375,0.4267578125,0.42578125,0.423828125,0.4228515625,0.421875,0.419921875,0.431640625,0.490234375,0.5771484375,0.6474609375,0.6689453125,0.6357421875,0.5693359375,0.49609375,0.42578125,0.3798828125,0.373046875,0.3955078125,0.421875,0.4296875,0.423828125,0.3935546875,0.359375,0.3505859375,0.3798828125,0.439453125,0.509765625,0.5693359375,0.58984375,0.5673828125,0.52734375,0.5029296875,0.5205078125,0.5791015625,0.6533203125,0.732421875,0.775390625,0.751953125,0.66796875,0.5673828125,0.4892578125,0.4345703125,0.43359375,0.48828125,0.5654296875,0.619140625,0.6162109375,0.5595703125,0.48828125,0.4228515625,0.3828125,0.380859375,0.40625,0.4326171875,0.439453125,0.43359375,0.4091796875,0.38671875,0.392578125,0.43359375,0.5,0.5693359375,0.64453125,0.728515625,0.78125,0.767578125,0.689453125,0.58984375,0.509765625,0.4404296875,0.3935546875,0.3896484375,0.4326171875,0.498046875,0.546875,0.5595703125,0.568359375,0.595703125,0.62109375,0.6181640625,0.5771484375,0.5107421875,0.439453125,0.3740234375,0.337890625,0.3515625,0.4130859375,0.4912109375,0.546875,0.5595703125,0.5556640625,0.5390625,0.5087890625,0.474609375,0.4453125,0.4306640625,0.4296875,0.4345703125,0.4541015625,0.486328125,0.5234375,0.552734375,0.568359375,0.5693359375,0.5634765625,0.5439453125,0.5087890625,0.46875,0.4375,0.421875,0.419921875,0.412109375,0.3720703125,0.3203125,0.2900390625,0.3017578125,0.3515625,0.419921875,0.498046875,0.5908203125,0.6572265625,0.658203125,0.5927734375,0.4990234375,0.419921875,0.3623046875,0.361328125,0.419921875,0.50390625,0.564453125,0.5654296875,0.509765625,0.443359375,0.400390625,0.4013671875,0.4482421875,0.5126953125,0.5595703125,0.5693359375,0.564453125,0.544921875,0.5107421875,0.47265625,0.4404296875,0.4228515625,0.419921875,0.4326171875,0.4921875,0.5791015625,0.6494140625,0.6728515625,0.6416015625,0.5791015625,0.5224609375,0.513671875,0.552734375,0.611328125,0.6494140625,0.6376953125,0.5791015625,0.5,0.3994140625,0.3173828125,0.296875,0.34375,0.4248046875,0.5,0.5556640625,0.5625,0.51953125,0.6337890625,0.6591796875,0.6513671875,0.609375,0.55078125,0.484375,0.41015625,0.3603515625,0.365234375,0.419921875,0.4931640625,0.55078125,0.599609375,0.6328125,0.6396484375,0.6181640625,0.5859375,0.56640625,0.5703125,0.57421875,0.552734375,0.50390625,0.443359375,0.39453125,0.373046875,0.376953125,0.3935546875,0.4306640625,0.4833984375,0.5341796875,0.5673828125,0.5771484375,0.5703125,0.556640625,0.5322265625,0.4990234375,0.4658203125,0.4423828125,0.4306640625,0.4287109375,0.4365234375,0.4716796875,0.5341796875,0.603515625,0.6552734375,0.677734375,0.673828125,0.6552734375,0.60546875,0.525390625,0.4384765625,0.3681640625,0.33203125,0.3251953125,0.3408203125,0.4130859375,0.5205078125,0.615234375,0.6572265625,0.6337890625,0.5703125,0.5009765625,0.455078125,0.45703125,0.5107421875,0.5888671875,0.6513671875,0.673828125,0.6708984375,0.6240234375,0.5498046875,0.48828125,0.470703125,0.50390625,0.5703125,0.625,0.6123046875,0.529296875,0.41796875,0.3349609375,0.322265625,0.376953125,0.4443359375,0.490234375,0.5087890625,0.5078125,0.5068359375,0.5263671875,0.5703125,0.6220703125,0.671875,0.7041015625,0.7099609375,0.6953125,0.677734375,0.673828125,0.6669921875,0.630859375,0.560546875,0.4736328125,0.3935546875,0.34375,0.3251953125,0.306640625,0.263671875,0.2197265625,0.2080078125,0.240234375,0.3046875,0.376953125,0.462890625,0.5869140625,0.7119140625,0.78515625,0.787109375,0.736328125,0.673828125,0.6015625,0.5,0.3994140625,0.3447265625,0.349609375,0.39453125,0.4482421875,0.5029296875,0.5615234375,0.5927734375,0.57421875,0.5107421875,0.435546875,0.376953125,0.3193359375,0.2490234375,0.2021484375,0.2119140625,0.2783203125,0.369140625,0.4482421875,0.5166015625,0.5595703125,0.5537109375,0.4951171875,0.4130859375,0.3486328125,0.3251953125,0.322265625,0.3505859375,0.4111328125,0.484375,0.544921875,0.5732421875,0.5703125,0.556640625,0.5322265625,0.4990234375,0.4658203125,0.4423828125,0.4306640625,0.4287109375,0.427734375,0.421875,0.40625,0.3828125,0.3583984375,0.337890625,0.3251953125,0.3154296875,0.314453125,0.34375,0.4140625,0.5107421875,0.6044921875,0.673828125,0.73046875,0.7626953125,0.7548828125,0.7109375,0.6552734375,0.62109375,0.6220703125,0.619140625,0.5703125,0.4873046875,0.4111328125,0.3759765625,0.3935546875,0.4482421875,0.5029296875,0.52734375,0.50390625,0.4404296875,0.3701171875,0.3271484375,0.3251953125,0.3525390625,0.4375,0.5634765625,0.6767578125,0.7353515625,0.7265625,0.673828125,0.6181640625,0.587890625,0.580078125,0.576171875,0.55859375,0.5146484375,0.4482421875,0.3857421875,0.3671875,0.3955078125,0.4462890625,0.484375,0.4794921875,0.4287109375,0.36328125,0.2978515625,0.2685546875,0.30078125,0.384765625,0.48046875,0.55078125,0.6142578125,0.6669921875,0.673828125,0.6142578125,0.5068359375,0.3994140625,0.3251953125,0.2822265625,0.3154296875,0.427734375,0.5712890625,0.68359375,0.716796875,0.673828125,0.60546875,0.5244140625,0.4677734375,0.4677734375,0.5244140625,0.60546875,0.673828125,0.7275390625,0.7421875,0.6953125,0.595703125,0.482421875,0.4033203125,0.376953125,0.380859375,0.439453125,0.541015625,0.6455078125,0.7099609375,0.71484375,0.673828125,0.6181640625,0.55078125,0.4833984375,0.4306640625,0.4013671875,0.3876953125,0.376953125,0.3642578125,0.3505859375,0.353515625,0.3876953125,0.4482421875,0.5146484375,0.5703125,0.6240234375,0.67578125,0.6962890625,0.6640625,0.5888671875,0.5078125,0.4482421875,0.3896484375,0.314453125,0.2509765625,0.232421875,0.263671875,0.322265625,0.376953125,0.4169921875,0.412109375,0.3681640625,0.31640625,0.2919921875,0.314453125,0.376953125,0.4443359375,0.484375,0.478515625,0.4296875,0.3671875,0.3271484375,0.3251953125,0.34375,0.3935546875,0.4736328125,0.560546875,0.630859375,0.6669921875,0.673828125,0.6689453125,0.6455078125,0.5986328125,0.5380859375,0.482421875,0.4443359375,0.4287109375,0.4306640625,0.4736328125,0.5439453125,0.6064453125,0.630859375,0.6064453125,0.55078125,0.486328125,0.4140625,0.3525390625,0.318359375,0.314453125,0.322265625,0.3251953125,0.33984375,0.40234375,0.4951171875,0.5712890625,0.5966796875,0.5654296875,0.5,0.4287109375,0.3671875,0.333984375,0.3369140625,0.361328125,0.3798828125,0.376953125,0.3671875,0.359375,0.353515625,0.3486328125,0.34375,0.3359375,0.3251953125,0.33203125,0.40234375,0.5205078125,0.6328125,0.693359375,0.68359375,0.6220703125,0.544921875,0.45703125,0.380859375,0.3427734375,0.34375,0.36328125,0.376953125,0.3828125,0.3759765625,0.37109375,0.38671875,0.4287109375,0.4892578125,0.55078125,0.6064453125,0.63671875,0.6376953125,0.6220703125,0.61328125,0.6298828125,0.673828125,0.724609375,0.7646484375,0.76171875,0.7021484375,0.6044921875,0.509765625,0.4482421875,0.4091796875,0.4228515625,0.486328125,0.56640625,0.6201171875,0.6201171875,0.5703125,0.5068359375,0.4453125,0.40234375,0.390625,0.4052734375,0.423828125,0.4287109375,0.4267578125,0.419921875,0.4248046875,0.4541015625,0.5068359375,0.5673828125,0.6220703125,0.6796875,0.75,0.796875,0.787109375,0.720703125,0.6298828125,0.55078125,0.48046875,0.423828125,0.4072265625,0.4384765625,0.498046875,0.5498046875,0.5703125,0.5849609375,0.611328125,0.6279296875,0.6123046875,0.5615234375,0.4931640625,0.4287109375,0.373046875,0.3447265625,0.365234375,0.4287109375,0.505859375,0.55859375,0.5703125,0.564453125,0.5341796875,0.484375,0.4287109375,0.3876953125,0.3720703125,0.376953125,0.39453125,0.4375,0.501953125,0.56640625,0.611328125,0.6279296875,0.6220703125,0.603515625,0.5537109375,0.4775390625,0.3994140625,0.34375,0.3212890625,0.3251953125,0.3271484375,0.298828125,0.2548828125,0.224609375,0.228515625,0.267578125,0.3251953125,0.3955078125,0.4814453125,0.546875,0.55078125,0.4921875,0.404296875,0.3251953125,0.26953125,0.2802734375,0.36328125,0.478515625,0.5712890625,0.595703125,0.55078125,0.494140625,0.46484375,0.4765625,0.525390625,0.5849609375,0.6220703125,0.6220703125,0.6044921875,0.5615234375,0.4931640625,0.4189453125,0.361328125,0.3310546875,0.3251953125,0.3408203125,0.4130859375,0.5283203125,0.6416015625,0.7099609375,0.71484375,0.673828125,0.6328125,0.630859375,0.6669921875,0.71484375,0.7412109375,0.7255859375,0.673828125,0.6025390625,0.5068359375,0.4189453125,0.376953125,0.3935546875,0.4453125,0.5,0.5380859375,0.52734375,0.4716796875,0.57421875,0.6240234375,0.65234375,0.6435546875,0.6044921875,0.5576171875,0.513671875,0.4912109375,0.501953125,0.5400390625,0.580078125,0.6044921875,0.6171875,0.607421875,0.57421875,0.53515625,0.509765625,0.5087890625,0.5302734375,0.5478515625,0.5322265625,0.48046875,0.4140625,0.3623046875,0.345703125,0.3642578125,0.3974609375,0.4521484375,0.513671875,0.5576171875,0.5703125,0.5556640625,0.5302734375,0.5029296875,0.4765625,0.4580078125,0.453125,0.458984375,0.466796875,0.46875,0.4794921875,0.52734375,0.607421875,0.6904296875,0.74609375,0.759765625,0.740234375,0.703125,0.6259765625,0.513671875,0.3974609375,0.3095703125,0.2666015625,0.2587890625,0.275390625,0.349609375,0.4638671875,0.5654296875,0.61328125,0.59375,0.5302734375,0.4609375,0.4189453125,0.4326171875,0.5078125,0.61328125,0.69921875,0.740234375,0.7509765625,0.703125,0.607421875,0.5107421875,0.45703125,0.46875,0.5302734375,0.5859375,0.576171875,0.4990234375,0.39453125,0.3173828125,0.30859375,0.3642578125,0.4345703125,0.49609375,0.533203125,0.5380859375,0.525390625,0.517578125,0.5302734375,0.552734375,0.5927734375,0.642578125,0.6904296875,0.7236328125,0.73828125,0.740234375,0.732421875,0.689453125,0.6015625,0.4853515625,0.373046875,0.2958984375,0.2587890625,0.2255859375,0.177734375,0.142578125,0.1513671875,0.2080078125,0.2880859375,0.3642578125,0.44921875,0.5732421875,0.7041015625,0.7919921875,0.814453125,0.78515625,0.740234375,0.685546875,0.599609375,0.5,0.4189453125,0.3798828125,0.3779296875,0.39453125,0.4150390625,0.435546875,0.447265625,0.4384765625,0.4140625,0.3857421875,0.3642578125,0.3359375,0.2841796875,0.234375,0.2197265625,0.25390625,0.3212890625,0.39453125,0.46484375,0.515625,0.5185546875,0.4638671875,0.375,0.2978515625,0.2587890625,0.2431640625,0.2724609375,0.34765625,0.44140625,0.5166015625,0.5458984375,0.5302734375,0.5029296875,0.4765625,0.4580078125,0.453125,0.458984375,0.466796875,0.46875,0.4677734375,0.4580078125,0.4306640625,0.3857421875,0.333984375,0.2890625,0.2587890625,0.23828125,0.2509765625,0.3193359375,0.4384765625,0.57421875,0.6806640625,0.740234375,0.7783203125,0.783203125,0.748046875,0.6904296875,0.6376953125,0.6181640625,0.634765625,0.6484375,0.6123046875,0.5302734375,0.435546875,0.37109375,0.359375,0.39453125,0.431640625,0.4326171875,0.3916015625,0.3251953125,0.2666015625,0.2431640625,0.2587890625,0.3017578125,0.40625,0.5517578125,0.6875,0.7666015625,0.7763671875,0.740234375,0.6982421875,0.6640625,0.6328125,0.5908203125,0.5341796875,0.4658203125,0.39453125,0.3330078125,0.3154296875,0.3525390625,0.421875,0.484375,0.501953125,0.46875,0.421875,0.37890625,0.3671875,0.40234375,0.4755859375,0.55078125,0.6044921875,0.6474609375,0.6640625,0.6298828125,0.5380859375,0.4189453125,0.3173828125,0.2587890625,0.232421875,0.2841796875,0.4169921875,0.58203125,0.71484375,0.7666015625,0.740234375,0.689453125,0.6298828125,0.587890625,0.587890625,0.6298828125,0.689453125,0.740234375,0.779296875,0.7822265625,0.7255859375,0.619140625,0.49609375,0.404296875,0.3642578125,0.349609375,0.38671875,0.48046875,0.5986328125,0.69921875,0.74609375,0.740234375,0.716796875,0.6728515625,0.6044921875,0.5244140625,0.4501953125,0.3955078125,0.3642578125,0.33984375,0.3291015625,0.34765625,0.39453125,0.4541015625,0.50390625,0.5302734375,0.5478515625,0.556640625,0.5439453125,0.5078125,0.4599609375,0.4189453125,0.39453125,0.373046875,0.34375,0.3193359375,0.3115234375,0.322265625,0.34375,0.3642578125,0.3720703125,0.3447265625,0.294921875,0.2568359375,0.255859375,0.296875,0.3642578125,0.427734375,0.4521484375,0.421875,0.3525390625,0.28125,0.24609375,0.2587890625,0.2958984375,0.373046875,0.4853515625,0.6015625,0.689453125,0.732421875,0.740234375,0.7373046875,0.7197265625,0.6787109375,0.619140625,0.5537109375,0.5009765625,0.46875,0.453125,0.4765625,0.53515625,0.6015625,0.6435546875,0.6416015625,0.6044921875,0.552734375,0.4775390625,0.3916015625,0.3193359375,0.2763671875,0.2607421875,0.2587890625,0.2744140625,0.345703125,0.4521484375,0.546875,0.5869140625,0.5634765625,0.5,0.4306640625,0.376953125,0.3525390625,0.3583984375,0.376953125,0.3828125,0.3642578125,0.33984375,0.3232421875,0.314453125,0.30859375,0.2998046875,0.283203125,0.2587890625,0.251953125,0.3203125,0.4521484375,0.59375,0.68359375,0.6923828125,0.634765625,0.5556640625,0.4541015625,0.361328125,0.30859375,0.306640625,0.3349609375,0.3642578125,0.388671875,0.4111328125,0.435546875,0.46875,0.51171875,0.55859375,0.6044921875,0.6494140625,0.6875,0.7119140625,0.720703125,0.720703125,0.724609375,0.740234375,0.7529296875,0.736328125,0.6767578125,0.5849609375,0.490234375,0.423828125,0.39453125,0.3857421875,0.4140625,0.474609375,0.5380859375,0.57421875,0.568359375,0.5302734375,0.484375,0.443359375,0.421875,0.4248046875,0.4453125,0.4638671875,0.46875,0.470703125,0.4794921875,0.501953125,0.5380859375,0.5791015625,0.6123046875,0.634765625,0.6630859375,0.71484375,0.7646484375,0.779296875,0.7451171875,0.677734375,0.6044921875,0.529296875,0.4521484375,0.4033203125,0.40234375,0.4443359375,0.49609375,0.5302734375,0.560546875,0.5986328125,0.6240234375,0.6162109375,0.57421875,0.5185546875,0.46875,0.4267578125,0.400390625,0.40625,0.44140625,0.48828125,0.5224609375,0.5302734375,0.5224609375,0.4873046875,0.4306640625,0.375,0.3427734375,0.341796875,0.3642578125,0.3994140625,0.466796875,0.5517578125,0.6240234375,0.66015625,0.658203125,0.634765625,0.5966796875,0.5166015625,0.408203125,0.30859375,0.2490234375,0.23828125,0.2587890625,0.2783203125,0.271484375,0.2421875,0.2119140625,0.201171875,0.21875,0.2587890625,0.3134765625,0.3876953125,0.44921875,0.4609375,0.4140625,0.3349609375,0.2587890625,0.203125,0.2197265625,0.3173828125,0.4580078125,0.580078125,0.630859375,0.6044921875,0.564453125,0.55078125,0.568359375,0.607421875,0.642578125,0.6533203125,0.634765625,0.6005859375,0.53515625,0.447265625,0.3583984375,0.2939453125,0.263671875,0.2587890625,0.2724609375,0.341796875,0.4638671875,0.5986328125,0.703125,0.7470703125,0.740234375,0.7275390625,0.740234375,0.7705078125,0.7978515625,0.8037109375,0.78125,0.740234375,0.6875,0.6142578125,0.5380859375,0.4853515625,0.4697265625,0.48046875,0.5,0.505859375,0.46484375,0.3916015625,0.4833984375,0.5576171875,0.623046875,0.650390625,0.634765625,0.6123046875,0.603515625,0.61328125,0.6318359375,0.6484375,0.6494140625,0.634765625,0.6064453125,0.5458984375,0.4716796875,0.4169921875,0.40234375,0.4267578125,0.46875,0.5048828125,0.5029296875,0.4609375,0.40234375,0.3603515625,0.3583984375,0.39453125,0.4462890625,0.5146484375,0.57421875,0.59375,0.568359375,0.517578125,0.46875,0.4267578125,0.400390625,0.40625,0.44140625,0.48828125,0.5224609375,0.5302734375,0.541015625,0.5927734375,0.673828125,0.748046875,0.787109375,0.779296875,0.740234375,0.6845703125,0.5927734375,0.4775390625,0.369140625,0.2958984375,0.263671875,0.2587890625,0.2734375,0.3408203125,0.44140625,0.52734375,0.560546875,0.5341796875,0.46875,0.3994140625,0.353515625,0.3671875,0.44921875,0.572265625,0.6796875,0.740234375,0.767578125,0.7265625,0.62109375,0.5,0.4189453125,0.412109375,0.46875,0.52734375,0.529296875,0.4716796875,0.3916015625,0.3349609375,0.3359375,0.39453125,0.46875,0.541015625,0.5849609375,0.5830078125,0.5419921875,0.49609375,0.46875,0.45703125,0.4765625,0.533203125,0.6123046875,0.6875,0.7314453125,0.740234375,0.7353515625,0.703125,0.6298828125,0.521484375,0.40625,0.314453125,0.2587890625,0.2080078125,0.1494140625,0.1181640625,0.142578125,0.2197265625,0.3154296875,0.39453125,0.4755859375,0.5859375,0.6953125,0.767578125,0.787109375,0.767578125,0.740234375,0.7080078125,0.654296875,0.580078125,0.4990234375,0.431640625,0.3876953125,0.3642578125,0.34375,0.322265625,0.3115234375,0.3193359375,0.34375,0.373046875,0.39453125,0.40234375,0.37109375,0.3134765625,0.267578125,0.259765625,0.2978515625,0.3642578125,0.4375,0.50390625,0.52734375,0.48828125,0.4033203125,0.3154296875,0.2587890625,0.2255859375,0.2451171875,0.3173828125,0.4111328125,0.4833984375,0.501953125,0.46875,0.4267578125,0.400390625,0.40625,0.44140625,0.48828125,0.5224609375,0.5302734375,0.5302734375,0.5234375,0.4970703125,0.4443359375,0.375,0.3095703125,0.2587890625,0.22265625,0.232421875,0.3115234375,0.447265625,0.5927734375,0.697265625,0.740234375,0.755859375,0.732421875,0.673828125,0.607421875,0.56640625,0.5673828125,0.6044921875,0.6396484375,0.6279296875,0.5634765625,0.46875,0.38671875,0.3505859375,0.3642578125,0.380859375,0.361328125,0.30859375,0.2509765625,0.2158203125,0.220703125,0.2587890625,0.318359375,0.4248046875,0.560546875,0.6796875,0.748046875,0.7607421875,0.740234375,0.7158203125,0.6923828125,0.6572265625,0.599609375,0.521484375,0.4384765625,0.3642578125,0.3017578125,0.28515625,0.328125,0.4140625,0.4990234375,0.5419921875,0.5302734375,0.5029296875,0.4814453125,0.48046875,0.5078125,0.5556640625,0.603515625,0.634765625,0.6552734375,0.64453125,0.5849609375,0.4853515625,0.376953125,0.296875,0.2587890625,0.248046875,0.302734375,0.4248046875,0.57421875,0.6962890625,0.7509765625,0.740234375,0.7109375,0.67578125,0.6513671875,0.6513671875,0.67578125,0.7109375,0.740234375,0.763671875,0.767578125,0.7294921875,0.6455078125,0.541015625,0.4501953125,0.39453125,0.35546875,0.353515625,0.408203125,0.5107421875,0.625,0.70703125,0.740234375,0.7568359375,0.7548828125,0.71484375,0.634765625,0.53515625,0.44921875,0.39453125,0.3544921875,0.341796875,0.3642578125,0.4111328125,0.4580078125,0.4794921875,0.46875,0.4453125,0.408203125,0.3671875,0.3388671875,0.3330078125,0.345703125,0.3642578125,0.3857421875,0.4140625,0.4384765625,0.447265625,0.435546875,0.4150390625,0.39453125,0.3662109375,0.310546875,0.25390625,0.2314453125,0.2587890625,0.322265625,0.39453125,0.455078125,0.4638671875,0.4140625,0.328125,0.2529296875,0.2275390625,0.2587890625,0.314453125,0.40625,0.521484375,0.6298828125,0.703125,0.7353515625,0.740234375,0.7412109375,0.7421875,0.7294921875,0.6923828125,0.6376953125,0.5791015625,0.5302734375,0.4921875,0.4873046875,0.521484375,0.580078125,0.6318359375,0.65234375,0.634765625,0.6005859375,0.53515625,0.447265625,0.3583984375,0.2939453125,0.263671875,0.2587890625,0.2744140625,0.345703125,0.4521484375,0.546875,0.5869140625,0.5634765625,0.5,0.43359375,0.39453125,0.3916015625,0.4140625,0.435546875,0.4306640625,0.39453125,0.353515625,0.330078125,0.3251953125,0.328125,0.3232421875,0.2998046875,0.2587890625,0.232421875,0.283203125,0.4052734375,0.546875,0.64453125,0.66015625,0.6044921875,0.5234375,0.4189453125,0.3251953125,0.28125,0.2958984375,0.345703125,0.39453125,0.4404296875,0.4873046875,0.5302734375,0.5634765625,0.587890625,0.6103515625,0.634765625,0.666015625,0.708984375,0.7509765625,0.775390625,0.7763671875,0.759765625,0.740234375,0.7099609375,0.6396484375,0.5380859375,0.4384765625,0.3720703125,0.3515625,0.3642578125,0.388671875,0.4306640625,0.4775390625,0.5078125,0.5126953125,0.4951171875,0.46875,0.4453125,0.4326171875,0.44140625,0.46875,0.501953125,0.5244140625,0.5302734375,0.5341796875,0.5546875,0.5849609375,0.61328125,0.6259765625,0.62109375,0.6044921875,0.5966796875,0.6279296875,0.685546875,0.7314453125,0.7392578125,0.701171875,0.634765625,0.5546875,0.4560546875,0.3720703125,0.33984375,0.3642578125,0.4189453125,0.46875,0.5185546875,0.57421875,0.6162109375,0.6240234375,0.5986328125,0.560546875,0.5302734375,0.5029296875,0.4765625,0.4580078125,0.453125,0.458984375,0.466796875,0.46875,0.4609375,0.42578125,0.375,0.3359375,0.328125,0.3515625,0.39453125,0.44921875,0.53515625,0.6240234375,0.6796875,0.6845703125,0.650390625,0.6044921875,0.5458984375,0.4443359375,0.3251953125,0.234375,0.19921875,0.216796875,0.2587890625,0.2998046875,0.3173828125,0.3056640625,0.275390625,0.2470703125,0.2392578125,0.2587890625,0.294921875,0.35546875,0.4140625,0.4326171875,0.400390625,0.33203125,0.2587890625,0.201171875,0.2099609375,0.30078125,0.44140625,0.57421875,0.6416015625,0.634765625,0.615234375,0.6181640625,0.640625,0.6630859375,0.6669921875,0.6455078125,0.6044921875,0.552734375,0.4775390625,0.3916015625,0.3193359375,0.2763671875,0.2607421875,0.2587890625,0.267578125,0.314453125,0.408203125,0.52734375,0.6376953125,0.7099609375,0.740234375,0.76171875,0.791015625,0.814453125,0.8173828125,0.798828125,0.7685546875,0.740234375,0.7119140625,0.673828125,0.6298828125,0.5849609375,0.5478515625,0.51953125,0.5,0.4677734375,0.3955078125,0.30859375,0.3994140625,0.48046875,0.5673828125,0.619140625,0.6220703125,0.619140625,0.640625,0.6767578125,0.703125,0.701171875,0.669921875,0.6220703125,0.5595703125,0.462890625,0.3642578125,0.3095703125,0.3154296875,0.3671875,0.4287109375,0.48046875,0.4921875,0.4619140625,0.4150390625,0.384765625,0.396484375,0.4482421875,0.515625,0.59375,0.646484375,0.6416015625,0.580078125,0.498046875,0.4287109375,0.373046875,0.3447265625,0.365234375,0.4287109375,0.505859375,0.55859375,0.5703125,0.5810546875,0.62890625,0.6982421875,0.7509765625,0.7626953125,0.73046875,0.673828125,0.60546875,0.5185546875,0.4296875,0.36328125,0.33203125,0.3251953125,0.3251953125,0.337890625,0.392578125,0.46875,0.5263671875,0.5361328125,0.49609375,0.4287109375,0.3564453125,0.2978515625,0.2939453125,0.3623046875,0.4814453125,0.59765625,0.673828125,0.7177734375,0.6904296875,0.59375,0.4736328125,0.38671875,0.373046875,0.4287109375,0.4892578125,0.501953125,0.4658203125,0.41015625,0.375,0.3876953125,0.4482421875,0.5244140625,0.6044921875,0.6513671875,0.6376953125,0.5703125,0.4892578125,0.4287109375,0.384765625,0.3779296875,0.4228515625,0.5087890625,0.6015625,0.66015625,0.673828125,0.673828125,0.6669921875,0.6357421875,0.5693359375,0.48046875,0.3935546875,0.3251953125,0.2587890625,0.1875,0.1494140625,0.177734375,0.263671875,0.3662109375,0.4482421875,0.5244140625,0.6103515625,0.681640625,0.71484375,0.7099609375,0.6884765625,0.673828125,0.6630859375,0.6494140625,0.619140625,0.5673828125,0.4990234375,0.4326171875,0.376953125,0.322265625,0.263671875,0.232421875,0.2509765625,0.314453125,0.3896484375,0.4482421875,0.4853515625,0.47265625,0.4130859375,0.3427734375,0.3017578125,0.31640625,0.376953125,0.4541015625,0.5361328125,0.583984375,0.5654296875,0.4892578125,0.396484375,0.3251953125,0.27734375,0.2802734375,0.337890625,0.4169921875,0.474609375,0.4775390625,0.4287109375,0.373046875,0.3447265625,0.365234375,0.4287109375,0.505859375,0.55859375,0.5703125,0.5732421875,0.5791015625,0.5703125,0.53125,0.4658203125,0.390625,0.3251953125,0.2724609375,0.263671875,0.322265625,0.435546875,0.5615234375,0.646484375,0.673828125,0.671875,0.62890625,0.55859375,0.4951171875,0.4716796875,0.49609375,0.55078125,0.60546875,0.623046875,0.587890625,0.51171875,0.4287109375,0.3798828125,0.376953125,0.3779296875,0.34375,0.2880859375,0.244140625,0.236328125,0.2685546875,0.3251953125,0.39453125,0.48828125,0.5849609375,0.6552734375,0.6845703125,0.68359375,0.673828125,0.666015625,0.6640625,0.650390625,0.6064453125,0.53515625,0.4521484375,0.376953125,0.3134765625,0.2900390625,0.328125,0.4140625,0.5078125,0.5654296875,0.5703125,0.5595703125,0.552734375,0.5546875,0.568359375,0.5888671875,0.609375,0.6220703125,0.6259765625,0.6044921875,0.5478515625,0.4697265625,0.3935546875,0.34375,0.3251953125,0.3251953125,0.3662109375,0.44921875,0.5498046875,0.6328125,0.673828125,0.673828125,0.662109375,0.6484375,0.638671875,0.638671875,0.6484375,0.662109375,0.673828125,0.6865234375,0.7021484375,0.7001953125,0.662109375,0.5927734375,0.5146484375,0.4482421875,0.38671875,0.3388671875,0.33984375,0.404296875,0.509765625,0.6103515625,0.673828125,0.7265625,0.771484375,0.7763671875,0.7216796875,0.6220703125,0.51953125,0.4482421875,0.39453125,0.376953125,0.3994140625,0.4423828125,0.474609375,0.470703125,0.4287109375,0.37109375,0.2978515625,0.2392578125,0.2255859375,0.26171875,0.322265625,0.376953125,0.435546875,0.5107421875,0.57421875,0.5927734375,0.5615234375,0.5029296875,0.4482421875,0.388671875,0.3095703125,0.24609375,0.2373046875,0.2890625,0.37109375,0.4482421875,0.505859375,0.5078125,0.4482421875,0.359375,0.2900390625,0.2783203125,0.3251953125,0.3935546875,0.48046875,0.5693359375,0.6357421875,0.6669921875,0.673828125,0.673828125,0.6796875,0.7021484375,0.7255859375,0.7236328125,0.689453125,0.6318359375,0.5703125,0.5126953125,0.48046875,0.48828125,0.5322265625,0.587890625,0.6220703125,0.6220703125,0.6044921875,0.5615234375,0.4931640625,0.4189453125,0.361328125,0.3310546875,0.3251953125,0.33984375,0.40234375,0.4951171875,0.5712890625,0.5966796875,0.5654296875,0.5,0.4375,0.4140625,0.4345703125,0.4775390625,0.5078125,0.4990234375,0.4482421875,0.3935546875,0.3701171875,0.376953125,0.396484375,0.4033203125,0.3798828125,0.3251953125,0.28125,0.3056640625,0.3974609375,0.513671875,0.5966796875,0.607421875,0.55078125,0.470703125,0.3701171875,0.2880859375,0.2646484375,0.306640625,0.380859375,0.4482421875,0.509765625,0.5703125,0.6123046875,0.6279296875,0.623046875,0.6162109375,0.6220703125,0.6396484375,0.68359375,0.7353515625,0.765625,0.759765625,0.7236328125,0.673828125,0.609375,0.5068359375,0.3935546875,0.3154296875,0.296875,0.3271484375,0.376953125,0.4296875,0.4794921875,0.5078125,0.50390625,0.4755859375,0.4453125,0.4287109375,0.421875,0.431640625,0.4609375,0.5029296875,0.5419921875,0.5654296875,0.5703125,0.5771484375,0.6044921875,0.6376953125,0.654296875,0.640625,0.6015625,0.55078125,0.513671875,0.5263671875,0.5859375,0.65625,0.697265625,0.6826171875,0.6220703125,0.5390625,0.427734375,0.3251953125,0.279296875,0.30078125,0.3642578125,0.4287109375,0.4931640625,0.5615234375,0.6123046875,0.6279296875,0.611328125,0.5849609375,0.5703125,0.556640625,0.5322265625,0.4990234375,0.4658203125,0.4423828125,0.4306640625,0.4287109375,0.4208984375,0.3876953125,0.345703125,0.3251953125,0.3408203125,0.3876953125,0.4482421875,0.5185546875,0.611328125,0.69140625,0.71875,0.6845703125,0.6171875,0.55078125,0.4775390625,0.3701171875,0.2626953125,0.203125,0.2099609375,0.2626953125,0.3251953125,0.3837890625,0.4228515625,0.4267578125,0.3955078125,0.3525390625,0.32421875,0.3251953125,0.345703125,0.39453125,0.4501953125,0.4765625,0.455078125,0.396484375,0.3251953125,0.2646484375,0.25390625,0.314453125,0.427734375,0.544921875,0.615234375,0.6220703125,0.6181640625,0.6376953125,0.666015625,0.677734375,0.658203125,0.611328125,0.55078125,0.486328125,0.4140625,0.3525390625,0.318359375,0.314453125,0.322265625,0.3251953125,0.326171875,0.3388671875,0.37890625,0.44921875,0.5361328125,0.615234375,0.673828125,0.724609375,0.767578125,0.78515625,0.767578125,0.7275390625,0.6904296875,0.673828125,0.666015625,0.6669921875,0.6640625,0.64453125,0.6044921875,0.5517578125,0.5,0.4375,0.34375,0.2529296875,0.357421875,0.421875,0.5029296875,0.55859375,0.5693359375,0.5771484375,0.615234375,0.666015625,0.6962890625,0.6845703125,0.6357421875,0.5693359375,0.490234375,0.3837890625,0.2900390625,0.2548828125,0.2900390625,0.365234375,0.439453125,0.4990234375,0.515625,0.4873046875,0.44140625,0.4130859375,0.4296875,0.4892578125,0.56640625,0.65234375,0.7060546875,0.693359375,0.6171875,0.5185546875,0.439453125,0.3740234375,0.337890625,0.3515625,0.4130859375,0.4912109375,0.546875,0.5595703125,0.5693359375,0.6123046875,0.6689453125,0.7041015625,0.6953125,0.646484375,0.5791015625,0.5078125,0.4365234375,0.388671875,0.3759765625,0.392578125,0.4140625,0.419921875,0.4306640625,0.474609375,0.5322265625,0.5673828125,0.55859375,0.5087890625,0.439453125,0.36328125,0.287109375,0.2529296875,0.2900390625,0.3876953125,0.498046875,0.5791015625,0.6337890625,0.626953125,0.5546875,0.4580078125,0.388671875,0.3828125,0.439453125,0.5009765625,0.517578125,0.48828125,0.4404296875,0.412109375,0.4287109375,0.4892578125,0.5673828125,0.6533203125,0.70703125,0.6923828125,0.615234375,0.517578125,0.439453125,0.3759765625,0.34375,0.3623046875,0.427734375,0.509765625,0.56640625,0.5791015625,0.5849609375,0.6064453125,0.623046875,0.6103515625,0.5625,0.4912109375,0.419921875,0.34375,0.2587890625,0.2080078125,0.2255859375,0.306640625,0.408203125,0.4892578125,0.5615234375,0.6259765625,0.66015625,0.654296875,0.62109375,0.5888671875,0.5791015625,0.583984375,0.6044921875,0.62109375,0.611328125,0.56640625,0.4990234375,0.4296875,0.35546875,0.2724609375,0.22265625,0.23828125,0.3154296875,0.412109375,0.4892578125,0.544921875,0.5458984375,0.4912109375,0.4169921875,0.365234375,0.37109375,0.4296875,0.5087890625,0.6005859375,0.6640625,0.6611328125,0.591796875,0.498046875,0.419921875,0.3623046875,0.353515625,0.3974609375,0.4619140625,0.505859375,0.498046875,0.439453125,0.3740234375,0.337890625,0.3515625,0.4130859375,0.4912109375,0.546875,0.5595703125,0.5654296875,0.58984375,0.6103515625,0.603515625,0.5595703125,0.4912109375,0.419921875,0.35546875,0.322265625,0.34375,0.4150390625,0.5029296875,0.564453125,0.5791015625,0.5693359375,0.521484375,0.4541015625,0.4052734375,0.4013671875,0.443359375,0.509765625,0.5751953125,0.6162109375,0.6103515625,0.55859375,0.4892578125,0.439453125,0.4296875,0.421875,0.380859375,0.326171875,0.2939453125,0.302734375,0.3525390625,0.419921875,0.4921875,0.5634765625,0.61328125,0.6259765625,0.609375,0.5869140625,0.5791015625,0.583984375,0.6064453125,0.6259765625,0.6181640625,0.572265625,0.5029296875,0.4296875,0.36328125,0.3271484375,0.3447265625,0.41015625,0.4921875,0.5478515625,0.5595703125,0.5576171875,0.556640625,0.5576171875,0.5595703125,0.5634765625,0.5673828125,0.5693359375,0.5673828125,0.5517578125,0.51953125,0.48046875,0.4453125,0.4248046875,0.419921875,0.421875,0.44140625,0.4775390625,0.521484375,0.5576171875,0.5771484375,0.5791015625,0.5771484375,0.5751953125,0.5732421875,0.5732421875,0.5751953125,0.5771484375,0.5791015625,0.5888671875,0.619140625,0.65234375,0.6572265625,0.623046875,0.5595703125,0.4892578125,0.4140625,0.333984375,0.2900390625,0.314453125,0.3994140625,0.5009765625,0.5791015625,0.6533203125,0.7333984375,0.7783203125,0.7548828125,0.6708984375,0.5693359375,0.4892578125,0.4296875,0.412109375,0.439453125,0.484375,0.5126953125,0.498046875,0.439453125,0.36328125,0.2724609375,0.20703125,0.2041015625,0.265625,0.353515625,0.4296875,0.5068359375,0.6044921875,0.6806640625,0.697265625,0.646484375,0.564453125,0.4892578125,0.4130859375,0.3212890625,0.2548828125,0.25390625,0.318359375,0.41015625,0.4892578125,0.5478515625,0.55078125,0.4970703125,0.41796875,0.3623046875,0.36328125,0.419921875,0.4912109375,0.5625,0.6103515625,0.623046875,0.6064453125,0.5849609375,0.5791015625,0.5888671875,0.626953125,0.6748046875,0.69921875,0.681640625,0.6279296875,0.5595703125,0.4912109375,0.4423828125,0.43359375,0.4658203125,0.5205078125,0.560546875,0.5693359375,0.564453125,0.544921875,0.5107421875,0.47265625,0.4404296875,0.4228515625,0.419921875,0.431640625,0.4833984375,0.5546875,0.60546875,0.6103515625,0.5673828125,0.5,0.439453125,0.4267578125,0.462890625,0.5205078125,0.55859375,0.5478515625,0.4892578125,0.4296875,0.41015625,0.4345703125,0.474609375,0.4990234375,0.4794921875,0.419921875,0.36328125,0.365234375,0.42578125,0.5087890625,0.568359375,0.5673828125,0.509765625,0.4296875,0.333984375,0.263671875,0.259765625,0.3212890625,0.412109375,0.4892578125,0.5595703125,0.619140625,0.6484375,0.6396484375,0.60546875,0.5751953125,0.5693359375,0.5810546875,0.623046875,0.6767578125,0.70703125,0.6953125,0.6455078125,0.5791015625,0.5,0.3916015625,0.294921875,0.255859375,0.28515625,0.357421875,0.4296875,0.4970703125,0.548828125,0.5654296875,0.5390625,0.490234375,0.4501953125,0.439453125,0.4404296875,0.4541015625,0.48046875,0.5126953125,0.541015625,0.556640625,0.5595703125,0.5673828125,0.6015625,0.6416015625,0.6572265625,0.6328125,0.5771484375,0.509765625,0.4541015625,0.453125,0.5078125,0.58203125,0.6337890625,0.6279296875,0.5693359375,0.486328125,0.3779296875,0.283203125,0.25,0.287109375,0.3642578125,0.439453125,0.5107421875,0.5771484375,0.6181640625,0.62109375,0.595703125,0.568359375,0.5595703125,0.5546875,0.5390625,0.51171875,0.4814453125,0.4560546875,0.4423828125,0.439453125,0.4306640625,0.396484375,0.35546875,0.3388671875,0.36328125,0.419921875,0.4892578125,0.568359375,0.662109375,0.7314453125,0.7373046875,0.6767578125,0.5869140625,0.509765625,0.4296875,0.3271484375,0.2412109375,0.2177734375,0.2626953125,0.34375,0.419921875,0.4873046875,0.5380859375,0.5498046875,0.51953125,0.4677734375,0.427734375,0.419921875,0.431640625,0.474609375,0.5283203125,0.5576171875,0.54296875,0.490234375,0.419921875,0.353515625,0.3203125,0.341796875,0.412109375,0.4990234375,0.5576171875,0.5693359375,0.576171875,0.6083984375,0.646484375,0.6611328125,0.63671875,0.5791015625,0.509765625,0.439453125,0.376953125,0.34375,0.3505859375,0.3818359375,0.412109375,0.419921875,0.4140625,0.3935546875,0.3779296875,0.3916015625,0.439453125,0.5087890625,0.5791015625,0.646484375,0.697265625,0.7109375,0.6826171875,0.6318359375,0.5908203125,0.5791015625,0.5849609375,0.6142578125,0.6474609375,0.6552734375,0.6259765625,0.5673828125,0.5,0.421875,0.3212890625,0.2392578125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.3798828125,0.37890625,0.4052734375,0.4326171875,0.439453125,0.44921875,0.490234375,0.5419921875,0.572265625,0.55859375,0.5078125,0.439453125,0.365234375,0.2880859375,0.2509765625,0.283203125,0.375,0.48046875,0.5595703125,0.6142578125,0.6142578125,0.5576171875,0.4794921875,0.4267578125,0.4306640625,0.4892578125,0.5712890625,0.6748046875,0.7607421875,0.783203125,0.7373046875,0.6552734375,0.5791015625,0.5078125,0.439453125,0.3955078125,0.388671875,0.4091796875,0.43359375,0.439453125,0.44921875,0.4873046875,0.5361328125,0.5625,0.5478515625,0.49609375,0.4296875,0.3662109375,0.33203125,0.3486328125,0.4111328125,0.4912109375,0.546875,0.5595703125,0.5693359375,0.6123046875,0.66796875,0.701171875,0.6904296875,0.638671875,0.5693359375,0.486328125,0.375,0.27734375,0.240234375,0.2763671875,0.353515625,0.4296875,0.4931640625,0.5234375,0.517578125,0.4970703125,0.490234375,0.517578125,0.5791015625,0.6357421875,0.6376953125,0.5830078125,0.505859375,0.451171875,0.453125,0.509765625,0.5888671875,0.689453125,0.7705078125,0.7880859375,0.7392578125,0.6552734375,0.5791015625,0.5078125,0.4404296875,0.3984375,0.3916015625,0.412109375,0.4345703125,0.439453125,0.451171875,0.505859375,0.587890625,0.654296875,0.6748046875,0.642578125,0.5791015625,0.5009765625,0.3994140625,0.3154296875,0.29296875,0.33984375,0.421875,0.5,0.5673828125,0.6103515625,0.6064453125,0.5576171875,0.48828125,0.439453125,0.4296875,0.4443359375,0.505859375,0.5927734375,0.662109375,0.6806640625,0.6455078125,0.5791015625,0.498046875,0.396484375,0.3154296875,0.2978515625,0.3486328125,0.4326171875,0.509765625,0.5693359375,0.587890625,0.5634765625,0.5205078125,0.494140625,0.5107421875,0.5693359375,0.6455078125,0.734375,0.7978515625,0.7958984375,0.7294921875,0.63671875,0.5595703125,0.5009765625,0.4912109375,0.5322265625,0.591796875,0.630859375,0.619140625,0.5595703125,0.486328125,0.419921875,0.3798828125,0.37890625,0.4052734375,0.4326171875,0.439453125,0.4521484375,0.5078125,0.5859375,0.6474609375,0.6611328125,0.625,0.5595703125,0.48828125,0.419921875,0.376953125,0.3720703125,0.3955078125,0.421875,0.4296875,0.423828125,0.3935546875,0.3583984375,0.3466796875,0.3740234375,0.431640625,0.5,0.568359375,0.62890625,0.66015625,0.6533203125,0.6201171875,0.5888671875,0.5791015625,0.568359375,0.525390625,0.47265625,0.44140625,0.453125,0.5029296875,0.5693359375,0.6328125,0.666015625,0.6484375,0.583984375,0.5048828125,0.4501953125,0.439453125,0.4541015625,0.5107421875,0.58984375,0.650390625,0.662109375,0.625,0.5595703125,0.48828125,0.4228515625,0.3828125,0.380859375,0.40625,0.4326171875,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.4423828125,0.4580078125,0.486328125,0.5185546875,0.544921875,0.55859375,0.5595703125,0.5546875,0.53515625,0.501953125,0.4658203125,0.435546875,0.4208984375,0.419921875,0.421875,0.4228515625,0.423828125,0.42578125,0.4267578125,0.427734375,0.4296875,0.443359375,0.494140625,0.564453125,0.615234375,0.6181640625,0.576171875,0.509765625,0.4296875,0.3271484375,0.2412109375,0.2177734375,0.2626953125,0.34375,0.419921875,0.5,0.6025390625,0.6875,0.7119140625,0.666015625,0.5849609375,0.509765625,0.453125,0.451171875,0.505859375,0.5830078125,0.6376953125,0.6357421875,0.5791015625,0.5009765625,0.4072265625,0.337890625,0.3349609375,0.3984375,0.490234375,0.5693359375,0.646484375,0.7294921875,0.775390625,0.7529296875,0.6689453125,0.568359375,0.4892578125,0.4130859375,0.32421875,0.259765625,0.259765625,0.32421875,0.4130859375,0.4892578125,0.548828125,0.568359375,0.548828125,0.5146484375,0.49609375,0.5185546875,0.5791015625,0.6435546875,0.6767578125,0.658203125,0.5908203125,0.5078125,0.451171875,0.439453125,0.451171875,0.4921875,0.54296875,0.5712890625,0.5576171875,0.5068359375,0.439453125,0.373046875,0.3203125,0.3037109375,0.3271484375,0.373046875,0.4111328125,0.419921875,0.4228515625,0.44140625,0.4736328125,0.5107421875,0.5419921875,0.5576171875,0.5595703125,0.5654296875,0.5966796875,0.634765625,0.6484375,0.623046875,0.5673828125,0.5,0.4423828125,0.43359375,0.4716796875,0.5283203125,0.5634765625,0.5498046875,0.4892578125,0.431640625,0.4296875,0.4873046875,0.5703125,0.630859375,0.6337890625,0.5791015625,0.521484375,0.50390625,0.529296875,0.5703125,0.5927734375,0.5712890625,0.509765625,0.4296875,0.3359375,0.2685546875,0.2685546875,0.3359375,0.4296875,0.509765625,0.5771484375,0.6171875,0.609375,0.5546875,0.4814453125,0.4306640625,0.419921875,0.431640625,0.4755859375,0.533203125,0.5673828125,0.5576171875,0.5078125,0.439453125,0.365234375,0.2900390625,0.255859375,0.29296875,0.3896484375,0.498046875,0.5791015625,0.6474609375,0.697265625,0.70703125,0.6728515625,0.615234375,0.5712890625,0.5595703125,0.5546875,0.537109375,0.5068359375,0.4716796875,0.44140625,0.4248046875,0.419921875,0.4306640625,0.4814453125,0.5546875,0.609375,0.6171875,0.5771484375,0.509765625,0.447265625,0.4248046875,0.443359375,0.4794921875,0.5,0.48046875,0.419921875,0.3447265625,0.2705078125,0.2373046875,0.2763671875,0.375,0.486328125,0.5693359375,0.6357421875,0.6728515625,0.6572265625,0.5927734375,0.509765625,0.453125,0.439453125,0.4423828125,0.4560546875,0.4814453125,0.51171875,0.5390625,0.5546875,0.5595703125,0.5498046875,0.5048828125,0.44140625,0.3984375,0.3984375,0.4423828125,0.509765625,0.5869140625,0.677734375,0.7392578125,0.7353515625,0.6650390625,0.5693359375,0.4892578125,0.412109375,0.330078125,0.2841796875,0.30859375,0.3955078125,0.4990234375,0.5791015625,0.646484375,0.6962890625,0.705078125,0.6728515625,0.6181640625,0.5771484375,0.5693359375,0.5810546875,0.6240234375,0.677734375,0.70703125,0.6923828125,0.6396484375,0.5693359375,0.49609375,0.4287109375,0.3857421875,0.3818359375,0.4072265625,0.4326171875,0.439453125,0.4501953125,0.498046875,0.5615234375,0.6064453125,0.607421875,0.564453125,0.5,0.4345703125,0.3935546875,0.3974609375,0.4462890625,0.515625,0.56640625,0.5791015625,0.5673828125,0.5087890625,0.421875,0.3515625,0.330078125,0.36328125,0.4296875,0.4990234375,0.55078125,0.5615234375,0.5283203125,0.47265625,0.4296875,0.419921875,0.431640625,0.4833984375,0.5546875,0.60546875,0.6103515625,0.5673828125,0.5,0.421875,0.337890625,0.2890625,0.3828125,0.3759765625,0.3974609375,0.421875,0.4287109375,0.4375,0.4736328125,0.5185546875,0.544921875,0.533203125,0.48828125,0.4287109375,0.365234375,0.30859375,0.2900390625,0.33203125,0.4189453125,0.5087890625,0.5703125,0.6064453125,0.587890625,0.5166015625,0.431640625,0.3798828125,0.3876953125,0.4482421875,0.53125,0.646484375,0.755859375,0.8115234375,0.796875,0.7373046875,0.673828125,0.6083984375,0.533203125,0.4677734375,0.4287109375,0.419921875,0.42578125,0.4287109375,0.4345703125,0.4580078125,0.484375,0.4921875,0.4716796875,0.427734375,0.376953125,0.33203125,0.318359375,0.3515625,0.4248046875,0.505859375,0.55859375,0.5703125,0.5810546875,0.62890625,0.6943359375,0.73828125,0.736328125,0.6904296875,0.6220703125,0.5361328125,0.412109375,0.291015625,0.2265625,0.2392578125,0.3037109375,0.376953125,0.4453125,0.498046875,0.5322265625,0.5537109375,0.578125,0.6171875,0.673828125,0.7216796875,0.7158203125,0.654296875,0.5703125,0.5087890625,0.5029296875,0.55078125,0.6220703125,0.7177734375,0.8017578125,0.833984375,0.8046875,0.73828125,0.673828125,0.609375,0.541015625,0.482421875,0.4482421875,0.4375,0.4365234375,0.4287109375,0.431640625,0.4833984375,0.57421875,0.6640625,0.7177734375,0.7158203125,0.673828125,0.609375,0.509765625,0.408203125,0.353515625,0.3662109375,0.4267578125,0.5,0.5654296875,0.5966796875,0.5751953125,0.5078125,0.4287109375,0.3798828125,0.376953125,0.404296875,0.4892578125,0.611328125,0.71484375,0.759765625,0.7373046875,0.673828125,0.591796875,0.4892578125,0.4033203125,0.375,0.4130859375,0.484375,0.55078125,0.60546875,0.62890625,0.6181640625,0.58984375,0.5693359375,0.5791015625,0.6220703125,0.6787109375,0.7451171875,0.7890625,0.779296875,0.71875,0.6376953125,0.5703125,0.5205078125,0.517578125,0.5595703125,0.615234375,0.6484375,0.630859375,0.5703125,0.4970703125,0.427734375,0.3828125,0.3759765625,0.3974609375,0.421875,0.4287109375,0.4404296875,0.4931640625,0.5703125,0.6337890625,0.654296875,0.6259765625,0.5703125,0.5048828125,0.4296875,0.3681640625,0.3388671875,0.34375,0.36328125,0.376953125,0.3828125,0.3759765625,0.3671875,0.373046875,0.40234375,0.4482421875,0.5,0.5546875,0.619140625,0.6748046875,0.7041015625,0.7021484375,0.6865234375,0.673828125,0.6552734375,0.611328125,0.560546875,0.529296875,0.53515625,0.572265625,0.6220703125,0.6650390625,0.6728515625,0.6318359375,0.5546875,0.4755859375,0.4306640625,0.4287109375,0.451171875,0.51171875,0.5908203125,0.6494140625,0.6611328125,0.6279296875,0.5703125,0.5068359375,0.4453125,0.40234375,0.390625,0.4052734375,0.423828125,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.43359375,0.45703125,0.49609375,0.5380859375,0.5673828125,0.5771484375,0.5703125,0.552734375,0.509765625,0.4453125,0.380859375,0.3359375,0.3193359375,0.3251953125,0.3359375,0.34375,0.3486328125,0.353515625,0.359375,0.3671875,0.376953125,0.400390625,0.46484375,0.55078125,0.6181640625,0.6376953125,0.6083984375,0.55078125,0.4775390625,0.3701171875,0.2626953125,0.203125,0.2099609375,0.2626953125,0.3251953125,0.3994140625,0.5068359375,0.6142578125,0.673828125,0.6669921875,0.6142578125,0.55078125,0.5029296875,0.5087890625,0.5703125,0.654296875,0.7158203125,0.7216796875,0.673828125,0.6025390625,0.509765625,0.43359375,0.4150390625,0.462890625,0.544921875,0.6220703125,0.6943359375,0.755859375,0.767578125,0.712890625,0.611328125,0.51171875,0.4482421875,0.3916015625,0.32421875,0.27734375,0.27734375,0.32421875,0.3916015625,0.4482421875,0.494140625,0.5234375,0.537109375,0.548828125,0.5732421875,0.615234375,0.673828125,0.7255859375,0.7353515625,0.6845703125,0.5888671875,0.4912109375,0.43359375,0.4287109375,0.4462890625,0.4833984375,0.5234375,0.5400390625,0.5234375,0.48046875,0.4287109375,0.376953125,0.3271484375,0.294921875,0.2890625,0.3037109375,0.3212890625,0.3251953125,0.3330078125,0.3681640625,0.4306640625,0.5,0.552734375,0.57421875,0.5703125,0.5654296875,0.5791015625,0.599609375,0.6064453125,0.5888671875,0.548828125,0.5,0.458984375,0.45703125,0.4892578125,0.52734375,0.541015625,0.51171875,0.4482421875,0.390625,0.39453125,0.4697265625,0.58203125,0.67578125,0.7080078125,0.673828125,0.630859375,0.6201171875,0.6376953125,0.6572265625,0.654296875,0.6171875,0.55078125,0.4716796875,0.376953125,0.310546875,0.310546875,0.376953125,0.4716796875,0.55078125,0.6142578125,0.6328125,0.5888671875,0.494140625,0.392578125,0.3310546875,0.3251953125,0.3466796875,0.40234375,0.4736328125,0.5224609375,0.5263671875,0.4873046875,0.4287109375,0.3662109375,0.3154296875,0.3134765625,0.3779296875,0.4892578125,0.599609375,0.673828125,0.732421875,0.7705078125,0.7666015625,0.7177734375,0.646484375,0.5908203125,0.5703125,0.5556640625,0.5244140625,0.4755859375,0.419921875,0.37109375,0.33984375,0.3251953125,0.3310546875,0.392578125,0.494140625,0.5888671875,0.6328125,0.6142578125,0.55078125,0.484375,0.4404296875,0.4228515625,0.4189453125,0.4111328125,0.380859375,0.3251953125,0.2626953125,0.2119140625,0.2138671875,0.287109375,0.412109375,0.5361328125,0.6220703125,0.6865234375,0.7158203125,0.6865234375,0.60546875,0.5087890625,0.443359375,0.4287109375,0.4306640625,0.4423828125,0.4658203125,0.4990234375,0.5322265625,0.556640625,0.5703125,0.5712890625,0.541015625,0.4931640625,0.45703125,0.45703125,0.4931640625,0.55078125,0.6181640625,0.6923828125,0.734375,0.7109375,0.62890625,0.5283203125,0.4482421875,0.375,0.314453125,0.3056640625,0.369140625,0.484375,0.5986328125,0.673828125,0.73046875,0.7626953125,0.7548828125,0.7109375,0.6552734375,0.62109375,0.6220703125,0.6416015625,0.69140625,0.74609375,0.7724609375,0.7509765625,0.693359375,0.6220703125,0.5478515625,0.4716796875,0.4150390625,0.39453125,0.4052734375,0.423828125,0.4287109375,0.4375,0.4755859375,0.529296875,0.5703125,0.576171875,0.5478515625,0.5,0.4521484375,0.4306640625,0.4521484375,0.5146484375,0.59375,0.65234375,0.673828125,0.6669921875,0.5966796875,0.478515625,0.3662109375,0.3056640625,0.3154296875,0.376953125,0.4462890625,0.4921875,0.494140625,0.4501953125,0.384765625,0.3369140625,0.3251953125,0.33984375,0.40234375,0.4951171875,0.5712890625,0.5966796875,0.5654296875,0.5,0.42578125,0.3583984375,0.333984375,0.3720703125,0.38671875,0.4267578125,0.4609375,0.46875,0.4755859375,0.501953125,0.53515625,0.5546875,0.546875,0.513671875,0.46875,0.423828125,0.38671875,0.3779296875,0.4052734375,0.4560546875,0.50390625,0.5302734375,0.53515625,0.4912109375,0.4111328125,0.3369140625,0.3056640625,0.330078125,0.39453125,0.478515625,0.599609375,0.7236328125,0.8037109375,0.8193359375,0.7861328125,0.740234375,0.689453125,0.6240234375,0.5546875,0.501953125,0.4755859375,0.46875,0.46875,0.4697265625,0.4677734375,0.4580078125,0.4384765625,0.4111328125,0.384765625,0.3642578125,0.349609375,0.35546875,0.3896484375,0.44140625,0.4921875,0.5234375,0.5302734375,0.5419921875,0.5966796875,0.673828125,0.7314453125,0.7421875,0.7021484375,0.634765625,0.548828125,0.421875,0.294921875,0.2236328125,0.2294921875,0.291015625,0.3642578125,0.4365234375,0.5078125,0.5712890625,0.62109375,0.66015625,0.697265625,0.740234375,0.7744140625,0.7646484375,0.708984375,0.6357421875,0.580078125,0.5703125,0.6044921875,0.658203125,0.734375,0.806640625,0.8427734375,0.830078125,0.787109375,0.740234375,0.693359375,0.642578125,0.59375,0.5517578125,0.5205078125,0.4951171875,0.46875,0.4521484375,0.4775390625,0.546875,0.6376953125,0.7138671875,0.7490234375,0.740234375,0.7060546875,0.62109375,0.5107421875,0.4248046875,0.3984375,0.4326171875,0.5,0.5625,0.5830078125,0.546875,0.46875,0.390625,0.3515625,0.3642578125,0.408203125,0.5146484375,0.6572265625,0.775390625,0.8271484375,0.8046875,0.740234375,0.6611328125,0.5654296875,0.48828125,0.4638671875,0.4951171875,0.5537109375,0.6044921875,0.646484375,0.6728515625,0.673828125,0.654296875,0.630859375,0.6220703125,0.634765625,0.6572265625,0.6845703125,0.6982421875,0.681640625,0.6357421875,0.5791015625,0.5302734375,0.49609375,0.50390625,0.5498046875,0.5986328125,0.619140625,0.59375,0.5302734375,0.458984375,0.3984375,0.3720703125,0.38671875,0.4267578125,0.4609375,0.46875,0.4765625,0.5107421875,0.5576171875,0.5927734375,0.5986328125,0.572265625,0.5302734375,0.478515625,0.4091796875,0.3447265625,0.30859375,0.310546875,0.3359375,0.3642578125,0.390625,0.4150390625,0.435546875,0.4521484375,0.466796875,0.4814453125,0.5,0.52734375,0.5859375,0.662109375,0.7294921875,0.763671875,0.7626953125,0.740234375,0.708984375,0.666015625,0.6240234375,0.599609375,0.5986328125,0.615234375,0.634765625,0.6455078125,0.6240234375,0.5712890625,0.5078125,0.4619140625,0.4501953125,0.46875,0.5029296875,0.5556640625,0.607421875,0.6318359375,0.6171875,0.576171875,0.5302734375,0.484375,0.443359375,0.421875,0.4248046875,0.4453125,0.4638671875,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.474609375,0.4970703125,0.5302734375,0.5576171875,0.56640625,0.5537109375,0.5302734375,0.494140625,0.4267578125,0.341796875,0.2705078125,0.234375,0.236328125,0.2587890625,0.283203125,0.2998046875,0.30859375,0.314453125,0.3232421875,0.33984375,0.3642578125,0.4013671875,0.4765625,0.568359375,0.640625,0.666015625,0.646484375,0.6044921875,0.5458984375,0.4443359375,0.3251953125,0.234375,0.19921875,0.216796875,0.2587890625,0.3173828125,0.4189453125,0.5380859375,0.6298828125,0.6640625,0.6474609375,0.6044921875,0.5703125,0.580078125,0.6357421875,0.708984375,0.7646484375,0.7744140625,0.740234375,0.68359375,0.595703125,0.5107421875,0.4716796875,0.4951171875,0.5615234375,0.634765625,0.7021484375,0.736328125,0.7099609375,0.6240234375,0.5126953125,0.4287109375,0.39453125,0.373046875,0.3486328125,0.3310546875,0.3310546875,0.3486328125,0.373046875,0.39453125,0.4150390625,0.4443359375,0.4912109375,0.5546875,0.626953125,0.6904296875,0.740234375,0.7744140625,0.7587890625,0.6875,0.5849609375,0.49609375,0.4560546875,0.46875,0.4970703125,0.52734375,0.546875,0.5439453125,0.5205078125,0.4912109375,0.46875,0.4462890625,0.40625,0.3564453125,0.30859375,0.275390625,0.2607421875,0.2587890625,0.2685546875,0.3173828125,0.3974609375,0.48046875,0.53515625,0.548828125,0.5302734375,0.505859375,0.494140625,0.4970703125,0.5078125,0.517578125,0.5146484375,0.5,0.48828125,0.50390625,0.5302734375,0.541015625,0.5185546875,0.4638671875,0.39453125,0.3349609375,0.3359375,0.4140625,0.5439453125,0.6708984375,0.740234375,0.740234375,0.728515625,0.740234375,0.759765625,0.76171875,0.732421875,0.6748046875,0.6044921875,0.5244140625,0.4306640625,0.3642578125,0.3642578125,0.4306640625,0.5244140625,0.6044921875,0.6630859375,0.658203125,0.57421875,0.44140625,0.3154296875,0.2509765625,0.2587890625,0.2958984375,0.3671875,0.4521484375,0.5166015625,0.53515625,0.51171875,0.46875,0.4248046875,0.3984375,0.4169921875,0.48828125,0.5908203125,0.68359375,0.740234375,0.783203125,0.8056640625,0.787109375,0.7236328125,0.6376953125,0.56640625,0.5302734375,0.501953125,0.46484375,0.4189453125,0.3701171875,0.32421875,0.287109375,0.2587890625,0.2509765625,0.3154296875,0.44140625,0.57421875,0.658203125,0.6630859375,0.6044921875,0.533203125,0.46484375,0.408203125,0.3662109375,0.3349609375,0.30078125,0.2587890625,0.2138671875,0.1845703125,0.20703125,0.294921875,0.42578125,0.5498046875,0.634765625,0.701171875,0.7333984375,0.708984375,0.6357421875,0.544921875,0.4833984375,0.46875,0.466796875,0.458984375,0.453125,0.4580078125,0.4765625,0.5029296875,0.5302734375,0.55078125,0.552734375,0.541015625,0.5302734375,0.53515625,0.5625,0.6044921875,0.6533203125,0.703125,0.7177734375,0.673828125,0.580078125,0.4755859375,0.39453125,0.326171875,0.2900390625,0.3193359375,0.421875,0.5615234375,0.677734375,0.740234375,0.7783203125,0.783203125,0.748046875,0.6904296875,0.6376953125,0.6181640625,0.634765625,0.6708984375,0.7314453125,0.7900390625,0.8095703125,0.7763671875,0.7080078125,0.634765625,0.5615234375,0.4892578125,0.4384765625,0.4248046875,0.44140625,0.462890625,0.46875,0.47265625,0.4873046875,0.5078125,0.5244140625,0.52734375,0.517578125,0.5,0.4833984375,0.4833984375,0.513671875,0.57421875,0.646484375,0.7060546875,0.740234375,0.7470703125,0.6787109375,0.546875,0.4052734375,0.3154296875,0.306640625,0.3642578125,0.431640625,0.470703125,0.4609375,0.40234375,0.326171875,0.271484375,0.2587890625,0.2744140625,0.345703125,0.4521484375,0.546875,0.5869140625,0.5634765625,0.5,0.4306640625,0.3828125,0.3857421875,0.3564453125,0.40234375,0.4697265625,0.5185546875,0.5302734375,0.533203125,0.548828125,0.568359375,0.580078125,0.5751953125,0.5556640625,0.5302734375,0.505859375,0.490234375,0.4853515625,0.48828125,0.4912109375,0.4853515625,0.46875,0.4384765625,0.3701171875,0.2900390625,0.2392578125,0.2431640625,0.2939453125,0.3642578125,0.4462890625,0.5595703125,0.6767578125,0.7568359375,0.7822265625,0.7666015625,0.740234375,0.7099609375,0.6650390625,0.61328125,0.568359375,0.541015625,0.53125,0.5302734375,0.5244140625,0.4970703125,0.4521484375,0.408203125,0.3818359375,0.37890625,0.39453125,0.4150390625,0.4375,0.4580078125,0.4697265625,0.4716796875,0.4697265625,0.46875,0.482421875,0.5400390625,0.6240234375,0.6904296875,0.70703125,0.6708984375,0.6044921875,0.51953125,0.400390625,0.287109375,0.2314453125,0.2509765625,0.3193359375,0.39453125,0.46875,0.5478515625,0.6181640625,0.66796875,0.697265625,0.716796875,0.740234375,0.759765625,0.7509765625,0.712890625,0.662109375,0.6240234375,0.615234375,0.634765625,0.6669921875,0.7138671875,0.76171875,0.7900390625,0.7890625,0.7666015625,0.740234375,0.7158203125,0.697265625,0.6796875,0.654296875,0.6181640625,0.5751953125,0.5302734375,0.48828125,0.4697265625,0.494140625,0.560546875,0.64453125,0.7099609375,0.740234375,0.7431640625,0.685546875,0.58203125,0.48046875,0.42578125,0.4375,0.5,0.560546875,0.57421875,0.5302734375,0.4521484375,0.3837890625,0.3623046875,0.39453125,0.4560546875,0.5732421875,0.7119140625,0.814453125,0.8447265625,0.8076171875,0.740234375,0.6640625,0.583984375,0.52734375,0.5185546875,0.5537109375,0.6015625,0.634765625,0.662109375,0.689453125,0.701171875,0.6904296875,0.66015625,0.626953125,0.6044921875,0.5869140625,0.5712890625,0.5576171875,0.541015625,0.5205078125,0.4951171875,0.46875,0.453125,0.4755859375,0.5244140625,0.56640625,0.572265625,0.53515625,0.46875,0.400390625,0.35546875,0.3564453125,0.40234375,0.4697265625,0.5185546875,0.5302734375,0.5322265625,0.5400390625,0.5458984375,0.541015625,0.5224609375,0.49609375,0.46875,0.435546875,0.380859375,0.3251953125,0.2978515625,0.30859375,0.3486328125,0.39453125,0.443359375,0.5009765625,0.546875,0.5634765625,0.548828125,0.521484375,0.5,0.4931640625,0.53515625,0.619140625,0.708984375,0.7685546875,0.7763671875,0.740234375,0.6953125,0.6572265625,0.6328125,0.6240234375,0.6240234375,0.6201171875,0.6044921875,0.578125,0.529296875,0.474609375,0.4443359375,0.4501953125,0.484375,0.5302734375,0.576171875,0.6171875,0.6318359375,0.607421875,0.5556640625,0.5029296875,0.46875,0.4453125,0.4326171875,0.44140625,0.46875,0.501953125,0.5244140625,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.53515625,0.5537109375,0.57421875,0.5771484375,0.5556640625,0.5146484375,0.46875,0.4140625,0.3291015625,0.240234375,0.1845703125,0.1796875,0.2138671875,0.2587890625,0.2998046875,0.3232421875,0.328125,0.3251953125,0.330078125,0.353515625,0.39453125,0.4482421875,0.525390625,0.607421875,0.6630859375,0.677734375,0.6611328125,0.634765625,0.5966796875,0.5166015625,0.408203125,0.30859375,0.2490234375,0.23828125,0.2587890625,0.296875,0.376953125,0.4853515625,0.5849609375,0.64453125,0.6552734375,0.634765625,0.615234375,0.6240234375,0.662109375,0.712890625,0.7509765625,0.759765625,0.740234375,0.701171875,0.6240234375,0.53515625,0.48046875,0.4833984375,0.5341796875,0.6044921875,0.666015625,0.6787109375,0.6240234375,0.521484375,0.41796875,0.361328125,0.3642578125,0.384765625,0.41015625,0.427734375,0.427734375,0.41015625,0.384765625,0.3642578125,0.3505859375,0.3671875,0.427734375,0.5244140625,0.626953125,0.703125,0.740234375,0.7548828125,0.7216796875,0.646484375,0.560546875,0.501953125,0.494140625,0.5302734375,0.5712890625,0.59375,0.587890625,0.560546875,0.5302734375,0.517578125,0.5302734375,0.5419921875,0.5224609375,0.4658203125,0.38671875,0.3115234375,0.267578125,0.2587890625,0.2705078125,0.322265625,0.40234375,0.4775390625,0.515625,0.5087890625,0.46875,0.4228515625,0.3828125,0.3671875,0.3857421875,0.4296875,0.4736328125,0.5,0.5244140625,0.5634765625,0.5908203125,0.5771484375,0.51953125,0.439453125,0.3642578125,0.30078125,0.2822265625,0.3388671875,0.4609375,0.6015625,0.703125,0.740234375,0.765625,0.80859375,0.8427734375,0.8369140625,0.7861328125,0.7099609375,0.634765625,0.5556640625,0.4609375,0.39453125,0.39453125,0.4609375,0.5556640625,0.634765625,0.689453125,0.669921875,0.5654296875,0.4169921875,0.2880859375,0.2333984375,0.2587890625,0.3134765625,0.39453125,0.482421875,0.546875,0.568359375,0.5556640625,0.5302734375,0.505859375,0.49609375,0.5185546875,0.57421875,0.6455078125,0.7060546875,0.740234375,0.765625,0.7783203125,0.7568359375,0.693359375,0.6044921875,0.5234375,0.46875,0.4267578125,0.39453125,0.373046875,0.35546875,0.333984375,0.3017578125,0.2587890625,0.2333984375,0.2880859375,0.4169921875,0.5654296875,0.669921875,0.689453125,0.634765625,0.560546875,0.4775390625,0.3994140625,0.341796875,0.306640625,0.283203125,0.2587890625,0.2314453125,0.2119140625,0.2314453125,0.3037109375,0.4130859375,0.5234375,0.6044921875,0.6728515625,0.7158203125,0.712890625,0.662109375,0.5927734375,0.5419921875,0.5302734375,0.5224609375,0.48828125,0.44140625,0.40625,0.400390625,0.4267578125,0.46875,0.513671875,0.5517578125,0.5771484375,0.5908203125,0.5986328125,0.611328125,0.634765625,0.6640625,0.6923828125,0.6904296875,0.6376953125,0.544921875,0.443359375,0.3642578125,0.2998046875,0.27734375,0.328125,0.447265625,0.5888671875,0.6953125,0.740234375,0.755859375,0.732421875,0.673828125,0.607421875,0.56640625,0.5673828125,0.6044921875,0.6591796875,0.7333984375,0.794921875,0.806640625,0.759765625,0.6806640625,0.6044921875,0.533203125,0.4716796875,0.44140625,0.4521484375,0.4892578125,0.521484375,0.5302734375,0.5263671875,0.51171875,0.4912109375,0.474609375,0.4716796875,0.4814453125,0.5,0.517578125,0.5341796875,0.5576171875,0.59375,0.6416015625,0.693359375,0.740234375,0.7666015625,0.7158203125,0.59375,0.4521484375,0.3544921875,0.3388671875,0.39453125,0.4609375,0.4970703125,0.48046875,0.4140625,0.330078125,0.2724609375,0.2587890625,0.2744140625,0.345703125,0.4521484375,0.546875,0.5869140625,0.5634765625,0.5,0.4345703125,0.40625,0.4306640625,0.345703125,0.4130859375,0.498046875,0.556640625,0.5703125,0.5712890625,0.5771484375,0.5849609375,0.58984375,0.587890625,0.580078125,0.5703125,0.5634765625,0.568359375,0.5732421875,0.5615234375,0.5283203125,0.48046875,0.4287109375,0.3681640625,0.283203125,0.208984375,0.1865234375,0.2255859375,0.3017578125,0.376953125,0.455078125,0.5498046875,0.63671875,0.689453125,0.7001953125,0.6865234375,0.673828125,0.6611328125,0.640625,0.6162109375,0.5927734375,0.5771484375,0.5712890625,0.5703125,0.560546875,0.515625,0.4501953125,0.396484375,0.37890625,0.4013671875,0.4482421875,0.4970703125,0.5322265625,0.537109375,0.5107421875,0.46875,0.4365234375,0.4287109375,0.44140625,0.498046875,0.5791015625,0.6416015625,0.6552734375,0.6181640625,0.55078125,0.46875,0.3623046875,0.2724609375,0.2451171875,0.2890625,0.3701171875,0.4482421875,0.521484375,0.5947265625,0.6513671875,0.67578125,0.6748046875,0.66796875,0.673828125,0.6806640625,0.67578125,0.6591796875,0.63671875,0.619140625,0.6142578125,0.6220703125,0.634765625,0.654296875,0.67578125,0.689453125,0.69140625,0.68359375,0.673828125,0.6689453125,0.6845703125,0.7060546875,0.708984375,0.681640625,0.630859375,0.5703125,0.505859375,0.443359375,0.41796875,0.44921875,0.52734375,0.61328125,0.673828125,0.708984375,0.68359375,0.6005859375,0.5029296875,0.439453125,0.4404296875,0.5,0.5595703125,0.5703125,0.5263671875,0.4560546875,0.40234375,0.3994140625,0.4482421875,0.5224609375,0.63671875,0.751953125,0.8154296875,0.806640625,0.74609375,0.673828125,0.6005859375,0.5361328125,0.50390625,0.515625,0.5595703125,0.6025390625,0.6220703125,0.6376953125,0.666015625,0.6904296875,0.6884765625,0.6552734375,0.603515625,0.55078125,0.5,0.4541015625,0.4248046875,0.4189453125,0.427734375,0.4345703125,0.4287109375,0.4287109375,0.462890625,0.5146484375,0.548828125,0.5439453125,0.4970703125,0.4287109375,0.3623046875,0.3271484375,0.345703125,0.4130859375,0.498046875,0.556640625,0.5703125,0.568359375,0.556640625,0.533203125,0.5,0.466796875,0.4423828125,0.4287109375,0.4111328125,0.3701171875,0.326171875,0.3095703125,0.3330078125,0.38671875,0.4482421875,0.515625,0.5966796875,0.6572265625,0.6669921875,0.623046875,0.556640625,0.5,0.462890625,0.482421875,0.556640625,0.650390625,0.7158203125,0.7216796875,0.673828125,0.6181640625,0.587890625,0.5869140625,0.6025390625,0.611328125,0.5947265625,0.55078125,0.4931640625,0.4228515625,0.3720703125,0.3720703125,0.42578125,0.5029296875,0.5703125,0.6279296875,0.6611328125,0.6494140625,0.5908203125,0.51171875,0.451171875,0.4287109375,0.421875,0.431640625,0.4609375,0.5029296875,0.5419921875,0.5654296875,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5751953125,0.59375,0.6083984375,0.5966796875,0.5537109375,0.4921875,0.4287109375,0.3583984375,0.265625,0.185546875,0.158203125,0.1923828125,0.259765625,0.3251953125,0.3798828125,0.4033203125,0.396484375,0.376953125,0.3701171875,0.3935546875,0.4482421875,0.5126953125,0.5849609375,0.642578125,0.6669921875,0.658203125,0.63671875,0.6220703125,0.603515625,0.5537109375,0.4775390625,0.3994140625,0.34375,0.3212890625,0.3251953125,0.34375,0.3935546875,0.4697265625,0.5478515625,0.6044921875,0.6259765625,0.6220703125,0.6142578125,0.619140625,0.63671875,0.6591796875,0.67578125,0.6806640625,0.673828125,0.650390625,0.5859375,0.50390625,0.4453125,0.439453125,0.482421875,0.55078125,0.609375,0.611328125,0.5478515625,0.4501953125,0.3671875,0.341796875,0.376953125,0.43359375,0.5009765625,0.5478515625,0.5478515625,0.5009765625,0.43359375,0.376953125,0.3330078125,0.326171875,0.375,0.4697265625,0.576171875,0.6494140625,0.673828125,0.6728515625,0.6318359375,0.5654296875,0.5078125,0.48828125,0.5146484375,0.5703125,0.623046875,0.6376953125,0.611328125,0.5634765625,0.52734375,0.529296875,0.5703125,0.6142578125,0.62109375,0.576171875,0.490234375,0.3974609375,0.3388671875,0.3251953125,0.3369140625,0.384765625,0.453125,0.5068359375,0.5185546875,0.486328125,0.4287109375,0.3642578125,0.2978515625,0.2646484375,0.287109375,0.3583984375,0.439453125,0.5,0.556640625,0.6201171875,0.65625,0.6328125,0.5537109375,0.45703125,0.376953125,0.3076171875,0.26171875,0.2763671875,0.36328125,0.4921875,0.607421875,0.673828125,0.7314453125,0.8046875,0.85546875,0.8505859375,0.7880859375,0.7001953125,0.6220703125,0.5419921875,0.4482421875,0.380859375,0.380859375,0.4482421875,0.5419921875,0.6220703125,0.67578125,0.6572265625,0.55859375,0.423828125,0.3154296875,0.283203125,0.3251953125,0.392578125,0.47265625,0.546875,0.58984375,0.5966796875,0.5830078125,0.5703125,0.560546875,0.5595703125,0.5732421875,0.6005859375,0.6328125,0.6591796875,0.673828125,0.6865234375,0.7001953125,0.693359375,0.650390625,0.576171875,0.49609375,0.4287109375,0.375,0.353515625,0.365234375,0.3896484375,0.4013671875,0.37890625,0.3251953125,0.283203125,0.3154296875,0.423828125,0.55859375,0.6572265625,0.67578125,0.6220703125,0.546875,0.4638671875,0.392578125,0.3486328125,0.3349609375,0.3330078125,0.3251953125,0.310546875,0.2890625,0.2841796875,0.3173828125,0.388671875,0.474609375,0.55078125,0.62109375,0.67578125,0.693359375,0.66796875,0.619140625,0.5791015625,0.5703125,0.55859375,0.505859375,0.4287109375,0.365234375,0.3447265625,0.373046875,0.4287109375,0.4921875,0.5537109375,0.6005859375,0.62109375,0.6201171875,0.615234375,0.6220703125,0.6357421875,0.6552734375,0.65625,0.6181640625,0.5419921875,0.4541015625,0.376953125,0.3134765625,0.2900390625,0.3359375,0.439453125,0.5615234375,0.646484375,0.673828125,0.671875,0.62890625,0.55859375,0.4951171875,0.4716796875,0.49609375,0.55078125,0.62109375,0.70703125,0.7724609375,0.7763671875,0.7177734375,0.6298828125,0.55078125,0.4814453125,0.431640625,0.4228515625,0.4580078125,0.515625,0.5595703125,0.5703125,0.5615234375,0.5234375,0.4697265625,0.4287109375,0.4228515625,0.451171875,0.5,0.544921875,0.5673828125,0.5703125,0.568359375,0.580078125,0.6171875,0.673828125,0.7177734375,0.693359375,0.6015625,0.4853515625,0.40234375,0.3916015625,0.4482421875,0.5146484375,0.552734375,0.5380859375,0.4755859375,0.39453125,0.3388671875,0.3251953125,0.33984375,0.40234375,0.4951171875,0.5712890625,0.5966796875,0.5654296875,0.5,0.4384765625,0.421875,0.4580078125,0.3486328125,0.41015625,0.490234375,0.546875,0.5595703125,0.5595703125,0.560546875,0.5615234375,0.5625,0.5625,0.560546875,0.5595703125,0.564453125,0.5888671875,0.6123046875,0.6103515625,0.572265625,0.5087890625,0.439453125,0.36328125,0.2705078125,0.2021484375,0.197265625,0.259765625,0.3505859375,0.4296875,0.5029296875,0.5751953125,0.623046875,0.6328125,0.6123046875,0.5869140625,0.5791015625,0.5771484375,0.5732421875,0.568359375,0.564453125,0.560546875,0.5595703125,0.5595703125,0.5478515625,0.5,0.43359375,0.3857421875,0.3828125,0.4248046875,0.4892578125,0.5546875,0.5986328125,0.6005859375,0.55859375,0.49609375,0.4501953125,0.439453125,0.451171875,0.501953125,0.5703125,0.619140625,0.62109375,0.5771484375,0.509765625,0.4296875,0.3330078125,0.26171875,0.255859375,0.318359375,0.41015625,0.4892578125,0.5615234375,0.623046875,0.6552734375,0.6484375,0.615234375,0.5859375,0.5791015625,0.580078125,0.5791015625,0.576171875,0.572265625,0.5693359375,0.568359375,0.5693359375,0.5712890625,0.5751953125,0.578125,0.5810546875,0.58203125,0.5810546875,0.5791015625,0.5869140625,0.6240234375,0.671875,0.6962890625,0.6806640625,0.6279296875,0.5595703125,0.482421875,0.3935546875,0.333984375,0.33984375,0.4091796875,0.5029296875,0.5791015625,0.6337890625,0.6328125,0.57421875,0.4931640625,0.4384765625,0.44140625,0.5,0.5595703125,0.5693359375,0.5283203125,0.4658203125,0.4228515625,0.431640625,0.4892578125,0.5693359375,0.673828125,0.759765625,0.7841796875,0.7392578125,0.65625,0.5791015625,0.5087890625,0.4541015625,0.4375,0.46484375,0.5166015625,0.5576171875,0.5693359375,0.5791015625,0.6123046875,0.650390625,0.6630859375,0.6357421875,0.5771484375,0.509765625,0.44140625,0.3837890625,0.357421875,0.3681640625,0.4033203125,0.43359375,0.439453125,0.4482421875,0.48828125,0.5419921875,0.572265625,0.560546875,0.5087890625,0.439453125,0.373046875,0.3349609375,0.3486328125,0.41015625,0.490234375,0.546875,0.5595703125,0.556640625,0.54296875,0.517578125,0.4873046875,0.4599609375,0.4443359375,0.439453125,0.4296875,0.3935546875,0.3525390625,0.3369140625,0.361328125,0.419921875,0.4892578125,0.5673828125,0.6591796875,0.7255859375,0.7275390625,0.6650390625,0.5751953125,0.5,0.4443359375,0.4453125,0.501953125,0.58203125,0.6376953125,0.6357421875,0.5791015625,0.5185546875,0.4990234375,0.521484375,0.5615234375,0.5859375,0.568359375,0.509765625,0.4345703125,0.349609375,0.2958984375,0.30859375,0.3837890625,0.48046875,0.5595703125,0.625,0.662109375,0.650390625,0.58984375,0.5107421875,0.4541015625,0.439453125,0.4404296875,0.4541015625,0.48046875,0.5126953125,0.541015625,0.556640625,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.56640625,0.5927734375,0.6181640625,0.6162109375,0.576171875,0.5107421875,0.439453125,0.361328125,0.2666015625,0.197265625,0.1923828125,0.2529296875,0.3427734375,0.419921875,0.4794921875,0.4990234375,0.474609375,0.4345703125,0.41015625,0.4296875,0.4892578125,0.5595703125,0.6220703125,0.6533203125,0.6455078125,0.611328125,0.5791015625,0.5693359375,0.5634765625,0.5439453125,0.5087890625,0.46875,0.4375,0.421875,0.419921875,0.4248046875,0.4453125,0.48046875,0.51953125,0.5517578125,0.5673828125,0.5693359375,0.568359375,0.5693359375,0.572265625,0.576171875,0.5791015625,0.580078125,0.5791015625,0.56640625,0.5146484375,0.4453125,0.3974609375,0.396484375,0.44140625,0.509765625,0.568359375,0.5712890625,0.515625,0.4345703125,0.3759765625,0.375,0.4296875,0.505859375,0.595703125,0.6591796875,0.6591796875,0.595703125,0.505859375,0.4296875,0.3662109375,0.333984375,0.353515625,0.4208984375,0.505859375,0.564453125,0.5791015625,0.5703125,0.5283203125,0.47265625,0.4365234375,0.4443359375,0.4921875,0.5595703125,0.6181640625,0.62890625,0.591796875,0.533203125,0.4931640625,0.5029296875,0.5595703125,0.623046875,0.6552734375,0.63671875,0.5712890625,0.4892578125,0.4326171875,0.419921875,0.4296875,0.47265625,0.529296875,0.564453125,0.556640625,0.5078125,0.439453125,0.36328125,0.279296875,0.2294921875,0.24609375,0.32421875,0.421875,0.5,0.57421875,0.6572265625,0.7080078125,0.69140625,0.611328125,0.5107421875,0.4296875,0.353515625,0.2802734375,0.2490234375,0.2900390625,0.3896484375,0.4990234375,0.5791015625,0.6552734375,0.74609375,0.8095703125,0.80859375,0.7421875,0.6484375,0.5693359375,0.4892578125,0.3955078125,0.3291015625,0.3291015625,0.3955078125,0.4892578125,0.5693359375,0.6259765625,0.619140625,0.546875,0.447265625,0.3740234375,0.365234375,0.419921875,0.4912109375,0.560546875,0.60546875,0.6142578125,0.5927734375,0.5673828125,0.5595703125,0.5576171875,0.55859375,0.5615234375,0.56640625,0.572265625,0.5771484375,0.5791015625,0.5869140625,0.6123046875,0.6337890625,0.6259765625,0.580078125,0.51171875,0.439453125,0.380859375,0.3681640625,0.40234375,0.45703125,0.4912109375,0.478515625,0.419921875,0.365234375,0.3740234375,0.447265625,0.546875,0.619140625,0.6259765625,0.5693359375,0.49609375,0.4267578125,0.380859375,0.373046875,0.392578125,0.4150390625,0.419921875,0.41015625,0.3779296875,0.3447265625,0.3388671875,0.373046875,0.4375,0.509765625,0.580078125,0.638671875,0.6630859375,0.646484375,0.603515625,0.568359375,0.5595703125,0.546875,0.4912109375,0.4130859375,0.3515625,0.337890625,0.3740234375,0.439453125,0.5107421875,0.576171875,0.6171875,0.62109375,0.5986328125,0.57421875,0.5693359375,0.5771484375,0.603515625,0.6259765625,0.619140625,0.5732421875,0.5029296875,0.4296875,0.36328125,0.328125,0.3466796875,0.416015625,0.5029296875,0.564453125,0.5791015625,0.5693359375,0.521484375,0.4541015625,0.4052734375,0.4013671875,0.443359375,0.509765625,0.587890625,0.6806640625,0.7470703125,0.748046875,0.6826171875,0.5888671875,0.509765625,0.4404296875,0.39453125,0.392578125,0.435546875,0.5,0.5478515625,0.5595703125,0.548828125,0.5009765625,0.4375,0.392578125,0.3916015625,0.4345703125,0.5,0.55859375,0.5771484375,0.5556640625,0.517578125,0.498046875,0.5185546875,0.5791015625,0.6357421875,0.6337890625,0.5732421875,0.490234375,0.4306640625,0.431640625,0.4892578125,0.5576171875,0.6015625,0.599609375,0.55078125,0.4814453125,0.431640625,0.419921875,0.431640625,0.4833984375,0.5546875,0.60546875,0.6103515625,0.5673828125,0.5,0.439453125,0.427734375,0.4677734375,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.37890625,0.37109375,0.390625,0.4130859375,0.419921875,0.4208984375,0.423828125,0.4296875,0.435546875,0.439453125,0.4404296875,0.439453125,0.4501953125,0.50390625,0.5810546875,0.6416015625,0.6572265625,0.623046875,0.5595703125,0.4833984375,0.3955078125,0.3349609375,0.33984375,0.408203125,0.5009765625,0.5791015625,0.6435546875,0.6767578125,0.6552734375,0.583984375,0.49609375,0.4345703125,0.419921875,0.4189453125,0.419921875,0.423828125,0.4296875,0.435546875,0.439453125,0.439453125,0.431640625,0.3994140625,0.3623046875,0.3515625,0.3798828125,0.439453125,0.509765625,0.5791015625,0.63671875,0.6611328125,0.646484375,0.6083984375,0.576171875,0.5693359375,0.5791015625,0.6142578125,0.6533203125,0.666015625,0.638671875,0.5791015625,0.509765625,0.431640625,0.3388671875,0.2724609375,0.271484375,0.3369140625,0.4296875,0.509765625,0.5771484375,0.62109375,0.6181640625,0.5673828125,0.49609375,0.443359375,0.4296875,0.4287109375,0.427734375,0.4287109375,0.4306640625,0.431640625,0.4306640625,0.4296875,0.427734375,0.4267578125,0.427734375,0.4306640625,0.4345703125,0.4375,0.439453125,0.451171875,0.4912109375,0.541015625,0.5654296875,0.5458984375,0.490234375,0.419921875,0.33984375,0.2470703125,0.181640625,0.1826171875,0.2490234375,0.341796875,0.419921875,0.48046875,0.5009765625,0.4814453125,0.443359375,0.421875,0.4404296875,0.5,0.556640625,0.5673828125,0.529296875,0.4736328125,0.4375,0.4501953125,0.509765625,0.5849609375,0.6650390625,0.708984375,0.6845703125,0.599609375,0.498046875,0.419921875,0.353515625,0.3046875,0.29296875,0.322265625,0.373046875,0.412109375,0.419921875,0.4296875,0.48046875,0.552734375,0.6064453125,0.6142578125,0.5751953125,0.509765625,0.443359375,0.400390625,0.4033203125,0.451171875,0.5185546875,0.568359375,0.5791015625,0.5888671875,0.6298828125,0.6806640625,0.7080078125,0.693359375,0.6396484375,0.5693359375,0.49609375,0.4287109375,0.3857421875,0.3818359375,0.4072265625,0.4326171875,0.439453125,0.4423828125,0.4580078125,0.486328125,0.5185546875,0.544921875,0.55859375,0.5595703125,0.5458984375,0.4951171875,0.42578125,0.376953125,0.3759765625,0.4208984375,0.4892578125,0.5693359375,0.6630859375,0.73046875,0.73046875,0.6630859375,0.5693359375,0.4892578125,0.427734375,0.408203125,0.4326171875,0.4755859375,0.5029296875,0.4873046875,0.4296875,0.375,0.3759765625,0.4345703125,0.515625,0.5712890625,0.568359375,0.509765625,0.4287109375,0.3271484375,0.24609375,0.2275390625,0.2783203125,0.36328125,0.439453125,0.5107421875,0.5771484375,0.6181640625,0.62109375,0.595703125,0.568359375,0.5595703125,0.5546875,0.5361328125,0.5048828125,0.46875,0.4384765625,0.4228515625,0.419921875,0.419921875,0.4228515625,0.4267578125,0.4326171875,0.4365234375,0.439453125,0.439453125,0.4521484375,0.5087890625,0.5888671875,0.650390625,0.6640625,0.6259765625,0.5595703125,0.48046875,0.3896484375,0.3271484375,0.3310546875,0.3994140625,0.4921875,0.5693359375,0.6240234375,0.623046875,0.564453125,0.4833984375,0.427734375,0.4306640625,0.4892578125,0.55859375,0.6044921875,0.6064453125,0.5634765625,0.4990234375,0.451171875,0.439453125,0.4423828125,0.4560546875,0.4814453125,0.51171875,0.5390625,0.5546875,0.5595703125,0.55859375,0.544921875,0.5185546875,0.486328125,0.4580078125,0.4423828125,0.439453125,0.439453125,0.4375,0.43359375,0.4306640625,0.4287109375,0.4287109375,0.4296875,0.4228515625,0.3896484375,0.349609375,0.3349609375,0.3603515625,0.4189453125,0.4892578125,0.55078125,0.5712890625,0.548828125,0.509765625,0.4873046875,0.5078125,0.5693359375,0.6494140625,0.7431640625,0.8095703125,0.8095703125,0.7431640625,0.6494140625,0.5693359375,0.49609375,0.42578125,0.37890625,0.3701171875,0.3896484375,0.4130859375,0.419921875,0.41015625,0.369140625,0.318359375,0.291015625,0.3056640625,0.359375,0.4296875,0.4892578125,0.5,0.458984375,0.396484375,0.353515625,0.3623046875,0.419921875,0.4912109375,0.560546875,0.60546875,0.6142578125,0.5927734375,0.5673828125,0.5595703125,0.5673828125,0.607421875,0.6591796875,0.689453125,0.677734375,0.626953125,0.5595703125,0.4794921875,0.3798828125,0.2998046875,0.283203125,0.3359375,0.421875,0.5,0.580078125,0.6806640625,0.759765625,0.7744140625,0.7216796875,0.6357421875,0.5595703125,0.478515625,0.369140625,0.2744140625,0.2392578125,0.275390625,0.353515625,0.4296875,0.5087890625,0.6005859375,0.6640625,0.6611328125,0.591796875,0.498046875,0.419921875,0.341796875,0.2509765625,0.1875,0.1875,0.2529296875,0.34375,0.419921875,0.48046875,0.5087890625,0.50390625,0.4853515625,0.48046875,0.5087890625,0.5693359375,0.6328125,0.6669921875,0.650390625,0.587890625,0.5078125,0.4521484375,0.439453125,0.439453125,0.4365234375,0.4326171875,0.4267578125,0.4228515625,0.419921875,0.419921875,0.4326171875,0.4912109375,0.576171875,0.6435546875,0.6611328125,0.6259765625,0.5595703125,0.4990234375,0.4873046875,0.5263671875,0.5869140625,0.626953125,0.6171875,0.5595703125,0.498046875,0.47265625,0.4853515625,0.513671875,0.5263671875,0.5009765625,0.439453125,0.375,0.33984375,0.357421875,0.421875,0.5029296875,0.55859375,0.5693359375,0.5556640625,0.5048828125,0.4345703125,0.3837890625,0.380859375,0.4228515625,0.4892578125,0.5556640625,0.5986328125,0.59765625,0.55078125,0.486328125,0.439453125,0.4296875,0.4248046875,0.4013671875,0.37890625,0.384765625,0.427734375,0.49609375,0.5693359375,0.6357421875,0.6689453125,0.6474609375,0.5771484375,0.490234375,0.431640625,0.419921875,0.4345703125,0.4931640625,0.5771484375,0.642578125,0.6591796875,0.6240234375,0.5595703125,0.48828125,0.419921875,0.376953125,0.3720703125,0.3955078125,0.421875,0.4296875,0.4228515625,0.390625,0.3525390625,0.337890625,0.3623046875,0.419921875,0.4892578125,0.568359375,0.6630859375,0.734375,0.740234375,0.6796875,0.5888671875,0.509765625,0.4375,0.3759765625,0.34375,0.3505859375,0.3837890625,0.4130859375,0.419921875,0.41015625,0.3779296875,0.341796875,0.33203125,0.361328125,0.4208984375,0.4892578125,0.544921875,0.5458984375,0.4912109375,0.4169921875,0.365234375,0.37109375,0.4296875,0.4912109375,0.51171875,0.4873046875,0.443359375,0.416015625,0.431640625,0.4892578125,0.55859375,0.6201171875,0.654296875,0.6494140625,0.6181640625,0.587890625,0.5791015625,0.5859375,0.6171875,0.6533203125,0.6650390625,0.6376953125,0.5791015625,0.509765625,0.451171875,0.4404296875,0.4794921875,0.3837890625,0.3408203125,0.32421875,0.32421875,0.3251953125,0.3291015625,0.34765625,0.37890625,0.41015625,0.431640625,0.4365234375,0.4287109375,0.4296875,0.46875,0.5361328125,0.599609375,0.62890625,0.615234375,0.5703125,0.5146484375,0.4541015625,0.421875,0.4443359375,0.517578125,0.6044921875,0.673828125,0.7265625,0.7353515625,0.6767578125,0.5634765625,0.4375,0.3525390625,0.3251953125,0.318359375,0.3232421875,0.34375,0.3759765625,0.40625,0.4248046875,0.4287109375,0.4228515625,0.40234375,0.3837890625,0.390625,0.4287109375,0.48828125,0.55078125,0.611328125,0.658203125,0.677734375,0.666015625,0.6376953125,0.6181640625,0.6220703125,0.638671875,0.673828125,0.705078125,0.7080078125,0.673828125,0.6142578125,0.55078125,0.4814453125,0.39453125,0.330078125,0.326171875,0.384765625,0.47265625,0.55078125,0.6181640625,0.6552734375,0.6376953125,0.56640625,0.4716796875,0.4013671875,0.376953125,0.369140625,0.3671875,0.373046875,0.3818359375,0.3876953125,0.3857421875,0.376953125,0.3671875,0.359375,0.361328125,0.375,0.396484375,0.416015625,0.4287109375,0.4462890625,0.4833984375,0.515625,0.5146484375,0.470703125,0.3994140625,0.3251953125,0.2470703125,0.1591796875,0.1005859375,0.1044921875,0.169921875,0.255859375,0.3251953125,0.3818359375,0.4189453125,0.4306640625,0.4287109375,0.431640625,0.4541015625,0.5,0.5419921875,0.5498046875,0.5244140625,0.4912109375,0.4755859375,0.4970703125,0.55078125,0.6123046875,0.66015625,0.6591796875,0.5947265625,0.4892578125,0.388671875,0.3251953125,0.27734375,0.24609375,0.244140625,0.2705078125,0.306640625,0.3291015625,0.3251953125,0.3291015625,0.384765625,0.478515625,0.5693359375,0.615234375,0.6044921875,0.55078125,0.494140625,0.46484375,0.48046875,0.5380859375,0.611328125,0.662109375,0.673828125,0.6826171875,0.7177734375,0.759765625,0.7763671875,0.7509765625,0.6923828125,0.6220703125,0.5478515625,0.4716796875,0.4150390625,0.39453125,0.4052734375,0.423828125,0.4287109375,0.43359375,0.45703125,0.49609375,0.5380859375,0.5673828125,0.5771484375,0.5703125,0.546875,0.4833984375,0.400390625,0.341796875,0.3359375,0.3798828125,0.4482421875,0.52734375,0.6220703125,0.6884765625,0.6884765625,0.6220703125,0.52734375,0.4482421875,0.3837890625,0.3525390625,0.361328125,0.39453125,0.4228515625,0.4189453125,0.376953125,0.341796875,0.3671875,0.4501953125,0.5478515625,0.611328125,0.609375,0.55078125,0.4697265625,0.3671875,0.28125,0.2529296875,0.2900390625,0.3623046875,0.4287109375,0.4931640625,0.5615234375,0.6123046875,0.6279296875,0.611328125,0.5849609375,0.5703125,0.5546875,0.5166015625,0.4609375,0.400390625,0.353515625,0.330078125,0.3251953125,0.328125,0.3408203125,0.36328125,0.390625,0.4140625,0.4267578125,0.4287109375,0.4423828125,0.5009765625,0.5859375,0.6533203125,0.671875,0.63671875,0.5703125,0.494140625,0.4189453125,0.37890625,0.4013671875,0.4755859375,0.560546875,0.6220703125,0.6572265625,0.6318359375,0.548828125,0.451171875,0.3876953125,0.3896484375,0.4482421875,0.517578125,0.5673828125,0.576171875,0.541015625,0.4833984375,0.439453125,0.4287109375,0.4306640625,0.4423828125,0.4658203125,0.4990234375,0.5322265625,0.556640625,0.5703125,0.5771484375,0.5673828125,0.5380859375,0.49609375,0.45703125,0.43359375,0.4287109375,0.4267578125,0.4140625,0.39453125,0.376953125,0.3671875,0.3681640625,0.376953125,0.37890625,0.353515625,0.3173828125,0.3017578125,0.3232421875,0.3779296875,0.4482421875,0.51171875,0.5439453125,0.5419921875,0.52734375,0.5263671875,0.5576171875,0.6220703125,0.701171875,0.7958984375,0.8623046875,0.8623046875,0.7958984375,0.701171875,0.6220703125,0.544921875,0.45703125,0.376953125,0.3291015625,0.31640625,0.322265625,0.3251953125,0.31640625,0.28125,0.2392578125,0.22265625,0.248046875,0.306640625,0.376953125,0.4375,0.4482421875,0.404296875,0.333984375,0.2802734375,0.27734375,0.3251953125,0.392578125,0.47265625,0.546875,0.58984375,0.5966796875,0.5830078125,0.5703125,0.568359375,0.5966796875,0.640625,0.6708984375,0.6669921875,0.6279296875,0.5703125,0.4990234375,0.4033203125,0.3232421875,0.2998046875,0.34375,0.4228515625,0.5,0.5791015625,0.67578125,0.7509765625,0.7646484375,0.7158203125,0.6376953125,0.5703125,0.49609375,0.3857421875,0.2783203125,0.22265625,0.2392578125,0.3037109375,0.376953125,0.4541015625,0.5361328125,0.583984375,0.5654296875,0.4892578125,0.396484375,0.3251953125,0.2587890625,0.1845703125,0.134765625,0.1396484375,0.1943359375,0.267578125,0.3251953125,0.375,0.4189453125,0.4560546875,0.4912109375,0.5283203125,0.572265625,0.6220703125,0.6669921875,0.6806640625,0.6474609375,0.57421875,0.4931640625,0.4404296875,0.4287109375,0.4267578125,0.4140625,0.390625,0.36328125,0.3408203125,0.328125,0.3251953125,0.3408203125,0.4130859375,0.5205078125,0.615234375,0.6572265625,0.6337890625,0.5703125,0.5087890625,0.4921875,0.5244140625,0.5810546875,0.623046875,0.6201171875,0.5703125,0.515625,0.4892578125,0.4921875,0.5068359375,0.509765625,0.4833984375,0.4287109375,0.375,0.359375,0.3994140625,0.48046875,0.5673828125,0.619140625,0.6220703125,0.5986328125,0.5341796875,0.4482421875,0.380859375,0.361328125,0.390625,0.4482421875,0.5048828125,0.5341796875,0.5224609375,0.4736328125,0.4140625,0.376953125,0.376953125,0.3828125,0.37890625,0.3818359375,0.4111328125,0.4716796875,0.5478515625,0.6220703125,0.68359375,0.693359375,0.6328125,0.5205078125,0.40234375,0.33203125,0.3251953125,0.349609375,0.4228515625,0.525390625,0.611328125,0.646484375,0.625,0.5703125,0.5048828125,0.4296875,0.3681640625,0.3388671875,0.34375,0.36328125,0.376953125,0.380859375,0.361328125,0.3330078125,0.3212890625,0.3408203125,0.3876953125,0.4482421875,0.51953125,0.619140625,0.70703125,0.73828125,0.7021484375,0.626953125,0.55078125,0.4775390625,0.404296875,0.34765625,0.3232421875,0.32421875,0.3310546875,0.3251953125,0.3115234375,0.2890625,0.2763671875,0.291015625,0.3359375,0.3935546875,0.4482421875,0.4853515625,0.47265625,0.4130859375,0.3427734375,0.3017578125,0.31640625,0.376953125,0.44140625,0.47265625,0.4638671875,0.4306640625,0.40234375,0.40625,0.4482421875,0.50390625,0.5751953125,0.642578125,0.6845703125,0.6953125,0.685546875,0.673828125,0.6689453125,0.6826171875,0.6982421875,0.697265625,0.666015625,0.6123046875,0.55078125,0.5,0.4912109375,0.525390625,0.39453125,0.3310546875,0.2841796875,0.2626953125,0.2587890625,0.267578125,0.30859375,0.375,0.44140625,0.4833984375,0.490234375,0.46875,0.447265625,0.4462890625,0.4697265625,0.5048828125,0.5341796875,0.54296875,0.5302734375,0.509765625,0.4951171875,0.5048828125,0.5498046875,0.619140625,0.6884765625,0.740234375,0.7763671875,0.7666015625,0.6875,0.5517578125,0.40625,0.3017578125,0.2587890625,0.23828125,0.244140625,0.2861328125,0.353515625,0.419921875,0.4609375,0.46875,0.4658203125,0.4560546875,0.4521484375,0.46875,0.5078125,0.5576171875,0.6044921875,0.6455078125,0.6669921875,0.6630859375,0.640625,0.6181640625,0.615234375,0.634765625,0.666015625,0.7080078125,0.740234375,0.740234375,0.705078125,0.6533203125,0.6044921875,0.55078125,0.4755859375,0.4140625,0.40234375,0.4501953125,0.5283203125,0.6044921875,0.6728515625,0.7109375,0.6904296875,0.607421875,0.4951171875,0.4052734375,0.3642578125,0.341796875,0.337890625,0.3525390625,0.375,0.3896484375,0.3857421875,0.3642578125,0.3369140625,0.3154296875,0.314453125,0.341796875,0.3896484375,0.4375,0.46875,0.5,0.53515625,0.546875,0.5107421875,0.4306640625,0.3369140625,0.2587890625,0.1826171875,0.1044921875,0.056640625,0.068359375,0.1298828125,0.205078125,0.2587890625,0.3056640625,0.357421875,0.4052734375,0.44140625,0.46484375,0.4814453125,0.5,0.513671875,0.5146484375,0.5078125,0.5078125,0.525390625,0.560546875,0.6044921875,0.6435546875,0.6455078125,0.5908203125,0.48828125,0.3740234375,0.2919921875,0.2587890625,0.244140625,0.24609375,0.26171875,0.28125,0.2900390625,0.2822265625,0.2587890625,0.248046875,0.296875,0.40234375,0.5244140625,0.61328125,0.63671875,0.6044921875,0.5634765625,0.546875,0.568359375,0.6240234375,0.6875,0.73046875,0.740234375,0.748046875,0.7763671875,0.806640625,0.8095703125,0.7724609375,0.70703125,0.634765625,0.5615234375,0.4892578125,0.4384765625,0.4248046875,0.44140625,0.462890625,0.46875,0.474609375,0.4970703125,0.5302734375,0.5576171875,0.56640625,0.5537109375,0.5302734375,0.4912109375,0.4140625,0.3251953125,0.2705078125,0.2724609375,0.32421875,0.39453125,0.474609375,0.568359375,0.634765625,0.634765625,0.568359375,0.474609375,0.39453125,0.326171875,0.28125,0.275390625,0.3056640625,0.3486328125,0.373046875,0.3642578125,0.361328125,0.41796875,0.521484375,0.6240234375,0.6787109375,0.666015625,0.6044921875,0.525390625,0.4296875,0.3525390625,0.328125,0.359375,0.41796875,0.46875,0.5185546875,0.57421875,0.6162109375,0.6240234375,0.5986328125,0.560546875,0.5302734375,0.498046875,0.4453125,0.3798828125,0.3203125,0.279296875,0.26171875,0.2587890625,0.263671875,0.2890625,0.3359375,0.3916015625,0.4384765625,0.4638671875,0.46875,0.48046875,0.529296875,0.5966796875,0.642578125,0.6435546875,0.5986328125,0.5302734375,0.4599609375,0.4091796875,0.4052734375,0.455078125,0.5361328125,0.6044921875,0.634765625,0.6376953125,0.5810546875,0.4775390625,0.375,0.3203125,0.3330078125,0.39453125,0.4658203125,0.52734375,0.5576171875,0.546875,0.509765625,0.4775390625,0.46875,0.466796875,0.458984375,0.453125,0.4580078125,0.4765625,0.5029296875,0.5302734375,0.5537109375,0.56640625,0.5576171875,0.5302734375,0.4970703125,0.474609375,0.46875,0.462890625,0.4345703125,0.3916015625,0.3525390625,0.333984375,0.3408203125,0.3642578125,0.380859375,0.361328125,0.3203125,0.2861328125,0.287109375,0.3271484375,0.39453125,0.4599609375,0.5,0.513671875,0.5166015625,0.529296875,0.5693359375,0.634765625,0.71484375,0.80859375,0.8759765625,0.8759765625,0.80859375,0.71484375,0.634765625,0.556640625,0.4580078125,0.361328125,0.2919921875,0.26171875,0.2578125,0.2587890625,0.2509765625,0.22265625,0.1923828125,0.189453125,0.2265625,0.2919921875,0.3642578125,0.4248046875,0.4384765625,0.39453125,0.3173828125,0.2490234375,0.2275390625,0.2587890625,0.3134765625,0.39453125,0.482421875,0.546875,0.568359375,0.5556640625,0.5302734375,0.5107421875,0.517578125,0.546875,0.5771484375,0.587890625,0.5703125,0.5302734375,0.474609375,0.396484375,0.328125,0.30859375,0.3486328125,0.423828125,0.5,0.576171875,0.6591796875,0.712890625,0.708984375,0.654296875,0.5830078125,0.5302734375,0.4716796875,0.376953125,0.2783203125,0.2236328125,0.2333984375,0.2919921875,0.3642578125,0.4375,0.50390625,0.52734375,0.48828125,0.4033203125,0.3154296875,0.2587890625,0.2119140625,0.16796875,0.1455078125,0.15625,0.1943359375,0.234375,0.2587890625,0.283203125,0.33203125,0.4052734375,0.48828125,0.5615234375,0.6103515625,0.634765625,0.6494140625,0.6435546875,0.609375,0.5576171875,0.5068359375,0.4755859375,0.46875,0.4638671875,0.4384765625,0.3916015625,0.3359375,0.2890625,0.263671875,0.2587890625,0.275390625,0.349609375,0.4638671875,0.5654296875,0.61328125,0.59375,0.5302734375,0.466796875,0.4404296875,0.4609375,0.5107421875,0.5556640625,0.564453125,0.5302734375,0.490234375,0.4765625,0.48828125,0.5107421875,0.5224609375,0.5087890625,0.46875,0.4326171875,0.4345703125,0.4833984375,0.5576171875,0.623046875,0.650390625,0.634765625,0.59765625,0.5224609375,0.4306640625,0.3583984375,0.3330078125,0.3525390625,0.39453125,0.4345703125,0.4482421875,0.4306640625,0.3916015625,0.3564453125,0.345703125,0.3642578125,0.3857421875,0.396484375,0.408203125,0.4384765625,0.4921875,0.5625,0.634765625,0.6923828125,0.68359375,0.59375,0.4521484375,0.3203125,0.251953125,0.2587890625,0.296875,0.3759765625,0.474609375,0.5546875,0.5869140625,0.5712890625,0.5302734375,0.478515625,0.4091796875,0.3447265625,0.30859375,0.310546875,0.3359375,0.3642578125,0.3837890625,0.380859375,0.3583984375,0.3359375,0.33203125,0.353515625,0.39453125,0.453125,0.5537109375,0.662109375,0.7294921875,0.7294921875,0.67578125,0.6044921875,0.5302734375,0.451171875,0.380859375,0.3310546875,0.3017578125,0.2822265625,0.2587890625,0.2333984375,0.2197265625,0.2314453125,0.2705078125,0.3232421875,0.369140625,0.39453125,0.40234375,0.37109375,0.3134765625,0.267578125,0.259765625,0.2978515625,0.3642578125,0.431640625,0.4765625,0.482421875,0.4521484375,0.4091796875,0.384765625,0.39453125,0.4248046875,0.49609375,0.595703125,0.6904296875,0.7490234375,0.7607421875,0.740234375,0.7177734375,0.7080078125,0.70703125,0.701171875,0.6826171875,0.6484375,0.6044921875,0.56640625,0.5595703125,0.5849609375,0.427734375,0.3642578125,0.302734375,0.2666015625,0.2587890625,0.271484375,0.3310546875,0.4248046875,0.515625,0.568359375,0.5673828125,0.5302734375,0.4814453125,0.4306640625,0.39453125,0.3896484375,0.4130859375,0.4462890625,0.46875,0.490234375,0.521484375,0.56640625,0.6181640625,0.669921875,0.7109375,0.740234375,0.7607421875,0.748046875,0.6796875,0.560546875,0.4248046875,0.318359375,0.2587890625,0.220703125,0.220703125,0.2734375,0.36328125,0.4580078125,0.517578125,0.5302734375,0.5283203125,0.5263671875,0.5302734375,0.546875,0.5751953125,0.6064453125,0.634765625,0.6533203125,0.642578125,0.607421875,0.568359375,0.55078125,0.564453125,0.6044921875,0.6533203125,0.705078125,0.740234375,0.740234375,0.7080078125,0.666015625,0.634765625,0.599609375,0.5380859375,0.48046875,0.4609375,0.494140625,0.5615234375,0.634765625,0.705078125,0.7548828125,0.748046875,0.673828125,0.55859375,0.4541015625,0.39453125,0.3564453125,0.349609375,0.375,0.4140625,0.439453125,0.4326171875,0.39453125,0.3466796875,0.3037109375,0.2919921875,0.328125,0.400390625,0.4765625,0.5302734375,0.5771484375,0.619140625,0.62109375,0.560546875,0.453125,0.341796875,0.2587890625,0.185546875,0.1181640625,0.0849609375,0.1044921875,0.162109375,0.2236328125,0.2587890625,0.29296875,0.3525390625,0.4248046875,0.4853515625,0.515625,0.515625,0.5,0.48046875,0.4677734375,0.474609375,0.5078125,0.556640625,0.603515625,0.634765625,0.6494140625,0.6123046875,0.5185546875,0.400390625,0.2998046875,0.2529296875,0.2587890625,0.283203125,0.32421875,0.361328125,0.3720703125,0.349609375,0.3056640625,0.2587890625,0.2275390625,0.2548828125,0.3505859375,0.48046875,0.5927734375,0.6455078125,0.634765625,0.611328125,0.60546875,0.6240234375,0.6630859375,0.7060546875,0.734375,0.740234375,0.7470703125,0.7724609375,0.794921875,0.7900390625,0.74609375,0.677734375,0.6044921875,0.533203125,0.4716796875,0.44140625,0.4521484375,0.4892578125,0.521484375,0.5302734375,0.53515625,0.5537109375,0.57421875,0.5771484375,0.5556640625,0.5146484375,0.46875,0.4130859375,0.3251953125,0.240234375,0.201171875,0.224609375,0.2900390625,0.3642578125,0.443359375,0.5380859375,0.6044921875,0.6044921875,0.5380859375,0.443359375,0.3642578125,0.2919921875,0.232421875,0.2119140625,0.2421875,0.3056640625,0.365234375,0.39453125,0.4287109375,0.5126953125,0.6240234375,0.7099609375,0.736328125,0.7021484375,0.634765625,0.5595703125,0.478515625,0.421875,0.4140625,0.4482421875,0.4970703125,0.5302734375,0.560546875,0.5986328125,0.6240234375,0.6162109375,0.57421875,0.5185546875,0.46875,0.419921875,0.361328125,0.306640625,0.26953125,0.2568359375,0.2578125,0.2587890625,0.265625,0.2978515625,0.3583984375,0.4306640625,0.490234375,0.5234375,0.5302734375,0.5380859375,0.572265625,0.6123046875,0.626953125,0.6005859375,0.5400390625,0.46875,0.4052734375,0.3798828125,0.4111328125,0.4853515625,0.5654296875,0.6103515625,0.6044921875,0.5703125,0.486328125,0.375,0.2890625,0.2626953125,0.296875,0.3642578125,0.4375,0.509765625,0.560546875,0.57421875,0.5576171875,0.5361328125,0.5302734375,0.5224609375,0.48828125,0.44140625,0.40625,0.400390625,0.4267578125,0.46875,0.5146484375,0.5556640625,0.5771484375,0.57421875,0.5537109375,0.53515625,0.5302734375,0.5205078125,0.4775390625,0.4140625,0.3583984375,0.3369140625,0.353515625,0.39453125,0.427734375,0.416015625,0.36328125,0.306640625,0.279296875,0.3017578125,0.3642578125,0.4296875,0.4697265625,0.482421875,0.4853515625,0.4990234375,0.5390625,0.6044921875,0.6845703125,0.7783203125,0.8447265625,0.8447265625,0.7783203125,0.6845703125,0.6044921875,0.5263671875,0.4326171875,0.341796875,0.28125,0.2568359375,0.2568359375,0.2587890625,0.251953125,0.2265625,0.2041015625,0.208984375,0.2529296875,0.3212890625,0.39453125,0.45703125,0.4775390625,0.44140625,0.3642578125,0.28515625,0.24609375,0.2587890625,0.2958984375,0.3671875,0.4521484375,0.5166015625,0.53515625,0.51171875,0.46875,0.4287109375,0.4111328125,0.421875,0.4521484375,0.4814453125,0.48828125,0.46875,0.4345703125,0.376953125,0.3251953125,0.314453125,0.353515625,0.42578125,0.5,0.572265625,0.63671875,0.662109375,0.6357421875,0.5703125,0.505859375,0.46875,0.431640625,0.361328125,0.287109375,0.248046875,0.263671875,0.322265625,0.39453125,0.46484375,0.515625,0.5185546875,0.4638671875,0.375,0.2978515625,0.2587890625,0.236328125,0.2275390625,0.2373046875,0.255859375,0.2724609375,0.2734375,0.2587890625,0.2509765625,0.2900390625,0.3779296875,0.4853515625,0.5732421875,0.6123046875,0.6044921875,0.583984375,0.5615234375,0.541015625,0.529296875,0.52734375,0.529296875,0.5302734375,0.5234375,0.490234375,0.4306640625,0.3583984375,0.2978515625,0.265625,0.2587890625,0.2734375,0.3408203125,0.44140625,0.52734375,0.560546875,0.5341796875,0.46875,0.4033203125,0.3662109375,0.3720703125,0.4140625,0.462890625,0.484375,0.46875,0.4482421875,0.4521484375,0.48046875,0.5185546875,0.546875,0.55078125,0.5302734375,0.5126953125,0.5283203125,0.57421875,0.6240234375,0.65234375,0.6435546875,0.6044921875,0.55078125,0.4736328125,0.3916015625,0.3359375,0.3212890625,0.337890625,0.3642578125,0.3837890625,0.380859375,0.3583984375,0.3359375,0.33203125,0.353515625,0.39453125,0.43359375,0.4501953125,0.4521484375,0.4580078125,0.484375,0.5361328125,0.6044921875,0.66015625,0.64453125,0.546875,0.4052734375,0.283203125,0.232421875,0.2587890625,0.3115234375,0.3857421875,0.4609375,0.5078125,0.5166015625,0.49609375,0.46875,0.435546875,0.380859375,0.3251953125,0.2978515625,0.30859375,0.3486328125,0.39453125,0.4345703125,0.4482421875,0.4306640625,0.3916015625,0.3564453125,0.345703125,0.3642578125,0.40625,0.5,0.619140625,0.708984375,0.7373046875,0.7021484375,0.634765625,0.5625,0.4912109375,0.427734375,0.3779296875,0.3388671875,0.3017578125,0.2587890625,0.2197265625,0.2109375,0.240234375,0.294921875,0.3486328125,0.3740234375,0.3642578125,0.3359375,0.2841796875,0.234375,0.2197265625,0.25390625,0.3212890625,0.39453125,0.4658203125,0.525390625,0.546875,0.5166015625,0.4521484375,0.3935546875,0.3642578125,0.3603515625,0.4189453125,0.533203125,0.6591796875,0.7490234375,0.7724609375,0.740234375,0.697265625,0.6669921875,0.654296875,0.6572265625,0.662109375,0.6572265625,0.634765625,0.61328125,0.609375,0.6240234375,0.4873046875,0.4384765625,0.376953125,0.3349609375,0.3251953125,0.33984375,0.4052734375,0.505859375,0.595703125,0.6396484375,0.6240234375,0.5703125,0.5,0.408203125,0.3271484375,0.294921875,0.318359375,0.3740234375,0.4287109375,0.482421875,0.5439453125,0.599609375,0.638671875,0.6572265625,0.6650390625,0.673828125,0.68359375,0.6845703125,0.6552734375,0.5849609375,0.48828125,0.39453125,0.3251953125,0.271484375,0.2568359375,0.2998046875,0.390625,0.490234375,0.5556640625,0.5703125,0.5693359375,0.5703125,0.57421875,0.5830078125,0.5966796875,0.6103515625,0.6220703125,0.6220703125,0.5849609375,0.525390625,0.4765625,0.46484375,0.494140625,0.55078125,0.6142578125,0.673828125,0.7080078125,0.705078125,0.673828125,0.638671875,0.6220703125,0.6015625,0.552734375,0.4970703125,0.470703125,0.4921875,0.55078125,0.6220703125,0.6962890625,0.7626953125,0.783203125,0.732421875,0.62890625,0.521484375,0.4482421875,0.396484375,0.3876953125,0.421875,0.4736328125,0.5078125,0.4990234375,0.4482421875,0.3828125,0.31640625,0.287109375,0.3193359375,0.4033203125,0.4990234375,0.5703125,0.6337890625,0.6904296875,0.701171875,0.640625,0.52734375,0.4091796875,0.3251953125,0.2548828125,0.1962890625,0.1748046875,0.201171875,0.255859375,0.3056640625,0.3251953125,0.3466796875,0.4052734375,0.484375,0.546875,0.568359375,0.546875,0.5,0.451171875,0.4228515625,0.4326171875,0.482421875,0.5498046875,0.6015625,0.6220703125,0.6181640625,0.5595703125,0.4580078125,0.353515625,0.2890625,0.2841796875,0.3251953125,0.3837890625,0.45703125,0.51171875,0.5166015625,0.466796875,0.392578125,0.3251953125,0.2744140625,0.271484375,0.333984375,0.4423828125,0.552734375,0.6162109375,0.6220703125,0.61328125,0.611328125,0.62109375,0.638671875,0.658203125,0.6708984375,0.673828125,0.6806640625,0.70703125,0.7333984375,0.7314453125,0.69140625,0.6240234375,0.55078125,0.4814453125,0.431640625,0.4228515625,0.4580078125,0.515625,0.5595703125,0.5703125,0.5751953125,0.59375,0.6083984375,0.5966796875,0.5537109375,0.4921875,0.4287109375,0.3583984375,0.265625,0.189453125,0.1708984375,0.21875,0.2998046875,0.376953125,0.45703125,0.55078125,0.6181640625,0.6181640625,0.55078125,0.45703125,0.376953125,0.3017578125,0.228515625,0.193359375,0.220703125,0.298828125,0.38671875,0.4482421875,0.51171875,0.611328125,0.712890625,0.767578125,0.755859375,0.6943359375,0.6220703125,0.548828125,0.484375,0.4521484375,0.4638671875,0.5078125,0.55078125,0.5703125,0.5849609375,0.611328125,0.6279296875,0.6123046875,0.5615234375,0.4931640625,0.4287109375,0.3671875,0.3095703125,0.275390625,0.2734375,0.296875,0.3193359375,0.3251953125,0.3310546875,0.361328125,0.416015625,0.48046875,0.5341796875,0.564453125,0.5703125,0.5771484375,0.6015625,0.623046875,0.6162109375,0.5712890625,0.501953125,0.4287109375,0.369140625,0.361328125,0.4130859375,0.4970703125,0.568359375,0.587890625,0.55078125,0.4873046875,0.3876953125,0.2861328125,0.2314453125,0.2431640625,0.3046875,0.376953125,0.451171875,0.52734375,0.583984375,0.6044921875,0.59375,0.5751953125,0.5703125,0.55859375,0.505859375,0.4287109375,0.365234375,0.3447265625,0.373046875,0.4287109375,0.4921875,0.5537109375,0.5966796875,0.6083984375,0.59375,0.5751953125,0.5703125,0.55859375,0.5078125,0.435546875,0.376953125,0.361328125,0.390625,0.4482421875,0.49609375,0.490234375,0.4326171875,0.357421875,0.3095703125,0.3173828125,0.376953125,0.44140625,0.47265625,0.4716796875,0.45703125,0.455078125,0.4873046875,0.55078125,0.630859375,0.724609375,0.7919921875,0.7919921875,0.724609375,0.630859375,0.55078125,0.4765625,0.396484375,0.3330078125,0.3037109375,0.306640625,0.3212890625,0.3251953125,0.318359375,0.2919921875,0.265625,0.267578125,0.3076171875,0.375,0.4482421875,0.513671875,0.544921875,0.5234375,0.4560546875,0.376953125,0.328125,0.3251953125,0.3466796875,0.40234375,0.4736328125,0.5224609375,0.5263671875,0.4873046875,0.4287109375,0.37109375,0.33203125,0.328125,0.3583984375,0.40234375,0.4306640625,0.4287109375,0.41015625,0.3701171875,0.330078125,0.3232421875,0.359375,0.4267578125,0.5,0.5693359375,0.619140625,0.6240234375,0.580078125,0.5087890625,0.451171875,0.4287109375,0.4091796875,0.3623046875,0.3115234375,0.2900390625,0.3154296875,0.3759765625,0.4482421875,0.5166015625,0.5595703125,0.5537109375,0.4951171875,0.4130859375,0.3486328125,0.3251953125,0.322265625,0.3447265625,0.380859375,0.40625,0.4052734375,0.3740234375,0.3251953125,0.2880859375,0.30859375,0.38671875,0.490234375,0.568359375,0.5888671875,0.55078125,0.501953125,0.466796875,0.4619140625,0.48828125,0.5302734375,0.5625,0.5703125,0.564453125,0.5341796875,0.48046875,0.416015625,0.361328125,0.3310546875,0.3251953125,0.337890625,0.392578125,0.46875,0.5263671875,0.5361328125,0.49609375,0.4287109375,0.3603515625,0.314453125,0.30859375,0.34375,0.39453125,0.4287109375,0.4287109375,0.423828125,0.439453125,0.4765625,0.5224609375,0.5595703125,0.5751953125,0.5703125,0.568359375,0.59375,0.6337890625,0.6591796875,0.6513671875,0.609375,0.55078125,0.486328125,0.4140625,0.3564453125,0.33203125,0.3408203125,0.3623046875,0.376953125,0.380859375,0.361328125,0.3330078125,0.3212890625,0.3408203125,0.3876953125,0.4482421875,0.5,0.515625,0.4970703125,0.4677734375,0.4580078125,0.4873046875,0.55078125,0.607421875,0.5966796875,0.513671875,0.3974609375,0.3056640625,0.28125,0.3251953125,0.3896484375,0.4521484375,0.4951171875,0.5,0.4755859375,0.4453125,0.4287109375,0.4111328125,0.3701171875,0.326171875,0.3095703125,0.3330078125,0.38671875,0.4482421875,0.5048828125,0.5341796875,0.5224609375,0.4736328125,0.4140625,0.376953125,0.376953125,0.4033203125,0.482421875,0.591796875,0.6826171875,0.7158203125,0.6875,0.6220703125,0.5537109375,0.5009765625,0.466796875,0.4453125,0.4208984375,0.3818359375,0.3251953125,0.2744140625,0.265625,0.3037109375,0.3642578125,0.412109375,0.4169921875,0.376953125,0.3193359375,0.2490234375,0.2021484375,0.2119140625,0.2783203125,0.369140625,0.4482421875,0.5234375,0.5966796875,0.6318359375,0.6044921875,0.5263671875,0.4384765625,0.376953125,0.3427734375,0.3779296875,0.4794921875,0.60546875,0.6982421875,0.71875,0.673828125,0.6142578125,0.5693359375,0.5537109375,0.5703125,0.6025390625,0.6240234375,0.6220703125,0.61328125,0.611328125,0.6171875,0.5615234375,0.52734375,0.4716796875,0.4296875,0.419921875,0.4326171875,0.490234375,0.57421875,0.640625,0.658203125,0.6240234375,0.5595703125,0.478515625,0.373046875,0.283203125,0.251953125,0.2900390625,0.3662109375,0.439453125,0.5087890625,0.5751953125,0.6181640625,0.625,0.60546875,0.583984375,0.5791015625,0.5869140625,0.609375,0.6259765625,0.61328125,0.5634765625,0.4921875,0.419921875,0.3544921875,0.3203125,0.3388671875,0.4052734375,0.48828125,0.5458984375,0.5595703125,0.5595703125,0.5595703125,0.560546875,0.5625,0.5654296875,0.5673828125,0.5693359375,0.5595703125,0.5126953125,0.4482421875,0.4013671875,0.400390625,0.443359375,0.509765625,0.5791015625,0.638671875,0.666015625,0.6533203125,0.6142578125,0.5791015625,0.5693359375,0.5576171875,0.5146484375,0.4609375,0.431640625,0.4462890625,0.4990234375,0.5693359375,0.646484375,0.73046875,0.7783203125,0.755859375,0.671875,0.5693359375,0.4892578125,0.4306640625,0.4208984375,0.4599609375,0.51953125,0.55859375,0.5478515625,0.4892578125,0.4130859375,0.330078125,0.2802734375,0.298828125,0.37890625,0.4794921875,0.5595703125,0.6337890625,0.7099609375,0.7451171875,0.708984375,0.6123046875,0.5029296875,0.419921875,0.349609375,0.296875,0.2822265625,0.3115234375,0.365234375,0.408203125,0.419921875,0.4326171875,0.4833984375,0.552734375,0.6015625,0.60546875,0.564453125,0.5,0.4345703125,0.3916015625,0.3935546875,0.4404296875,0.5068359375,0.556640625,0.5693359375,0.5576171875,0.5009765625,0.4169921875,0.34765625,0.326171875,0.357421875,0.419921875,0.49609375,0.5869140625,0.6513671875,0.65234375,0.5888671875,0.4970703125,0.419921875,0.35546875,0.3232421875,0.3447265625,0.4150390625,0.5,0.5576171875,0.5693359375,0.568359375,0.568359375,0.5693359375,0.5732421875,0.576171875,0.5791015625,0.5791015625,0.587890625,0.62109375,0.6591796875,0.6708984375,0.6416015625,0.5810546875,0.509765625,0.4404296875,0.39453125,0.392578125,0.435546875,0.5,0.5478515625,0.5595703125,0.56640625,0.5927734375,0.6181640625,0.6162109375,0.576171875,0.5107421875,0.439453125,0.361328125,0.267578125,0.1982421875,0.1953125,0.2587890625,0.3505859375,0.4296875,0.509765625,0.603515625,0.669921875,0.669921875,0.603515625,0.509765625,0.4296875,0.3515625,0.2666015625,0.2158203125,0.2333984375,0.3125,0.412109375,0.4892578125,0.568359375,0.6689453125,0.7529296875,0.775390625,0.7294921875,0.646484375,0.5693359375,0.4990234375,0.4443359375,0.427734375,0.455078125,0.505859375,0.5478515625,0.5595703125,0.568359375,0.595703125,0.62109375,0.6181640625,0.5771484375,0.5107421875,0.439453125,0.37109375,0.3173828125,0.2998046875,0.32421875,0.3720703125,0.41015625,0.419921875,0.4228515625,0.4404296875,0.470703125,0.5078125,0.5390625,0.5556640625,0.5595703125,0.56640625,0.59375,0.6201171875,0.619140625,0.5791015625,0.5126953125,0.439453125,0.380859375,0.376953125,0.4296875,0.5078125,0.564453125,0.564453125,0.509765625,0.4306640625,0.330078125,0.24609375,0.2236328125,0.26953125,0.3525390625,0.4296875,0.5029296875,0.5703125,0.61328125,0.6171875,0.591796875,0.56640625,0.5595703125,0.546875,0.4912109375,0.4130859375,0.3515625,0.337890625,0.3740234375,0.439453125,0.5107421875,0.576171875,0.6162109375,0.6181640625,0.5927734375,0.56640625,0.5595703125,0.5478515625,0.4990234375,0.4306640625,0.3828125,0.3798828125,0.4228515625,0.4892578125,0.5458984375,0.548828125,0.4951171875,0.4189453125,0.3662109375,0.37109375,0.4296875,0.4912109375,0.51171875,0.4892578125,0.4501953125,0.427734375,0.4482421875,0.509765625,0.5888671875,0.68359375,0.75,0.75,0.68359375,0.5888671875,0.509765625,0.4375,0.3740234375,0.3408203125,0.34765625,0.380859375,0.412109375,0.419921875,0.4111328125,0.3779296875,0.33984375,0.328125,0.357421875,0.41796875,0.4892578125,0.5576171875,0.6005859375,0.5966796875,0.5478515625,0.478515625,0.4296875,0.419921875,0.431640625,0.4755859375,0.533203125,0.5673828125,0.5576171875,0.5078125,0.439453125,0.3720703125,0.3212890625,0.3095703125,0.33984375,0.3916015625,0.431640625,0.439453125,0.4296875,0.3935546875,0.353515625,0.33984375,0.3671875,0.427734375,0.5,0.568359375,0.6142578125,0.615234375,0.5703125,0.5029296875,0.453125,0.439453125,0.4296875,0.392578125,0.349609375,0.3330078125,0.359375,0.41796875,0.4892578125,0.5576171875,0.6025390625,0.6015625,0.5537109375,0.484375,0.4326171875,0.419921875,0.427734375,0.4658203125,0.5166015625,0.546875,0.53515625,0.486328125,0.419921875,0.365234375,0.365234375,0.423828125,0.505859375,0.5634765625,0.564453125,0.509765625,0.4443359375,0.400390625,0.3984375,0.4404296875,0.5029296875,0.548828125,0.5595703125,0.5556640625,0.5390625,0.5078125,0.470703125,0.4404296875,0.4228515625,0.419921875,0.4306640625,0.474609375,0.5322265625,0.5673828125,0.55859375,0.5087890625,0.439453125,0.3701171875,0.318359375,0.306640625,0.337890625,0.390625,0.431640625,0.439453125,0.44140625,0.455078125,0.4833984375,0.515625,0.5439453125,0.5576171875,0.5595703125,0.56640625,0.599609375,0.640625,0.6572265625,0.634765625,0.578125,0.509765625,0.439453125,0.376953125,0.345703125,0.353515625,0.3876953125,0.419921875,0.4296875,0.4228515625,0.390625,0.3525390625,0.337890625,0.3623046875,0.419921875,0.4892578125,0.5478515625,0.560546875,0.5244140625,0.4697265625,0.4345703125,0.44921875,0.509765625,0.5673828125,0.568359375,0.5087890625,0.42578125,0.365234375,0.36328125,0.419921875,0.48828125,0.54296875,0.5615234375,0.5380859375,0.490234375,0.4501953125,0.439453125,0.4296875,0.3935546875,0.3525390625,0.3369140625,0.361328125,0.419921875,0.4892578125,0.5556640625,0.5986328125,0.59765625,0.55078125,0.486328125,0.439453125,0.4296875,0.4443359375,0.5048828125,0.5888671875,0.65625,0.6728515625,0.6357421875,0.5693359375,0.505859375,0.4755859375,0.4814453125,0.501953125,0.5087890625,0.4814453125,0.419921875,0.361328125,0.3515625,0.3916015625,0.4521484375,0.494140625,0.486328125,0.4296875,0.3544921875,0.2705078125,0.2177734375,0.2314453125,0.3095703125,0.4091796875,0.4892578125,0.5673828125,0.65234375,0.703125,0.685546875,0.6064453125,0.5078125,0.4296875,0.3759765625,0.3857421875,0.4580078125,0.556640625,0.6279296875,0.634765625,0.5791015625,0.5107421875,0.4599609375,0.4453125,0.4736328125,0.5234375,0.5615234375,0.5693359375,0.568359375,0.5673828125,0.568359375,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.703125,0.669921875,0.6142578125,0.5712890625,0.5595703125,0.564453125,0.5888671875,0.6123046875,0.6103515625,0.572265625,0.5087890625,0.439453125,0.3662109375,0.2919921875,0.2568359375,0.2919921875,0.3876953125,0.4970703125,0.5791015625,0.6455078125,0.6806640625,0.662109375,0.5927734375,0.505859375,0.4443359375,0.4296875,0.44140625,0.4990234375,0.583984375,0.654296875,0.67578125,0.6435546875,0.5791015625,0.5078125,0.439453125,0.3955078125,0.388671875,0.4091796875,0.43359375,0.439453125,0.439453125,0.4384765625,0.4345703125,0.4306640625,0.42578125,0.421875,0.419921875,0.41015625,0.3798828125,0.3466796875,0.341796875,0.3759765625,0.439453125,0.509765625,0.576171875,0.6171875,0.611328125,0.55859375,0.486328125,0.43359375,0.419921875,0.4091796875,0.369140625,0.3203125,0.294921875,0.310546875,0.3623046875,0.4296875,0.5078125,0.6083984375,0.689453125,0.7099609375,0.6611328125,0.5771484375,0.5,0.439453125,0.4296875,0.470703125,0.533203125,0.576171875,0.5673828125,0.509765625,0.4296875,0.3291015625,0.2490234375,0.23046875,0.2802734375,0.36328125,0.439453125,0.5205078125,0.6298828125,0.724609375,0.759765625,0.7236328125,0.6455078125,0.5693359375,0.4990234375,0.4443359375,0.427734375,0.455078125,0.505859375,0.5478515625,0.5595703125,0.5693359375,0.60546875,0.6455078125,0.6591796875,0.6318359375,0.5712890625,0.5,0.427734375,0.3642578125,0.33203125,0.3408203125,0.376953125,0.41015625,0.419921875,0.4150390625,0.392578125,0.3720703125,0.3779296875,0.4208984375,0.48828125,0.5595703125,0.6376953125,0.732421875,0.8017578125,0.806640625,0.74609375,0.65625,0.5791015625,0.5078125,0.4365234375,0.388671875,0.3759765625,0.392578125,0.4140625,0.419921875,0.419921875,0.419921875,0.4208984375,0.4228515625,0.42578125,0.427734375,0.4296875,0.443359375,0.494140625,0.564453125,0.615234375,0.6181640625,0.576171875,0.509765625,0.439453125,0.3779296875,0.3466796875,0.353515625,0.384765625,0.4140625,0.419921875,0.431640625,0.4892578125,0.5732421875,0.640625,0.66015625,0.6259765625,0.5595703125,0.48046875,0.3896484375,0.3271484375,0.3310546875,0.3994140625,0.4921875,0.5693359375,0.6455078125,0.7373046875,0.8046875,0.8076171875,0.74609375,0.65625,0.5791015625,0.4990234375,0.396484375,0.3115234375,0.287109375,0.3330078125,0.4140625,0.4892578125,0.56640625,0.65234375,0.7060546875,0.693359375,0.6171875,0.5185546875,0.439453125,0.37109375,0.31640625,0.2978515625,0.3212890625,0.369140625,0.4091796875,0.419921875,0.4345703125,0.4931640625,0.578125,0.6455078125,0.6650390625,0.6328125,0.5693359375,0.5029296875,0.4541015625,0.443359375,0.4755859375,0.5283203125,0.5693359375,0.5791015625,0.576171875,0.55859375,0.5283203125,0.4912109375,0.4599609375,0.443359375,0.439453125,0.453125,0.51171875,0.595703125,0.6630859375,0.681640625,0.6455078125,0.5791015625,0.517578125,0.494140625,0.513671875,0.5498046875,0.5703125,0.5498046875,0.4892578125,0.4140625,0.3330078125,0.287109375,0.3115234375,0.396484375,0.4990234375,0.5791015625,0.6435546875,0.67578125,0.6533203125,0.5810546875,0.4931640625,0.43359375,0.419921875,0.4130859375,0.388671875,0.3662109375,0.3720703125,0.4169921875,0.486328125,0.5595703125,0.6259765625,0.662109375,0.6455078125,0.5791015625,0.494140625,0.4345703125,0.419921875,0.41015625,0.3798828125,0.3466796875,0.341796875,0.3759765625,0.439453125,0.509765625,0.5693359375,0.587890625,0.5634765625,0.5205078125,0.494140625,0.5107421875,0.5693359375,0.6240234375,0.623046875,0.564453125,0.4833984375,0.427734375,0.4306640625,0.4892578125,0.5693359375,0.6630859375,0.73046875,0.73046875,0.6630859375,0.5693359375,0.4892578125,0.421875,0.3798828125,0.38671875,0.44140625,0.5146484375,0.5673828125,0.5791015625,0.5673828125,0.5166015625,0.4462890625,0.3935546875,0.3857421875,0.4248046875,0.4892578125,0.55859375,0.6201171875,0.654296875,0.6494140625,0.6181640625,0.587890625,0.5791015625,0.5869140625,0.6240234375,0.671875,0.6962890625,0.6806640625,0.6279296875,0.5595703125,0.4912109375,0.4384765625,0.4248046875,0.453125,0.505859375,0.5478515625,0.5595703125,0.5498046875,0.501953125,0.4345703125,0.3857421875,0.3818359375,0.4228515625,0.4892578125,0.5595703125,0.6201171875,0.650390625,0.6396484375,0.6025390625,0.5693359375,0.5595703125,0.546875,0.4970703125,0.4306640625,0.3837890625,0.3818359375,0.4248046875,0.4892578125,0.55859375,0.619140625,0.650390625,0.6435546875,0.609375,0.578125,0.5693359375,0.5771484375,0.615234375,0.666015625,0.6962890625,0.6845703125,0.6357421875,0.5693359375,0.51171875,0.49609375,0.5234375,0.56640625,0.5908203125,0.5712890625,0.509765625,0.4375,0.375,0.341796875,0.3505859375,0.38671875,0.419921875,0.4296875,0.4345703125,0.4501953125,0.478515625,0.5107421875,0.5390625,0.5546875,0.5595703125,0.5703125,0.611328125,0.6630859375,0.6904296875,0.6767578125,0.6259765625,0.5595703125,0.4931640625,0.443359375,0.431640625,0.4619140625,0.515625,0.5576171875,0.5693359375,0.568359375,0.5546875,0.52734375,0.4931640625,0.462890625,0.4443359375,0.439453125,0.44921875,0.49609375,0.5595703125,0.6044921875,0.603515625,0.5576171875,0.4892578125,0.421875,0.3798828125,0.3857421875,0.4375,0.5087890625,0.55859375,0.5693359375,0.5556640625,0.5048828125,0.435546875,0.3876953125,0.3857421875,0.4306640625,0.5,0.5595703125,0.5693359375,0.5283203125,0.4658203125,0.4228515625,0.431640625,0.4892578125,0.5498046875,0.5712890625,0.5517578125,0.5166015625,0.4970703125,0.5185546875,0.5791015625,0.6474609375,0.6982421875,0.7119140625,0.681640625,0.6298828125,0.5888671875,0.5791015625,0.5673828125,0.5146484375,0.44140625,0.38671875,0.3798828125,0.421875,0.4892578125,0.5615234375,0.625,0.658203125,0.6513671875,0.6181640625,0.5869140625,0.5791015625,0.5849609375,0.6064453125,0.623046875,0.6103515625,0.5625,0.4912109375,0.419921875,0.365234375,0.373046875,0.4462890625,0.546875,0.6220703125,0.6318359375,0.5791015625,0.5224609375,0.5126953125,0.5517578125,0.6083984375,0.6435546875,0.6298828125,0.5693359375,0.48828125,0.38671875,0.306640625,0.291015625,0.3447265625,0.4306640625,0.509765625,0.5908203125,0.693359375,0.775390625,0.7939453125,0.7431640625,0.6572265625,0.5791015625,0.515625,0.4873046875,0.4951171875,0.5185546875,0.52734375,0.5009765625,0.439453125,0.37109375,0.3173828125,0.2998046875,0.32421875,0.3720703125,0.41015625,0.419921875,0.419921875,0.4208984375,0.421875,0.7470703125,0.7021484375,0.6396484375,0.58984375,0.5703125,0.5634765625,0.568359375,0.5732421875,0.5615234375,0.5283203125,0.48046875,0.4287109375,0.375,0.326171875,0.3173828125,0.373046875,0.4794921875,0.5908203125,0.673828125,0.7373046875,0.759765625,0.71484375,0.611328125,0.4892578125,0.404296875,0.376953125,0.3828125,0.4462890625,0.556640625,0.6650390625,0.7275390625,0.724609375,0.673828125,0.6083984375,0.533203125,0.4677734375,0.4287109375,0.419921875,0.42578125,0.4287109375,0.427734375,0.421875,0.40625,0.3828125,0.3583984375,0.337890625,0.3251953125,0.3125,0.296875,0.298828125,0.3369140625,0.40625,0.484375,0.55078125,0.607421875,0.630859375,0.599609375,0.5185546875,0.419921875,0.349609375,0.3251953125,0.3095703125,0.2783203125,0.25,0.2470703125,0.275390625,0.3251953125,0.376953125,0.439453125,0.533203125,0.6240234375,0.6650390625,0.640625,0.5732421875,0.5,0.439453125,0.4287109375,0.47265625,0.54296875,0.5966796875,0.599609375,0.55078125,0.48046875,0.384765625,0.30078125,0.2685546875,0.2978515625,0.36328125,0.4287109375,0.5029296875,0.61328125,0.720703125,0.7763671875,0.759765625,0.6953125,0.6220703125,0.548828125,0.484375,0.4521484375,0.4638671875,0.5078125,0.55078125,0.5703125,0.5888671875,0.62890625,0.6689453125,0.67578125,0.6396484375,0.572265625,0.5,0.423828125,0.3447265625,0.28515625,0.2646484375,0.28125,0.3095703125,0.3251953125,0.3330078125,0.3349609375,0.345703125,0.3798828125,0.4375,0.505859375,0.5703125,0.640625,0.7333984375,0.8134765625,0.8408203125,0.806640625,0.7392578125,0.673828125,0.60546875,0.5185546875,0.4296875,0.36328125,0.33203125,0.3251953125,0.3251953125,0.3251953125,0.3251953125,0.3291015625,0.3388671875,0.3525390625,0.3662109375,0.376953125,0.400390625,0.46484375,0.55078125,0.6181640625,0.6376953125,0.6083984375,0.55078125,0.4873046875,0.421875,0.3671875,0.337890625,0.33203125,0.33203125,0.3251953125,0.3310546875,0.39453125,0.5009765625,0.6005859375,0.6494140625,0.6328125,0.5703125,0.494140625,0.4189453125,0.37890625,0.4013671875,0.4755859375,0.560546875,0.6220703125,0.6806640625,0.759765625,0.8271484375,0.8447265625,0.806640625,0.7392578125,0.673828125,0.599609375,0.4921875,0.384765625,0.3251953125,0.33203125,0.384765625,0.4482421875,0.515625,0.59375,0.646484375,0.6416015625,0.580078125,0.498046875,0.4287109375,0.365234375,0.3017578125,0.259765625,0.25390625,0.2783203125,0.3095703125,0.3251953125,0.349609375,0.4228515625,0.529296875,0.6240234375,0.6728515625,0.666015625,0.6220703125,0.5732421875,0.5419921875,0.544921875,0.580078125,0.62890625,0.6650390625,0.673828125,0.66796875,0.6376953125,0.5830078125,0.5185546875,0.46484375,0.4345703125,0.4287109375,0.4443359375,0.515625,0.6240234375,0.71875,0.759765625,0.7373046875,0.673828125,0.6064453125,0.5625,0.544921875,0.5419921875,0.533203125,0.5029296875,0.4482421875,0.384765625,0.33203125,0.3251953125,0.384765625,0.4921875,0.599609375,0.673828125,0.724609375,0.7275390625,0.6611328125,0.5439453125,0.419921875,0.341796875,0.3251953125,0.3212890625,0.3095703125,0.310546875,0.3447265625,0.412109375,0.494140625,0.5703125,0.6357421875,0.6640625,0.630859375,0.5400390625,0.4306640625,0.3515625,0.3251953125,0.3125,0.296875,0.298828125,0.3369140625,0.40625,0.484375,0.55078125,0.60546875,0.62890625,0.6181640625,0.58984375,0.5693359375,0.5791015625,0.6220703125,0.6572265625,0.6318359375,0.548828125,0.451171875,0.3876953125,0.3896484375,0.4482421875,0.52734375,0.6220703125,0.6884765625,0.6884765625,0.6220703125,0.52734375,0.4482421875,0.3837890625,0.3583984375,0.3955078125,0.4853515625,0.5888671875,0.658203125,0.673828125,0.6611328125,0.6044921875,0.515625,0.4345703125,0.3935546875,0.4033203125,0.4482421875,0.50390625,0.5751953125,0.642578125,0.6845703125,0.6953125,0.685546875,0.673828125,0.6689453125,0.6845703125,0.7060546875,0.708984375,0.681640625,0.630859375,0.5703125,0.5087890625,0.4580078125,0.4384765625,0.4609375,0.5078125,0.5517578125,0.5703125,0.568359375,0.525390625,0.455078125,0.392578125,0.3681640625,0.392578125,0.4482421875,0.51171875,0.5771484375,0.6240234375,0.634765625,0.6142578125,0.5859375,0.5703125,0.5498046875,0.498046875,0.4306640625,0.380859375,0.37109375,0.3994140625,0.4482421875,0.5029296875,0.5673828125,0.623046875,0.65234375,0.6513671875,0.634765625,0.6220703125,0.619140625,0.640625,0.6767578125,0.703125,0.701171875,0.669921875,0.6220703125,0.580078125,0.576171875,0.6044921875,0.6376953125,0.646484375,0.615234375,0.55078125,0.4755859375,0.396484375,0.3369140625,0.31640625,0.3330078125,0.361328125,0.376953125,0.390625,0.4150390625,0.4521484375,0.4951171875,0.5322265625,0.556640625,0.5703125,0.5869140625,0.6240234375,0.6640625,0.681640625,0.6640625,0.62109375,0.5703125,0.5205078125,0.4833984375,0.4775390625,0.5087890625,0.5595703125,0.603515625,0.6220703125,0.62890625,0.619140625,0.5859375,0.53515625,0.482421875,0.4453125,0.4287109375,0.4296875,0.4658203125,0.521484375,0.5615234375,0.5595703125,0.515625,0.4482421875,0.3837890625,0.3583984375,0.3916015625,0.47265625,0.5625,0.6181640625,0.6220703125,0.5986328125,0.5341796875,0.4521484375,0.3935546875,0.3876953125,0.4306640625,0.5,0.5595703125,0.5703125,0.5263671875,0.4560546875,0.40234375,0.3994140625,0.4482421875,0.50390625,0.541015625,0.556640625,0.564453125,0.580078125,0.6171875,0.673828125,0.7333984375,0.7783203125,0.7890625,0.763671875,0.7177734375,0.681640625,0.673828125,0.658203125,0.5888671875,0.4853515625,0.3955078125,0.3583984375,0.3837890625,0.4482421875,0.5224609375,0.6025390625,0.666015625,0.6953125,0.6923828125,0.677734375,0.673828125,0.673828125,0.6669921875,0.6357421875,0.5693359375,0.48046875,0.3935546875,0.3251953125,0.28125,0.30859375,0.412109375,0.5517578125,0.666015625,0.7060546875,0.673828125,0.6328125,0.630859375,0.6630859375,0.701171875,0.71484375,0.685546875,0.6220703125,0.5400390625,0.4375,0.35546875,0.3369140625,0.3876953125,0.47265625,0.55078125,0.6337890625,0.7431640625,0.8369140625,0.869140625,0.8291015625,0.75,0.673828125,0.6064453125,0.5595703125,0.5380859375,0.529296875,0.517578125,0.484375,0.4287109375,0.3671875,0.3095703125,0.275390625,0.2734375,0.296875,0.3193359375,0.3251953125,0.3271484375,0.3330078125,0.3408203125,0.7373046875,0.6845703125,0.619140625,0.5634765625,0.5302734375,0.505859375,0.490234375,0.4853515625,0.48828125,0.4912109375,0.4853515625,0.46875,0.447265625,0.4248046875,0.427734375,0.4775390625,0.5654296875,0.6611328125,0.740234375,0.8046875,0.8271484375,0.775390625,0.6572265625,0.5146484375,0.408203125,0.3642578125,0.353515625,0.40625,0.5185546875,0.6484375,0.744140625,0.771484375,0.740234375,0.689453125,0.6240234375,0.5546875,0.501953125,0.4755859375,0.46875,0.46875,0.4677734375,0.4580078125,0.4306640625,0.3857421875,0.333984375,0.2890625,0.2587890625,0.2353515625,0.2314453125,0.26953125,0.353515625,0.4580078125,0.548828125,0.6044921875,0.64453125,0.650390625,0.6015625,0.501953125,0.38671875,0.298828125,0.2587890625,0.2333984375,0.2158203125,0.2197265625,0.2509765625,0.2978515625,0.33984375,0.3642578125,0.3955078125,0.4677734375,0.5546875,0.61328125,0.6162109375,0.568359375,0.5,0.4384765625,0.4248046875,0.46875,0.546875,0.615234375,0.63671875,0.6044921875,0.55078125,0.4755859375,0.40234375,0.3671875,0.37890625,0.421875,0.46875,0.52734375,0.6220703125,0.720703125,0.775390625,0.765625,0.70703125,0.634765625,0.5595703125,0.478515625,0.421875,0.4140625,0.4482421875,0.4970703125,0.5302734375,0.564453125,0.6220703125,0.673828125,0.6845703125,0.6455078125,0.5732421875,0.5,0.4208984375,0.3232421875,0.2373046875,0.1923828125,0.197265625,0.228515625,0.2587890625,0.2841796875,0.310546875,0.341796875,0.3828125,0.4326171875,0.4833984375,0.5302734375,0.5849609375,0.669921875,0.7587890625,0.814453125,0.8193359375,0.78515625,0.740234375,0.6845703125,0.5927734375,0.4775390625,0.369140625,0.2958984375,0.263671875,0.2587890625,0.2578125,0.2548828125,0.2587890625,0.275390625,0.3037109375,0.3359375,0.3642578125,0.4013671875,0.4765625,0.568359375,0.640625,0.666015625,0.646484375,0.6044921875,0.5556640625,0.49609375,0.4306640625,0.369140625,0.3212890625,0.2861328125,0.2587890625,0.25,0.3046875,0.4140625,0.52734375,0.59375,0.58984375,0.5302734375,0.4599609375,0.4091796875,0.4052734375,0.455078125,0.5361328125,0.6044921875,0.634765625,0.662109375,0.71484375,0.775390625,0.814453125,0.8154296875,0.7841796875,0.740234375,0.681640625,0.580078125,0.4609375,0.369140625,0.3349609375,0.3515625,0.39453125,0.4462890625,0.5146484375,0.57421875,0.59375,0.568359375,0.517578125,0.46875,0.4169921875,0.3427734375,0.267578125,0.2197265625,0.2119140625,0.2314453125,0.2587890625,0.2958984375,0.3720703125,0.474609375,0.5712890625,0.6318359375,0.6484375,0.634765625,0.619140625,0.6181640625,0.6376953125,0.673828125,0.7109375,0.7353515625,0.740234375,0.7333984375,0.701171875,0.640625,0.568359375,0.5087890625,0.4755859375,0.46875,0.4853515625,0.5595703125,0.673828125,0.775390625,0.8232421875,0.8037109375,0.740234375,0.6689453125,0.6005859375,0.5439453125,0.501953125,0.4697265625,0.4365234375,0.39453125,0.3515625,0.3349609375,0.369140625,0.4609375,0.580078125,0.681640625,0.740234375,0.7734375,0.748046875,0.6484375,0.501953125,0.361328125,0.2763671875,0.2587890625,0.2548828125,0.24609375,0.25390625,0.294921875,0.3681640625,0.4541015625,0.5302734375,0.5966796875,0.6318359375,0.6044921875,0.513671875,0.39453125,0.30078125,0.2587890625,0.2353515625,0.2314453125,0.26953125,0.353515625,0.4580078125,0.548828125,0.6044921875,0.646484375,0.6728515625,0.673828125,0.654296875,0.630859375,0.6220703125,0.634765625,0.6376953125,0.5810546875,0.4775390625,0.375,0.3203125,0.3330078125,0.39453125,0.474609375,0.568359375,0.634765625,0.634765625,0.568359375,0.474609375,0.39453125,0.3330078125,0.322265625,0.3857421875,0.5078125,0.638671875,0.7216796875,0.740234375,0.7294921875,0.6767578125,0.5849609375,0.4853515625,0.412109375,0.3837890625,0.39453125,0.4248046875,0.49609375,0.595703125,0.6904296875,0.7490234375,0.7607421875,0.740234375,0.7158203125,0.697265625,0.6796875,0.654296875,0.6181640625,0.5751953125,0.5302734375,0.482421875,0.43359375,0.4052734375,0.4140625,0.4521484375,0.498046875,0.5302734375,0.5458984375,0.5224609375,0.4638671875,0.3974609375,0.35546875,0.357421875,0.39453125,0.4453125,0.509765625,0.568359375,0.5966796875,0.587890625,0.55859375,0.5302734375,0.498046875,0.451171875,0.40234375,0.3701171875,0.3623046875,0.375,0.39453125,0.421875,0.48046875,0.5576171875,0.6240234375,0.6591796875,0.6572265625,0.634765625,0.6123046875,0.603515625,0.61328125,0.6318359375,0.6484375,0.6494140625,0.634765625,0.6259765625,0.650390625,0.693359375,0.7236328125,0.7177734375,0.6728515625,0.6044921875,0.525390625,0.4287109375,0.341796875,0.2978515625,0.3017578125,0.333984375,0.3642578125,0.3896484375,0.4140625,0.4365234375,0.4580078125,0.4794921875,0.50390625,0.5302734375,0.55859375,0.5888671875,0.607421875,0.6044921875,0.5810546875,0.5517578125,0.5302734375,0.509765625,0.494140625,0.494140625,0.5185546875,0.5615234375,0.6044921875,0.634765625,0.66015625,0.6748046875,0.662109375,0.619140625,0.556640625,0.501953125,0.46875,0.4521484375,0.46484375,0.4970703125,0.5185546875,0.5087890625,0.4619140625,0.39453125,0.333984375,0.326171875,0.3857421875,0.4912109375,0.59375,0.6455078125,0.634765625,0.595703125,0.5185546875,0.4306640625,0.375,0.3779296875,0.4296875,0.5,0.560546875,0.57421875,0.5302734375,0.4521484375,0.3837890625,0.3623046875,0.39453125,0.4404296875,0.4892578125,0.541015625,0.59375,0.6455078125,0.6943359375,0.740234375,0.7841796875,0.8173828125,0.826171875,0.806640625,0.7724609375,0.74609375,0.740234375,0.7216796875,0.638671875,0.5078125,0.3857421875,0.322265625,0.3330078125,0.39453125,0.47265625,0.56640625,0.6572265625,0.7177734375,0.7421875,0.7421875,0.740234375,0.7353515625,0.703125,0.6298828125,0.521484375,0.40625,0.314453125,0.2587890625,0.228515625,0.2646484375,0.3779296875,0.5322265625,0.669921875,0.7412109375,0.740234375,0.7294921875,0.744140625,0.7705078125,0.78125,0.7587890625,0.7041015625,0.634765625,0.5546875,0.45703125,0.3828125,0.375,0.435546875,0.525390625,0.6044921875,0.6875,0.7978515625,0.89453125,0.9306640625,0.89453125,0.81640625,0.740234375,0.669921875,0.611328125,0.5712890625,0.5498046875,0.5341796875,0.509765625,0.46875,0.419921875,0.361328125,0.306640625,0.26953125,0.2568359375,0.2578125,0.2587890625,0.2626953125,0.2783203125,0.2978515625,0.6708984375,0.626953125,0.572265625,0.5166015625,0.46875,0.423828125,0.38671875,0.3779296875,0.4052734375,0.4560546875,0.50390625,0.5302734375,0.54296875,0.541015625,0.5380859375,0.5546875,0.6015625,0.66796875,0.740234375,0.8076171875,0.8447265625,0.814453125,0.7119140625,0.5732421875,0.4560546875,0.39453125,0.3623046875,0.3857421875,0.474609375,0.5966796875,0.7021484375,0.7509765625,0.740234375,0.7099609375,0.6650390625,0.61328125,0.568359375,0.541015625,0.53125,0.5302734375,0.5302734375,0.5234375,0.4970703125,0.4443359375,0.375,0.3095703125,0.2587890625,0.2197265625,0.216796875,0.2734375,0.3798828125,0.5029296875,0.5947265625,0.634765625,0.658203125,0.658203125,0.61328125,0.521484375,0.4091796875,0.3154296875,0.2587890625,0.220703125,0.21484375,0.2509765625,0.3134765625,0.3740234375,0.4033203125,0.39453125,0.388671875,0.4287109375,0.501953125,0.568359375,0.5927734375,0.564453125,0.5,0.4365234375,0.416015625,0.4521484375,0.5302734375,0.6083984375,0.6474609375,0.634765625,0.603515625,0.5556640625,0.5078125,0.48046875,0.4814453125,0.5029296875,0.5302734375,0.5673828125,0.6376953125,0.7119140625,0.7509765625,0.7353515625,0.6767578125,0.6044921875,0.525390625,0.4296875,0.3525390625,0.328125,0.359375,0.41796875,0.46875,0.5244140625,0.6025390625,0.6708984375,0.6904296875,0.650390625,0.5751953125,0.5,0.41796875,0.3095703125,0.208984375,0.15625,0.1650390625,0.2109375,0.2587890625,0.3046875,0.34765625,0.3828125,0.408203125,0.4267578125,0.4453125,0.46875,0.5048828125,0.572265625,0.6572265625,0.728515625,0.7646484375,0.7626953125,0.740234375,0.703125,0.6259765625,0.513671875,0.3974609375,0.3095703125,0.2666015625,0.2587890625,0.255859375,0.24609375,0.2421875,0.2587890625,0.2978515625,0.3466796875,0.39453125,0.4482421875,0.525390625,0.607421875,0.6630859375,0.677734375,0.6611328125,0.634765625,0.6064453125,0.568359375,0.513671875,0.4443359375,0.3720703125,0.30859375,0.2587890625,0.2294921875,0.263671875,0.35546875,0.4609375,0.5283203125,0.52734375,0.46875,0.4052734375,0.3798828125,0.4111328125,0.4853515625,0.5654296875,0.6103515625,0.6044921875,0.5927734375,0.611328125,0.6572265625,0.7119140625,0.751953125,0.759765625,0.740234375,0.7021484375,0.6220703125,0.513671875,0.4140625,0.3544921875,0.34375,0.3642578125,0.3974609375,0.4521484375,0.513671875,0.5576171875,0.5703125,0.5556640625,0.5302734375,0.4912109375,0.4130859375,0.3134765625,0.234375,0.2021484375,0.2177734375,0.2587890625,0.30859375,0.3720703125,0.4443359375,0.5078125,0.5546875,0.583984375,0.6044921875,0.6259765625,0.65625,0.6904296875,0.7177734375,0.734375,0.7392578125,0.740234375,0.7353515625,0.7099609375,0.6630859375,0.607421875,0.560546875,0.53515625,0.5302734375,0.544921875,0.6123046875,0.7119140625,0.7978515625,0.83203125,0.8046875,0.740234375,0.6650390625,0.58203125,0.5048828125,0.447265625,0.412109375,0.388671875,0.3642578125,0.34375,0.3544921875,0.4140625,0.513671875,0.6220703125,0.7021484375,0.740234375,0.7548828125,0.7158203125,0.61328125,0.474609375,0.34765625,0.2734375,0.2587890625,0.25390625,0.2373046875,0.2314453125,0.2568359375,0.31640625,0.39453125,0.46875,0.5400390625,0.59375,0.59375,0.52734375,0.41796875,0.318359375,0.2587890625,0.2197265625,0.216796875,0.2734375,0.3798828125,0.5029296875,0.5947265625,0.634765625,0.662109375,0.689453125,0.701171875,0.6904296875,0.66015625,0.626953125,0.6044921875,0.5703125,0.486328125,0.375,0.2890625,0.2626953125,0.296875,0.3642578125,0.443359375,0.5380859375,0.6044921875,0.6044921875,0.5380859375,0.443359375,0.3642578125,0.302734375,0.2958984375,0.3671875,0.4970703125,0.6337890625,0.7216796875,0.740234375,0.734375,0.69921875,0.6298828125,0.5380859375,0.451171875,0.3916015625,0.3642578125,0.3603515625,0.4189453125,0.533203125,0.6591796875,0.7490234375,0.7724609375,0.740234375,0.693359375,0.642578125,0.59375,0.5517578125,0.5205078125,0.4951171875,0.46875,0.4375,0.3916015625,0.3525390625,0.3447265625,0.373046875,0.421875,0.46875,0.5068359375,0.51171875,0.4775390625,0.4189453125,0.3671875,0.3466796875,0.3642578125,0.3984375,0.45703125,0.5185546875,0.5546875,0.5498046875,0.5146484375,0.46875,0.4248046875,0.390625,0.373046875,0.3720703125,0.37890625,0.37890625,0.3642578125,0.357421875,0.3994140625,0.4833984375,0.57421875,0.6337890625,0.640625,0.6044921875,0.5576171875,0.513671875,0.4912109375,0.501953125,0.5400390625,0.580078125,0.6044921875,0.6337890625,0.693359375,0.7568359375,0.787109375,0.7666015625,0.70703125,0.634765625,0.5537109375,0.4453125,0.3447265625,0.2919921875,0.30078125,0.345703125,0.39453125,0.43359375,0.4501953125,0.44140625,0.4228515625,0.4140625,0.4296875,0.46875,0.5107421875,0.533203125,0.52734375,0.5,0.4697265625,0.45703125,0.46875,0.484375,0.48828125,0.48828125,0.4970703125,0.521484375,0.5595703125,0.6044921875,0.6533203125,0.7041015625,0.7294921875,0.708984375,0.650390625,0.58203125,0.5302734375,0.4921875,0.48046875,0.48828125,0.494140625,0.4775390625,0.431640625,0.3642578125,0.306640625,0.3095703125,0.3837890625,0.4970703125,0.595703125,0.6328125,0.6044921875,0.5478515625,0.4609375,0.375,0.3359375,0.3603515625,0.42578125,0.5,0.5625,0.5830078125,0.546875,0.46875,0.390625,0.3515625,0.3642578125,0.39453125,0.4443359375,0.513671875,0.5908203125,0.66015625,0.708984375,0.740234375,0.765625,0.78515625,0.7900390625,0.7783203125,0.7587890625,0.744140625,0.740234375,0.7216796875,0.6337890625,0.4970703125,0.3671875,0.2958984375,0.302734375,0.3642578125,0.4423828125,0.541015625,0.6376953125,0.70703125,0.7373046875,0.7412109375,0.740234375,0.732421875,0.689453125,0.6015625,0.4853515625,0.373046875,0.2958984375,0.2587890625,0.2421875,0.26953125,0.3583984375,0.48828125,0.619140625,0.70703125,0.740234375,0.765625,0.8046875,0.8310546875,0.8173828125,0.759765625,0.6796875,0.6044921875,0.525390625,0.435546875,0.375,0.3828125,0.45703125,0.5546875,0.634765625,0.716796875,0.82421875,0.9140625,0.9423828125,0.8984375,0.8173828125,0.740234375,0.6689453125,0.6064453125,0.56640625,0.5517578125,0.5537109375,0.55078125,0.5302734375,0.498046875,0.4453125,0.3798828125,0.3203125,0.279296875,0.26171875,0.2587890625,0.265625,0.2919921875,0.3251953125,0.5771484375,0.560546875,0.5322265625,0.4873046875,0.4287109375,0.365234375,0.30859375,0.2900390625,0.33203125,0.4189453125,0.5087890625,0.5703125,0.6123046875,0.6201171875,0.599609375,0.57421875,0.5732421875,0.6083984375,0.673828125,0.74609375,0.806640625,0.8154296875,0.751953125,0.63671875,0.5224609375,0.4482421875,0.39453125,0.3837890625,0.4296875,0.5205078125,0.6142578125,0.669921875,0.673828125,0.6611328125,0.640625,0.6162109375,0.5927734375,0.5771484375,0.5712890625,0.5703125,0.5732421875,0.5791015625,0.5703125,0.53125,0.4658203125,0.390625,0.3251953125,0.271484375,0.2568359375,0.3037109375,0.4033203125,0.5166015625,0.595703125,0.6220703125,0.6337890625,0.640625,0.6220703125,0.5654296875,0.48046875,0.3935546875,0.3251953125,0.2763671875,0.275390625,0.3291015625,0.4091796875,0.47265625,0.486328125,0.4482421875,0.4091796875,0.419921875,0.4755859375,0.541015625,0.5771484375,0.560546875,0.5,0.43359375,0.40234375,0.423828125,0.4912109375,0.5703125,0.619140625,0.6220703125,0.609375,0.5888671875,0.568359375,0.5546875,0.552734375,0.5595703125,0.5703125,0.58984375,0.63671875,0.6875,0.708984375,0.68359375,0.623046875,0.55078125,0.4697265625,0.3671875,0.28125,0.2529296875,0.2900390625,0.3623046875,0.4287109375,0.5,0.595703125,0.67578125,0.69921875,0.6552734375,0.576171875,0.5,0.4169921875,0.3076171875,0.2099609375,0.1689453125,0.1943359375,0.259765625,0.3251953125,0.38671875,0.4375,0.4638671875,0.4609375,0.4404296875,0.4248046875,0.4287109375,0.4462890625,0.4892578125,0.5537109375,0.6181640625,0.6630859375,0.6796875,0.673828125,0.6552734375,0.60546875,0.525390625,0.4384765625,0.3681640625,0.33203125,0.3251953125,0.3203125,0.298828125,0.2802734375,0.287109375,0.3251953125,0.3857421875,0.4482421875,0.5126953125,0.5849609375,0.642578125,0.6669921875,0.658203125,0.63671875,0.6220703125,0.61328125,0.60546875,0.5830078125,0.53515625,0.4658203125,0.390625,0.3251953125,0.2783203125,0.2880859375,0.3525390625,0.4365234375,0.4921875,0.48828125,0.4287109375,0.369140625,0.361328125,0.4130859375,0.4970703125,0.568359375,0.587890625,0.55078125,0.505859375,0.4892578125,0.5146484375,0.5732421875,0.63671875,0.673828125,0.673828125,0.6552734375,0.60546875,0.529296875,0.451171875,0.39453125,0.373046875,0.376953125,0.3935546875,0.4306640625,0.4833984375,0.5341796875,0.5673828125,0.5771484375,0.5703125,0.5458984375,0.47265625,0.37109375,0.2841796875,0.2490234375,0.2705078125,0.3251953125,0.3837890625,0.42578125,0.4501953125,0.4619140625,0.4755859375,0.5048828125,0.55078125,0.603515625,0.6552734375,0.6923828125,0.703125,0.6923828125,0.677734375,0.673828125,0.6708984375,0.658203125,0.6357421875,0.6083984375,0.5849609375,0.572265625,0.5703125,0.58203125,0.63671875,0.712890625,0.7705078125,0.7802734375,0.7412109375,0.673828125,0.5986328125,0.515625,0.4443359375,0.400390625,0.3857421875,0.384765625,0.376953125,0.373046875,0.39453125,0.451171875,0.529296875,0.60546875,0.6552734375,0.673828125,0.67578125,0.640625,0.5654296875,0.46875,0.3837890625,0.3349609375,0.3251953125,0.318359375,0.2890625,0.2587890625,0.255859375,0.2919921875,0.3564453125,0.4287109375,0.5048828125,0.580078125,0.6162109375,0.5849609375,0.4970703125,0.3974609375,0.3251953125,0.271484375,0.2568359375,0.3037109375,0.4033203125,0.5166015625,0.595703125,0.6220703125,0.6376953125,0.666015625,0.6904296875,0.6884765625,0.6552734375,0.603515625,0.55078125,0.4873046875,0.3876953125,0.2861328125,0.2314453125,0.2431640625,0.3046875,0.376953125,0.45703125,0.55078125,0.6181640625,0.6181640625,0.55078125,0.45703125,0.376953125,0.314453125,0.2978515625,0.3505859375,0.458984375,0.5791015625,0.65625,0.673828125,0.673828125,0.6669921875,0.638671875,0.58203125,0.5068359375,0.43359375,0.376953125,0.3427734375,0.3779296875,0.4794921875,0.60546875,0.6982421875,0.71875,0.673828125,0.609375,0.541015625,0.482421875,0.4482421875,0.4375,0.4365234375,0.4287109375,0.41015625,0.3671875,0.3193359375,0.2978515625,0.3173828125,0.3681640625,0.4287109375,0.486328125,0.5185546875,0.5107421875,0.466796875,0.4111328125,0.376953125,0.376953125,0.3974609375,0.4462890625,0.505859375,0.541015625,0.533203125,0.4892578125,0.4287109375,0.375,0.353515625,0.369140625,0.40234375,0.427734375,0.419921875,0.376953125,0.33984375,0.359375,0.4345703125,0.5283203125,0.59375,0.599609375,0.55078125,0.484375,0.41015625,0.3603515625,0.365234375,0.419921875,0.4931640625,0.55078125,0.6123046875,0.7001953125,0.7783203125,0.8056640625,0.7705078125,0.697265625,0.6220703125,0.5390625,0.4296875,0.33203125,0.291015625,0.31640625,0.3818359375,0.4482421875,0.4990234375,0.505859375,0.466796875,0.41015625,0.37109375,0.3779296875,0.4287109375,0.4814453125,0.4970703125,0.4697265625,0.4228515625,0.38671875,0.3876953125,0.4287109375,0.47265625,0.4892578125,0.48046875,0.46484375,0.4658203125,0.49609375,0.55078125,0.6201171875,0.7021484375,0.763671875,0.7685546875,0.7158203125,0.6376953125,0.5703125,0.515625,0.4892578125,0.48828125,0.494140625,0.4833984375,0.443359375,0.376953125,0.3203125,0.32421875,0.3955078125,0.498046875,0.5791015625,0.5966796875,0.55078125,0.48046875,0.3876953125,0.3115234375,0.29296875,0.3408203125,0.4228515625,0.5,0.5654296875,0.5966796875,0.5751953125,0.5078125,0.4287109375,0.3798828125,0.376953125,0.392578125,0.4306640625,0.490234375,0.560546875,0.6201171875,0.658203125,0.673828125,0.68359375,0.69140625,0.693359375,0.6884765625,0.6806640625,0.6748046875,0.673828125,0.65625,0.5791015625,0.458984375,0.3505859375,0.2978515625,0.314453125,0.376953125,0.4541015625,0.5419921875,0.6220703125,0.669921875,0.6826171875,0.6767578125,0.673828125,0.6669921875,0.630859375,0.560546875,0.4736328125,0.3935546875,0.34375,0.3251953125,0.31640625,0.3212890625,0.359375,0.43359375,0.5283203125,0.6142578125,0.673828125,0.73046875,0.7939453125,0.830078125,0.806640625,0.7275390625,0.630859375,0.55078125,0.47265625,0.3876953125,0.3369140625,0.35546875,0.4375,0.5400390625,0.6220703125,0.7021484375,0.802734375,0.880859375,0.89453125,0.83984375,0.751953125,0.673828125,0.6025390625,0.5439453125,0.5146484375,0.5224609375,0.55078125,0.572265625,0.5703125,0.5546875,0.5166015625,0.4609375,0.400390625,0.353515625,0.330078125,0.3251953125,0.333984375,0.3701171875,0.416015625,0.5009765625,0.5234375,0.5302734375,0.501953125,0.439453125,0.365234375,0.2880859375,0.2509765625,0.283203125,0.375,0.48046875,0.5595703125,0.6162109375,0.626953125,0.5908203125,0.537109375,0.50390625,0.5185546875,0.5791015625,0.65625,0.7392578125,0.7841796875,0.759765625,0.673828125,0.5693359375,0.4892578125,0.423828125,0.384765625,0.392578125,0.4462890625,0.5185546875,0.5693359375,0.5791015625,0.5771484375,0.5732421875,0.568359375,0.564453125,0.560546875,0.5595703125,0.5595703125,0.5654296875,0.58984375,0.6103515625,0.603515625,0.5595703125,0.4912109375,0.419921875,0.3544921875,0.3212890625,0.33984375,0.408203125,0.494140625,0.5546875,0.5693359375,0.5771484375,0.6005859375,0.6201171875,0.609375,0.5615234375,0.4912109375,0.419921875,0.3623046875,0.359375,0.4130859375,0.490234375,0.5458984375,0.544921875,0.4892578125,0.43359375,0.42578125,0.46875,0.53125,0.5712890625,0.5595703125,0.5,0.431640625,0.388671875,0.392578125,0.44140625,0.5107421875,0.5595703125,0.5693359375,0.5673828125,0.5634765625,0.5595703125,0.5576171875,0.556640625,0.5576171875,0.5595703125,0.5693359375,0.6064453125,0.6494140625,0.666015625,0.6396484375,0.5810546875,0.509765625,0.4287109375,0.3271484375,0.24609375,0.2275390625,0.2783203125,0.36328125,0.439453125,0.51953125,0.619140625,0.69921875,0.7158203125,0.6630859375,0.5771484375,0.5,0.41796875,0.3154296875,0.232421875,0.2119140625,0.2607421875,0.34375,0.419921875,0.48828125,0.541015625,0.556640625,0.5322265625,0.484375,0.447265625,0.439453125,0.4443359375,0.4638671875,0.4970703125,0.533203125,0.5634765625,0.578125,0.5791015625,0.57421875,0.5537109375,0.517578125,0.4755859375,0.44140625,0.4228515625,0.419921875,0.412109375,0.37890625,0.3427734375,0.33203125,0.3603515625,0.419921875,0.4892578125,0.5595703125,0.6220703125,0.6533203125,0.6455078125,0.611328125,0.5791015625,0.5693359375,0.57421875,0.595703125,0.6142578125,0.6044921875,0.5595703125,0.4912109375,0.419921875,0.3623046875,0.35546875,0.400390625,0.46484375,0.5087890625,0.4990234375,0.439453125,0.380859375,0.376953125,0.4296875,0.5078125,0.564453125,0.564453125,0.509765625,0.4443359375,0.404296875,0.408203125,0.4560546875,0.5224609375,0.5693359375,0.5791015625,0.57421875,0.5537109375,0.5185546875,0.4794921875,0.447265625,0.431640625,0.4296875,0.4345703125,0.4521484375,0.4833984375,0.517578125,0.544921875,0.55859375,0.5595703125,0.544921875,0.4853515625,0.40234375,0.3359375,0.3193359375,0.3544921875,0.419921875,0.48046875,0.5029296875,0.484375,0.4501953125,0.4306640625,0.4501953125,0.509765625,0.5771484375,0.6357421875,0.6640625,0.6533203125,0.6181640625,0.5869140625,0.5791015625,0.5791015625,0.576171875,0.572265625,0.56640625,0.5625,0.5595703125,0.5595703125,0.5693359375,0.6142578125,0.671875,0.70703125,0.6982421875,0.6484375,0.5791015625,0.505859375,0.4365234375,0.3916015625,0.3828125,0.40234375,0.4248046875,0.4296875,0.431640625,0.447265625,0.4794921875,0.5185546875,0.5537109375,0.57421875,0.5791015625,0.5771484375,0.55859375,0.5234375,0.48046875,0.4443359375,0.423828125,0.419921875,0.41015625,0.37109375,0.322265625,0.296875,0.314453125,0.369140625,0.439453125,0.5185546875,0.609375,0.6708984375,0.6640625,0.59375,0.498046875,0.419921875,0.3544921875,0.3212890625,0.33984375,0.408203125,0.494140625,0.5546875,0.5693359375,0.5791015625,0.6123046875,0.650390625,0.6630859375,0.6357421875,0.5771484375,0.509765625,0.4306640625,0.330078125,0.24609375,0.2236328125,0.26953125,0.3525390625,0.4296875,0.509765625,0.603515625,0.669921875,0.669921875,0.603515625,0.509765625,0.4296875,0.36328125,0.3291015625,0.349609375,0.4189453125,0.505859375,0.5654296875,0.5791015625,0.5849609375,0.6064453125,0.6240234375,0.6142578125,0.568359375,0.5,0.4296875,0.3759765625,0.3857421875,0.4580078125,0.556640625,0.6279296875,0.634765625,0.5791015625,0.5078125,0.4404296875,0.3984375,0.3916015625,0.412109375,0.4345703125,0.439453125,0.4287109375,0.38671875,0.333984375,0.3046875,0.3193359375,0.37109375,0.439453125,0.5078125,0.556640625,0.5654296875,0.533203125,0.478515625,0.4384765625,0.4296875,0.44140625,0.484375,0.5390625,0.5703125,0.55859375,0.5078125,0.439453125,0.380859375,0.3681640625,0.404296875,0.4599609375,0.4970703125,0.486328125,0.4296875,0.375,0.375,0.4326171875,0.5126953125,0.568359375,0.56640625,0.509765625,0.431640625,0.3408203125,0.27734375,0.27734375,0.3427734375,0.43359375,0.509765625,0.5869140625,0.6865234375,0.765625,0.783203125,0.732421875,0.6474609375,0.5693359375,0.48828125,0.384765625,0.3017578125,0.28125,0.330078125,0.4130859375,0.4892578125,0.546875,0.55078125,0.5009765625,0.4287109375,0.3779296875,0.3828125,0.439453125,0.498046875,0.509765625,0.4716796875,0.4130859375,0.3740234375,0.3828125,0.439453125,0.498046875,0.515625,0.4921875,0.4521484375,0.4296875,0.44921875,0.509765625,0.5888671875,0.6865234375,0.7626953125,0.7763671875,0.7216796875,0.6357421875,0.5595703125,0.498046875,0.47265625,0.484375,0.509765625,0.5205078125,0.4931640625,0.4296875,0.37109375,0.369140625,0.4267578125,0.5078125,0.5654296875,0.5654296875,0.509765625,0.4306640625,0.3369140625,0.2685546875,0.2646484375,0.328125,0.419921875,0.5,0.5673828125,0.6103515625,0.6064453125,0.5576171875,0.48828125,0.439453125,0.4296875,0.4345703125,0.453125,0.4853515625,0.5234375,0.5556640625,0.57421875,0.5791015625,0.5810546875,0.58203125,0.58203125,0.58203125,0.580078125,0.5791015625,0.5791015625,0.5654296875,0.505859375,0.4189453125,0.349609375,0.3291015625,0.36328125,0.4296875,0.5029296875,0.5732421875,0.6201171875,0.62890625,0.609375,0.5859375,0.5791015625,0.576171875,0.5576171875,0.5234375,0.4814453125,0.4453125,0.4248046875,0.419921875,0.412109375,0.390625,0.375,0.388671875,0.4384765625,0.5087890625,0.5791015625,0.654296875,0.7373046875,0.7880859375,0.7705078125,0.69140625,0.5908203125,0.509765625,0.4306640625,0.3447265625,0.291015625,0.306640625,0.38671875,0.48828125,0.5693359375,0.6494140625,0.744140625,0.8134765625,0.81640625,0.751953125,0.6591796875,0.5791015625,0.5087890625,0.455078125,0.4384765625,0.46484375,0.513671875,0.5517578125,0.5595703125,0.5546875,0.5361328125,0.5048828125,0.46875,0.4384765625,0.4228515625,0.419921875,0.4296875,0.470703125,0.5224609375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.4521484375,0.552734375,0.6259765625,0.6337890625,0.5791015625,0.498046875,0.38671875,0.28515625,0.2431640625,0.2734375,0.345703125,0.419921875,0.478515625,0.4931640625,0.458984375,0.40625,0.37109375,0.3828125,0.439453125,0.517578125,0.6171875,0.697265625,0.716796875,0.66796875,0.5859375,0.509765625,0.439453125,0.3759765625,0.341796875,0.3466796875,0.3798828125,0.41015625,0.419921875,0.421875,0.42578125,0.4306640625,0.4345703125,0.4384765625,0.439453125,0.439453125,0.453125,0.5107421875,0.59375,0.66015625,0.6787109375,0.64453125,0.5791015625,0.5078125,0.439453125,0.39453125,0.384765625,0.4033203125,0.4248046875,0.4296875,0.44140625,0.4990234375,0.583984375,0.654296875,0.67578125,0.6435546875,0.5791015625,0.5185546875,0.49609375,0.5146484375,0.548828125,0.568359375,0.548828125,0.4892578125,0.4326171875,0.423828125,0.4638671875,0.5244140625,0.5654296875,0.556640625,0.5,0.4306640625,0.3701171875,0.3388671875,0.345703125,0.37890625,0.41015625,0.419921875,0.4208984375,0.421875,0.4208984375,0.4189453125,0.41796875,0.41796875,0.419921875,0.43359375,0.4873046875,0.5615234375,0.6142578125,0.6201171875,0.5771484375,0.509765625,0.4306640625,0.3427734375,0.287109375,0.30078125,0.3779296875,0.478515625,0.5595703125,0.6376953125,0.724609375,0.779296875,0.765625,0.6875,0.5888671875,0.509765625,0.43359375,0.349609375,0.298828125,0.3154296875,0.3935546875,0.4912109375,0.5693359375,0.6357421875,0.6845703125,0.6943359375,0.6630859375,0.6103515625,0.5693359375,0.5595703125,0.556640625,0.541015625,0.5126953125,0.48046875,0.4541015625,0.4404296875,0.439453125,0.4443359375,0.4609375,0.4892578125,0.5205078125,0.5458984375,0.55859375,0.5595703125,0.546875,0.498046875,0.4326171875,0.3896484375,0.3935546875,0.4404296875,0.509765625,0.5771484375,0.6201171875,0.6142578125,0.5615234375,0.4873046875,0.43359375,0.419921875,0.4306640625,0.4873046875,0.5703125,0.6376953125,0.6572265625,0.6240234375,0.5595703125,0.5009765625,0.4892578125,0.52734375,0.5859375,0.625,0.6162109375,0.5595703125,0.5009765625,0.486328125,0.5146484375,0.5595703125,0.5869140625,0.5693359375,0.509765625,0.439453125,0.376953125,0.34375,0.3505859375,0.3818359375,0.412109375,0.419921875,0.423828125,0.4423828125,0.4775390625,0.517578125,0.55078125,0.5673828125,0.5693359375,0.564453125,0.548828125,0.5205078125,0.48828125,0.4599609375,0.4443359375,0.439453125,0.431640625,0.40625,0.384765625,0.3935546875,0.4384765625,0.5078125,0.5791015625,0.63671875,0.6396484375,0.5859375,0.5087890625,0.453125,0.4541015625,0.509765625,0.57421875,0.61328125,0.6064453125,0.5556640625,0.4873046875,0.439453125,0.4296875,0.431640625,0.4326171875,0.431640625,0.4287109375,0.4248046875,0.421875,0.419921875,0.4287109375,0.4697265625,0.525390625,0.5595703125,0.548828125,0.4990234375,0.4296875,0.36328125,0.326171875,0.3427734375,0.41015625,0.494140625,0.5546875,0.5693359375,0.568359375,0.552734375,0.5234375,0.486328125,0.4541015625,0.4345703125,0.4296875,0.431640625,0.447265625,0.4765625,0.5126953125,0.5419921875,0.5576171875,0.5595703125,0.5478515625,0.5048828125,0.451171875,0.421875,0.435546875,0.4892578125,0.5595703125,0.6396484375,0.734375,0.8037109375,0.806640625,0.7421875,0.6484375,0.5693359375,0.49609375,0.423828125,0.3759765625,0.3662109375,0.38671875,0.412109375,0.419921875,0.43359375,0.486328125,0.55859375,0.611328125,0.6171875,0.576171875,0.509765625,0.43359375,0.349609375,0.298828125,0.3154296875,0.3935546875,0.4912109375,0.5693359375,0.6455078125,0.7353515625,0.798828125,0.798828125,0.7353515625,0.6455078125,0.5693359375,0.4990234375,0.4296875,0.3828125,0.37109375,0.3896484375,0.412109375,0.419921875,0.4345703125,0.49609375,0.5830078125,0.65234375,0.6708984375,0.6357421875,0.5693359375,0.505859375,0.4765625,0.482421875,0.5048828125,0.5146484375,0.4892578125,0.4296875,0.3662109375,0.3310546875,0.345703125,0.408203125,0.48828125,0.544921875,0.5595703125,0.55078125,0.51171875,0.4609375,0.4326171875,0.447265625,0.5,0.5693359375,0.6396484375,0.6923828125,0.70703125,0.677734375,0.6240234375,0.5810546875,0.5693359375,0.5771484375,0.615234375,0.666015625,0.6962890625,0.6845703125,0.6357421875,0.5693359375,0.5126953125,0.505859375,0.548828125,0.6103515625,0.650390625,0.6396484375,0.5791015625,0.517578125,0.49609375,0.515625,0.552734375,0.5732421875,0.5517578125,0.4892578125,0.41015625,0.3193359375,0.2578125,0.26171875,0.330078125,0.4228515625,0.5,0.57421875,0.658203125,0.708984375,0.6943359375,0.6171875,0.5185546875,0.439453125,0.36328125,0.27734375,0.224609375,0.2392578125,0.318359375,0.4189453125,0.5,0.5615234375,0.5810546875,0.556640625,0.513671875,0.4853515625,0.5009765625,0.5595703125,0.6171875,0.6298828125,0.595703125,0.54296875,0.5087890625,0.521484375,0.5791015625,0.634765625,0.634765625,0.5791015625,0.5,0.443359375,0.4443359375,0.5,0.57421875,0.6552734375,0.703125,0.6845703125,0.60546875,0.5078125,0.4296875,0.3759765625,0.3828125,0.451171875,0.5439453125,0.6103515625,0.615234375,0.5595703125,0.4990234375,0.4794921875,0.501953125,0.5419921875,0.5654296875,0.5478515625,0.4892578125,0.4140625,0.3251953125,0.263671875,0.2666015625,0.33203125,0.4228515625,0.5,0.568359375,0.62890625,0.66015625,0.6533203125,0.6201171875,0.5888671875,0.5791015625,0.57421875,0.5537109375,0.5185546875,0.4794921875,0.447265625,0.431640625,0.4296875,0.431640625,0.4326171875,0.4345703125,0.435546875,0.4365234375,0.4384765625,0.439453125,0.4345703125,0.412109375,0.390625,0.39453125,0.435546875,0.5,0.5693359375,0.6328125,0.6669921875,0.6494140625,0.583984375,0.501953125,0.4443359375,0.4296875,0.431640625,0.4482421875,0.48046875,0.5185546875,0.55078125,0.5673828125,0.5693359375,0.5546875,0.494140625,0.408203125,0.33984375,0.3212890625,0.3544921875,0.419921875,0.5,0.6025390625,0.6875,0.7119140625,0.666015625,0.5849609375,0.509765625,0.4296875,0.3291015625,0.248046875,0.2275390625,0.2744140625,0.35546875,0.4296875,0.505859375,0.59375,0.6552734375,0.65234375,0.5869140625,0.49609375,0.419921875,0.353515625,0.306640625,0.2978515625,0.33203125,0.3876953125,0.4296875,0.439453125,0.443359375,0.4599609375,0.4912109375,0.5283203125,0.55859375,0.576171875,0.5791015625,0.5888671875,0.626953125,0.6748046875,0.447265625,0.5869140625,0.6904296875,0.7177734375,0.673828125,0.5966796875,0.474609375,0.33984375,0.248046875,0.2275390625,0.265625,0.3251953125,0.380859375,0.408203125,0.4052734375,0.384765625,0.37109375,0.3857421875,0.4287109375,0.490234375,0.578125,0.66015625,0.697265625,0.6748046875,0.615234375,0.55078125,0.484375,0.40625,0.3369140625,0.298828125,0.296875,0.3125,0.3251953125,0.337890625,0.3583984375,0.3828125,0.40625,0.421875,0.427734375,0.4287109375,0.443359375,0.5087890625,0.6083984375,0.69921875,0.7421875,0.7275390625,0.673828125,0.6083984375,0.533203125,0.4638671875,0.416015625,0.3935546875,0.3857421875,0.376953125,0.3828125,0.4462890625,0.556640625,0.6650390625,0.7275390625,0.724609375,0.673828125,0.615234375,0.5732421875,0.548828125,0.537109375,0.5234375,0.494140625,0.4482421875,0.40625,0.4052734375,0.4453125,0.501953125,0.5419921875,0.541015625,0.5,0.4443359375,0.3798828125,0.32421875,0.294921875,0.296875,0.3125,0.3251953125,0.333984375,0.3359375,0.330078125,0.3212890625,0.3154296875,0.3173828125,0.3251953125,0.3505859375,0.427734375,0.533203125,0.619140625,0.6484375,0.6171875,0.55078125,0.4716796875,0.3798828125,0.3173828125,0.322265625,0.3935546875,0.490234375,0.5703125,0.6474609375,0.7333984375,0.7880859375,0.779296875,0.7099609375,0.62109375,0.55078125,0.486328125,0.419921875,0.38671875,0.4091796875,0.48046875,0.5615234375,0.6220703125,0.669921875,0.701171875,0.69921875,0.6640625,0.6142578125,0.578125,0.5703125,0.5654296875,0.5419921875,0.5029296875,0.4609375,0.431640625,0.421875,0.4287109375,0.443359375,0.474609375,0.515625,0.552734375,0.5751953125,0.578125,0.5703125,0.5498046875,0.498046875,0.4384765625,0.4072265625,0.423828125,0.48046875,0.55078125,0.6171875,0.6484375,0.619140625,0.533203125,0.427734375,0.3505859375,0.3251953125,0.330078125,0.3876953125,0.486328125,0.5810546875,0.6318359375,0.623046875,0.5703125,0.517578125,0.501953125,0.529296875,0.576171875,0.6123046875,0.611328125,0.5703125,0.5283203125,0.5244140625,0.556640625,0.599609375,0.6220703125,0.6044921875,0.55078125,0.486328125,0.4140625,0.3525390625,0.318359375,0.314453125,0.322265625,0.3251953125,0.333984375,0.3759765625,0.4501953125,0.5322265625,0.5966796875,0.625,0.6220703125,0.6083984375,0.583984375,0.546875,0.50390625,0.466796875,0.4423828125,0.4287109375,0.416015625,0.40234375,0.4091796875,0.4521484375,0.5263671875,0.6064453125,0.673828125,0.72265625,0.7236328125,0.669921875,0.58984375,0.5263671875,0.5126953125,0.55078125,0.595703125,0.60546875,0.568359375,0.49609375,0.421875,0.3779296875,0.376953125,0.3876953125,0.39453125,0.3935546875,0.3798828125,0.3583984375,0.3388671875,0.3251953125,0.3271484375,0.3671875,0.4296875,0.478515625,0.484375,0.4443359375,0.376953125,0.3115234375,0.283203125,0.31640625,0.4072265625,0.5166015625,0.595703125,0.6220703125,0.6279296875,0.611328125,0.56640625,0.501953125,0.4375,0.39453125,0.376953125,0.373046875,0.39453125,0.443359375,0.50390625,0.552734375,0.57421875,0.5703125,0.5498046875,0.5009765625,0.4453125,0.4189453125,0.4404296875,0.4990234375,0.5703125,0.6513671875,0.7509765625,0.830078125,0.8427734375,0.7880859375,0.7001953125,0.6220703125,0.5439453125,0.44921875,0.3623046875,0.3095703125,0.298828125,0.3125,0.3251953125,0.349609375,0.419921875,0.5185546875,0.599609375,0.630859375,0.607421875,0.55078125,0.486328125,0.419921875,0.38671875,0.4091796875,0.48046875,0.5615234375,0.6220703125,0.6787109375,0.7451171875,0.79296875,0.79296875,0.7451171875,0.6787109375,0.6220703125,0.5634765625,0.484375,0.4013671875,0.33984375,0.314453125,0.3154296875,0.3251953125,0.3525390625,0.4375,0.5595703125,0.6630859375,0.708984375,0.685546875,0.6220703125,0.5537109375,0.5009765625,0.470703125,0.4580078125,0.4482421875,0.4228515625,0.376953125,0.3310546875,0.310546875,0.3369140625,0.4052734375,0.4873046875,0.548828125,0.5703125,0.5712890625,0.5439453125,0.50390625,0.482421875,0.4990234375,0.5517578125,0.6220703125,0.693359375,0.7509765625,0.7724609375,0.74609375,0.69140625,0.6416015625,0.6220703125,0.619140625,0.640625,0.6767578125,0.703125,0.701171875,0.669921875,0.6220703125,0.5830078125,0.59375,0.6494140625,0.71484375,0.7509765625,0.734375,0.673828125,0.6083984375,0.5703125,0.5595703125,0.5615234375,0.55078125,0.5126953125,0.4482421875,0.3720703125,0.296875,0.2568359375,0.279296875,0.353515625,0.4384765625,0.5,0.5556640625,0.6201171875,0.66015625,0.6455078125,0.580078125,0.4970703125,0.4287109375,0.361328125,0.283203125,0.234375,0.248046875,0.3232421875,0.419921875,0.5,0.5634765625,0.5947265625,0.5859375,0.552734375,0.5244140625,0.5283203125,0.5703125,0.615234375,0.634765625,0.6298828125,0.6142578125,0.6083984375,0.62890625,0.673828125,0.7119140625,0.6982421875,0.630859375,0.5419921875,0.474609375,0.4609375,0.5,0.5537109375,0.60546875,0.6259765625,0.5927734375,0.5185546875,0.4365234375,0.376953125,0.3408203125,0.3623046875,0.44140625,0.5400390625,0.6103515625,0.6181640625,0.5703125,0.5146484375,0.484375,0.484375,0.4990234375,0.5078125,0.4921875,0.4482421875,0.392578125,0.33203125,0.2958984375,0.3095703125,0.3681640625,0.44140625,0.5,0.5546875,0.619140625,0.6748046875,0.7041015625,0.7021484375,0.6865234375,0.673828125,0.6552734375,0.60546875,0.529296875,0.451171875,0.39453125,0.373046875,0.376953125,0.38671875,0.39453125,0.400390625,0.4052734375,0.4111328125,0.4189453125,0.4287109375,0.4365234375,0.4375,0.4443359375,0.4697265625,0.5146484375,0.5693359375,0.6220703125,0.6669921875,0.6806640625,0.6435546875,0.5615234375,0.466796875,0.400390625,0.376953125,0.3740234375,0.40234375,0.462890625,0.5361328125,0.5966796875,0.625,0.6220703125,0.595703125,0.5166015625,0.4033203125,0.3037109375,0.2568359375,0.271484375,0.3251953125,0.3994140625,0.5068359375,0.6142578125,0.673828125,0.6669921875,0.6142578125,0.55078125,0.48046875,0.384765625,0.296875,0.2548828125,0.271484375,0.3232421875,0.376953125,0.4326171875,0.4931640625,0.529296875,0.515625,0.45703125,0.3837890625,0.3251953125,0.2783203125,0.25390625,0.267578125,0.31640625,0.376953125,0.419921875,0.4287109375,0.4345703125,0.46484375,0.5185546875,0.5830078125,0.6376953125,0.66796875,0.673828125,0.6796875,0.7021484375,0.7255859375,0.466796875,0.62109375,0.734375,0.7705078125,0.740234375,0.6787109375,0.560546875,0.4111328125,0.2841796875,0.21875,0.2197265625,0.2587890625,0.3056640625,0.3525390625,0.39453125,0.4228515625,0.439453125,0.4521484375,0.46875,0.4970703125,0.5537109375,0.62109375,0.66796875,0.67578125,0.6484375,0.6044921875,0.548828125,0.4580078125,0.353515625,0.26953125,0.2314453125,0.2353515625,0.2587890625,0.2890625,0.333984375,0.3857421875,0.4306640625,0.4580078125,0.4677734375,0.46875,0.4814453125,0.541015625,0.6357421875,0.7255859375,0.7783203125,0.7783203125,0.740234375,0.6904296875,0.626953125,0.5546875,0.4853515625,0.4306640625,0.392578125,0.3642578125,0.353515625,0.40625,0.5185546875,0.6484375,0.744140625,0.771484375,0.740234375,0.6904296875,0.626953125,0.5546875,0.4912109375,0.4443359375,0.4150390625,0.39453125,0.380859375,0.390625,0.4248046875,0.46875,0.5029296875,0.5126953125,0.5,0.4716796875,0.4130859375,0.3369140625,0.26953125,0.2353515625,0.236328125,0.2587890625,0.28125,0.28515625,0.2705078125,0.248046875,0.2333984375,0.2373046875,0.2587890625,0.302734375,0.4052734375,0.541015625,0.6513671875,0.6953125,0.669921875,0.6044921875,0.5234375,0.419921875,0.3369140625,0.31640625,0.3671875,0.4521484375,0.5302734375,0.607421875,0.6953125,0.7587890625,0.767578125,0.72265625,0.6572265625,0.6044921875,0.55859375,0.5185546875,0.501953125,0.521484375,0.5654296875,0.609375,0.634765625,0.6513671875,0.65234375,0.6318359375,0.5966796875,0.55859375,0.53515625,0.5302734375,0.5244140625,0.501953125,0.46875,0.44140625,0.4326171875,0.4453125,0.46875,0.5,0.5419921875,0.580078125,0.595703125,0.5849609375,0.5576171875,0.5302734375,0.49609375,0.4443359375,0.40234375,0.4033203125,0.4521484375,0.529296875,0.6044921875,0.669921875,0.6953125,0.6513671875,0.541015625,0.4052734375,0.302734375,0.2587890625,0.24609375,0.2861328125,0.375,0.4775390625,0.548828125,0.564453125,0.5302734375,0.48828125,0.4658203125,0.4716796875,0.4990234375,0.529296875,0.5419921875,0.5302734375,0.51953125,0.541015625,0.587890625,0.634765625,0.6572265625,0.64453125,0.6044921875,0.552734375,0.4775390625,0.3916015625,0.3193359375,0.2763671875,0.2607421875,0.2587890625,0.271484375,0.33203125,0.435546875,0.546875,0.6259765625,0.65234375,0.634765625,0.609375,0.5849609375,0.5625,0.541015625,0.51953125,0.4951171875,0.46875,0.443359375,0.4306640625,0.4521484375,0.5166015625,0.6044921875,0.685546875,0.740234375,0.7783203125,0.7841796875,0.748046875,0.685546875,0.625,0.595703125,0.6044921875,0.6142578125,0.5830078125,0.513671875,0.4306640625,0.3671875,0.3466796875,0.3642578125,0.390625,0.4130859375,0.4140625,0.3857421875,0.337890625,0.291015625,0.2587890625,0.24609375,0.28125,0.3525390625,0.421875,0.4521484375,0.427734375,0.3642578125,0.296875,0.26171875,0.2900390625,0.3798828125,0.4990234375,0.5927734375,0.634765625,0.658203125,0.66015625,0.6240234375,0.5517578125,0.466796875,0.3994140625,0.3642578125,0.345703125,0.3623046875,0.4140625,0.48046875,0.5322265625,0.5478515625,0.5302734375,0.494140625,0.43359375,0.375,0.35546875,0.388671875,0.4560546875,0.5302734375,0.6123046875,0.71875,0.8095703125,0.8369140625,0.7939453125,0.7119140625,0.634765625,0.552734375,0.439453125,0.322265625,0.2421875,0.216796875,0.232421875,0.2587890625,0.298828125,0.38671875,0.501953125,0.6015625,0.650390625,0.64453125,0.6044921875,0.55859375,0.5185546875,0.501953125,0.521484375,0.5654296875,0.609375,0.634765625,0.65625,0.6806640625,0.6982421875,0.6982421875,0.6806640625,0.65625,0.634765625,0.6044921875,0.529296875,0.421875,0.3193359375,0.2548828125,0.2392578125,0.2587890625,0.3037109375,0.41015625,0.5517578125,0.6708984375,0.7216796875,0.69921875,0.634765625,0.5615234375,0.4873046875,0.427734375,0.39453125,0.3837890625,0.37890625,0.3642578125,0.345703125,0.3369140625,0.3505859375,0.3916015625,0.447265625,0.498046875,0.5302734375,0.5478515625,0.5380859375,0.513671875,0.5,0.5166015625,0.56640625,0.634765625,0.7080078125,0.7763671875,0.8095703125,0.7900390625,0.7314453125,0.6708984375,0.634765625,0.6123046875,0.603515625,0.61328125,0.6318359375,0.6484375,0.6494140625,0.634765625,0.62890625,0.669921875,0.7431640625,0.8095703125,0.8330078125,0.8046875,0.740234375,0.671875,0.619140625,0.5830078125,0.5517578125,0.5146484375,0.4619140625,0.39453125,0.32421875,0.2734375,0.26953125,0.3203125,0.400390625,0.46875,0.5,0.5234375,0.560546875,0.5908203125,0.59375,0.564453125,0.5166015625,0.46875,0.416015625,0.3447265625,0.2900390625,0.2861328125,0.33984375,0.4228515625,0.5,0.5673828125,0.6123046875,0.6181640625,0.587890625,0.544921875,0.5205078125,0.5302734375,0.55078125,0.5791015625,0.615234375,0.654296875,0.69140625,0.7197265625,0.740234375,0.75,0.7236328125,0.6591796875,0.580078125,0.515625,0.4892578125,0.5,0.517578125,0.525390625,0.513671875,0.4775390625,0.4296875,0.388671875,0.3642578125,0.35546875,0.388671875,0.4560546875,0.5263671875,0.5693359375,0.5673828125,0.5302734375,0.4853515625,0.4462890625,0.421875,0.4140625,0.4140625,0.41015625,0.39453125,0.3759765625,0.36328125,0.369140625,0.3974609375,0.4384765625,0.4755859375,0.5,0.52734375,0.5859375,0.662109375,0.7294921875,0.763671875,0.7626953125,0.740234375,0.7021484375,0.6220703125,0.513671875,0.4140625,0.3544921875,0.34375,0.3642578125,0.388671875,0.4052734375,0.4140625,0.4189453125,0.427734375,0.4443359375,0.46875,0.49609375,0.5244140625,0.5517578125,0.5771484375,0.59765625,0.6162109375,0.634765625,0.650390625,0.6474609375,0.609375,0.541015625,0.4619140625,0.3984375,0.3642578125,0.3486328125,0.376953125,0.4521484375,0.546875,0.6220703125,0.650390625,0.634765625,0.5947265625,0.5029296875,0.3798828125,0.2734375,0.216796875,0.2197265625,0.2587890625,0.3173828125,0.4189453125,0.5380859375,0.6298828125,0.6640625,0.6474609375,0.6044921875,0.552734375,0.478515625,0.40234375,0.3505859375,0.333984375,0.3447265625,0.3642578125,0.3828125,0.39453125,0.388671875,0.361328125,0.3203125,0.2822265625,0.2587890625,0.2451171875,0.2568359375,0.30078125,0.3642578125,0.4248046875,0.4619140625,0.46875,0.4755859375,0.5087890625,0.568359375,0.640625,0.701171875,0.7333984375,0.740234375,0.7412109375,0.7421875,0.7294921875,0.5107421875,0.640625,0.7294921875,0.7568359375,0.740234375,0.69921875,0.6064453125,0.474609375,0.34765625,0.2646484375,0.2412109375,0.2587890625,0.2939453125,0.3564453125,0.4365234375,0.5048828125,0.5419921875,0.5458984375,0.5302734375,0.517578125,0.5322265625,0.5712890625,0.6181640625,0.6513671875,0.6552734375,0.634765625,0.5947265625,0.5029296875,0.3798828125,0.2734375,0.216796875,0.2197265625,0.2587890625,0.3095703125,0.375,0.4443359375,0.4970703125,0.5234375,0.5302734375,0.5302734375,0.5380859375,0.5791015625,0.6455078125,0.712890625,0.7548828125,0.7607421875,0.740234375,0.712890625,0.677734375,0.6298828125,0.568359375,0.5029296875,0.443359375,0.39453125,0.3623046875,0.3857421875,0.474609375,0.5966796875,0.7021484375,0.7509765625,0.740234375,0.703125,0.626953125,0.5244140625,0.427734375,0.3671875,0.3505859375,0.3642578125,0.3828125,0.40234375,0.421875,0.44140625,0.4609375,0.48046875,0.5,0.505859375,0.4638671875,0.3798828125,0.2900390625,0.23046875,0.22265625,0.2587890625,0.296875,0.3037109375,0.2783203125,0.240234375,0.21484375,0.220703125,0.2587890625,0.3212890625,0.4423828125,0.587890625,0.6982421875,0.7353515625,0.7021484375,0.634765625,0.5517578125,0.4375,0.3330078125,0.2900390625,0.3193359375,0.3935546875,0.46875,0.546875,0.634765625,0.7041015625,0.728515625,0.7080078125,0.6669921875,0.634765625,0.611328125,0.599609375,0.6015625,0.61328125,0.6220703125,0.6201171875,0.6044921875,0.5830078125,0.552734375,0.5185546875,0.4912109375,0.4755859375,0.4697265625,0.46875,0.4638671875,0.4453125,0.4248046875,0.421875,0.443359375,0.484375,0.5302734375,0.5791015625,0.630859375,0.6591796875,0.6435546875,0.587890625,0.5205078125,0.46875,0.4189453125,0.3642578125,0.33984375,0.3720703125,0.4560546875,0.5546875,0.634765625,0.7021484375,0.7353515625,0.6982421875,0.587890625,0.4423828125,0.3212890625,0.2587890625,0.2236328125,0.2314453125,0.2890625,0.375,0.451171875,0.4833984375,0.46875,0.4404296875,0.41015625,0.3916015625,0.39453125,0.41796875,0.447265625,0.46875,0.4951171875,0.544921875,0.6044921875,0.6513671875,0.669921875,0.6591796875,0.634765625,0.6005859375,0.53515625,0.447265625,0.3583984375,0.2939453125,0.263671875,0.2587890625,0.2734375,0.341796875,0.4521484375,0.5634765625,0.6318359375,0.640625,0.6044921875,0.5654296875,0.548828125,0.5576171875,0.576171875,0.5849609375,0.5693359375,0.5302734375,0.4873046875,0.4638671875,0.482421875,0.546875,0.6318359375,0.703125,0.740234375,0.765625,0.783203125,0.779296875,0.748046875,0.701171875,0.6591796875,0.634765625,0.6044921875,0.53515625,0.4443359375,0.369140625,0.337890625,0.353515625,0.39453125,0.44140625,0.484375,0.4970703125,0.4609375,0.388671875,0.3125,0.2587890625,0.2275390625,0.2529296875,0.328125,0.4140625,0.4638671875,0.455078125,0.39453125,0.3232421875,0.26953125,0.26953125,0.3369140625,0.4453125,0.5458984375,0.6044921875,0.650390625,0.6845703125,0.6796875,0.6240234375,0.53515625,0.44921875,0.39453125,0.3583984375,0.3603515625,0.40234375,0.4609375,0.5029296875,0.5048828125,0.46875,0.4150390625,0.33984375,0.2783203125,0.267578125,0.314453125,0.3935546875,0.46875,0.5517578125,0.6630859375,0.759765625,0.794921875,0.7587890625,0.681640625,0.6044921875,0.5205078125,0.3994140625,0.275390625,0.1953125,0.1796875,0.212890625,0.2587890625,0.3154296875,0.4091796875,0.521484375,0.61328125,0.658203125,0.658203125,0.634765625,0.611328125,0.599609375,0.6015625,0.61328125,0.6220703125,0.6201171875,0.6044921875,0.583984375,0.55859375,0.541015625,0.541015625,0.55859375,0.583984375,0.6044921875,0.6083984375,0.5546875,0.447265625,0.328125,0.2451171875,0.2255859375,0.2587890625,0.3212890625,0.4375,0.5771484375,0.6796875,0.708984375,0.6728515625,0.6044921875,0.52734375,0.4384765625,0.3642578125,0.3310546875,0.3408203125,0.37109375,0.39453125,0.408203125,0.4052734375,0.3916015625,0.3837890625,0.39453125,0.42578125,0.46875,0.5068359375,0.5146484375,0.4990234375,0.4853515625,0.4951171875,0.5380859375,0.6044921875,0.6806640625,0.759765625,0.806640625,0.794921875,0.7333984375,0.6591796875,0.6044921875,0.5576171875,0.513671875,0.4912109375,0.501953125,0.5400390625,0.580078125,0.6044921875,0.6357421875,0.7080078125,0.794921875,0.853515625,0.8564453125,0.8095703125,0.740234375,0.671875,0.615234375,0.5712890625,0.533203125,0.4892578125,0.4326171875,0.3642578125,0.2998046875,0.275390625,0.306640625,0.3798828125,0.4609375,0.5048828125,0.5,0.4853515625,0.490234375,0.513671875,0.541015625,0.556640625,0.5517578125,0.5302734375,0.4931640625,0.4287109375,0.36328125,0.3369140625,0.3623046875,0.4267578125,0.5,0.5712890625,0.630859375,0.6513671875,0.62109375,0.5576171875,0.498046875,0.46875,0.4599609375,0.4892578125,0.560546875,0.6484375,0.7197265625,0.75,0.740234375,0.71875,0.6865234375,0.6435546875,0.595703125,0.552734375,0.5205078125,0.5,0.4755859375,0.4384765625,0.3974609375,0.369140625,0.36328125,0.3759765625,0.39453125,0.41796875,0.4560546875,0.49609375,0.51953125,0.5166015625,0.49609375,0.46875,0.4384765625,0.3955078125,0.3525390625,0.328125,0.328125,0.3447265625,0.3642578125,0.388671875,0.4296875,0.4775390625,0.513671875,0.525390625,0.517578125,0.5,0.4931640625,0.53515625,0.619140625,0.708984375,0.7685546875,0.7763671875,0.740234375,0.681640625,0.580078125,0.4609375,0.369140625,0.3349609375,0.3515625,0.39453125,0.435546875,0.458984375,0.4638671875,0.4609375,0.4658203125,0.4892578125,0.5302734375,0.578125,0.6318359375,0.6708984375,0.6796875,0.6591796875,0.6279296875,0.6044921875,0.587890625,0.57421875,0.5576171875,0.529296875,0.48828125,0.4404296875,0.39453125,0.361328125,0.3798828125,0.4521484375,0.546875,0.619140625,0.6376953125,0.6044921875,0.548828125,0.4580078125,0.353515625,0.26953125,0.2314453125,0.2353515625,0.2587890625,0.296875,0.376953125,0.4853515625,0.5849609375,0.64453125,0.6552734375,0.634765625,0.6064453125,0.5693359375,0.5244140625,0.48046875,0.4423828125,0.4150390625,0.39453125,0.3701171875,0.3291015625,0.28125,0.2451171875,0.232421875,0.2412109375,0.2587890625,0.283203125,0.330078125,0.39453125,0.4580078125,0.50390625,0.5263671875,0.5302734375,0.53515625,0.560546875,0.607421875,0.6630859375,0.7099609375,0.7353515625,0.740234375,0.7373046875,0.7197265625,0.6787109375,0.5654296875,0.6396484375,0.677734375,0.6826171875,0.673828125,0.6533203125,0.59765625,0.5107421875,0.4189453125,0.3505859375,0.322265625,0.3251953125,0.3486328125,0.4150390625,0.509765625,0.591796875,0.62890625,0.615234375,0.5703125,0.5234375,0.498046875,0.5078125,0.5478515625,0.5947265625,0.623046875,0.6220703125,0.595703125,0.5166015625,0.4033203125,0.3037109375,0.2568359375,0.271484375,0.3251953125,0.390625,0.4658203125,0.53125,0.5703125,0.5791015625,0.5732421875,0.5703125,0.57421875,0.5927734375,0.623046875,0.6552734375,0.67578125,0.6806640625,0.673828125,0.6669921875,0.6669921875,0.6611328125,0.6318359375,0.5771484375,0.51171875,0.4482421875,0.39453125,0.3837890625,0.4296875,0.5205078125,0.6142578125,0.669921875,0.673828125,0.6494140625,0.576171875,0.4697265625,0.375,0.326171875,0.3330078125,0.376953125,0.4228515625,0.4453125,0.443359375,0.4326171875,0.431640625,0.4541015625,0.5,0.5361328125,0.5166015625,0.4423828125,0.3486328125,0.283203125,0.27734375,0.3251953125,0.376953125,0.3857421875,0.3515625,0.2998046875,0.265625,0.2744140625,0.3251953125,0.40234375,0.5244140625,0.6552734375,0.73828125,0.7451171875,0.693359375,0.6220703125,0.537109375,0.419921875,0.310546875,0.259765625,0.283203125,0.353515625,0.4287109375,0.5048828125,0.5869140625,0.650390625,0.67578125,0.6630859375,0.6376953125,0.6220703125,0.6171875,0.630859375,0.650390625,0.658203125,0.640625,0.6005859375,0.55078125,0.4990234375,0.4462890625,0.41015625,0.3994140625,0.41015625,0.4248046875,0.4287109375,0.423828125,0.4052734375,0.390625,0.40234375,0.4453125,0.5068359375,0.5703125,0.634765625,0.6982421875,0.7236328125,0.6865234375,0.59765625,0.5,0.4287109375,0.3642578125,0.30078125,0.279296875,0.3251953125,0.427734375,0.5390625,0.6220703125,0.693359375,0.7451171875,0.73828125,0.6552734375,0.5244140625,0.40234375,0.3251953125,0.26953125,0.2431640625,0.2626953125,0.3203125,0.3876953125,0.427734375,0.4287109375,0.412109375,0.375,0.3349609375,0.3173828125,0.3349609375,0.3779296875,0.4287109375,0.484375,0.55078125,0.611328125,0.6455078125,0.6484375,0.634765625,0.6220703125,0.6044921875,0.5615234375,0.4931640625,0.4189453125,0.361328125,0.3310546875,0.3251953125,0.33984375,0.40234375,0.498046875,0.583984375,0.623046875,0.60546875,0.55078125,0.5,0.4931640625,0.5322265625,0.5888671875,0.6279296875,0.62109375,0.5703125,0.51171875,0.47265625,0.4765625,0.525390625,0.5966796875,0.65234375,0.673828125,0.689453125,0.720703125,0.7490234375,0.751953125,0.7236328125,0.673828125,0.6220703125,0.5595703125,0.4658203125,0.3720703125,0.3212890625,0.33203125,0.384765625,0.4482421875,0.513671875,0.5791015625,0.6083984375,0.576171875,0.4921875,0.396484375,0.3251953125,0.2783203125,0.2900390625,0.359375,0.4482421875,0.5078125,0.505859375,0.4482421875,0.3720703125,0.296875,0.2607421875,0.2919921875,0.3798828125,0.4794921875,0.55078125,0.6171875,0.6845703125,0.71875,0.69140625,0.611328125,0.5185546875,0.4482421875,0.396484375,0.384765625,0.4150390625,0.4619140625,0.4921875,0.48046875,0.4287109375,0.359375,0.2724609375,0.2080078125,0.2041015625,0.2626953125,0.3505859375,0.4287109375,0.51171875,0.6201171875,0.71484375,0.7470703125,0.70703125,0.6279296875,0.55078125,0.4677734375,0.3525390625,0.2431640625,0.1875,0.2021484375,0.26171875,0.3251953125,0.3935546875,0.48046875,0.5654296875,0.6220703125,0.640625,0.6337890625,0.6220703125,0.6171875,0.630859375,0.650390625,0.658203125,0.640625,0.6005859375,0.55078125,0.494140625,0.427734375,0.3798828125,0.3798828125,0.427734375,0.494140625,0.55078125,0.5869140625,0.5615234375,0.474609375,0.3671875,0.2900390625,0.2783203125,0.3251953125,0.400390625,0.5146484375,0.6298828125,0.693359375,0.6845703125,0.6240234375,0.55078125,0.4716796875,0.376953125,0.302734375,0.2841796875,0.32421875,0.390625,0.4482421875,0.48828125,0.4873046875,0.447265625,0.39453125,0.3642578125,0.376953125,0.4287109375,0.4814453125,0.4990234375,0.484375,0.4609375,0.455078125,0.4873046875,0.55078125,0.6298828125,0.7177734375,0.7763671875,0.7724609375,0.70703125,0.62109375,0.55078125,0.484375,0.41015625,0.3603515625,0.365234375,0.419921875,0.4931640625,0.55078125,0.61328125,0.70703125,0.7978515625,0.8388671875,0.814453125,0.7470703125,0.673828125,0.6064453125,0.5595703125,0.5341796875,0.5166015625,0.490234375,0.4443359375,0.376953125,0.3173828125,0.3095703125,0.361328125,0.4453125,0.5166015625,0.5361328125,0.5,0.453125,0.4306640625,0.4443359375,0.4892578125,0.541015625,0.5712890625,0.5703125,0.5478515625,0.490234375,0.4189453125,0.375,0.3798828125,0.4296875,0.5,0.5751953125,0.6484375,0.68359375,0.65625,0.578125,0.490234375,0.4287109375,0.392578125,0.4140625,0.4970703125,0.60546875,0.6884765625,0.7099609375,0.673828125,0.626953125,0.59765625,0.587890625,0.5849609375,0.5751953125,0.5458984375,0.5,0.44140625,0.3681640625,0.3095703125,0.2958984375,0.33203125,0.392578125,0.4482421875,0.498046875,0.5390625,0.552734375,0.5302734375,0.486328125,0.4462890625,0.4287109375,0.41015625,0.3671875,0.3154296875,0.28515625,0.2900390625,0.3271484375,0.376953125,0.4365234375,0.5185546875,0.5927734375,0.6259765625,0.60546875,0.5537109375,0.5,0.462890625,0.482421875,0.556640625,0.650390625,0.7158203125,0.7216796875,0.673828125,0.599609375,0.4921875,0.384765625,0.3251953125,0.33203125,0.384765625,0.4482421875,0.501953125,0.525390625,0.5185546875,0.4990234375,0.4921875,0.515625,0.5703125,0.63671875,0.708984375,0.75390625,0.744140625,0.6845703125,0.609375,0.55078125,0.5078125,0.4931640625,0.5068359375,0.52734375,0.5302734375,0.5029296875,0.4482421875,0.3994140625,0.40234375,0.4599609375,0.5390625,0.5966796875,0.599609375,0.55078125,0.484375,0.40625,0.3369140625,0.298828125,0.296875,0.3125,0.3251953125,0.34375,0.3935546875,0.4697265625,0.5478515625,0.6044921875,0.6259765625,0.6220703125,0.6142578125,0.615234375,0.61328125,0.5927734375,0.552734375,0.5,0.4482421875,0.388671875,0.306640625,0.232421875,0.19921875,0.2197265625,0.271484375,0.3251953125,0.380859375,0.4482421875,0.51171875,0.5546875,0.5712890625,0.5712890625,0.5703125,0.572265625,0.5849609375,0.6083984375,0.6357421875,0.658203125,0.6708984375,0.673828125,0.6689453125,0.6455078125,0.5986328125,0.6103515625,0.6240234375,0.6083984375,0.5869140625,0.5791015625,0.5732421875,0.5517578125,0.5146484375,0.47265625,0.4384765625,0.421875,0.419921875,0.4345703125,0.4921875,0.57421875,0.6396484375,0.6572265625,0.623046875,0.5595703125,0.4931640625,0.4453125,0.4365234375,0.46875,0.521484375,0.5615234375,0.5693359375,0.5546875,0.494140625,0.408203125,0.33984375,0.3212890625,0.3544921875,0.419921875,0.4912109375,0.5595703125,0.603515625,0.6103515625,0.58984375,0.5654296875,0.5595703125,0.5595703125,0.5634765625,0.5693359375,0.5751953125,0.5791015625,0.580078125,0.5791015625,0.5849609375,0.6142578125,0.6455078125,0.65234375,0.62109375,0.5595703125,0.4892578125,0.423828125,0.384765625,0.392578125,0.4462890625,0.5185546875,0.5693359375,0.5791015625,0.564453125,0.505859375,0.4208984375,0.353515625,0.333984375,0.3662109375,0.4296875,0.48828125,0.5068359375,0.484375,0.4453125,0.421875,0.4404296875,0.5,0.5546875,0.5537109375,0.4970703125,0.4169921875,0.361328125,0.36328125,0.419921875,0.478515625,0.48828125,0.44921875,0.3896484375,0.3505859375,0.361328125,0.419921875,0.5009765625,0.6123046875,0.7119140625,0.751953125,0.720703125,0.6455078125,0.5693359375,0.486328125,0.376953125,0.28125,0.2470703125,0.2841796875,0.36328125,0.439453125,0.5126953125,0.58203125,0.625,0.6298828125,0.60546875,0.578125,0.5693359375,0.576171875,0.607421875,0.64453125,0.658203125,0.6337890625,0.5771484375,0.509765625,0.44140625,0.3828125,0.3544921875,0.365234375,0.400390625,0.431640625,0.439453125,0.4326171875,0.40625,0.380859375,0.3828125,0.4228515625,0.48828125,0.5595703125,0.634765625,0.7119140625,0.75,0.71875,0.626953125,0.5205078125,0.439453125,0.3642578125,0.287109375,0.25,0.283203125,0.3779296875,0.486328125,0.5693359375,0.6455078125,0.720703125,0.751953125,0.7119140625,0.6123046875,0.5009765625,0.419921875,0.3525390625,0.3046875,0.296875,0.3330078125,0.3896484375,0.4306640625,0.439453125,0.4287109375,0.3876953125,0.3359375,0.30859375,0.322265625,0.373046875,0.439453125,0.509765625,0.576171875,0.619140625,0.625,0.6025390625,0.5771484375,0.5693359375,0.564453125,0.544921875,0.5107421875,0.47265625,0.4404296875,0.4228515625,0.419921875,0.431640625,0.4833984375,0.5556640625,0.6083984375,0.6162109375,0.5751953125,0.509765625,0.4521484375,0.4482421875,0.498046875,0.5703125,0.62109375,0.6162109375,0.5595703125,0.4912109375,0.44140625,0.431640625,0.4658203125,0.5234375,0.5673828125,0.5791015625,0.58984375,0.6298828125,0.6787109375,0.7041015625,0.6884765625,0.63671875,0.5693359375,0.4912109375,0.390625,0.30859375,0.2861328125,0.33203125,0.4140625,0.4892578125,0.5654296875,0.6494140625,0.69921875,0.6806640625,0.599609375,0.4990234375,0.419921875,0.36328125,0.3623046875,0.41796875,0.4970703125,0.55078125,0.5478515625,0.4892578125,0.41015625,0.3193359375,0.2587890625,0.2646484375,0.3359375,0.4306640625,0.509765625,0.5869140625,0.6767578125,0.7373046875,0.7314453125,0.662109375,0.568359375,0.4892578125,0.4296875,0.4130859375,0.44140625,0.4873046875,0.515625,0.4990234375,0.439453125,0.361328125,0.2685546875,0.2021484375,0.201171875,0.2666015625,0.3603515625,0.439453125,0.521484375,0.6240234375,0.7060546875,0.724609375,0.6728515625,0.587890625,0.509765625,0.427734375,0.32421875,0.23828125,0.2158203125,0.26171875,0.34375,0.419921875,0.4912109375,0.5615234375,0.609375,0.6201171875,0.6005859375,0.5771484375,0.5693359375,0.576171875,0.607421875,0.64453125,0.658203125,0.6337890625,0.5771484375,0.509765625,0.43359375,0.34375,0.2802734375,0.2802734375,0.34375,0.43359375,0.509765625,0.564453125,0.5625,0.5029296875,0.4208984375,0.3623046875,0.36328125,0.419921875,0.5,0.603515625,0.6904296875,0.71484375,0.6689453125,0.5869140625,0.509765625,0.4296875,0.3349609375,0.2666015625,0.2626953125,0.32421875,0.4130859375,0.4892578125,0.544921875,0.548828125,0.498046875,0.42578125,0.376953125,0.3818359375,0.439453125,0.5,0.517578125,0.4921875,0.451171875,0.427734375,0.4482421875,0.509765625,0.5888671875,0.6826171875,0.748046875,0.7470703125,0.6806640625,0.587890625,0.509765625,0.431640625,0.3408203125,0.27734375,0.27734375,0.3427734375,0.43359375,0.509765625,0.587890625,0.6875,0.76953125,0.7890625,0.740234375,0.6572265625,0.5791015625,0.515625,0.4873046875,0.494140625,0.5146484375,0.521484375,0.4931640625,0.4296875,0.37109375,0.3671875,0.419921875,0.498046875,0.5546875,0.5546875,0.5,0.4345703125,0.392578125,0.39453125,0.4404296875,0.50390625,0.5498046875,0.5595703125,0.5458984375,0.49609375,0.4287109375,0.3837890625,0.384765625,0.4306640625,0.5,0.5771484375,0.662109375,0.712890625,0.6962890625,0.6162109375,0.517578125,0.439453125,0.3857421875,0.392578125,0.4619140625,0.556640625,0.6259765625,0.6328125,0.5791015625,0.5205078125,0.5,0.5205078125,0.5576171875,0.578125,0.55859375,0.5,0.4228515625,0.33203125,0.2666015625,0.263671875,0.3251953125,0.4140625,0.4892578125,0.5546875,0.599609375,0.6025390625,0.5615234375,0.4990234375,0.4521484375,0.439453125,0.4287109375,0.3857421875,0.3330078125,0.3017578125,0.3134765625,0.36328125,0.4296875,0.5078125,0.60546875,0.6845703125,0.703125,0.6552734375,0.57421875,0.5,0.4443359375,0.4453125,0.501953125,0.58203125,0.6376953125,0.6357421875,0.5791015625,0.4990234375,0.396484375,0.3115234375,0.287109375,0.3330078125,0.4140625,0.4892578125,0.5498046875,0.568359375,0.544921875,0.50390625,0.48046875,0.4990234375,0.5595703125,0.6357421875,0.720703125,0.7734375,0.759765625,0.68359375,0.5869140625,0.509765625,0.4521484375,0.4404296875,0.4755859375,0.529296875,0.5625,0.548828125,0.4892578125,0.431640625,0.423828125,0.466796875,0.5322265625,0.5751953125,0.5673828125,0.509765625,0.439453125,0.3759765625,0.341796875,0.3466796875,0.3798828125,0.41015625,0.419921875,0.4248046875,0.4453125,0.48046875,0.51953125,0.5517578125,0.5673828125,0.5693359375,0.5751953125,0.6044921875,0.63671875,0.6455078125,0.6162109375,0.5576171875,0.4892578125,0.412109375,0.3134765625,0.234375,0.2158203125,0.263671875,0.345703125,0.419921875,0.4892578125,0.556640625,0.6005859375,0.6083984375,0.5888671875,0.5654296875,0.5595703125,0.5595703125,0.5625,0.56640625,0.572265625,0.576171875,0.5791015625,0.5791015625,0.576171875,0.560546875,0.5302734375,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.65234375,0.58203125,0.4951171875,0.4345703125,0.419921875,0.421875,0.44140625,0.4775390625,0.521484375,0.5576171875,0.5771484375,0.5791015625,0.583984375,0.607421875,0.6298828125,0.6240234375,0.5810546875,0.5126953125,0.439453125,0.3701171875,0.3173828125,0.3046875,0.3349609375,0.3876953125,0.4296875,0.439453125,0.4326171875,0.408203125,0.3857421875,0.392578125,0.4365234375,0.505859375,0.5791015625,0.6455078125,0.6796875,0.6611328125,0.5927734375,0.5087890625,0.451171875,0.439453125,0.44140625,0.44140625,0.4404296875,0.439453125,0.4384765625,0.4384765625,0.439453125,0.453125,0.5029296875,0.5712890625,0.6181640625,0.6201171875,0.576171875,0.509765625,0.439453125,0.376953125,0.34375,0.3505859375,0.3818359375,0.412109375,0.419921875,0.4130859375,0.388671875,0.3662109375,0.3720703125,0.4169921875,0.486328125,0.5595703125,0.6181640625,0.62109375,0.5673828125,0.4912109375,0.4375,0.44140625,0.5,0.560546875,0.5791015625,0.5517578125,0.5068359375,0.48046875,0.498046875,0.5595703125,0.6201171875,0.6337890625,0.599609375,0.544921875,0.5087890625,0.5205078125,0.5791015625,0.6533203125,0.7255859375,0.755859375,0.7138671875,0.6123046875,0.5009765625,0.419921875,0.3447265625,0.2685546875,0.2333984375,0.26953125,0.3662109375,0.4765625,0.5595703125,0.6259765625,0.6611328125,0.6435546875,0.576171875,0.4912109375,0.4326171875,0.419921875,0.431640625,0.484375,0.5576171875,0.6123046875,0.619140625,0.5771484375,0.509765625,0.4404296875,0.3935546875,0.3896484375,0.4326171875,0.498046875,0.546875,0.5595703125,0.5478515625,0.4912109375,0.408203125,0.3408203125,0.322265625,0.35546875,0.419921875,0.5009765625,0.609375,0.7060546875,0.7431640625,0.708984375,0.6337890625,0.5595703125,0.478515625,0.3701171875,0.275390625,0.2392578125,0.2734375,0.3466796875,0.419921875,0.5,0.609375,0.7099609375,0.7529296875,0.724609375,0.6533203125,0.5791015625,0.5107421875,0.45703125,0.4404296875,0.466796875,0.517578125,0.55859375,0.5693359375,0.5615234375,0.5244140625,0.4755859375,0.44921875,0.462890625,0.5126953125,0.5791015625,0.642578125,0.673828125,0.65234375,0.58203125,0.4951171875,0.4345703125,0.419921875,0.421875,0.44140625,0.4775390625,0.521484375,0.5576171875,0.5771484375,0.5791015625,0.5849609375,0.6142578125,0.6474609375,0.6552734375,0.6259765625,0.5673828125,0.5,0.4404296875,0.421875,0.4453125,0.484375,0.5068359375,0.48828125,0.4296875,0.36328125,0.3115234375,0.296875,0.3232421875,0.3720703125,0.41015625,0.419921875,0.4296875,0.47265625,0.529296875,0.564453125,0.556640625,0.5078125,0.439453125,0.36328125,0.2802734375,0.23046875,0.2490234375,0.3291015625,0.4296875,0.509765625,0.5888671875,0.6865234375,0.7626953125,0.7763671875,0.7216796875,0.6357421875,0.5595703125,0.5,0.4833984375,0.51171875,0.5576171875,0.5859375,0.5693359375,0.509765625,0.431640625,0.33984375,0.2744140625,0.2744140625,0.33984375,0.431640625,0.509765625,0.5869140625,0.6796875,0.744140625,0.744140625,0.6796875,0.5869140625,0.509765625,0.453125,0.451171875,0.505859375,0.5830078125,0.6376953125,0.6357421875,0.5791015625,0.5009765625,0.4091796875,0.3447265625,0.3447265625,0.4091796875,0.5009765625,0.5791015625,0.6552734375,0.7373046875,0.783203125,0.7607421875,0.6748046875,0.5712890625,0.4892578125,0.412109375,0.330078125,0.283203125,0.3056640625,0.3896484375,0.4912109375,0.5693359375,0.6318359375,0.6640625,0.6435546875,0.5751953125,0.490234375,0.4326171875,0.419921875,0.431640625,0.4833984375,0.5556640625,0.6083984375,0.6162109375,0.5751953125,0.509765625,0.431640625,0.33984375,0.2744140625,0.2744140625,0.33984375,0.431640625,0.509765625,0.568359375,0.583984375,0.5546875,0.5078125,0.48046875,0.498046875,0.5595703125,0.6376953125,0.72265625,0.7744140625,0.755859375,0.673828125,0.5712890625,0.4892578125,0.41015625,0.3193359375,0.2587890625,0.2646484375,0.3359375,0.4306640625,0.509765625,0.5693359375,0.5859375,0.55859375,0.5146484375,0.4892578125,0.5078125,0.5693359375,0.6279296875,0.6298828125,0.572265625,0.4912109375,0.43359375,0.43359375,0.4892578125,0.5673828125,0.658203125,0.7216796875,0.7216796875,0.65625,0.5654296875,0.4892578125,0.4140625,0.326171875,0.267578125,0.2724609375,0.3408203125,0.4326171875,0.509765625,0.5830078125,0.662109375,0.7060546875,0.6826171875,0.5986328125,0.498046875,0.419921875,0.3662109375,0.3740234375,0.4443359375,0.5400390625,0.609375,0.6142578125,0.5595703125,0.5,0.4833984375,0.51171875,0.5576171875,0.5859375,0.5693359375,0.509765625,0.4404296875,0.380859375,0.353515625,0.3662109375,0.40234375,0.43359375,0.439453125,0.4296875,0.396484375,0.3583984375,0.345703125,0.373046875,0.431640625,0.5,0.5771484375,0.673828125,0.7509765625,0.7666015625,0.716796875,0.6337890625,0.5595703125,0.4990234375,0.4716796875,0.4794921875,0.5,0.5068359375,0.48046875,0.419921875,0.365234375,0.365234375,0.421875,0.4990234375,0.552734375,0.5478515625,0.4892578125,0.41015625,0.3193359375,0.2578125,0.26171875,0.330078125,0.4228515625,0.5,0.568359375,0.6279296875,0.658203125,0.650390625,0.6171875,0.5869140625,0.5791015625,0.5693359375,0.5283203125,0.4765625,0.447265625,0.4599609375,0.5107421875,0.5791015625,0.6552734375,0.73828125,0.787109375,0.7666015625,0.68359375,0.5810546875,0.5,0.4375,0.4169921875,0.4384765625,0.4794921875,0.5048828125,0.48828125,0.4296875,0.3544921875,0.2705078125,0.2177734375,0.2314453125,0.3095703125,0.4091796875,0.4892578125,0.5478515625,0.5517578125,0.498046875,0.421875,0.3681640625,0.37109375,0.4296875,0.5107421875,0.6142578125,0.697265625,0.7177734375,0.6689453125,0.5859375,0.509765625,0.451171875,0.4384765625,0.474609375,0.529296875,0.564453125,0.5498046875,0.4892578125,0.4296875,0.4189453125,0.458984375,0.51953125,0.5595703125,0.5498046875,0.4892578125,0.4208984375,0.3759765625,0.376953125,0.42578125,0.4951171875,0.5458984375,0.5595703125,0.55859375,0.544921875,0.5185546875,0.486328125,0.4580078125,0.4423828125,0.439453125,0.4501953125,0.49609375,0.55859375,0.6005859375,0.5986328125,0.5546875,0.4892578125,0.4150390625,0.3330078125,0.283203125,0.30078125,0.380859375,0.48046875,0.5595703125,0.6240234375,0.658203125,0.640625,0.57421875,0.490234375,0.4326171875,0.419921875,0.4208984375,0.423828125,0.4296875,0.435546875,0.439453125,0.4404296875,0.439453125,0.44140625,0.455078125,0.4833984375,0.6572265625,0.5478515625,0.4306640625,0.3505859375,0.3251953125,0.3251953125,0.3662109375,0.44921875,0.5498046875,0.6328125,0.673828125,0.673828125,0.66796875,0.671875,0.6689453125,0.638671875,0.5791015625,0.5029296875,0.4287109375,0.359375,0.306640625,0.2939453125,0.32421875,0.376953125,0.4189453125,0.4287109375,0.4248046875,0.4130859375,0.4140625,0.4482421875,0.515625,0.59765625,0.673828125,0.736328125,0.7529296875,0.7041015625,0.6044921875,0.498046875,0.4345703125,0.4287109375,0.4375,0.439453125,0.43359375,0.4248046875,0.4189453125,0.419921875,0.4287109375,0.4501953125,0.5087890625,0.5830078125,0.6376953125,0.6455078125,0.609375,0.55078125,0.486328125,0.4140625,0.3525390625,0.318359375,0.314453125,0.322265625,0.3251953125,0.3212890625,0.3095703125,0.310546875,0.3447265625,0.412109375,0.494140625,0.5703125,0.6279296875,0.6298828125,0.57421875,0.4951171875,0.439453125,0.44140625,0.5,0.560546875,0.580078125,0.5556640625,0.513671875,0.4892578125,0.5087890625,0.5703125,0.6337890625,0.6630859375,0.6533203125,0.625,0.60546875,0.62109375,0.673828125,0.7333984375,0.771484375,0.7509765625,0.6591796875,0.5244140625,0.40234375,0.3251953125,0.26171875,0.205078125,0.1943359375,0.2548828125,0.3681640625,0.486328125,0.5703125,0.6337890625,0.6572265625,0.615234375,0.5205078125,0.4130859375,0.3408203125,0.3251953125,0.3408203125,0.41015625,0.513671875,0.603515625,0.640625,0.615234375,0.55078125,0.48046875,0.423828125,0.4072265625,0.4384765625,0.498046875,0.5498046875,0.5703125,0.5654296875,0.5078125,0.41015625,0.314453125,0.263671875,0.2734375,0.3251953125,0.3994140625,0.509765625,0.62109375,0.685546875,0.68359375,0.6328125,0.5703125,0.498046875,0.3935546875,0.2900390625,0.2294921875,0.23046875,0.2734375,0.3251953125,0.3916015625,0.5068359375,0.6396484375,0.736328125,0.7646484375,0.732421875,0.673828125,0.611328125,0.5537109375,0.5234375,0.53125,0.5673828125,0.6044921875,0.6220703125,0.6259765625,0.6103515625,0.5859375,0.5732421875,0.5869140625,0.6240234375,0.673828125,0.7158203125,0.7177734375,0.6572265625,0.5478515625,0.4306640625,0.3505859375,0.3251953125,0.3251953125,0.3662109375,0.44921875,0.5498046875,0.6328125,0.673828125,0.673828125,0.666015625,0.6669921875,0.6640625,0.64453125,0.6044921875,0.5517578125,0.5,0.4541015625,0.431640625,0.4326171875,0.443359375,0.4453125,0.4228515625,0.376953125,0.326171875,0.283203125,0.26171875,0.26953125,0.296875,0.3193359375,0.3251953125,0.3369140625,0.384765625,0.453125,0.5068359375,0.5185546875,0.486328125,0.4287109375,0.36328125,0.2978515625,0.2685546875,0.30078125,0.384765625,0.48046875,0.55078125,0.6201171875,0.7021484375,0.763671875,0.7685546875,0.7158203125,0.6376953125,0.5703125,0.5185546875,0.5068359375,0.537109375,0.583984375,0.6142578125,0.6025390625,0.55078125,0.4833984375,0.40234375,0.345703125,0.345703125,0.40234375,0.4833984375,0.55078125,0.619140625,0.7001953125,0.7568359375,0.7568359375,0.7001953125,0.619140625,0.55078125,0.5029296875,0.5087890625,0.5703125,0.654296875,0.7158203125,0.7216796875,0.673828125,0.60546875,0.5244140625,0.4677734375,0.4677734375,0.5244140625,0.60546875,0.673828125,0.7373046875,0.796875,0.8115234375,0.755859375,0.646484375,0.53125,0.4482421875,0.375,0.314453125,0.3017578125,0.3564453125,0.4580078125,0.55859375,0.6220703125,0.6640625,0.666015625,0.609375,0.5087890625,0.4052734375,0.33984375,0.3251953125,0.33984375,0.40234375,0.498046875,0.583984375,0.623046875,0.60546875,0.55078125,0.4833984375,0.40234375,0.345703125,0.345703125,0.40234375,0.4833984375,0.55078125,0.6015625,0.6064453125,0.5693359375,0.517578125,0.4892578125,0.5087890625,0.5703125,0.646484375,0.7265625,0.765625,0.7333984375,0.6396484375,0.5302734375,0.4482421875,0.3720703125,0.296875,0.2607421875,0.2919921875,0.3798828125,0.4794921875,0.55078125,0.6025390625,0.6142578125,0.587890625,0.5498046875,0.533203125,0.55859375,0.6220703125,0.6787109375,0.6748046875,0.603515625,0.5009765625,0.419921875,0.40234375,0.4482421875,0.5146484375,0.5888671875,0.638671875,0.6337890625,0.5791015625,0.505859375,0.4482421875,0.3935546875,0.3388671875,0.314453125,0.341796875,0.4130859375,0.4921875,0.55078125,0.6025390625,0.642578125,0.6396484375,0.5791015625,0.4814453125,0.3876953125,0.3251953125,0.2900390625,0.318359375,0.4091796875,0.521484375,0.6025390625,0.6171875,0.5703125,0.5185546875,0.5068359375,0.537109375,0.583984375,0.6142578125,0.6025390625,0.55078125,0.490234375,0.4365234375,0.4052734375,0.4033203125,0.419921875,0.43359375,0.4287109375,0.4130859375,0.384765625,0.3603515625,0.3623046875,0.39453125,0.447265625,0.5,0.5576171875,0.6328125,0.6962890625,0.71484375,0.68359375,0.625,0.5703125,0.521484375,0.484375,0.458984375,0.4375,0.4111328125,0.3740234375,0.3251953125,0.2890625,0.30859375,0.3798828125,0.4638671875,0.515625,0.5078125,0.4482421875,0.3720703125,0.296875,0.2568359375,0.279296875,0.353515625,0.4384765625,0.5,0.552734375,0.611328125,0.66015625,0.6845703125,0.6845703125,0.6767578125,0.673828125,0.6650390625,0.62890625,0.5830078125,0.5576171875,0.5693359375,0.61328125,0.673828125,0.7392578125,0.8046875,0.830078125,0.7890625,0.69140625,0.58203125,0.5,0.43359375,0.396484375,0.3935546875,0.4130859375,0.4296875,0.419921875,0.376953125,0.3193359375,0.2490234375,0.2021484375,0.2119140625,0.2783203125,0.369140625,0.4482421875,0.505859375,0.5078125,0.4521484375,0.373046875,0.3173828125,0.3193359375,0.376953125,0.4599609375,0.5693359375,0.6669921875,0.7080078125,0.6826171875,0.6171875,0.55078125,0.4990234375,0.4833984375,0.501953125,0.53125,0.541015625,0.51171875,0.4482421875,0.3876953125,0.376953125,0.41796875,0.478515625,0.5185546875,0.5078125,0.4482421875,0.3798828125,0.3359375,0.341796875,0.400390625,0.4833984375,0.546875,0.5703125,0.5771484375,0.5673828125,0.5380859375,0.49609375,0.45703125,0.43359375,0.4287109375,0.4365234375,0.46875,0.5107421875,0.537109375,0.5322265625,0.4970703125,0.4482421875,0.392578125,0.3349609375,0.306640625,0.3349609375,0.4111328125,0.5,0.5703125,0.6240234375,0.6396484375,0.595703125,0.505859375,0.4052734375,0.33984375,0.3251953125,0.3291015625,0.34765625,0.37890625,0.41015625,0.431640625,0.4365234375,0.4287109375,0.423828125,0.439453125,0.4765625,0.6376953125,0.513671875,0.38671875,0.298828125,0.2587890625,0.248046875,0.302734375,0.4248046875,0.57421875,0.6962890625,0.7509765625,0.740234375,0.7177734375,0.7080078125,0.6953125,0.666015625,0.611328125,0.5419921875,0.46875,0.3994140625,0.3466796875,0.333984375,0.3642578125,0.41796875,0.458984375,0.46875,0.4658203125,0.45703125,0.4638671875,0.5048828125,0.5791015625,0.6640625,0.740234375,0.7998046875,0.8037109375,0.7373046875,0.6240234375,0.5146484375,0.4599609375,0.46875,0.4912109375,0.4951171875,0.48046875,0.4580078125,0.443359375,0.447265625,0.46875,0.50390625,0.56640625,0.6357421875,0.6787109375,0.681640625,0.6494140625,0.6044921875,0.552734375,0.4775390625,0.3916015625,0.3193359375,0.2763671875,0.2607421875,0.2587890625,0.2548828125,0.24609375,0.25390625,0.294921875,0.3681640625,0.4541015625,0.5302734375,0.5888671875,0.595703125,0.548828125,0.48046875,0.43359375,0.4404296875,0.5,0.5595703125,0.57421875,0.541015625,0.48828125,0.455078125,0.4697265625,0.5302734375,0.5986328125,0.6494140625,0.67578125,0.6826171875,0.6845703125,0.701171875,0.740234375,0.779296875,0.7802734375,0.71484375,0.587890625,0.4384765625,0.3203125,0.2587890625,0.2109375,0.1689453125,0.16796875,0.228515625,0.3359375,0.447265625,0.5302734375,0.59375,0.61328125,0.5654296875,0.4638671875,0.349609375,0.275390625,0.2587890625,0.27734375,0.3603515625,0.4912109375,0.61328125,0.6767578125,0.666015625,0.6044921875,0.529296875,0.4521484375,0.4033203125,0.40234375,0.4443359375,0.49609375,0.5302734375,0.54296875,0.5029296875,0.4140625,0.3115234375,0.240234375,0.224609375,0.2587890625,0.3154296875,0.408203125,0.5107421875,0.58203125,0.6005859375,0.57421875,0.5302734375,0.4765625,0.3994140625,0.31640625,0.2568359375,0.2333984375,0.240234375,0.2587890625,0.294921875,0.3935546875,0.5380859375,0.6767578125,0.76171875,0.775390625,0.740234375,0.689453125,0.62890625,0.5771484375,0.5576171875,0.572265625,0.60546875,0.634765625,0.66015625,0.681640625,0.6953125,0.7041015625,0.7119140625,0.72265625,0.740234375,0.7509765625,0.7216796875,0.6376953125,0.513671875,0.38671875,0.298828125,0.2587890625,0.248046875,0.302734375,0.4248046875,0.57421875,0.6962890625,0.7509765625,0.740234375,0.7119140625,0.673828125,0.6298828125,0.5849609375,0.5478515625,0.51953125,0.5,0.48046875,0.4609375,0.44140625,0.421875,0.40234375,0.3828125,0.3642578125,0.3427734375,0.31640625,0.2900390625,0.26953125,0.2607421875,0.2587890625,0.2587890625,0.2705078125,0.322265625,0.40234375,0.4775390625,0.515625,0.5087890625,0.46875,0.421875,0.37890625,0.3671875,0.40234375,0.4755859375,0.55078125,0.6044921875,0.6533203125,0.7041015625,0.7294921875,0.708984375,0.650390625,0.58203125,0.5302734375,0.494140625,0.49609375,0.5380859375,0.5966796875,0.638671875,0.640625,0.6044921875,0.5546875,0.4951171875,0.4521484375,0.4521484375,0.4951171875,0.5546875,0.6044921875,0.6552734375,0.71484375,0.7568359375,0.7568359375,0.71484375,0.6552734375,0.6044921875,0.5703125,0.580078125,0.6357421875,0.708984375,0.7646484375,0.7744140625,0.740234375,0.689453125,0.6298828125,0.587890625,0.587890625,0.6298828125,0.689453125,0.740234375,0.7861328125,0.8193359375,0.8037109375,0.7236328125,0.599609375,0.478515625,0.39453125,0.3271484375,0.29296875,0.3193359375,0.4052734375,0.5166015625,0.6005859375,0.634765625,0.64453125,0.61328125,0.5322265625,0.4248046875,0.3271484375,0.2705078125,0.2587890625,0.2734375,0.341796875,0.4521484375,0.5634765625,0.6318359375,0.640625,0.6044921875,0.5546875,0.4951171875,0.4521484375,0.4521484375,0.4951171875,0.5546875,0.6044921875,0.63671875,0.619140625,0.5576171875,0.48828125,0.451171875,0.4677734375,0.5302734375,0.6064453125,0.6845703125,0.720703125,0.6845703125,0.587890625,0.4775390625,0.39453125,0.3232421875,0.26953125,0.26953125,0.3369140625,0.4453125,0.5458984375,0.6044921875,0.6396484375,0.634765625,0.5966796875,0.5546875,0.541015625,0.5703125,0.634765625,0.6923828125,0.689453125,0.615234375,0.501953125,0.4033203125,0.3662109375,0.39453125,0.44140625,0.4853515625,0.5078125,0.4970703125,0.458984375,0.4189453125,0.39453125,0.3779296875,0.37890625,0.408203125,0.4638671875,0.5283203125,0.5791015625,0.6044921875,0.6171875,0.6005859375,0.541015625,0.44921875,0.3544921875,0.2880859375,0.2587890625,0.2529296875,0.298828125,0.3896484375,0.48828125,0.5546875,0.5654296875,0.5302734375,0.494140625,0.49609375,0.5380859375,0.5966796875,0.638671875,0.640625,0.6044921875,0.5615234375,0.5263671875,0.5078125,0.501953125,0.5009765625,0.4912109375,0.46875,0.44140625,0.4150390625,0.40234375,0.4140625,0.443359375,0.4765625,0.5,0.521484375,0.5498046875,0.57421875,0.58203125,0.5712890625,0.5498046875,0.5302734375,0.5078125,0.4716796875,0.421875,0.3662109375,0.31640625,0.28125,0.2587890625,0.25390625,0.2978515625,0.3779296875,0.4521484375,0.4833984375,0.4580078125,0.39453125,0.32421875,0.2734375,0.26953125,0.3203125,0.400390625,0.46875,0.5,0.5234375,0.56640625,0.6240234375,0.6796875,0.71875,0.7373046875,0.740234375,0.7333984375,0.70703125,0.673828125,0.654296875,0.6630859375,0.6962890625,0.740234375,0.7880859375,0.833984375,0.8427734375,0.7900390625,0.689453125,0.5810546875,0.5,0.4296875,0.37109375,0.341796875,0.3447265625,0.3642578125,0.3759765625,0.3642578125,0.3359375,0.2841796875,0.234375,0.2197265625,0.25390625,0.3212890625,0.39453125,0.453125,0.4609375,0.4140625,0.3447265625,0.2978515625,0.3046875,0.3642578125,0.4453125,0.5537109375,0.654296875,0.70703125,0.6982421875,0.6533203125,0.6044921875,0.5654296875,0.548828125,0.546875,0.541015625,0.5146484375,0.462890625,0.39453125,0.3349609375,0.32421875,0.3642578125,0.4248046875,0.46484375,0.4541015625,0.39453125,0.32421875,0.2724609375,0.2705078125,0.3251953125,0.4140625,0.4912109375,0.5302734375,0.5537109375,0.56640625,0.5576171875,0.5302734375,0.4970703125,0.474609375,0.46875,0.4697265625,0.4716796875,0.4697265625,0.4580078125,0.4375,0.4150390625,0.39453125,0.373046875,0.3486328125,0.341796875,0.3662109375,0.4189453125,0.4794921875,0.5302734375,0.5673828125,0.568359375,0.515625,0.4248046875,0.3310546875,0.271484375,0.2587890625,0.267578125,0.30859375,0.375,0.44140625,0.4833984375,0.490234375,0.46875,0.4482421875,0.4521484375,0.48046875,0.59375,0.494140625,0.392578125,0.3115234375,0.2587890625,0.232421875,0.2841796875,0.4169921875,0.58203125,0.71484375,0.7666015625,0.740234375,0.701171875,0.6845703125,0.6826171875,0.67578125,0.6494140625,0.5986328125,0.5302734375,0.4599609375,0.4072265625,0.39453125,0.4248046875,0.478515625,0.51953125,0.5302734375,0.5244140625,0.5087890625,0.501953125,0.52734375,0.587890625,0.6650390625,0.740234375,0.798828125,0.798828125,0.7314453125,0.626953125,0.53515625,0.5009765625,0.5302734375,0.5673828125,0.57421875,0.548828125,0.5107421875,0.4853515625,0.4921875,0.5302734375,0.580078125,0.6416015625,0.6923828125,0.712890625,0.697265625,0.6640625,0.634765625,0.6005859375,0.53515625,0.447265625,0.3583984375,0.2939453125,0.263671875,0.2587890625,0.25390625,0.2373046875,0.2314453125,0.2568359375,0.31640625,0.39453125,0.46875,0.529296875,0.5439453125,0.5107421875,0.4580078125,0.4248046875,0.439453125,0.5,0.55859375,0.5654296875,0.5185546875,0.4501953125,0.4033203125,0.41015625,0.46875,0.5419921875,0.611328125,0.666015625,0.6953125,0.7080078125,0.7177734375,0.740234375,0.7578125,0.734375,0.6513671875,0.5244140625,0.392578125,0.2998046875,0.2587890625,0.228515625,0.1923828125,0.181640625,0.2177734375,0.2978515625,0.390625,0.46875,0.5341796875,0.560546875,0.52734375,0.44140625,0.3408203125,0.2734375,0.2587890625,0.27734375,0.365234375,0.501953125,0.6318359375,0.703125,0.6962890625,0.634765625,0.5546875,0.4560546875,0.3720703125,0.33984375,0.3642578125,0.4189453125,0.46875,0.5048828125,0.4970703125,0.4384765625,0.3525390625,0.27734375,0.244140625,0.2587890625,0.29296875,0.353515625,0.4248046875,0.48046875,0.5029296875,0.4931640625,0.46875,0.44140625,0.4072265625,0.3701171875,0.3330078125,0.302734375,0.2783203125,0.2587890625,0.255859375,0.3154296875,0.4384765625,0.5849609375,0.7021484375,0.751953125,0.740234375,0.705078125,0.642578125,0.57421875,0.5302734375,0.5283203125,0.5595703125,0.6044921875,0.654296875,0.71484375,0.767578125,0.7919921875,0.78515625,0.76171875,0.740234375,0.716796875,0.6708984375,0.59375,0.494140625,0.392578125,0.3115234375,0.2587890625,0.232421875,0.2841796875,0.4169921875,0.58203125,0.71484375,0.7666015625,0.740234375,0.6875,0.6142578125,0.5380859375,0.4853515625,0.4697265625,0.48046875,0.5,0.5126953125,0.5029296875,0.46875,0.4248046875,0.390625,0.380859375,0.39453125,0.41015625,0.4072265625,0.3798828125,0.3369140625,0.2919921875,0.2646484375,0.2587890625,0.2685546875,0.3173828125,0.3974609375,0.48046875,0.53515625,0.548828125,0.5302734375,0.5029296875,0.4814453125,0.48046875,0.5078125,0.5556640625,0.603515625,0.634765625,0.66015625,0.6748046875,0.662109375,0.619140625,0.556640625,0.501953125,0.46875,0.451171875,0.466796875,0.5185546875,0.5849609375,0.63671875,0.6533203125,0.634765625,0.60546875,0.5712890625,0.546875,0.546875,0.5712890625,0.60546875,0.634765625,0.6640625,0.69921875,0.7236328125,0.7236328125,0.69921875,0.6640625,0.634765625,0.615234375,0.6240234375,0.662109375,0.712890625,0.7509765625,0.759765625,0.740234375,0.7109375,0.67578125,0.6513671875,0.6513671875,0.67578125,0.7109375,0.740234375,0.7666015625,0.7822265625,0.7568359375,0.6767578125,0.5595703125,0.4462890625,0.3642578125,0.302734375,0.2900390625,0.3447265625,0.447265625,0.55078125,0.607421875,0.6044921875,0.578125,0.5224609375,0.44140625,0.3583984375,0.294921875,0.2646484375,0.2587890625,0.271484375,0.33203125,0.435546875,0.546875,0.6259765625,0.65234375,0.634765625,0.60546875,0.5712890625,0.546875,0.546875,0.5712890625,0.60546875,0.634765625,0.646484375,0.6044921875,0.5185546875,0.43359375,0.3896484375,0.4072265625,0.46875,0.546875,0.6279296875,0.6708984375,0.6435546875,0.552734375,0.4462890625,0.3642578125,0.296875,0.26171875,0.2900390625,0.3798828125,0.4990234375,0.5927734375,0.634765625,0.650390625,0.6240234375,0.568359375,0.5185546875,0.505859375,0.5390625,0.6044921875,0.6650390625,0.6728515625,0.61328125,0.5078125,0.4052734375,0.353515625,0.3642578125,0.38671875,0.3955078125,0.3857421875,0.3671875,0.3505859375,0.349609375,0.3642578125,0.3916015625,0.44921875,0.52734375,0.5986328125,0.6416015625,0.6494140625,0.634765625,0.60546875,0.5341796875,0.4326171875,0.333984375,0.267578125,0.2470703125,0.2587890625,0.2861328125,0.3408203125,0.4111328125,0.4697265625,0.4970703125,0.4921875,0.46875,0.451171875,0.466796875,0.5185546875,0.5849609375,0.63671875,0.6533203125,0.634765625,0.61328125,0.607421875,0.61328125,0.615234375,0.603515625,0.572265625,0.5302734375,0.4873046875,0.4619140625,0.4609375,0.48046875,0.50390625,0.5126953125,0.5,0.4775390625,0.44921875,0.4248046875,0.4169921875,0.427734375,0.44921875,0.46875,0.48046875,0.45703125,0.3994140625,0.328125,0.2705078125,0.248046875,0.2587890625,0.2900390625,0.3583984375,0.4384765625,0.48828125,0.484375,0.43359375,0.3642578125,0.2998046875,0.275390625,0.306640625,0.3798828125,0.4609375,0.5048828125,0.5,0.486328125,0.501953125,0.5517578125,0.6240234375,0.69140625,0.7314453125,0.740234375,0.736328125,0.720703125,0.701171875,0.6904296875,0.6953125,0.71484375,0.740234375,0.7705078125,0.8017578125,0.806640625,0.76171875,0.67578125,0.578125,0.5,0.4248046875,0.3486328125,0.2978515625,0.2919921875,0.3251953125,0.3681640625,0.39453125,0.40234375,0.37109375,0.3134765625,0.267578125,0.259765625,0.2978515625,0.3642578125,0.4248046875,0.4384765625,0.4052734375,0.3525390625,0.3193359375,0.333984375,0.39453125,0.4736328125,0.5703125,0.6572265625,0.701171875,0.697265625,0.6650390625,0.634765625,0.61328125,0.6025390625,0.5908203125,0.560546875,0.5068359375,0.4365234375,0.3642578125,0.3046875,0.2939453125,0.333984375,0.39453125,0.4345703125,0.423828125,0.3642578125,0.2900390625,0.224609375,0.201171875,0.240234375,0.3251953125,0.4130859375,0.46875,0.5146484375,0.5556640625,0.5771484375,0.57421875,0.5537109375,0.53515625,0.5302734375,0.5234375,0.4921875,0.44140625,0.3896484375,0.35546875,0.349609375,0.3642578125,0.380859375,0.392578125,0.3994140625,0.408203125,0.4228515625,0.443359375,0.46875,0.490234375,0.4833984375,0.44140625,0.375,0.30859375,0.267578125,0.2587890625,0.271484375,0.3310546875,0.4248046875,0.515625,0.568359375,0.5673828125,0.5302734375,0.490234375,0.4765625,0.48828125,0.5390625,0.4951171875,0.443359375,0.38671875,0.3251953125,0.2822265625,0.3154296875,0.427734375,0.5712890625,0.68359375,0.716796875,0.673828125,0.62109375,0.60546875,0.625,0.6533203125,0.6630859375,0.6337890625,0.5703125,0.5,0.4482421875,0.4345703125,0.46484375,0.5185546875,0.5595703125,0.5703125,0.5625,0.533203125,0.5029296875,0.5,0.5361328125,0.6015625,0.673828125,0.732421875,0.736328125,0.6806640625,0.59765625,0.5322265625,0.5224609375,0.5703125,0.62109375,0.6298828125,0.595703125,0.5439453125,0.509765625,0.5185546875,0.5703125,0.6328125,0.689453125,0.7197265625,0.7119140625,0.67578125,0.638671875,0.6220703125,0.6044921875,0.5615234375,0.4931640625,0.4189453125,0.361328125,0.3310546875,0.3251953125,0.318359375,0.2890625,0.2587890625,0.255859375,0.2919921875,0.3564453125,0.4287109375,0.490234375,0.509765625,0.4853515625,0.443359375,0.4189453125,0.4384765625,0.5,0.5576171875,0.5595703125,0.50390625,0.4248046875,0.369140625,0.37109375,0.4287109375,0.5029296875,0.5791015625,0.638671875,0.6689453125,0.671875,0.66796875,0.673828125,0.6767578125,0.6484375,0.580078125,0.48828125,0.4013671875,0.345703125,0.3251953125,0.3076171875,0.271484375,0.2392578125,0.240234375,0.2841796875,0.35546875,0.4287109375,0.49609375,0.5361328125,0.5263671875,0.46875,0.392578125,0.337890625,0.3251953125,0.3427734375,0.419921875,0.5400390625,0.6484375,0.701171875,0.6845703125,0.6220703125,0.5390625,0.427734375,0.3251953125,0.279296875,0.30078125,0.3642578125,0.4287109375,0.484375,0.5107421875,0.4912109375,0.43359375,0.3671875,0.326171875,0.3251953125,0.33984375,0.3662109375,0.3984375,0.42578125,0.439453125,0.4384765625,0.4287109375,0.423828125,0.4326171875,0.4462890625,0.4443359375,0.419921875,0.3759765625,0.3251953125,0.28515625,0.296875,0.3720703125,0.490234375,0.6044921875,0.66796875,0.673828125,0.65234375,0.59375,0.5185546875,0.46484375,0.45703125,0.4931640625,0.55078125,0.62109375,0.7099609375,0.787109375,0.814453125,0.787109375,0.728515625,0.673828125,0.6240234375,0.580078125,0.5390625,0.4951171875,0.443359375,0.38671875,0.3251953125,0.2822265625,0.3154296875,0.427734375,0.5712890625,0.68359375,0.716796875,0.673828125,0.6025390625,0.5068359375,0.4189453125,0.376953125,0.3935546875,0.4453125,0.5,0.541015625,0.5419921875,0.501953125,0.4453125,0.4052734375,0.40625,0.4482421875,0.494140625,0.5166015625,0.4990234375,0.4453125,0.3798828125,0.3359375,0.3251953125,0.3330078125,0.3681640625,0.4306640625,0.5,0.552734375,0.57421875,0.5703125,0.5595703125,0.552734375,0.5546875,0.568359375,0.5888671875,0.609375,0.6220703125,0.62890625,0.619140625,0.5859375,0.53515625,0.482421875,0.4453125,0.4287109375,0.4248046875,0.4462890625,0.4951171875,0.5556640625,0.6044921875,0.6259765625,0.6220703125,0.6103515625,0.5966796875,0.5869140625,0.5869140625,0.5966796875,0.6103515625,0.6220703125,0.6328125,0.646484375,0.65625,0.65625,0.646484375,0.6328125,0.6220703125,0.6142578125,0.619140625,0.63671875,0.6591796875,0.67578125,0.6806640625,0.673828125,0.662109375,0.6484375,0.638671875,0.638671875,0.6484375,0.662109375,0.673828125,0.6865234375,0.7001953125,0.689453125,0.63671875,0.5498046875,0.455078125,0.376953125,0.318359375,0.3173828125,0.380859375,0.478515625,0.5615234375,0.5869140625,0.55078125,0.49609375,0.431640625,0.3720703125,0.333984375,0.3212890625,0.32421875,0.3251953125,0.333984375,0.3759765625,0.4501953125,0.5322265625,0.5966796875,0.625,0.6220703125,0.6103515625,0.5966796875,0.5869140625,0.5869140625,0.5966796875,0.6103515625,0.6220703125,0.6171875,0.5595703125,0.46484375,0.3798828125,0.341796875,0.365234375,0.4287109375,0.5078125,0.595703125,0.650390625,0.63671875,0.55859375,0.4580078125,0.376953125,0.3115234375,0.283203125,0.31640625,0.4072265625,0.5166015625,0.595703125,0.6220703125,0.6201171875,0.5771484375,0.509765625,0.45703125,0.4462890625,0.484375,0.55078125,0.615234375,0.640625,0.607421875,0.5263671875,0.4365234375,0.380859375,0.376953125,0.3798828125,0.3583984375,0.322265625,0.2958984375,0.2978515625,0.3291015625,0.376953125,0.439453125,0.5361328125,0.6376953125,0.703125,0.7099609375,0.6728515625,0.6220703125,0.55859375,0.455078125,0.341796875,0.263671875,0.2451171875,0.275390625,0.3251953125,0.37890625,0.4345703125,0.4755859375,0.4853515625,0.46875,0.443359375,0.4287109375,0.4248046875,0.4462890625,0.4951171875,0.5556640625,0.6044921875,0.6259765625,0.6220703125,0.619140625,0.640625,0.6728515625,0.689453125,0.6748046875,0.6298828125,0.5703125,0.515625,0.4921875,0.5029296875,0.5322265625,0.552734375,0.5419921875,0.5,0.44140625,0.3662109375,0.302734375,0.2841796875,0.3154296875,0.3740234375,0.4287109375,0.46875,0.4638671875,0.412109375,0.341796875,0.2900390625,0.28515625,0.3251953125,0.38671875,0.4716796875,0.5458984375,0.568359375,0.5283203125,0.453125,0.376953125,0.3173828125,0.3095703125,0.361328125,0.4453125,0.5166015625,0.5361328125,0.5,0.4541015625,0.4375,0.466796875,0.53515625,0.611328125,0.662109375,0.673828125,0.671875,0.666015625,0.658203125,0.6533203125,0.6552734375,0.6630859375,0.673828125,0.689453125,0.7177734375,0.734375,0.7138671875,0.654296875,0.5751953125,0.5,0.421875,0.3330078125,0.2705078125,0.265625,0.31640625,0.3896484375,0.4482421875,0.4853515625,0.47265625,0.4130859375,0.3427734375,0.3017578125,0.31640625,0.376953125,0.4384765625,0.4580078125,0.43359375,0.3916015625,0.3671875,0.38671875,0.4482421875,0.5234375,0.6025390625,0.662109375,0.6826171875,0.666015625,0.6376953125,0.6220703125,0.6162109375,0.6201171875,0.6171875,0.587890625,0.52734375,0.451171875,0.376953125,0.3173828125,0.306640625,0.3466796875,0.4072265625,0.4482421875,0.4375,0.376953125,0.2998046875,0.21875,0.1708984375,0.189453125,0.265625,0.3583984375,0.4287109375,0.4921875,0.5537109375,0.5966796875,0.6083984375,0.59375,0.5751953125,0.5703125,0.55859375,0.505859375,0.4248046875,0.3515625,0.318359375,0.33203125,0.376953125,0.4267578125,0.4638671875,0.4775390625,0.46484375,0.4404296875,0.4248046875,0.4287109375,0.4365234375,0.431640625,0.41015625,0.37890625,0.34765625,0.3291015625,0.3251953125,0.33984375,0.4052734375,0.505859375,0.595703125,0.6396484375,0.6240234375,0.5703125,0.515625,0.4892578125,0.4921875,0.494140625,0.5107421875,0.5126953125,0.482421875,0.419921875,0.365234375,0.3740234375,0.44921875,0.5498046875,0.625,0.6337890625,0.5791015625,0.5205078125,0.5087890625,0.544921875,0.599609375,0.6337890625,0.6201171875,0.5595703125,0.4892578125,0.4375,0.423828125,0.4541015625,0.5078125,0.5498046875,0.5595703125,0.5498046875,0.5107421875,0.4619140625,0.4365234375,0.4541015625,0.5087890625,0.5791015625,0.638671875,0.6484375,0.6044921875,0.5390625,0.494140625,0.501953125,0.5595703125,0.6181640625,0.6279296875,0.5888671875,0.529296875,0.490234375,0.5009765625,0.5595703125,0.6279296875,0.681640625,0.697265625,0.671875,0.62109375,0.580078125,0.5693359375,0.564453125,0.544921875,0.5107421875,0.47265625,0.4404296875,0.4228515625,0.419921875,0.41015625,0.37109375,0.322265625,0.296875,0.314453125,0.369140625,0.439453125,0.5009765625,0.5185546875,0.4921875,0.447265625,0.419921875,0.4384765625,0.5,0.5576171875,0.5615234375,0.5078125,0.431640625,0.3779296875,0.380859375,0.439453125,0.5126953125,0.5810546875,0.6240234375,0.6298828125,0.607421875,0.583984375,0.5791015625,0.5771484375,0.560546875,0.5263671875,0.484375,0.447265625,0.42578125,0.419921875,0.408203125,0.3681640625,0.3193359375,0.294921875,0.3134765625,0.369140625,0.439453125,0.5087890625,0.55859375,0.5673828125,0.5322265625,0.474609375,0.4306640625,0.419921875,0.43359375,0.4931640625,0.580078125,0.6494140625,0.669921875,0.6357421875,0.5693359375,0.486328125,0.3779296875,0.283203125,0.25,0.287109375,0.3642578125,0.439453125,0.5068359375,0.5546875,0.5625,0.5263671875,0.470703125,0.4287109375,0.419921875,0.421875,0.4267578125,0.4326171875,0.4375,0.4404296875,0.44140625,0.439453125,0.447265625,0.4833984375,0.529296875,0.5537109375,0.5380859375,0.486328125,0.419921875,0.357421875,0.3271484375,0.3515625,0.423828125,0.509765625,0.5673828125,0.5791015625,0.56640625,0.515625,0.4482421875,0.400390625,0.3994140625,0.4423828125,0.509765625,0.5888671875,0.6884765625,0.767578125,0.78515625,0.736328125,0.654296875,0.5791015625,0.5185546875,0.490234375,0.494140625,0.5107421875,0.5126953125,0.482421875,0.419921875,0.365234375,0.3740234375,0.44921875,0.5498046875,0.625,0.6337890625,0.5791015625,0.5,0.3994140625,0.3173828125,0.296875,0.34375,0.4248046875,0.5,0.556640625,0.5654296875,0.5244140625,0.4638671875,0.423828125,0.4326171875,0.4892578125,0.5546875,0.595703125,0.5927734375,0.5458984375,0.4794921875,0.4306640625,0.419921875,0.4228515625,0.44140625,0.4736328125,0.5107421875,0.5419921875,0.5576171875,0.5595703125,0.5576171875,0.556640625,0.5576171875,0.5595703125,0.5634765625,0.5673828125,0.5693359375,0.568359375,0.5546875,0.52734375,0.4931640625,0.462890625,0.4443359375,0.439453125,0.44140625,0.45703125,0.486328125,0.5224609375,0.5517578125,0.5673828125,0.5693359375,0.5673828125,0.5654296875,0.5634765625,0.5634765625,0.5654296875,0.5673828125,0.5693359375,0.5712890625,0.5732421875,0.5751953125,0.5751953125,0.5732421875,0.5712890625,0.5693359375,0.568359375,0.5693359375,0.572265625,0.576171875,0.5791015625,0.580078125,0.5791015625,0.5771484375,0.5751953125,0.5732421875,0.5732421875,0.5751953125,0.5771484375,0.5791015625,0.5869140625,0.6123046875,0.6328125,0.623046875,0.5751953125,0.5029296875,0.4296875,0.37109375,0.3681640625,0.423828125,0.50390625,0.5625,0.564453125,0.509765625,0.4404296875,0.3798828125,0.34765625,0.3525390625,0.3837890625,0.412109375,0.419921875,0.423828125,0.4423828125,0.4775390625,0.517578125,0.55078125,0.5673828125,0.5693359375,0.5673828125,0.5654296875,0.5634765625,0.5634765625,0.5654296875,0.5673828125,0.5693359375,0.5576171875,0.501953125,0.419921875,0.3544921875,0.337890625,0.373046875,0.439453125,0.51953125,0.6123046875,0.6767578125,0.673828125,0.60546875,0.509765625,0.4296875,0.36328125,0.326171875,0.3427734375,0.41015625,0.494140625,0.5546875,0.5693359375,0.5595703125,0.51171875,0.4453125,0.3984375,0.3974609375,0.44140625,0.509765625,0.5771484375,0.619140625,0.61328125,0.5615234375,0.490234375,0.4404296875,0.4296875,0.421875,0.3837890625,0.3330078125,0.302734375,0.314453125,0.36328125,0.4296875,0.5087890625,0.615234375,0.7099609375,0.7470703125,0.71484375,0.6416015625,0.5693359375,0.490234375,0.3818359375,0.28515625,0.2451171875,0.275390625,0.34765625,0.419921875,0.4873046875,0.5400390625,0.55859375,0.5361328125,0.4892578125,0.4501953125,0.439453125,0.44140625,0.45703125,0.486328125,0.5224609375,0.5517578125,0.5673828125,0.5693359375,0.5771484375,0.615234375,0.6650390625,0.6923828125,0.6787109375,0.6279296875,0.5595703125,0.4990234375,0.48046875,0.5048828125,0.5478515625,0.57421875,0.5576171875,0.5,0.421875,0.3251953125,0.248046875,0.232421875,0.2822265625,0.365234375,0.439453125,0.49609375,0.50390625,0.4609375,0.3984375,0.35546875,0.36328125,0.419921875,0.49609375,0.58984375,0.6572265625,0.662109375,0.599609375,0.5087890625,0.4296875,0.37109375,0.3671875,0.419921875,0.498046875,0.5546875,0.5546875,0.5,0.4345703125,0.39453125,0.3994140625,0.44921875,0.5185546875,0.568359375,0.5791015625,0.5791015625,0.578125,0.5771484375,0.576171875,0.576171875,0.5771484375,0.5791015625,0.5888671875,0.6220703125,0.658203125,0.6669921875,0.634765625,0.5712890625,0.5,0.419921875,0.326171875,0.259765625,0.2587890625,0.3232421875,0.4130859375,0.4892578125,0.544921875,0.5458984375,0.4912109375,0.4169921875,0.365234375,0.37109375,0.4296875,0.4912109375,0.5087890625,0.482421875,0.4375,0.41015625,0.4287109375,0.4892578125,0.5615234375,0.6240234375,0.6572265625,0.6484375,0.6123046875,0.5791015625,0.5693359375,0.57421875,0.59765625,0.6201171875,0.6142578125,0.5712890625,0.5029296875,0.4296875,0.3701171875,0.359375,0.3994140625,0.4599609375,0.5,0.4892578125,0.4296875,0.3505859375,0.2587890625,0.1953125,0.1982421875,0.267578125,0.361328125,0.439453125,0.5107421875,0.576171875,0.6162109375,0.6181640625,0.5927734375,0.56640625,0.5595703125,0.546875,0.4912109375,0.4111328125,0.3486328125,0.33203125,0.3662109375,0.4296875,0.49609375,0.546875,0.560546875,0.533203125,0.484375,0.447265625,0.439453125,0.4404296875,0.439453125,0.435546875,0.4296875,0.423828125,0.4208984375,0.419921875,0.4326171875,0.490234375,0.57421875,0.640625,0.658203125,0.6240234375,0.5595703125,0.498046875,0.47265625,0.4853515625,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.4609375,0.5576171875,0.6279296875,0.634765625,0.5791015625,0.517578125,0.4873046875,0.4921875,0.51171875,0.517578125,0.490234375,0.4296875,0.3720703125,0.361328125,0.3974609375,0.4521484375,0.48828125,0.4765625,0.419921875,0.353515625,0.3046875,0.29296875,0.322265625,0.373046875,0.412109375,0.419921875,0.408203125,0.3662109375,0.3134765625,0.28515625,0.298828125,0.3515625,0.419921875,0.478515625,0.4912109375,0.455078125,0.3994140625,0.3623046875,0.373046875,0.4296875,0.486328125,0.494140625,0.4521484375,0.3916015625,0.3515625,0.361328125,0.419921875,0.48828125,0.5419921875,0.5595703125,0.53515625,0.4873046875,0.44921875,0.439453125,0.4423828125,0.458984375,0.48828125,0.5244140625,0.556640625,0.57421875,0.5791015625,0.5712890625,0.5302734375,0.474609375,0.439453125,0.447265625,0.4931640625,0.5595703125,0.6142578125,0.615234375,0.560546875,0.4833984375,0.4296875,0.4326171875,0.4892578125,0.5498046875,0.5712890625,0.5517578125,0.5166015625,0.4970703125,0.5185546875,0.5791015625,0.6435546875,0.67578125,0.6533203125,0.5810546875,0.4931640625,0.43359375,0.419921875,0.423828125,0.4423828125,0.4775390625,0.517578125,0.55078125,0.5673828125,0.5693359375,0.55859375,0.517578125,0.466796875,0.4404296875,0.45703125,0.5107421875,0.5791015625,0.6474609375,0.6982421875,0.7119140625,0.681640625,0.6298828125,0.5888671875,0.5791015625,0.5859375,0.609375,0.630859375,0.623046875,0.5791015625,0.5107421875,0.439453125,0.3642578125,0.287109375,0.25,0.283203125,0.3779296875,0.486328125,0.5693359375,0.6396484375,0.693359375,0.7080078125,0.6806640625,0.6298828125,0.5888671875,0.5791015625,0.578125,0.5751953125,0.5693359375,0.5634765625,0.5595703125,0.55859375,0.5595703125,0.5703125,0.61328125,0.666015625,0.697265625,0.685546875,0.6357421875,0.5693359375,0.4990234375,0.4306640625,0.384765625,0.375,0.392578125,0.4140625,0.419921875,0.412109375,0.3818359375,0.3486328125,0.3408203125,0.37109375,0.4306640625,0.5,0.5732421875,0.6533203125,0.69921875,0.6787109375,0.5966796875,0.498046875,0.419921875,0.3662109375,0.3740234375,0.4443359375,0.5400390625,0.609375,0.6142578125,0.5595703125,0.498046875,0.47265625,0.4853515625,0.513671875,0.5263671875,0.5009765625,0.439453125,0.36328125,0.2783203125,0.2255859375,0.2392578125,0.3154296875,0.412109375,0.4892578125,0.546875,0.55859375,0.5224609375,0.466796875,0.4306640625,0.4423828125,0.5,0.568359375,0.6279296875,0.658203125,0.650390625,0.6171875,0.5869140625,0.5791015625,0.576171875,0.560546875,0.5302734375,0.494140625,0.462890625,0.4443359375,0.439453125,0.4384765625,0.4365234375,0.4365234375,0.4375,0.4384765625,0.439453125,0.439453125,0.4423828125,0.45703125,0.4853515625,0.5185546875,0.5478515625,0.564453125,0.5693359375,0.568359375,0.5537109375,0.5244140625,0.490234375,0.4599609375,0.443359375,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.4384765625,0.4345703125,0.4306640625,0.42578125,0.421875,0.419921875,0.41796875,0.4169921875,0.41796875,0.4208984375,0.423828125,0.427734375,0.4296875,0.4443359375,0.501953125,0.583984375,0.6494140625,0.6669921875,0.6328125,0.5693359375,0.51171875,0.49609375,0.5234375,0.56640625,0.5908203125,0.5712890625,0.509765625,0.44140625,0.3955078125,0.39453125,0.439453125,0.5029296875,0.5498046875,0.5595703125,0.5546875,0.5361328125,0.5048828125,0.46875,0.4384765625,0.4228515625,0.419921875,0.419921875,0.419921875,0.4208984375,0.4228515625,0.42578125,0.427734375,0.4296875,0.4248046875,0.40234375,0.3798828125,0.384765625,0.4248046875,0.490234375,0.5595703125,0.6357421875,0.7265625,0.7919921875,0.794921875,0.7333984375,0.6455078125,0.5693359375,0.4990234375,0.4326171875,0.3876953125,0.3779296875,0.39453125,0.4150390625,0.419921875,0.41015625,0.376953125,0.33984375,0.3291015625,0.359375,0.419921875,0.4892578125,0.5595703125,0.6220703125,0.6533203125,0.6455078125,0.611328125,0.5791015625,0.5693359375,0.5576171875,0.513671875,0.45703125,0.4248046875,0.4375,0.4892578125,0.5595703125,0.6357421875,0.71484375,0.75390625,0.720703125,0.6279296875,0.5205078125,0.439453125,0.3642578125,0.287109375,0.2490234375,0.2802734375,0.3720703125,0.478515625,0.5595703125,0.6279296875,0.681640625,0.69921875,0.6748046875,0.626953125,0.5888671875,0.5791015625,0.5751953125,0.5546875,0.5185546875,0.4755859375,0.4404296875,0.421875,0.419921875,0.4306640625,0.4736328125,0.5263671875,0.5576171875,0.5458984375,0.49609375,0.4296875,0.375,0.375,0.431640625,0.5087890625,0.5625,0.55859375,0.5,0.421875,0.3369140625,0.2880859375,0.3095703125,0.3935546875,0.498046875,0.5791015625,0.6396484375,0.65234375,0.6142578125,0.5556640625,0.5146484375,0.5224609375,0.5791015625,0.6552734375,0.74609375,0.8115234375,0.8115234375,0.748046875,0.6572265625,0.5791015625,0.51953125,0.5,0.5244140625,0.564453125,0.5888671875,0.5693359375,0.509765625,0.439453125,0.37890625,0.3486328125,0.359375,0.396484375,0.4296875,0.439453125,0.4404296875,0.439453125,0.435546875,0.4296875,0.423828125,0.4208984375,0.419921875,0.431640625,0.4833984375,0.5546875,0.60546875,0.6103515625,0.5673828125,0.5,0.419921875,0.3251953125,0.2578125,0.255859375,0.3203125,0.412109375,0.4892578125,0.5498046875,0.5712890625,0.55078125,0.513671875,0.4921875,0.5107421875,0.5693359375,0.6240234375,0.625,0.5693359375,0.490234375,0.43359375,0.4345703125,0.4892578125,0.5546875,0.5966796875,0.595703125,0.548828125,0.482421875,0.4326171875,0.419921875,0.4306640625,0.4873046875,0.5703125,0.6376953125,0.6572265625,0.6240234375,0.5595703125,0.5009765625,0.490234375,0.529296875,0.5888671875,0.6279296875,0.6181640625,0.5595703125,0.4814453125,0.388671875,0.322265625,0.3212890625,0.38671875,0.4794921875,0.5595703125,0.6259765625,0.6630859375,0.6484375,0.5859375,0.505859375,0.451171875,0.439453125,0.4345703125,0.408203125,0.3818359375,0.3818359375,0.4208984375,0.4873046875,0.5595703125,0.62890625,0.681640625,0.6943359375,0.6640625,0.611328125,0.5693359375,0.5595703125,0.5595703125,0.5625,0.56640625,0.572265625,0.576171875,0.5791015625,0.5791015625,0.5859375,0.607421875,0.6259765625,0.6142578125,0.5654296875,0.4931640625,0.419921875,0.36328125,0.369140625,0.4404296875,0.4931640625,0.609375,0.6982421875,0.71875,0.673828125,0.6142578125,0.5625,0.5234375,0.4921875,0.462890625,0.4248046875,0.376953125,0.333984375,0.3193359375,0.3369140625,0.3662109375,0.3828125,0.369140625,0.3251953125,0.27734375,0.24609375,0.244140625,0.2705078125,0.306640625,0.3291015625,0.3251953125,0.306640625,0.263671875,0.2158203125,0.1943359375,0.2138671875,0.2646484375,0.3251953125,0.3798828125,0.4013671875,0.3857421875,0.3515625,0.3271484375,0.3349609375,0.376953125,0.4169921875,0.412109375,0.3642578125,0.3037109375,0.265625,0.2744140625,0.3251953125,0.3876953125,0.4453125,0.4794921875,0.48046875,0.4580078125,0.435546875,0.4287109375,0.43359375,0.45703125,0.50390625,0.5634765625,0.6201171875,0.6572265625,0.673828125,0.673828125,0.6396484375,0.580078125,0.52734375,0.505859375,0.5244140625,0.5703125,0.6083984375,0.5947265625,0.53125,0.451171875,0.3974609375,0.3984375,0.4482421875,0.50390625,0.541015625,0.556640625,0.564453125,0.580078125,0.6171875,0.673828125,0.724609375,0.7275390625,0.6611328125,0.5439453125,0.419921875,0.341796875,0.3251953125,0.333984375,0.3759765625,0.4501953125,0.5322265625,0.5966796875,0.625,0.6220703125,0.6044921875,0.5673828125,0.53125,0.5234375,0.5537109375,0.611328125,0.673828125,0.7333984375,0.7783203125,0.7890625,0.763671875,0.7177734375,0.681640625,0.673828125,0.67578125,0.6826171875,0.673828125,0.634765625,0.5693359375,0.494140625,0.4287109375,0.3642578125,0.30078125,0.279296875,0.3251953125,0.427734375,0.5390625,0.6220703125,0.6923828125,0.7509765625,0.7763671875,0.759765625,0.7177734375,0.6826171875,0.673828125,0.669921875,0.6513671875,0.6201171875,0.5888671875,0.5673828125,0.5625,0.5703125,0.5888671875,0.6318359375,0.68359375,0.7138671875,0.708984375,0.671875,0.6220703125,0.5654296875,0.4921875,0.4169921875,0.3603515625,0.33203125,0.3251953125,0.3251953125,0.322265625,0.314453125,0.314453125,0.3388671875,0.3876953125,0.4462890625,0.5,0.5517578125,0.59765625,0.6064453125,0.560546875,0.474609375,0.38671875,0.3251953125,0.2900390625,0.318359375,0.4091796875,0.521484375,0.6025390625,0.6171875,0.5703125,0.515625,0.4892578125,0.4921875,0.5068359375,0.509765625,0.4833984375,0.4287109375,0.3623046875,0.2900390625,0.2451171875,0.2548828125,0.314453125,0.3896484375,0.4482421875,0.4912109375,0.505859375,0.48828125,0.458984375,0.4423828125,0.4560546875,0.5,0.552734375,0.611328125,0.66015625,0.6845703125,0.6845703125,0.6767578125,0.673828125,0.6689453125,0.6455078125,0.5986328125,0.5380859375,0.482421875,0.4443359375,0.4287109375,0.4189453125,0.4111328125,0.4091796875,0.4140625,0.421875,0.427734375,0.4287109375,0.431640625,0.44921875,0.484375,0.53125,0.576171875,0.607421875,0.6220703125,0.626953125,0.611328125,0.5703125,0.5146484375,0.46484375,0.4345703125,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.427734375,0.421875,0.40625,0.3828125,0.3583984375,0.337890625,0.3251953125,0.3154296875,0.3076171875,0.3095703125,0.3232421875,0.3447265625,0.3642578125,0.376953125,0.400390625,0.466796875,0.5615234375,0.6435546875,0.6806640625,0.6669921875,0.6220703125,0.580078125,0.576171875,0.6044921875,0.6376953125,0.646484375,0.615234375,0.55078125,0.4833984375,0.439453125,0.4375,0.4775390625,0.533203125,0.5693359375,0.5703125,0.5546875,0.5166015625,0.4609375,0.400390625,0.353515625,0.330078125,0.3251953125,0.3251953125,0.3251953125,0.3291015625,0.3388671875,0.3525390625,0.3662109375,0.376953125,0.384765625,0.3857421875,0.3935546875,0.41796875,0.462890625,0.517578125,0.5703125,0.6279296875,0.701171875,0.759765625,0.7734375,0.7373046875,0.6767578125,0.6220703125,0.56640625,0.5,0.431640625,0.3798828125,0.349609375,0.3359375,0.3251953125,0.3095703125,0.28125,0.2607421875,0.271484375,0.318359375,0.3837890625,0.4482421875,0.5126953125,0.5849609375,0.642578125,0.6669921875,0.658203125,0.63671875,0.6220703125,0.6005859375,0.544921875,0.4775390625,0.4384765625,0.4482421875,0.5,0.5703125,0.6455078125,0.7158203125,0.7431640625,0.7021484375,0.60546875,0.501953125,0.4287109375,0.3642578125,0.30078125,0.275390625,0.3125,0.4013671875,0.4990234375,0.5703125,0.6318359375,0.689453125,0.7236328125,0.7255859375,0.7021484375,0.6796875,0.673828125,0.6640625,0.615234375,0.5302734375,0.43359375,0.3583984375,0.3232421875,0.3251953125,0.34375,0.3876953125,0.4384765625,0.4697265625,0.4638671875,0.4267578125,0.376953125,0.3408203125,0.359375,0.4306640625,0.515625,0.5673828125,0.5595703125,0.5,0.423828125,0.3505859375,0.3232421875,0.369140625,0.474609375,0.58984375,0.673828125,0.736328125,0.7587890625,0.734375,0.6826171875,0.638671875,0.6337890625,0.673828125,0.7314453125,0.8046875,0.859375,0.8642578125,0.814453125,0.740234375,0.673828125,0.619140625,0.595703125,0.6025390625,0.6220703125,0.62890625,0.60546875,0.55078125,0.4873046875,0.421875,0.375,0.3642578125,0.384765625,0.4130859375,0.4287109375,0.4365234375,0.431640625,0.41015625,0.37890625,0.34765625,0.3291015625,0.3251953125,0.33984375,0.40234375,0.4951171875,0.5712890625,0.5966796875,0.5654296875,0.5,0.419921875,0.3251953125,0.2548828125,0.24609375,0.298828125,0.37890625,0.4482421875,0.5048828125,0.541015625,0.552734375,0.5517578125,0.5537109375,0.576171875,0.6220703125,0.66015625,0.646484375,0.5791015625,0.490234375,0.4228515625,0.4091796875,0.4482421875,0.49609375,0.5244140625,0.5146484375,0.46484375,0.3974609375,0.345703125,0.3251953125,0.330078125,0.3876953125,0.486328125,0.5810546875,0.6318359375,0.623046875,0.5703125,0.5185546875,0.509765625,0.5439453125,0.595703125,0.6298828125,0.62109375,0.5703125,0.5,0.4140625,0.3486328125,0.3447265625,0.4033203125,0.4921875,0.5703125,0.634765625,0.6640625,0.638671875,0.56640625,0.4833984375,0.4326171875,0.4287109375,0.4326171875,0.4150390625,0.3955078125,0.3974609375,0.4345703125,0.498046875,0.5703125,0.6396484375,0.6923828125,0.705078125,0.6748046875,0.6220703125,0.580078125,0.5703125,0.572265625,0.5849609375,0.6083984375,0.6357421875,0.658203125,0.6708984375,0.673828125,0.6748046875,0.6748046875,0.650390625,0.5888671875,0.498046875,0.4033203125,0.3251953125,0.271484375,0.2900390625,0.384765625,0.5498046875,0.6591796875,0.7451171875,0.771484375,0.740234375,0.689453125,0.6220703125,0.5439453125,0.4716796875,0.41796875,0.384765625,0.3642578125,0.345703125,0.330078125,0.3173828125,0.3056640625,0.29296875,0.27734375,0.2587890625,0.244140625,0.24609375,0.26171875,0.28125,0.2900390625,0.2822265625,0.2587890625,0.2265625,0.181640625,0.142578125,0.134765625,0.1630859375,0.2109375,0.2587890625,0.302734375,0.337890625,0.35546875,0.3564453125,0.349609375,0.349609375,0.3642578125,0.3740234375,0.3486328125,0.294921875,0.240234375,0.2109375,0.2197265625,0.2587890625,0.3076171875,0.3662109375,0.421875,0.4580078125,0.4716796875,0.470703125,0.46875,0.4716796875,0.4892578125,0.5302734375,0.5908203125,0.65625,0.7080078125,0.740234375,0.7578125,0.7412109375,0.6845703125,0.6103515625,0.546875,0.51953125,0.5302734375,0.5390625,0.509765625,0.44921875,0.38671875,0.3505859375,0.3564453125,0.39453125,0.4404296875,0.4892578125,0.541015625,0.59375,0.6455078125,0.6943359375,0.740234375,0.7734375,0.748046875,0.6484375,0.501953125,0.361328125,0.2763671875,0.2587890625,0.271484375,0.33203125,0.435546875,0.546875,0.6259765625,0.65234375,0.634765625,0.60546875,0.572265625,0.5576171875,0.5771484375,0.62890625,0.689453125,0.740234375,0.7841796875,0.8173828125,0.826171875,0.806640625,0.7724609375,0.74609375,0.740234375,0.740234375,0.7333984375,0.70703125,0.654296875,0.5859375,0.51953125,0.46875,0.4189453125,0.3642578125,0.33984375,0.3720703125,0.4560546875,0.5546875,0.634765625,0.70703125,0.7724609375,0.8095703125,0.806640625,0.7763671875,0.748046875,0.740234375,0.7314453125,0.6904296875,0.6240234375,0.5576171875,0.515625,0.5087890625,0.5302734375,0.560546875,0.603515625,0.646484375,0.6708984375,0.6708984375,0.654296875,0.634765625,0.607421875,0.5478515625,0.4609375,0.369140625,0.2998046875,0.2646484375,0.2587890625,0.26171875,0.2802734375,0.3193359375,0.375,0.4326171875,0.4755859375,0.5,0.5146484375,0.5107421875,0.474609375,0.4111328125,0.33984375,0.28515625,0.2587890625,0.2529296875,0.298828125,0.3896484375,0.48828125,0.5546875,0.5654296875,0.5302734375,0.490234375,0.4765625,0.48828125,0.5107421875,0.5224609375,0.5087890625,0.46875,0.4208984375,0.3671875,0.328125,0.3193359375,0.33984375,0.37109375,0.39453125,0.4130859375,0.4287109375,0.44140625,0.453125,0.4658203125,0.4814453125,0.5,0.5234375,0.56640625,0.6240234375,0.6796875,0.71875,0.7373046875,0.740234375,0.7373046875,0.7197265625,0.6787109375,0.619140625,0.5537109375,0.5009765625,0.46875,0.443359375,0.423828125,0.4189453125,0.4306640625,0.4501953125,0.4658203125,0.46875,0.4697265625,0.474609375,0.4912109375,0.5244140625,0.56640625,0.60546875,0.634765625,0.6572265625,0.65625,0.6240234375,0.568359375,0.51171875,0.4765625,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.4677734375,0.4580078125,0.4306640625,0.3857421875,0.333984375,0.2890625,0.2587890625,0.232421875,0.2099609375,0.208984375,0.2373046875,0.28515625,0.33203125,0.3642578125,0.3984375,0.4619140625,0.541015625,0.609375,0.6474609375,0.650390625,0.634765625,0.6259765625,0.650390625,0.693359375,0.7236328125,0.7177734375,0.6728515625,0.6044921875,0.537109375,0.490234375,0.48046875,0.501953125,0.5341796875,0.546875,0.5302734375,0.498046875,0.4453125,0.3798828125,0.3203125,0.279296875,0.26171875,0.2587890625,0.2578125,0.2548828125,0.2587890625,0.275390625,0.3037109375,0.3359375,0.3642578125,0.390625,0.4189453125,0.447265625,0.4716796875,0.4921875,0.51171875,0.5302734375,0.5537109375,0.5908203125,0.6318359375,0.66015625,0.666015625,0.6533203125,0.634765625,0.611328125,0.5673828125,0.4990234375,0.4189453125,0.3447265625,0.291015625,0.2587890625,0.23046875,0.201171875,0.1923828125,0.220703125,0.2783203125,0.34375,0.39453125,0.4482421875,0.525390625,0.607421875,0.6630859375,0.677734375,0.6611328125,0.634765625,0.5966796875,0.5234375,0.44140625,0.39453125,0.404296875,0.458984375,0.5302734375,0.6044921875,0.67578125,0.708984375,0.6826171875,0.6064453125,0.5244140625,0.46875,0.419921875,0.3681640625,0.33984375,0.35546875,0.4111328125,0.478515625,0.5302734375,0.5791015625,0.6376953125,0.6923828125,0.7294921875,0.7421875,0.7412109375,0.740234375,0.7255859375,0.6513671875,0.5244140625,0.3857421875,0.283203125,0.244140625,0.2587890625,0.2900390625,0.3330078125,0.375,0.3994140625,0.400390625,0.3837890625,0.3642578125,0.3583984375,0.4033203125,0.4833984375,0.5576171875,0.5888671875,0.5634765625,0.5,0.42578125,0.3603515625,0.34765625,0.4111328125,0.53125,0.654296875,0.740234375,0.8076171875,0.8486328125,0.84765625,0.8095703125,0.759765625,0.7314453125,0.740234375,0.7646484375,0.8046875,0.8427734375,0.853515625,0.8310546875,0.787109375,0.740234375,0.69921875,0.67578125,0.6708984375,0.673828125,0.6689453125,0.6455078125,0.6044921875,0.5537109375,0.4892578125,0.4306640625,0.40234375,0.4111328125,0.4404296875,0.46875,0.490234375,0.4833984375,0.44140625,0.375,0.30859375,0.267578125,0.2587890625,0.2744140625,0.345703125,0.4521484375,0.546875,0.5869140625,0.5634765625,0.5,0.4208984375,0.3291015625,0.2587890625,0.2421875,0.2802734375,0.3427734375,0.39453125,0.44140625,0.4931640625,0.541015625,0.5771484375,0.6005859375,0.6171875,0.634765625,0.6455078125,0.619140625,0.5546875,0.474609375,0.41015625,0.3837890625,0.39453125,0.4130859375,0.42578125,0.4189453125,0.38671875,0.3369140625,0.2900390625,0.2587890625,0.24609375,0.2861328125,0.375,0.4775390625,0.548828125,0.564453125,0.5302734375,0.4921875,0.4853515625,0.5107421875,0.548828125,0.57421875,0.5673828125,0.5302734375,0.4755859375,0.4013671875,0.3388671875,0.328125,0.375,0.4541015625,0.5302734375,0.5947265625,0.6240234375,0.6044921875,0.546875,0.484375,0.455078125,0.46875,0.486328125,0.4716796875,0.4365234375,0.4111328125,0.41796875,0.4619140625,0.5302734375,0.599609375,0.65234375,0.6650390625,0.634765625,0.5810546875,0.5400390625,0.5302734375,0.53515625,0.560546875,0.607421875,0.6630859375,0.7099609375,0.7353515625,0.740234375,0.7392578125,0.7216796875,0.66796875,0.5712890625,0.451171875,0.33984375,0.2587890625,0.205078125,0.2275390625,0.328125,0.595703125,0.673828125,0.7353515625,0.7568359375,0.740234375,0.7041015625,0.6318359375,0.53515625,0.447265625,0.3935546875,0.3798828125,0.39453125,0.4072265625,0.3935546875,0.3525390625,0.30078125,0.259765625,0.24609375,0.2587890625,0.283203125,0.32421875,0.361328125,0.3720703125,0.349609375,0.3056640625,0.2587890625,0.2109375,0.1630859375,0.134765625,0.142578125,0.181640625,0.2265625,0.2587890625,0.2900390625,0.3369140625,0.38671875,0.4189453125,0.42578125,0.4130859375,0.39453125,0.369140625,0.3232421875,0.2705078125,0.2314453125,0.2197265625,0.2333984375,0.2587890625,0.291015625,0.3427734375,0.408203125,0.46875,0.509765625,0.52734375,0.5302734375,0.5283203125,0.52734375,0.541015625,0.5771484375,0.6328125,0.69140625,0.740234375,0.7802734375,0.7919921875,0.75390625,0.6708984375,0.5732421875,0.5,0.46875,0.4443359375,0.40234375,0.3564453125,0.3251953125,0.3203125,0.337890625,0.3642578125,0.39453125,0.4443359375,0.513671875,0.5908203125,0.66015625,0.708984375,0.740234375,0.7548828125,0.7158203125,0.61328125,0.474609375,0.34765625,0.2734375,0.2587890625,0.2734375,0.341796875,0.4521484375,0.5634765625,0.6318359375,0.640625,0.6044921875,0.5595703125,0.5283203125,0.5302734375,0.57421875,0.642578125,0.705078125,0.740234375,0.765625,0.78515625,0.7900390625,0.7783203125,0.7587890625,0.744140625,0.740234375,0.7392578125,0.728515625,0.701171875,0.6572265625,0.60546875,0.560546875,0.5302734375,0.49609375,0.4443359375,0.40234375,0.4033203125,0.4521484375,0.529296875,0.6044921875,0.677734375,0.74609375,0.7900390625,0.794921875,0.7724609375,0.7470703125,0.740234375,0.7275390625,0.66796875,0.57421875,0.4833984375,0.4306640625,0.431640625,0.46875,0.513671875,0.552734375,0.5771484375,0.5849609375,0.5849609375,0.5888671875,0.6044921875,0.615234375,0.5869140625,0.513671875,0.4140625,0.322265625,0.26953125,0.2587890625,0.267578125,0.3076171875,0.375,0.447265625,0.4970703125,0.5126953125,0.5,0.47265625,0.4189453125,0.34765625,0.2841796875,0.248046875,0.2431640625,0.2587890625,0.2861328125,0.3408203125,0.4111328125,0.4697265625,0.4970703125,0.4921875,0.46875,0.4482421875,0.4521484375,0.48046875,0.5185546875,0.546875,0.55078125,0.5302734375,0.5029296875,0.474609375,0.447265625,0.421875,0.4013671875,0.3828125,0.3642578125,0.3515625,0.365234375,0.40625,0.4580078125,0.4990234375,0.51171875,0.5,0.486328125,0.501953125,0.5517578125,0.6240234375,0.69140625,0.7314453125,0.740234375,0.7412109375,0.7421875,0.7294921875,0.6923828125,0.6376953125,0.5791015625,0.5302734375,0.4853515625,0.4521484375,0.4443359375,0.4638671875,0.4970703125,0.5234375,0.5302734375,0.525390625,0.5078125,0.4912109375,0.4912109375,0.5166015625,0.55859375,0.6044921875,0.6474609375,0.6708984375,0.6630859375,0.6240234375,0.5732421875,0.5380859375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5234375,0.4970703125,0.4443359375,0.375,0.3095703125,0.2587890625,0.2119140625,0.1689453125,0.15625,0.1923828125,0.2646484375,0.3408203125,0.39453125,0.4404296875,0.48828125,0.529296875,0.5576171875,0.57421875,0.587890625,0.6044921875,0.6337890625,0.693359375,0.7568359375,0.787109375,0.7666015625,0.70703125,0.634765625,0.5673828125,0.521484375,0.5048828125,0.5107421875,0.5185546875,0.5068359375,0.46875,0.419921875,0.361328125,0.306640625,0.26953125,0.2568359375,0.2578125,0.2587890625,0.255859375,0.24609375,0.2421875,0.2587890625,0.2978515625,0.3466796875,0.39453125,0.443359375,0.49609375,0.53515625,0.5439453125,0.5234375,0.4921875,0.46875,0.451171875,0.4423828125,0.455078125,0.4912109375,0.5390625,0.580078125,0.6044921875,0.62109375,0.619140625,0.580078125,0.5,0.3994140625,0.3134765625,0.2587890625,0.2138671875,0.177734375,0.1728515625,0.208984375,0.271484375,0.330078125,0.3642578125,0.4013671875,0.4765625,0.568359375,0.640625,0.666015625,0.646484375,0.6044921875,0.5478515625,0.4560546875,0.3642578125,0.3173828125,0.333984375,0.396484375,0.46875,0.5439453125,0.619140625,0.666015625,0.662109375,0.6181640625,0.564453125,0.5302734375,0.4990234375,0.45703125,0.4189453125,0.4033203125,0.4140625,0.44140625,0.46875,0.5009765625,0.5537109375,0.619140625,0.6787109375,0.7197265625,0.7373046875,0.740234375,0.72265625,0.6376953125,0.4970703125,0.3505859375,0.2509765625,0.2255859375,0.2587890625,0.3037109375,0.341796875,0.3662109375,0.375,0.375,0.37890625,0.39453125,0.4248046875,0.4931640625,0.57421875,0.6240234375,0.6201171875,0.5693359375,0.5,0.42578125,0.3603515625,0.34765625,0.4111328125,0.53125,0.654296875,0.740234375,0.8125,0.8759765625,0.9033203125,0.880859375,0.82421875,0.7685546875,0.740234375,0.7255859375,0.7265625,0.7431640625,0.76171875,0.771484375,0.7626953125,0.740234375,0.7158203125,0.69921875,0.6904296875,0.6845703125,0.67578125,0.6591796875,0.634765625,0.6005859375,0.5419921875,0.48046875,0.4443359375,0.44921875,0.484375,0.5302734375,0.5673828125,0.568359375,0.515625,0.4248046875,0.3310546875,0.271484375,0.2587890625,0.2744140625,0.345703125,0.4521484375,0.546875,0.5869140625,0.5634765625,0.5,0.4228515625,0.3388671875,0.275390625,0.2587890625,0.287109375,0.33203125,0.3642578125,0.3984375,0.45703125,0.5302734375,0.5908203125,0.62109375,0.62109375,0.6044921875,0.5830078125,0.55078125,0.5078125,0.4609375,0.41796875,0.3857421875,0.3642578125,0.349609375,0.349609375,0.3564453125,0.35546875,0.337890625,0.302734375,0.2587890625,0.2236328125,0.2314453125,0.2890625,0.375,0.451171875,0.4833984375,0.46875,0.447265625,0.443359375,0.4580078125,0.48046875,0.4951171875,0.4912109375,0.46875,0.43359375,0.3720703125,0.314453125,0.294921875,0.328125,0.3955078125,0.46875,0.5341796875,0.5673828125,0.560546875,0.52734375,0.4951171875,0.494140625,0.5302734375,0.5625,0.546875,0.48828125,0.4228515625,0.388671875,0.4072265625,0.46875,0.5390625,0.591796875,0.6044921875,0.57421875,0.5205078125,0.4794921875,0.46875,0.4755859375,0.5087890625,0.568359375,0.640625,0.701171875,0.7333984375,0.740234375,0.7392578125,0.7216796875,0.66796875,0.5712890625,0.451171875,0.33984375,0.2587890625,0.2041015625,0.21875,0.3056640625,0.603515625,0.6396484375,0.6689453125,0.6796875,0.673828125,0.6513671875,0.5859375,0.49609375,0.4189453125,0.3857421875,0.40234375,0.4482421875,0.4873046875,0.48046875,0.4248046875,0.3486328125,0.29296875,0.2861328125,0.3251953125,0.3837890625,0.45703125,0.51171875,0.5166015625,0.466796875,0.392578125,0.3251953125,0.2646484375,0.2138671875,0.1943359375,0.2158203125,0.263671875,0.306640625,0.3251953125,0.345703125,0.3974609375,0.46484375,0.5146484375,0.5244140625,0.49609375,0.4482421875,0.3935546875,0.3359375,0.291015625,0.2763671875,0.2890625,0.3115234375,0.3251953125,0.341796875,0.37890625,0.435546875,0.4951171875,0.5419921875,0.5654296875,0.5703125,0.5634765625,0.541015625,0.5185546875,0.51953125,0.5537109375,0.611328125,0.673828125,0.734375,0.779296875,0.7744140625,0.705078125,0.595703125,0.4931640625,0.4287109375,0.376953125,0.3271484375,0.298828125,0.3017578125,0.330078125,0.361328125,0.376953125,0.392578125,0.4306640625,0.490234375,0.560546875,0.6201171875,0.658203125,0.673828125,0.67578125,0.640625,0.5654296875,0.46875,0.3837890625,0.3349609375,0.3251953125,0.33984375,0.40234375,0.498046875,0.583984375,0.623046875,0.60546875,0.55078125,0.4931640625,0.45703125,0.46484375,0.5185546875,0.59375,0.65234375,0.673828125,0.68359375,0.69140625,0.693359375,0.6884765625,0.6806640625,0.6748046875,0.673828125,0.6728515625,0.666015625,0.650390625,0.6279296875,0.6025390625,0.58203125,0.5703125,0.5498046875,0.498046875,0.4384765625,0.4072265625,0.423828125,0.48046875,0.55078125,0.6240234375,0.69140625,0.7314453125,0.7333984375,0.70703125,0.6806640625,0.673828125,0.6591796875,0.59375,0.4931640625,0.4033203125,0.359375,0.375,0.4287109375,0.484375,0.5146484375,0.5146484375,0.5,0.4912109375,0.5068359375,0.55078125,0.595703125,0.60546875,0.564453125,0.4833984375,0.39453125,0.337890625,0.3251953125,0.3369140625,0.3876953125,0.4638671875,0.5322265625,0.5615234375,0.544921875,0.5,0.4384765625,0.3505859375,0.2646484375,0.21875,0.2275390625,0.2734375,0.3251953125,0.37890625,0.4345703125,0.4755859375,0.4853515625,0.46875,0.443359375,0.4287109375,0.423828125,0.439453125,0.4765625,0.5224609375,0.5595703125,0.5751953125,0.5703125,0.5625,0.5615234375,0.5546875,0.529296875,0.484375,0.4296875,0.376953125,0.337890625,0.3447265625,0.400390625,0.4765625,0.5322265625,0.5390625,0.5,0.4541015625,0.4375,0.466796875,0.53515625,0.611328125,0.662109375,0.673828125,0.6796875,0.7021484375,0.7255859375,0.7236328125,0.689453125,0.6318359375,0.5703125,0.5107421875,0.4658203125,0.4541015625,0.48046875,0.525390625,0.5615234375,0.5703125,0.5615234375,0.5234375,0.4736328125,0.4423828125,0.44921875,0.4921875,0.55078125,0.611328125,0.658203125,0.673828125,0.6533203125,0.611328125,0.578125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5732421875,0.5791015625,0.5703125,0.53125,0.4658203125,0.390625,0.3251953125,0.2607421875,0.1943359375,0.1650390625,0.197265625,0.28125,0.376953125,0.4482421875,0.5029296875,0.5302734375,0.52734375,0.5068359375,0.4931640625,0.5078125,0.55078125,0.6123046875,0.7001953125,0.7783203125,0.8056640625,0.7705078125,0.697265625,0.6220703125,0.5556640625,0.515625,0.5048828125,0.5107421875,0.509765625,0.4833984375,0.4287109375,0.3671875,0.3095703125,0.275390625,0.2734375,0.296875,0.3193359375,0.3251953125,0.3203125,0.298828125,0.2802734375,0.287109375,0.3251953125,0.3857421875,0.4482421875,0.513671875,0.5859375,0.6318359375,0.6220703125,0.5625,0.4873046875,0.4287109375,0.375,0.3232421875,0.302734375,0.3349609375,0.41015625,0.4912109375,0.55078125,0.6044921875,0.6494140625,0.654296875,0.599609375,0.4990234375,0.3974609375,0.3251953125,0.265625,0.220703125,0.2138671875,0.2490234375,0.3076171875,0.357421875,0.376953125,0.400390625,0.46484375,0.55078125,0.6181640625,0.6376953125,0.6083984375,0.55078125,0.478515625,0.376953125,0.28515625,0.2490234375,0.2802734375,0.353515625,0.4287109375,0.50390625,0.5791015625,0.6318359375,0.642578125,0.619140625,0.5869140625,0.5703125,0.5556640625,0.5244140625,0.4833984375,0.4462890625,0.423828125,0.4208984375,0.4287109375,0.4443359375,0.482421875,0.5380859375,0.5986328125,0.6455078125,0.6689453125,0.673828125,0.6572265625,0.5791015625,0.455078125,0.337890625,0.271484375,0.2744140625,0.3251953125,0.380859375,0.4111328125,0.412109375,0.396484375,0.3876953125,0.404296875,0.4482421875,0.5087890625,0.59375,0.66796875,0.6904296875,0.6513671875,0.5751953125,0.5,0.423828125,0.3505859375,0.3232421875,0.369140625,0.474609375,0.58984375,0.673828125,0.75,0.83203125,0.8837890625,0.875,0.8115234375,0.7333984375,0.673828125,0.625,0.59375,0.5927734375,0.6181640625,0.654296875,0.6767578125,0.673828125,0.6630859375,0.6552734375,0.650390625,0.6455078125,0.6396484375,0.6318359375,0.6220703125,0.6015625,0.552734375,0.4931640625,0.4580078125,0.4658203125,0.509765625,0.5703125,0.6240234375,0.6396484375,0.595703125,0.505859375,0.4052734375,0.33984375,0.3251953125,0.33984375,0.40234375,0.4951171875,0.5712890625,0.5966796875,0.5654296875,0.5,0.42578125,0.3525390625,0.3037109375,0.2978515625,0.3251953125,0.3603515625,0.376953125,0.3984375,0.45703125,0.53515625,0.5986328125,0.6201171875,0.5986328125,0.55078125,0.5048828125,0.4755859375,0.4658203125,0.462890625,0.4521484375,0.423828125,0.376953125,0.3349609375,0.3271484375,0.3515625,0.3857421875,0.4013671875,0.3798828125,0.3251953125,0.26953125,0.2431640625,0.2626953125,0.3203125,0.3876953125,0.427734375,0.4287109375,0.419921875,0.4189453125,0.4248046875,0.43359375,0.439453125,0.4375,0.4287109375,0.4091796875,0.359375,0.3046875,0.2783203125,0.2998046875,0.357421875,0.4287109375,0.4931640625,0.52734375,0.5263671875,0.5078125,0.4970703125,0.5166015625,0.5703125,0.6162109375,0.6025390625,0.529296875,0.435546875,0.37109375,0.37109375,0.4287109375,0.4990234375,0.55078125,0.564453125,0.5341796875,0.48046875,0.439453125,0.4287109375,0.4345703125,0.46484375,0.5185546875,0.5830078125,0.6376953125,0.66796875,0.673828125,0.6748046875,0.6748046875,0.650390625,0.5888671875,0.498046875,0.4033203125,0.3251953125,0.2685546875,0.2705078125,0.3330078125,0.56640625,0.572265625,0.578125,0.580078125,0.5791015625,0.56640625,0.513671875,0.443359375,0.390625,0.384765625,0.4248046875,0.4892578125,0.544921875,0.546875,0.4931640625,0.4169921875,0.3623046875,0.3642578125,0.419921875,0.49609375,0.5869140625,0.6513671875,0.65234375,0.5888671875,0.4970703125,0.419921875,0.3515625,0.298828125,0.28515625,0.3134765625,0.3662109375,0.408203125,0.419921875,0.4326171875,0.482421875,0.548828125,0.595703125,0.5966796875,0.5546875,0.4892578125,0.4208984375,0.361328125,0.33203125,0.341796875,0.3779296875,0.41015625,0.419921875,0.4248046875,0.4423828125,0.474609375,0.5107421875,0.5400390625,0.556640625,0.5595703125,0.5498046875,0.51171875,0.4638671875,0.439453125,0.45703125,0.5107421875,0.5791015625,0.6533203125,0.7275390625,0.7607421875,0.72265625,0.626953125,0.51953125,0.439453125,0.373046875,0.3203125,0.3046875,0.330078125,0.37890625,0.4189453125,0.4296875,0.4345703125,0.453125,0.4853515625,0.5234375,0.5556640625,0.57421875,0.5791015625,0.5771484375,0.55859375,0.5234375,0.48046875,0.4443359375,0.423828125,0.419921875,0.431640625,0.4833984375,0.5556640625,0.6083984375,0.6162109375,0.5751953125,0.509765625,0.4423828125,0.3994140625,0.400390625,0.4482421875,0.515625,0.56640625,0.5791015625,0.5810546875,0.58203125,0.58203125,0.58203125,0.580078125,0.5791015625,0.5791015625,0.5791015625,0.5771484375,0.57421875,0.5693359375,0.5654296875,0.5615234375,0.5595703125,0.546875,0.498046875,0.4326171875,0.3896484375,0.3935546875,0.4404296875,0.509765625,0.5810546875,0.6416015625,0.6708984375,0.6591796875,0.62109375,0.587890625,0.5791015625,0.56640625,0.5087890625,0.4248046875,0.3583984375,0.3408203125,0.375,0.439453125,0.5,0.51953125,0.4970703125,0.45703125,0.43359375,0.451171875,0.509765625,0.57421875,0.61328125,0.60546875,0.552734375,0.482421875,0.431640625,0.419921875,0.4306640625,0.48046875,0.5498046875,0.599609375,0.6044921875,0.564453125,0.5,0.421875,0.322265625,0.2412109375,0.2197265625,0.265625,0.345703125,0.419921875,0.4873046875,0.5400390625,0.55859375,0.5361328125,0.4892578125,0.4501953125,0.439453125,0.44140625,0.455078125,0.4833984375,0.515625,0.5439453125,0.5576171875,0.5595703125,0.564453125,0.5869140625,0.6083984375,0.6044921875,0.5634765625,0.4990234375,0.4296875,0.3740234375,0.373046875,0.4267578125,0.5029296875,0.556640625,0.5546875,0.5,0.4345703125,0.39453125,0.3994140625,0.44921875,0.5185546875,0.568359375,0.5791015625,0.5888671875,0.626953125,0.6748046875,0.69921875,0.681640625,0.6279296875,0.5595703125,0.4912109375,0.4404296875,0.4267578125,0.45703125,0.5087890625,0.5498046875,0.5595703125,0.548828125,0.501953125,0.4384765625,0.3955078125,0.3974609375,0.4423828125,0.509765625,0.5791015625,0.6357421875,0.66015625,0.6435546875,0.6025390625,0.568359375,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5654296875,0.58984375,0.6103515625,0.603515625,0.5595703125,0.4912109375,0.419921875,0.34375,0.259765625,0.2109375,0.228515625,0.3095703125,0.41015625,0.4892578125,0.548828125,0.5625,0.529296875,0.4755859375,0.4404296875,0.4521484375,0.509765625,0.5869140625,0.6865234375,0.765625,0.783203125,0.732421875,0.6474609375,0.5693359375,0.505859375,0.478515625,0.4892578125,0.5146484375,0.5263671875,0.5009765625,0.439453125,0.37109375,0.3173828125,0.2998046875,0.32421875,0.3720703125,0.41015625,0.419921875,0.412109375,0.37890625,0.3427734375,0.33203125,0.3603515625,0.419921875,0.4892578125,0.56640625,0.6513671875,0.7041015625,0.689453125,0.6142578125,0.517578125,0.439453125,0.365234375,0.2841796875,0.236328125,0.2548828125,0.333984375,0.431640625,0.509765625,0.583984375,0.6630859375,0.7080078125,0.685546875,0.6015625,0.4990234375,0.419921875,0.3515625,0.30078125,0.2890625,0.3203125,0.375,0.41796875,0.4296875,0.443359375,0.494140625,0.564453125,0.615234375,0.6181640625,0.576171875,0.509765625,0.4296875,0.328125,0.24609375,0.2275390625,0.27734375,0.3623046875,0.439453125,0.5126953125,0.580078125,0.6220703125,0.6240234375,0.5966796875,0.568359375,0.5595703125,0.5546875,0.5380859375,0.509765625,0.478515625,0.453125,0.4404296875,0.439453125,0.4443359375,0.462890625,0.494140625,0.5302734375,0.560546875,0.576171875,0.5791015625,0.5654296875,0.505859375,0.41796875,0.345703125,0.3232421875,0.35546875,0.419921875,0.48046875,0.5,0.4775390625,0.4375,0.4130859375,0.4306640625,0.4892578125,0.56640625,0.6591796875,0.7275390625,0.7314453125,0.669921875,0.578125,0.5,0.421875,0.3369140625,0.2880859375,0.3095703125,0.3935546875,0.498046875,0.5791015625,0.658203125,0.7509765625,0.814453125,0.8134765625,0.7470703125,0.6552734375,0.5791015625,0.5126953125,0.4638671875,0.4521484375,0.482421875,0.533203125,0.5712890625,0.5791015625,0.5771484375,0.576171875,0.5751953125,0.5732421875,0.572265625,0.5712890625,0.5693359375,0.5576171875,0.5146484375,0.4599609375,0.4287109375,0.4404296875,0.4912109375,0.5595703125,0.6240234375,0.658203125,0.640625,0.57421875,0.490234375,0.4326171875,0.419921875,0.431640625,0.4833984375,0.5546875,0.60546875,0.6103515625,0.5673828125,0.5,0.427734375,0.3662109375,0.3359375,0.3466796875,0.3857421875,0.419921875,0.4296875,0.4423828125,0.4931640625,0.5625,0.611328125,0.615234375,0.57421875,0.509765625,0.4501953125,0.4306640625,0.451171875,0.48828125,0.5087890625,0.48828125,0.4296875,0.373046875,0.3623046875,0.3994140625,0.455078125,0.4912109375,0.478515625,0.419921875,0.3525390625,0.3046875,0.296875,0.3330078125,0.3896484375,0.4306640625,0.439453125,0.4384765625,0.4384765625,0.439453125,0.4404296875,0.44140625,0.44140625,0.439453125,0.427734375,0.384765625,0.3310546875,0.3017578125,0.31640625,0.3701171875,0.439453125,0.5029296875,0.5283203125,0.5166015625,0.48828125,0.474609375,0.498046875,0.5595703125,0.6142578125,0.609375,0.54296875,0.451171875,0.3857421875,0.3828125,0.439453125,0.509765625,0.5615234375,0.5751953125,0.544921875,0.4912109375,0.44921875,0.439453125,0.443359375,0.4599609375,0.4912109375,0.5283203125,0.55859375,0.576171875,0.5791015625,0.5859375,0.607421875,0.6259765625,0.6142578125,0.5654296875,0.4931640625,0.419921875,0.3603515625,0.3525390625,0.396484375,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.4296875,0.423828125,0.419921875,0.4189453125,0.419921875,0.4140625,0.384765625,0.353515625,0.3466796875,0.3779296875,0.439453125,0.509765625,0.5693359375,0.5859375,0.5576171875,0.51171875,0.4833984375,0.5,0.5595703125,0.6376953125,0.7314453125,0.80078125,0.8037109375,0.740234375,0.6484375,0.5693359375,0.4990234375,0.4462890625,0.431640625,0.4609375,0.5146484375,0.5576171875,0.5693359375,0.578125,0.609375,0.6435546875,0.650390625,0.619140625,0.55859375,0.4892578125,0.4248046875,0.3857421875,0.3935546875,0.4462890625,0.5166015625,0.5673828125,0.5791015625,0.5751953125,0.556640625,0.5205078125,0.478515625,0.4423828125,0.423828125,0.419921875,0.41015625,0.369140625,0.318359375,0.291015625,0.3056640625,0.359375,0.4296875,0.5126953125,0.6240234375,0.72265625,0.76171875,0.728515625,0.654296875,0.5791015625,0.5107421875,0.4599609375,0.4453125,0.4736328125,0.5234375,0.5615234375,0.5693359375,0.564453125,0.5478515625,0.517578125,0.4814453125,0.451171875,0.4345703125,0.4296875,0.431640625,0.4482421875,0.4814453125,0.521484375,0.556640625,0.5751953125,0.5791015625,0.5869140625,0.6181640625,0.6513671875,0.658203125,0.625,0.5615234375,0.4892578125,0.41796875,0.357421875,0.330078125,0.34375,0.3837890625,0.419921875,0.4296875,0.431640625,0.435546875,0.439453125,0.44140625,0.4423828125,0.44140625,0.439453125,0.4384765625,0.4384765625,0.439453125,0.4404296875,0.44140625,0.44140625,0.439453125,0.4296875,0.3935546875,0.3525390625,0.3369140625,0.361328125,0.419921875,0.4892578125,0.5556640625,0.5986328125,0.595703125,0.5478515625,0.48046875,0.4306640625,0.419921875,0.4130859375,0.3896484375,0.3701171875,0.37890625,0.42578125,0.49609375,0.5693359375,0.6279296875,0.6318359375,0.5791015625,0.5009765625,0.4443359375,0.4443359375,0.5,0.5673828125,0.6259765625,0.6552734375,0.6474609375,0.6142578125,0.5849609375,0.5791015625,0.5888671875,0.62109375,0.654296875,0.66015625,0.6259765625,0.5615234375,0.4892578125,0.412109375,0.3310546875,0.287109375,0.3115234375,0.3984375,0.5009765625,0.5791015625,0.6455078125,0.6943359375,0.703125,0.669921875,0.6142578125,0.5712890625,0.5595703125,0.5546875,0.5390625,0.51171875,0.4814453125,0.4560546875,0.4423828125,0.439453125,0.453125,0.509765625,0.5927734375,0.6572265625,0.6728515625,0.6357421875,0.5693359375,0.5078125,0.4892578125,0.5146484375,0.55859375,0.5859375,0.5693359375,0.509765625,0.439453125,0.3759765625,0.341796875,0.3466796875,0.3798828125,0.41015625,0.419921875,0.431640625,0.474609375,0.5302734375,0.564453125,0.5546875,0.505859375,0.439453125,0.373046875,0.3232421875,0.310546875,0.33984375,0.390625,0.4306640625,0.439453125,0.431640625,0.3994140625,0.361328125,0.3486328125,0.3740234375,0.431640625,0.5,0.564453125,0.60546875,0.6015625,0.552734375,0.4833984375,0.4326171875,0.419921875,0.4189453125,0.419921875,0.423828125,0.4296875,0.435546875,0.439453125,0.439453125,0.439453125,0.4384765625,0.4345703125,0.4306640625,0.42578125,0.421875,0.419921875,0.431640625,0.490234375,0.578125,0.650390625,0.673828125,0.6435546875,0.5791015625,0.4990234375,0.3955078125,0.30859375,0.2841796875,0.330078125,0.412109375,0.4892578125,0.5498046875,0.5595703125,0.51953125,0.458984375,0.4189453125,0.4296875,0.4892578125,0.568359375,0.6552734375,0.708984375,0.6953125,0.6181640625,0.5185546875,0.439453125,0.3837890625,0.3876953125,0.4541015625,0.544921875,0.611328125,0.615234375,0.5595703125,0.4912109375,0.44140625,0.4296875,0.4599609375,0.51171875,0.55078125,0.5595703125,0.546875,0.4990234375,0.435546875,0.392578125,0.396484375,0.4423828125,0.509765625,0.5888671875,0.689453125,0.7705078125,0.7880859375,0.7392578125,0.6552734375,0.5791015625,0.5,0.3994140625,0.318359375,0.2998046875,0.349609375,0.43359375,0.509765625,0.5888671875,0.689453125,0.7705078125,0.7880859375,0.7392578125,0.6552734375,0.5791015625,0.5107421875,0.4599609375,0.4453125,0.4736328125,0.5234375,0.5615234375,0.5693359375,0.5751953125,0.6044921875,0.63671875,0.6455078125,0.6162109375,0.5576171875,0.4892578125,0.4150390625,0.333984375,0.2861328125,0.3046875,0.3837890625,0.4814453125,0.5595703125,0.623046875,0.66015625,0.646484375,0.5869140625,0.5087890625,0.4541015625,0.439453125,0.4404296875,0.4541015625,0.48046875,0.5126953125,0.541015625,0.556640625,0.5595703125,0.556640625,0.541015625,0.5126953125,0.48046875,0.4541015625,0.4404296875,0.439453125,0.4345703125,0.412109375,0.3916015625,0.3984375,0.4404296875,0.5078125,0.5791015625,0.6357421875,0.6376953125,0.58203125,0.501953125,0.4453125,0.4443359375,0.5,0.576171875,0.66796875,0.7333984375,0.7353515625,0.6708984375,0.5791015625,0.5,0.4189453125,0.3193359375,0.2421875,0.2275390625,0.2802734375,0.3642578125,0.439453125,0.515625,0.6064453125,0.671875,0.671875,0.6083984375,0.517578125,0.439453125,0.37109375,0.3173828125,0.2998046875,0.32421875,0.3720703125,0.41015625,0.419921875,0.419921875,0.4228515625,0.4267578125,0.4326171875,0.4365234375,0.439453125,0.439453125,0.4296875,0.38671875,0.3310546875,0.2978515625,0.30859375,0.3603515625,0.4296875,0.501953125,0.5693359375,0.6103515625,0.61328125,0.58984375,0.564453125,0.5595703125,0.5693359375,0.6044921875,0.64453125,0.6591796875,0.634765625,0.5771484375,0.509765625,0.4443359375,0.4033203125,0.404296875,0.4501953125,0.5146484375,0.5595703125,0.5693359375,0.576171875,0.6083984375,0.646484375,0.6611328125,0.63671875,0.5791015625,0.509765625,0.453125,0.4501953125,0.50390625,0.580078125,0.6328125,0.6279296875,0.5693359375,0.5087890625,0.49609375,0.533203125,0.58984375,0.6279296875,0.6181640625,0.5595703125,0.4912109375,0.44140625,0.4296875,0.4599609375,0.51171875,0.55078125,0.5595703125,0.55859375,0.5595703125,0.5634765625,0.5693359375,0.5751953125,0.578125,0.5791015625,0.568359375,0.5244140625,0.466796875,0.431640625,0.4404296875,0.490234375,0.5595703125,0.6162109375,0.611328125,0.5419921875,0.447265625,0.3779296875,0.373046875,0.4296875,0.4931640625,0.521484375,0.5126953125,0.4873046875,0.4755859375,0.5,0.5595703125,0.6259765625,0.6748046875,0.685546875,0.65625,0.60546875,0.5673828125,0.5595703125,0.5576171875,0.5419921875,0.5126953125,0.4765625,0.447265625,0.431640625,0.4296875,0.4443359375,0.5048828125,0.5888671875,0.65625,0.6728515625,0.6357421875,0.5693359375,0.5087890625,0.4951171875,0.5302734375,0.3759765625,0.34375,0.3232421875,0.318359375,0.3251953125,0.33203125,0.33203125,0.337890625,0.3671875,0.421875,0.4873046875,0.55078125,0.6025390625,0.6142578125,0.583984375,0.537109375,0.5068359375,0.5185546875,0.5703125,0.640625,0.7333984375,0.8095703125,0.828125,0.7802734375,0.69921875,0.6220703125,0.55078125,0.4921875,0.470703125,0.4970703125,0.552734375,0.6015625,0.6220703125,0.634765625,0.6513671875,0.65234375,0.623046875,0.5673828125,0.5029296875,0.4482421875,0.4033203125,0.3935546875,0.4345703125,0.515625,0.6044921875,0.6611328125,0.673828125,0.6650390625,0.623046875,0.5458984375,0.453125,0.3759765625,0.333984375,0.3251953125,0.31640625,0.28125,0.2392578125,0.22265625,0.248046875,0.306640625,0.376953125,0.462890625,0.5869140625,0.7119140625,0.78515625,0.787109375,0.736328125,0.673828125,0.6142578125,0.5693359375,0.5537109375,0.5703125,0.6025390625,0.6240234375,0.6220703125,0.607421875,0.576171875,0.52734375,0.4716796875,0.4228515625,0.3916015625,0.376953125,0.3740234375,0.40234375,0.466796875,0.548828125,0.623046875,0.6650390625,0.673828125,0.677734375,0.6923828125,0.6953125,0.666015625,0.6025390625,0.5224609375,0.4482421875,0.375,0.3076171875,0.271484375,0.2783203125,0.318359375,0.359375,0.376953125,0.3896484375,0.41015625,0.4306640625,0.4443359375,0.4462890625,0.439453125,0.4287109375,0.419921875,0.4189453125,0.4248046875,0.43359375,0.439453125,0.4375,0.4287109375,0.4111328125,0.3701171875,0.326171875,0.3095703125,0.3330078125,0.38671875,0.4482421875,0.5048828125,0.5341796875,0.5185546875,0.4609375,0.3876953125,0.3369140625,0.3251953125,0.322265625,0.31640625,0.3291015625,0.376953125,0.45703125,0.544921875,0.6220703125,0.681640625,0.689453125,0.6376953125,0.5537109375,0.482421875,0.462890625,0.5,0.5517578125,0.6044921875,0.64453125,0.6640625,0.6669921875,0.666015625,0.673828125,0.6884765625,0.7099609375,0.71484375,0.681640625,0.6103515625,0.5244140625,0.4482421875,0.3759765625,0.3212890625,0.3203125,0.388671875,0.501953125,0.6083984375,0.673828125,0.7216796875,0.7529296875,0.7470703125,0.7021484375,0.6396484375,0.58984375,0.5703125,0.556640625,0.5322265625,0.4990234375,0.4658203125,0.4423828125,0.4306640625,0.4287109375,0.443359375,0.5087890625,0.60546875,0.6865234375,0.7158203125,0.6865234375,0.6220703125,0.55859375,0.533203125,0.5498046875,0.587890625,0.6142578125,0.6025390625,0.55078125,0.484375,0.40625,0.3369140625,0.298828125,0.296875,0.3125,0.3251953125,0.345703125,0.39453125,0.4580078125,0.5029296875,0.5087890625,0.4775390625,0.4287109375,0.3798828125,0.341796875,0.3330078125,0.3544921875,0.392578125,0.421875,0.4287109375,0.423828125,0.40234375,0.3798828125,0.376953125,0.40234375,0.4482421875,0.5,0.546875,0.568359375,0.546875,0.484375,0.4052734375,0.3466796875,0.3251953125,0.318359375,0.3232421875,0.34375,0.3759765625,0.40625,0.4248046875,0.4287109375,0.427734375,0.421875,0.40625,0.3828125,0.3583984375,0.337890625,0.3251953125,0.33203125,0.40234375,0.5234375,0.646484375,0.7197265625,0.7236328125,0.673828125,0.5986328125,0.484375,0.369140625,0.3056640625,0.314453125,0.375,0.4482421875,0.5078125,0.5185546875,0.478515625,0.41796875,0.376953125,0.3876953125,0.4482421875,0.525390625,0.611328125,0.666015625,0.6572265625,0.587890625,0.4990234375,0.4287109375,0.380859375,0.388671875,0.455078125,0.5439453125,0.6103515625,0.6181640625,0.5703125,0.51171875,0.47265625,0.4697265625,0.5,0.5439453125,0.5712890625,0.5703125,0.55078125,0.505859375,0.453125,0.4267578125,0.4423828125,0.490234375,0.55078125,0.6220703125,0.7177734375,0.8017578125,0.833984375,0.8046875,0.73828125,0.673828125,0.6025390625,0.5068359375,0.4228515625,0.390625,0.419921875,0.4853515625,0.55078125,0.6220703125,0.7177734375,0.8017578125,0.833984375,0.8046875,0.73828125,0.673828125,0.6142578125,0.5693359375,0.5537109375,0.5703125,0.6025390625,0.6240234375,0.6220703125,0.6142578125,0.615234375,0.61328125,0.5927734375,0.552734375,0.5,0.4482421875,0.3935546875,0.341796875,0.322265625,0.3544921875,0.4287109375,0.5107421875,0.5703125,0.6181640625,0.6435546875,0.6298828125,0.5751953125,0.50390625,0.44921875,0.4287109375,0.421875,0.431640625,0.4609375,0.5029296875,0.5419921875,0.5654296875,0.5703125,0.5654296875,0.5419921875,0.5029296875,0.4609375,0.431640625,0.421875,0.4287109375,0.4365234375,0.4375,0.4482421875,0.482421875,0.541015625,0.609375,0.673828125,0.7216796875,0.7158203125,0.650390625,0.556640625,0.482421875,0.462890625,0.5,0.55859375,0.6376953125,0.701171875,0.7099609375,0.658203125,0.576171875,0.5,0.4208984375,0.330078125,0.263671875,0.25390625,0.30078125,0.37109375,0.4287109375,0.4873046875,0.5595703125,0.615234375,0.619140625,0.5703125,0.49609375,0.4287109375,0.3671875,0.3095703125,0.275390625,0.2734375,0.296875,0.3193359375,0.3251953125,0.328125,0.3408203125,0.36328125,0.390625,0.4140625,0.4267578125,0.4287109375,0.41796875,0.3701171875,0.3046875,0.2607421875,0.2626953125,0.30859375,0.376953125,0.4501953125,0.51953125,0.568359375,0.5849609375,0.576171875,0.5654296875,0.5703125,0.5869140625,0.6220703125,0.6572265625,0.669921875,0.6484375,0.6025390625,0.55078125,0.5048828125,0.482421875,0.49609375,0.541015625,0.5927734375,0.623046875,0.6220703125,0.6181640625,0.6376953125,0.666015625,0.677734375,0.658203125,0.611328125,0.55078125,0.5029296875,0.5087890625,0.56640625,0.6416015625,0.689453125,0.681640625,0.6220703125,0.5595703125,0.5361328125,0.5576171875,0.599609375,0.6298828125,0.62109375,0.5703125,0.51171875,0.47265625,0.4697265625,0.5,0.5439453125,0.5712890625,0.5703125,0.5625,0.5673828125,0.5888671875,0.6201171875,0.6513671875,0.669921875,0.673828125,0.6611328125,0.6064453125,0.5302734375,0.47265625,0.462890625,0.5029296875,0.5703125,0.625,0.6123046875,0.529296875,0.41796875,0.3349609375,0.322265625,0.376953125,0.4443359375,0.490234375,0.5087890625,0.5078125,0.5068359375,0.5263671875,0.5703125,0.6181640625,0.6494140625,0.6513671875,0.625,0.5888671875,0.5673828125,0.5703125,0.57421875,0.552734375,0.50390625,0.443359375,0.39453125,0.373046875,0.376953125,0.4033203125,0.482421875,0.591796875,0.6826171875,0.7158203125,0.6875,0.6220703125,0.5576171875,0.5283203125,0.5419921875,0.353515625,0.2861328125,0.244140625,0.23828125,0.2587890625,0.2861328125,0.3212890625,0.369140625,0.4306640625,0.49609375,0.5556640625,0.6044921875,0.640625,0.638671875,0.5966796875,0.5380859375,0.49609375,0.494140625,0.5302734375,0.5859375,0.673828125,0.7587890625,0.7978515625,0.7744140625,0.708984375,0.634765625,0.5615234375,0.494140625,0.4609375,0.48046875,0.5380859375,0.599609375,0.634765625,0.6572265625,0.6591796875,0.6240234375,0.5576171875,0.48046875,0.421875,0.39453125,0.3837890625,0.412109375,0.4853515625,0.5849609375,0.6767578125,0.7294921875,0.740234375,0.728515625,0.6708984375,0.5634765625,0.435546875,0.328125,0.2705078125,0.2587890625,0.2509765625,0.22265625,0.1923828125,0.189453125,0.2265625,0.2919921875,0.3642578125,0.44921875,0.5732421875,0.7041015625,0.7919921875,0.814453125,0.78515625,0.740234375,0.697265625,0.6669921875,0.654296875,0.6572265625,0.662109375,0.6572265625,0.634765625,0.6064453125,0.5703125,0.5244140625,0.474609375,0.4287109375,0.392578125,0.3642578125,0.3466796875,0.373046875,0.4521484375,0.5634765625,0.6669921875,0.7275390625,0.740234375,0.7421875,0.7421875,0.7177734375,0.6572265625,0.56640625,0.47265625,0.39453125,0.3203125,0.2490234375,0.208984375,0.220703125,0.271484375,0.3291015625,0.3642578125,0.3955078125,0.443359375,0.4912109375,0.5185546875,0.517578125,0.49609375,0.46875,0.447265625,0.443359375,0.4580078125,0.48046875,0.4951171875,0.4912109375,0.46875,0.435546875,0.380859375,0.3251953125,0.2978515625,0.30859375,0.3486328125,0.39453125,0.435546875,0.4521484375,0.4306640625,0.375,0.3115234375,0.2685546875,0.2587890625,0.2578125,0.26171875,0.2919921875,0.361328125,0.4580078125,0.556640625,0.634765625,0.69921875,0.7236328125,0.6923828125,0.619140625,0.5380859375,0.494140625,0.5,0.51953125,0.5478515625,0.5849609375,0.6298828125,0.673828125,0.7119140625,0.740234375,0.767578125,0.787109375,0.767578125,0.6953125,0.5859375,0.4755859375,0.39453125,0.330078125,0.30859375,0.3583984375,0.4716796875,0.6064453125,0.7041015625,0.740234375,0.7568359375,0.7607421875,0.7373046875,0.6845703125,0.619140625,0.5634765625,0.5302734375,0.5029296875,0.4765625,0.4580078125,0.453125,0.458984375,0.466796875,0.46875,0.4833984375,0.544921875,0.6357421875,0.708984375,0.7333984375,0.701171875,0.634765625,0.5703125,0.541015625,0.5546875,0.5966796875,0.634765625,0.6396484375,0.6044921875,0.548828125,0.4580078125,0.353515625,0.26953125,0.2314453125,0.2353515625,0.2587890625,0.2919921875,0.34765625,0.4140625,0.4658203125,0.490234375,0.486328125,0.46875,0.451171875,0.4365234375,0.43359375,0.44140625,0.455078125,0.466796875,0.46875,0.466796875,0.4599609375,0.4521484375,0.4521484375,0.462890625,0.48046875,0.5,0.515625,0.515625,0.4853515625,0.4248046875,0.3525390625,0.29296875,0.2587890625,0.23828125,0.244140625,0.2861328125,0.353515625,0.419921875,0.4609375,0.46875,0.4677734375,0.4580078125,0.4306640625,0.3857421875,0.333984375,0.2890625,0.2587890625,0.2509765625,0.31640625,0.4521484375,0.6103515625,0.728515625,0.76953125,0.740234375,0.677734375,0.5615234375,0.421875,0.3193359375,0.2900390625,0.326171875,0.39453125,0.4541015625,0.46484375,0.4248046875,0.3642578125,0.32421875,0.3349609375,0.39453125,0.47265625,0.560546875,0.6240234375,0.6328125,0.5869140625,0.521484375,0.46875,0.4326171875,0.43359375,0.47265625,0.5263671875,0.5654296875,0.56640625,0.5302734375,0.4892578125,0.4716796875,0.482421875,0.513671875,0.5419921875,0.548828125,0.5302734375,0.5,0.462890625,0.44140625,0.453125,0.4970703125,0.5546875,0.6044921875,0.658203125,0.734375,0.806640625,0.8427734375,0.830078125,0.787109375,0.740234375,0.6865234375,0.6103515625,0.5380859375,0.501953125,0.5146484375,0.5576171875,0.6044921875,0.658203125,0.734375,0.806640625,0.8427734375,0.830078125,0.787109375,0.740234375,0.697265625,0.6669921875,0.654296875,0.6572265625,0.662109375,0.6572265625,0.634765625,0.6064453125,0.5693359375,0.5244140625,0.48046875,0.4423828125,0.4150390625,0.39453125,0.376953125,0.3681640625,0.380859375,0.416015625,0.4638671875,0.505859375,0.5302734375,0.55078125,0.572265625,0.58203125,0.5693359375,0.5361328125,0.4990234375,0.46875,0.4453125,0.4326171875,0.44140625,0.46875,0.501953125,0.5244140625,0.5302734375,0.5244140625,0.501953125,0.46875,0.44140625,0.4326171875,0.4453125,0.46875,0.4951171875,0.5205078125,0.5517578125,0.59375,0.642578125,0.693359375,0.740234375,0.7763671875,0.7685546875,0.708984375,0.619140625,0.53515625,0.4931640625,0.5,0.5283203125,0.5830078125,0.640625,0.6630859375,0.6357421875,0.572265625,0.5,0.4267578125,0.359375,0.3251953125,0.33984375,0.3896484375,0.44140625,0.46875,0.494140625,0.5341796875,0.5712890625,0.5830078125,0.5595703125,0.515625,0.46875,0.419921875,0.361328125,0.306640625,0.26953125,0.2568359375,0.2578125,0.2587890625,0.263671875,0.2890625,0.3359375,0.3916015625,0.4384765625,0.4638671875,0.46875,0.45703125,0.40234375,0.3251953125,0.267578125,0.2568359375,0.296875,0.3642578125,0.43359375,0.4912109375,0.521484375,0.5244140625,0.5126953125,0.5107421875,0.5302734375,0.5595703125,0.599609375,0.634765625,0.6513671875,0.6455078125,0.625,0.6044921875,0.5908203125,0.595703125,0.619140625,0.6455078125,0.662109375,0.6572265625,0.634765625,0.615234375,0.6181640625,0.640625,0.6630859375,0.6669921875,0.6455078125,0.6044921875,0.5712890625,0.5830078125,0.6357421875,0.6923828125,0.7197265625,0.697265625,0.634765625,0.5693359375,0.5302734375,0.52734375,0.548828125,0.5703125,0.56640625,0.5302734375,0.4892578125,0.4716796875,0.482421875,0.513671875,0.5419921875,0.548828125,0.5302734375,0.5087890625,0.515625,0.5576171875,0.6240234375,0.6904296875,0.7314453125,0.740234375,0.7255859375,0.658203125,0.5576171875,0.4716796875,0.4384765625,0.46484375,0.5302734375,0.5859375,0.576171875,0.4990234375,0.39453125,0.3173828125,0.30859375,0.3642578125,0.4345703125,0.49609375,0.533203125,0.5380859375,0.525390625,0.517578125,0.5302734375,0.544921875,0.54296875,0.52734375,0.5078125,0.4990234375,0.5068359375,0.5302734375,0.5478515625,0.5322265625,0.48046875,0.4140625,0.3623046875,0.345703125,0.3642578125,0.40625,0.5,0.619140625,0.708984375,0.7373046875,0.7021484375,0.634765625,0.5654296875,0.5107421875,0.48828125,0.36328125,0.2734375,0.220703125,0.220703125,0.2587890625,0.30859375,0.3720703125,0.4443359375,0.513671875,0.568359375,0.6064453125,0.634765625,0.6533203125,0.63671875,0.5849609375,0.5185546875,0.466796875,0.451171875,0.46875,0.5078125,0.5849609375,0.673828125,0.728515625,0.7265625,0.6748046875,0.6044921875,0.5283203125,0.4501953125,0.40234375,0.4140625,0.4755859375,0.55078125,0.6044921875,0.640625,0.6337890625,0.57421875,0.4833984375,0.3994140625,0.357421875,0.3642578125,0.3916015625,0.451171875,0.5380859375,0.6298828125,0.69921875,0.734375,0.740234375,0.728515625,0.6708984375,0.5634765625,0.435546875,0.328125,0.2705078125,0.2587890625,0.251953125,0.2265625,0.2041015625,0.208984375,0.2529296875,0.3212890625,0.39453125,0.4755859375,0.5859375,0.6953125,0.767578125,0.787109375,0.767578125,0.740234375,0.7177734375,0.7080078125,0.70703125,0.701171875,0.6826171875,0.6484375,0.6044921875,0.5615234375,0.529296875,0.5078125,0.4912109375,0.4697265625,0.4375,0.39453125,0.3583984375,0.3671875,0.435546875,0.546875,0.6572265625,0.7255859375,0.740234375,0.7412109375,0.7373046875,0.70703125,0.6376953125,0.541015625,0.4423828125,0.3642578125,0.2890625,0.2138671875,0.1728515625,0.1923828125,0.2607421875,0.33984375,0.39453125,0.4482421875,0.5234375,0.5966796875,0.6318359375,0.6201171875,0.5771484375,0.5302734375,0.4921875,0.4853515625,0.5107421875,0.548828125,0.57421875,0.5673828125,0.5302734375,0.478515625,0.4091796875,0.3447265625,0.30859375,0.310546875,0.3359375,0.3642578125,0.3876953125,0.3935546875,0.375,0.3359375,0.29296875,0.2646484375,0.2587890625,0.2568359375,0.2568359375,0.28125,0.341796875,0.4326171875,0.5263671875,0.6044921875,0.6748046875,0.7255859375,0.7294921875,0.6787109375,0.5986328125,0.5302734375,0.5,0.48046875,0.4697265625,0.4853515625,0.5380859375,0.6142578125,0.6875,0.740234375,0.78515625,0.814453125,0.7919921875,0.7041015625,0.5732421875,0.44921875,0.3642578125,0.3056640625,0.3095703125,0.39453125,0.5322265625,0.666015625,0.740234375,0.740234375,0.7216796875,0.701171875,0.6708984375,0.626953125,0.572265625,0.5166015625,0.46875,0.4267578125,0.400390625,0.40625,0.44140625,0.48828125,0.5224609375,0.5302734375,0.5419921875,0.5927734375,0.662109375,0.712890625,0.7158203125,0.6728515625,0.6044921875,0.5390625,0.505859375,0.5185546875,0.568359375,0.6240234375,0.650390625,0.634765625,0.5947265625,0.5029296875,0.3798828125,0.2734375,0.216796875,0.2197265625,0.2587890625,0.306640625,0.361328125,0.416015625,0.4609375,0.4912109375,0.51171875,0.5302734375,0.5478515625,0.5625,0.5654296875,0.5576171875,0.5439453125,0.5322265625,0.5302734375,0.5322265625,0.5390625,0.546875,0.546875,0.5361328125,0.5185546875,0.5,0.4814453125,0.46484375,0.44140625,0.4052734375,0.357421875,0.3056640625,0.2587890625,0.220703125,0.220703125,0.2734375,0.36328125,0.4580078125,0.517578125,0.5302734375,0.5302734375,0.5234375,0.4970703125,0.4443359375,0.375,0.3095703125,0.2587890625,0.2294921875,0.2705078125,0.388671875,0.546875,0.6826171875,0.748046875,0.740234375,0.6953125,0.5888671875,0.447265625,0.328125,0.27734375,0.2998046875,0.3642578125,0.423828125,0.4345703125,0.39453125,0.333984375,0.2939453125,0.3046875,0.3642578125,0.44140625,0.529296875,0.599609375,0.6240234375,0.6025390625,0.5615234375,0.5302734375,0.5068359375,0.4951171875,0.49609375,0.5029296875,0.50390625,0.4921875,0.46875,0.4501953125,0.45703125,0.4853515625,0.5166015625,0.52734375,0.509765625,0.46875,0.4248046875,0.396484375,0.40625,0.4580078125,0.533203125,0.599609375,0.634765625,0.6669921875,0.7138671875,0.76171875,0.7900390625,0.7890625,0.7666015625,0.740234375,0.7080078125,0.6611328125,0.61328125,0.5849609375,0.5859375,0.6083984375,0.634765625,0.6669921875,0.7138671875,0.76171875,0.7900390625,0.7890625,0.7666015625,0.740234375,0.7177734375,0.7080078125,0.70703125,0.701171875,0.6826171875,0.6484375,0.6044921875,0.552734375,0.478515625,0.40234375,0.3505859375,0.333984375,0.3447265625,0.3642578125,0.3876953125,0.4248046875,0.4658203125,0.494140625,0.5,0.4873046875,0.46875,0.4580078125,0.478515625,0.5224609375,0.5654296875,0.5849609375,0.5703125,0.5302734375,0.484375,0.443359375,0.421875,0.4248046875,0.4453125,0.4638671875,0.46875,0.4638671875,0.4453125,0.4248046875,0.421875,0.443359375,0.484375,0.5302734375,0.5751953125,0.6181640625,0.654296875,0.6796875,0.697265625,0.7158203125,0.740234375,0.7626953125,0.763671875,0.7294921875,0.662109375,0.5859375,0.52734375,0.5,0.4912109375,0.5185546875,0.568359375,0.607421875,0.6083984375,0.56640625,0.5,0.4326171875,0.3955078125,0.4033203125,0.44921875,0.505859375,0.5380859375,0.5302734375,0.5146484375,0.5166015625,0.533203125,0.5517578125,0.5615234375,0.552734375,0.5302734375,0.498046875,0.4453125,0.3798828125,0.3203125,0.279296875,0.26171875,0.2587890625,0.265625,0.2978515625,0.3583984375,0.4306640625,0.490234375,0.5234375,0.5302734375,0.5166015625,0.458984375,0.375,0.30859375,0.2919921875,0.328125,0.39453125,0.4599609375,0.4951171875,0.4912109375,0.4609375,0.4326171875,0.43359375,0.46875,0.5146484375,0.556640625,0.587890625,0.6044921875,0.611328125,0.619140625,0.634765625,0.6591796875,0.6953125,0.7255859375,0.7294921875,0.7001953125,0.65234375,0.6044921875,0.564453125,0.55078125,0.568359375,0.607421875,0.642578125,0.6533203125,0.634765625,0.6181640625,0.6376953125,0.6787109375,0.712890625,0.7119140625,0.671875,0.6044921875,0.53515625,0.4814453125,0.4580078125,0.4638671875,0.482421875,0.48828125,0.46875,0.4501953125,0.45703125,0.4853515625,0.5166015625,0.52734375,0.509765625,0.46875,0.431640625,0.4306640625,0.4833984375,0.57421875,0.66796875,0.7275390625,0.740234375,0.7236328125,0.6494140625,0.53515625,0.43359375,0.3857421875,0.4052734375,0.46875,0.52734375,0.529296875,0.4716796875,0.3916015625,0.3349609375,0.3359375,0.39453125,0.46875,0.541015625,0.5849609375,0.5830078125,0.5419921875,0.49609375,0.46875,0.4443359375,0.404296875,0.3671875,0.35546875,0.3779296875,0.4228515625,0.46875,0.5048828125,0.5029296875,0.4609375,0.40234375,0.3603515625,0.3583984375,0.39453125,0.453125,0.5537109375,0.662109375,0.7294921875,0.7294921875,0.67578125,0.6044921875,0.529296875,0.44921875,0.3916015625,0.390625,0.2998046875,0.2568359375,0.271484375,0.3251953125,0.390625,0.4658203125,0.53515625,0.5830078125,0.60546875,0.61328125,0.6220703125,0.6259765625,0.6044921875,0.5556640625,0.4951171875,0.4462890625,0.4248046875,0.4287109375,0.4521484375,0.515625,0.5986328125,0.6572265625,0.6630859375,0.619140625,0.55078125,0.47265625,0.384765625,0.326171875,0.330078125,0.39453125,0.4814453125,0.55078125,0.599609375,0.59375,0.5283203125,0.4345703125,0.359375,0.33984375,0.376953125,0.43359375,0.5068359375,0.58203125,0.638671875,0.6669921875,0.673828125,0.673828125,0.6650390625,0.623046875,0.5458984375,0.453125,0.3759765625,0.333984375,0.3251953125,0.318359375,0.2919921875,0.265625,0.267578125,0.3076171875,0.375,0.4482421875,0.5244140625,0.6103515625,0.681640625,0.71484375,0.7099609375,0.6884765625,0.673828125,0.6689453125,0.6826171875,0.6982421875,0.697265625,0.666015625,0.6123046875,0.55078125,0.498046875,0.4755859375,0.4873046875,0.51171875,0.5234375,0.5009765625,0.4482421875,0.3935546875,0.3759765625,0.4150390625,0.5009765625,0.5966796875,0.6591796875,0.673828125,0.6767578125,0.6826171875,0.669921875,0.6220703125,0.5419921875,0.4541015625,0.376953125,0.30078125,0.220703125,0.177734375,0.201171875,0.28125,0.376953125,0.4482421875,0.5185546875,0.6142578125,0.6982421875,0.73046875,0.701171875,0.6357421875,0.5703125,0.5185546875,0.509765625,0.5439453125,0.595703125,0.6298828125,0.62109375,0.5703125,0.5048828125,0.4296875,0.3681640625,0.3388671875,0.34375,0.36328125,0.376953125,0.3857421875,0.3876953125,0.3779296875,0.3603515625,0.3408203125,0.328125,0.3251953125,0.3212890625,0.306640625,0.3037109375,0.3330078125,0.396484375,0.4765625,0.55078125,0.626953125,0.7021484375,0.7421875,0.7197265625,0.6455078125,0.560546875,0.5,0.4453125,0.3935546875,0.376953125,0.4189453125,0.5068359375,0.6025390625,0.673828125,0.736328125,0.787109375,0.78515625,0.7119140625,0.5869140625,0.462890625,0.376953125,0.3212890625,0.3349609375,0.42578125,0.5556640625,0.666015625,0.7060546875,0.673828125,0.626953125,0.595703125,0.5771484375,0.560546875,0.5322265625,0.4873046875,0.4287109375,0.373046875,0.3447265625,0.365234375,0.4287109375,0.505859375,0.55859375,0.5703125,0.5791015625,0.619140625,0.66796875,0.693359375,0.67578125,0.62109375,0.55078125,0.484375,0.4462890625,0.45703125,0.509765625,0.5771484375,0.6201171875,0.6220703125,0.595703125,0.5166015625,0.4033203125,0.3037109375,0.2568359375,0.271484375,0.3251953125,0.3837890625,0.4287109375,0.45703125,0.4736328125,0.4921875,0.5234375,0.5703125,0.619140625,0.6572265625,0.666015625,0.64453125,0.6064453125,0.5771484375,0.5703125,0.5751953125,0.5966796875,0.619140625,0.6220703125,0.5966796875,0.55078125,0.5,0.4541015625,0.431640625,0.4287109375,0.4306640625,0.4189453125,0.3818359375,0.3251953125,0.271484375,0.2568359375,0.2998046875,0.390625,0.490234375,0.5556640625,0.5703125,0.5732421875,0.5791015625,0.5703125,0.53125,0.4658203125,0.390625,0.3251953125,0.275390625,0.279296875,0.3525390625,0.4755859375,0.5966796875,0.6669921875,0.673828125,0.646484375,0.5615234375,0.439453125,0.3359375,0.2900390625,0.3134765625,0.376953125,0.4375,0.4482421875,0.4072265625,0.3466796875,0.306640625,0.3173828125,0.376953125,0.453125,0.53515625,0.5986328125,0.6240234375,0.611328125,0.5859375,0.5703125,0.5576171875,0.5390625,0.513671875,0.4853515625,0.4599609375,0.44140625,0.4287109375,0.427734375,0.455078125,0.4990234375,0.529296875,0.5263671875,0.4873046875,0.4287109375,0.3720703125,0.3447265625,0.369140625,0.44140625,0.5322265625,0.5986328125,0.6220703125,0.634765625,0.654296875,0.67578125,0.689453125,0.69140625,0.68359375,0.673828125,0.66015625,0.640625,0.619140625,0.60546875,0.6044921875,0.611328125,0.6220703125,0.634765625,0.654296875,0.67578125,0.689453125,0.69140625,0.68359375,0.673828125,0.6689453125,0.6826171875,0.6982421875,0.697265625,0.666015625,0.6123046875,0.55078125,0.48046875,0.384765625,0.296875,0.2548828125,0.271484375,0.3232421875,0.376953125,0.435546875,0.5087890625,0.5673828125,0.5810546875,0.544921875,0.484375,0.4287109375,0.3916015625,0.4072265625,0.474609375,0.5595703125,0.6171875,0.619140625,0.5703125,0.5068359375,0.4453125,0.40234375,0.390625,0.4052734375,0.423828125,0.4287109375,0.423828125,0.4052734375,0.390625,0.40234375,0.4453125,0.5068359375,0.5703125,0.630859375,0.681640625,0.708984375,0.7060546875,0.6845703125,0.6689453125,0.673828125,0.6865234375,0.7021484375,0.7041015625,0.6748046875,0.619140625,0.5546875,0.5,0.4599609375,0.46484375,0.5087890625,0.560546875,0.5849609375,0.5625,0.5,0.4384765625,0.423828125,0.46484375,0.53515625,0.5947265625,0.6083984375,0.5703125,0.521484375,0.490234375,0.4892578125,0.5146484375,0.55078125,0.5732421875,0.5703125,0.5546875,0.5166015625,0.4609375,0.400390625,0.353515625,0.330078125,0.3251953125,0.3310546875,0.361328125,0.416015625,0.48046875,0.5341796875,0.564453125,0.5703125,0.5576171875,0.5009765625,0.419921875,0.357421875,0.34375,0.380859375,0.4482421875,0.5087890625,0.5234375,0.486328125,0.4248046875,0.37890625,0.3798828125,0.4287109375,0.486328125,0.5244140625,0.541015625,0.544921875,0.55078125,0.576171875,0.6220703125,0.677734375,0.7421875,0.7822265625,0.767578125,0.7021484375,0.619140625,0.55078125,0.494140625,0.46484375,0.4765625,0.525390625,0.5849609375,0.6220703125,0.6220703125,0.6201171875,0.6455078125,0.681640625,0.697265625,0.67578125,0.62109375,0.55078125,0.48046875,0.4189453125,0.3857421875,0.388671875,0.4130859375,0.431640625,0.4287109375,0.427734375,0.455078125,0.4990234375,0.529296875,0.5263671875,0.4873046875,0.4287109375,0.375,0.359375,0.4033203125,0.4931640625,0.59375,0.6591796875,0.673828125,0.658203125,0.5859375,0.478515625,0.3837890625,0.341796875,0.365234375,0.4287109375,0.4892578125,0.501953125,0.4658203125,0.41015625,0.375,0.3876953125,0.4482421875,0.5244140625,0.6044921875,0.6513671875,0.6376953125,0.5703125,0.4892578125,0.4287109375,0.37109375,0.2978515625,0.2431640625,0.23828125,0.2880859375,0.3623046875,0.4287109375,0.48046875,0.4921875,0.4619140625,0.4150390625,0.384765625,0.396484375,0.4482421875,0.51953125,0.619140625,0.70703125,0.73828125,0.7021484375,0.626953125,0.55078125,0.4716796875,0.375,0.2958984375,0.4052734375,0.3388671875,0.3203125,0.3544921875,0.419921875,0.4912109375,0.5595703125,0.6044921875,0.6142578125,0.595703125,0.57421875,0.5693359375,0.5673828125,0.5517578125,0.5224609375,0.486328125,0.45703125,0.44140625,0.439453125,0.453125,0.50390625,0.5732421875,0.6220703125,0.623046875,0.578125,0.509765625,0.4296875,0.3369140625,0.271484375,0.2724609375,0.3388671875,0.431640625,0.509765625,0.56640625,0.568359375,0.5126953125,0.4326171875,0.375,0.375,0.4296875,0.5,0.568359375,0.6142578125,0.6240234375,0.6064453125,0.5849609375,0.5791015625,0.5751953125,0.556640625,0.5205078125,0.478515625,0.4423828125,0.423828125,0.419921875,0.4111328125,0.3779296875,0.33984375,0.328125,0.357421875,0.41796875,0.4892578125,0.5615234375,0.6259765625,0.66015625,0.654296875,0.62109375,0.5888671875,0.5791015625,0.5859375,0.6171875,0.6533203125,0.6650390625,0.6376953125,0.5791015625,0.509765625,0.4501953125,0.4375,0.47265625,0.5263671875,0.5615234375,0.548828125,0.4892578125,0.423828125,0.3828125,0.390625,0.443359375,0.515625,0.5673828125,0.5791015625,0.5859375,0.609375,0.62890625,0.6201171875,0.5732421875,0.5029296875,0.4296875,0.3515625,0.265625,0.2138671875,0.23046875,0.3095703125,0.41015625,0.4892578125,0.5693359375,0.669921875,0.75,0.7685546875,0.71875,0.6357421875,0.5595703125,0.5009765625,0.490234375,0.529296875,0.5888671875,0.6279296875,0.6181640625,0.5595703125,0.48828125,0.419921875,0.376953125,0.3720703125,0.3955078125,0.421875,0.4296875,0.4306640625,0.4306640625,0.4296875,0.42578125,0.4228515625,0.419921875,0.419921875,0.412109375,0.380859375,0.34765625,0.3408203125,0.3740234375,0.4375,0.509765625,0.5888671875,0.6796875,0.7412109375,0.7373046875,0.6689453125,0.576171875,0.5,0.4248046875,0.34375,0.296875,0.3173828125,0.3994140625,0.5,0.5791015625,0.654296875,0.728515625,0.76171875,0.72265625,0.6240234375,0.5126953125,0.4296875,0.373046875,0.37890625,0.44921875,0.5478515625,0.6220703125,0.6318359375,0.5791015625,0.51953125,0.4931640625,0.5009765625,0.5234375,0.5302734375,0.501953125,0.439453125,0.3740234375,0.337890625,0.3515625,0.4130859375,0.4912109375,0.546875,0.5595703125,0.568359375,0.603515625,0.646484375,0.6630859375,0.638671875,0.580078125,0.509765625,0.44140625,0.3974609375,0.3984375,0.4453125,0.51171875,0.5595703125,0.5693359375,0.5546875,0.494140625,0.408203125,0.33984375,0.3212890625,0.3544921875,0.419921875,0.4814453125,0.509765625,0.5029296875,0.4814453125,0.47265625,0.4990234375,0.5595703125,0.6259765625,0.67578125,0.6884765625,0.6591796875,0.6083984375,0.568359375,0.5595703125,0.5673828125,0.599609375,0.6376953125,0.650390625,0.625,0.5673828125,0.5,0.4404296875,0.421875,0.443359375,0.4814453125,0.5009765625,0.48046875,0.419921875,0.3544921875,0.3203125,0.3388671875,0.4052734375,0.48828125,0.5458984375,0.5595703125,0.5654296875,0.58984375,0.6103515625,0.603515625,0.5595703125,0.4912109375,0.419921875,0.35546875,0.3251953125,0.3486328125,0.4208984375,0.5087890625,0.5673828125,0.5791015625,0.564453125,0.5029296875,0.416015625,0.3466796875,0.328125,0.36328125,0.4296875,0.4892578125,0.5,0.4599609375,0.3994140625,0.359375,0.3701171875,0.4296875,0.5029296875,0.572265625,0.615234375,0.6201171875,0.5947265625,0.568359375,0.5595703125,0.5546875,0.5400390625,0.5146484375,0.484375,0.458984375,0.4443359375,0.439453125,0.4482421875,0.4873046875,0.5390625,0.5693359375,0.5576171875,0.5078125,0.439453125,0.3740234375,0.337890625,0.3525390625,0.416015625,0.4970703125,0.5546875,0.5693359375,0.5712890625,0.5751953125,0.578125,0.5810546875,0.58203125,0.5810546875,0.5791015625,0.5771484375,0.57421875,0.5703125,0.5673828125,0.56640625,0.5673828125,0.5693359375,0.5712890625,0.5751953125,0.578125,0.5810546875,0.58203125,0.5810546875,0.5791015625,0.5859375,0.6171875,0.6533203125,0.6650390625,0.6376953125,0.5791015625,0.509765625,0.4296875,0.3291015625,0.248046875,0.2275390625,0.2744140625,0.35546875,0.4296875,0.505859375,0.5966796875,0.6630859375,0.6650390625,0.6044921875,0.515625,0.439453125,0.3857421875,0.390625,0.45703125,0.5478515625,0.6123046875,0.615234375,0.5595703125,0.48828125,0.4228515625,0.3828125,0.380859375,0.40625,0.4326171875,0.439453125,0.4326171875,0.40625,0.380859375,0.3828125,0.4228515625,0.48828125,0.5595703125,0.6279296875,0.6806640625,0.6962890625,0.671875,0.6240234375,0.5869140625,0.5791015625,0.5888671875,0.6201171875,0.6533203125,0.66015625,0.62890625,0.568359375,0.5,0.443359375,0.4345703125,0.4755859375,0.53515625,0.572265625,0.5595703125,0.5,0.4404296875,0.435546875,0.486328125,0.5615234375,0.615234375,0.6142578125,0.5595703125,0.4931640625,0.4443359375,0.4326171875,0.4619140625,0.5126953125,0.5517578125,0.5595703125,0.5546875,0.5361328125,0.5048828125,0.46875,0.4384765625,0.4228515625,0.419921875,0.4228515625,0.4404296875,0.470703125,0.5078125,0.5390625,0.5556640625,0.5595703125,0.5478515625,0.4970703125,0.4287109375,0.3798828125,0.3779296875,0.421875,0.4892578125,0.548828125,0.5537109375,0.50390625,0.4306640625,0.37890625,0.3828125,0.439453125,0.5009765625,0.5283203125,0.51953125,0.4951171875,0.484375,0.509765625,0.5693359375,0.64453125,0.7275390625,0.779296875,0.763671875,0.6865234375,0.5888671875,0.509765625,0.443359375,0.400390625,0.4013671875,0.4482421875,0.5126953125,0.5595703125,0.5693359375,0.576171875,0.609375,0.6494140625,0.6640625,0.638671875,0.580078125,0.509765625,0.4384765625,0.3779296875,0.3505859375,0.36328125,0.4013671875,0.4326171875,0.439453125,0.4482421875,0.4873046875,0.5390625,0.5693359375,0.5576171875,0.5078125,0.439453125,0.375,0.3408203125,0.3583984375,0.4248046875,0.5087890625,0.56640625,0.5791015625,0.56640625,0.5078125,0.4228515625,0.35546875,0.337890625,0.373046875,0.439453125,0.5009765625,0.517578125,0.48828125,0.4404296875,0.412109375,0.4287109375,0.4892578125,0.5673828125,0.6533203125,0.70703125,0.6923828125,0.615234375,0.517578125,0.439453125,0.36328125,0.2724609375,0.2080078125,0.20703125,0.271484375,0.3623046875,0.439453125,0.4990234375,0.515625,0.4873046875,0.44140625,0.4130859375,0.4296875,0.4892578125,0.568359375,0.6630859375,0.734375,0.740234375,0.6796875,0.5888671875,0.509765625,0.4287109375,0.328125,0.248046875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.3828125,0.3916015625,0.4365234375,0.505859375,0.5791015625,0.6455078125,0.6796875,0.658203125,0.5869140625,0.4970703125,0.435546875,0.419921875,0.421875,0.4384765625,0.470703125,0.5087890625,0.541015625,0.5576171875,0.5595703125,0.56640625,0.59765625,0.6357421875,0.6484375,0.62109375,0.560546875,0.4892578125,0.41015625,0.31640625,0.2509765625,0.251953125,0.318359375,0.4111328125,0.4892578125,0.5498046875,0.568359375,0.5458984375,0.5068359375,0.486328125,0.5078125,0.5693359375,0.6357421875,0.669921875,0.6494140625,0.580078125,0.4931640625,0.43359375,0.419921875,0.4228515625,0.44140625,0.4736328125,0.5107421875,0.5419921875,0.5576171875,0.5595703125,0.546875,0.498046875,0.4326171875,0.3896484375,0.3935546875,0.4404296875,0.509765625,0.5771484375,0.6201171875,0.6171875,0.5673828125,0.4990234375,0.44921875,0.439453125,0.4521484375,0.4990234375,0.5615234375,0.6025390625,0.599609375,0.5546875,0.4892578125,0.43359375,0.42578125,0.46875,0.53125,0.5712890625,0.5595703125,0.5,0.427734375,0.3642578125,0.33203125,0.3408203125,0.376953125,0.41015625,0.419921875,0.4345703125,0.4931640625,0.5771484375,0.642578125,0.6591796875,0.6240234375,0.5595703125,0.4794921875,0.3779296875,0.2958984375,0.27734375,0.3271484375,0.412109375,0.4892578125,0.5673828125,0.6533203125,0.7041015625,0.685546875,0.603515625,0.5009765625,0.419921875,0.359375,0.3486328125,0.388671875,0.4501953125,0.4931640625,0.486328125,0.4296875,0.3671875,0.3359375,0.3583984375,0.4267578125,0.5107421875,0.568359375,0.5791015625,0.5771484375,0.5751953125,0.5732421875,0.5732421875,0.5751953125,0.5771484375,0.5791015625,0.5693359375,0.5185546875,0.4462890625,0.392578125,0.384765625,0.423828125,0.4892578125,0.568359375,0.662109375,0.7314453125,0.7373046875,0.6767578125,0.5869140625,0.509765625,0.4296875,0.3271484375,0.2431640625,0.220703125,0.2685546875,0.3525390625,0.4296875,0.5126953125,0.6240234375,0.72265625,0.76171875,0.728515625,0.654296875,0.5791015625,0.517578125,0.490234375,0.498046875,0.5205078125,0.5283203125,0.5009765625,0.439453125,0.384765625,0.3896484375,0.4560546875,0.5478515625,0.61328125,0.6162109375,0.5595703125,0.486328125,0.4169921875,0.3720703125,0.3662109375,0.388671875,0.4130859375,0.419921875,0.431640625,0.4833984375,0.5556640625,0.6083984375,0.6162109375,0.5751953125,0.509765625,0.439453125,0.3798828125,0.3515625,0.3623046875,0.3994140625,0.431640625,0.439453125,0.4326171875,0.4052734375,0.37890625,0.3798828125,0.419921875,0.486328125,0.5595703125,0.6162109375,0.6103515625,0.541015625,0.4443359375,0.3720703125,0.365234375,0.419921875,0.48828125,0.5419921875,0.5595703125,0.53515625,0.4873046875,0.44921875,0.439453125,0.451171875,0.4990234375,0.5634765625,0.6064453125,0.6044921875,0.55859375,0.4892578125,0.4306640625,0.427734375,0.482421875,0.560546875,0.6171875,0.6162109375,0.5595703125,0.48828125,0.4228515625,0.3828125,0.380859375,0.40625,0.4326171875,0.439453125,0.453125,0.509765625,0.5927734375,0.6572265625,0.6728515625,0.6357421875,0.5693359375,0.49609375,0.423828125,0.3759765625,0.3662109375,0.38671875,0.412109375,0.419921875,0.4150390625,0.3955078125,0.37890625,0.390625,0.4384765625,0.5078125,0.5791015625,0.63671875,0.6455078125,0.6025390625,0.5400390625,0.4990234375,0.509765625,0.5693359375,0.63671875,0.673828125,0.6591796875,0.595703125,0.5126953125,0.4541015625,0.439453125,0.4404296875,0.453125,0.478515625,0.509765625,0.5380859375,0.5546875,0.5595703125,0.5703125,0.6123046875,0.6650390625,0.6943359375,0.6796875,0.6279296875,0.5595703125,0.4873046875,0.4189453125,0.373046875,0.365234375,0.38671875,0.412109375,0.419921875,0.421875,0.4228515625,0.423828125,0.42578125,0.4267578125,0.427734375,0.4296875,0.4306640625,0.431640625,0.4306640625,0.4287109375,0.427734375,0.4287109375,0.4296875,0.431640625,0.4326171875,0.4345703125,0.435546875,0.4365234375,0.4384765625,0.439453125,0.4521484375,0.4990234375,0.5615234375,0.6025390625,0.599609375,0.5546875,0.4892578125,0.4150390625,0.3359375,0.291015625,0.3134765625,0.3974609375,0.5,0.5791015625,0.6572265625,0.7490234375,0.814453125,0.814453125,0.7490234375,0.6572265625,0.5791015625,0.517578125,0.4892578125,0.49609375,0.517578125,0.5263671875,0.5,0.439453125,0.3759765625,0.3388671875,0.3525390625,0.412109375,0.490234375,0.544921875,0.5595703125,0.5478515625,0.4921875,0.41015625,0.3447265625,0.3271484375,0.36328125,0.4296875,0.4990234375,0.5517578125,0.564453125,0.53125,0.4755859375,0.431640625,0.419921875,0.4296875,0.48046875,0.552734375,0.6064453125,0.6142578125,0.5751953125,0.509765625,0.451171875,0.439453125,0.4775390625,0.5361328125,0.5751953125,0.56640625,0.509765625,0.451171875,0.4345703125,0.4599609375,0.5009765625,0.5224609375,0.501953125,0.439453125,0.3701171875,0.3173828125,0.3046875,0.3349609375,0.3876953125,0.4296875,0.439453125,0.443359375,0.4609375,0.4931640625,0.53125,0.5615234375,0.5771484375,0.5791015625,0.57421875,0.5546875,0.51953125,0.4794921875,0.4443359375,0.4248046875,0.419921875,0.41015625,0.3779296875,0.341796875,0.33203125,0.361328125,0.4208984375,0.4892578125,0.5478515625,0.56640625,0.5439453125,0.5048828125,0.482421875,0.5009765625,0.5595703125,0.61328125,0.60546875,0.5361328125,0.4423828125,0.3759765625,0.3720703125,0.4296875,0.5107421875,0.611328125,0.69140625,0.7080078125,0.6572265625,0.57421875,0.5,0.431640625,0.373046875,0.34375,0.3515625,0.384765625,0.4140625,0.419921875,0.4296875,0.478515625,0.5478515625,0.5966796875,0.6005859375,0.5576171875,0.4892578125,0.421875,0.37890625,0.3818359375,0.431640625,0.5,0.5498046875,0.5595703125,0.5673828125,0.607421875,0.66015625,0.6923828125,0.68359375,0.6357421875,0.5693359375,0.5,0.4326171875,0.3896484375,0.3837890625,0.40625,0.431640625,0.439453125,0.4345703125,0.412109375,0.3916015625,0.3984375,0.4404296875,0.5078125,0.5791015625,0.6357421875,0.6357421875,0.5771484375,0.49609375,0.439453125,0.44140625,0.5,0.5810546875,0.68359375,0.7666015625,0.787109375,0.73828125,0.6552734375,0.5791015625,0.5009765625,0.4072265625,0.337890625,0.3349609375,0.3984375,0.490234375,0.5693359375,0.6279296875,0.6328125,0.580078125,0.50390625,0.4501953125,0.453125,0.509765625,0.587890625,0.6806640625,0.7470703125,0.748046875,0.6826171875,0.5888671875,0.509765625,0.431640625,0.34765625,0.2998046875,0.400390625,0.4443359375,0.515625,0.5986328125,0.673828125,0.736328125,0.7529296875,0.6962890625,0.578125,0.4453125,0.353515625,0.3251953125,0.322265625,0.3505859375,0.4111328125,0.484375,0.544921875,0.5732421875,0.5703125,0.5673828125,0.5859375,0.6103515625,0.61328125,0.580078125,0.5185546875,0.4482421875,0.369140625,0.28125,0.22265625,0.2265625,0.2919921875,0.3779296875,0.4482421875,0.501953125,0.525390625,0.5224609375,0.51171875,0.5185546875,0.556640625,0.6220703125,0.6845703125,0.701171875,0.6484375,0.5400390625,0.419921875,0.3427734375,0.3251953125,0.3330078125,0.3681640625,0.4306640625,0.5,0.552734375,0.57421875,0.5703125,0.5498046875,0.498046875,0.4384765625,0.4072265625,0.423828125,0.48046875,0.55078125,0.6162109375,0.6484375,0.626953125,0.5595703125,0.48046875,0.431640625,0.4287109375,0.4462890625,0.486328125,0.5302734375,0.552734375,0.5390625,0.498046875,0.4482421875,0.4091796875,0.419921875,0.4755859375,0.541015625,0.5771484375,0.560546875,0.5,0.423828125,0.3447265625,0.28515625,0.2646484375,0.28125,0.3095703125,0.3251953125,0.349609375,0.4228515625,0.525390625,0.611328125,0.646484375,0.625,0.5703125,0.4970703125,0.396484375,0.3037109375,0.267578125,0.298828125,0.3720703125,0.4482421875,0.5244140625,0.6044921875,0.6435546875,0.611328125,0.517578125,0.408203125,0.3251953125,0.2646484375,0.248046875,0.2841796875,0.349609375,0.4052734375,0.416015625,0.376953125,0.3359375,0.3408203125,0.4052734375,0.509765625,0.611328125,0.669921875,0.673828125,0.662109375,0.6484375,0.638671875,0.638671875,0.6484375,0.662109375,0.673828125,0.669921875,0.6142578125,0.5205078125,0.4296875,0.3837890625,0.39453125,0.4482421875,0.5185546875,0.611328125,0.69140625,0.71875,0.6845703125,0.6171875,0.55078125,0.4775390625,0.3701171875,0.2666015625,0.2158203125,0.236328125,0.302734375,0.376953125,0.462890625,0.5869140625,0.7119140625,0.78515625,0.787109375,0.736328125,0.673828125,0.6162109375,0.578125,0.5576171875,0.544921875,0.5244140625,0.4853515625,0.4287109375,0.3828125,0.396484375,0.4697265625,0.5634765625,0.6279296875,0.6279296875,0.5703125,0.494140625,0.412109375,0.3447265625,0.310546875,0.3095703125,0.3212890625,0.3251953125,0.33984375,0.40234375,0.498046875,0.583984375,0.623046875,0.60546875,0.55078125,0.48828125,0.4287109375,0.390625,0.3837890625,0.40234375,0.4228515625,0.4287109375,0.421875,0.3974609375,0.3759765625,0.3828125,0.427734375,0.4970703125,0.5703125,0.6259765625,0.6123046875,0.525390625,0.4052734375,0.30859375,0.28125,0.3251953125,0.3876953125,0.4453125,0.4794921875,0.48046875,0.4580078125,0.435546875,0.4287109375,0.439453125,0.4833984375,0.541015625,0.576171875,0.5673828125,0.517578125,0.4482421875,0.3896484375,0.3876953125,0.447265625,0.5361328125,0.60546875,0.6171875,0.5703125,0.5068359375,0.4453125,0.40234375,0.390625,0.4052734375,0.423828125,0.4287109375,0.443359375,0.5087890625,0.60546875,0.6865234375,0.7158203125,0.6865234375,0.6220703125,0.5439453125,0.44921875,0.3623046875,0.3095703125,0.298828125,0.3125,0.3251953125,0.3349609375,0.349609375,0.3828125,0.4443359375,0.5263671875,0.607421875,0.673828125,0.7216796875,0.71875,0.6650390625,0.5947265625,0.55078125,0.5615234375,0.6220703125,0.6884765625,0.7236328125,0.701171875,0.625,0.5263671875,0.453125,0.4287109375,0.4208984375,0.423828125,0.4462890625,0.4833984375,0.5244140625,0.5556640625,0.5703125,0.5888671875,0.6318359375,0.6796875,0.701171875,0.681640625,0.630859375,0.5703125,0.5029296875,0.4228515625,0.3486328125,0.3056640625,0.298828125,0.3125,0.3251953125,0.3359375,0.34375,0.3486328125,0.353515625,0.359375,0.3671875,0.376953125,0.3857421875,0.3876953125,0.3818359375,0.373046875,0.3671875,0.369140625,0.376953125,0.38671875,0.39453125,0.400390625,0.4052734375,0.4111328125,0.4189453125,0.4287109375,0.4462890625,0.486328125,0.5302734375,0.552734375,0.5390625,0.498046875,0.4482421875,0.39453125,0.349609375,0.3447265625,0.3994140625,0.4990234375,0.6015625,0.673828125,0.7412109375,0.822265625,0.87890625,0.87890625,0.822265625,0.7412109375,0.673828125,0.615234375,0.5703125,0.5419921875,0.525390625,0.5068359375,0.4755859375,0.4287109375,0.380859375,0.35546875,0.369140625,0.423828125,0.4951171875,0.5498046875,0.5703125,0.5654296875,0.5078125,0.4140625,0.328125,0.2900390625,0.3134765625,0.376953125,0.447265625,0.5,0.5087890625,0.4697265625,0.40234375,0.3466796875,0.3251953125,0.3291015625,0.384765625,0.478515625,0.5693359375,0.615234375,0.6044921875,0.55078125,0.4990234375,0.4833984375,0.509765625,0.5576171875,0.59375,0.591796875,0.55078125,0.5087890625,0.498046875,0.5146484375,0.53515625,0.5322265625,0.494140625,0.4287109375,0.359375,0.306640625,0.2939453125,0.32421875,0.376953125,0.4189453125,0.4287109375,0.4365234375,0.4716796875,0.5341796875,0.603515625,0.6552734375,0.677734375,0.673828125,0.65625,0.61328125,0.541015625,0.4580078125,0.3857421875,0.3427734375,0.3251953125,0.3115234375,0.2890625,0.2763671875,0.291015625,0.3359375,0.3935546875,0.4482421875,0.4931640625,0.515625,0.5146484375,0.50390625,0.501953125,0.5244140625,0.5703125,0.60546875,0.5771484375,0.490234375,0.3876953125,0.3193359375,0.3193359375,0.376953125,0.45703125,0.5537109375,0.6328125,0.65625,0.6201171875,0.556640625,0.5,0.447265625,0.39453125,0.3544921875,0.3349609375,0.33203125,0.3330078125,0.3251953125,0.328125,0.376953125,0.4560546875,0.5234375,0.544921875,0.513671875,0.4482421875,0.3828125,0.3505859375,0.3720703125,0.439453125,0.5185546875,0.5673828125,0.5703125,0.568359375,0.5966796875,0.64453125,0.68359375,0.693359375,0.6689453125,0.6220703125,0.56640625,0.5,0.439453125,0.4052734375,0.40234375,0.416015625,0.4287109375,0.4365234375,0.4375,0.4482421875,0.482421875,0.541015625,0.609375,0.673828125,0.71875,0.701171875,0.6201171875,0.517578125,0.4462890625,0.4423828125,0.5,0.58203125,0.69140625,0.7890625,0.830078125,0.8046875,0.7392578125,0.673828125,0.6025390625,0.509765625,0.43359375,0.4150390625,0.462890625,0.544921875,0.6220703125,0.681640625,0.689453125,0.6416015625,0.56640625,0.5087890625,0.5029296875,0.55078125,0.62109375,0.70703125,0.7724609375,0.7763671875,0.7177734375,0.6298828125,0.55078125,0.4775390625,0.41015625,0.3857421875,0.447265625,0.5048828125,0.58203125,0.6650390625,0.740234375,0.802734375,0.8115234375,0.7373046875,0.5908203125,0.4248046875,0.3056640625,0.2587890625,0.2431640625,0.2724609375,0.34765625,0.44140625,0.5166015625,0.5458984375,0.5302734375,0.5107421875,0.5166015625,0.53515625,0.541015625,0.517578125,0.4638671875,0.39453125,0.318359375,0.2392578125,0.1923828125,0.2041015625,0.265625,0.33984375,0.39453125,0.4345703125,0.455078125,0.4638671875,0.4775390625,0.5107421875,0.5654296875,0.634765625,0.6962890625,0.703125,0.6318359375,0.501953125,0.365234375,0.27734375,0.2587890625,0.2685546875,0.3173828125,0.3974609375,0.48046875,0.53515625,0.548828125,0.5302734375,0.49609375,0.4443359375,0.40234375,0.4033203125,0.4521484375,0.529296875,0.6044921875,0.66796875,0.6884765625,0.6513671875,0.57421875,0.4951171875,0.45703125,0.46875,0.49609375,0.5166015625,0.51953125,0.49609375,0.4560546875,0.41796875,0.39453125,0.388671875,0.4287109375,0.501953125,0.568359375,0.5927734375,0.564453125,0.5,0.4208984375,0.3232421875,0.2373046875,0.1923828125,0.197265625,0.228515625,0.2587890625,0.296875,0.3759765625,0.474609375,0.5546875,0.5869140625,0.5712890625,0.5302734375,0.47265625,0.380859375,0.2890625,0.2421875,0.2587890625,0.3212890625,0.39453125,0.470703125,0.548828125,0.5849609375,0.5498046875,0.4521484375,0.341796875,0.2587890625,0.1943359375,0.166015625,0.189453125,0.255859375,0.3291015625,0.3701171875,0.3642578125,0.3583984375,0.4052734375,0.5048828125,0.6240234375,0.716796875,0.75390625,0.740234375,0.7109375,0.67578125,0.6513671875,0.6513671875,0.67578125,0.7109375,0.740234375,0.7509765625,0.7021484375,0.5966796875,0.474609375,0.3857421875,0.3623046875,0.39453125,0.44921875,0.53515625,0.6240234375,0.6796875,0.6845703125,0.650390625,0.6044921875,0.544921875,0.4404296875,0.3251953125,0.2509765625,0.244140625,0.2939453125,0.3642578125,0.44921875,0.5732421875,0.7041015625,0.7919921875,0.814453125,0.78515625,0.740234375,0.6962890625,0.65625,0.62109375,0.587890625,0.552734375,0.513671875,0.46875,0.4365234375,0.4521484375,0.5107421875,0.576171875,0.6103515625,0.591796875,0.5302734375,0.4541015625,0.3681640625,0.294921875,0.25390625,0.24609375,0.2548828125,0.2587890625,0.2734375,0.341796875,0.4521484375,0.5634765625,0.6318359375,0.640625,0.6044921875,0.5576171875,0.5078125,0.46875,0.4521484375,0.4560546875,0.4658203125,0.46875,0.4609375,0.4267578125,0.38671875,0.3720703125,0.3984375,0.458984375,0.5302734375,0.5869140625,0.580078125,0.4990234375,0.3779296875,0.2724609375,0.2314453125,0.2587890625,0.3076171875,0.3662109375,0.421875,0.4580078125,0.4716796875,0.470703125,0.46875,0.4775390625,0.509765625,0.546875,0.5576171875,0.52734375,0.4658203125,0.39453125,0.333984375,0.32421875,0.375,0.4609375,0.5361328125,0.560546875,0.5302734375,0.484375,0.443359375,0.421875,0.4248046875,0.4453125,0.4638671875,0.46875,0.4833984375,0.544921875,0.6357421875,0.708984375,0.7333984375,0.701171875,0.634765625,0.552734375,0.439453125,0.322265625,0.2421875,0.216796875,0.232421875,0.2587890625,0.2890625,0.3408203125,0.4189453125,0.5166015625,0.6123046875,0.6884765625,0.740234375,0.771484375,0.75,0.681640625,0.6044921875,0.560546875,0.57421875,0.634765625,0.7041015625,0.751953125,0.748046875,0.685546875,0.58984375,0.5087890625,0.46875,0.44140625,0.4140625,0.4033203125,0.4189453125,0.45703125,0.4990234375,0.5302734375,0.5615234375,0.607421875,0.646484375,0.654296875,0.6259765625,0.5771484375,0.5302734375,0.4755859375,0.39453125,0.3056640625,0.2421875,0.220703125,0.2333984375,0.2587890625,0.283203125,0.2998046875,0.30859375,0.314453125,0.3232421875,0.33984375,0.3642578125,0.3857421875,0.3896484375,0.375,0.3525390625,0.337890625,0.341796875,0.3642578125,0.388671875,0.4052734375,0.4140625,0.4189453125,0.427734375,0.4443359375,0.46875,0.49609375,0.5166015625,0.51953125,0.49609375,0.4560546875,0.41796875,0.39453125,0.3779296875,0.3798828125,0.4189453125,0.4990234375,0.599609375,0.685546875,0.740234375,0.7900390625,0.849609375,0.892578125,0.892578125,0.849609375,0.7900390625,0.740234375,0.6923828125,0.6376953125,0.5830078125,0.5380859375,0.5078125,0.4873046875,0.46875,0.4482421875,0.4267578125,0.4169921875,0.4296875,0.462890625,0.5,0.5302734375,0.5419921875,0.4990234375,0.4140625,0.328125,0.28515625,0.3017578125,0.3642578125,0.4345703125,0.490234375,0.5,0.4521484375,0.37109375,0.296875,0.2587890625,0.248046875,0.296875,0.40234375,0.5244140625,0.61328125,0.63671875,0.6044921875,0.5634765625,0.541015625,0.546875,0.57421875,0.6044921875,0.6171875,0.6044921875,0.5927734375,0.6044921875,0.6240234375,0.626953125,0.59765625,0.5390625,0.46875,0.3994140625,0.3466796875,0.333984375,0.3642578125,0.41796875,0.458984375,0.46875,0.4794921875,0.52734375,0.607421875,0.6904296875,0.74609375,0.759765625,0.740234375,0.70703125,0.64453125,0.5517578125,0.447265625,0.3544921875,0.2919921875,0.2587890625,0.2333984375,0.2197265625,0.2314453125,0.2705078125,0.3232421875,0.369140625,0.39453125,0.4130859375,0.4326171875,0.4521484375,0.4716796875,0.4912109375,0.5107421875,0.5302734375,0.5341796875,0.486328125,0.3994140625,0.3173828125,0.279296875,0.30078125,0.3642578125,0.439453125,0.51953125,0.5771484375,0.5908203125,0.5634765625,0.5244140625,0.5,0.4794921875,0.451171875,0.4140625,0.369140625,0.3251953125,0.287109375,0.2587890625,0.24609375,0.28515625,0.3642578125,0.44140625,0.4775390625,0.45703125,0.39453125,0.3310546875,0.310546875,0.34765625,0.4248046875,0.50390625,0.5419921875,0.5302734375,0.5087890625,0.513671875,0.546875,0.59375,0.6328125,0.6474609375,0.634765625,0.609375,0.5595703125,0.5,0.4521484375,0.4345703125,0.4443359375,0.46875,0.4951171875,0.5205078125,0.5517578125,0.59375,0.642578125,0.693359375,0.740234375,0.7685546875,0.73046875,0.6318359375,0.5185546875,0.4443359375,0.44140625,0.5,0.5810546875,0.689453125,0.7900390625,0.8427734375,0.833984375,0.7880859375,0.740234375,0.68359375,0.595703125,0.5107421875,0.4716796875,0.4951171875,0.5615234375,0.634765625,0.697265625,0.7197265625,0.6923828125,0.6357421875,0.5830078125,0.5712890625,0.6044921875,0.6591796875,0.7333984375,0.794921875,0.806640625,0.759765625,0.6806640625,0.6044921875,0.53515625,0.48828125,0.4912109375,0.501953125,0.5439453125,0.6005859375,0.6689453125,0.740234375,0.8046875,0.8251953125,0.7646484375,0.626953125,0.45703125,0.32421875,0.2587890625,0.2255859375,0.2451171875,0.3173828125,0.4111328125,0.4833984375,0.501953125,0.46875,0.4326171875,0.4287109375,0.4501953125,0.4716796875,0.46875,0.4296875,0.3642578125,0.291015625,0.22265625,0.189453125,0.208984375,0.267578125,0.328125,0.3642578125,0.3857421875,0.392578125,0.3974609375,0.4189453125,0.466796875,0.533203125,0.6044921875,0.666015625,0.6767578125,0.61328125,0.4912109375,0.3603515625,0.27734375,0.2587890625,0.2705078125,0.322265625,0.40234375,0.4775390625,0.515625,0.5087890625,0.46875,0.4189453125,0.3642578125,0.33984375,0.3720703125,0.4560546875,0.5546875,0.634765625,0.6962890625,0.708984375,0.6650390625,0.587890625,0.51953125,0.498046875,0.5302734375,0.5673828125,0.5693359375,0.5263671875,0.4560546875,0.388671875,0.35546875,0.3642578125,0.3955078125,0.4677734375,0.5546875,0.61328125,0.6162109375,0.568359375,0.5,0.41796875,0.3095703125,0.208984375,0.15625,0.1650390625,0.2109375,0.2587890625,0.3115234375,0.3857421875,0.4609375,0.5078125,0.5166015625,0.49609375,0.46875,0.4306640625,0.357421875,0.275390625,0.228515625,0.23828125,0.29296875,0.3642578125,0.44140625,0.5224609375,0.56640625,0.5380859375,0.4482421875,0.3408203125,0.2587890625,0.189453125,0.142578125,0.1455078125,0.2041015625,0.291015625,0.36328125,0.39453125,0.4267578125,0.509765625,0.6240234375,0.7265625,0.78125,0.7783203125,0.740234375,0.689453125,0.6298828125,0.587890625,0.587890625,0.6298828125,0.689453125,0.740234375,0.771484375,0.744140625,0.6484375,0.5185546875,0.40625,0.353515625,0.3642578125,0.3994140625,0.466796875,0.5517578125,0.6240234375,0.66015625,0.658203125,0.634765625,0.59375,0.50390625,0.3916015625,0.30859375,0.2880859375,0.326171875,0.39453125,0.4755859375,0.5859375,0.6953125,0.767578125,0.787109375,0.767578125,0.740234375,0.712890625,0.68359375,0.6513671875,0.6181640625,0.5859375,0.556640625,0.5302734375,0.5126953125,0.52734375,0.5625,0.587890625,0.5810546875,0.537109375,0.46875,0.39453125,0.31640625,0.2568359375,0.2314453125,0.2373046875,0.25390625,0.2587890625,0.271484375,0.33203125,0.435546875,0.546875,0.6259765625,0.65234375,0.634765625,0.6064453125,0.5751953125,0.546875,0.5302734375,0.5263671875,0.5283203125,0.5302734375,0.5185546875,0.4697265625,0.40234375,0.3564453125,0.35546875,0.400390625,0.46875,0.5302734375,0.5419921875,0.48828125,0.3916015625,0.2958984375,0.248046875,0.2587890625,0.291015625,0.3427734375,0.408203125,0.46875,0.509765625,0.52734375,0.5302734375,0.5361328125,0.5576171875,0.57421875,0.560546875,0.509765625,0.4375,0.3642578125,0.30078125,0.2763671875,0.3056640625,0.375,0.447265625,0.482421875,0.46875,0.4453125,0.4326171875,0.44140625,0.46875,0.501953125,0.5244140625,0.5302734375,0.5419921875,0.5927734375,0.662109375,0.712890625,0.7158203125,0.6728515625,0.6044921875,0.5205078125,0.3994140625,0.275390625,0.1953125,0.1796875,0.212890625,0.2587890625,0.310546875,0.38671875,0.482421875,0.580078125,0.658203125,0.7099609375,0.740234375,0.7529296875,0.7138671875,0.634765625,0.5576171875,0.521484375,0.5419921875,0.6044921875,0.6787109375,0.7490234375,0.779296875,0.748046875,0.669921875,0.5859375,0.5302734375,0.478515625,0.4111328125,0.35546875,0.33984375,0.3681640625,0.419921875,0.46875,0.5166015625,0.5654296875,0.59375,0.5849609375,0.546875,0.5009765625,0.46875,0.4326171875,0.361328125,0.275390625,0.2119140625,0.193359375,0.2158203125,0.2587890625,0.2998046875,0.3232421875,0.328125,0.3251953125,0.330078125,0.353515625,0.39453125,0.4326171875,0.439453125,0.4140625,0.375,0.349609375,0.3564453125,0.39453125,0.435546875,0.458984375,0.4638671875,0.4609375,0.4658203125,0.4892578125,0.5302734375,0.5673828125,0.5693359375,0.5263671875,0.4560546875,0.388671875,0.35546875,0.3642578125,0.3876953125,0.431640625,0.5,0.580078125,0.654296875,0.7080078125,0.740234375,0.76953125,0.8037109375,0.828125,0.828125,0.8037109375,0.76953125,0.740234375,0.70703125,0.6513671875,0.5849609375,0.533203125,0.5087890625,0.5126953125,0.5302734375,0.541015625,0.5205078125,0.4765625,0.43359375,0.4140625,0.4287109375,0.46875,0.501953125,0.484375,0.421875,0.3525390625,0.3154296875,0.3330078125,0.39453125,0.4677734375,0.529296875,0.546875,0.5,0.4072265625,0.31640625,0.2587890625,0.2275390625,0.2548828125,0.3505859375,0.48046875,0.5927734375,0.6455078125,0.634765625,0.6064453125,0.576171875,0.5576171875,0.560546875,0.583984375,0.61328125,0.634765625,0.6611328125,0.7041015625,0.7373046875,0.7314453125,0.6806640625,0.6044921875,0.5302734375,0.4599609375,0.4072265625,0.39453125,0.4248046875,0.478515625,0.51953125,0.5302734375,0.541015625,0.5927734375,0.673828125,0.748046875,0.787109375,0.779296875,0.740234375,0.69140625,0.6259765625,0.5439453125,0.455078125,0.373046875,0.3076171875,0.2587890625,0.2197265625,0.2109375,0.240234375,0.294921875,0.3486328125,0.3740234375,0.3642578125,0.3505859375,0.3603515625,0.39453125,0.4384765625,0.47265625,0.482421875,0.46875,0.439453125,0.3740234375,0.30078125,0.2587890625,0.26953125,0.32421875,0.39453125,0.4638671875,0.5185546875,0.541015625,0.5302734375,0.50390625,0.48828125,0.5,0.5185546875,0.529296875,0.513671875,0.4609375,0.384765625,0.3115234375,0.2587890625,0.2275390625,0.2490234375,0.3173828125,0.39453125,0.4384765625,0.4248046875,0.3642578125,0.302734375,0.2900390625,0.333984375,0.4111328125,0.4794921875,0.5009765625,0.46875,0.42578125,0.3974609375,0.4052734375,0.4521484375,0.5205078125,0.5771484375,0.6044921875,0.615234375,0.59375,0.546875,0.4990234375,0.4775390625,0.490234375,0.5302734375,0.5751953125,0.6181640625,0.654296875,0.6796875,0.697265625,0.7158203125,0.740234375,0.75,0.6982421875,0.5966796875,0.4912109375,0.4306640625,0.439453125,0.5,0.578125,0.67578125,0.76171875,0.806640625,0.8017578125,0.7705078125,0.740234375,0.701171875,0.6240234375,0.53515625,0.48046875,0.4833984375,0.5341796875,0.6044921875,0.671875,0.7119140625,0.712890625,0.6787109375,0.6376953125,0.6181640625,0.634765625,0.6708984375,0.7314453125,0.7900390625,0.8095703125,0.7763671875,0.7080078125,0.634765625,0.5703125,0.5419921875,0.56640625,0.5419921875,0.544921875,0.5625,0.6064453125,0.673828125,0.7431640625,0.7890625,0.7705078125,0.6748046875,0.5322265625,0.4033203125,0.3251953125,0.27734375,0.2802734375,0.337890625,0.4169921875,0.474609375,0.4775390625,0.4287109375,0.3779296875,0.369140625,0.3994140625,0.44140625,0.462890625,0.439453125,0.376953125,0.3056640625,0.248046875,0.2265625,0.2529296875,0.3076171875,0.357421875,0.376953125,0.3818359375,0.3681640625,0.35546875,0.3671875,0.4111328125,0.478515625,0.55078125,0.615234375,0.640625,0.603515625,0.513671875,0.41015625,0.3408203125,0.3251953125,0.3369140625,0.384765625,0.453125,0.5068359375,0.5185546875,0.486328125,0.4287109375,0.3642578125,0.30078125,0.279296875,0.3251953125,0.427734375,0.5390625,0.6220703125,0.681640625,0.6923828125,0.6484375,0.578125,0.5244140625,0.521484375,0.5703125,0.6181640625,0.6103515625,0.5400390625,0.44140625,0.3623046875,0.3408203125,0.376953125,0.439453125,0.533203125,0.6240234375,0.6650390625,0.640625,0.5732421875,0.5,0.4169921875,0.3076171875,0.2099609375,0.1689453125,0.1943359375,0.259765625,0.3251953125,0.3896484375,0.4521484375,0.4951171875,0.5,0.4755859375,0.4453125,0.4287109375,0.408203125,0.3525390625,0.28515625,0.24609375,0.2548828125,0.3076171875,0.376953125,0.4560546875,0.5439453125,0.5986328125,0.5849609375,0.5068359375,0.40625,0.3251953125,0.251953125,0.1845703125,0.16015625,0.201171875,0.2919921875,0.3857421875,0.4482421875,0.5107421875,0.611328125,0.716796875,0.78125,0.7822265625,0.7353515625,0.673828125,0.60546875,0.5244140625,0.4677734375,0.4677734375,0.5244140625,0.60546875,0.673828125,0.724609375,0.7275390625,0.6650390625,0.556640625,0.4462890625,0.3828125,0.376953125,0.39453125,0.4375,0.501953125,0.56640625,0.611328125,0.6279296875,0.6220703125,0.59765625,0.52734375,0.4326171875,0.361328125,0.34375,0.380859375,0.4482421875,0.5244140625,0.6103515625,0.681640625,0.71484375,0.7099609375,0.6884765625,0.673828125,0.662109375,0.6484375,0.630859375,0.6123046875,0.5947265625,0.5810546875,0.5703125,0.56640625,0.583984375,0.603515625,0.6015625,0.564453125,0.5009765625,0.4287109375,0.3564453125,0.2919921875,0.255859375,0.2587890625,0.2890625,0.318359375,0.3251953125,0.333984375,0.3759765625,0.4501953125,0.5322265625,0.5966796875,0.625,0.6220703125,0.6103515625,0.5966796875,0.5830078125,0.57421875,0.5703125,0.5693359375,0.5703125,0.556640625,0.498046875,0.4130859375,0.345703125,0.3271484375,0.3623046875,0.4287109375,0.4951171875,0.5283203125,0.5107421875,0.44921875,0.375,0.328125,0.3251953125,0.341796875,0.37890625,0.435546875,0.4951171875,0.5419921875,0.5654296875,0.5703125,0.5751953125,0.59375,0.6044921875,0.583984375,0.52734375,0.451171875,0.376953125,0.310546875,0.2705078125,0.2763671875,0.32421875,0.3876953125,0.427734375,0.4287109375,0.421875,0.431640625,0.4609375,0.5029296875,0.5419921875,0.5654296875,0.5703125,0.5791015625,0.619140625,0.66796875,0.693359375,0.67578125,0.62109375,0.55078125,0.4677734375,0.3525390625,0.2431640625,0.1875,0.2021484375,0.26171875,0.3251953125,0.3916015625,0.47265625,0.5546875,0.6162109375,0.6494140625,0.6640625,0.673828125,0.6708984375,0.6220703125,0.54296875,0.4755859375,0.4541015625,0.4853515625,0.55078125,0.6298828125,0.720703125,0.783203125,0.7841796875,0.7236328125,0.6396484375,0.5703125,0.4990234375,0.4013671875,0.3125,0.275390625,0.30078125,0.3642578125,0.4287109375,0.490234375,0.541015625,0.560546875,0.5380859375,0.4912109375,0.447265625,0.4287109375,0.408203125,0.3525390625,0.28125,0.232421875,0.228515625,0.2666015625,0.3251953125,0.3798828125,0.4033203125,0.396484375,0.376953125,0.3701171875,0.3935546875,0.4482421875,0.4990234375,0.5078125,0.4736328125,0.421875,0.3876953125,0.396484375,0.4482421875,0.501953125,0.525390625,0.5185546875,0.4990234375,0.4921875,0.515625,0.5703125,0.6181640625,0.6103515625,0.5400390625,0.44140625,0.3623046875,0.3408203125,0.376953125,0.4326171875,0.5,0.5673828125,0.619140625,0.6494140625,0.6630859375,0.673828125,0.6845703125,0.6982421875,0.7080078125,0.7080078125,0.6982421875,0.6845703125,0.673828125,0.6533203125,0.6044921875,0.541015625,0.49609375,0.490234375,0.521484375,0.5703125,0.607421875,0.591796875,0.5244140625,0.439453125,0.3818359375,0.3798828125,0.4287109375,0.4794921875,0.484375,0.4462890625,0.3955078125,0.3671875,0.3857421875,0.4482421875,0.5234375,0.5966796875,0.6279296875,0.591796875,0.5,0.3984375,0.3251953125,0.2744140625,0.271484375,0.333984375,0.4423828125,0.552734375,0.6162109375,0.6220703125,0.6044921875,0.5673828125,0.52734375,0.509765625,0.52734375,0.5703125,0.6220703125,0.6796875,0.7529296875,0.8037109375,0.798828125,0.736328125,0.6484375,0.5703125,0.5,0.4482421875,0.4345703125,0.46484375,0.5185546875,0.5595703125,0.5703125,0.5810546875,0.62890625,0.6982421875,0.7509765625,0.7626953125,0.73046875,0.673828125,0.6142578125,0.5625,0.51953125,0.4794921875,0.4365234375,0.384765625,0.3251953125,0.2744140625,0.265625,0.3037109375,0.3642578125,0.412109375,0.4169921875,0.376953125,0.3359375,0.3349609375,0.375,0.431640625,0.4716796875,0.470703125,0.4287109375,0.3701171875,0.29296875,0.234375,0.23046875,0.2861328125,0.3701171875,0.4482421875,0.51171875,0.541015625,0.52734375,0.4892578125,0.45703125,0.458984375,0.5,0.5537109375,0.60546875,0.6220703125,0.580078125,0.4921875,0.396484375,0.3251953125,0.27734375,0.2802734375,0.333984375,0.404296875,0.4482421875,0.4375,0.376953125,0.3173828125,0.306640625,0.3505859375,0.4208984375,0.474609375,0.4775390625,0.4287109375,0.365234375,0.3056640625,0.283203125,0.3203125,0.40234375,0.490234375,0.55078125,0.5927734375,0.5966796875,0.564453125,0.521484375,0.5,0.5166015625,0.5703125,0.630859375,0.681640625,0.708984375,0.7060546875,0.6845703125,0.6689453125,0.673828125,0.669921875,0.6142578125,0.5234375,0.443359375,0.41015625,0.435546875,0.5,0.5751953125,0.654296875,0.7138671875,0.734375,0.7177734375,0.689453125,0.673828125,0.650390625,0.5859375,0.50390625,0.4453125,0.439453125,0.482421875,0.55078125,0.62109375,0.67578125,0.697265625,0.681640625,0.6455078125,0.6201171875,0.6220703125,0.6416015625,0.69140625,0.74609375,0.7724609375,0.7509765625,0.693359375,0.6220703125,0.560546875,0.5439453125,0.580078125,0.5498046875,0.513671875,0.494140625,0.517578125,0.5791015625,0.6552734375,0.728515625,0.7587890625,0.7158203125,0.6142578125,0.501953125,0.419921875,0.3623046875,0.353515625,0.3974609375,0.4619140625,0.505859375,0.498046875,0.439453125,0.380859375,0.37109375,0.4091796875,0.4658203125,0.5029296875,0.490234375,0.4296875,0.359375,0.306640625,0.2919921875,0.3212890625,0.375,0.41796875,0.4296875,0.4228515625,0.392578125,0.357421875,0.3466796875,0.376953125,0.4384765625,0.509765625,0.5771484375,0.619140625,0.6123046875,0.5576171875,0.484375,0.431640625,0.419921875,0.4296875,0.47265625,0.529296875,0.564453125,0.556640625,0.5078125,0.439453125,0.3642578125,0.287109375,0.25,0.283203125,0.3779296875,0.486328125,0.5693359375,0.62890625,0.6396484375,0.5986328125,0.5361328125,0.4931640625,0.5009765625,0.5595703125,0.615234375,0.6103515625,0.5439453125,0.451171875,0.3828125,0.3759765625,0.4296875,0.5078125,0.6083984375,0.689453125,0.7099609375,0.6611328125,0.5771484375,0.5,0.41796875,0.3154296875,0.232421875,0.2119140625,0.2607421875,0.34375,0.419921875,0.48828125,0.54296875,0.5615234375,0.5380859375,0.490234375,0.4501953125,0.439453125,0.427734375,0.3837890625,0.328125,0.2958984375,0.3076171875,0.3603515625,0.4296875,0.5087890625,0.6025390625,0.6669921875,0.6640625,0.5947265625,0.5,0.419921875,0.341796875,0.2587890625,0.2099609375,0.2294921875,0.3115234375,0.4111328125,0.4892578125,0.568359375,0.669921875,0.75390625,0.7783203125,0.7353515625,0.6552734375,0.5791015625,0.5009765625,0.4091796875,0.3447265625,0.3447265625,0.4091796875,0.5009765625,0.5791015625,0.6435546875,0.67578125,0.654296875,0.583984375,0.4990234375,0.44140625,0.4296875,0.4345703125,0.4541015625,0.486328125,0.5234375,0.552734375,0.568359375,0.5693359375,0.5556640625,0.5029296875,0.431640625,0.380859375,0.3779296875,0.421875,0.4892578125,0.5615234375,0.6259765625,0.66015625,0.654296875,0.62109375,0.5888671875,0.5791015625,0.5771484375,0.5751953125,0.5712890625,0.5673828125,0.5634765625,0.5615234375,0.5595703125,0.564453125,0.5908203125,0.6171875,0.6171875,0.578125,0.51171875,0.439453125,0.369140625,0.314453125,0.296875,0.322265625,0.37109375,0.41015625,0.419921875,0.423828125,0.4423828125,0.4775390625,0.517578125,0.55078125,0.5673828125,0.5693359375,0.5673828125,0.5654296875,0.5625,0.560546875,0.5595703125,0.5595703125,0.5595703125,0.546875,0.490234375,0.41015625,0.3486328125,0.3349609375,0.373046875,0.439453125,0.5087890625,0.5576171875,0.5654296875,0.529296875,0.4716796875,0.4287109375,0.419921875,0.4248046875,0.4423828125,0.474609375,0.5107421875,0.5400390625,0.556640625,0.5595703125,0.56640625,0.591796875,0.6171875,0.61328125,0.5703125,0.5029296875,0.4296875,0.3603515625,0.310546875,0.30078125,0.333984375,0.3896484375,0.4306640625,0.439453125,0.4404296875,0.4541015625,0.48046875,0.5126953125,0.541015625,0.556640625,0.5595703125,0.568359375,0.603515625,0.646484375,0.6630859375,0.638671875,0.580078125,0.509765625,0.427734375,0.32421875,0.23828125,0.2158203125,0.26171875,0.34375,0.419921875,0.4912109375,0.560546875,0.6083984375,0.6201171875,0.603515625,0.583984375,0.5791015625,0.5693359375,0.5205078125,0.451171875,0.40234375,0.3984375,0.44140625,0.509765625,0.58984375,0.689453125,0.765625,0.7783203125,0.72265625,0.63671875,0.5595703125,0.478515625,0.3720703125,0.2802734375,0.2490234375,0.287109375,0.3642578125,0.439453125,0.5078125,0.560546875,0.57421875,0.5458984375,0.4931640625,0.451171875,0.439453125,0.427734375,0.3837890625,0.326171875,0.2919921875,0.3017578125,0.3515625,0.419921875,0.4794921875,0.4990234375,0.474609375,0.4345703125,0.41015625,0.4296875,0.4892578125,0.5478515625,0.55859375,0.51953125,0.4599609375,0.4208984375,0.4306640625,0.4892578125,0.5498046875,0.568359375,0.544921875,0.50390625,0.48046875,0.4990234375,0.5595703125,0.615234375,0.6103515625,0.5439453125,0.451171875,0.3828125,0.3759765625,0.4296875,0.4990234375,0.56640625,0.611328125,0.62109375,0.6044921875,0.583984375,0.5791015625,0.5810546875,0.5830078125,0.5849609375,0.5849609375,0.5830078125,0.5810546875,0.5791015625,0.5673828125,0.5244140625,0.46875,0.4345703125,0.4443359375,0.4931640625,0.5595703125,0.61328125,0.6083984375,0.5419921875,0.451171875,0.38671875,0.3837890625,0.439453125,0.4990234375,0.5146484375,0.4853515625,0.4384765625,0.41015625,0.4287109375,0.4892578125,0.5673828125,0.65234375,0.7021484375,0.6826171875,0.6005859375,0.4990234375,0.419921875,0.35546875,0.3232421875,0.3447265625,0.4150390625,0.5,0.5576171875,0.5693359375,0.55859375,0.517578125,0.4658203125,0.4375,0.451171875,0.5029296875,0.5693359375,0.6455078125,0.736328125,0.7998046875,0.798828125,0.732421875,0.638671875,0.5595703125,0.4892578125,0.4375,0.423828125,0.4541015625,0.5078125,0.5498046875,0.5595703125,0.5693359375,0.6123046875,0.6689453125,0.7041015625,0.6953125,0.646484375,0.5791015625,0.517578125,0.4873046875,0.4912109375,0.5078125,0.51171875,0.4814453125,0.419921875,0.361328125,0.3515625,0.3916015625,0.4521484375,0.494140625,0.486328125,0.4296875,0.373046875,0.3642578125,0.404296875,0.46484375,0.505859375,0.49609375,0.439453125,0.3642578125,0.2783203125,0.2236328125,0.2353515625,0.310546875,0.4091796875,0.4892578125,0.5498046875,0.5634765625,0.5283203125,0.4716796875,0.43359375,0.4423828125,0.5,0.57421875,0.6552734375,0.7021484375,0.681640625,0.599609375,0.4990234375,0.419921875,0.3623046875,0.353515625,0.396484375,0.458984375,0.5,0.4892578125,0.4296875,0.3701171875,0.359375,0.400390625,0.462890625,0.505859375,0.498046875,0.439453125,0.36328125,0.28125,0.232421875,0.251953125,0.33203125,0.431640625,0.509765625,0.5673828125,0.5830078125,0.5546875,0.5087890625,0.482421875,0.5,0.5595703125,0.6279296875,0.6806640625,0.6962890625,0.671875,0.6240234375,0.5869140625,0.5791015625,0.5693359375,0.5185546875,0.4482421875,0.3955078125,0.3896484375,0.431640625,0.5,0.5712890625,0.634765625,0.6669921875,0.658203125,0.6220703125,0.5888671875,0.5791015625,0.56640625,0.5146484375,0.4453125,0.3974609375,0.396484375,0.44140625,0.509765625,0.580078125,0.638671875,0.6640625,0.6494140625,0.609375,0.576171875,0.5693359375,0.5810546875,0.6240234375,0.677734375,0.70703125,0.6923828125,0.6396484375,0.5693359375,0.5087890625,0.498046875,0.5380859375,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5029296875,0.421875,0.36328125,0.36328125,0.419921875,0.5009765625,0.6123046875,0.7138671875,0.755859375,0.7255859375,0.6533203125,0.5791015625,0.5205078125,0.5087890625,0.544921875,0.599609375,0.6337890625,0.6201171875,0.5595703125,0.4990234375,0.48828125,0.52734375,0.58984375,0.6328125,0.6259765625,0.5693359375,0.5029296875,0.4541015625,0.443359375,0.4755859375,0.5283203125,0.5693359375,0.5791015625,0.5673828125,0.5146484375,0.44140625,0.38671875,0.3798828125,0.421875,0.4892578125,0.5615234375,0.623046875,0.6552734375,0.6484375,0.615234375,0.5859375,0.5791015625,0.5908203125,0.6328125,0.685546875,0.7138671875,0.7001953125,0.6474609375,0.5791015625,0.498046875,0.388671875,0.2919921875,0.2529296875,0.2841796875,0.357421875,0.4296875,0.486328125,0.4970703125,0.4599609375,0.404296875,0.3681640625,0.380859375,0.439453125,0.5009765625,0.5244140625,0.5107421875,0.482421875,0.470703125,0.49609375,0.5595703125,0.63671875,0.7216796875,0.7734375,0.755859375,0.6767578125,0.5771484375,0.5,0.4248046875,0.33984375,0.287109375,0.3017578125,0.37890625,0.478515625,0.5595703125,0.6298828125,0.6845703125,0.7021484375,0.6767578125,0.6279296875,0.5888671875,0.5791015625,0.5693359375,0.5283203125,0.4765625,0.447265625,0.4599609375,0.5107421875,0.5791015625,0.6572265625,0.7490234375,0.8134765625,0.8115234375,0.7431640625,0.6494140625,0.5693359375,0.48828125,0.3876953125,0.3076171875,0.291015625,0.341796875,0.4248046875,0.5,0.57421875,0.6552734375,0.703125,0.6845703125,0.60546875,0.5078125,0.4296875,0.353515625,0.265625,0.2041015625,0.20703125,0.2724609375,0.36328125,0.439453125,0.509765625,0.576171875,0.619140625,0.625,0.6025390625,0.5771484375,0.5693359375,0.5634765625,0.5439453125,0.5087890625,0.46875,0.4375,0.421875,0.419921875,0.4130859375,0.3837890625,0.3505859375,0.34375,0.3759765625,0.4375,0.509765625,0.5771484375,0.619140625,0.6123046875,0.5576171875,0.484375,0.431640625,0.419921875,0.419921875,0.4228515625,0.4267578125,0.4326171875,0.4365234375,0.439453125,0.439453125,0.4521484375,0.505859375,0.583984375,0.64453125,0.658203125,0.623046875,0.5595703125,0.4931640625,0.4453125,0.4375,0.4716796875,0.52734375,0.5693359375,0.5791015625,0.576171875,0.55859375,0.5283203125,0.4912109375,0.4599609375,0.443359375,0.439453125,0.439453125,0.4384765625,0.4345703125,0.4306640625,0.42578125,0.421875,0.419921875,0.412109375,0.3876953125,0.3681640625,0.3759765625,0.421875,0.4892578125,0.5595703125,0.626953125,0.6796875,0.6982421875,0.6748046875,0.62890625,0.58984375,0.5791015625,0.57421875,0.556640625,0.5244140625,0.48828125,0.458984375,0.4423828125,0.439453125,0.453125,0.5107421875,0.59375,0.66015625,0.6787109375,0.64453125,0.5791015625,0.5107421875,0.4599609375,0.447265625,0.4765625,0.5283203125,0.5693359375,0.5791015625,0.576171875,0.5576171875,0.5234375,0.4814453125,0.4453125,0.4248046875,0.419921875,0.4296875,0.478515625,0.5478515625,0.5966796875,0.6005859375,0.5576171875,0.4892578125,0.412109375,0.3291015625,0.2822265625,0.3056640625,0.392578125,0.4970703125,0.5791015625,0.6455078125,0.6806640625,0.662109375,0.5927734375,0.505859375,0.4443359375,0.4296875,0.419921875,0.3876953125,0.353515625,0.345703125,0.376953125,0.439453125,0.509765625,0.5849609375,0.6669921875,0.712890625,0.6904296875,0.6083984375,0.5078125,0.4296875,0.3564453125,0.2822265625,0.2470703125,0.2822265625,0.3779296875,0.486328125,0.5693359375,0.638671875,0.6884765625,0.6982421875,0.6650390625,0.609375,0.568359375,0.5595703125,0.5517578125,0.5146484375,0.466796875,0.4423828125,0.4580078125,0.5107421875,0.5791015625,0.6357421875,0.6376953125,0.5830078125,0.505859375,0.451171875,0.453125,0.509765625,0.568359375,0.578125,0.5390625,0.4794921875,0.4404296875,0.451171875,0.509765625,0.5654296875,0.5654296875,0.505859375,0.4228515625,0.3642578125,0.36328125,0.419921875,0.4814453125,0.51171875,0.5078125,0.4912109375,0.4873046875,0.517578125,0.5791015625,0.6435546875,0.67578125,0.6533203125,0.5810546875,0.4931640625,0.43359375,0.419921875,0.419921875,0.4189453125,0.4169921875,0.4169921875,0.4169921875,0.41796875,0.419921875,0.412109375,0.3720703125,0.3203125,0.2900390625,0.3017578125,0.3515625,0.419921875,0.4814453125,0.5087890625,0.501953125,0.4814453125,0.4755859375,0.505859375,0.5693359375,0.6279296875,0.630859375,0.5751953125,0.4951171875,0.4365234375,0.4345703125,0.4892578125,0.5673828125,0.66796875,0.751953125,0.775390625,0.732421875,0.6533203125,0.5791015625,0.509765625,0.4423828125,0.3984375,0.390625,0.41015625,0.43359375,0.439453125,0.4296875,0.38671875,0.3310546875,0.2978515625,0.30859375,0.3603515625,0.4296875,0.5087890625,0.599609375,0.662109375,0.6572265625,0.58984375,0.49609375,0.419921875,0.353515625,0.3037109375,0.2919921875,0.322265625,0.3759765625,0.41796875,0.4296875,0.44140625,0.484375,0.5390625,0.5703125,0.55859375,0.5078125,0.439453125,0.384765625,0.3896484375,0.458984375,0.5546875,0.625,0.6328125,0.5791015625,0.5224609375,0.5126953125,0.5517578125,0.6083984375,0.6435546875,0.6298828125,0.5693359375,0.5087890625,0.4951171875,0.5302734375,0.5869140625,0.6259765625,0.6162109375,0.5595703125,0.4814453125,0.384765625,0.3095703125,0.294921875,0.34765625,0.4326171875,0.509765625,0.5673828125,0.5771484375,0.5341796875,0.470703125,0.4267578125,0.43359375,0.4892578125,0.5673828125,0.6669921875,0.7470703125,0.7666015625,0.7177734375,0.6357421875,0.5595703125,0.5009765625,0.490234375,0.53125,0.591796875,0.6337890625,0.6259765625,0.5693359375,0.5126953125,0.5029296875,0.5419921875,0.5986328125,0.6337890625,0.6201171875,0.5595703125,0.478515625,0.380859375,0.3056640625,0.2939453125,0.3486328125,0.4345703125,0.509765625,0.564453125,0.5625,0.50390625,0.423828125,0.3681640625,0.37109375,0.4296875,0.4990234375,0.55078125,0.5625,0.53125,0.478515625,0.4384765625,0.4296875,0.423828125,0.3935546875,0.3583984375,0.3466796875,0.3740234375,0.431640625,0.5,0.564453125,0.6064453125,0.6044921875,0.55859375,0.4951171875,0.44921875,0.439453125,0.4326171875,0.3994140625,0.3583984375,0.341796875,0.3642578125,0.4208984375,0.4892578125,0.556640625,0.6015625,0.603515625,0.560546875,0.4970703125,0.4501953125,0.439453125,0.44921875,0.4873046875,0.53515625,0.5595703125,0.5419921875,0.48828125,0.419921875,0.361328125,0.349609375,0.3876953125,0.4814453125,0.37890625,0.2978515625,0.2802734375,0.3251953125,0.40234375,0.5244140625,0.6591796875,0.7509765625,0.771484375,0.7333984375,0.673828125,0.62109375,0.60546875,0.625,0.6533203125,0.6630859375,0.6337890625,0.5703125,0.5087890625,0.4921875,0.5283203125,0.59375,0.6494140625,0.66015625,0.6220703125,0.5732421875,0.5419921875,0.544921875,0.580078125,0.62890625,0.6650390625,0.673828125,0.658203125,0.5888671875,0.4853515625,0.3955078125,0.3583984375,0.3837890625,0.4482421875,0.521484375,0.5947265625,0.6513671875,0.67578125,0.6748046875,0.66796875,0.673828125,0.6923828125,0.7353515625,0.783203125,0.8046875,0.78515625,0.734375,0.673828125,0.599609375,0.4892578125,0.3740234375,0.2998046875,0.2890625,0.326171875,0.376953125,0.419921875,0.427734375,0.40234375,0.369140625,0.353515625,0.375,0.4287109375,0.482421875,0.501953125,0.4912109375,0.47265625,0.4716796875,0.505859375,0.5703125,0.6455078125,0.71875,0.75390625,0.7265625,0.6484375,0.560546875,0.5,0.44140625,0.37109375,0.32421875,0.333984375,0.4013671875,0.4912109375,0.5703125,0.642578125,0.70703125,0.7431640625,0.740234375,0.7099609375,0.6806640625,0.673828125,0.6650390625,0.62890625,0.5830078125,0.5576171875,0.5693359375,0.61328125,0.673828125,0.7421875,0.822265625,0.875,0.8662109375,0.7958984375,0.701171875,0.6220703125,0.5419921875,0.4453125,0.3662109375,0.3427734375,0.37890625,0.4423828125,0.5,0.5537109375,0.60546875,0.6259765625,0.5927734375,0.5185546875,0.4365234375,0.376953125,0.322265625,0.26171875,0.2255859375,0.2392578125,0.2978515625,0.37109375,0.4287109375,0.484375,0.55078125,0.611328125,0.6455078125,0.6484375,0.634765625,0.6220703125,0.603515625,0.5537109375,0.4775390625,0.3994140625,0.34375,0.3212890625,0.3251953125,0.3310546875,0.32421875,0.3232421875,0.34765625,0.404296875,0.4775390625,0.55078125,0.615234375,0.640625,0.603515625,0.513671875,0.41015625,0.3408203125,0.3251953125,0.328125,0.3408203125,0.36328125,0.390625,0.4140625,0.4267578125,0.4287109375,0.439453125,0.486328125,0.5556640625,0.6142578125,0.63671875,0.6162109375,0.5703125,0.5224609375,0.498046875,0.51171875,0.560546875,0.6220703125,0.6640625,0.673828125,0.66796875,0.6376953125,0.5830078125,0.5185546875,0.46484375,0.4345703125,0.4287109375,0.427734375,0.421875,0.40625,0.3828125,0.3583984375,0.337890625,0.3251953125,0.314453125,0.306640625,0.3212890625,0.369140625,0.4404296875,0.513671875,0.5703125,0.623046875,0.6796875,0.7197265625,0.7294921875,0.712890625,0.6884765625,0.673828125,0.6572265625,0.6201171875,0.5634765625,0.50390625,0.45703125,0.43359375,0.4287109375,0.443359375,0.5087890625,0.6083984375,0.69921875,0.7421875,0.7275390625,0.673828125,0.61328125,0.5693359375,0.5576171875,0.5830078125,0.62890625,0.6650390625,0.673828125,0.6669921875,0.630859375,0.560546875,0.4736328125,0.3935546875,0.34375,0.3251953125,0.328125,0.376953125,0.4560546875,0.5234375,0.544921875,0.513671875,0.4482421875,0.373046875,0.306640625,0.2900390625,0.349609375,0.466796875,0.5888671875,0.673828125,0.7373046875,0.759765625,0.71484375,0.611328125,0.4892578125,0.404296875,0.376953125,0.3623046875,0.3408203125,0.33203125,0.3564453125,0.4140625,0.486328125,0.55078125,0.6142578125,0.6669921875,0.677734375,0.626953125,0.533203125,0.439453125,0.376953125,0.3232421875,0.2744140625,0.265625,0.3212890625,0.427734375,0.5390625,0.6220703125,0.6884765625,0.728515625,0.72265625,0.6748046875,0.611328125,0.5712890625,0.5703125,0.57421875,0.55859375,0.5380859375,0.53515625,0.5615234375,0.6123046875,0.673828125,0.7216796875,0.7158203125,0.654296875,0.5703125,0.5087890625,0.5029296875,0.55078125,0.6025390625,0.611328125,0.5771484375,0.525390625,0.4912109375,0.5,0.55078125,0.5966796875,0.5791015625,0.494140625,0.3828125,0.2978515625,0.279296875,0.3251953125,0.384765625,0.4365234375,0.4794921875,0.51953125,0.5625,0.6142578125,0.673828125,0.724609375,0.7275390625,0.6611328125,0.5439453125,0.419921875,0.341796875,0.3251953125,0.32421875,0.318359375,0.310546875,0.3056640625,0.3076171875,0.3154296875,0.3251953125,0.3271484375,0.298828125,0.2548828125,0.224609375,0.228515625,0.267578125,0.3251953125,0.3818359375,0.4208984375,0.4453125,0.466796875,0.5009765625,0.5537109375,0.6220703125,0.6806640625,0.681640625,0.6181640625,0.5205078125,0.4375,0.412109375,0.4482421875,0.509765625,0.6044921875,0.7021484375,0.76171875,0.7646484375,0.724609375,0.673828125,0.6181640625,0.55078125,0.4873046875,0.4443359375,0.427734375,0.427734375,0.4287109375,0.41796875,0.3701171875,0.3046875,0.2607421875,0.2626953125,0.30859375,0.376953125,0.453125,0.5283203125,0.568359375,0.5458984375,0.4716796875,0.38671875,0.3251953125,0.275390625,0.2392578125,0.2333984375,0.263671875,0.3154296875,0.359375,0.376953125,0.3974609375,0.4462890625,0.505859375,0.541015625,0.533203125,0.4892578125,0.4287109375,0.3818359375,0.396484375,0.4775390625,0.58984375,0.6806640625,0.708984375,0.673828125,0.6328125,0.630859375,0.6630859375,0.701171875,0.71484375,0.685546875,0.6220703125,0.5576171875,0.5283203125,0.5419921875,0.580078125,0.6123046875,0.6103515625,0.5703125,0.51171875,0.4365234375,0.376953125,0.3671875,0.4130859375,0.4853515625,0.55078125,0.6015625,0.6044921875,0.5546875,0.4794921875,0.419921875,0.4091796875,0.4482421875,0.5087890625,0.5966796875,0.6787109375,0.7158203125,0.693359375,0.6337890625,0.5703125,0.5185546875,0.509765625,0.5478515625,0.609375,0.6572265625,0.6611328125,0.6220703125,0.5810546875,0.5791015625,0.611328125,0.6494140625,0.6630859375,0.6337890625,0.5703125,0.4931640625,0.408203125,0.3525390625,0.3564453125,0.4150390625,0.4921875,0.55078125,0.5869140625,0.5615234375,0.478515625,0.380859375,0.3173828125,0.318359375,0.376953125,0.4453125,0.4921875,0.498046875,0.462890625,0.4111328125,0.376953125,0.376953125,0.3828125,0.3759765625,0.3671875,0.373046875,0.40234375,0.4482421875,0.5,0.5458984375,0.568359375,0.5546875,0.509765625,0.4580078125,0.427734375,0.4287109375,0.4306640625,0.4052734375,0.365234375,0.33984375,0.34765625,0.3896484375,0.4482421875,0.5068359375,0.5498046875,0.556640625,0.525390625,0.4755859375,0.4375,0.4287109375,0.435546875,0.4580078125,0.48046875,0.4794921875,0.4453125,0.3876953125,0.3251953125,0.2734375,0.2578125,0.2841796875,0.48046875,0.3671875,0.2685546875,0.23046875,0.2587890625,0.3203125,0.4384765625,0.587890625,0.71484375,0.7802734375,0.779296875,0.740234375,0.701171875,0.6845703125,0.6826171875,0.67578125,0.6494140625,0.5986328125,0.5302734375,0.46484375,0.4365234375,0.4609375,0.52734375,0.6005859375,0.640625,0.634765625,0.619140625,0.6181640625,0.6376953125,0.673828125,0.7109375,0.7353515625,0.740234375,0.7216796875,0.638671875,0.5078125,0.3857421875,0.322265625,0.3330078125,0.39453125,0.46875,0.5478515625,0.6181640625,0.66796875,0.697265625,0.716796875,0.740234375,0.7724609375,0.8173828125,0.8564453125,0.8642578125,0.8359375,0.7880859375,0.740234375,0.6845703125,0.5947265625,0.48828125,0.400390625,0.353515625,0.34765625,0.3642578125,0.37890625,0.37890625,0.3720703125,0.373046875,0.390625,0.4248046875,0.46875,0.5048828125,0.50390625,0.4716796875,0.4384765625,0.431640625,0.46484375,0.5302734375,0.6015625,0.6611328125,0.681640625,0.6513671875,0.587890625,0.5283203125,0.5,0.4716796875,0.419921875,0.3701171875,0.35546875,0.3896484375,0.45703125,0.5302734375,0.6044921875,0.6826171875,0.7421875,0.767578125,0.76171875,0.7451171875,0.740234375,0.7333984375,0.70703125,0.673828125,0.654296875,0.6630859375,0.6962890625,0.740234375,0.7919921875,0.853515625,0.892578125,0.8759765625,0.8046875,0.7138671875,0.634765625,0.5595703125,0.4794921875,0.421875,0.408203125,0.435546875,0.474609375,0.5,0.517578125,0.525390625,0.513671875,0.4775390625,0.4296875,0.388671875,0.3642578125,0.345703125,0.3330078125,0.3388671875,0.3671875,0.408203125,0.4453125,0.46875,0.4951171875,0.544921875,0.6044921875,0.6513671875,0.669921875,0.6591796875,0.634765625,0.5966796875,0.5166015625,0.408203125,0.30859375,0.2490234375,0.23828125,0.2587890625,0.2822265625,0.3017578125,0.3310546875,0.380859375,0.451171875,0.5302734375,0.6044921875,0.666015625,0.6767578125,0.61328125,0.4912109375,0.3603515625,0.27734375,0.2587890625,0.263671875,0.2890625,0.3359375,0.3916015625,0.4384765625,0.4638671875,0.46875,0.4736328125,0.4912109375,0.51953125,0.54296875,0.5537109375,0.546875,0.5302734375,0.5166015625,0.5283203125,0.5712890625,0.634765625,0.6962890625,0.732421875,0.740234375,0.7333984375,0.701171875,0.640625,0.568359375,0.5087890625,0.4755859375,0.46875,0.4677734375,0.4580078125,0.4306640625,0.3857421875,0.333984375,0.2890625,0.2587890625,0.2373046875,0.2392578125,0.28125,0.35546875,0.439453125,0.5009765625,0.5302734375,0.556640625,0.611328125,0.681640625,0.740234375,0.7685546875,0.763671875,0.740234375,0.7080078125,0.65625,0.5908203125,0.5302734375,0.4892578125,0.4716796875,0.46875,0.4814453125,0.541015625,0.6357421875,0.7255859375,0.7783203125,0.7783203125,0.740234375,0.6962890625,0.6630859375,0.654296875,0.673828125,0.70703125,0.7333984375,0.740234375,0.732421875,0.689453125,0.6015625,0.4853515625,0.373046875,0.2958984375,0.2587890625,0.24609375,0.28515625,0.3642578125,0.44140625,0.4775390625,0.45703125,0.39453125,0.322265625,0.2705078125,0.28125,0.3720703125,0.5166015625,0.65234375,0.740234375,0.8046875,0.8271484375,0.775390625,0.6572265625,0.5146484375,0.408203125,0.3642578125,0.337890625,0.3212890625,0.3359375,0.3916015625,0.4736328125,0.55078125,0.6044921875,0.6455078125,0.6611328125,0.6298828125,0.5546875,0.4638671875,0.39453125,0.3642578125,0.341796875,0.3193359375,0.3232421875,0.3720703125,0.4599609375,0.556640625,0.634765625,0.6982421875,0.72265625,0.693359375,0.6240234375,0.5517578125,0.5166015625,0.5302734375,0.5537109375,0.572265625,0.5908203125,0.6162109375,0.6513671875,0.6943359375,0.740234375,0.7744140625,0.7646484375,0.708984375,0.6357421875,0.580078125,0.5703125,0.6044921875,0.642578125,0.6494140625,0.6240234375,0.5849609375,0.5595703125,0.56640625,0.6044921875,0.634765625,0.599609375,0.4970703125,0.3671875,0.2646484375,0.2294921875,0.2587890625,0.3076171875,0.373046875,0.455078125,0.5439453125,0.6259765625,0.69140625,0.740234375,0.7734375,0.748046875,0.6484375,0.501953125,0.361328125,0.2763671875,0.2587890625,0.2548828125,0.240234375,0.220703125,0.208984375,0.2138671875,0.2333984375,0.2587890625,0.2783203125,0.271484375,0.2421875,0.2119140625,0.201171875,0.21875,0.2587890625,0.3017578125,0.3388671875,0.3779296875,0.427734375,0.4912109375,0.5625,0.634765625,0.6962890625,0.708984375,0.654296875,0.5517578125,0.4482421875,0.3916015625,0.39453125,0.423828125,0.490234375,0.5849609375,0.6767578125,0.736328125,0.7529296875,0.740234375,0.7158203125,0.6689453125,0.6044921875,0.541015625,0.4951171875,0.47265625,0.46875,0.45703125,0.40234375,0.3251953125,0.267578125,0.2568359375,0.296875,0.3642578125,0.43359375,0.484375,0.48828125,0.4384765625,0.3583984375,0.2900390625,0.2587890625,0.2392578125,0.22265625,0.2236328125,0.248046875,0.2900390625,0.3330078125,0.3642578125,0.3984375,0.45703125,0.5185546875,0.5546875,0.5498046875,0.5146484375,0.46875,0.43359375,0.4443359375,0.5107421875,0.609375,0.7001953125,0.74609375,0.740234375,0.7294921875,0.744140625,0.7705078125,0.78125,0.7587890625,0.7041015625,0.634765625,0.5654296875,0.5107421875,0.48828125,0.4990234375,0.525390625,0.541015625,0.5302734375,0.5068359375,0.4755859375,0.455078125,0.4638671875,0.5029296875,0.5556640625,0.6044921875,0.6416015625,0.6376953125,0.5849609375,0.501953125,0.4248046875,0.38671875,0.39453125,0.421875,0.478515625,0.546875,0.59375,0.6015625,0.5732421875,0.5302734375,0.4912109375,0.4814453125,0.5107421875,0.5654296875,0.619140625,0.64453125,0.634765625,0.6240234375,0.638671875,0.666015625,0.67578125,0.6533203125,0.599609375,0.5302734375,0.458984375,0.4052734375,0.39453125,0.4365234375,0.509765625,0.57421875,0.6044921875,0.607421875,0.55078125,0.447265625,0.3447265625,0.2900390625,0.302734375,0.3642578125,0.4296875,0.466796875,0.4609375,0.4189453125,0.37109375,0.3486328125,0.3642578125,0.390625,0.4150390625,0.435546875,0.4521484375,0.466796875,0.4814453125,0.5,0.513671875,0.5087890625,0.4853515625,0.4580078125,0.4423828125,0.447265625,0.46875,0.486328125,0.470703125,0.4248046875,0.375,0.3466796875,0.35546875,0.39453125,0.4404296875,0.482421875,0.5078125,0.5078125,0.4912109375,0.4736328125,0.46875,0.470703125,0.4716796875,0.4580078125,0.421875,0.3662109375,0.3076171875,0.2587890625,0.2177734375,0.1953125,0.201171875,0.5078125,0.40234375,0.30078125,0.2490234375,0.2587890625,0.2998046875,0.392578125,0.5244140625,0.6513671875,0.734375,0.7578125,0.740234375,0.7177734375,0.7080078125,0.6953125,0.666015625,0.611328125,0.5419921875,0.46875,0.400390625,0.3525390625,0.35546875,0.4140625,0.5009765625,0.5732421875,0.6044921875,0.6259765625,0.65625,0.6904296875,0.7177734375,0.734375,0.7392578125,0.740234375,0.7216796875,0.6337890625,0.4970703125,0.3671875,0.2958984375,0.302734375,0.3642578125,0.4365234375,0.5078125,0.5712890625,0.62109375,0.66015625,0.697265625,0.740234375,0.7880859375,0.8359375,0.8642578125,0.8564453125,0.8173828125,0.7724609375,0.740234375,0.708984375,0.6591796875,0.5908203125,0.5185546875,0.4580078125,0.4169921875,0.39453125,0.375,0.3623046875,0.3701171875,0.40234375,0.451171875,0.498046875,0.5302734375,0.5439453125,0.5146484375,0.4521484375,0.39453125,0.375,0.404296875,0.46875,0.537109375,0.58203125,0.587890625,0.5576171875,0.5146484375,0.490234375,0.5,0.5068359375,0.4755859375,0.4189453125,0.373046875,0.365234375,0.40234375,0.46875,0.544921875,0.630859375,0.7041015625,0.7451171875,0.7529296875,0.744140625,0.740234375,0.736328125,0.720703125,0.701171875,0.6904296875,0.6953125,0.71484375,0.740234375,0.7724609375,0.8173828125,0.8447265625,0.828125,0.765625,0.681640625,0.6044921875,0.53515625,0.48046875,0.4580078125,0.46875,0.4951171875,0.5107421875,0.5,0.4755859375,0.4384765625,0.3974609375,0.369140625,0.36328125,0.3759765625,0.39453125,0.4189453125,0.4599609375,0.5078125,0.5439453125,0.556640625,0.5478515625,0.5302734375,0.51953125,0.541015625,0.587890625,0.634765625,0.6572265625,0.64453125,0.6044921875,0.5458984375,0.4443359375,0.3251953125,0.234375,0.19921875,0.216796875,0.2587890625,0.3017578125,0.3388671875,0.3779296875,0.427734375,0.4912109375,0.5625,0.634765625,0.6962890625,0.703125,0.6318359375,0.501953125,0.365234375,0.27734375,0.2587890625,0.265625,0.2978515625,0.3583984375,0.4306640625,0.490234375,0.5234375,0.5302734375,0.525390625,0.5078125,0.4794921875,0.4560546875,0.4453125,0.4521484375,0.46875,0.494140625,0.541015625,0.6044921875,0.66796875,0.71484375,0.736328125,0.740234375,0.7353515625,0.7099609375,0.6630859375,0.607421875,0.560546875,0.53515625,0.5302734375,0.5302734375,0.5234375,0.4970703125,0.4443359375,0.375,0.3095703125,0.2587890625,0.22265625,0.2255859375,0.2783203125,0.361328125,0.4384765625,0.4765625,0.46875,0.462890625,0.5087890625,0.599609375,0.6982421875,0.7646484375,0.775390625,0.740234375,0.69140625,0.6328125,0.5771484375,0.541015625,0.52734375,0.5283203125,0.5302734375,0.5380859375,0.5791015625,0.6455078125,0.712890625,0.7548828125,0.7607421875,0.740234375,0.71484375,0.6953125,0.6904296875,0.701171875,0.720703125,0.736328125,0.740234375,0.7353515625,0.703125,0.6298828125,0.521484375,0.40625,0.314453125,0.2587890625,0.2275390625,0.2490234375,0.3173828125,0.39453125,0.4384765625,0.4248046875,0.3642578125,0.29296875,0.244140625,0.26171875,0.361328125,0.51171875,0.6513671875,0.740234375,0.8076171875,0.8447265625,0.814453125,0.7119140625,0.5732421875,0.4560546875,0.39453125,0.3525390625,0.3330078125,0.3583984375,0.4306640625,0.5224609375,0.59765625,0.634765625,0.65234375,0.6318359375,0.568359375,0.4853515625,0.416015625,0.384765625,0.39453125,0.408203125,0.4052734375,0.40234375,0.419921875,0.4658203125,0.5322265625,0.6044921875,0.6650390625,0.6748046875,0.6240234375,0.5380859375,0.462890625,0.4384765625,0.46875,0.515625,0.56640625,0.6162109375,0.6572265625,0.6884765625,0.71484375,0.740234375,0.759765625,0.7509765625,0.712890625,0.662109375,0.6240234375,0.615234375,0.634765625,0.6572265625,0.6611328125,0.646484375,0.6240234375,0.609375,0.61328125,0.634765625,0.6484375,0.6064453125,0.5078125,0.3857421875,0.287109375,0.24609375,0.2587890625,0.2919921875,0.3544921875,0.447265625,0.5517578125,0.64453125,0.70703125,0.740234375,0.7548828125,0.7158203125,0.61328125,0.474609375,0.34765625,0.2734375,0.2587890625,0.2529296875,0.2265625,0.1923828125,0.1728515625,0.181640625,0.21484375,0.2587890625,0.2998046875,0.3173828125,0.3056640625,0.275390625,0.2470703125,0.2392578125,0.2587890625,0.2822265625,0.3017578125,0.3310546875,0.380859375,0.451171875,0.5302734375,0.6044921875,0.671875,0.7060546875,0.6796875,0.59375,0.482421875,0.3984375,0.3642578125,0.3515625,0.3720703125,0.4384765625,0.5380859375,0.6396484375,0.7099609375,0.740234375,0.75390625,0.7421875,0.6982421875,0.634765625,0.57421875,0.537109375,0.5302734375,0.5166015625,0.458984375,0.375,0.30859375,0.2919921875,0.328125,0.39453125,0.4580078125,0.4833984375,0.4521484375,0.3779296875,0.2978515625,0.25390625,0.2587890625,0.2744140625,0.2783203125,0.2783203125,0.287109375,0.3115234375,0.349609375,0.39453125,0.4453125,0.509765625,0.568359375,0.5966796875,0.587890625,0.55859375,0.5302734375,0.5068359375,0.501953125,0.529296875,0.587890625,0.658203125,0.712890625,0.740234375,0.765625,0.8046875,0.8310546875,0.8173828125,0.759765625,0.6796875,0.6044921875,0.529296875,0.44921875,0.3916015625,0.3779296875,0.4052734375,0.4443359375,0.46875,0.4873046875,0.5068359375,0.52734375,0.5517578125,0.580078125,0.6083984375,0.634765625,0.6572265625,0.654296875,0.61328125,0.5380859375,0.4541015625,0.392578125,0.3642578125,0.3515625,0.3662109375,0.4052734375,0.4521484375,0.4853515625,0.490234375,0.46875,0.4443359375,0.4296875,0.44140625,0.48046875,0.5341796875,0.5791015625,0.6044921875,0.6298828125,0.6689453125,0.6953125,0.6826171875,0.625,0.544921875,0.46875,0.40625,0.384765625,0.4228515625,0.5048828125,0.591796875,0.6396484375,0.634765625,0.6005859375,0.5166015625,0.4052734375,0.3193359375,0.29296875,0.3271484375,0.39453125,0.4580078125,0.484375,0.4638671875,0.4140625,0.369140625,0.3603515625,0.39453125,0.443359375,0.5009765625,0.546875,0.5634765625,0.548828125,0.521484375,0.5,0.4755859375,0.4384765625,0.408203125,0.4052734375,0.4345703125,0.482421875,0.5302734375,0.56640625,0.564453125,0.515625,0.44140625,0.3759765625,0.3486328125,0.3642578125,0.3935546875,0.4326171875,0.474609375,0.5078125,0.5244140625,0.529296875,0.5302734375,0.52734375,0.509765625,0.46875,0.408203125,0.3427734375,0.291015625,0.2587890625,0.23046875,0.2001953125,0.181640625,0.5556640625,0.4755859375,0.384765625,0.3291015625,0.3251953125,0.345703125,0.4013671875,0.48828125,0.580078125,0.6484375,0.6767578125,0.673828125,0.66796875,0.671875,0.6689453125,0.638671875,0.5791015625,0.5029296875,0.4287109375,0.35546875,0.2880859375,0.263671875,0.3046875,0.39453125,0.4892578125,0.55078125,0.603515625,0.6552734375,0.6923828125,0.703125,0.6923828125,0.677734375,0.673828125,0.65625,0.5791015625,0.458984375,0.3505859375,0.2978515625,0.314453125,0.376953125,0.4453125,0.498046875,0.5322265625,0.5537109375,0.578125,0.6171875,0.673828125,0.734375,0.78515625,0.8046875,0.783203125,0.7353515625,0.6923828125,0.673828125,0.6650390625,0.66015625,0.6455078125,0.6123046875,0.5595703125,0.5009765625,0.4482421875,0.3994140625,0.37109375,0.380859375,0.4306640625,0.498046875,0.5498046875,0.5703125,0.56640625,0.515625,0.4326171875,0.3603515625,0.3349609375,0.3642578125,0.4287109375,0.4931640625,0.5244140625,0.515625,0.482421875,0.4541015625,0.4580078125,0.5,0.537109375,0.5244140625,0.46484375,0.39453125,0.353515625,0.3681640625,0.4287109375,0.5048828125,0.5869140625,0.654296875,0.6884765625,0.689453125,0.677734375,0.673828125,0.671875,0.666015625,0.658203125,0.6533203125,0.6552734375,0.6630859375,0.673828125,0.6904296875,0.724609375,0.7529296875,0.7470703125,0.6982421875,0.625,0.55078125,0.4873046875,0.4580078125,0.4716796875,0.509765625,0.5419921875,0.5400390625,0.5,0.44140625,0.3681640625,0.3095703125,0.2958984375,0.33203125,0.392578125,0.4482421875,0.5078125,0.5888671875,0.6640625,0.6962890625,0.67578125,0.6240234375,0.5703125,0.5283203125,0.5244140625,0.556640625,0.599609375,0.6220703125,0.6044921875,0.55078125,0.4775390625,0.3701171875,0.2626953125,0.203125,0.2099609375,0.2626953125,0.3251953125,0.3818359375,0.4208984375,0.4453125,0.466796875,0.5009765625,0.5537109375,0.6220703125,0.6845703125,0.701171875,0.6484375,0.5400390625,0.419921875,0.3427734375,0.3251953125,0.3310546875,0.361328125,0.416015625,0.48046875,0.5341796875,0.564453125,0.5703125,0.5595703125,0.5126953125,0.443359375,0.384765625,0.3623046875,0.3828125,0.4287109375,0.484375,0.55078125,0.615234375,0.658203125,0.6748046875,0.6748046875,0.673828125,0.6708984375,0.658203125,0.6357421875,0.6083984375,0.5849609375,0.572265625,0.5703125,0.5732421875,0.5791015625,0.5703125,0.53125,0.4658203125,0.390625,0.3251953125,0.275390625,0.2724609375,0.322265625,0.3974609375,0.45703125,0.4677734375,0.4287109375,0.3935546875,0.421875,0.5126953125,0.625,0.7060546875,0.720703125,0.673828125,0.611328125,0.5537109375,0.51953125,0.5185546875,0.541015625,0.5634765625,0.5703125,0.57421875,0.5927734375,0.623046875,0.6552734375,0.67578125,0.6806640625,0.673828125,0.6630859375,0.6552734375,0.6533203125,0.658203125,0.666015625,0.671875,0.673828125,0.673828125,0.6669921875,0.6357421875,0.5693359375,0.48046875,0.3935546875,0.3251953125,0.27734375,0.2802734375,0.333984375,0.404296875,0.4482421875,0.4375,0.376953125,0.3046875,0.24609375,0.24609375,0.32421875,0.45703125,0.5869140625,0.673828125,0.74609375,0.806640625,0.8154296875,0.751953125,0.63671875,0.5224609375,0.4482421875,0.390625,0.361328125,0.380859375,0.4482421875,0.5341796875,0.5986328125,0.6220703125,0.62109375,0.5771484375,0.5029296875,0.4306640625,0.3935546875,0.4033203125,0.4482421875,0.490234375,0.498046875,0.4765625,0.4521484375,0.451171875,0.486328125,0.55078125,0.609375,0.611328125,0.5517578125,0.462890625,0.3935546875,0.3818359375,0.4287109375,0.4931640625,0.5615234375,0.619140625,0.6533203125,0.6640625,0.666015625,0.673828125,0.6806640625,0.67578125,0.6591796875,0.63671875,0.619140625,0.6142578125,0.6220703125,0.6298828125,0.6318359375,0.6259765625,0.6171875,0.611328125,0.61328125,0.6220703125,0.623046875,0.5888671875,0.517578125,0.4296875,0.3583984375,0.32421875,0.3251953125,0.3427734375,0.3857421875,0.4580078125,0.541015625,0.61328125,0.65625,0.673828125,0.67578125,0.640625,0.5654296875,0.46875,0.3837890625,0.3349609375,0.3251953125,0.3173828125,0.28125,0.2353515625,0.2099609375,0.220703125,0.265625,0.3251953125,0.3837890625,0.4228515625,0.4267578125,0.3955078125,0.3525390625,0.32421875,0.3251953125,0.3310546875,0.32421875,0.3232421875,0.34765625,0.404296875,0.4775390625,0.55078125,0.6240234375,0.6845703125,0.697265625,0.642578125,0.541015625,0.4404296875,0.376953125,0.3271484375,0.296875,0.3154296875,0.3935546875,0.5068359375,0.609375,0.673828125,0.720703125,0.7451171875,0.7314453125,0.6826171875,0.6220703125,0.5791015625,0.5703125,0.5576171875,0.5009765625,0.419921875,0.357421875,0.34375,0.380859375,0.4482421875,0.5078125,0.515625,0.4638671875,0.3798828125,0.30859375,0.2890625,0.3251953125,0.369140625,0.3857421875,0.376953125,0.361328125,0.3623046875,0.392578125,0.4482421875,0.51171875,0.5771484375,0.6240234375,0.634765625,0.6142578125,0.5859375,0.5703125,0.5556640625,0.5302734375,0.513671875,0.5234375,0.564453125,0.6201171875,0.673828125,0.73046875,0.7939453125,0.830078125,0.806640625,0.7275390625,0.630859375,0.55078125,0.4716796875,0.375,0.2958984375,0.2724609375,0.30859375,0.3720703125,0.4287109375,0.4814453125,0.5361328125,0.5810546875,0.60546875,0.61328125,0.6142578125,0.6220703125,0.6328125,0.640625,0.6259765625,0.5791015625,0.5068359375,0.43359375,0.376953125,0.330078125,0.3056640625,0.3154296875,0.3544921875,0.40234375,0.4306640625,0.4287109375,0.4150390625,0.392578125,0.3798828125,0.39453125,0.439453125,0.4970703125,0.55078125,0.607421875,0.671875,0.7080078125,0.6845703125,0.60546875,0.5087890625,0.4287109375,0.37109375,0.37109375,0.439453125,0.5419921875,0.62890625,0.6572265625,0.6220703125,0.55859375,0.4580078125,0.3564453125,0.3017578125,0.314453125,0.375,0.4482421875,0.5087890625,0.525390625,0.4931640625,0.4375,0.39453125,0.3984375,0.4482421875,0.515625,0.5966796875,0.6572265625,0.6669921875,0.623046875,0.556640625,0.5,0.443359375,0.37890625,0.3388671875,0.353515625,0.4189453125,0.501953125,0.5703125,0.6240234375,0.6396484375,0.599609375,0.5185546875,0.431640625,0.3798828125,0.376953125,0.3916015625,0.4228515625,0.4677734375,0.5146484375,0.5498046875,0.5673828125,0.5703125,0.5654296875,0.5419921875,0.4951171875,0.435546875,0.37890625,0.341796875,0.3251953125,0.30859375,0.271484375,0.2314453125,0.603515625,0.55078125,0.48046875,0.4296875,0.419921875,0.42578125,0.447265625,0.484375,0.5263671875,0.560546875,0.5771484375,0.5791015625,0.583984375,0.607421875,0.6298828125,0.6240234375,0.5810546875,0.5126953125,0.439453125,0.3623046875,0.2783203125,0.2294921875,0.25,0.3310546875,0.431640625,0.509765625,0.5771484375,0.6357421875,0.6640625,0.6533203125,0.6181640625,0.5869140625,0.5791015625,0.5654296875,0.505859375,0.4189453125,0.349609375,0.3291015625,0.36328125,0.4296875,0.4931640625,0.5234375,0.517578125,0.4970703125,0.490234375,0.517578125,0.5791015625,0.6474609375,0.7001953125,0.7138671875,0.685546875,0.6328125,0.5908203125,0.5791015625,0.5849609375,0.6123046875,0.6435546875,0.6494140625,0.6181640625,0.5576171875,0.4892578125,0.4248046875,0.3818359375,0.3837890625,0.4306640625,0.4970703125,0.546875,0.5595703125,0.5478515625,0.4931640625,0.4130859375,0.3505859375,0.3359375,0.373046875,0.439453125,0.5009765625,0.521484375,0.4970703125,0.453125,0.42578125,0.44140625,0.5,0.5546875,0.5556640625,0.501953125,0.4267578125,0.375,0.380859375,0.439453125,0.5126953125,0.58203125,0.626953125,0.6328125,0.6103515625,0.5859375,0.5791015625,0.5791015625,0.578125,0.5771484375,0.576171875,0.576171875,0.5771484375,0.5791015625,0.5888671875,0.6240234375,0.662109375,0.6728515625,0.642578125,0.5810546875,0.509765625,0.44921875,0.435546875,0.470703125,0.52734375,0.5654296875,0.556640625,0.5,0.4228515625,0.33203125,0.2666015625,0.263671875,0.3251953125,0.4140625,0.4892578125,0.5673828125,0.6650390625,0.744140625,0.7626953125,0.71484375,0.6337890625,0.5595703125,0.5009765625,0.486328125,0.5146484375,0.5595703125,0.5869140625,0.5693359375,0.509765625,0.4296875,0.3271484375,0.2412109375,0.2177734375,0.2626953125,0.34375,0.419921875,0.4814453125,0.5087890625,0.501953125,0.4814453125,0.4755859375,0.505859375,0.5693359375,0.6357421875,0.669921875,0.6494140625,0.580078125,0.4931640625,0.43359375,0.419921875,0.4228515625,0.4404296875,0.470703125,0.5078125,0.5390625,0.5556640625,0.5595703125,0.546875,0.4931640625,0.4150390625,0.3544921875,0.3408203125,0.3759765625,0.439453125,0.509765625,0.576171875,0.6201171875,0.6279296875,0.6083984375,0.5859375,0.5791015625,0.5791015625,0.576171875,0.572265625,0.56640625,0.5625,0.5595703125,0.5595703125,0.5654296875,0.58984375,0.6103515625,0.603515625,0.5595703125,0.4912109375,0.419921875,0.361328125,0.3525390625,0.3955078125,0.458984375,0.5029296875,0.49609375,0.439453125,0.3857421875,0.3935546875,0.46484375,0.5595703125,0.62890625,0.634765625,0.5791015625,0.5107421875,0.45703125,0.439453125,0.4638671875,0.51171875,0.5498046875,0.5595703125,0.5595703125,0.5634765625,0.5693359375,0.5751953125,0.5791015625,0.580078125,0.5791015625,0.5771484375,0.576171875,0.576171875,0.5771484375,0.578125,0.5791015625,0.5791015625,0.5849609375,0.6064453125,0.623046875,0.6103515625,0.5625,0.4912109375,0.419921875,0.3623046875,0.353515625,0.396484375,0.458984375,0.5,0.4892578125,0.4296875,0.353515625,0.27734375,0.244140625,0.283203125,0.3837890625,0.49609375,0.5791015625,0.65625,0.7392578125,0.7841796875,0.759765625,0.673828125,0.5693359375,0.4892578125,0.4228515625,0.380859375,0.3837890625,0.4345703125,0.5048828125,0.5556640625,0.5693359375,0.5595703125,0.51171875,0.443359375,0.392578125,0.3857421875,0.4248046875,0.4892578125,0.546875,0.5576171875,0.5205078125,0.466796875,0.43359375,0.44921875,0.509765625,0.568359375,0.5712890625,0.5166015625,0.4384765625,0.3818359375,0.3828125,0.439453125,0.5107421875,0.578125,0.62109375,0.626953125,0.6064453125,0.583984375,0.5791015625,0.580078125,0.5791015625,0.576171875,0.572265625,0.5693359375,0.568359375,0.5693359375,0.5703125,0.5712890625,0.5703125,0.568359375,0.5673828125,0.568359375,0.5693359375,0.5673828125,0.548828125,0.5146484375,0.4736328125,0.439453125,0.421875,0.419921875,0.4248046875,0.4443359375,0.4794921875,0.51953125,0.5546875,0.57421875,0.5791015625,0.5771484375,0.55859375,0.5234375,0.48046875,0.4443359375,0.423828125,0.419921875,0.41015625,0.369140625,0.3173828125,0.287109375,0.30078125,0.3515625,0.419921875,0.4873046875,0.5380859375,0.5498046875,0.51953125,0.4677734375,0.427734375,0.419921875,0.4130859375,0.3837890625,0.3505859375,0.34375,0.3759765625,0.4375,0.509765625,0.5869140625,0.6689453125,0.7158203125,0.693359375,0.609375,0.5078125,0.4296875,0.357421875,0.28515625,0.255859375,0.294921875,0.3916015625,0.5,0.5791015625,0.6455078125,0.6923828125,0.701171875,0.6669921875,0.611328125,0.5693359375,0.5595703125,0.5478515625,0.4970703125,0.4287109375,0.3798828125,0.3779296875,0.421875,0.4892578125,0.5478515625,0.552734375,0.4990234375,0.421875,0.365234375,0.365234375,0.419921875,0.478515625,0.49609375,0.4716796875,0.431640625,0.4091796875,0.4296875,0.4892578125,0.5595703125,0.6201171875,0.650390625,0.6396484375,0.6025390625,0.5693359375,0.5595703125,0.548828125,0.509765625,0.462890625,0.4404296875,0.458984375,0.51171875,0.5791015625,0.654296875,0.7373046875,0.7880859375,0.7705078125,0.69140625,0.5908203125,0.509765625,0.4287109375,0.328125,0.248046875,0.2314453125,0.28125,0.365234375,0.439453125,0.5087890625,0.57421875,0.6142578125,0.619140625,0.5966796875,0.57421875,0.5693359375,0.5771484375,0.6015625,0.62109375,0.6123046875,0.5673828125,0.5,0.4296875,0.36328125,0.3154296875,0.306640625,0.3388671875,0.3916015625,0.431640625,0.439453125,0.4306640625,0.3974609375,0.3623046875,0.3525390625,0.3818359375,0.44140625,0.509765625,0.583984375,0.66796875,0.7177734375,0.701171875,0.62109375,0.5205078125,0.439453125,0.3828125,0.3857421875,0.4521484375,0.5458984375,0.615234375,0.623046875,0.5693359375,0.4912109375,0.3896484375,0.3056640625,0.283203125,0.330078125,0.412109375,0.4892578125,0.5498046875,0.5615234375,0.5224609375,0.4619140625,0.421875,0.431640625,0.4892578125,0.5673828125,0.6591796875,0.7255859375,0.7275390625,0.6650390625,0.5751953125,0.5,0.4248046875,0.3408203125,0.2900390625,0.3046875,0.3818359375,0.48046875,0.5595703125,0.6240234375,0.6591796875,0.6416015625,0.5771484375,0.49609375,0.4404296875,0.4296875,0.4345703125,0.451171875,0.48046875,0.513671875,0.5419921875,0.556640625,0.5595703125,0.556640625,0.5400390625,0.5107421875,0.474609375,0.4423828125,0.4248046875,0.419921875,0.408203125,0.3671875,0.31640625,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.65234375,0.640625,0.60546875,0.5751953125,0.5693359375,0.5673828125,0.5517578125,0.5224609375,0.486328125,0.45703125,0.44140625,0.439453125,0.4541015625,0.5126953125,0.595703125,0.6591796875,0.673828125,0.63671875,0.5693359375,0.4873046875,0.3837890625,0.2998046875,0.2783203125,0.3271484375,0.412109375,0.4892578125,0.55859375,0.6044921875,0.60546875,0.5595703125,0.4931640625,0.4423828125,0.4296875,0.421875,0.3974609375,0.3779296875,0.38671875,0.431640625,0.4990234375,0.5693359375,0.623046875,0.6181640625,0.55078125,0.4580078125,0.3916015625,0.3857421875,0.439453125,0.505859375,0.5546875,0.564453125,0.5302734375,0.474609375,0.431640625,0.419921875,0.4296875,0.4765625,0.54296875,0.5908203125,0.5947265625,0.5546875,0.4892578125,0.4208984375,0.361328125,0.33203125,0.341796875,0.3779296875,0.41015625,0.419921875,0.4150390625,0.3935546875,0.3740234375,0.380859375,0.423828125,0.490234375,0.5595703125,0.6142578125,0.615234375,0.5615234375,0.486328125,0.435546875,0.4404296875,0.5,0.5615234375,0.5810546875,0.556640625,0.513671875,0.4853515625,0.5009765625,0.5595703125,0.623046875,0.6572265625,0.6416015625,0.5810546875,0.50390625,0.4501953125,0.439453125,0.44140625,0.4423828125,0.44140625,0.439453125,0.435546875,0.431640625,0.4296875,0.4404296875,0.490234375,0.5615234375,0.61328125,0.619140625,0.5771484375,0.509765625,0.44921875,0.4375,0.4765625,0.537109375,0.5771484375,0.5673828125,0.509765625,0.4306640625,0.3369140625,0.267578125,0.26171875,0.322265625,0.412109375,0.4892578125,0.5654296875,0.6494140625,0.69921875,0.6806640625,0.599609375,0.4990234375,0.419921875,0.3623046875,0.359375,0.4130859375,0.490234375,0.5458984375,0.544921875,0.4892578125,0.4150390625,0.3359375,0.291015625,0.3134765625,0.3974609375,0.5,0.5791015625,0.634765625,0.6279296875,0.556640625,0.4580078125,0.3857421875,0.3759765625,0.4296875,0.5,0.5693359375,0.6162109375,0.6279296875,0.609375,0.5869140625,0.5791015625,0.57421875,0.5537109375,0.5185546875,0.4794921875,0.447265625,0.431640625,0.4296875,0.42578125,0.4052734375,0.3876953125,0.3974609375,0.4423828125,0.509765625,0.5791015625,0.6416015625,0.6728515625,0.6513671875,0.58203125,0.498046875,0.44140625,0.4296875,0.431640625,0.4326171875,0.4345703125,0.435546875,0.4365234375,0.4384765625,0.439453125,0.4541015625,0.51171875,0.5947265625,0.6591796875,0.6767578125,0.642578125,0.5791015625,0.5224609375,0.513671875,0.552734375,0.611328125,0.6494140625,0.6376953125,0.5791015625,0.517578125,0.4873046875,0.4921875,0.51171875,0.517578125,0.490234375,0.4296875,0.36328125,0.314453125,0.3046875,0.3359375,0.388671875,0.4296875,0.439453125,0.439453125,0.4365234375,0.4326171875,0.4267578125,0.4228515625,0.419921875,0.419921875,0.419921875,0.419921875,0.4208984375,0.4228515625,0.42578125,0.427734375,0.4296875,0.4443359375,0.501953125,0.5830078125,0.646484375,0.6611328125,0.625,0.5595703125,0.5009765625,0.490234375,0.53125,0.591796875,0.6337890625,0.6259765625,0.5693359375,0.4892578125,0.380859375,0.2822265625,0.2421875,0.2724609375,0.345703125,0.419921875,0.5,0.6025390625,0.6875,0.7119140625,0.666015625,0.5849609375,0.509765625,0.439453125,0.3798828125,0.3505859375,0.359375,0.3935546875,0.423828125,0.4296875,0.419921875,0.3876953125,0.3515625,0.341796875,0.3720703125,0.4306640625,0.5,0.5556640625,0.564453125,0.5224609375,0.4609375,0.4208984375,0.4306640625,0.4892578125,0.5498046875,0.568359375,0.5458984375,0.5068359375,0.486328125,0.5078125,0.5693359375,0.6357421875,0.669921875,0.6513671875,0.5830078125,0.4990234375,0.44140625,0.4296875,0.4306640625,0.4296875,0.4267578125,0.4228515625,0.419921875,0.4189453125,0.419921875,0.4208984375,0.421875,0.4208984375,0.4189453125,0.41796875,0.41796875,0.419921875,0.4248046875,0.4453125,0.4814453125,0.5234375,0.5576171875,0.576171875,0.5791015625,0.5751953125,0.556640625,0.5205078125,0.478515625,0.4423828125,0.423828125,0.419921875,0.4228515625,0.4384765625,0.46875,0.5048828125,0.5361328125,0.5546875,0.5595703125,0.5517578125,0.5146484375,0.4658203125,0.4384765625,0.4521484375,0.5029296875,0.5693359375,0.63671875,0.6884765625,0.7041015625,0.6787109375,0.6298828125,0.58984375,0.5791015625,0.5654296875,0.5126953125,0.4404296875,0.3876953125,0.3818359375,0.4228515625,0.4892578125,0.5693359375,0.671875,0.755859375,0.7783203125,0.73046875,0.646484375,0.5693359375,0.486328125,0.375,0.27734375,0.240234375,0.2763671875,0.353515625,0.4296875,0.4990234375,0.5517578125,0.564453125,0.53125,0.4755859375,0.431640625,0.419921875,0.41015625,0.3798828125,0.3466796875,0.341796875,0.3759765625,0.439453125,0.509765625,0.5693359375,0.5859375,0.5576171875,0.51171875,0.4833984375,0.5,0.5595703125,0.6162109375,0.6181640625,0.564453125,0.48828125,0.4365234375,0.4404296875,0.5,0.568359375,0.61328125,0.61328125,0.56640625,0.5,0.451171875,0.439453125,0.4296875,0.38671875,0.330078125,0.294921875,0.3037109375,0.3525390625,0.419921875,0.4990234375,0.6005859375,0.6826171875,0.7021484375,0.65234375,0.5673828125,0.4892578125,0.412109375,0.3291015625,0.2822265625,0.3056640625,0.392578125,0.4970703125,0.5791015625,0.6455078125,0.6806640625,0.662109375,0.5927734375,0.505859375,0.4443359375,0.4296875,0.44140625,0.4990234375,0.5830078125,0.6513671875,0.669921875,0.6357421875,0.5693359375,0.5,0.447265625,0.4326171875,0.4609375,0.51171875,0.55078125,0.5595703125,0.546875,0.4990234375,0.435546875,0.392578125,0.396484375,0.4423828125,0.509765625,0.587890625,0.685546875,0.7607421875,0.7724609375,0.71875,0.634765625,0.5595703125,0.5,0.4755859375,0.4892578125,0.515625,0.52734375,0.5009765625,0.439453125,0.36328125,0.2783203125,0.2255859375,0.2392578125,0.3154296875,0.412109375,0.4892578125,0.5458984375,0.5546875,0.513671875,0.4541015625,0.4169921875,0.4296875,0.4892578125,0.5693359375,0.6650390625,0.7333984375,0.736328125,0.671875,0.5791015625,0.5,0.4189453125,0.318359375,0.2392578125,0.224609375,0.27734375,0.36328125,0.439453125,0.51171875,0.580078125,0.6259765625,0.6337890625,0.6123046875,0.5869140625,0.5791015625,0.57421875,0.556640625,0.5244140625,0.48828125,0.458984375,0.4423828125,0.439453125,0.443359375,0.4599609375,0.490234375,0.5244140625,0.5537109375,0.568359375,0.5693359375,0.55859375,0.5185546875,0.4697265625,0.6259765625,0.6318359375,0.623046875,0.6162109375,0.6220703125,0.6259765625,0.6044921875,0.5556640625,0.4951171875,0.4462890625,0.4248046875,0.4287109375,0.453125,0.5263671875,0.625,0.701171875,0.7236328125,0.6884765625,0.6220703125,0.5380859375,0.4228515625,0.3173828125,0.271484375,0.298828125,0.3720703125,0.4482421875,0.517578125,0.5673828125,0.572265625,0.5283203125,0.45703125,0.3994140625,0.376953125,0.3662109375,0.3583984375,0.373046875,0.419921875,0.4921875,0.5654296875,0.6220703125,0.66015625,0.6435546875,0.572265625,0.478515625,0.4072265625,0.390625,0.4287109375,0.4775390625,0.5087890625,0.5029296875,0.4580078125,0.39453125,0.345703125,0.3251953125,0.3251953125,0.3623046875,0.42578125,0.484375,0.509765625,0.4931640625,0.4482421875,0.3935546875,0.3359375,0.291015625,0.2763671875,0.2890625,0.3115234375,0.3251953125,0.333984375,0.341796875,0.3603515625,0.3994140625,0.455078125,0.5166015625,0.5703125,0.6083984375,0.5947265625,0.53515625,0.46484375,0.423828125,0.4384765625,0.5,0.5634765625,0.5947265625,0.5859375,0.552734375,0.5244140625,0.5283203125,0.5703125,0.615234375,0.62890625,0.599609375,0.5361328125,0.46875,0.4296875,0.4287109375,0.439453125,0.4462890625,0.4443359375,0.4306640625,0.41015625,0.3896484375,0.376953125,0.380859375,0.4365234375,0.5263671875,0.607421875,0.640625,0.615234375,0.55078125,0.490234375,0.4736328125,0.505859375,0.5615234375,0.6044921875,0.6005859375,0.55078125,0.48046875,0.3876953125,0.3076171875,0.2802734375,0.314453125,0.3818359375,0.4482421875,0.513671875,0.5791015625,0.6083984375,0.576171875,0.4921875,0.396484375,0.3251953125,0.2763671875,0.275390625,0.3291015625,0.4091796875,0.47265625,0.486328125,0.4482421875,0.39453125,0.349609375,0.3447265625,0.3994140625,0.5,0.6015625,0.673828125,0.71875,0.6982421875,0.60546875,0.4794921875,0.3779296875,0.3427734375,0.376953125,0.435546875,0.5146484375,0.59765625,0.6591796875,0.6845703125,0.68359375,0.673828125,0.6552734375,0.60546875,0.529296875,0.451171875,0.39453125,0.373046875,0.376953125,0.3876953125,0.4013671875,0.4306640625,0.4833984375,0.55078125,0.6181640625,0.673828125,0.71484375,0.7099609375,0.6455078125,0.541015625,0.439453125,0.380859375,0.376953125,0.38671875,0.39453125,0.400390625,0.4052734375,0.4111328125,0.4189453125,0.4287109375,0.4521484375,0.5185546875,0.61328125,0.6953125,0.732421875,0.71875,0.673828125,0.6328125,0.630859375,0.6669921875,0.71484375,0.7412109375,0.7255859375,0.673828125,0.6142578125,0.5625,0.5234375,0.4921875,0.462890625,0.4248046875,0.376953125,0.3291015625,0.2978515625,0.2998046875,0.3349609375,0.384765625,0.4208984375,0.4287109375,0.4267578125,0.4140625,0.390625,0.36328125,0.3408203125,0.328125,0.3251953125,0.3251953125,0.3251953125,0.3291015625,0.3388671875,0.3525390625,0.3662109375,0.376953125,0.400390625,0.466796875,0.5576171875,0.6298828125,0.654296875,0.626953125,0.5703125,0.5185546875,0.509765625,0.5478515625,0.609375,0.6572265625,0.6611328125,0.6220703125,0.556640625,0.4482421875,0.326171875,0.244140625,0.2275390625,0.265625,0.3251953125,0.3994140625,0.5068359375,0.6142578125,0.673828125,0.6669921875,0.6142578125,0.55078125,0.4892578125,0.4287109375,0.38671875,0.37109375,0.3759765625,0.3828125,0.376953125,0.36328125,0.3408203125,0.328125,0.3427734375,0.3876953125,0.4453125,0.5,0.5390625,0.5341796875,0.4873046875,0.42578125,0.3876953125,0.396484375,0.4482421875,0.501953125,0.525390625,0.5224609375,0.51171875,0.5185546875,0.556640625,0.6220703125,0.6845703125,0.701171875,0.65234375,0.552734375,0.4462890625,0.3828125,0.376953125,0.384765625,0.3798828125,0.3623046875,0.33984375,0.3232421875,0.318359375,0.3251953125,0.333984375,0.3359375,0.330078125,0.3212890625,0.3154296875,0.3173828125,0.3251953125,0.34375,0.3935546875,0.4736328125,0.560546875,0.630859375,0.6669921875,0.673828125,0.6650390625,0.623046875,0.5458984375,0.453125,0.3759765625,0.333984375,0.3251953125,0.330078125,0.353515625,0.400390625,0.4609375,0.5166015625,0.5546875,0.5703125,0.57421875,0.55859375,0.5341796875,0.521484375,0.53515625,0.572265625,0.6220703125,0.673828125,0.7236328125,0.751953125,0.7490234375,0.720703125,0.689453125,0.673828125,0.6494140625,0.5791015625,0.48046875,0.3994140625,0.3681640625,0.3916015625,0.4482421875,0.521484375,0.62890625,0.732421875,0.783203125,0.7626953125,0.6962890625,0.6220703125,0.5361328125,0.412109375,0.291015625,0.2265625,0.2392578125,0.3037109375,0.376953125,0.447265625,0.5,0.5087890625,0.4697265625,0.40234375,0.3466796875,0.3251953125,0.3125,0.296875,0.298828125,0.3369140625,0.40625,0.484375,0.55078125,0.6025390625,0.6142578125,0.583984375,0.537109375,0.5068359375,0.5185546875,0.5703125,0.6181640625,0.6123046875,0.5546875,0.4794921875,0.431640625,0.439453125,0.5,0.5673828125,0.611328125,0.609375,0.5595703125,0.4912109375,0.4404296875,0.4287109375,0.41796875,0.3701171875,0.30078125,0.248046875,0.236328125,0.2685546875,0.3251953125,0.3984375,0.4990234375,0.591796875,0.6279296875,0.5966796875,0.5234375,0.4482421875,0.373046875,0.306640625,0.2900390625,0.349609375,0.466796875,0.5888671875,0.673828125,0.7373046875,0.759765625,0.71484375,0.611328125,0.4892578125,0.404296875,0.376953125,0.3828125,0.4462890625,0.552734375,0.65234375,0.701171875,0.6845703125,0.6220703125,0.5517578125,0.5,0.482421875,0.50390625,0.5439453125,0.5712890625,0.5703125,0.55078125,0.505859375,0.453125,0.4267578125,0.4423828125,0.490234375,0.55078125,0.6181640625,0.6953125,0.7490234375,0.7490234375,0.6982421875,0.6279296875,0.5703125,0.525390625,0.5068359375,0.51171875,0.5224609375,0.517578125,0.4853515625,0.4287109375,0.3623046875,0.2900390625,0.2451171875,0.2548828125,0.314453125,0.3896484375,0.4482421875,0.4873046875,0.4833984375,0.439453125,0.38671875,0.3623046875,0.384765625,0.4482421875,0.5283203125,0.62890625,0.70703125,0.720703125,0.666015625,0.578125,0.5,0.419921875,0.3232421875,0.248046875,0.234375,0.283203125,0.361328125,0.4287109375,0.49609375,0.576171875,0.650390625,0.693359375,0.7001953125,0.6865234375,0.673828125,0.6572265625,0.6201171875,0.5634765625,0.50390625,0.45703125,0.43359375,0.4287109375,0.4345703125,0.46484375,0.5146484375,0.5703125,0.611328125,0.626953125,0.6220703125,0.60546875,0.5751953125,0.546875,0.546875,0.5634765625,0.583984375,0.6083984375,0.634765625,0.6533203125,0.63671875,0.5849609375,0.5185546875,0.466796875,0.451171875,0.46875,0.5087890625,0.58984375,0.685546875,0.748046875,0.751953125,0.7041015625,0.634765625,0.5498046875,0.4267578125,0.3056640625,0.2421875,0.2548828125,0.3203125,0.39453125,0.466796875,0.53125,0.5576171875,0.5302734375,0.46484375,0.400390625,0.3642578125,0.341796875,0.3447265625,0.3857421875,0.4609375,0.544921875,0.6064453125,0.634765625,0.646484375,0.6298828125,0.58203125,0.5224609375,0.474609375,0.45703125,0.46875,0.486328125,0.490234375,0.4658203125,0.4140625,0.34765625,0.2919921875,0.2587890625,0.2392578125,0.2470703125,0.287109375,0.341796875,0.3876953125,0.40625,0.39453125,0.369140625,0.3232421875,0.2705078125,0.2314453125,0.2197265625,0.2333984375,0.2587890625,0.2880859375,0.3291015625,0.380859375,0.4326171875,0.4775390625,0.5087890625,0.5302734375,0.5380859375,0.505859375,0.44921875,0.4033203125,0.3955078125,0.4326171875,0.5,0.5673828125,0.6123046875,0.6181640625,0.587890625,0.544921875,0.5205078125,0.5302734375,0.54296875,0.5341796875,0.5048828125,0.4697265625,0.4462890625,0.447265625,0.46875,0.49609375,0.517578125,0.5185546875,0.4912109375,0.443359375,0.3955078125,0.3642578125,0.353515625,0.4052734375,0.5078125,0.61328125,0.6728515625,0.6650390625,0.6044921875,0.541015625,0.5146484375,0.53515625,0.5849609375,0.6298828125,0.638671875,0.6044921875,0.5498046875,0.4638671875,0.375,0.3193359375,0.314453125,0.3486328125,0.39453125,0.44140625,0.484375,0.4970703125,0.4609375,0.388671875,0.3125,0.2587890625,0.220703125,0.21484375,0.2509765625,0.3134765625,0.3740234375,0.4033203125,0.39453125,0.3779296875,0.3798828125,0.4189453125,0.5,0.599609375,0.685546875,0.740234375,0.7724609375,0.7490234375,0.6591796875,0.533203125,0.4189453125,0.3603515625,0.3642578125,0.39453125,0.4697265625,0.5771484375,0.6796875,0.744140625,0.759765625,0.740234375,0.7021484375,0.6220703125,0.513671875,0.4140625,0.3544921875,0.34375,0.3642578125,0.3955078125,0.4501953125,0.5244140625,0.6044921875,0.6728515625,0.716796875,0.740234375,0.74609375,0.69921875,0.5986328125,0.48046875,0.38671875,0.349609375,0.3642578125,0.388671875,0.4052734375,0.4140625,0.4189453125,0.427734375,0.4443359375,0.46875,0.50390625,0.5673828125,0.646484375,0.71484375,0.751953125,0.755859375,0.740234375,0.7275390625,0.740234375,0.7705078125,0.7978515625,0.8037109375,0.78125,0.740234375,0.689453125,0.6220703125,0.5439453125,0.4716796875,0.41796875,0.384765625,0.3642578125,0.34765625,0.3466796875,0.3671875,0.40234375,0.4404296875,0.4638671875,0.46875,0.4638671875,0.4384765625,0.3916015625,0.3359375,0.2890625,0.263671875,0.2587890625,0.2578125,0.2548828125,0.2587890625,0.275390625,0.3037109375,0.3359375,0.3642578125,0.3994140625,0.4658203125,0.541015625,0.5927734375,0.6025390625,0.57421875,0.5302734375,0.4912109375,0.4814453125,0.5107421875,0.5654296875,0.619140625,0.64453125,0.634765625,0.6015625,0.515625,0.39453125,0.2841796875,0.22265625,0.220703125,0.2587890625,0.3173828125,0.4189453125,0.5380859375,0.6298828125,0.6640625,0.6474609375,0.6044921875,0.55859375,0.51171875,0.46875,0.435546875,0.4111328125,0.388671875,0.3642578125,0.3388671875,0.3251953125,0.3359375,0.375,0.4287109375,0.474609375,0.5,0.5087890625,0.484375,0.4306640625,0.375,0.345703125,0.35546875,0.39453125,0.4345703125,0.455078125,0.4638671875,0.4775390625,0.5107421875,0.5654296875,0.634765625,0.6943359375,0.69921875,0.6318359375,0.5185546875,0.41015625,0.3544921875,0.3642578125,0.3837890625,0.375,0.3369140625,0.2861328125,0.248046875,0.2392578125,0.2587890625,0.28125,0.28515625,0.2705078125,0.248046875,0.2333984375,0.2373046875,0.2587890625,0.2958984375,0.373046875,0.4853515625,0.6015625,0.689453125,0.732421875,0.740234375,0.728515625,0.6708984375,0.5634765625,0.435546875,0.328125,0.2705078125,0.2587890625,0.26171875,0.279296875,0.3203125,0.3798828125,0.4453125,0.498046875,0.5302734375,0.5556640625,0.576171875,0.5908203125,0.599609375,0.6064453125,0.6181640625,0.634765625,0.6591796875,0.701171875,0.748046875,0.779296875,0.783203125,0.765625,0.740234375,0.7001953125,0.6123046875,0.4970703125,0.3974609375,0.3486328125,0.3544921875,0.39453125,0.4541015625,0.55859375,0.673828125,0.748046875,0.7548828125,0.705078125,0.634765625,0.548828125,0.421875,0.294921875,0.2236328125,0.2294921875,0.291015625,0.3642578125,0.4345703125,0.490234375,0.4990234375,0.4521484375,0.37109375,0.296875,0.2587890625,0.2353515625,0.2314453125,0.26953125,0.353515625,0.4580078125,0.548828125,0.6044921875,0.640625,0.638671875,0.5966796875,0.5380859375,0.49609375,0.494140625,0.5302734375,0.5634765625,0.55078125,0.4990234375,0.44140625,0.4140625,0.4365234375,0.5,0.568359375,0.6171875,0.6240234375,0.5849609375,0.525390625,0.4794921875,0.46875,0.4580078125,0.40625,0.3251953125,0.2509765625,0.2119140625,0.2197265625,0.2587890625,0.31640625,0.4072265625,0.4990234375,0.546875,0.529296875,0.4677734375,0.39453125,0.322265625,0.2705078125,0.28125,0.3720703125,0.5166015625,0.65234375,0.740234375,0.8046875,0.8271484375,0.775390625,0.6572265625,0.5146484375,0.408203125,0.3642578125,0.3544921875,0.41015625,0.5185546875,0.6318359375,0.69921875,0.6943359375,0.634765625,0.56640625,0.5166015625,0.5,0.513671875,0.5380859375,0.5478515625,0.5302734375,0.5,0.462890625,0.44140625,0.453125,0.4970703125,0.5546875,0.6044921875,0.6494140625,0.6845703125,0.6904296875,0.6591796875,0.60546875,0.556640625,0.5302734375,0.5166015625,0.521484375,0.5380859375,0.5498046875,0.5419921875,0.51171875,0.46875,0.4208984375,0.3671875,0.328125,0.3193359375,0.33984375,0.37109375,0.39453125,0.4033203125,0.375,0.3251953125,0.287109375,0.2861328125,0.3271484375,0.39453125,0.4765625,0.5830078125,0.673828125,0.701171875,0.658203125,0.5771484375,0.5,0.4228515625,0.33984375,0.2861328125,0.2900390625,0.3447265625,0.416015625,0.46875,0.5234375,0.6044921875,0.693359375,0.7568359375,0.7783203125,0.765625,0.740234375,0.7080078125,0.65625,0.5908203125,0.5302734375,0.4892578125,0.4716796875,0.46875,0.4765625,0.51171875,0.568359375,0.6240234375,0.65625,0.6572265625,0.634765625,0.609375,0.591796875,0.595703125,0.435546875,0.4521484375,0.498046875,0.5556640625,0.6044921875,0.640625,0.638671875,0.5966796875,0.5380859375,0.49609375,0.494140625,0.5302734375,0.5859375,0.669921875,0.748046875,0.779296875,0.7490234375,0.6787109375,0.6044921875,0.51953125,0.3955078125,0.275390625,0.2119140625,0.224609375,0.2900390625,0.3642578125,0.4404296875,0.5234375,0.5771484375,0.57421875,0.5185546875,0.4482421875,0.39453125,0.357421875,0.361328125,0.4140625,0.4970703125,0.57421875,0.6123046875,0.6044921875,0.5869140625,0.5751953125,0.5693359375,0.5654296875,0.5595703125,0.5478515625,0.5302734375,0.51171875,0.4912109375,0.4609375,0.416015625,0.361328125,0.306640625,0.2587890625,0.21484375,0.18359375,0.1845703125,0.2236328125,0.2841796875,0.3369140625,0.3642578125,0.3740234375,0.3486328125,0.294921875,0.240234375,0.2109375,0.2197265625,0.2587890625,0.310546875,0.3798828125,0.44921875,0.494140625,0.50390625,0.4892578125,0.46875,0.44140625,0.3896484375,0.33984375,0.3251953125,0.359375,0.4267578125,0.5,0.5712890625,0.630859375,0.6513671875,0.62109375,0.5576171875,0.498046875,0.46875,0.4462890625,0.4130859375,0.3896484375,0.39453125,0.4306640625,0.4814453125,0.5302734375,0.5771484375,0.6201171875,0.6318359375,0.5966796875,0.5234375,0.4482421875,0.39453125,0.3662109375,0.4033203125,0.501953125,0.615234375,0.689453125,0.6923828125,0.634765625,0.5693359375,0.5322265625,0.5380859375,0.580078125,0.6279296875,0.650390625,0.634765625,0.599609375,0.5322265625,0.447265625,0.375,0.3388671875,0.3408203125,0.3642578125,0.390625,0.4130859375,0.4140625,0.3857421875,0.337890625,0.291015625,0.2587890625,0.2333984375,0.2158203125,0.2197265625,0.2509765625,0.2978515625,0.33984375,0.3642578125,0.3876953125,0.431640625,0.4990234375,0.580078125,0.654296875,0.7080078125,0.740234375,0.7607421875,0.7490234375,0.6904296875,0.595703125,0.49609375,0.4248046875,0.39453125,0.390625,0.4443359375,0.5517578125,0.6708984375,0.75390625,0.7734375,0.740234375,0.681640625,0.580078125,0.4609375,0.369140625,0.3349609375,0.3515625,0.39453125,0.44921875,0.53515625,0.634765625,0.71484375,0.7548828125,0.7568359375,0.740234375,0.70703125,0.625,0.5107421875,0.408203125,0.353515625,0.35546875,0.39453125,0.435546875,0.458984375,0.4638671875,0.4609375,0.4658203125,0.4892578125,0.5302734375,0.576171875,0.6240234375,0.6650390625,0.693359375,0.7099609375,0.72265625,0.740234375,0.76171875,0.791015625,0.814453125,0.8173828125,0.798828125,0.7685546875,0.740234375,0.7041015625,0.6318359375,0.53515625,0.447265625,0.3935546875,0.3798828125,0.39453125,0.416015625,0.4462890625,0.48046875,0.5078125,0.5234375,0.529296875,0.5302734375,0.5234375,0.490234375,0.4306640625,0.3583984375,0.2978515625,0.265625,0.2587890625,0.255859375,0.24609375,0.2421875,0.2587890625,0.2978515625,0.3466796875,0.39453125,0.4443359375,0.501953125,0.5458984375,0.5576171875,0.5361328125,0.4990234375,0.46875,0.4443359375,0.4296875,0.44140625,0.48046875,0.5341796875,0.5791015625,0.6044921875,0.611328125,0.568359375,0.474609375,0.3642578125,0.27734375,0.244140625,0.2587890625,0.296875,0.376953125,0.4853515625,0.5849609375,0.64453125,0.6552734375,0.634765625,0.6103515625,0.587890625,0.5634765625,0.5302734375,0.4873046875,0.4404296875,0.39453125,0.35546875,0.345703125,0.375,0.4306640625,0.484375,0.5087890625,0.5,0.474609375,0.4287109375,0.375,0.3359375,0.3251953125,0.3388671875,0.3642578125,0.3857421875,0.392578125,0.3974609375,0.4189453125,0.466796875,0.533203125,0.6044921875,0.6630859375,0.6640625,0.5966796875,0.4912109375,0.3994140625,0.365234375,0.39453125,0.4287109375,0.4189453125,0.36328125,0.2900390625,0.234375,0.224609375,0.2587890625,0.296875,0.3037109375,0.2783203125,0.240234375,0.21484375,0.220703125,0.2587890625,0.314453125,0.40625,0.521484375,0.6298828125,0.703125,0.7353515625,0.740234375,0.728515625,0.6708984375,0.5634765625,0.435546875,0.328125,0.2705078125,0.2587890625,0.2578125,0.2568359375,0.26953125,0.306640625,0.361328125,0.419921875,0.46875,0.51953125,0.580078125,0.6328125,0.6572265625,0.650390625,0.6259765625,0.6044921875,0.595703125,0.625,0.685546875,0.748046875,0.7841796875,0.7783203125,0.740234375,0.68359375,0.58984375,0.4775390625,0.3857421875,0.3408203125,0.3408203125,0.3642578125,0.4052734375,0.4951171875,0.607421875,0.6904296875,0.7109375,0.6728515625,0.6044921875,0.51953125,0.400390625,0.287109375,0.2314453125,0.2509765625,0.3193359375,0.39453125,0.4677734375,0.529296875,0.546875,0.5,0.4072265625,0.31640625,0.2587890625,0.2197265625,0.216796875,0.2734375,0.3798828125,0.5029296875,0.5947265625,0.634765625,0.6533203125,0.63671875,0.5849609375,0.5185546875,0.466796875,0.451171875,0.46875,0.4853515625,0.466796875,0.4248046875,0.3916015625,0.3916015625,0.4326171875,0.5,0.5703125,0.6259765625,0.646484375,0.6240234375,0.5771484375,0.5390625,0.5302734375,0.51953125,0.4716796875,0.3916015625,0.30859375,0.2529296875,0.2392578125,0.2587890625,0.296875,0.37109375,0.4521484375,0.5,0.490234375,0.4345703125,0.3642578125,0.29296875,0.244140625,0.26171875,0.361328125,0.51171875,0.6513671875,0.740234375,0.8076171875,0.8447265625,0.814453125,0.7119140625,0.5732421875,0.4560546875,0.39453125,0.365234375,0.3994140625,0.4912109375,0.5966796875,0.6640625,0.6630859375,0.6044921875,0.5380859375,0.4951171875,0.4853515625,0.5,0.5146484375,0.5068359375,0.46875,0.4248046875,0.396484375,0.40625,0.4580078125,0.533203125,0.599609375,0.634765625,0.654296875,0.642578125,0.595703125,0.533203125,0.4794921875,0.4580078125,0.46875,0.4931640625,0.529296875,0.56640625,0.5849609375,0.580078125,0.556640625,0.5302734375,0.5029296875,0.474609375,0.447265625,0.421875,0.4013671875,0.3828125,0.3642578125,0.3359375,0.2802734375,0.2236328125,0.201171875,0.228515625,0.2919921875,0.3642578125,0.447265625,0.5576171875,0.654296875,0.6904296875,0.6533203125,0.576171875,0.5,0.4267578125,0.3623046875,0.3369140625,0.36328125,0.4287109375,0.4931640625,0.5302734375,0.56640625,0.6376953125,0.7236328125,0.787109375,0.8056640625,0.783203125,0.740234375,0.69140625,0.6328125,0.5771484375,0.541015625,0.52734375,0.5283203125,0.5302734375,0.5380859375,0.5732421875,0.6240234375,0.6630859375,0.6708984375,0.6474609375,0.6044921875,0.56640625,0.560546875,0.5966796875,0.33203125,0.341796875,0.40234375,0.4833984375,0.55078125,0.6025390625,0.6142578125,0.583984375,0.537109375,0.5068359375,0.5185546875,0.5703125,0.6396484375,0.7236328125,0.7841796875,0.783203125,0.720703125,0.6298828125,0.55078125,0.4677734375,0.3525390625,0.2470703125,0.201171875,0.228515625,0.3017578125,0.376953125,0.45703125,0.5537109375,0.62890625,0.642578125,0.59375,0.515625,0.4482421875,0.3974609375,0.39453125,0.4443359375,0.51953125,0.5791015625,0.58984375,0.55078125,0.5087890625,0.50390625,0.5361328125,0.5849609375,0.6171875,0.6123046875,0.5703125,0.5234375,0.4921875,0.4736328125,0.45703125,0.4287109375,0.3837890625,0.3251953125,0.259765625,0.1923828125,0.154296875,0.171875,0.2392578125,0.318359375,0.376953125,0.4169921875,0.412109375,0.3642578125,0.3037109375,0.265625,0.2744140625,0.3251953125,0.39453125,0.4814453125,0.5546875,0.5771484375,0.544921875,0.484375,0.4287109375,0.37109375,0.30078125,0.25390625,0.263671875,0.330078125,0.4208984375,0.5,0.5751953125,0.6484375,0.68359375,0.65625,0.578125,0.490234375,0.4287109375,0.3740234375,0.318359375,0.294921875,0.3271484375,0.408203125,0.5,0.5703125,0.6357421875,0.701171875,0.73046875,0.6982421875,0.6142578125,0.5185546875,0.4482421875,0.40234375,0.419921875,0.5009765625,0.603515625,0.6748046875,0.6787109375,0.6220703125,0.5537109375,0.5068359375,0.5009765625,0.5361328125,0.587890625,0.6220703125,0.6220703125,0.6044921875,0.5615234375,0.4970703125,0.4326171875,0.3876953125,0.37109375,0.376953125,0.3876953125,0.39453125,0.3935546875,0.3798828125,0.3583984375,0.3388671875,0.3251953125,0.3095703125,0.2783203125,0.25,0.2470703125,0.275390625,0.3251953125,0.376953125,0.4326171875,0.4990234375,0.5673828125,0.619140625,0.6494140625,0.6630859375,0.673828125,0.685546875,0.6953125,0.6845703125,0.642578125,0.5751953125,0.50390625,0.4482421875,0.412109375,0.4375,0.5244140625,0.6318359375,0.708984375,0.720703125,0.673828125,0.599609375,0.4921875,0.384765625,0.3251953125,0.33203125,0.384765625,0.4482421875,0.51953125,0.6220703125,0.7216796875,0.7763671875,0.771484375,0.7265625,0.673828125,0.6103515625,0.509765625,0.404296875,0.33984375,0.3388671875,0.38671875,0.4482421875,0.501953125,0.525390625,0.5185546875,0.4990234375,0.4921875,0.515625,0.5703125,0.625,0.65234375,0.6494140625,0.62890625,0.6162109375,0.6298828125,0.673828125,0.724609375,0.767578125,0.78515625,0.767578125,0.7275390625,0.6904296875,0.673828125,0.6513671875,0.5859375,0.49609375,0.4189453125,0.3857421875,0.40234375,0.4482421875,0.5,0.552734375,0.5888671875,0.599609375,0.5888671875,0.57421875,0.5703125,0.564453125,0.5341796875,0.48046875,0.416015625,0.361328125,0.3310546875,0.3251953125,0.3203125,0.298828125,0.2802734375,0.287109375,0.3251953125,0.3857421875,0.4482421875,0.5087890625,0.556640625,0.572265625,0.5458984375,0.4931640625,0.4482421875,0.4287109375,0.4150390625,0.392578125,0.3798828125,0.39453125,0.439453125,0.4970703125,0.55078125,0.59375,0.59765625,0.548828125,0.4638671875,0.376953125,0.328125,0.3251953125,0.34375,0.3935546875,0.4697265625,0.5478515625,0.6044921875,0.6259765625,0.6220703125,0.6162109375,0.623046875,0.6279296875,0.6123046875,0.5703125,0.509765625,0.4482421875,0.396484375,0.3876953125,0.42578125,0.4873046875,0.5341796875,0.5390625,0.5,0.4453125,0.3876953125,0.3427734375,0.328125,0.3408203125,0.36328125,0.376953125,0.3818359375,0.3681640625,0.35546875,0.3671875,0.4111328125,0.478515625,0.55078125,0.6103515625,0.6142578125,0.55859375,0.4755859375,0.41015625,0.400390625,0.4482421875,0.49609375,0.490234375,0.4287109375,0.3447265625,0.283203125,0.27734375,0.3251953125,0.376953125,0.3857421875,0.3515625,0.2998046875,0.265625,0.2744140625,0.3251953125,0.3935546875,0.48046875,0.5693359375,0.6357421875,0.6669921875,0.673828125,0.673828125,0.6650390625,0.623046875,0.5458984375,0.453125,0.3759765625,0.333984375,0.3251953125,0.3193359375,0.296875,0.2734375,0.275390625,0.3095703125,0.3671875,0.4287109375,0.4990234375,0.587890625,0.6640625,0.6923828125,0.6640625,0.6064453125,0.55078125,0.5126953125,0.5263671875,0.58984375,0.669921875,0.7236328125,0.72265625,0.673828125,0.60546875,0.5185546875,0.43359375,0.376953125,0.3583984375,0.365234375,0.376953125,0.4013671875,0.4716796875,0.56640625,0.6376953125,0.6552734375,0.6181640625,0.55078125,0.46875,0.3623046875,0.2724609375,0.2451171875,0.2890625,0.3701171875,0.4482421875,0.5234375,0.5966796875,0.6279296875,0.591796875,0.5,0.3984375,0.3251953125,0.271484375,0.2568359375,0.3037109375,0.4033203125,0.5166015625,0.595703125,0.6220703125,0.6259765625,0.6044921875,0.5556640625,0.4951171875,0.4462890625,0.4248046875,0.4287109375,0.4306640625,0.4052734375,0.369140625,0.353515625,0.375,0.4296875,0.5,0.5712890625,0.6318359375,0.6611328125,0.6494140625,0.611328125,0.578125,0.5703125,0.5625,0.52734375,0.46484375,0.3955078125,0.34375,0.3212890625,0.3251953125,0.3466796875,0.40234375,0.4697265625,0.5087890625,0.4990234375,0.447265625,0.376953125,0.3046875,0.24609375,0.24609375,0.32421875,0.45703125,0.5869140625,0.673828125,0.74609375,0.806640625,0.8154296875,0.751953125,0.63671875,0.5224609375,0.4482421875,0.400390625,0.41015625,0.4755859375,0.55859375,0.6142578125,0.6103515625,0.55078125,0.4873046875,0.455078125,0.4609375,0.484375,0.4990234375,0.4814453125,0.4287109375,0.3720703125,0.3447265625,0.369140625,0.44140625,0.5322265625,0.5986328125,0.6220703125,0.6201171875,0.5751953125,0.49609375,0.4189453125,0.3779296875,0.3857421875,0.4287109375,0.4833984375,0.5439453125,0.5927734375,0.6123046875,0.6044921875,0.583984375,0.5703125,0.5625,0.5615234375,0.5546875,0.529296875,0.484375,0.4296875,0.376953125,0.3173828125,0.2392578125,0.17578125,0.1669921875,0.21875,0.30078125,0.376953125,0.4599609375,0.5693359375,0.6630859375,0.6953125,0.6552734375,0.576171875,0.5,0.4296875,0.3798828125,0.375,0.4189453125,0.490234375,0.5478515625,0.5703125,0.5908203125,0.646484375,0.7177734375,0.7666015625,0.7705078125,0.732421875,0.673828125,0.611328125,0.5537109375,0.51953125,0.5185546875,0.541015625,0.5634765625,0.5703125,0.578125,0.611328125,0.6533203125,0.673828125,0.658203125,0.611328125,0.55078125,0.5009765625,0.5009765625,0.5546875,0.271484375,0.2734375,0.33984375,0.431640625,0.509765625,0.5693359375,0.5859375,0.5576171875,0.51171875,0.4833984375,0.5,0.5595703125,0.63671875,0.72265625,0.7783203125,0.765625,0.689453125,0.58984375,0.509765625,0.427734375,0.32421875,0.2392578125,0.21875,0.267578125,0.3515625,0.4296875,0.5107421875,0.611328125,0.689453125,0.705078125,0.65234375,0.56640625,0.4892578125,0.431640625,0.421875,0.46484375,0.5283203125,0.572265625,0.5654296875,0.509765625,0.4541015625,0.44921875,0.4990234375,0.5703125,0.619140625,0.615234375,0.5595703125,0.4990234375,0.47265625,0.4814453125,0.5029296875,0.509765625,0.4814453125,0.419921875,0.3427734375,0.2529296875,0.19140625,0.1943359375,0.26171875,0.353515625,0.4296875,0.486328125,0.494140625,0.4521484375,0.3916015625,0.3515625,0.361328125,0.419921875,0.498046875,0.5908203125,0.6591796875,0.6640625,0.603515625,0.515625,0.439453125,0.3642578125,0.2802734375,0.2275390625,0.2421875,0.3193359375,0.4189453125,0.5,0.5771484375,0.662109375,0.712890625,0.6962890625,0.6162109375,0.517578125,0.439453125,0.3662109375,0.2900390625,0.251953125,0.283203125,0.373046875,0.478515625,0.5595703125,0.6357421875,0.71875,0.7685546875,0.75,0.669921875,0.5693359375,0.4892578125,0.43359375,0.43359375,0.4912109375,0.572265625,0.6298828125,0.6279296875,0.5693359375,0.5,0.4482421875,0.4365234375,0.4677734375,0.5205078125,0.560546875,0.5693359375,0.564453125,0.544921875,0.5126953125,0.4755859375,0.4462890625,0.4306640625,0.4296875,0.431640625,0.4326171875,0.431640625,0.4287109375,0.4248046875,0.421875,0.419921875,0.4091796875,0.369140625,0.3203125,0.294921875,0.310546875,0.3623046875,0.4296875,0.4990234375,0.56640625,0.611328125,0.62109375,0.6044921875,0.583984375,0.5791015625,0.587890625,0.6181640625,0.6494140625,0.654296875,0.6201171875,0.55859375,0.4892578125,0.4345703125,0.4365234375,0.49609375,0.578125,0.63671875,0.6357421875,0.5791015625,0.4990234375,0.396484375,0.3115234375,0.287109375,0.3330078125,0.4140625,0.4892578125,0.5693359375,0.6708984375,0.7548828125,0.7783203125,0.7333984375,0.6533203125,0.5791015625,0.5009765625,0.3994140625,0.314453125,0.2900390625,0.333984375,0.4140625,0.4892578125,0.5498046875,0.568359375,0.544921875,0.50390625,0.48046875,0.4990234375,0.5595703125,0.6181640625,0.6318359375,0.5986328125,0.5458984375,0.5107421875,0.5224609375,0.5791015625,0.646484375,0.697265625,0.7109375,0.6826171875,0.6318359375,0.5908203125,0.5791015625,0.56640625,0.513671875,0.443359375,0.390625,0.384765625,0.4248046875,0.4892578125,0.5576171875,0.6162109375,0.64453125,0.6337890625,0.5986328125,0.5673828125,0.5595703125,0.5556640625,0.5390625,0.5078125,0.470703125,0.4404296875,0.4228515625,0.419921875,0.412109375,0.37890625,0.3427734375,0.33203125,0.3603515625,0.419921875,0.4892578125,0.556640625,0.6025390625,0.6064453125,0.5634765625,0.5,0.4521484375,0.439453125,0.4306640625,0.3974609375,0.3623046875,0.3525390625,0.3818359375,0.44140625,0.509765625,0.5732421875,0.611328125,0.603515625,0.5498046875,0.4794921875,0.4296875,0.419921875,0.4248046875,0.4453125,0.48046875,0.51953125,0.5517578125,0.5673828125,0.5693359375,0.5751953125,0.60546875,0.6396484375,0.6484375,0.619140625,0.5595703125,0.4892578125,0.4306640625,0.4208984375,0.4609375,0.5224609375,0.564453125,0.5556640625,0.5,0.4306640625,0.3720703125,0.341796875,0.3515625,0.3876953125,0.419921875,0.4296875,0.4228515625,0.392578125,0.357421875,0.3466796875,0.376953125,0.4384765625,0.509765625,0.5693359375,0.578125,0.53515625,0.4697265625,0.4248046875,0.431640625,0.4892578125,0.5458984375,0.5478515625,0.4931640625,0.416015625,0.361328125,0.36328125,0.419921875,0.478515625,0.48828125,0.44921875,0.3896484375,0.3505859375,0.361328125,0.419921875,0.4912109375,0.5625,0.6103515625,0.623046875,0.6064453125,0.5849609375,0.5791015625,0.5751953125,0.556640625,0.5205078125,0.478515625,0.4423828125,0.423828125,0.419921875,0.41015625,0.3720703125,0.32421875,0.2998046875,0.3173828125,0.37109375,0.439453125,0.5185546875,0.6181640625,0.6982421875,0.7158203125,0.666015625,0.583984375,0.509765625,0.4541015625,0.453125,0.5087890625,0.5859375,0.6396484375,0.63671875,0.5791015625,0.5078125,0.4375,0.3896484375,0.37890625,0.3984375,0.421875,0.4296875,0.443359375,0.49609375,0.5673828125,0.6181640625,0.62109375,0.5771484375,0.509765625,0.4296875,0.3330078125,0.26171875,0.255859375,0.318359375,0.41015625,0.4892578125,0.5673828125,0.65234375,0.7021484375,0.6826171875,0.6005859375,0.4990234375,0.419921875,0.3544921875,0.3212890625,0.33984375,0.408203125,0.494140625,0.5546875,0.5693359375,0.5673828125,0.5517578125,0.5224609375,0.486328125,0.45703125,0.44140625,0.439453125,0.4326171875,0.3994140625,0.359375,0.3447265625,0.3701171875,0.4287109375,0.5,0.5703125,0.6298828125,0.6572265625,0.642578125,0.6025390625,0.568359375,0.5595703125,0.5556640625,0.5380859375,0.505859375,0.4677734375,0.4375,0.421875,0.419921875,0.431640625,0.4755859375,0.53125,0.564453125,0.5517578125,0.4990234375,0.4296875,0.353515625,0.27734375,0.244140625,0.283203125,0.3837890625,0.49609375,0.5791015625,0.65625,0.7392578125,0.7841796875,0.759765625,0.673828125,0.5693359375,0.4892578125,0.431640625,0.4248046875,0.4697265625,0.53515625,0.578125,0.5693359375,0.509765625,0.4482421875,0.427734375,0.451171875,0.4921875,0.517578125,0.4990234375,0.439453125,0.3740234375,0.337890625,0.3525390625,0.416015625,0.4970703125,0.5546875,0.5693359375,0.55859375,0.50390625,0.4248046875,0.3603515625,0.3427734375,0.3759765625,0.439453125,0.5087890625,0.5751953125,0.615234375,0.619140625,0.59375,0.5673828125,0.5595703125,0.564453125,0.5869140625,0.6083984375,0.6044921875,0.5634765625,0.4990234375,0.4296875,0.353515625,0.26171875,0.1953125,0.1943359375,0.2578125,0.3505859375,0.4296875,0.5107421875,0.61328125,0.6962890625,0.71484375,0.6630859375,0.5771484375,0.5,0.4306640625,0.384765625,0.3837890625,0.4287109375,0.49609375,0.5458984375,0.5595703125,0.5712890625,0.615234375,0.6728515625,0.70703125,0.697265625,0.6474609375,0.5791015625,0.5107421875,0.45703125,0.439453125,0.4638671875,0.51171875,0.5498046875,0.5595703125,0.568359375,0.6025390625,0.6435546875,0.66015625,0.6357421875,0.5791015625,0.509765625,0.4521484375,0.44921875,0.5029296875,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.2578125,0.255859375,0.3203125,0.412109375,0.4892578125,0.5458984375,0.5478515625,0.4931640625,0.416015625,0.361328125,0.36328125,0.419921875,0.5,0.6025390625,0.6875,0.7119140625,0.666015625,0.5849609375,0.509765625,0.4326171875,0.3466796875,0.2939453125,0.3095703125,0.3876953125,0.48828125,0.5693359375,0.6474609375,0.7314453125,0.7802734375,0.759765625,0.6748046875,0.5712890625,0.4892578125,0.4296875,0.4208984375,0.4638671875,0.529296875,0.57421875,0.5673828125,0.509765625,0.44921875,0.427734375,0.447265625,0.482421875,0.501953125,0.48046875,0.419921875,0.365234375,0.3740234375,0.44921875,0.5498046875,0.625,0.6337890625,0.5791015625,0.5009765625,0.4052734375,0.3349609375,0.328125,0.3896484375,0.48046875,0.5595703125,0.6201171875,0.6337890625,0.599609375,0.544921875,0.5087890625,0.5205078125,0.5791015625,0.6572265625,0.7490234375,0.814453125,0.814453125,0.7490234375,0.6572265625,0.5791015625,0.4990234375,0.396484375,0.3115234375,0.287109375,0.3330078125,0.4140625,0.4892578125,0.5693359375,0.671875,0.7578125,0.78125,0.736328125,0.6552734375,0.5791015625,0.498046875,0.38671875,0.287109375,0.2470703125,0.2783203125,0.353515625,0.4296875,0.5107421875,0.6142578125,0.697265625,0.7177734375,0.6689453125,0.5859375,0.509765625,0.44921875,0.427734375,0.447265625,0.482421875,0.501953125,0.48046875,0.419921875,0.3525390625,0.3037109375,0.294921875,0.330078125,0.38671875,0.4296875,0.439453125,0.443359375,0.4599609375,0.490234375,0.5244140625,0.5537109375,0.568359375,0.5693359375,0.5673828125,0.56640625,0.564453125,0.5634765625,0.5625,0.560546875,0.5595703125,0.548828125,0.5087890625,0.4609375,0.4375,0.4560546875,0.5107421875,0.5791015625,0.6435546875,0.6767578125,0.6552734375,0.583984375,0.49609375,0.4345703125,0.419921875,0.4296875,0.4765625,0.54296875,0.5908203125,0.5947265625,0.5546875,0.4892578125,0.431640625,0.416015625,0.4443359375,0.490234375,0.5166015625,0.4990234375,0.439453125,0.36328125,0.27734375,0.224609375,0.2392578125,0.318359375,0.4189453125,0.5,0.5771484375,0.6591796875,0.7060546875,0.68359375,0.599609375,0.498046875,0.419921875,0.345703125,0.265625,0.220703125,0.244140625,0.328125,0.4296875,0.509765625,0.5654296875,0.5654296875,0.5078125,0.4267578125,0.369140625,0.37109375,0.4296875,0.4892578125,0.5,0.458984375,0.396484375,0.353515625,0.3623046875,0.419921875,0.48828125,0.5390625,0.5537109375,0.525390625,0.4755859375,0.4375,0.4296875,0.423828125,0.3935546875,0.359375,0.3505859375,0.3798828125,0.439453125,0.509765625,0.576171875,0.6171875,0.61328125,0.564453125,0.4970703125,0.44921875,0.439453125,0.4443359375,0.4638671875,0.4970703125,0.533203125,0.5634765625,0.578125,0.5791015625,0.56640625,0.5146484375,0.4453125,0.3974609375,0.396484375,0.44140625,0.509765625,0.580078125,0.638671875,0.6640625,0.6494140625,0.609375,0.576171875,0.5693359375,0.55859375,0.5087890625,0.4375,0.3857421875,0.3798828125,0.421875,0.4892578125,0.560546875,0.6220703125,0.65234375,0.6416015625,0.6064453125,0.576171875,0.5693359375,0.568359375,0.5537109375,0.5244140625,0.490234375,0.4599609375,0.443359375,0.439453125,0.4501953125,0.49609375,0.55859375,0.6005859375,0.5986328125,0.5546875,0.4892578125,0.43359375,0.4267578125,0.470703125,0.5341796875,0.5771484375,0.5673828125,0.509765625,0.443359375,0.400390625,0.4013671875,0.4482421875,0.5126953125,0.5595703125,0.5693359375,0.5556640625,0.5048828125,0.4345703125,0.3837890625,0.380859375,0.4228515625,0.4892578125,0.5478515625,0.5576171875,0.5166015625,0.45703125,0.41796875,0.4296875,0.4892578125,0.5517578125,0.57421875,0.5537109375,0.515625,0.4931640625,0.5107421875,0.5693359375,0.6259765625,0.63671875,0.599609375,0.5439453125,0.5078125,0.5205078125,0.5791015625,0.6435546875,0.67578125,0.6533203125,0.5810546875,0.4931640625,0.43359375,0.419921875,0.4228515625,0.4384765625,0.46875,0.5048828125,0.5361328125,0.5546875,0.5595703125,0.5517578125,0.5126953125,0.4619140625,0.4326171875,0.4443359375,0.4931640625,0.5595703125,0.6337890625,0.7158203125,0.765625,0.748046875,0.66796875,0.568359375,0.4892578125,0.4296875,0.4111328125,0.435546875,0.478515625,0.5048828125,0.48828125,0.4296875,0.3671875,0.3359375,0.3583984375,0.4267578125,0.5107421875,0.568359375,0.5791015625,0.5859375,0.615234375,0.6484375,0.6552734375,0.623046875,0.5615234375,0.4892578125,0.41015625,0.318359375,0.25390625,0.2548828125,0.3212890625,0.4130859375,0.4892578125,0.5673828125,0.66796875,0.751953125,0.775390625,0.732421875,0.6533203125,0.5791015625,0.509765625,0.4423828125,0.3974609375,0.3876953125,0.4052734375,0.42578125,0.4296875,0.431640625,0.447265625,0.4765625,0.5126953125,0.5419921875,0.5576171875,0.5595703125,0.546875,0.4990234375,0.43359375,0.3896484375,0.390625,0.4345703125,0.5,0.564453125,0.6044921875,0.599609375,0.5498046875,0.48046875,0.4306640625,0.419921875,0.4228515625,0.4384765625,0.46875,0.5048828125,0.5361328125,0.5546875,0.5595703125,0.5703125,0.61328125,0.666015625,0.697265625,0.685546875,0.6357421875,0.5693359375,0.490234375,0.384765625,0.2919921875,0.2578125,0.29296875,0.3671875,0.439453125,0.517578125,0.6171875,0.697265625,0.716796875,0.66796875,0.5859375,0.509765625,0.451171875,0.4404296875,0.4794921875,0.5390625,0.578125,0.568359375,0.509765625,0.4521484375,0.44921875,0.5009765625,0.57421875,0.6240234375,0.6181640625,0.5595703125,0.486328125,0.4169921875,0.3740234375,0.369140625,0.3935546875,0.4208984375,0.4296875,0.42578125,0.4052734375,0.3876953125,0.3974609375,0.4423828125,0.509765625,0.5791015625,0.642578125,0.6767578125,0.6591796875,0.5947265625,0.51171875,0.4541015625,0.439453125,0.451171875,0.5068359375,0.5888671875,0.654296875,0.671875,0.6357421875,0.5693359375,0.490234375,0.3984375,0.3349609375,0.337890625,0.4072265625,0.5009765625,0.5791015625,0.6552734375,0.7392578125,0.7880859375,0.7705078125,0.689453125,0.5888671875,0.509765625,0.439453125,0.3759765625,0.341796875,0.3466796875,0.3798828125,0.41015625,0.419921875,0.4306640625,0.4736328125,0.5263671875,0.5576171875,0.5458984375,0.49609375,0.4296875,0.36328125,0.314453125,0.3046875,0.3359375,0.388671875,0.4296875,0.439453125,0.451171875,0.4990234375,0.5634765625,0.6064453125,0.6044921875,0.55859375,0.4892578125,0.4287109375,0.41015625,0.4384765625,0.2548828125,0.24609375,0.298828125,0.37890625,0.4482421875,0.49609375,0.490234375,0.4287109375,0.3447265625,0.283203125,0.27734375,0.3251953125,0.3994140625,0.5068359375,0.6142578125,0.673828125,0.6669921875,0.6142578125,0.55078125,0.4833984375,0.4052734375,0.3564453125,0.3701171875,0.4453125,0.5419921875,0.6220703125,0.697265625,0.7705078125,0.7978515625,0.751953125,0.646484375,0.53125,0.4482421875,0.388671875,0.384765625,0.4404296875,0.5234375,0.5888671875,0.5986328125,0.55078125,0.4951171875,0.4580078125,0.4423828125,0.4345703125,0.4189453125,0.3818359375,0.3251953125,0.2822265625,0.3154296875,0.427734375,0.5712890625,0.68359375,0.716796875,0.673828125,0.6015625,0.501953125,0.4140625,0.3828125,0.4189453125,0.494140625,0.5703125,0.6337890625,0.6630859375,0.6533203125,0.625,0.60546875,0.62109375,0.673828125,0.7412109375,0.822265625,0.87890625,0.87890625,0.822265625,0.7412109375,0.673828125,0.599609375,0.4921875,0.384765625,0.3251953125,0.33203125,0.384765625,0.4482421875,0.521484375,0.62890625,0.736328125,0.7958984375,0.7890625,0.736328125,0.673828125,0.5966796875,0.474609375,0.34375,0.2607421875,0.25390625,0.3056640625,0.376953125,0.4599609375,0.5693359375,0.6669921875,0.7080078125,0.6826171875,0.6171875,0.55078125,0.4951171875,0.4580078125,0.4423828125,0.4345703125,0.4189453125,0.3818359375,0.3251953125,0.2685546875,0.236328125,0.248046875,0.30078125,0.3701171875,0.41796875,0.4287109375,0.4345703125,0.46484375,0.5146484375,0.5703125,0.611328125,0.626953125,0.6220703125,0.6123046875,0.6044921875,0.5986328125,0.59375,0.587890625,0.580078125,0.5703125,0.5537109375,0.5234375,0.4990234375,0.50390625,0.546875,0.609375,0.673828125,0.7265625,0.7353515625,0.6767578125,0.5634765625,0.4375,0.3525390625,0.3251953125,0.3251953125,0.3623046875,0.42578125,0.484375,0.509765625,0.4931640625,0.4482421875,0.40625,0.40234375,0.4345703125,0.4775390625,0.4990234375,0.482421875,0.4287109375,0.361328125,0.283203125,0.234375,0.248046875,0.3232421875,0.419921875,0.5,0.572265625,0.6328125,0.6455078125,0.5908203125,0.4892578125,0.3896484375,0.3251953125,0.2724609375,0.2275390625,0.22265625,0.27734375,0.376953125,0.4794921875,0.55078125,0.5966796875,0.5791015625,0.498046875,0.3955078125,0.32421875,0.3203125,0.376953125,0.4375,0.4482421875,0.404296875,0.333984375,0.2802734375,0.27734375,0.3251953125,0.384765625,0.4296875,0.4453125,0.4287109375,0.396484375,0.375,0.376953125,0.3828125,0.3759765625,0.37109375,0.38671875,0.4287109375,0.4892578125,0.55078125,0.6064453125,0.630859375,0.6064453125,0.5439453125,0.4736328125,0.4306640625,0.4287109375,0.4462890625,0.4892578125,0.5537109375,0.6181640625,0.6630859375,0.6796875,0.673828125,0.650390625,0.5859375,0.50390625,0.4453125,0.439453125,0.482421875,0.55078125,0.62109375,0.67578125,0.697265625,0.681640625,0.6455078125,0.6201171875,0.6220703125,0.6181640625,0.5625,0.47265625,0.3916015625,0.3583984375,0.3837890625,0.4482421875,0.5205078125,0.587890625,0.6318359375,0.6435546875,0.630859375,0.6171875,0.6220703125,0.626953125,0.611328125,0.5703125,0.5146484375,0.46484375,0.4345703125,0.4287109375,0.4365234375,0.46875,0.5107421875,0.537109375,0.5322265625,0.4970703125,0.4482421875,0.4091796875,0.419921875,0.4794921875,0.5546875,0.6044921875,0.6015625,0.55078125,0.494140625,0.46484375,0.4765625,0.525390625,0.5849609375,0.6220703125,0.6220703125,0.5986328125,0.5341796875,0.4482421875,0.380859375,0.361328125,0.390625,0.4482421875,0.4970703125,0.5009765625,0.458984375,0.40234375,0.3701171875,0.38671875,0.4482421875,0.5146484375,0.55859375,0.572265625,0.56640625,0.5615234375,0.578125,0.6220703125,0.6640625,0.671875,0.6474609375,0.61328125,0.59765625,0.619140625,0.673828125,0.724609375,0.7275390625,0.6611328125,0.5439453125,0.419921875,0.341796875,0.3251953125,0.330078125,0.353515625,0.400390625,0.4609375,0.5166015625,0.5546875,0.5703125,0.5732421875,0.55078125,0.5146484375,0.4892578125,0.490234375,0.521484375,0.5703125,0.625,0.68359375,0.7109375,0.68359375,0.6064453125,0.517578125,0.4482421875,0.3935546875,0.3701171875,0.380859375,0.4091796875,0.4296875,0.419921875,0.376953125,0.3359375,0.3408203125,0.4052734375,0.509765625,0.611328125,0.669921875,0.673828125,0.66796875,0.6748046875,0.67578125,0.6513671875,0.5947265625,0.521484375,0.4482421875,0.37109375,0.2890625,0.2373046875,0.24609375,0.3095703125,0.388671875,0.4482421875,0.509765625,0.6044921875,0.7021484375,0.76171875,0.7646484375,0.724609375,0.673828125,0.6181640625,0.55078125,0.4833984375,0.4306640625,0.4013671875,0.3876953125,0.376953125,0.373046875,0.39453125,0.443359375,0.50390625,0.552734375,0.57421875,0.5703125,0.55078125,0.505859375,0.4501953125,0.4140625,0.4150390625,0.4501953125,0.5,0.544921875,0.5615234375,0.5322265625,0.4638671875,0.3876953125,0.3369140625,0.3251953125,0.330078125,0.353515625,0.400390625,0.4609375,0.5166015625,0.5546875,0.5703125,0.5888671875,0.6318359375,0.68359375,0.7138671875,0.708984375,0.671875,0.6220703125,0.560546875,0.470703125,0.3798828125,0.3291015625,0.3330078125,0.376953125,0.4287109375,0.490234375,0.578125,0.66015625,0.697265625,0.6748046875,0.615234375,0.55078125,0.5,0.4912109375,0.525390625,0.5771484375,0.611328125,0.6025390625,0.55078125,0.501953125,0.5009765625,0.5478515625,0.6083984375,0.6455078125,0.630859375,0.5703125,0.494140625,0.412109375,0.3486328125,0.3232421875,0.3359375,0.361328125,0.376953125,0.3876953125,0.4013671875,0.4306640625,0.4833984375,0.55078125,0.6181640625,0.673828125,0.71875,0.732421875,0.6953125,0.61328125,0.5185546875,0.4521484375,0.4287109375,0.43359375,0.4912109375,0.5849609375,0.6708984375,0.708984375,0.685546875,0.6220703125,0.544921875,0.462890625,0.4150390625,0.43359375,0.509765625,0.6025390625,0.673828125,0.73828125,0.8046875,0.833984375,0.8017578125,0.7177734375,0.6220703125,0.55078125,0.484375,0.40625,0.3369140625,0.298828125,0.296875,0.3125,0.3251953125,0.34375,0.3876953125,0.4384765625,0.4697265625,0.4638671875,0.4267578125,0.376953125,0.3291015625,0.2978515625,0.2998046875,0.3349609375,0.384765625,0.4208984375,0.4287109375,0.439453125,0.4833984375,0.541015625,0.576171875,0.5673828125,0.517578125,0.4482421875,0.3857421875,0.3671875,0.3955078125,0.2587890625,0.2421875,0.2802734375,0.3427734375,0.39453125,0.4287109375,0.4189453125,0.36328125,0.2900390625,0.234375,0.224609375,0.2587890625,0.3173828125,0.4189453125,0.5380859375,0.6298828125,0.6640625,0.6474609375,0.6044921875,0.55078125,0.48046875,0.4248046875,0.421875,0.4755859375,0.55859375,0.634765625,0.708984375,0.7744140625,0.787109375,0.7236328125,0.603515625,0.4794921875,0.39453125,0.3359375,0.3349609375,0.40234375,0.5078125,0.599609375,0.6337890625,0.6044921875,0.55859375,0.509765625,0.4580078125,0.4052734375,0.353515625,0.3046875,0.2587890625,0.232421875,0.2841796875,0.4169921875,0.58203125,0.71484375,0.7666015625,0.740234375,0.6806640625,0.5810546875,0.4716796875,0.4052734375,0.4052734375,0.458984375,0.5302734375,0.5986328125,0.6494140625,0.67578125,0.6826171875,0.6845703125,0.701171875,0.740234375,0.7900390625,0.849609375,0.892578125,0.892578125,0.849609375,0.7900390625,0.740234375,0.681640625,0.580078125,0.4609375,0.369140625,0.3349609375,0.3515625,0.39453125,0.453125,0.5546875,0.673828125,0.7646484375,0.7998046875,0.7822265625,0.740234375,0.677734375,0.556640625,0.4111328125,0.30078125,0.263671875,0.296875,0.3642578125,0.4453125,0.5537109375,0.654296875,0.70703125,0.6982421875,0.6533203125,0.6044921875,0.55859375,0.509765625,0.4580078125,0.4052734375,0.353515625,0.3046875,0.2587890625,0.2197265625,0.2119140625,0.2509765625,0.3251953125,0.40625,0.4580078125,0.46875,0.4765625,0.51171875,0.568359375,0.6240234375,0.65625,0.6572265625,0.634765625,0.6103515625,0.59375,0.5849609375,0.580078125,0.5712890625,0.5546875,0.5302734375,0.5029296875,0.482421875,0.4912109375,0.5380859375,0.61328125,0.6875,0.740234375,0.7763671875,0.7666015625,0.6875,0.5517578125,0.40625,0.3017578125,0.2587890625,0.2392578125,0.2470703125,0.287109375,0.341796875,0.3876953125,0.40625,0.39453125,0.3837890625,0.4052734375,0.4521484375,0.5,0.521484375,0.5087890625,0.46875,0.416015625,0.3447265625,0.2900390625,0.2861328125,0.33984375,0.4228515625,0.5,0.56640625,0.6005859375,0.57421875,0.48828125,0.3779296875,0.29296875,0.2587890625,0.2421875,0.244140625,0.2841796875,0.3642578125,0.4638671875,0.5498046875,0.6044921875,0.6328125,0.595703125,0.4970703125,0.3837890625,0.3095703125,0.306640625,0.3642578125,0.4248046875,0.4384765625,0.39453125,0.3173828125,0.2490234375,0.2275390625,0.2587890625,0.3017578125,0.33203125,0.3447265625,0.341796875,0.3369140625,0.341796875,0.3642578125,0.388671875,0.4111328125,0.435546875,0.46875,0.51171875,0.55859375,0.6044921875,0.6416015625,0.6435546875,0.6015625,0.53515625,0.4765625,0.453125,0.46875,0.5048828125,0.572265625,0.6572265625,0.728515625,0.7646484375,0.7626953125,0.740234375,0.701171875,0.6240234375,0.53515625,0.48046875,0.4833984375,0.5341796875,0.6044921875,0.671875,0.7119140625,0.712890625,0.6787109375,0.6376953125,0.6181640625,0.634765625,0.6455078125,0.59375,0.4912109375,0.3857421875,0.326171875,0.333984375,0.39453125,0.4658203125,0.5322265625,0.580078125,0.6015625,0.6064453125,0.61328125,0.634765625,0.6572265625,0.65625,0.6240234375,0.568359375,0.51171875,0.4765625,0.46875,0.4697265625,0.4716796875,0.4697265625,0.4580078125,0.4375,0.4150390625,0.39453125,0.38671875,0.4248046875,0.501953125,0.5849609375,0.6376953125,0.6416015625,0.6044921875,0.564453125,0.55078125,0.568359375,0.607421875,0.642578125,0.6533203125,0.634765625,0.59765625,0.5224609375,0.4306640625,0.3583984375,0.3330078125,0.3525390625,0.39453125,0.4287109375,0.419921875,0.375,0.3251953125,0.3046875,0.3310546875,0.39453125,0.466796875,0.5380859375,0.5908203125,0.6162109375,0.619140625,0.62109375,0.634765625,0.6494140625,0.6494140625,0.642578125,0.6435546875,0.6611328125,0.6962890625,0.740234375,0.7734375,0.748046875,0.6484375,0.501953125,0.361328125,0.2763671875,0.2587890625,0.26171875,0.279296875,0.3203125,0.3798828125,0.4453125,0.498046875,0.5302734375,0.552734375,0.5615234375,0.5517578125,0.533203125,0.5166015625,0.5146484375,0.5302734375,0.5517578125,0.5751953125,0.58203125,0.5576171875,0.5048828125,0.4443359375,0.39453125,0.3525390625,0.326171875,0.3251953125,0.3447265625,0.3681640625,0.376953125,0.3642578125,0.3583984375,0.4052734375,0.5048828125,0.6240234375,0.716796875,0.75390625,0.740234375,0.716796875,0.697265625,0.66796875,0.6181640625,0.5478515625,0.46875,0.39453125,0.322265625,0.2587890625,0.2314453125,0.25390625,0.310546875,0.3662109375,0.39453125,0.423828125,0.490234375,0.5849609375,0.6767578125,0.736328125,0.7529296875,0.740234375,0.716796875,0.6728515625,0.6044921875,0.5244140625,0.4501953125,0.3955078125,0.3642578125,0.345703125,0.3623046875,0.4140625,0.48046875,0.5322265625,0.5478515625,0.5302734375,0.5009765625,0.466796875,0.44140625,0.4365234375,0.4521484375,0.478515625,0.5,0.5126953125,0.4970703125,0.447265625,0.375,0.3076171875,0.267578125,0.2587890625,0.26171875,0.279296875,0.3203125,0.3798828125,0.4453125,0.498046875,0.5302734375,0.560546875,0.603515625,0.646484375,0.6708984375,0.6708984375,0.654296875,0.634765625,0.6103515625,0.5654296875,0.5107421875,0.466796875,0.447265625,0.4521484375,0.46875,0.4970703125,0.5537109375,0.62109375,0.66796875,0.67578125,0.6484375,0.6044921875,0.56640625,0.5595703125,0.5849609375,0.6240234375,0.6494140625,0.642578125,0.6044921875,0.568359375,0.568359375,0.5966796875,0.6259765625,0.6298828125,0.5947265625,0.5302734375,0.4521484375,0.3642578125,0.294921875,0.2705078125,0.291015625,0.33203125,0.3642578125,0.3955078125,0.4501953125,0.5244140625,0.6044921875,0.6728515625,0.716796875,0.740234375,0.755859375,0.751953125,0.71484375,0.646484375,0.5673828125,0.50390625,0.46875,0.45703125,0.5,0.5849609375,0.6708984375,0.7138671875,0.697265625,0.634765625,0.5615234375,0.4951171875,0.4716796875,0.5107421875,0.595703125,0.68359375,0.740234375,0.787109375,0.830078125,0.8427734375,0.806640625,0.734375,0.658203125,0.6044921875,0.548828125,0.4580078125,0.353515625,0.26953125,0.2314453125,0.2353515625,0.2587890625,0.2900390625,0.3330078125,0.375,0.3994140625,0.400390625,0.3837890625,0.3642578125,0.34765625,0.3466796875,0.3671875,0.40234375,0.4404296875,0.4638671875,0.46875,0.4775390625,0.509765625,0.546875,0.5576171875,0.52734375,0.4658203125,0.39453125,0.3330078125,0.3154296875,0.3525390625,0.275390625,0.2587890625,0.287109375,0.33203125,0.3642578125,0.3837890625,0.375,0.3369140625,0.2861328125,0.248046875,0.2392578125,0.2587890625,0.296875,0.376953125,0.4853515625,0.5849609375,0.64453125,0.6552734375,0.634765625,0.5986328125,0.5341796875,0.46875,0.44140625,0.4677734375,0.5322265625,0.6044921875,0.6787109375,0.744140625,0.7568359375,0.693359375,0.572265625,0.44921875,0.3642578125,0.3046875,0.2998046875,0.3671875,0.48046875,0.5888671875,0.64453125,0.634765625,0.6044921875,0.5546875,0.4853515625,0.408203125,0.3388671875,0.2900390625,0.2587890625,0.248046875,0.302734375,0.4248046875,0.57421875,0.6962890625,0.7509765625,0.740234375,0.6982421875,0.6044921875,0.4853515625,0.39453125,0.3671875,0.40234375,0.46875,0.5419921875,0.611328125,0.666015625,0.6953125,0.7080078125,0.7177734375,0.740234375,0.76953125,0.8037109375,0.828125,0.828125,0.8037109375,0.76953125,0.740234375,0.7021484375,0.6220703125,0.513671875,0.4140625,0.3544921875,0.34375,0.3642578125,0.40234375,0.482421875,0.5908203125,0.6904296875,0.75,0.7607421875,0.740234375,0.6962890625,0.59375,0.4580078125,0.34765625,0.3037109375,0.3291015625,0.39453125,0.4736328125,0.5703125,0.6572265625,0.701171875,0.697265625,0.6650390625,0.634765625,0.6044921875,0.5546875,0.4853515625,0.408203125,0.3388671875,0.2900390625,0.2587890625,0.2392578125,0.2529296875,0.30859375,0.3916015625,0.4716796875,0.51953125,0.5302734375,0.5380859375,0.5732421875,0.6240234375,0.6630859375,0.6708984375,0.6474609375,0.6044921875,0.5634765625,0.5400390625,0.53515625,0.5380859375,0.533203125,0.509765625,0.46875,0.427734375,0.412109375,0.4443359375,0.5244140625,0.623046875,0.7021484375,0.740234375,0.7607421875,0.748046875,0.6796875,0.560546875,0.4248046875,0.318359375,0.2587890625,0.21484375,0.18359375,0.1845703125,0.2236328125,0.2841796875,0.3369140625,0.3642578125,0.3896484375,0.439453125,0.5,0.546875,0.564453125,0.5546875,0.5302734375,0.4931640625,0.4287109375,0.36328125,0.3369140625,0.3623046875,0.4267578125,0.5,0.5615234375,0.5732421875,0.5185546875,0.4169921875,0.3134765625,0.255859375,0.2587890625,0.2822265625,0.326171875,0.39453125,0.474609375,0.548828125,0.603515625,0.634765625,0.6455078125,0.59375,0.4912109375,0.3857421875,0.326171875,0.333984375,0.39453125,0.45703125,0.4775390625,0.44140625,0.3642578125,0.28515625,0.24609375,0.2587890625,0.28125,0.291015625,0.2919921875,0.2978515625,0.31640625,0.3505859375,0.39453125,0.4404296875,0.4873046875,0.5302734375,0.5634765625,0.587890625,0.6103515625,0.634765625,0.65234375,0.6318359375,0.580078125,0.521484375,0.4873046875,0.4921875,0.5302734375,0.5849609375,0.669921875,0.7587890625,0.814453125,0.8193359375,0.78515625,0.740234375,0.68359375,0.595703125,0.5107421875,0.4716796875,0.4951171875,0.5615234375,0.634765625,0.697265625,0.7197265625,0.6923828125,0.6357421875,0.5830078125,0.5712890625,0.6044921875,0.6328125,0.595703125,0.4970703125,0.3837890625,0.3095703125,0.306640625,0.3642578125,0.43359375,0.48828125,0.521484375,0.53515625,0.5439453125,0.564453125,0.6044921875,0.6474609375,0.6708984375,0.6630859375,0.6240234375,0.5732421875,0.5380859375,0.5302734375,0.5234375,0.4921875,0.44140625,0.3896484375,0.35546875,0.349609375,0.3642578125,0.392578125,0.4541015625,0.5380859375,0.61328125,0.654296875,0.6572265625,0.634765625,0.615234375,0.6181640625,0.640625,0.6630859375,0.6669921875,0.6455078125,0.6044921875,0.55078125,0.4736328125,0.3916015625,0.3359375,0.3212890625,0.337890625,0.3642578125,0.3798828125,0.357421875,0.30859375,0.267578125,0.2607421875,0.2978515625,0.3642578125,0.4423828125,0.53515625,0.6162109375,0.6572265625,0.6533203125,0.626953125,0.6044921875,0.5859375,0.5732421875,0.580078125,0.6123046875,0.662109375,0.708984375,0.740234375,0.7548828125,0.7158203125,0.61328125,0.474609375,0.34765625,0.2734375,0.2587890625,0.2578125,0.2568359375,0.26953125,0.306640625,0.361328125,0.419921875,0.46875,0.515625,0.5595703125,0.5830078125,0.5712890625,0.5341796875,0.494140625,0.46875,0.4521484375,0.4404296875,0.43359375,0.4248046875,0.41015625,0.3896484375,0.3642578125,0.3369140625,0.3095703125,0.2978515625,0.30859375,0.3388671875,0.3720703125,0.39453125,0.4267578125,0.509765625,0.6240234375,0.7265625,0.78125,0.7783203125,0.740234375,0.697265625,0.66015625,0.62109375,0.5712890625,0.5078125,0.4365234375,0.3642578125,0.296875,0.255859375,0.2568359375,0.294921875,0.3447265625,0.3720703125,0.3642578125,0.3515625,0.3720703125,0.4384765625,0.5380859375,0.6396484375,0.7099609375,0.740234375,0.7568359375,0.7548828125,0.71484375,0.634765625,0.53515625,0.44921875,0.39453125,0.3583984375,0.3603515625,0.40234375,0.4609375,0.5029296875,0.5048828125,0.46875,0.4287109375,0.41015625,0.4228515625,0.4580078125,0.4951171875,0.5107421875,0.5,0.4755859375,0.4326171875,0.375,0.3193359375,0.2802734375,0.26171875,0.2587890625,0.2578125,0.2568359375,0.26953125,0.306640625,0.361328125,0.419921875,0.46875,0.513671875,0.552734375,0.5771484375,0.5849609375,0.5849609375,0.5888671875,0.6044921875,0.6240234375,0.6396484375,0.640625,0.62109375,0.5869140625,0.552734375,0.5302734375,0.517578125,0.5322265625,0.5712890625,0.6181640625,0.6513671875,0.6552734375,0.634765625,0.61328125,0.609375,0.6240234375,0.646484375,0.6611328125,0.6572265625,0.634765625,0.615234375,0.6181640625,0.62890625,0.626953125,0.5966796875,0.5390625,0.46875,0.3916015625,0.3037109375,0.240234375,0.2314453125,0.2763671875,0.341796875,0.39453125,0.44921875,0.53515625,0.634765625,0.71484375,0.7548828125,0.7568359375,0.740234375,0.72265625,0.7099609375,0.693359375,0.6650390625,0.6240234375,0.576171875,0.5302734375,0.4970703125,0.5146484375,0.5771484375,0.646484375,0.68359375,0.666015625,0.6044921875,0.5341796875,0.4833984375,0.48046875,0.53515625,0.6240234375,0.701171875,0.740234375,0.7666015625,0.7890625,0.7900390625,0.76171875,0.7138671875,0.6669921875,0.634765625,0.5947265625,0.5029296875,0.3798828125,0.2734375,0.216796875,0.2197265625,0.2587890625,0.3037109375,0.341796875,0.3662109375,0.375,0.375,0.37890625,0.39453125,0.416015625,0.4462890625,0.48046875,0.5078125,0.5234375,0.529296875,0.5302734375,0.5361328125,0.5576171875,0.57421875,0.560546875,0.509765625,0.4375,0.3642578125,0.3017578125,0.28515625,0.328125,0.3037109375,0.2978515625,0.3251953125,0.3603515625,0.376953125,0.384765625,0.3798828125,0.3623046875,0.33984375,0.3232421875,0.318359375,0.3251953125,0.34375,0.3935546875,0.4697265625,0.5478515625,0.6044921875,0.6259765625,0.6220703125,0.599609375,0.5419921875,0.470703125,0.4267578125,0.431640625,0.4814453125,0.55078125,0.626953125,0.7001953125,0.7275390625,0.681640625,0.576171875,0.4609375,0.376953125,0.314453125,0.2978515625,0.3466796875,0.4462890625,0.552734375,0.6162109375,0.6220703125,0.6064453125,0.568359375,0.5087890625,0.4384765625,0.37890625,0.3408203125,0.3251953125,0.3251953125,0.3662109375,0.44921875,0.5498046875,0.6328125,0.673828125,0.673828125,0.6474609375,0.568359375,0.458984375,0.3681640625,0.3349609375,0.36328125,0.4287109375,0.5029296875,0.5791015625,0.638671875,0.6689453125,0.671875,0.66796875,0.673828125,0.6845703125,0.6982421875,0.7080078125,0.7080078125,0.6982421875,0.6845703125,0.673828125,0.6552734375,0.60546875,0.529296875,0.451171875,0.39453125,0.373046875,0.376953125,0.3955078125,0.4453125,0.521484375,0.599609375,0.6552734375,0.677734375,0.673828125,0.6484375,0.5712890625,0.4658203125,0.3798828125,0.3505859375,0.3818359375,0.4482421875,0.5234375,0.6025390625,0.662109375,0.6826171875,0.666015625,0.6376953125,0.6220703125,0.6064453125,0.568359375,0.5087890625,0.4384765625,0.37890625,0.3408203125,0.3251953125,0.3212890625,0.34375,0.3955078125,0.46484375,0.52734375,0.5625,0.5703125,0.578125,0.611328125,0.6533203125,0.673828125,0.658203125,0.611328125,0.55078125,0.4970703125,0.4736328125,0.48046875,0.5,0.5068359375,0.4833984375,0.4287109375,0.3740234375,0.3525390625,0.3876953125,0.4736328125,0.576171875,0.6494140625,0.673828125,0.68359375,0.6845703125,0.6552734375,0.5849609375,0.48828125,0.39453125,0.3251953125,0.259765625,0.1923828125,0.154296875,0.171875,0.2392578125,0.318359375,0.376953125,0.4326171875,0.5,0.5595703125,0.59375,0.5966796875,0.5830078125,0.5703125,0.5478515625,0.490234375,0.4189453125,0.375,0.3798828125,0.4296875,0.5,0.55859375,0.5595703125,0.49609375,0.3984375,0.3154296875,0.2900390625,0.3251953125,0.380859375,0.4482421875,0.515625,0.568359375,0.59765625,0.611328125,0.6220703125,0.6181640625,0.5625,0.47265625,0.3916015625,0.3583984375,0.3837890625,0.4482421875,0.513671875,0.544921875,0.5234375,0.4560546875,0.376953125,0.328125,0.3251953125,0.330078125,0.31640625,0.30078125,0.3017578125,0.3330078125,0.38671875,0.4482421875,0.509765625,0.5703125,0.6123046875,0.6279296875,0.623046875,0.6162109375,0.6220703125,0.6220703125,0.587890625,0.5322265625,0.48828125,0.48046875,0.5126953125,0.5703125,0.640625,0.7333984375,0.8134765625,0.8408203125,0.806640625,0.7392578125,0.673828125,0.6025390625,0.509765625,0.43359375,0.4150390625,0.462890625,0.544921875,0.6220703125,0.681640625,0.689453125,0.6416015625,0.56640625,0.5087890625,0.5029296875,0.55078125,0.5966796875,0.5791015625,0.498046875,0.3955078125,0.32421875,0.3203125,0.376953125,0.4423828125,0.48046875,0.4873046875,0.4765625,0.4736328125,0.4970703125,0.55078125,0.611328125,0.658203125,0.673828125,0.6533203125,0.611328125,0.578125,0.5703125,0.55859375,0.505859375,0.4248046875,0.3515625,0.318359375,0.33203125,0.376953125,0.43359375,0.5068359375,0.5791015625,0.6259765625,0.640625,0.6328125,0.6220703125,0.6181640625,0.6376953125,0.666015625,0.677734375,0.658203125,0.611328125,0.55078125,0.486328125,0.4140625,0.3564453125,0.33203125,0.3408203125,0.3623046875,0.376953125,0.3779296875,0.34375,0.2919921875,0.2568359375,0.2626953125,0.30859375,0.376953125,0.4580078125,0.5615234375,0.6513671875,0.6884765625,0.6640625,0.6064453125,0.55078125,0.5029296875,0.474609375,0.484375,0.5341796875,0.6015625,0.6533203125,0.673828125,0.67578125,0.640625,0.5654296875,0.46875,0.3837890625,0.3349609375,0.3251953125,0.3193359375,0.296875,0.2734375,0.275390625,0.3095703125,0.3671875,0.4287109375,0.49609375,0.5703125,0.619140625,0.615234375,0.5595703125,0.4873046875,0.4287109375,0.3798828125,0.341796875,0.3291015625,0.3408203125,0.3662109375,0.3818359375,0.376953125,0.361328125,0.3330078125,0.30859375,0.310546875,0.34375,0.3955078125,0.4482421875,0.5107421875,0.611328125,0.716796875,0.78125,0.7822265625,0.7353515625,0.673828125,0.6171875,0.578125,0.5537109375,0.5322265625,0.498046875,0.4453125,0.376953125,0.314453125,0.2919921875,0.31640625,0.3681640625,0.412109375,0.4169921875,0.376953125,0.3271484375,0.296875,0.3154296875,0.3935546875,0.5068359375,0.609375,0.673828125,0.7265625,0.771484375,0.7763671875,0.7216796875,0.6220703125,0.51953125,0.4482421875,0.396484375,0.384765625,0.4150390625,0.4619140625,0.4921875,0.48046875,0.4287109375,0.3779296875,0.37109375,0.4140625,0.4794921875,0.5322265625,0.5390625,0.5,0.4462890625,0.3876953125,0.3388671875,0.314453125,0.314453125,0.322265625,0.3251953125,0.3193359375,0.296875,0.2734375,0.275390625,0.3095703125,0.3671875,0.4287109375,0.484375,0.5146484375,0.5146484375,0.5,0.4912109375,0.5068359375,0.55078125,0.6083984375,0.677734375,0.7294921875,0.734375,0.6904296875,0.6259765625,0.5703125,0.5234375,0.498046875,0.5078125,0.5478515625,0.5947265625,0.623046875,0.6220703125,0.61328125,0.611328125,0.6171875,0.6259765625,0.6318359375,0.6298828125,0.6220703125,0.6171875,0.6279296875,0.63671875,0.6201171875,0.5712890625,0.501953125,0.4287109375,0.3515625,0.265625,0.2109375,0.2197265625,0.2890625,0.3779296875,0.4482421875,0.51953125,0.6220703125,0.7216796875,0.7763671875,0.771484375,0.7265625,0.673828125,0.6298828125,0.6162109375,0.62890625,0.6494140625,0.65234375,0.625,0.5703125,0.51953125,0.5146484375,0.552734375,0.603515625,0.6318359375,0.61328125,0.55078125,0.482421875,0.439453125,0.4453125,0.50390625,0.5859375,0.650390625,0.673828125,0.68359375,0.69140625,0.689453125,0.67578125,0.654296875,0.634765625,0.6220703125,0.595703125,0.5166015625,0.4033203125,0.3037109375,0.2568359375,0.271484375,0.3251953125,0.380859375,0.4111328125,0.412109375,0.396484375,0.3876953125,0.404296875,0.4482421875,0.5,0.552734375,0.5888671875,0.599609375,0.5888671875,0.57421875,0.5703125,0.5751953125,0.59375,0.6044921875,0.583984375,0.52734375,0.451171875,0.376953125,0.3134765625,0.2900390625,0.328125,0.3359375,0.3466796875,0.3857421875,0.419921875,0.4296875,0.4306640625,0.4296875,0.4267578125,0.4228515625,0.419921875,0.4189453125,0.419921875,0.4248046875,0.4453125,0.48046875,0.51953125,0.5517578125,0.5673828125,0.5693359375,0.556640625,0.505859375,0.439453125,0.3935546875,0.39453125,0.4404296875,0.509765625,0.5869140625,0.671875,0.720703125,0.69921875,0.615234375,0.51171875,0.4296875,0.36328125,0.3291015625,0.34765625,0.416015625,0.5,0.5576171875,0.5693359375,0.564453125,0.5458984375,0.513671875,0.4755859375,0.443359375,0.4248046875,0.419921875,0.421875,0.44140625,0.4775390625,0.521484375,0.5576171875,0.5771484375,0.5791015625,0.564453125,0.5048828125,0.419921875,0.353515625,0.3369140625,0.373046875,0.439453125,0.5126953125,0.5810546875,0.6240234375,0.6298828125,0.607421875,0.583984375,0.5791015625,0.5810546875,0.5830078125,0.5849609375,0.5849609375,0.5830078125,0.5810546875,0.5791015625,0.57421875,0.5537109375,0.5185546875,0.4794921875,0.447265625,0.431640625,0.4296875,0.435546875,0.455078125,0.490234375,0.5302734375,0.5615234375,0.5771484375,0.5791015625,0.5654296875,0.51171875,0.4375,0.384765625,0.37890625,0.421875,0.4892578125,0.5615234375,0.6240234375,0.6572265625,0.6484375,0.6123046875,0.5791015625,0.5693359375,0.564453125,0.5458984375,0.513671875,0.4755859375,0.443359375,0.4248046875,0.419921875,0.421875,0.4375,0.4677734375,0.505859375,0.5380859375,0.5556640625,0.5595703125,0.568359375,0.6025390625,0.6435546875,0.66015625,0.6357421875,0.5791015625,0.509765625,0.44921875,0.4306640625,0.4541015625,0.4951171875,0.5185546875,0.5,0.439453125,0.375,0.33984375,0.3564453125,0.421875,0.505859375,0.564453125,0.5791015625,0.5869140625,0.609375,0.6259765625,0.61328125,0.5634765625,0.4921875,0.419921875,0.3427734375,0.2529296875,0.19140625,0.1943359375,0.26171875,0.353515625,0.4296875,0.4990234375,0.56640625,0.609375,0.615234375,0.5927734375,0.5673828125,0.5595703125,0.5458984375,0.49609375,0.4287109375,0.3837890625,0.384765625,0.4306640625,0.5,0.5576171875,0.560546875,0.505859375,0.4248046875,0.3662109375,0.365234375,0.419921875,0.4892578125,0.556640625,0.6015625,0.611328125,0.59375,0.5732421875,0.5693359375,0.55859375,0.5087890625,0.4375,0.3857421875,0.3798828125,0.421875,0.4892578125,0.5576171875,0.6005859375,0.5966796875,0.5478515625,0.478515625,0.4296875,0.419921875,0.4130859375,0.3818359375,0.345703125,0.333984375,0.361328125,0.419921875,0.4892578125,0.5595703125,0.619140625,0.6484375,0.6396484375,0.60546875,0.5751953125,0.5693359375,0.560546875,0.5205078125,0.4658203125,0.43359375,0.4423828125,0.4912109375,0.5595703125,0.6376953125,0.732421875,0.8017578125,0.806640625,0.74609375,0.65625,0.5791015625,0.5009765625,0.4072265625,0.337890625,0.3349609375,0.3984375,0.490234375,0.5693359375,0.6279296875,0.6328125,0.580078125,0.50390625,0.4501953125,0.453125,0.509765625,0.5654296875,0.5654296875,0.5078125,0.4267578125,0.369140625,0.37109375,0.4296875,0.4912109375,0.5126953125,0.4921875,0.453125,0.4306640625,0.44921875,0.509765625,0.5791015625,0.6357421875,0.66015625,0.6435546875,0.6025390625,0.568359375,0.5595703125,0.546875,0.4912109375,0.4111328125,0.3486328125,0.33203125,0.3662109375,0.4296875,0.5,0.5673828125,0.6123046875,0.62109375,0.6015625,0.5771484375,0.5693359375,0.576171875,0.6083984375,0.646484375,0.6611328125,0.63671875,0.5791015625,0.509765625,0.439453125,0.376953125,0.345703125,0.353515625,0.3876953125,0.419921875,0.4296875,0.421875,0.380859375,0.328125,0.296875,0.30859375,0.3603515625,0.4296875,0.5107421875,0.6123046875,0.6943359375,0.71484375,0.666015625,0.583984375,0.509765625,0.4443359375,0.40234375,0.4033203125,0.4501953125,0.5166015625,0.56640625,0.5791015625,0.5771484375,0.55859375,0.5234375,0.48046875,0.4443359375,0.423828125,0.419921875,0.41015625,0.3720703125,0.32421875,0.2998046875,0.3173828125,0.37109375,0.439453125,0.517578125,0.6083984375,0.671875,0.671875,0.6064453125,0.515625,0.439453125,0.373046875,0.3232421875,0.3095703125,0.3359375,0.384765625,0.421875,0.4296875,0.419921875,0.38671875,0.3486328125,0.3359375,0.36328125,0.421875,0.4892578125,0.568359375,0.669921875,0.75390625,0.7783203125,0.7353515625,0.6552734375,0.5791015625,0.517578125,0.490234375,0.4970703125,0.517578125,0.5234375,0.4931640625,0.4296875,0.369140625,0.3564453125,0.39453125,0.4541015625,0.494140625,0.486328125,0.4296875,0.357421875,0.28515625,0.255859375,0.294921875,0.3916015625,0.5,0.5791015625,0.6533203125,0.7333984375,0.7783203125,0.7548828125,0.6708984375,0.5693359375,0.4892578125,0.4296875,0.4130859375,0.44140625,0.4873046875,0.515625,0.4990234375,0.439453125,0.3828125,0.3779296875,0.4296875,0.50390625,0.556640625,0.5546875,0.5,0.4306640625,0.37109375,0.3408203125,0.3486328125,0.3818359375,0.412109375,0.419921875,0.41015625,0.3720703125,0.32421875,0.2998046875,0.3173828125,0.37109375,0.439453125,0.5,0.51953125,0.4970703125,0.45703125,0.43359375,0.451171875,0.509765625,0.5869140625,0.6826171875,0.7568359375,0.7705078125,0.7177734375,0.6337890625,0.5595703125,0.4931640625,0.4453125,0.4365234375,0.46875,0.521484375,0.5615234375,0.5693359375,0.568359375,0.5673828125,0.568359375,0.5703125,0.5712890625,0.5703125,0.5693359375,0.57421875,0.599609375,0.6240234375,0.6201171875,0.5791015625,0.5126953125,0.439453125,0.361328125,0.2744140625,0.2197265625,0.2333984375,0.3115234375,0.41015625,0.4892578125,0.5693359375,0.6708984375,0.7548828125,0.7783203125,0.7333984375,0.6533203125,0.5791015625,0.5224609375,0.5107421875,0.5458984375,0.5986328125,0.6318359375,0.6181640625,0.5595703125,0.5,0.484375,0.513671875,0.560546875,0.5888671875,0.5703125,0.509765625,0.44140625,0.396484375,0.3974609375,0.4453125,0.5146484375,0.56640625,0.5791015625,0.5810546875,0.58203125,0.5810546875,0.578125,0.5751953125,0.5712890625,0.5693359375,0.5546875,0.494140625,0.408203125,0.33984375,0.3212890625,0.3544921875,0.419921875,0.48046875,0.5,0.4775390625,0.4375,0.4130859375,0.4306640625,0.4892578125,0.5576171875,0.6162109375,0.64453125,0.6337890625,0.5986328125,0.5673828125,0.5595703125,0.56640625,0.591796875,0.6171875,0.61328125,0.5703125,0.5029296875,0.4296875,0.36328125,0.3271484375,0.3447265625,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.3935546875,0.4443359375,0.515625,0.5673828125,0.5791015625,0.5791015625,0.5791015625,0.5791015625,0.5791015625,0.5791015625,0.5791015625,0.5791015625,0.576171875,0.5576171875,0.5234375,0.4814453125,0.4453125,0.4248046875,0.419921875,0.41015625,0.3798828125,0.3466796875,0.341796875,0.3759765625,0.439453125,0.509765625,0.5888671875,0.6865234375,0.7626953125,0.7763671875,0.7216796875,0.6357421875,0.5595703125,0.48828125,0.419921875,0.3759765625,0.3681640625,0.3896484375,0.4130859375,0.419921875,0.4228515625,0.44140625,0.4736328125,0.5107421875,0.5419921875,0.5576171875,0.5595703125,0.5546875,0.53515625,0.501953125,0.4658203125,0.435546875,0.4208984375,0.419921875,0.4150390625,0.3935546875,0.3740234375,0.380859375,0.423828125,0.490234375,0.5595703125,0.623046875,0.6552734375,0.63671875,0.5712890625,0.4892578125,0.4326171875,0.419921875,0.419921875,0.4189453125,0.4169921875,0.4169921875,0.4169921875,0.41796875,0.419921875,0.4248046875,0.4453125,0.48046875,0.51953125,0.5517578125,0.5673828125,0.5693359375,0.564453125,0.544921875,0.5126953125,0.4755859375,0.4462890625,0.4306640625,0.4296875,0.4228515625,0.3916015625,0.3544921875,0.3408203125,0.365234375,0.421875,0.4892578125,0.5546875,0.5986328125,0.6005859375,0.55859375,0.49609375,0.4501953125,0.439453125,0.443359375,0.4599609375,0.490234375,0.5244140625,0.5537109375,0.568359375,0.5693359375,0.564453125,0.5458984375,0.513671875,0.4755859375,0.443359375,0.4248046875,0.419921875,0.4296875,0.4775390625,0.5458984375,0.5966796875,0.603515625,0.5634765625,0.5,0.4443359375,0.443359375,0.4970703125,0.572265625,0.6240234375,0.6181640625,0.5595703125,0.486328125,0.4169921875,0.3720703125,0.3662109375,0.388671875,0.4130859375,0.419921875,0.4326171875,0.4921875,0.5791015625,0.6494140625,0.6728515625,0.6416015625,0.5791015625,0.501953125,0.408203125,0.337890625,0.3310546875,0.390625,0.48046875,0.5595703125,0.6259765625,0.6640625,0.650390625,0.5888671875,0.5087890625,0.4521484375,0.439453125,0.431640625,0.3994140625,0.361328125,0.3486328125,0.3740234375,0.431640625,0.5,0.55859375,0.578125,0.5576171875,0.5205078125,0.5,0.5205078125,0.5791015625,0.642578125,0.67578125,0.6572265625,0.5908203125,0.5087890625,0.4521484375,0.439453125,0.4306640625,0.396484375,0.3564453125,0.341796875,0.369140625,0.4287109375,0.5,0.5703125,0.62890625,0.654296875,0.6396484375,0.599609375,0.56640625,0.5595703125,0.5498046875,0.5048828125,0.44140625,0.3984375,0.3984375,0.4423828125,0.509765625,0.576171875,0.6171875,0.611328125,0.55859375,0.486328125,0.43359375,0.419921875,0.4091796875,0.369140625,0.3203125,0.294921875,0.310546875,0.3623046875,0.4296875,0.505859375,0.5986328125,0.6650390625,0.6689453125,0.6064453125,0.517578125,0.439453125,0.361328125,0.2685546875,0.2001953125,0.1953125,0.255859375,0.34375,0.419921875,0.478515625,0.4990234375,0.478515625,0.44140625,0.4208984375,0.4404296875,0.5,0.5576171875,0.57421875,0.548828125,0.5087890625,0.486328125,0.5078125,0.5693359375,0.6279296875,0.6298828125,0.572265625,0.4912109375,0.43359375,0.43359375,0.4892578125,0.556640625,0.599609375,0.5986328125,0.55078125,0.4833984375,0.4326171875,0.419921875,0.412109375,0.388671875,0.3701171875,0.3828125,0.4326171875,0.505859375,0.5791015625,0.6455078125,0.681640625,0.6630859375,0.595703125,0.51171875,0.453125,0.439453125,0.4501953125,0.49609375,0.55859375,0.6005859375,0.5986328125,0.5546875,0.4892578125,0.4248046875,0.3857421875,0.392578125,0.443359375,0.51171875,0.5595703125,0.5693359375,0.55859375,0.517578125,0.4658203125,0.4375,0.451171875,0.5029296875,0.5693359375,0.64453125,0.728515625,0.78125,0.767578125,0.689453125,0.58984375,0.509765625,0.4375,0.375,0.341796875,0.3505859375,0.38671875,0.419921875,0.4296875,0.4345703125,0.453125,0.4853515625,0.5234375,0.5556640625,0.57421875,0.5791015625,0.5712890625,0.5302734375,0.474609375,0.439453125,0.447265625,0.4931640625,0.5595703125,0.6357421875,0.724609375,0.7890625,0.7890625,0.724609375,0.6357421875,0.5595703125,0.4931640625,0.443359375,0.431640625,0.4619140625,0.515625,0.5576171875,0.5693359375,0.5595703125,0.5126953125,0.4482421875,0.4013671875,0.400390625,0.443359375,0.509765625,0.5849609375,0.6669921875,0.712890625,0.6904296875,0.6083984375,0.5078125,0.4296875,0.3759765625,0.3828125,0.4521484375,0.546875,0.6162109375,0.623046875,0.5693359375,0.5126953125,0.505859375,0.548828125,0.6103515625,0.650390625,0.6396484375,0.5791015625,0.49609375,0.3837890625,0.2822265625,0.2412109375,0.271484375,0.345703125,0.419921875,0.5,0.6025390625,0.6875,0.7119140625,0.666015625,0.5849609375,0.509765625,0.4521484375,0.44921875,0.5009765625,0.57421875,0.6240234375,0.6181640625,0.5595703125,0.498046875,0.48046875,0.5068359375,0.5517578125,0.5791015625,0.560546875,0.5,0.431640625,0.388671875,0.3935546875,0.4443359375,0.515625,0.5673828125,0.5791015625,0.568359375,0.5244140625,0.466796875,0.431640625,0.4404296875,0.490234375,0.5595703125,0.6181640625,0.6240234375,0.57421875,0.5009765625,0.44921875,0.4521484375,0.509765625,0.5859375,0.669921875,0.7216796875,0.703125,0.6220703125,0.5205078125,0.439453125,0.369140625,0.3134765625,0.294921875,0.3193359375,0.3681640625,0.408203125,0.419921875,0.421875,0.42578125,0.4306640625,0.4345703125,0.4384765625,0.439453125,0.439453125,0.4521484375,0.505859375,0.583984375,0.64453125,0.658203125,0.623046875,0.5595703125,0.4814453125,0.384765625,0.3095703125,0.294921875,0.34765625,0.4326171875,0.509765625,0.5849609375,0.6650390625,0.708984375,0.6845703125,0.599609375,0.498046875,0.419921875,0.36328125,0.35546875,0.3984375,0.4609375,0.50390625,0.49609375,0.439453125,0.384765625,0.3818359375,0.43359375,0.5068359375,0.5556640625,0.548828125,0.4892578125,0.4189453125,0.3603515625,0.3349609375,0.349609375,0.3896484375,0.4228515625,0.4296875,0.427734375,0.42578125,0.4228515625,0.4208984375,0.419921875,0.419921875,0.419921875,0.4140625,0.392578125,0.3759765625,0.388671875,0.4365234375,0.5078125,0.5791015625,0.6357421875,0.634765625,0.576171875,0.4931640625,0.43359375,0.43359375,0.4892578125,0.556640625,0.6015625,0.603515625,0.560546875,0.4970703125,0.4501953125,0.439453125,0.4521484375,0.5078125,0.5859375,0.6474609375,0.6611328125,0.625,0.5595703125,0.48828125,0.4228515625,0.3828125,0.427734375,0.50390625,0.5966796875,0.6591796875,0.673828125,0.673828125,0.673828125,0.673828125,0.673828125,0.673828125,0.673828125,0.673828125,0.6669921875,0.630859375,0.560546875,0.4736328125,0.3935546875,0.34375,0.3251953125,0.3125,0.296875,0.298828125,0.3369140625,0.40625,0.484375,0.55078125,0.6201171875,0.7021484375,0.763671875,0.7685546875,0.7158203125,0.6376953125,0.5703125,0.5048828125,0.4296875,0.3642578125,0.3251953125,0.31640625,0.3232421875,0.3251953125,0.3330078125,0.3681640625,0.4306640625,0.5,0.552734375,0.57421875,0.5703125,0.552734375,0.509765625,0.4453125,0.380859375,0.3359375,0.3193359375,0.3251953125,0.333984375,0.341796875,0.3603515625,0.3994140625,0.455078125,0.5166015625,0.5703125,0.6142578125,0.62109375,0.576171875,0.490234375,0.3974609375,0.3388671875,0.3251953125,0.32421875,0.318359375,0.310546875,0.3056640625,0.3076171875,0.3154296875,0.3251953125,0.34375,0.3935546875,0.4697265625,0.5478515625,0.6044921875,0.6259765625,0.6220703125,0.6044921875,0.5615234375,0.4970703125,0.4326171875,0.3876953125,0.37109375,0.376953125,0.3818359375,0.3681640625,0.3486328125,0.3408203125,0.3583984375,0.3984375,0.4482421875,0.4970703125,0.5322265625,0.537109375,0.5107421875,0.46875,0.4365234375,0.4287109375,0.4345703125,0.46484375,0.5146484375,0.5703125,0.611328125,0.626953125,0.6220703125,0.6064453125,0.568359375,0.5087890625,0.4384765625,0.37890625,0.3408203125,0.3251953125,0.3271484375,0.3701171875,0.4443359375,0.5166015625,0.5537109375,0.5439453125,0.5,0.4619140625,0.474609375,0.5341796875,0.6044921875,0.6455078125,0.630859375,0.5703125,0.494140625,0.412109375,0.3447265625,0.310546875,0.3095703125,0.3212890625,0.3251953125,0.3408203125,0.4130859375,0.5283203125,0.6416015625,0.7099609375,0.71484375,0.673828125,0.611328125,0.51953125,0.43359375,0.3974609375,0.42578125,0.4951171875,0.5703125,0.63671875,0.671875,0.6533203125,0.5859375,0.5009765625,0.4423828125,0.4287109375,0.423828125,0.40234375,0.3798828125,0.376953125,0.40234375,0.4482421875,0.5,0.5458984375,0.5751953125,0.5849609375,0.587890625,0.59765625,0.626953125,0.673828125,0.716796875,0.724609375,0.6796875,0.59375,0.5009765625,0.44140625,0.4287109375,0.4208984375,0.3876953125,0.349609375,0.337890625,0.3671875,0.427734375,0.5,0.5693359375,0.6240234375,0.6455078125,0.6298828125,0.59375,0.568359375,0.5703125,0.5712890625,0.541015625,0.4931640625,0.45703125,0.45703125,0.4931640625,0.55078125,0.607421875,0.630859375,0.599609375,0.5185546875,0.419921875,0.349609375,0.3251953125,0.3095703125,0.2783203125,0.25,0.2470703125,0.275390625,0.3251953125,0.376953125,0.4365234375,0.515625,0.58203125,0.6005859375,0.5625,0.494140625,0.4287109375,0.359375,0.2724609375,0.2001953125,0.177734375,0.2099609375,0.26953125,0.3251953125,0.3720703125,0.4013671875,0.4111328125,0.4140625,0.423828125,0.453125,0.5,0.5419921875,0.552734375,0.53515625,0.515625,0.5185546875,0.556640625,0.6220703125,0.6787109375,0.6748046875,0.603515625,0.5009765625,0.419921875,0.40234375,0.4482421875,0.505859375,0.5419921875,0.5341796875,0.48046875,0.4052734375,0.3466796875,0.3251953125,0.3134765625,0.306640625,0.3291015625,0.39453125,0.4931640625,0.59375,0.673828125,0.7373046875,0.759765625,0.71875,0.6240234375,0.515625,0.4443359375,0.4287109375,0.4365234375,0.46875,0.5107421875,0.537109375,0.5322265625,0.4970703125,0.4482421875,0.4033203125,0.3935546875,0.4306640625,0.5029296875,0.5771484375,0.62109375,0.6220703125,0.6044921875,0.5673828125,0.52734375,0.509765625,0.52734375,0.5703125,0.6220703125,0.6796875,0.75,0.796875,0.787109375,0.720703125,0.6298828125,0.55078125,0.4755859375,0.396484375,0.3369140625,0.31640625,0.3330078125,0.361328125,0.376953125,0.392578125,0.4306640625,0.490234375,0.560546875,0.6201171875,0.658203125,0.673828125,0.673828125,0.6396484375,0.580078125,0.52734375,0.505859375,0.5244140625,0.5703125,0.626953125,0.693359375,0.7412109375,0.7412109375,0.693359375,0.626953125,0.5703125,0.5205078125,0.4833984375,0.4775390625,0.5087890625,0.5595703125,0.603515625,0.6220703125,0.6220703125,0.5849609375,0.525390625,0.4765625,0.46484375,0.494140625,0.55078125,0.6142578125,0.6669921875,0.677734375,0.626953125,0.533203125,0.439453125,0.376953125,0.3408203125,0.3623046875,0.4453125,0.5537109375,0.63671875,0.658203125,0.6220703125,0.5830078125,0.59375,0.6494140625,0.71484375,0.7509765625,0.734375,0.673828125,0.5869140625,0.45703125,0.3203125,0.232421875,0.2197265625,0.263671875,0.3251953125,0.3994140625,0.5068359375,0.6142578125,0.673828125,0.6669921875,0.6142578125,0.55078125,0.501953125,0.5009765625,0.5478515625,0.6083984375,0.6455078125,0.630859375,0.5703125,0.5087890625,0.4892578125,0.513671875,0.5556640625,0.580078125,0.560546875,0.5,0.43359375,0.40234375,0.427734375,0.50390625,0.5966796875,0.6591796875,0.673828125,0.6611328125,0.6064453125,0.5302734375,0.47265625,0.462890625,0.5029296875,0.5703125,0.630859375,0.6455078125,0.6083984375,0.5478515625,0.5009765625,0.501953125,0.55078125,0.6181640625,0.689453125,0.7275390625,0.69921875,0.61328125,0.509765625,0.4287109375,0.35546875,0.2841796875,0.240234375,0.2392578125,0.271484375,0.3076171875,0.3251953125,0.337890625,0.3583984375,0.3828125,0.40625,0.421875,0.427734375,0.4287109375,0.439453125,0.486328125,0.5556640625,0.6142578125,0.63671875,0.6162109375,0.5703125,0.51171875,0.4365234375,0.376953125,0.3671875,0.4130859375,0.4853515625,0.55078125,0.6123046875,0.66015625,0.6591796875,0.5947265625,0.4892578125,0.388671875,0.3251953125,0.28515625,0.2900390625,0.341796875,0.412109375,0.4638671875,0.46875,0.4287109375,0.3896484375,0.396484375,0.4443359375,0.501953125,0.5302734375,0.509765625,0.4482421875,0.3779296875,0.3232421875,0.3017578125,0.3173828125,0.353515625,0.37890625,0.376953125,0.3662109375,0.3525390625,0.3388671875,0.3291015625,0.3251953125,0.3251953125,0.3251953125,0.3251953125,0.33203125,0.36328125,0.4296875,0.5185546875,0.60546875,0.673828125,0.7197265625,0.701171875,0.6162109375,0.5048828125,0.419921875,0.40234375,0.4482421875,0.5068359375,0.5498046875,0.556640625,0.525390625,0.4755859375,0.4375,0.4287109375,0.4404296875,0.4931640625,0.5703125,0.6337890625,0.654296875,0.6259765625,0.5703125,0.5068359375,0.4453125,0.40234375,0.4521484375,0.546875,0.6533203125,0.724609375,0.740234375,0.740234375,0.740234375,0.740234375,0.740234375,0.740234375,0.740234375,0.740234375,0.732421875,0.689453125,0.6015625,0.4853515625,0.373046875,0.2958984375,0.2587890625,0.2353515625,0.2314453125,0.26953125,0.353515625,0.4580078125,0.548828125,0.6044921875,0.6533203125,0.7041015625,0.7294921875,0.708984375,0.650390625,0.58203125,0.5302734375,0.4794921875,0.4130859375,0.3447265625,0.2919921875,0.265625,0.2587890625,0.2587890625,0.2685546875,0.3173828125,0.3974609375,0.48046875,0.53515625,0.548828125,0.5302734375,0.494140625,0.4267578125,0.341796875,0.2705078125,0.234375,0.236328125,0.2587890625,0.2880859375,0.3291015625,0.380859375,0.4326171875,0.4775390625,0.5087890625,0.5302734375,0.5419921875,0.5224609375,0.4658203125,0.38671875,0.3115234375,0.267578125,0.2587890625,0.2548828125,0.240234375,0.220703125,0.208984375,0.2138671875,0.2333984375,0.2587890625,0.296875,0.376953125,0.4853515625,0.5849609375,0.64453125,0.6552734375,0.634765625,0.599609375,0.5322265625,0.447265625,0.375,0.3388671875,0.3408203125,0.3642578125,0.3876953125,0.3994140625,0.3974609375,0.3857421875,0.376953125,0.37890625,0.39453125,0.4150390625,0.4375,0.4580078125,0.4697265625,0.4716796875,0.4697265625,0.46875,0.4765625,0.51171875,0.568359375,0.6240234375,0.65625,0.6572265625,0.634765625,0.6044921875,0.5546875,0.4853515625,0.408203125,0.3388671875,0.2900390625,0.2587890625,0.2412109375,0.2626953125,0.3251953125,0.408203125,0.4775390625,0.5087890625,0.5,0.4921875,0.5234375,0.580078125,0.6259765625,0.6337890625,0.5966796875,0.5302734375,0.4541015625,0.3681640625,0.294921875,0.25390625,0.24609375,0.2548828125,0.2587890625,0.2724609375,0.341796875,0.4638671875,0.5986328125,0.703125,0.7470703125,0.740234375,0.70703125,0.6259765625,0.521484375,0.4443359375,0.4248046875,0.4619140625,0.5302734375,0.5986328125,0.6435546875,0.642578125,0.5966796875,0.529296875,0.48046875,0.46875,0.466796875,0.4599609375,0.4521484375,0.4521484375,0.462890625,0.48046875,0.5,0.5205078125,0.552734375,0.595703125,0.6435546875,0.6865234375,0.71875,0.740234375,0.751953125,0.7333984375,0.67578125,0.5966796875,0.5224609375,0.478515625,0.46875,0.4599609375,0.421875,0.375,0.3525390625,0.373046875,0.4287109375,0.5,0.56640625,0.607421875,0.607421875,0.57421875,0.5322265625,0.513671875,0.5302734375,0.55078125,0.552734375,0.541015625,0.5302734375,0.53515625,0.5625,0.6044921875,0.64453125,0.650390625,0.6015625,0.501953125,0.38671875,0.298828125,0.2587890625,0.2333984375,0.2158203125,0.2197265625,0.2509765625,0.2978515625,0.33984375,0.3642578125,0.3916015625,0.4443359375,0.5048828125,0.5439453125,0.544921875,0.513671875,0.46875,0.41796875,0.34765625,0.2783203125,0.234375,0.224609375,0.2392578125,0.2587890625,0.2802734375,0.3125,0.35546875,0.4033203125,0.4462890625,0.478515625,0.5,0.5107421875,0.5,0.48046875,0.4775390625,0.5068359375,0.564453125,0.634765625,0.6923828125,0.689453125,0.615234375,0.501953125,0.4033203125,0.3662109375,0.39453125,0.439453125,0.470703125,0.46875,0.4248046875,0.3564453125,0.2939453125,0.2587890625,0.234375,0.232421875,0.28125,0.388671875,0.529296875,0.6552734375,0.740234375,0.8037109375,0.8232421875,0.775390625,0.673828125,0.5595703125,0.4853515625,0.46875,0.4697265625,0.4716796875,0.4697265625,0.4580078125,0.4375,0.4150390625,0.39453125,0.384765625,0.416015625,0.4853515625,0.568359375,0.6318359375,0.65234375,0.634765625,0.6064453125,0.576171875,0.5576171875,0.560546875,0.583984375,0.61328125,0.634765625,0.6630859375,0.71484375,0.7646484375,0.779296875,0.7451171875,0.677734375,0.6044921875,0.525390625,0.4287109375,0.341796875,0.2978515625,0.3017578125,0.333984375,0.3642578125,0.39453125,0.4443359375,0.513671875,0.5908203125,0.66015625,0.708984375,0.740234375,0.7578125,0.7412109375,0.6845703125,0.6103515625,0.546875,0.51953125,0.5302734375,0.55078125,0.576171875,0.59375,0.59375,0.576171875,0.55078125,0.5302734375,0.509765625,0.494140625,0.494140625,0.5185546875,0.5615234375,0.6044921875,0.634765625,0.6533203125,0.642578125,0.607421875,0.568359375,0.55078125,0.564453125,0.6044921875,0.6455078125,0.6611328125,0.6298828125,0.5546875,0.4638671875,0.39453125,0.3642578125,0.3544921875,0.384765625,0.4560546875,0.54296875,0.6142578125,0.64453125,0.634765625,0.62890625,0.669921875,0.7431640625,0.8095703125,0.8330078125,0.8046875,0.740234375,0.65234375,0.515625,0.361328125,0.2451171875,0.19921875,0.2158203125,0.2587890625,0.3173828125,0.4189453125,0.5380859375,0.6298828125,0.6640625,0.6474609375,0.6044921875,0.568359375,0.568359375,0.5966796875,0.6259765625,0.6298828125,0.5947265625,0.5302734375,0.4697265625,0.455078125,0.48828125,0.541015625,0.57421875,0.5595703125,0.5,0.435546875,0.412109375,0.4521484375,0.546875,0.6533203125,0.724609375,0.740234375,0.7255859375,0.658203125,0.5576171875,0.4716796875,0.4384765625,0.46484375,0.5302734375,0.5947265625,0.6298828125,0.6259765625,0.5966796875,0.568359375,0.568359375,0.6044921875,0.6552734375,0.7138671875,0.7451171875,0.720703125,0.6435546875,0.548828125,0.46875,0.390625,0.2978515625,0.2177734375,0.181640625,0.1923828125,0.228515625,0.2587890625,0.2890625,0.333984375,0.3857421875,0.4306640625,0.4580078125,0.4677734375,0.46875,0.4736328125,0.4912109375,0.51953125,0.54296875,0.5537109375,0.546875,0.5302734375,0.5068359375,0.4755859375,0.455078125,0.4638671875,0.5029296875,0.5556640625,0.6044921875,0.6435546875,0.6455078125,0.5908203125,0.48828125,0.3740234375,0.2919921875,0.2587890625,0.248046875,0.2705078125,0.328125,0.3994140625,0.45703125,0.48046875,0.46875,0.458984375,0.4775390625,0.5107421875,0.529296875,0.513671875,0.462890625,0.39453125,0.3271484375,0.287109375,0.2861328125,0.3203125,0.361328125,0.380859375,0.3642578125,0.3359375,0.3037109375,0.275390625,0.2587890625,0.2548828125,0.2578125,0.2587890625,0.263671875,0.2958984375,0.369140625,0.4775390625,0.5927734375,0.6845703125,0.740234375,0.76953125,0.734375,0.6318359375,0.501953125,0.3994140625,0.3642578125,0.39453125,0.4404296875,0.482421875,0.5078125,0.5078125,0.4912109375,0.4736328125,0.46875,0.4765625,0.5107421875,0.5576171875,0.5927734375,0.5986328125,0.572265625,0.5302734375,0.484375,0.443359375,0.421875,0.4521484375,0.546875,0.6533203125,0.724609375,0.740234375,0.740234375,0.740234375,0.740234375,0.740234375,0.740234375,0.740234375,0.740234375,0.7353515625,0.703125,0.6298828125,0.521484375,0.40625,0.314453125,0.2587890625,0.2197265625,0.216796875,0.2734375,0.3798828125,0.5029296875,0.5947265625,0.634765625,0.66015625,0.6748046875,0.662109375,0.619140625,0.556640625,0.501953125,0.46875,0.4384765625,0.3935546875,0.341796875,0.2978515625,0.2705078125,0.259765625,0.2587890625,0.2705078125,0.322265625,0.40234375,0.4775390625,0.515625,0.5087890625,0.46875,0.4140625,0.3291015625,0.240234375,0.1845703125,0.1796875,0.2138671875,0.2587890625,0.310546875,0.3798828125,0.44921875,0.494140625,0.50390625,0.4892578125,0.46875,0.4462890625,0.40625,0.3564453125,0.30859375,0.275390625,0.2607421875,0.2587890625,0.2529296875,0.2265625,0.1923828125,0.1728515625,0.181640625,0.21484375,0.2587890625,0.3173828125,0.4189453125,0.5380859375,0.6298828125,0.6640625,0.6474609375,0.6044921875,0.5498046875,0.4638671875,0.375,0.3193359375,0.314453125,0.3486328125,0.39453125,0.4404296875,0.48046875,0.4970703125,0.4775390625,0.43359375,0.3896484375,0.3642578125,0.349609375,0.35546875,0.3896484375,0.44140625,0.4921875,0.5234375,0.5302734375,0.5380859375,0.5732421875,0.6240234375,0.6630859375,0.6708984375,0.6474609375,0.6044921875,0.55859375,0.509765625,0.4580078125,0.4052734375,0.353515625,0.3046875,0.2587890625,0.2177734375,0.203125,0.234375,0.30859375,0.3994140625,0.46875,0.5,0.52734375,0.5791015625,0.62890625,0.6435546875,0.609375,0.5419921875,0.46875,0.39453125,0.31640625,0.2568359375,0.2314453125,0.2373046875,0.25390625,0.2587890625,0.267578125,0.314453125,0.408203125,0.52734375,0.6376953125,0.7099609375,0.740234375,0.7421875,0.681640625,0.5712890625,0.4609375,0.3994140625,0.408203125,0.46875,0.5400390625,0.6005859375,0.626953125,0.6123046875,0.572265625,0.5380859375,0.5302734375,0.5322265625,0.5390625,0.546875,0.546875,0.5361328125,0.5185546875,0.5,0.4892578125,0.515625,0.580078125,0.6591796875,0.7236328125,0.75,0.740234375,0.716796875,0.677734375,0.626953125,0.5791015625,0.546875,0.5322265625,0.5302734375,0.51953125,0.4736328125,0.4140625,0.375,0.3818359375,0.4306640625,0.5,0.5625,0.5849609375,0.5576171875,0.5,0.4482421875,0.435546875,0.46875,0.513671875,0.5517578125,0.5771484375,0.5908203125,0.5986328125,0.611328125,0.634765625,0.658203125,0.658203125,0.61328125,0.521484375,0.4091796875,0.3154296875,0.2587890625,0.220703125,0.21484375,0.2509765625,0.3134765625,0.3740234375,0.4033203125,0.39453125,0.3828125,0.400390625,0.447265625,0.501953125,0.5419921875,0.5498046875,0.5302734375,0.5009765625,0.458984375,0.408203125,0.35546875,0.3115234375,0.2802734375,0.2587890625,0.2490234375,0.275390625,0.33984375,0.4189453125,0.4833984375,0.509765625,0.5,0.4736328125,0.4306640625,0.3974609375,0.40234375,0.453125,0.529296875,0.6044921875,0.6650390625,0.6728515625,0.61328125,0.5078125,0.4052734375,0.353515625,0.3642578125,0.3935546875,0.4267578125,0.44140625,0.421875,0.3701171875,0.3095703125,0.2587890625,0.2158203125,0.19921875,0.2451171875,0.361328125,0.515625,0.65234375,0.740234375,0.8046875,0.83203125,0.7978515625,0.7119140625,0.6123046875,0.544921875,0.5302734375,0.5234375,0.4921875,0.44140625,0.3896484375,0.35546875,0.349609375,0.3642578125,0.39453125,0.4638671875,0.5546875,0.6298828125,0.6611328125,0.6455078125,0.6044921875,0.5634765625,0.541015625,0.546875,0.57421875,0.6044921875,0.6171875,0.6044921875,0.5966796875,0.6279296875,0.685546875,0.7314453125,0.7392578125,0.701171875,0.634765625,0.5537109375,0.4453125,0.3447265625,0.2919921875,0.30078125,0.345703125,0.39453125,0.4404296875,0.4892578125,0.541015625,0.59375,0.6455078125,0.6943359375,0.740234375,0.7802734375,0.7919921875,0.75390625,0.6708984375,0.5732421875,0.5,0.46875,0.4482421875,0.4228515625,0.4052734375,0.4052734375,0.4228515625,0.4482421875,0.46875,0.484375,0.48828125,0.48828125,0.4970703125,0.521484375,0.5595703125,0.6044921875,0.6455078125,0.6669921875,0.6630859375,0.640625,0.6181640625,0.615234375,0.634765625,0.65234375,0.6318359375,0.568359375,0.4853515625,0.416015625,0.384765625,0.39453125,0.4150390625,0.443359375,0.4794921875,0.51953125,0.5556640625,0.583984375,0.6044921875,0.6357421875,0.7080078125,0.794921875,0.853515625,0.8564453125,0.8095703125,0.740234375,0.6552734375,0.529296875,0.388671875,0.28125,0.232421875,0.234375,0.2587890625,0.296875,0.376953125,0.4853515625,0.5849609375,0.64453125,0.6552734375,0.634765625,0.615234375,0.6181640625,0.62890625,0.626953125,0.5966796875,0.5390625,0.46875,0.41015625,0.4033203125,0.4501953125,0.5185546875,0.5654296875,0.55859375,0.5,0.435546875,0.412109375,0.4521484375,0.546875,0.6533203125,0.724609375,0.740234375,0.7236328125,0.6494140625,0.53515625,0.43359375,0.3857421875,0.4052734375,0.46875,0.5390625,0.5966796875,0.626953125,0.62890625,0.6181640625,0.615234375,0.634765625,0.66796875,0.716796875,0.7509765625,0.7421875,0.6865234375,0.60546875,0.5302734375,0.447265625,0.3359375,0.228515625,0.16796875,0.1689453125,0.2109375,0.2587890625,0.3095703125,0.375,0.4443359375,0.4970703125,0.5234375,0.5302734375,0.5302734375,0.525390625,0.5078125,0.4794921875,0.4560546875,0.4453125,0.4521484375,0.46875,0.4873046875,0.5068359375,0.52734375,0.5517578125,0.580078125,0.6083984375,0.634765625,0.6494140625,0.6123046875,0.5185546875,0.400390625,0.2998046875,0.2529296875,0.2587890625,0.28125,0.31640625,0.3662109375,0.421875,0.4716796875,0.5078125,0.5302734375,0.5546875,0.58984375,0.609375,0.587890625,0.5234375,0.4404296875,0.3642578125,0.3017578125,0.279296875,0.306640625,0.36328125,0.416015625,0.427734375,0.39453125,0.3466796875,0.2978515625,0.2587890625,0.2421875,0.24609375,0.255859375,0.2587890625,0.2666015625,0.3095703125,0.3974609375,0.513671875,0.6259765625,0.703125,0.740234375,0.7529296875,0.7119140625,0.61328125,0.4912109375,0.392578125,0.3505859375,0.3642578125,0.3935546875,0.4326171875,0.474609375,0.5078125,0.5244140625,0.529296875,0.5302734375,0.5322265625,0.5400390625,0.5458984375,0.541015625,0.5224609375,0.49609375,0.46875,0.4453125,0.4326171875,0.44140625,0.427734375,0.50390625,0.5966796875,0.6591796875,0.673828125,0.673828125,0.673828125,0.673828125,0.673828125,0.673828125,0.673828125,0.673828125,0.673828125,0.6669921875,0.6357421875,0.5693359375,0.48046875,0.3935546875,0.3251953125,0.271484375,0.2568359375,0.3037109375,0.4033203125,0.5166015625,0.595703125,0.6220703125,0.62890625,0.619140625,0.5859375,0.53515625,0.482421875,0.4453125,0.4287109375,0.4169921875,0.396484375,0.37109375,0.3486328125,0.3330078125,0.326171875,0.3251953125,0.3369140625,0.384765625,0.453125,0.5068359375,0.5185546875,0.486328125,0.4287109375,0.3583984375,0.265625,0.185546875,0.158203125,0.1923828125,0.259765625,0.3251953125,0.39453125,0.4814453125,0.5546875,0.5771484375,0.544921875,0.484375,0.4287109375,0.376953125,0.3271484375,0.294921875,0.2890625,0.3037109375,0.3212890625,0.3251953125,0.3173828125,0.28125,0.2353515625,0.2099609375,0.220703125,0.265625,0.3251953125,0.3994140625,0.5068359375,0.6142578125,0.673828125,0.6669921875,0.6142578125,0.55078125,0.48046875,0.3876953125,0.3076171875,0.2802734375,0.314453125,0.3818359375,0.4482421875,0.5126953125,0.5791015625,0.6123046875,0.58984375,0.5185546875,0.4375,0.376953125,0.33203125,0.318359375,0.3515625,0.4248046875,0.505859375,0.55859375,0.5703125,0.578125,0.611328125,0.6533203125,0.673828125,0.658203125,0.611328125,0.55078125,0.4951171875,0.4580078125,0.4423828125,0.4345703125,0.4189453125,0.3818359375,0.3251953125,0.2626953125,0.2099609375,0.19921875,0.2490234375,0.34375,0.4375,0.5,0.5576171875,0.6279296875,0.6748046875,0.6650390625,0.59765625,0.5078125,0.4287109375,0.3564453125,0.2919921875,0.255859375,0.2587890625,0.2890625,0.318359375,0.3251953125,0.326171875,0.3388671875,0.37890625,0.44921875,0.5361328125,0.615234375,0.673828125,0.70703125,0.6728515625,0.57421875,0.4580078125,0.37890625,0.3720703125,0.4287109375,0.501953125,0.5712890625,0.6162109375,0.623046875,0.6015625,0.5771484375,0.5703125,0.5751953125,0.5966796875,0.619140625,0.6220703125,0.5966796875,0.55078125,0.5,0.4609375,0.474609375,0.5419921875,0.630859375,0.6982421875,0.7119140625,0.673828125,0.62109375,0.5712890625,0.5390625,0.533203125,0.5478515625,0.5654296875,0.5703125,0.55859375,0.5078125,0.439453125,0.3896484375,0.3876953125,0.431640625,0.5,0.5595703125,0.5673828125,0.51953125,0.4443359375,0.38671875,0.380859375,0.4287109375,0.4921875,0.5537109375,0.6005859375,0.62109375,0.6201171875,0.615234375,0.6220703125,0.6337890625,0.640625,0.6220703125,0.5654296875,0.48046875,0.3935546875,0.3251953125,0.2763671875,0.275390625,0.3291015625,0.4091796875,0.47265625,0.486328125,0.4482421875,0.40234375,0.3857421875,0.412109375,0.4697265625,0.533203125,0.5703125,0.5703125,0.5615234375,0.5537109375,0.53515625,0.4970703125,0.4404296875,0.3798828125,0.3251953125,0.287109375,0.30078125,0.3681640625,0.45703125,0.5244140625,0.5380859375,0.5,0.44140625,0.3681640625,0.3173828125,0.322265625,0.384765625,0.47265625,0.55078125,0.615234375,0.640625,0.607421875,0.5263671875,0.4365234375,0.380859375,0.376953125,0.39453125,0.431640625,0.4677734375,0.4755859375,0.4453125,0.3876953125,0.3251953125,0.263671875,0.2197265625,0.232421875,0.3203125,0.45703125,0.5869140625,0.673828125,0.7412109375,0.7802734375,0.7705078125,0.712890625,0.63671875,0.58203125,0.5703125,0.55859375,0.505859375,0.4248046875,0.3515625,0.318359375,0.33203125,0.376953125,0.439453125,0.533203125,0.626953125,0.677734375,0.6669921875,0.6142578125,0.55078125,0.4990234375,0.4833984375,0.509765625,0.5576171875,0.59375,0.591796875,0.55078125,0.513671875,0.5263671875,0.5859375,0.65625,0.697265625,0.6826171875,0.6220703125,0.5390625,0.4296875,0.33203125,0.291015625,0.31640625,0.3818359375,0.4482421875,0.50390625,0.541015625,0.556640625,0.564453125,0.580078125,0.6171875,0.673828125,0.734375,0.779296875,0.7744140625,0.705078125,0.595703125,0.4931640625,0.4287109375,0.3720703125,0.3056640625,0.2578125,0.2578125,0.3056640625,0.3720703125,0.4287109375,0.47265625,0.4892578125,0.48046875,0.46484375,0.4658203125,0.49609375,0.55078125,0.611328125,0.658203125,0.677734375,0.666015625,0.6376953125,0.6181640625,0.6220703125,0.62109375,0.5771484375,0.5029296875,0.4306640625,0.3935546875,0.4033203125,0.4482421875,0.4931640625,0.5126953125,0.5078125,0.4912109375,0.486328125,0.505859375,0.55078125,0.61328125,0.70703125,0.7978515625,0.8388671875,0.814453125,0.7470703125,0.673828125,0.59375,0.4931640625,0.39453125,0.3291015625,0.306640625,0.3134765625,0.3251953125,0.34375,0.3935546875,0.4697265625,0.5478515625,0.6044921875,0.6259765625,0.6220703125,0.6171875,0.6279296875,0.63671875,0.6201171875,0.5712890625,0.501953125,0.4287109375,0.37109375,0.369140625,0.4248046875,0.50390625,0.5595703125,0.5576171875,0.5,0.43359375,0.40234375,0.427734375,0.50390625,0.5966796875,0.6591796875,0.673828125,0.658203125,0.5859375,0.478515625,0.3837890625,0.341796875,0.365234375,0.4287109375,0.501953125,0.5712890625,0.6201171875,0.63671875,0.6279296875,0.6171875,0.6220703125,0.640625,0.68359375,0.7275390625,0.7392578125,0.70703125,0.642578125,0.5703125,0.486328125,0.3681640625,0.2548828125,0.1943359375,0.205078125,0.26171875,0.3251953125,0.390625,0.4658203125,0.53125,0.5703125,0.5791015625,0.5732421875,0.5703125,0.5595703125,0.5126953125,0.443359375,0.384765625,0.3623046875,0.3828125,0.4287109375,0.4814453125,0.5361328125,0.5810546875,0.60546875,0.61328125,0.6142578125,0.6220703125,0.6181640625,0.5595703125,0.4580078125,0.353515625,0.2890625,0.2841796875,0.3251953125,0.3740234375,0.4111328125,0.4375,0.458984375,0.484375,0.521484375,0.5703125,0.625,0.6806640625,0.7001953125,0.658203125,0.564453125,0.458984375,0.376953125,0.3173828125,0.3095703125,0.357421875,0.4326171875,0.490234375,0.49609375,0.4482421875,0.3857421875,0.3251953125,0.287109375,0.2802734375,0.298828125,0.3203125,0.3251953125,0.33203125,0.3681640625,0.4384765625,0.525390625,0.60546875,0.6552734375,0.673828125,0.6748046875,0.640625,0.5693359375,0.4814453125,0.41015625,0.3759765625,0.376953125,0.3916015625,0.4228515625,0.4677734375,0.5146484375,0.5498046875,0.5673828125,0.5703125,0.568359375,0.556640625,0.533203125,0.5,0.466796875,0.4423828125,0.4287109375,0.421875,0.431640625,0.4609375,0.3935546875,0.4443359375,0.515625,0.5673828125,0.5791015625,0.5791015625,0.5791015625,0.5791015625,0.5791015625,0.5791015625,0.5791015625,0.5791015625,0.5849609375,0.6064453125,0.623046875,0.6103515625,0.5625,0.4912109375,0.419921875,0.3544921875,0.3212890625,0.33984375,0.408203125,0.494140625,0.5546875,0.5693359375,0.568359375,0.5546875,0.52734375,0.4931640625,0.462890625,0.4443359375,0.439453125,0.4375,0.43359375,0.4296875,0.4248046875,0.421875,0.419921875,0.419921875,0.4296875,0.47265625,0.529296875,0.564453125,0.556640625,0.5078125,0.439453125,0.361328125,0.2666015625,0.197265625,0.1923828125,0.2529296875,0.3427734375,0.419921875,0.498046875,0.5908203125,0.6591796875,0.6640625,0.603515625,0.515625,0.439453125,0.373046875,0.3203125,0.3037109375,0.3271484375,0.373046875,0.4111328125,0.419921875,0.41015625,0.369140625,0.3173828125,0.287109375,0.30078125,0.3515625,0.419921875,0.5,0.6025390625,0.6875,0.7119140625,0.666015625,0.5849609375,0.509765625,0.4306640625,0.3369140625,0.267578125,0.26171875,0.322265625,0.412109375,0.4892578125,0.5654296875,0.6494140625,0.7001953125,0.68359375,0.60546875,0.5078125,0.4296875,0.3662109375,0.33203125,0.3486328125,0.4111328125,0.4912109375,0.546875,0.5595703125,0.568359375,0.6025390625,0.6435546875,0.66015625,0.6357421875,0.5791015625,0.509765625,0.44921875,0.427734375,0.447265625,0.482421875,0.501953125,0.48046875,0.419921875,0.34375,0.2626953125,0.216796875,0.23828125,0.3212890625,0.421875,0.5,0.57421875,0.6591796875,0.7119140625,0.697265625,0.6201171875,0.5205078125,0.439453125,0.369140625,0.314453125,0.296875,0.322265625,0.37109375,0.41015625,0.419921875,0.4140625,0.3935546875,0.3779296875,0.3916015625,0.439453125,0.5087890625,0.5791015625,0.6328125,0.6240234375,0.5517578125,0.4560546875,0.38671875,0.3828125,0.439453125,0.5126953125,0.5791015625,0.619140625,0.6201171875,0.59375,0.56640625,0.5595703125,0.5673828125,0.599609375,0.6376953125,0.650390625,0.625,0.5673828125,0.5,0.4443359375,0.443359375,0.5,0.5791015625,0.634765625,0.634765625,0.5791015625,0.5126953125,0.4599609375,0.4423828125,0.466796875,0.5126953125,0.5498046875,0.5595703125,0.5478515625,0.4990234375,0.4326171875,0.3857421875,0.3857421875,0.4306640625,0.5,0.55859375,0.5625,0.5107421875,0.4345703125,0.380859375,0.3828125,0.439453125,0.5107421875,0.576171875,0.6171875,0.62109375,0.5986328125,0.57421875,0.5693359375,0.5771484375,0.6005859375,0.6201171875,0.609375,0.5615234375,0.4912109375,0.419921875,0.3623046875,0.359375,0.4130859375,0.490234375,0.5458984375,0.544921875,0.4892578125,0.4248046875,0.384765625,0.388671875,0.4365234375,0.5029296875,0.5498046875,0.5595703125,0.5634765625,0.5859375,0.60546875,0.59765625,0.5556640625,0.4892578125,0.419921875,0.3642578125,0.3642578125,0.419921875,0.4990234375,0.5556640625,0.5546875,0.5,0.4228515625,0.3330078125,0.2685546875,0.2705078125,0.3369140625,0.4296875,0.509765625,0.5771484375,0.619140625,0.61328125,0.5615234375,0.490234375,0.4404296875,0.4296875,0.4404296875,0.4814453125,0.5322265625,0.55859375,0.5419921875,0.48828125,0.419921875,0.345703125,0.271484375,0.2412109375,0.2822265625,0.3837890625,0.49609375,0.5791015625,0.6484375,0.6982421875,0.70703125,0.671875,0.6142578125,0.5693359375,0.5595703125,0.546875,0.4912109375,0.4111328125,0.3486328125,0.33203125,0.3662109375,0.4296875,0.5078125,0.6083984375,0.6904296875,0.712890625,0.6669921875,0.5849609375,0.509765625,0.451171875,0.439453125,0.4775390625,0.5361328125,0.5751953125,0.56640625,0.509765625,0.4541015625,0.453125,0.5078125,0.58203125,0.6337890625,0.6279296875,0.5693359375,0.48828125,0.384765625,0.3017578125,0.28125,0.330078125,0.4130859375,0.4892578125,0.5498046875,0.5712890625,0.5517578125,0.5166015625,0.4970703125,0.5185546875,0.5791015625,0.6533203125,0.7275390625,0.7607421875,0.72265625,0.626953125,0.51953125,0.439453125,0.36328125,0.2744140625,0.2099609375,0.2099609375,0.2744140625,0.36328125,0.439453125,0.498046875,0.515625,0.4921875,0.4521484375,0.4296875,0.44921875,0.509765625,0.5791015625,0.63671875,0.6611328125,0.646484375,0.6083984375,0.576171875,0.5693359375,0.5595703125,0.51171875,0.443359375,0.392578125,0.3857421875,0.4248046875,0.4892578125,0.546875,0.5595703125,0.525390625,0.4736328125,0.439453125,0.4521484375,0.509765625,0.587890625,0.6875,0.76953125,0.7890625,0.740234375,0.6572265625,0.5791015625,0.505859375,0.4326171875,0.3828125,0.3701171875,0.388671875,0.412109375,0.419921875,0.4248046875,0.4453125,0.48046875,0.51953125,0.5517578125,0.5673828125,0.5693359375,0.57421875,0.599609375,0.6240234375,0.6201171875,0.5791015625,0.5126953125,0.439453125,0.380859375,0.3779296875,0.431640625,0.5078125,0.5615234375,0.5576171875,0.5,0.431640625,0.388671875,0.3935546875,0.4443359375,0.515625,0.5673828125,0.5791015625,0.56640625,0.5078125,0.4228515625,0.35546875,0.337890625,0.373046875,0.439453125,0.5126953125,0.5791015625,0.6201171875,0.6240234375,0.599609375,0.57421875,0.5693359375,0.5810546875,0.6220703125,0.673828125,0.701171875,0.6845703125,0.6298828125,0.5595703125,0.4765625,0.3662109375,0.26953125,0.2333984375,0.2685546875,0.3447265625,0.419921875,0.4912109375,0.5595703125,0.603515625,0.6103515625,0.58984375,0.5654296875,0.5595703125,0.546875,0.4931640625,0.4150390625,0.3544921875,0.3408203125,0.3759765625,0.439453125,0.5087890625,0.57421875,0.6142578125,0.619140625,0.5966796875,0.57421875,0.5693359375,0.5576171875,0.5009765625,0.4169921875,0.34765625,0.326171875,0.357421875,0.419921875,0.48046875,0.5068359375,0.5,0.4794921875,0.4716796875,0.4990234375,0.5595703125,0.6328125,0.708984375,0.74609375,0.712890625,0.6201171875,0.51171875,0.4296875,0.37109375,0.3662109375,0.4189453125,0.4951171875,0.548828125,0.5458984375,0.4892578125,0.419921875,0.3603515625,0.33203125,0.3427734375,0.37890625,0.412109375,0.419921875,0.4228515625,0.44140625,0.4755859375,0.517578125,0.5537109375,0.57421875,0.5791015625,0.5771484375,0.5595703125,0.525390625,0.484375,0.4501953125,0.431640625,0.4296875,0.4345703125,0.451171875,0.48046875,0.513671875,0.5419921875,0.556640625,0.5595703125,0.556640625,0.54296875,0.517578125,0.4873046875,0.4599609375,0.4443359375,0.439453125,0.4404296875,0.4541015625,0.48046875,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.353515625,0.3623046875,0.39453125,0.423828125,0.4296875,0.427734375,0.42578125,0.4228515625,0.4208984375,0.419921875,0.419921875,0.419921875,0.43359375,0.4931640625,0.5810546875,0.6533203125,0.67578125,0.6435546875,0.5791015625,0.5078125,0.439453125,0.39453125,0.384765625,0.4033203125,0.4248046875,0.4296875,0.431640625,0.447265625,0.4765625,0.5126953125,0.5419921875,0.5576171875,0.5595703125,0.5576171875,0.5576171875,0.55859375,0.5595703125,0.560546875,0.560546875,0.5595703125,0.5673828125,0.6083984375,0.6611328125,0.6923828125,0.6806640625,0.62890625,0.5595703125,0.48046875,0.388671875,0.326171875,0.3310546875,0.40234375,0.4990234375,0.5791015625,0.6591796875,0.751953125,0.8173828125,0.81640625,0.75,0.6572265625,0.5791015625,0.5107421875,0.4599609375,0.447265625,0.4765625,0.5283203125,0.5693359375,0.5791015625,0.5693359375,0.5283203125,0.4755859375,0.443359375,0.4541015625,0.5029296875,0.5693359375,0.6435546875,0.7236328125,0.76953125,0.748046875,0.6669921875,0.5673828125,0.4892578125,0.4140625,0.3251953125,0.2646484375,0.26953125,0.337890625,0.431640625,0.509765625,0.5888671875,0.689453125,0.7685546875,0.78515625,0.7333984375,0.6474609375,0.5693359375,0.49609375,0.4267578125,0.380859375,0.373046875,0.392578125,0.4150390625,0.419921875,0.4296875,0.478515625,0.5478515625,0.5966796875,0.6005859375,0.5576171875,0.4892578125,0.431640625,0.4296875,0.4873046875,0.5703125,0.630859375,0.6337890625,0.5791015625,0.5009765625,0.400390625,0.31640625,0.29296875,0.3369140625,0.416015625,0.4892578125,0.568359375,0.6708984375,0.7568359375,0.7822265625,0.7373046875,0.65625,0.5791015625,0.5087890625,0.453125,0.43359375,0.4580078125,0.5078125,0.5478515625,0.5595703125,0.5478515625,0.4921875,0.41015625,0.3447265625,0.3271484375,0.36328125,0.4296875,0.4931640625,0.521484375,0.5126953125,0.4873046875,0.4755859375,0.5,0.5595703125,0.623046875,0.6552734375,0.63671875,0.5712890625,0.4892578125,0.4326171875,0.419921875,0.431640625,0.4833984375,0.5546875,0.60546875,0.6103515625,0.5673828125,0.5,0.4384765625,0.4189453125,0.4443359375,0.4892578125,0.515625,0.4990234375,0.439453125,0.37109375,0.3203125,0.3076171875,0.3369140625,0.3896484375,0.4296875,0.439453125,0.431640625,0.3994140625,0.361328125,0.3486328125,0.3740234375,0.431640625,0.5,0.5576171875,0.5732421875,0.5458984375,0.501953125,0.4775390625,0.498046875,0.5595703125,0.6259765625,0.66015625,0.640625,0.5732421875,0.4892578125,0.431640625,0.419921875,0.4345703125,0.49609375,0.583984375,0.6552734375,0.6767578125,0.6435546875,0.5791015625,0.5185546875,0.49609375,0.5146484375,0.548828125,0.568359375,0.548828125,0.4892578125,0.421875,0.3662109375,0.341796875,0.357421875,0.3974609375,0.431640625,0.439453125,0.4521484375,0.5078125,0.587890625,0.650390625,0.6669921875,0.6328125,0.5693359375,0.5107421875,0.4931640625,0.515625,0.5537109375,0.57421875,0.5517578125,0.4892578125,0.41015625,0.3193359375,0.2587890625,0.2646484375,0.3359375,0.4306640625,0.509765625,0.5791015625,0.638671875,0.6669921875,0.65625,0.6201171875,0.5869140625,0.5791015625,0.5888671875,0.6298828125,0.6806640625,0.7080078125,0.693359375,0.6396484375,0.5693359375,0.486328125,0.3779296875,0.283203125,0.25,0.287109375,0.3642578125,0.439453125,0.5078125,0.5576171875,0.5673828125,0.533203125,0.4755859375,0.431640625,0.419921875,0.412109375,0.3896484375,0.373046875,0.3857421875,0.435546875,0.5068359375,0.5791015625,0.6552734375,0.7353515625,0.7783203125,0.75390625,0.669921875,0.568359375,0.4892578125,0.43359375,0.4267578125,0.470703125,0.5341796875,0.5771484375,0.5673828125,0.509765625,0.44921875,0.4306640625,0.4541015625,0.4951171875,0.5185546875,0.5,0.439453125,0.3623046875,0.2763671875,0.220703125,0.2333984375,0.3095703125,0.4091796875,0.4892578125,0.548828125,0.5556640625,0.5068359375,0.43359375,0.3818359375,0.384765625,0.439453125,0.5185546875,0.623046875,0.712890625,0.7451171875,0.7080078125,0.6328125,0.5595703125,0.4833984375,0.3935546875,0.33203125,0.3359375,0.4052734375,0.5,0.5791015625,0.6376953125,0.640625,0.5859375,0.5078125,0.4521484375,0.453125,0.509765625,0.576171875,0.6171875,0.611328125,0.55859375,0.486328125,0.43359375,0.419921875,0.41015625,0.376953125,0.33984375,0.3291015625,0.359375,0.419921875,0.4892578125,0.548828125,0.5615234375,0.5263671875,0.47265625,0.4375,0.4501953125,0.509765625,0.5849609375,0.6650390625,0.708984375,0.6845703125,0.599609375,0.498046875,0.419921875,0.3564453125,0.322265625,0.33984375,0.404296875,0.4873046875,0.544921875,0.5595703125,0.5576171875,0.541015625,0.5087890625,0.470703125,0.4384765625,0.421875,0.419921875,0.4345703125,0.49609375,0.5830078125,0.65234375,0.6708984375,0.6357421875,0.5693359375,0.5078125,0.48828125,0.513671875,0.5556640625,0.580078125,0.560546875,0.5,0.427734375,0.3662109375,0.3359375,0.3466796875,0.3857421875,0.419921875,0.4296875,0.4248046875,0.3994140625,0.375,0.37890625,0.419921875,0.486328125,0.5595703125,0.6259765625,0.6611328125,0.64453125,0.5791015625,0.4970703125,0.44140625,0.4296875,0.4404296875,0.48046875,0.529296875,0.5546875,0.5390625,0.486328125,0.419921875,0.3466796875,0.271484375,0.2373046875,0.2724609375,0.3671875,0.4765625,0.5595703125,0.6259765625,0.6630859375,0.6484375,0.5859375,0.505859375,0.451171875,0.439453125,0.435546875,0.4130859375,0.3935546875,0.4013671875,0.443359375,0.509765625,0.5791015625,0.6416015625,0.671875,0.6474609375,0.5751953125,0.4892578125,0.431640625,0.419921875,0.416015625,0.396484375,0.3818359375,0.3935546875,0.4404296875,0.5087890625,0.5791015625,0.6318359375,0.6220703125,0.546875,0.4462890625,0.373046875,0.365234375,0.419921875,0.5009765625,0.6103515625,0.70703125,0.74609375,0.71484375,0.6416015625,0.5693359375,0.5107421875,0.494140625,0.5205078125,0.5634765625,0.587890625,0.5693359375,0.509765625,0.443359375,0.400390625,0.4033203125,0.451171875,0.5185546875,0.568359375,0.5791015625,0.5751953125,0.556640625,0.5205078125,0.478515625,0.4423828125,0.423828125,0.419921875,0.423828125,0.4423828125,0.4775390625,0.517578125,0.55078125,0.5673828125,0.5693359375,0.564453125,0.5478515625,0.5185546875,0.4853515625,0.45703125,0.4423828125,0.439453125,0.443359375,0.4599609375,0.4912109375,0.5283203125,0.55859375,0.576171875,0.5791015625,0.5751953125,0.556640625,0.521484375,0.40625,0.3857421875,0.3837890625,0.384765625,0.376953125,0.3662109375,0.3525390625,0.3388671875,0.3291015625,0.3251953125,0.3251953125,0.3251953125,0.341796875,0.419921875,0.5439453125,0.6611328125,0.7275390625,0.724609375,0.673828125,0.6083984375,0.533203125,0.4638671875,0.416015625,0.3935546875,0.3857421875,0.376953125,0.373046875,0.39453125,0.443359375,0.50390625,0.552734375,0.57421875,0.5703125,0.5615234375,0.5595703125,0.5654296875,0.57421875,0.580078125,0.5791015625,0.5703125,0.5703125,0.6044921875,0.6552734375,0.6904296875,0.6845703125,0.638671875,0.5703125,0.4931640625,0.4111328125,0.3671875,0.39453125,0.484375,0.5908203125,0.673828125,0.751953125,0.83984375,0.8984375,0.89453125,0.8291015625,0.7431640625,0.673828125,0.61328125,0.5693359375,0.5576171875,0.5830078125,0.62890625,0.6650390625,0.673828125,0.6650390625,0.62890625,0.580078125,0.544921875,0.5419921875,0.5732421875,0.6220703125,0.673828125,0.7197265625,0.728515625,0.6826171875,0.5966796875,0.5087890625,0.4482421875,0.392578125,0.33203125,0.2998046875,0.322265625,0.39453125,0.482421875,0.55078125,0.6220703125,0.7177734375,0.7978515625,0.8212890625,0.7783203125,0.6982421875,0.6220703125,0.546875,0.4638671875,0.392578125,0.3486328125,0.3349609375,0.3330078125,0.3251953125,0.328125,0.376953125,0.4560546875,0.5234375,0.544921875,0.513671875,0.4482421875,0.390625,0.39453125,0.4697265625,0.58203125,0.67578125,0.7080078125,0.673828125,0.611328125,0.517578125,0.419921875,0.359375,0.3564453125,0.396484375,0.4482421875,0.5126953125,0.619140625,0.732421875,0.80078125,0.7998046875,0.7451171875,0.673828125,0.599609375,0.5283203125,0.484375,0.4833984375,0.515625,0.552734375,0.5703125,0.5654296875,0.5078125,0.4140625,0.328125,0.2900390625,0.3134765625,0.376953125,0.4443359375,0.490234375,0.5087890625,0.5078125,0.5068359375,0.5263671875,0.5703125,0.6142578125,0.62109375,0.576171875,0.490234375,0.3974609375,0.3388671875,0.3251953125,0.33984375,0.40234375,0.4951171875,0.5712890625,0.5966796875,0.5654296875,0.5,0.4365234375,0.4111328125,0.427734375,0.4658203125,0.4921875,0.48046875,0.4287109375,0.369140625,0.32421875,0.3134765625,0.3388671875,0.384765625,0.4208984375,0.4287109375,0.423828125,0.40234375,0.3798828125,0.376953125,0.40234375,0.4482421875,0.5,0.541015625,0.544921875,0.5166015625,0.4833984375,0.474609375,0.505859375,0.5703125,0.6328125,0.6494140625,0.6005859375,0.5009765625,0.39453125,0.3310546875,0.3251953125,0.3525390625,0.4375,0.5634765625,0.6767578125,0.7353515625,0.7265625,0.673828125,0.615234375,0.5732421875,0.548828125,0.537109375,0.5234375,0.494140625,0.4482421875,0.3974609375,0.3583984375,0.3447265625,0.361328125,0.39453125,0.421875,0.4287109375,0.4404296875,0.4931640625,0.57421875,0.6474609375,0.6806640625,0.6669921875,0.6220703125,0.578125,0.5615234375,0.56640625,0.572265625,0.55859375,0.5146484375,0.4482421875,0.3720703125,0.296875,0.2607421875,0.2919921875,0.3798828125,0.4794921875,0.55078125,0.61328125,0.673828125,0.7119140625,0.71875,0.7001953125,0.6787109375,0.673828125,0.6826171875,0.7177734375,0.759765625,0.7763671875,0.7509765625,0.6923828125,0.6220703125,0.5390625,0.427734375,0.3251953125,0.279296875,0.30078125,0.3642578125,0.4287109375,0.4873046875,0.5263671875,0.5224609375,0.4736328125,0.40234375,0.3466796875,0.3251953125,0.3154296875,0.314453125,0.34375,0.4140625,0.5107421875,0.6044921875,0.673828125,0.7353515625,0.7822265625,0.78125,0.716796875,0.611328125,0.5107421875,0.4482421875,0.4091796875,0.419921875,0.4794921875,0.5546875,0.6044921875,0.6015625,0.55078125,0.4970703125,0.4736328125,0.48046875,0.5,0.5068359375,0.4833984375,0.4287109375,0.359375,0.275390625,0.21484375,0.2158203125,0.2783203125,0.369140625,0.4482421875,0.509765625,0.5302734375,0.501953125,0.4443359375,0.396484375,0.3896484375,0.4287109375,0.4892578125,0.5732421875,0.6513671875,0.689453125,0.6728515625,0.623046875,0.5703125,0.5126953125,0.4462890625,0.40625,0.4248046875,0.4990234375,0.59375,0.673828125,0.7314453125,0.7333984375,0.673828125,0.5849609375,0.515625,0.50390625,0.55078125,0.607421875,0.630859375,0.599609375,0.5185546875,0.419921875,0.349609375,0.3251953125,0.3095703125,0.28125,0.2607421875,0.271484375,0.318359375,0.3837890625,0.4482421875,0.5009765625,0.5234375,0.51171875,0.4873046875,0.4755859375,0.498046875,0.55078125,0.6123046875,0.66015625,0.6591796875,0.5947265625,0.4892578125,0.388671875,0.3251953125,0.2802734375,0.2666015625,0.3037109375,0.3857421875,0.48046875,0.546875,0.5703125,0.5732421875,0.544921875,0.484375,0.4111328125,0.3505859375,0.322265625,0.3251953125,0.3525390625,0.4375,0.5595703125,0.6630859375,0.708984375,0.685546875,0.6220703125,0.55859375,0.533203125,0.546875,0.5751953125,0.587890625,0.5625,0.5,0.42578125,0.3525390625,0.3037109375,0.2978515625,0.3251953125,0.3603515625,0.376953125,0.3818359375,0.37109375,0.3623046875,0.37890625,0.427734375,0.4970703125,0.5703125,0.6337890625,0.6572265625,0.619140625,0.5341796875,0.439453125,0.3818359375,0.376953125,0.3935546875,0.423828125,0.4521484375,0.4560546875,0.427734375,0.3779296875,0.3251953125,0.271484375,0.22265625,0.2138671875,0.26953125,0.3759765625,0.4873046875,0.5703125,0.634765625,0.6640625,0.638671875,0.56640625,0.4833984375,0.4326171875,0.4287109375,0.4375,0.4453125,0.4638671875,0.501953125,0.55859375,0.619140625,0.673828125,0.7138671875,0.7021484375,0.626953125,0.5087890625,0.39453125,0.3310546875,0.3251953125,0.3369140625,0.3564453125,0.3984375,0.46484375,0.5439453125,0.6171875,0.673828125,0.7060546875,0.666015625,0.5517578125,0.412109375,0.30859375,0.28125,0.3251953125,0.3994140625,0.509765625,0.625,0.69921875,0.7099609375,0.6728515625,0.6220703125,0.5791015625,0.5693359375,0.58984375,0.6181640625,0.62890625,0.60546875,0.55078125,0.494140625,0.46484375,0.48046875,0.5380859375,0.611328125,0.662109375,0.673828125,0.6650390625,0.623046875,0.5458984375,0.453125,0.3759765625,0.333984375,0.3251953125,0.333984375,0.3759765625,0.4501953125,0.5322265625,0.5966796875,0.625,0.6220703125,0.607421875,0.576171875,0.53125,0.484375,0.44921875,0.431640625,0.4287109375,0.4345703125,0.46484375,0.5185546875,0.5830078125,0.6376953125,0.66796875,0.673828125,0.6650390625,0.623046875,0.548828125,0.5185546875,0.474609375,0.4296875,0.392578125,0.3642578125,0.3359375,0.3037109375,0.275390625,0.2587890625,0.2548828125,0.2578125,0.2587890625,0.2763671875,0.361328125,0.501953125,0.6484375,0.748046875,0.7734375,0.740234375,0.6904296875,0.626953125,0.5546875,0.4853515625,0.4306640625,0.392578125,0.3642578125,0.345703125,0.3623046875,0.4140625,0.48046875,0.5322265625,0.5478515625,0.5302734375,0.5078125,0.50390625,0.5185546875,0.541015625,0.5556640625,0.5517578125,0.5302734375,0.5146484375,0.5361328125,0.5849609375,0.626953125,0.6328125,0.595703125,0.5302734375,0.455078125,0.38671875,0.3662109375,0.421875,0.5361328125,0.6552734375,0.740234375,0.81640625,0.89453125,0.9423828125,0.9306640625,0.869140625,0.7939453125,0.740234375,0.6962890625,0.6630859375,0.654296875,0.673828125,0.70703125,0.7333984375,0.740234375,0.7353515625,0.7109375,0.673828125,0.6376953125,0.6181640625,0.619140625,0.634765625,0.650390625,0.646484375,0.6103515625,0.546875,0.4755859375,0.4208984375,0.39453125,0.375,0.3603515625,0.369140625,0.4140625,0.4833984375,0.552734375,0.6044921875,0.6591796875,0.73828125,0.806640625,0.826171875,0.78515625,0.7099609375,0.634765625,0.560546875,0.4775390625,0.3994140625,0.341796875,0.306640625,0.283203125,0.2587890625,0.24609375,0.28515625,0.3642578125,0.44140625,0.4775390625,0.45703125,0.39453125,0.3349609375,0.3359375,0.4140625,0.5439453125,0.6708984375,0.740234375,0.740234375,0.7109375,0.64453125,0.5498046875,0.4580078125,0.3984375,0.3818359375,0.39453125,0.4306640625,0.5283203125,0.662109375,0.7763671875,0.826171875,0.8046875,0.740234375,0.662109375,0.568359375,0.48828125,0.4521484375,0.4638671875,0.4990234375,0.5302734375,0.5419921875,0.4990234375,0.4140625,0.328125,0.28515625,0.3017578125,0.3642578125,0.4345703125,0.49609375,0.533203125,0.5380859375,0.525390625,0.517578125,0.5302734375,0.5419921875,0.5224609375,0.4658203125,0.38671875,0.3115234375,0.267578125,0.2587890625,0.2744140625,0.345703125,0.4521484375,0.546875,0.5869140625,0.5634765625,0.5,0.435546875,0.4052734375,0.4189453125,0.4609375,0.4990234375,0.50390625,0.46875,0.4248046875,0.3916015625,0.3837890625,0.40234375,0.4365234375,0.462890625,0.46875,0.466796875,0.4599609375,0.4521484375,0.4521484375,0.462890625,0.48046875,0.5,0.5087890625,0.484375,0.44140625,0.4111328125,0.4169921875,0.4619140625,0.5302734375,0.58984375,0.59375,0.52734375,0.4140625,0.3046875,0.25,0.2587890625,0.3017578125,0.40625,0.5517578125,0.6875,0.7666015625,0.7763671875,0.740234375,0.6904296875,0.626953125,0.5546875,0.4912109375,0.4443359375,0.4150390625,0.39453125,0.3779296875,0.373046875,0.3857421875,0.4140625,0.4443359375,0.46484375,0.46875,0.4755859375,0.5068359375,0.5576171875,0.609375,0.6435546875,0.6494140625,0.634765625,0.62109375,0.619140625,0.6162109375,0.5908203125,0.5380859375,0.466796875,0.39453125,0.3232421875,0.26953125,0.26953125,0.3369140625,0.4453125,0.5458984375,0.6044921875,0.65234375,0.701171875,0.740234375,0.7568359375,0.7529296875,0.7431640625,0.740234375,0.748046875,0.7763671875,0.806640625,0.8095703125,0.7724609375,0.70703125,0.634765625,0.5546875,0.4560546875,0.3720703125,0.33984375,0.3642578125,0.4189453125,0.46875,0.51171875,0.53515625,0.5166015625,0.4521484375,0.3671875,0.2958984375,0.2587890625,0.23828125,0.2509765625,0.3193359375,0.4384765625,0.57421875,0.6806640625,0.740234375,0.7783203125,0.78125,0.7265625,0.6240234375,0.509765625,0.4267578125,0.39453125,0.38671875,0.4248046875,0.501953125,0.5849609375,0.6376953125,0.6416015625,0.6044921875,0.5634765625,0.5400390625,0.53515625,0.5380859375,0.533203125,0.509765625,0.46875,0.4130859375,0.3291015625,0.2509765625,0.2197265625,0.25,0.3203125,0.39453125,0.462890625,0.513671875,0.529296875,0.5107421875,0.4775390625,0.458984375,0.46875,0.4912109375,0.5234375,0.5546875,0.5712890625,0.5673828125,0.5498046875,0.5302734375,0.505859375,0.4765625,0.4658203125,0.5,0.57421875,0.6630859375,0.740234375,0.80078125,0.8095703125,0.7587890625,0.673828125,0.5986328125,0.5732421875,0.6044921875,0.64453125,0.650390625,0.6015625,0.501953125,0.38671875,0.298828125,0.2587890625,0.23046875,0.201171875,0.1923828125,0.220703125,0.2783203125,0.34375,0.39453125,0.4375,0.4697265625,0.4912109375,0.5078125,0.529296875,0.5615234375,0.6044921875,0.6435546875,0.6455078125,0.5908203125,0.48828125,0.3740234375,0.2919921875,0.2587890625,0.2431640625,0.2470703125,0.2841796875,0.3525390625,0.431640625,0.4951171875,0.5302734375,0.5458984375,0.5166015625,0.44140625,0.34765625,0.2724609375,0.2431640625,0.2587890625,0.3037109375,0.41015625,0.5517578125,0.6708984375,0.7216796875,0.69921875,0.634765625,0.572265625,0.544921875,0.5546875,0.580078125,0.58984375,0.5625,0.5,0.4228515625,0.3388671875,0.275390625,0.2587890625,0.287109375,0.33203125,0.3642578125,0.3837890625,0.380859375,0.3701171875,0.3720703125,0.40234375,0.4599609375,0.5302734375,0.591796875,0.609375,0.5654296875,0.48046875,0.39453125,0.3525390625,0.3642578125,0.3896484375,0.4072265625,0.4033203125,0.3720703125,0.3251953125,0.283203125,0.2587890625,0.2373046875,0.2138671875,0.2177734375,0.2666015625,0.3544921875,0.451171875,0.5302734375,0.5947265625,0.6240234375,0.6044921875,0.546875,0.484375,0.455078125,0.46875,0.498046875,0.5400390625,0.5908203125,0.6435546875,0.6875,0.71875,0.740234375,0.7431640625,0.68359375,0.560546875,0.4140625,0.296875,0.2470703125,0.2587890625,0.29296875,0.359375,0.4580078125,0.56640625,0.6572265625,0.7138671875,0.740234375,0.7412109375,0.669921875,0.5322265625,0.3779296875,0.2646484375,0.228515625,0.2587890625,0.314453125,0.404296875,0.5107421875,0.5986328125,0.6455078125,0.6513671875,0.634765625,0.6220703125,0.630859375,0.654296875,0.673828125,0.6728515625,0.646484375,0.6044921875,0.5634765625,0.546875,0.568359375,0.6240234375,0.6875,0.73046875,0.740234375,0.728515625,0.6708984375,0.5634765625,0.435546875,0.328125,0.2705078125,0.2587890625,0.271484375,0.33203125,0.435546875,0.546875,0.6259765625,0.65234375,0.634765625,0.60546875,0.56640625,0.5244140625,0.4912109375,0.474609375,0.4697265625,0.46875,0.4755859375,0.5087890625,0.568359375,0.640625,0.701171875,0.7333984375,0.740234375,0.7275390625,0.6669921875,0.5634765625,0.6484375,0.5966796875,0.5205078125,0.4462890625,0.39453125,0.3466796875,0.2978515625,0.2587890625,0.2421875,0.24609375,0.255859375,0.2587890625,0.2734375,0.34765625,0.474609375,0.61328125,0.7158203125,0.7548828125,0.740234375,0.712890625,0.677734375,0.6298828125,0.568359375,0.5029296875,0.443359375,0.39453125,0.3583984375,0.3603515625,0.40234375,0.4609375,0.5029296875,0.5048828125,0.46875,0.431640625,0.4248046875,0.4501953125,0.48828125,0.513671875,0.5068359375,0.46875,0.4345703125,0.443359375,0.48828125,0.5380859375,0.55859375,0.5322265625,0.46875,0.3955078125,0.3349609375,0.328125,0.3994140625,0.52734375,0.654296875,0.740234375,0.8134765625,0.880859375,0.9140625,0.89453125,0.8369140625,0.775390625,0.740234375,0.71484375,0.6953125,0.6904296875,0.701171875,0.720703125,0.736328125,0.740234375,0.7392578125,0.734375,0.7177734375,0.6904296875,0.65625,0.6259765625,0.6044921875,0.578125,0.5234375,0.4521484375,0.388671875,0.3525390625,0.3486328125,0.3642578125,0.384765625,0.4169921875,0.4609375,0.513671875,0.564453125,0.60546875,0.634765625,0.669921875,0.7275390625,0.7783203125,0.7900390625,0.75,0.6787109375,0.6044921875,0.533203125,0.46484375,0.408203125,0.3662109375,0.3349609375,0.30078125,0.2587890625,0.2275390625,0.2490234375,0.3173828125,0.39453125,0.4384765625,0.4248046875,0.3642578125,0.30078125,0.2822265625,0.3388671875,0.4609375,0.6015625,0.703125,0.740234375,0.751953125,0.7314453125,0.6650390625,0.56640625,0.46484375,0.3935546875,0.3642578125,0.3642578125,0.4375,0.5712890625,0.708984375,0.7939453125,0.798828125,0.740234375,0.6572265625,0.5458984375,0.4384765625,0.3779296875,0.3798828125,0.421875,0.46875,0.501953125,0.484375,0.421875,0.3525390625,0.3154296875,0.3330078125,0.39453125,0.46875,0.541015625,0.5849609375,0.5830078125,0.5419921875,0.49609375,0.46875,0.4462890625,0.40625,0.3564453125,0.30859375,0.275390625,0.2607421875,0.2587890625,0.2744140625,0.345703125,0.4521484375,0.546875,0.5869140625,0.5634765625,0.5,0.4345703125,0.400390625,0.4140625,0.4638671875,0.5185546875,0.544921875,0.5302734375,0.50390625,0.4853515625,0.48046875,0.4912109375,0.5107421875,0.5263671875,0.5302734375,0.5322265625,0.5390625,0.546875,0.546875,0.5361328125,0.5185546875,0.5,0.470703125,0.4111328125,0.34765625,0.3173828125,0.337890625,0.3974609375,0.46875,0.52734375,0.5283203125,0.4609375,0.35546875,0.263671875,0.2294921875,0.2587890625,0.318359375,0.4248046875,0.560546875,0.6796875,0.748046875,0.7607421875,0.740234375,0.703125,0.626953125,0.5244140625,0.427734375,0.3671875,0.3505859375,0.3642578125,0.38671875,0.419921875,0.4609375,0.4970703125,0.51953125,0.5283203125,0.5302734375,0.529296875,0.52734375,0.529296875,0.541015625,0.5615234375,0.583984375,0.6044921875,0.626953125,0.6533203125,0.6572265625,0.6162109375,0.53515625,0.4423828125,0.3642578125,0.296875,0.26171875,0.2900390625,0.3798828125,0.4990234375,0.5927734375,0.634765625,0.6630859375,0.6953125,0.7236328125,0.740234375,0.744140625,0.7412109375,0.740234375,0.7470703125,0.7724609375,0.794921875,0.7900390625,0.74609375,0.677734375,0.6044921875,0.529296875,0.4521484375,0.4033203125,0.40234375,0.4443359375,0.49609375,0.5302734375,0.5556640625,0.568359375,0.546875,0.482421875,0.39453125,0.3134765625,0.2587890625,0.22265625,0.232421875,0.3115234375,0.447265625,0.5927734375,0.697265625,0.740234375,0.75390625,0.716796875,0.6240234375,0.5048828125,0.4052734375,0.3583984375,0.3642578125,0.392578125,0.4541015625,0.5380859375,0.61328125,0.654296875,0.6572265625,0.634765625,0.6103515625,0.59375,0.5849609375,0.580078125,0.5712890625,0.5546875,0.5302734375,0.490234375,0.4091796875,0.3134765625,0.2509765625,0.2470703125,0.294921875,0.3642578125,0.4404296875,0.5234375,0.587890625,0.609375,0.58984375,0.5546875,0.5302734375,0.5078125,0.4755859375,0.4443359375,0.427734375,0.431640625,0.44921875,0.46875,0.484375,0.4892578125,0.5,0.533203125,0.5927734375,0.6669921875,0.740234375,0.8037109375,0.828125,0.7978515625,0.728515625,0.6572265625,0.6220703125,0.634765625,0.658203125,0.658203125,0.61328125,0.521484375,0.4091796875,0.3154296875,0.2587890625,0.2138671875,0.177734375,0.1728515625,0.208984375,0.271484375,0.330078125,0.3642578125,0.392578125,0.4287109375,0.474609375,0.5244140625,0.5703125,0.6064453125,0.634765625,0.6494140625,0.6123046875,0.5185546875,0.400390625,0.2998046875,0.2529296875,0.2587890625,0.2763671875,0.2890625,0.3056640625,0.333984375,0.375,0.4228515625,0.46875,0.501953125,0.4833984375,0.4111328125,0.3173828125,0.2451171875,0.2255859375,0.2587890625,0.3212890625,0.4375,0.5771484375,0.6796875,0.708984375,0.6728515625,0.6044921875,0.5419921875,0.5185546875,0.53515625,0.568359375,0.5849609375,0.5615234375,0.5,0.4208984375,0.3291015625,0.2587890625,0.2421875,0.2802734375,0.3427734375,0.39453125,0.4306640625,0.4306640625,0.40234375,0.373046875,0.369140625,0.404296875,0.46875,0.53125,0.5478515625,0.5107421875,0.44140625,0.3798828125,0.3623046875,0.39453125,0.4326171875,0.4384765625,0.40234375,0.33984375,0.279296875,0.25,0.2587890625,0.2724609375,0.26953125,0.2666015625,0.2841796875,0.330078125,0.3974609375,0.46875,0.5341796875,0.5673828125,0.560546875,0.52734375,0.4951171875,0.494140625,0.5302734375,0.5810546875,0.6513671875,0.720703125,0.7646484375,0.7744140625,0.759765625,0.740234375,0.7041015625,0.60546875,0.4609375,0.322265625,0.2373046875,0.2236328125,0.2587890625,0.31640625,0.419921875,0.5498046875,0.6650390625,0.7353515625,0.75390625,0.740234375,0.70703125,0.619140625,0.48828125,0.3583984375,0.26953125,0.2421875,0.2587890625,0.2900390625,0.33984375,0.408203125,0.48046875,0.541015625,0.58203125,0.6044921875,0.626953125,0.66015625,0.6904296875,0.701171875,0.689453125,0.662109375,0.634765625,0.611328125,0.60546875,0.6240234375,0.6630859375,0.7060546875,0.734375,0.740234375,0.728515625,0.6708984375,0.5634765625,0.435546875,0.328125,0.2705078125,0.2587890625,0.2734375,0.341796875,0.4521484375,0.5634765625,0.6318359375,0.640625,0.6044921875,0.55859375,0.5166015625,0.4912109375,0.4912109375,0.5078125,0.525390625,0.5302734375,0.53515625,0.560546875,0.607421875,0.6630859375,0.7099609375,0.7353515625,0.740234375,0.7255859375,0.6572265625,0.546875,0.744140625,0.7021484375,0.6142578125,0.5185546875,0.4482421875,0.3857421875,0.3251953125,0.287109375,0.2802734375,0.298828125,0.3203125,0.3251953125,0.3349609375,0.3837890625,0.46875,0.5654296875,0.640625,0.67578125,0.673828125,0.6669921875,0.6669921875,0.6611328125,0.6318359375,0.5771484375,0.51171875,0.4482421875,0.396484375,0.384765625,0.4150390625,0.4619140625,0.4921875,0.48046875,0.4287109375,0.3779296875,0.369140625,0.4033203125,0.455078125,0.4892578125,0.48046875,0.4287109375,0.37890625,0.3759765625,0.41796875,0.474609375,0.5068359375,0.490234375,0.4287109375,0.3544921875,0.2900390625,0.2783203125,0.3427734375,0.4638671875,0.587890625,0.673828125,0.744140625,0.802734375,0.82421875,0.7978515625,0.7431640625,0.693359375,0.673828125,0.6630859375,0.6552734375,0.6533203125,0.658203125,0.666015625,0.671875,0.673828125,0.677734375,0.6923828125,0.703125,0.6923828125,0.6552734375,0.603515625,0.55078125,0.490234375,0.40234375,0.31640625,0.2705078125,0.279296875,0.3251953125,0.376953125,0.4306640625,0.4921875,0.5478515625,0.5869140625,0.60546875,0.61328125,0.6220703125,0.6396484375,0.6806640625,0.720703125,0.7275390625,0.69140625,0.6240234375,0.55078125,0.484375,0.4404296875,0.4228515625,0.4189453125,0.4111328125,0.380859375,0.3251953125,0.27734375,0.2802734375,0.333984375,0.404296875,0.4482421875,0.4375,0.376953125,0.3076171875,0.26171875,0.2763671875,0.36328125,0.4921875,0.607421875,0.673828125,0.7236328125,0.75390625,0.7353515625,0.6572265625,0.5439453125,0.4404296875,0.376953125,0.3447265625,0.384765625,0.4951171875,0.625,0.7158203125,0.7294921875,0.673828125,0.58984375,0.4716796875,0.3583984375,0.2978515625,0.30859375,0.365234375,0.4287109375,0.4794921875,0.484375,0.4462890625,0.3955078125,0.3671875,0.3857421875,0.4482421875,0.5244140625,0.6044921875,0.6513671875,0.6376953125,0.5703125,0.4892578125,0.4287109375,0.376953125,0.3271484375,0.294921875,0.2890625,0.3037109375,0.3212890625,0.3251953125,0.33984375,0.40234375,0.4951171875,0.5712890625,0.5966796875,0.5654296875,0.5,0.4326171875,0.39453125,0.4052734375,0.458984375,0.525390625,0.568359375,0.5703125,0.5595703125,0.552734375,0.55078125,0.5546875,0.5625,0.568359375,0.5703125,0.5751953125,0.5966796875,0.619140625,0.6220703125,0.5966796875,0.55078125,0.5,0.4384765625,0.3505859375,0.2724609375,0.2451171875,0.2802734375,0.353515625,0.4287109375,0.48828125,0.4921875,0.4365234375,0.3525390625,0.2880859375,0.2783203125,0.3251953125,0.39453125,0.48828125,0.5849609375,0.6552734375,0.6845703125,0.68359375,0.673828125,0.6494140625,0.576171875,0.4697265625,0.375,0.326171875,0.3330078125,0.376953125,0.431640625,0.4921875,0.544921875,0.57421875,0.5791015625,0.572265625,0.5703125,0.5625,0.5302734375,0.48828125,0.4619140625,0.466796875,0.501953125,0.55078125,0.6064453125,0.6640625,0.6884765625,0.6513671875,0.5615234375,0.4580078125,0.376953125,0.3115234375,0.283203125,0.31640625,0.4072265625,0.5166015625,0.595703125,0.6220703125,0.6328125,0.646484375,0.66015625,0.669921875,0.673828125,0.673828125,0.673828125,0.6806640625,0.70703125,0.7333984375,0.7314453125,0.69140625,0.6240234375,0.55078125,0.48046875,0.423828125,0.4072265625,0.4384765625,0.498046875,0.5498046875,0.5703125,0.5830078125,0.5966796875,0.58984375,0.546875,0.47265625,0.392578125,0.3251953125,0.2724609375,0.263671875,0.322265625,0.435546875,0.5615234375,0.646484375,0.673828125,0.669921875,0.611328125,0.509765625,0.4052734375,0.3408203125,0.3359375,0.376953125,0.43359375,0.5068359375,0.5791015625,0.6259765625,0.640625,0.6328125,0.6220703125,0.6123046875,0.6044921875,0.5986328125,0.59375,0.587890625,0.580078125,0.5703125,0.5458984375,0.47265625,0.3740234375,0.2978515625,0.275390625,0.310546875,0.376953125,0.458984375,0.564453125,0.658203125,0.7001953125,0.6806640625,0.625,0.5703125,0.509765625,0.42578125,0.34765625,0.3095703125,0.326171875,0.3759765625,0.4287109375,0.474609375,0.5,0.509765625,0.5224609375,0.552734375,0.60546875,0.673828125,0.740234375,0.7802734375,0.7744140625,0.7265625,0.6630859375,0.623046875,0.6220703125,0.6337890625,0.640625,0.6220703125,0.5654296875,0.48046875,0.3935546875,0.3251953125,0.265625,0.220703125,0.2138671875,0.2490234375,0.3076171875,0.357421875,0.376953125,0.3916015625,0.4228515625,0.4716796875,0.52734375,0.576171875,0.607421875,0.6220703125,0.6181640625,0.5595703125,0.4580078125,0.353515625,0.2890625,0.2841796875,0.3251953125,0.369140625,0.3828125,0.3701171875,0.349609375,0.3466796875,0.3740234375,0.4287109375,0.4775390625,0.474609375,0.4169921875,0.337890625,0.2802734375,0.27734375,0.3251953125,0.400390625,0.5146484375,0.6298828125,0.693359375,0.6845703125,0.6240234375,0.55078125,0.490234375,0.4736328125,0.501953125,0.548828125,0.5771484375,0.560546875,0.5,0.419921875,0.3251953125,0.2548828125,0.24609375,0.298828125,0.37890625,0.4482421875,0.4970703125,0.498046875,0.451171875,0.390625,0.353515625,0.3681640625,0.4287109375,0.490234375,0.509765625,0.4814453125,0.4296875,0.392578125,0.3974609375,0.4482421875,0.498046875,0.498046875,0.4443359375,0.3642578125,0.30078125,0.287109375,0.3251953125,0.3671875,0.3759765625,0.3544921875,0.330078125,0.328125,0.3642578125,0.4287109375,0.4931640625,0.52734375,0.5263671875,0.5078125,0.4970703125,0.5166015625,0.5703125,0.6396484375,0.7265625,0.798828125,0.8212890625,0.7890625,0.7294921875,0.673828125,0.607421875,0.4921875,0.359375,0.2626953125,0.234375,0.2666015625,0.3251953125,0.400390625,0.517578125,0.64453125,0.7314453125,0.75390625,0.7236328125,0.673828125,0.6142578125,0.5283203125,0.43359375,0.359375,0.3212890625,0.31640625,0.3251953125,0.333984375,0.3388671875,0.353515625,0.38671875,0.439453125,0.498046875,0.55078125,0.603515625,0.6552734375,0.6884765625,0.6904296875,0.666015625,0.6376953125,0.6220703125,0.61328125,0.611328125,0.62109375,0.638671875,0.658203125,0.6708984375,0.673828125,0.6650390625,0.623046875,0.5458984375,0.453125,0.3759765625,0.333984375,0.3251953125,0.33984375,0.40234375,0.498046875,0.583984375,0.623046875,0.60546875,0.55078125,0.4921875,0.44921875,0.4423828125,0.4736328125,0.5234375,0.5615234375,0.5703125,0.572265625,0.5849609375,0.6083984375,0.6357421875,0.658203125,0.6708984375,0.673828125,0.6591796875,0.5966796875,0.5009765625,0.771484375,0.7509765625,0.669921875,0.5693359375,0.4892578125,0.419921875,0.3603515625,0.33203125,0.3427734375,0.37890625,0.412109375,0.419921875,0.423828125,0.4443359375,0.48046875,0.5234375,0.55859375,0.5771484375,0.5791015625,0.5849609375,0.6142578125,0.6455078125,0.65234375,0.62109375,0.5595703125,0.4892578125,0.4296875,0.4130859375,0.44140625,0.4873046875,0.515625,0.4990234375,0.439453125,0.380859375,0.37109375,0.41015625,0.4697265625,0.5087890625,0.498046875,0.439453125,0.3818359375,0.3720703125,0.412109375,0.47265625,0.51171875,0.5,0.439453125,0.36328125,0.2861328125,0.25,0.287109375,0.384765625,0.49609375,0.5791015625,0.6494140625,0.7021484375,0.716796875,0.6875,0.6337890625,0.5908203125,0.5791015625,0.5771484375,0.576171875,0.576171875,0.5771484375,0.578125,0.5791015625,0.5791015625,0.5869140625,0.6181640625,0.6533203125,0.6640625,0.6357421875,0.5771484375,0.509765625,0.431640625,0.33203125,0.2509765625,0.2294921875,0.275390625,0.35546875,0.4296875,0.4990234375,0.5654296875,0.607421875,0.615234375,0.595703125,0.57421875,0.5693359375,0.5791015625,0.615234375,0.6552734375,0.6689453125,0.6416015625,0.5810546875,0.509765625,0.447265625,0.4248046875,0.443359375,0.4794921875,0.5,0.48046875,0.419921875,0.3623046875,0.353515625,0.396484375,0.458984375,0.5,0.4892578125,0.4296875,0.353515625,0.2802734375,0.2490234375,0.2900390625,0.3896484375,0.4990234375,0.5791015625,0.6513671875,0.7236328125,0.75390625,0.7138671875,0.6171875,0.5087890625,0.4296875,0.376953125,0.38671875,0.4609375,0.5595703125,0.630859375,0.6357421875,0.5791015625,0.49609375,0.38671875,0.2900390625,0.25390625,0.2890625,0.365234375,0.439453125,0.4990234375,0.5146484375,0.4853515625,0.4384765625,0.41015625,0.4287109375,0.4892578125,0.5673828125,0.6533203125,0.70703125,0.6923828125,0.615234375,0.517578125,0.439453125,0.373046875,0.3203125,0.3037109375,0.3271484375,0.373046875,0.4111328125,0.419921875,0.431640625,0.4833984375,0.5546875,0.60546875,0.6103515625,0.5673828125,0.5,0.431640625,0.38671875,0.388671875,0.435546875,0.501953125,0.5498046875,0.5595703125,0.5576171875,0.556640625,0.556640625,0.556640625,0.55859375,0.55859375,0.5595703125,0.5673828125,0.599609375,0.6376953125,0.650390625,0.625,0.5673828125,0.5,0.421875,0.322265625,0.2431640625,0.2255859375,0.27734375,0.3623046875,0.439453125,0.4990234375,0.5087890625,0.46484375,0.400390625,0.35546875,0.3623046875,0.419921875,0.4921875,0.5634765625,0.61328125,0.6259765625,0.609375,0.5869140625,0.5791015625,0.564453125,0.505859375,0.4208984375,0.353515625,0.333984375,0.3662109375,0.4296875,0.4990234375,0.5654296875,0.6064453125,0.6123046875,0.58984375,0.5654296875,0.5595703125,0.548828125,0.5029296875,0.4404296875,0.3984375,0.400390625,0.4443359375,0.509765625,0.583984375,0.666015625,0.71484375,0.6943359375,0.6123046875,0.5107421875,0.4296875,0.36328125,0.326171875,0.3427734375,0.41015625,0.494140625,0.5546875,0.5693359375,0.5712890625,0.5732421875,0.576171875,0.578125,0.5791015625,0.5791015625,0.5791015625,0.587890625,0.62109375,0.6591796875,0.6708984375,0.6416015625,0.5810546875,0.509765625,0.4404296875,0.3935546875,0.3896484375,0.4326171875,0.498046875,0.546875,0.5595703125,0.5673828125,0.5927734375,0.6142578125,0.60546875,0.560546875,0.4912109375,0.419921875,0.35546875,0.322265625,0.34375,0.4150390625,0.5029296875,0.564453125,0.5791015625,0.568359375,0.5107421875,0.4267578125,0.3583984375,0.3359375,0.3671875,0.4296875,0.5,0.5673828125,0.6123046875,0.62109375,0.6015625,0.5771484375,0.5693359375,0.5673828125,0.56640625,0.564453125,0.5634765625,0.5625,0.560546875,0.5595703125,0.544921875,0.486328125,0.4033203125,0.33984375,0.3251953125,0.3623046875,0.4296875,0.51171875,0.6201171875,0.712890625,0.74609375,0.708984375,0.6328125,0.5595703125,0.48046875,0.3759765625,0.2861328125,0.25390625,0.291015625,0.3662109375,0.439453125,0.4990234375,0.5244140625,0.5146484375,0.4931640625,0.486328125,0.515625,0.5791015625,0.6484375,0.69921875,0.708984375,0.6748046875,0.619140625,0.578125,0.5693359375,0.5771484375,0.6005859375,0.6201171875,0.609375,0.5615234375,0.4912109375,0.419921875,0.3515625,0.30078125,0.2890625,0.3203125,0.375,0.41796875,0.4296875,0.4345703125,0.451171875,0.4814453125,0.517578125,0.5478515625,0.564453125,0.5693359375,0.5576171875,0.5009765625,0.4169921875,0.34765625,0.326171875,0.357421875,0.419921875,0.4765625,0.48828125,0.453125,0.400390625,0.3671875,0.380859375,0.439453125,0.498046875,0.505859375,0.4619140625,0.3974609375,0.353515625,0.3623046875,0.419921875,0.5,0.603515625,0.6904296875,0.71484375,0.6689453125,0.5869140625,0.509765625,0.44921875,0.4375,0.4755859375,0.533203125,0.5712890625,0.5595703125,0.5,0.419921875,0.3251953125,0.2578125,0.255859375,0.3203125,0.412109375,0.4892578125,0.546875,0.5498046875,0.498046875,0.4248046875,0.375,0.380859375,0.439453125,0.5009765625,0.5185546875,0.4912109375,0.4443359375,0.4150390625,0.4306640625,0.4892578125,0.546875,0.5498046875,0.49609375,0.4189453125,0.3642578125,0.3642578125,0.419921875,0.4765625,0.4873046875,0.451171875,0.3974609375,0.3642578125,0.37890625,0.439453125,0.5029296875,0.5283203125,0.5166015625,0.48828125,0.474609375,0.498046875,0.5595703125,0.6376953125,0.73046875,0.798828125,0.8037109375,0.7431640625,0.6552734375,0.5791015625,0.4990234375,0.3896484375,0.2890625,0.24609375,0.2744140625,0.345703125,0.419921875,0.5009765625,0.611328125,0.7109375,0.751953125,0.7236328125,0.6513671875,0.5791015625,0.5087890625,0.4384765625,0.388671875,0.375,0.390625,0.412109375,0.419921875,0.4140625,0.38671875,0.35546875,0.349609375,0.380859375,0.44140625,0.509765625,0.5771484375,0.6357421875,0.6630859375,0.650390625,0.6123046875,0.5791015625,0.5693359375,0.568359375,0.568359375,0.5693359375,0.5732421875,0.576171875,0.5791015625,0.5791015625,0.5751953125,0.556640625,0.5205078125,0.478515625,0.4423828125,0.423828125,0.419921875,0.431640625,0.4833984375,0.5556640625,0.6083984375,0.6162109375,0.5751953125,0.509765625,0.4423828125,0.3974609375,0.3955078125,0.4384765625,0.501953125,0.548828125,0.5595703125,0.5595703125,0.5625,0.56640625,0.572265625,0.576171875,0.5791015625,0.5791015625,0.5673828125,0.515625,0.443359375,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.6923828125,0.7080078125,0.654296875,0.568359375,0.4892578125,0.421875,0.37890625,0.384765625,0.4375,0.51171875,0.5654296875,0.5791015625,0.5771484375,0.55859375,0.5234375,0.48046875,0.4443359375,0.423828125,0.419921875,0.4306640625,0.4794921875,0.5458984375,0.5927734375,0.595703125,0.5546875,0.4892578125,0.4345703125,0.43359375,0.490234375,0.5693359375,0.625,0.6240234375,0.5693359375,0.5126953125,0.501953125,0.5390625,0.5947265625,0.630859375,0.6181640625,0.5595703125,0.501953125,0.494140625,0.5390625,0.6044921875,0.6484375,0.638671875,0.5791015625,0.49609375,0.3837890625,0.2822265625,0.2412109375,0.271484375,0.345703125,0.419921875,0.48828125,0.541015625,0.556640625,0.5322265625,0.484375,0.447265625,0.439453125,0.4404296875,0.4384765625,0.4326171875,0.4267578125,0.4208984375,0.4189453125,0.419921875,0.4326171875,0.4833984375,0.55078125,0.5986328125,0.599609375,0.556640625,0.4892578125,0.4130859375,0.3291015625,0.27734375,0.2958984375,0.376953125,0.478515625,0.5595703125,0.6259765625,0.66015625,0.640625,0.5732421875,0.4892578125,0.431640625,0.419921875,0.4326171875,0.484375,0.5537109375,0.6015625,0.6025390625,0.5576171875,0.4892578125,0.431640625,0.4306640625,0.48828125,0.5703125,0.6279296875,0.626953125,0.5693359375,0.5087890625,0.49609375,0.533203125,0.58984375,0.6279296875,0.6181640625,0.5595703125,0.478515625,0.369140625,0.2734375,0.236328125,0.2705078125,0.3447265625,0.419921875,0.5009765625,0.6123046875,0.7119140625,0.751953125,0.720703125,0.6455078125,0.5693359375,0.505859375,0.478515625,0.4873046875,0.51171875,0.5205078125,0.4931640625,0.4296875,0.353515625,0.27734375,0.2421875,0.27734375,0.3720703125,0.4794921875,0.5595703125,0.6142578125,0.6162109375,0.5625,0.486328125,0.4326171875,0.4345703125,0.4892578125,0.568359375,0.669921875,0.75390625,0.7783203125,0.7353515625,0.6552734375,0.5791015625,0.5107421875,0.4599609375,0.447265625,0.4765625,0.5283203125,0.5693359375,0.5791015625,0.5869140625,0.619140625,0.6552734375,0.6640625,0.6328125,0.5712890625,0.5,0.4287109375,0.369140625,0.341796875,0.3564453125,0.396484375,0.4306640625,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.451171875,0.5,0.56640625,0.61328125,0.61328125,0.568359375,0.5,0.4208984375,0.333984375,0.28125,0.296875,0.376953125,0.478515625,0.5595703125,0.6201171875,0.6337890625,0.5986328125,0.5419921875,0.5029296875,0.5126953125,0.5693359375,0.6328125,0.666015625,0.6484375,0.583984375,0.5048828125,0.4501953125,0.439453125,0.4345703125,0.4091796875,0.3857421875,0.388671875,0.4296875,0.4970703125,0.5693359375,0.6357421875,0.669921875,0.6494140625,0.580078125,0.4931640625,0.43359375,0.419921875,0.412109375,0.3818359375,0.3486328125,0.3408203125,0.37109375,0.4306640625,0.5,0.5771484375,0.677734375,0.7607421875,0.7822265625,0.736328125,0.6552734375,0.5791015625,0.5078125,0.439453125,0.39453125,0.384765625,0.4033203125,0.4248046875,0.4296875,0.4287109375,0.427734375,0.4287109375,0.4306640625,0.431640625,0.4306640625,0.4296875,0.439453125,0.4873046875,0.5537109375,0.6005859375,0.6015625,0.5576171875,0.4892578125,0.4189453125,0.3603515625,0.3349609375,0.349609375,0.3896484375,0.4228515625,0.4296875,0.44140625,0.498046875,0.58203125,0.6513671875,0.6728515625,0.6416015625,0.5791015625,0.5087890625,0.439453125,0.3916015625,0.3779296875,0.3935546875,0.4140625,0.419921875,0.4140625,0.392578125,0.3759765625,0.388671875,0.4365234375,0.5078125,0.5791015625,0.6435546875,0.6767578125,0.6552734375,0.583984375,0.49609375,0.4345703125,0.419921875,0.4189453125,0.4208984375,0.4267578125,0.4326171875,0.4384765625,0.4404296875,0.439453125,0.431640625,0.40625,0.3837890625,0.3896484375,0.4326171875,0.5,0.5693359375,0.6416015625,0.71484375,0.74609375,0.70703125,0.6103515625,0.5009765625,0.419921875,0.345703125,0.271484375,0.2412109375,0.2822265625,0.3837890625,0.49609375,0.5791015625,0.63671875,0.6318359375,0.5634765625,0.466796875,0.3955078125,0.38671875,0.439453125,0.505859375,0.556640625,0.5693359375,0.5400390625,0.4892578125,0.44921875,0.439453125,0.453125,0.5107421875,0.59375,0.66015625,0.6787109375,0.64453125,0.5791015625,0.5107421875,0.4599609375,0.4453125,0.4736328125,0.5234375,0.5615234375,0.5693359375,0.564453125,0.544921875,0.5126953125,0.4755859375,0.4462890625,0.4306640625,0.4296875,0.4248046875,0.400390625,0.3779296875,0.3818359375,0.4228515625,0.48828125,0.5595703125,0.6171875,0.626953125,0.5869140625,0.5263671875,0.4873046875,0.4990234375,0.5595703125,0.619140625,0.6298828125,0.58984375,0.529296875,0.4892578125,0.5,0.5595703125,0.6376953125,0.724609375,0.779296875,0.765625,0.6875,0.5888671875,0.509765625,0.451171875,0.439453125,0.4775390625,0.5361328125,0.5751953125,0.56640625,0.509765625,0.43359375,0.3427734375,0.27734375,0.27734375,0.3408203125,0.431640625,0.509765625,0.5693359375,0.5888671875,0.564453125,0.5244140625,0.5,0.51953125,0.5791015625,0.6357421875,0.6376953125,0.5830078125,0.505859375,0.451171875,0.453125,0.509765625,0.5693359375,0.5859375,0.5576171875,0.51171875,0.4833984375,0.5,0.5595703125,0.6181640625,0.630859375,0.5966796875,0.5419921875,0.5078125,0.5205078125,0.5791015625,0.6337890625,0.625,0.5517578125,0.4521484375,0.3798828125,0.373046875,0.4296875,0.5087890625,0.599609375,0.662109375,0.6572265625,0.58984375,0.49609375,0.419921875,0.34765625,0.275390625,0.2470703125,0.2880859375,0.3876953125,0.498046875,0.5791015625,0.654296875,0.728515625,0.7626953125,0.7255859375,0.6298828125,0.5205078125,0.439453125,0.375,0.341796875,0.361328125,0.4287109375,0.51171875,0.568359375,0.5791015625,0.56640625,0.515625,0.4482421875,0.400390625,0.3994140625,0.4423828125,0.509765625,0.576171875,0.619140625,0.6162109375,0.568359375,0.5,0.451171875,0.439453125,0.4404296875,0.4404296875,0.4423828125,0.4423828125,0.4423828125,0.44140625,0.439453125,0.44140625,0.45703125,0.48828125,0.525390625,0.5576171875,0.576171875,0.5791015625,0.5869140625,0.6171875,0.650390625,0.658203125,0.6279296875,0.568359375,0.5,0.431640625,0.373046875,0.345703125,0.3583984375,0.396484375,0.4296875,0.439453125,0.44140625,0.44140625,0.4404296875,0.439453125,0.4384765625,0.4384765625,0.439453125,0.4326171875,0.3994140625,0.359375,0.6435546875,0.662109375,0.611328125,0.5263671875,0.4482421875,0.3818359375,0.3505859375,0.3798828125,0.4658203125,0.5712890625,0.6484375,0.673828125,0.67578125,0.640625,0.5654296875,0.46875,0.3837890625,0.3349609375,0.3251953125,0.3359375,0.3798828125,0.4453125,0.4990234375,0.5166015625,0.494140625,0.4482421875,0.4091796875,0.4228515625,0.490234375,0.5791015625,0.646484375,0.66015625,0.6220703125,0.5791015625,0.5712890625,0.5966796875,0.6298828125,0.6455078125,0.6240234375,0.5703125,0.5224609375,0.5322265625,0.59765625,0.6806640625,0.736328125,0.732421875,0.673828125,0.5869140625,0.45703125,0.3203125,0.232421875,0.2197265625,0.263671875,0.3251953125,0.38671875,0.4375,0.4638671875,0.4609375,0.4404296875,0.4248046875,0.4287109375,0.435546875,0.423828125,0.3955078125,0.359375,0.330078125,0.3193359375,0.3251953125,0.3466796875,0.4052734375,0.48046875,0.5341796875,0.5419921875,0.505859375,0.4482421875,0.380859375,0.3095703125,0.271484375,0.2998046875,0.3857421875,0.4892578125,0.5703125,0.6328125,0.6494140625,0.6005859375,0.5009765625,0.39453125,0.3310546875,0.3251953125,0.3486328125,0.4130859375,0.4951171875,0.5537109375,0.5595703125,0.5166015625,0.4482421875,0.3916015625,0.40234375,0.4814453125,0.587890625,0.6669921875,0.677734375,0.6220703125,0.5595703125,0.5361328125,0.5576171875,0.599609375,0.6298828125,0.62109375,0.5703125,0.49609375,0.3857421875,0.2744140625,0.2099609375,0.2119140625,0.2626953125,0.3251953125,0.40234375,0.5244140625,0.6552734375,0.73828125,0.7451171875,0.693359375,0.6220703125,0.556640625,0.515625,0.5009765625,0.498046875,0.4833984375,0.4423828125,0.376953125,0.3046875,0.24609375,0.23828125,0.2978515625,0.4033203125,0.505859375,0.5703125,0.609375,0.6025390625,0.546875,0.4716796875,0.4150390625,0.408203125,0.4482421875,0.5107421875,0.611328125,0.716796875,0.78125,0.7822265625,0.7353515625,0.673828125,0.61328125,0.5693359375,0.5576171875,0.5830078125,0.62890625,0.6650390625,0.673828125,0.6796875,0.7001953125,0.71484375,0.69921875,0.646484375,0.5732421875,0.5,0.427734375,0.3671875,0.337890625,0.349609375,0.3876953125,0.4208984375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4404296875,0.4912109375,0.5595703125,0.609375,0.611328125,0.5673828125,0.5,0.421875,0.3359375,0.28515625,0.3037109375,0.3857421875,0.48828125,0.5703125,0.6337890625,0.6630859375,0.6494140625,0.611328125,0.5791015625,0.5810546875,0.6220703125,0.6650390625,0.6728515625,0.6318359375,0.5546875,0.4755859375,0.4306640625,0.4287109375,0.43359375,0.4228515625,0.4140625,0.4306640625,0.4794921875,0.548828125,0.6220703125,0.6845703125,0.701171875,0.6484375,0.5400390625,0.419921875,0.3427734375,0.3251953125,0.322265625,0.314453125,0.314453125,0.3388671875,0.3876953125,0.4462890625,0.5,0.5615234375,0.6552734375,0.75,0.7998046875,0.7890625,0.736328125,0.673828125,0.6083984375,0.533203125,0.4638671875,0.416015625,0.3935546875,0.3857421875,0.376953125,0.369140625,0.3671875,0.373046875,0.3818359375,0.3876953125,0.3857421875,0.376953125,0.37890625,0.421875,0.4892578125,0.5419921875,0.552734375,0.5146484375,0.4482421875,0.3779296875,0.3232421875,0.3017578125,0.3173828125,0.353515625,0.37890625,0.376953125,0.380859375,0.439453125,0.541015625,0.6455078125,0.7099609375,0.71484375,0.673828125,0.615234375,0.5361328125,0.44921875,0.37890625,0.3388671875,0.326171875,0.3251953125,0.3251953125,0.33203125,0.36328125,0.4296875,0.5185546875,0.60546875,0.673828125,0.7265625,0.7353515625,0.6767578125,0.5634765625,0.4375,0.3525390625,0.3251953125,0.3193359375,0.330078125,0.359375,0.3955078125,0.423828125,0.435546875,0.4287109375,0.416015625,0.40234375,0.4052734375,0.439453125,0.5,0.56640625,0.6220703125,0.6728515625,0.7099609375,0.69921875,0.625,0.509765625,0.3994140625,0.3251953125,0.263671875,0.2197265625,0.232421875,0.3203125,0.45703125,0.5869140625,0.673828125,0.73046875,0.7236328125,0.64453125,0.52734375,0.4296875,0.3955078125,0.4287109375,0.478515625,0.515625,0.525390625,0.50390625,0.4658203125,0.4365234375,0.4287109375,0.443359375,0.5087890625,0.6083984375,0.69921875,0.7421875,0.7275390625,0.673828125,0.6142578125,0.5693359375,0.5537109375,0.5703125,0.6025390625,0.6240234375,0.6220703125,0.6044921875,0.5615234375,0.4970703125,0.4326171875,0.3876953125,0.37109375,0.376953125,0.3837890625,0.37890625,0.3779296875,0.3984375,0.4453125,0.5068359375,0.5703125,0.6201171875,0.623046875,0.5810546875,0.5244140625,0.4921875,0.5087890625,0.5703125,0.6298828125,0.640625,0.6005859375,0.5400390625,0.5,0.509765625,0.5703125,0.6474609375,0.7333984375,0.7880859375,0.779296875,0.7099609375,0.62109375,0.55078125,0.4990234375,0.4833984375,0.509765625,0.5576171875,0.59375,0.591796875,0.55078125,0.4931640625,0.419921875,0.365234375,0.3603515625,0.41015625,0.484375,0.55078125,0.60546875,0.62890625,0.6220703125,0.6025390625,0.595703125,0.619140625,0.673828125,0.7216796875,0.7158203125,0.654296875,0.5703125,0.5087890625,0.5029296875,0.55078125,0.6025390625,0.6142578125,0.583984375,0.537109375,0.5068359375,0.5185546875,0.5703125,0.6240234375,0.6455078125,0.6337890625,0.609375,0.59765625,0.6201171875,0.673828125,0.7158203125,0.68359375,0.5751953125,0.4404296875,0.341796875,0.3232421875,0.376953125,0.453125,0.5283203125,0.568359375,0.5458984375,0.4716796875,0.38671875,0.3251953125,0.275390625,0.2451171875,0.267578125,0.3544921875,0.4814453125,0.5986328125,0.673828125,0.736328125,0.787109375,0.7890625,0.724609375,0.61328125,0.5029296875,0.4287109375,0.3759765625,0.3671875,0.41796875,0.5126953125,0.611328125,0.6689453125,0.673828125,0.65234375,0.59375,0.5185546875,0.46484375,0.45703125,0.4931640625,0.55078125,0.6083984375,0.6376953125,0.6220703125,0.5634765625,0.4912109375,0.4404296875,0.4287109375,0.4306640625,0.4365234375,0.4443359375,0.4482421875,0.4462890625,0.439453125,0.4287109375,0.4248046875,0.4462890625,0.4990234375,0.568359375,0.630859375,0.666015625,0.673828125,0.6767578125,0.6845703125,0.6845703125,0.66015625,0.611328125,0.552734375,0.5,0.447265625,0.39453125,0.3623046875,0.3603515625,0.384765625,0.4130859375,0.4287109375,0.4375,0.439453125,0.43359375,0.4248046875,0.4189453125,0.419921875,0.4287109375,0.4306640625,0.4052734375,0.369140625,0.6162109375,0.6240234375,0.5634765625,0.4736328125,0.39453125,0.3291015625,0.3037109375,0.34765625,0.4580078125,0.59375,0.6962890625,0.740234375,0.7548828125,0.7158203125,0.61328125,0.474609375,0.34765625,0.2734375,0.2587890625,0.2646484375,0.2919921875,0.3369140625,0.3798828125,0.4072265625,0.41015625,0.39453125,0.3837890625,0.41015625,0.474609375,0.5546875,0.619140625,0.6455078125,0.634765625,0.6201171875,0.6201171875,0.626953125,0.6259765625,0.6083984375,0.57421875,0.5302734375,0.5009765625,0.53515625,0.626953125,0.7314453125,0.798828125,0.798828125,0.740234375,0.65234375,0.515625,0.361328125,0.2451171875,0.19921875,0.2158203125,0.2587890625,0.3046875,0.34765625,0.3828125,0.408203125,0.4267578125,0.4453125,0.46875,0.486328125,0.46484375,0.4033203125,0.3251953125,0.263671875,0.2421875,0.2587890625,0.2939453125,0.3564453125,0.4248046875,0.46875,0.470703125,0.439453125,0.39453125,0.34375,0.28515625,0.25390625,0.2783203125,0.35546875,0.4501953125,0.5302734375,0.58984375,0.59375,0.52734375,0.4140625,0.3046875,0.25,0.2587890625,0.2978515625,0.375,0.4638671875,0.5185546875,0.515625,0.46484375,0.39453125,0.33984375,0.3583984375,0.4521484375,0.5771484375,0.6708984375,0.689453125,0.634765625,0.5693359375,0.5302734375,0.52734375,0.548828125,0.5703125,0.56640625,0.5302734375,0.4736328125,0.380859375,0.2783203125,0.20703125,0.1884765625,0.21484375,0.2587890625,0.3212890625,0.4423828125,0.587890625,0.6982421875,0.7353515625,0.7021484375,0.634765625,0.5693359375,0.525390625,0.5048828125,0.494140625,0.4736328125,0.4296875,0.3642578125,0.2958984375,0.251953125,0.26171875,0.328125,0.421875,0.498046875,0.5302734375,0.54296875,0.529296875,0.48828125,0.4365234375,0.3955078125,0.3818359375,0.39453125,0.4267578125,0.509765625,0.6240234375,0.7265625,0.78125,0.7783203125,0.740234375,0.6962890625,0.6630859375,0.654296875,0.673828125,0.70703125,0.7333984375,0.740234375,0.744140625,0.7568359375,0.7568359375,0.7236328125,0.65625,0.5751953125,0.5,0.4287109375,0.373046875,0.3525390625,0.375,0.421875,0.4599609375,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.4794921875,0.525390625,0.5849609375,0.6240234375,0.6171875,0.568359375,0.5,0.4208984375,0.330078125,0.2705078125,0.2783203125,0.3515625,0.44921875,0.5302734375,0.599609375,0.6533203125,0.67578125,0.666015625,0.638671875,0.6240234375,0.634765625,0.6455078125,0.6240234375,0.5712890625,0.5078125,0.4619140625,0.4501953125,0.46875,0.48828125,0.486328125,0.474609375,0.4775390625,0.5078125,0.5654296875,0.634765625,0.6962890625,0.703125,0.6318359375,0.501953125,0.365234375,0.27734375,0.2587890625,0.26171875,0.2802734375,0.3193359375,0.375,0.4326171875,0.4755859375,0.5,0.5302734375,0.599609375,0.6904296875,0.7646484375,0.7958984375,0.78125,0.740234375,0.6904296875,0.626953125,0.5546875,0.4853515625,0.4306640625,0.392578125,0.3642578125,0.341796875,0.337890625,0.3525390625,0.375,0.3896484375,0.3857421875,0.3642578125,0.3486328125,0.375,0.4306640625,0.48046875,0.4931640625,0.4599609375,0.39453125,0.3271484375,0.287109375,0.2861328125,0.3203125,0.361328125,0.380859375,0.3642578125,0.349609375,0.38671875,0.48046875,0.5986328125,0.69921875,0.74609375,0.740234375,0.7099609375,0.6376953125,0.52734375,0.408203125,0.314453125,0.267578125,0.2587890625,0.263671875,0.2958984375,0.369140625,0.4775390625,0.5927734375,0.6845703125,0.740234375,0.7763671875,0.7666015625,0.6875,0.5517578125,0.40625,0.3017578125,0.2587890625,0.2421875,0.263671875,0.3251953125,0.4033203125,0.46484375,0.486328125,0.46875,0.4443359375,0.4345703125,0.4521484375,0.5,0.5595703125,0.609375,0.634765625,0.6513671875,0.6455078125,0.5986328125,0.5107421875,0.404296875,0.314453125,0.2587890625,0.2158203125,0.19921875,0.2451171875,0.361328125,0.515625,0.65234375,0.740234375,0.80078125,0.8095703125,0.748046875,0.6376953125,0.52734375,0.466796875,0.46875,0.4873046875,0.5009765625,0.5048828125,0.4970703125,0.482421875,0.4716796875,0.46875,0.4814453125,0.541015625,0.6357421875,0.7255859375,0.7783203125,0.7783203125,0.740234375,0.697265625,0.6669921875,0.654296875,0.6572265625,0.662109375,0.6572265625,0.634765625,0.599609375,0.5322265625,0.447265625,0.375,0.3388671875,0.3408203125,0.3642578125,0.3876953125,0.400390625,0.408203125,0.421875,0.447265625,0.4853515625,0.5302734375,0.564453125,0.5556640625,0.5107421875,0.4609375,0.4404296875,0.466796875,0.5302734375,0.58984375,0.6005859375,0.560546875,0.4990234375,0.458984375,0.4697265625,0.5302734375,0.607421875,0.6953125,0.7587890625,0.767578125,0.72265625,0.6572265625,0.6044921875,0.5634765625,0.541015625,0.546875,0.57421875,0.6044921875,0.6171875,0.6044921875,0.580078125,0.5400390625,0.501953125,0.4912109375,0.513671875,0.5576171875,0.6044921875,0.6455078125,0.6689453125,0.673828125,0.6708984375,0.67578125,0.69921875,0.740234375,0.7744140625,0.7646484375,0.708984375,0.6357421875,0.580078125,0.5703125,0.6044921875,0.640625,0.638671875,0.5966796875,0.5380859375,0.49609375,0.494140625,0.5302734375,0.572265625,0.6044921875,0.6259765625,0.6435546875,0.6650390625,0.697265625,0.740234375,0.765625,0.7109375,0.58203125,0.43359375,0.3291015625,0.3095703125,0.3642578125,0.43359375,0.484375,0.48828125,0.4384765625,0.3583984375,0.2900390625,0.2587890625,0.2451171875,0.263671875,0.333984375,0.44921875,0.5791015625,0.6826171875,0.740234375,0.7841796875,0.810546875,0.7919921875,0.720703125,0.6181640625,0.525390625,0.46875,0.4345703125,0.4501953125,0.521484375,0.6240234375,0.712890625,0.7529296875,0.740234375,0.705078125,0.642578125,0.57421875,0.5302734375,0.5283203125,0.5595703125,0.6044921875,0.6455078125,0.662109375,0.640625,0.5849609375,0.521484375,0.478515625,0.46875,0.47265625,0.48828125,0.5078125,0.5185546875,0.513671875,0.4951171875,0.46875,0.4501953125,0.4638671875,0.5185546875,0.6015625,0.681640625,0.73046875,0.740234375,0.7373046875,0.71875,0.6796875,0.6240234375,0.56640625,0.5234375,0.5,0.4765625,0.443359375,0.4140625,0.40234375,0.4150390625,0.44140625,0.46875,0.4912109375,0.4951171875,0.48046875,0.4580078125,0.443359375,0.447265625,0.46875,0.4853515625,0.466796875,0.4248046875,0.6240234375,0.6162109375,0.5419921875,0.4443359375,0.3642578125,0.296875,0.263671875,0.30078125,0.4111328125,0.556640625,0.677734375,0.740234375,0.7734375,0.748046875,0.6484375,0.501953125,0.361328125,0.2763671875,0.2587890625,0.2587890625,0.2607421875,0.26953125,0.2900390625,0.31640625,0.3427734375,0.3642578125,0.3857421875,0.41796875,0.4609375,0.5078125,0.55078125,0.5830078125,0.6044921875,0.6240234375,0.63671875,0.62890625,0.5966796875,0.5478515625,0.5009765625,0.46875,0.4599609375,0.5146484375,0.6240234375,0.7373046875,0.8037109375,0.7998046875,0.740234375,0.6552734375,0.529296875,0.388671875,0.28125,0.232421875,0.234375,0.2587890625,0.2841796875,0.310546875,0.341796875,0.3828125,0.4326171875,0.4833984375,0.5302734375,0.5615234375,0.53515625,0.44921875,0.33984375,0.25390625,0.2275390625,0.2587890625,0.3095703125,0.3701171875,0.421875,0.44140625,0.4267578125,0.3935546875,0.3642578125,0.3310546875,0.2822265625,0.248046875,0.2568359375,0.3125,0.3935546875,0.46875,0.52734375,0.5283203125,0.4609375,0.35546875,0.263671875,0.2294921875,0.2587890625,0.3154296875,0.4033203125,0.48828125,0.52734375,0.50390625,0.4375,0.3642578125,0.3095703125,0.328125,0.421875,0.546875,0.640625,0.6591796875,0.6044921875,0.53515625,0.4814453125,0.4580078125,0.4638671875,0.482421875,0.48828125,0.46875,0.4345703125,0.375,0.3037109375,0.248046875,0.2255859375,0.234375,0.2587890625,0.302734375,0.4052734375,0.541015625,0.6513671875,0.6953125,0.669921875,0.6044921875,0.5400390625,0.50390625,0.4970703125,0.501953125,0.4951171875,0.458984375,0.39453125,0.3291015625,0.296875,0.314453125,0.3720703125,0.4384765625,0.4755859375,0.46875,0.451171875,0.435546875,0.4228515625,0.4111328125,0.3974609375,0.3818359375,0.3642578125,0.3583984375,0.4052734375,0.5048828125,0.6240234375,0.716796875,0.75390625,0.740234375,0.71484375,0.6953125,0.6904296875,0.701171875,0.720703125,0.736328125,0.740234375,0.744140625,0.7568359375,0.7568359375,0.7236328125,0.65625,0.5751953125,0.5,0.4306640625,0.3818359375,0.375,0.4140625,0.4736328125,0.51953125,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5390625,0.5771484375,0.6240234375,0.646484375,0.6259765625,0.5703125,0.5,0.4189453125,0.3212890625,0.248046875,0.240234375,0.2998046875,0.3896484375,0.46875,0.544921875,0.625,0.6826171875,0.6953125,0.6689453125,0.6298828125,0.6044921875,0.578125,0.529296875,0.474609375,0.4443359375,0.4501953125,0.484375,0.5302734375,0.5654296875,0.56640625,0.5380859375,0.5078125,0.50390625,0.5390625,0.6044921875,0.666015625,0.6767578125,0.61328125,0.4912109375,0.3603515625,0.27734375,0.2587890625,0.267578125,0.3076171875,0.375,0.447265625,0.4970703125,0.5126953125,0.5,0.490234375,0.521484375,0.5908203125,0.673828125,0.736328125,0.7578125,0.740234375,0.712890625,0.677734375,0.6298828125,0.568359375,0.5029296875,0.443359375,0.39453125,0.3564453125,0.349609375,0.375,0.4140625,0.439453125,0.4326171875,0.39453125,0.359375,0.3642578125,0.40234375,0.4443359375,0.4580078125,0.4287109375,0.3642578125,0.3017578125,0.279296875,0.306640625,0.36328125,0.416015625,0.427734375,0.39453125,0.35546875,0.353515625,0.408203125,0.5107421875,0.625,0.70703125,0.740234375,0.7470703125,0.703125,0.5986328125,0.4638671875,0.341796875,0.2724609375,0.2587890625,0.2666015625,0.3095703125,0.3974609375,0.513671875,0.6259765625,0.703125,0.740234375,0.7607421875,0.748046875,0.6796875,0.560546875,0.4248046875,0.318359375,0.2587890625,0.2275390625,0.25390625,0.33984375,0.44921875,0.53515625,0.5615234375,0.5302734375,0.490234375,0.4775390625,0.5,0.546875,0.59375,0.615234375,0.6044921875,0.58203125,0.541015625,0.48046875,0.408203125,0.33984375,0.2900390625,0.2587890625,0.234375,0.232421875,0.28125,0.388671875,0.529296875,0.6552734375,0.740234375,0.8076171875,0.845703125,0.826171875,0.748046875,0.64453125,0.5634765625,0.5302734375,0.51171875,0.498046875,0.494140625,0.501953125,0.5166015625,0.52734375,0.5302734375,0.5380859375,0.5791015625,0.6455078125,0.712890625,0.7548828125,0.7607421875,0.740234375,0.7177734375,0.7080078125,0.70703125,0.701171875,0.6826171875,0.6484375,0.6044921875,0.5498046875,0.4638671875,0.375,0.3193359375,0.314453125,0.3486328125,0.39453125,0.4365234375,0.4638671875,0.46875,0.4580078125,0.4462890625,0.4482421875,0.46875,0.484375,0.462890625,0.4140625,0.3720703125,0.3662109375,0.4033203125,0.46875,0.529296875,0.5400390625,0.5,0.4384765625,0.3984375,0.4091796875,0.46875,0.546875,0.634765625,0.7041015625,0.728515625,0.7080078125,0.6669921875,0.634765625,0.6064453125,0.576171875,0.5576171875,0.560546875,0.583984375,0.61328125,0.634765625,0.6494140625,0.6484375,0.6318359375,0.61328125,0.603515625,0.6123046875,0.634765625,0.6591796875,0.67578125,0.6845703125,0.6904296875,0.69921875,0.7158203125,0.740234375,0.759765625,0.7509765625,0.712890625,0.662109375,0.6240234375,0.615234375,0.634765625,0.6533203125,0.63671875,0.5849609375,0.5185546875,0.466796875,0.451171875,0.46875,0.4970703125,0.5341796875,0.580078125,0.62890625,0.6748046875,0.7119140625,0.740234375,0.748046875,0.68359375,0.5576171875,0.4248046875,0.3408203125,0.3359375,0.39453125,0.4580078125,0.4833984375,0.4521484375,0.3779296875,0.2978515625,0.25390625,0.2587890625,0.28515625,0.341796875,0.4326171875,0.541015625,0.6396484375,0.7060546875,0.740234375,0.7646484375,0.7734375,0.7509765625,0.6953125,0.6240234375,0.564453125,0.5302734375,0.515625,0.5478515625,0.6240234375,0.7099609375,0.767578125,0.775390625,0.740234375,0.689453125,0.62890625,0.5771484375,0.5576171875,0.572265625,0.60546875,0.634765625,0.658203125,0.6650390625,0.646484375,0.607421875,0.564453125,0.5361328125,0.5302734375,0.5361328125,0.5625,0.5966796875,0.615234375,0.607421875,0.57421875,0.5302734375,0.490234375,0.4833984375,0.521484375,0.5966796875,0.6767578125,0.728515625,0.740234375,0.7314453125,0.69140625,0.6240234375,0.5517578125,0.501953125,0.486328125,0.5,0.5126953125,0.50390625,0.48046875,0.4609375,0.4619140625,0.4873046875,0.5302734375,0.5673828125,0.57421875,0.548828125,0.5107421875,0.4853515625,0.4921875,0.5302734375,0.5634765625,0.55078125,0.4990234375,0.662109375,0.6435546875,0.5615234375,0.458984375,0.376953125,0.3056640625,0.25390625,0.2607421875,0.34375,0.474609375,0.5966796875,0.673828125,0.724609375,0.7275390625,0.6611328125,0.5439453125,0.419921875,0.341796875,0.3251953125,0.3193359375,0.296875,0.26953125,0.26171875,0.283203125,0.326171875,0.376953125,0.423828125,0.4521484375,0.462890625,0.4658203125,0.4755859375,0.5048828125,0.55078125,0.599609375,0.6279296875,0.6181640625,0.568359375,0.5009765625,0.44921875,0.4287109375,0.4345703125,0.498046875,0.6044921875,0.7041015625,0.7529296875,0.736328125,0.673828125,0.59375,0.4931640625,0.39453125,0.3291015625,0.306640625,0.3134765625,0.3251953125,0.3330078125,0.3349609375,0.345703125,0.3798828125,0.4375,0.505859375,0.5703125,0.615234375,0.5947265625,0.505859375,0.3896484375,0.30078125,0.2802734375,0.3251953125,0.3876953125,0.4453125,0.4755859375,0.4677734375,0.431640625,0.39453125,0.376953125,0.3583984375,0.3154296875,0.271484375,0.259765625,0.2919921875,0.3564453125,0.4287109375,0.48828125,0.4921875,0.4365234375,0.3525390625,0.2880859375,0.2783203125,0.3251953125,0.396484375,0.4892578125,0.5654296875,0.583984375,0.5361328125,0.4541015625,0.376953125,0.3212890625,0.33203125,0.4111328125,0.517578125,0.5966796875,0.607421875,0.55078125,0.48046875,0.4189453125,0.3857421875,0.388671875,0.4130859375,0.431640625,0.4287109375,0.4150390625,0.388671875,0.3564453125,0.3291015625,0.3154296875,0.31640625,0.3251953125,0.3505859375,0.427734375,0.533203125,0.619140625,0.6484375,0.6171875,0.55078125,0.4892578125,0.4658203125,0.482421875,0.5166015625,0.533203125,0.509765625,0.4482421875,0.384765625,0.359375,0.3798828125,0.4267578125,0.466796875,0.46875,0.4287109375,0.3857421875,0.37109375,0.388671875,0.41796875,0.4345703125,0.4208984375,0.376953125,0.3359375,0.3408203125,0.4052734375,0.509765625,0.611328125,0.669921875,0.673828125,0.6630859375,0.6552734375,0.6533203125,0.658203125,0.666015625,0.671875,0.673828125,0.6796875,0.7001953125,0.71484375,0.69921875,0.646484375,0.5732421875,0.5,0.431640625,0.3876953125,0.3896484375,0.439453125,0.5078125,0.55859375,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.578125,0.611328125,0.6494140625,0.6611328125,0.6318359375,0.5712890625,0.5,0.41796875,0.3154296875,0.2333984375,0.21484375,0.265625,0.3505859375,0.4287109375,0.5087890625,0.60546875,0.6845703125,0.7080078125,0.671875,0.607421875,0.55078125,0.4931640625,0.4228515625,0.3720703125,0.3720703125,0.42578125,0.5029296875,0.5703125,0.619140625,0.6201171875,0.57421875,0.5126953125,0.4755859375,0.490234375,0.55078125,0.615234375,0.640625,0.603515625,0.513671875,0.41015625,0.3408203125,0.3251953125,0.3369140625,0.3876953125,0.4638671875,0.5322265625,0.5615234375,0.544921875,0.5,0.455078125,0.4453125,0.482421875,0.5546875,0.62890625,0.671875,0.673828125,0.6669921875,0.6669921875,0.6611328125,0.6318359375,0.5771484375,0.51171875,0.4482421875,0.396484375,0.3876953125,0.421875,0.4736328125,0.5078125,0.4990234375,0.4482421875,0.396484375,0.384765625,0.4111328125,0.44921875,0.4658203125,0.4404296875,0.376953125,0.3173828125,0.3095703125,0.357421875,0.4326171875,0.490234375,0.49609375,0.4482421875,0.38671875,0.3388671875,0.33984375,0.404296875,0.509765625,0.6103515625,0.673828125,0.71484375,0.7099609375,0.6416015625,0.5283203125,0.4130859375,0.3408203125,0.3251953125,0.33203125,0.3681640625,0.4384765625,0.525390625,0.60546875,0.6552734375,0.673828125,0.68359375,0.6845703125,0.6552734375,0.5849609375,0.48828125,0.39453125,0.3251953125,0.2802734375,0.30078125,0.3896484375,0.505859375,0.5947265625,0.615234375,0.5703125,0.5166015625,0.5,0.521484375,0.564453125,0.5966796875,0.5927734375,0.55078125,0.498046875,0.439453125,0.38671875,0.353515625,0.3388671875,0.333984375,0.3251953125,0.3134765625,0.306640625,0.3291015625,0.39453125,0.4931640625,0.59375,0.673828125,0.748046875,0.8173828125,0.845703125,0.8095703125,0.7236328125,0.6318359375,0.5703125,0.5205078125,0.4833984375,0.4736328125,0.4951171875,0.533203125,0.5625,0.5703125,0.57421875,0.5927734375,0.623046875,0.6552734375,0.67578125,0.6806640625,0.673828125,0.6689453125,0.6826171875,0.6982421875,0.697265625,0.666015625,0.6123046875,0.55078125,0.48046875,0.3876953125,0.3076171875,0.2802734375,0.314453125,0.3818359375,0.4482421875,0.505859375,0.5419921875,0.5419921875,0.505859375,0.4580078125,0.427734375,0.4287109375,0.4287109375,0.39453125,0.34375,0.30859375,0.314453125,0.3603515625,0.4287109375,0.4892578125,0.5,0.458984375,0.3984375,0.3583984375,0.369140625,0.4287109375,0.5048828125,0.5869140625,0.650390625,0.67578125,0.6630859375,0.6376953125,0.6220703125,0.6044921875,0.5673828125,0.52734375,0.509765625,0.52734375,0.5703125,0.6220703125,0.669921875,0.701171875,0.703125,0.6767578125,0.640625,0.619140625,0.6220703125,0.6318359375,0.6396484375,0.6455078125,0.650390625,0.6552734375,0.6630859375,0.673828125,0.6806640625,0.67578125,0.6591796875,0.63671875,0.619140625,0.6142578125,0.6220703125,0.6259765625,0.6044921875,0.5556640625,0.4951171875,0.4462890625,0.4248046875,0.4287109375,0.443359375,0.474609375,0.5234375,0.5791015625,0.6279296875,0.6591796875,0.673828125,0.66796875,0.6064453125,0.5048828125,0.41015625,0.3662109375,0.384765625,0.4482421875,0.5078125,0.515625,0.4638671875,0.3798828125,0.30859375,0.2890625,0.3251953125,0.3818359375,0.455078125,0.5341796875,0.6005859375,0.642578125,0.662109375,0.673828125,0.6826171875,0.68359375,0.669921875,0.642578125,0.6103515625,0.583984375,0.5703125,0.5712890625,0.611328125,0.6787109375,0.736328125,0.755859375,0.7294921875,0.673828125,0.611328125,0.5537109375,0.5234375,0.53125,0.5673828125,0.6044921875,0.6220703125,0.630859375,0.6318359375,0.6220703125,0.6044921875,0.5849609375,0.572265625,0.5703125,0.578125,0.6142578125,0.66015625,0.685546875,0.6748046875,0.6298828125,0.5703125,0.5126953125,0.48046875,0.4921875,0.5458984375,0.6142578125,0.662109375,0.673828125,0.662109375,0.611328125,0.53515625,0.466796875,0.4375,0.4541015625,0.5,0.5419921875,0.552734375,0.5322265625,0.5029296875,0.4921875,0.515625,0.5703125,0.62109375,0.6298828125,0.595703125,0.5439453125,0.509765625,0.5185546875,0.5703125,0.6181640625,0.6123046875,0.5546875,0.7080078125,0.6923828125,0.6123046875,0.5107421875,0.4296875,0.353515625,0.2783203125,0.2470703125,0.287109375,0.38671875,0.498046875,0.5791015625,0.6435546875,0.67578125,0.6533203125,0.5810546875,0.4931640625,0.43359375,0.419921875,0.41015625,0.3720703125,0.3232421875,0.296875,0.3115234375,0.36328125,0.4296875,0.48828125,0.5087890625,0.48828125,0.451171875,0.4306640625,0.4501953125,0.509765625,0.57421875,0.6171875,0.615234375,0.568359375,0.501953125,0.4521484375,0.439453125,0.451171875,0.5087890625,0.5927734375,0.6611328125,0.6796875,0.6455078125,0.5791015625,0.505859375,0.4326171875,0.3828125,0.3701171875,0.388671875,0.412109375,0.419921875,0.4150390625,0.392578125,0.3720703125,0.3779296875,0.4208984375,0.48828125,0.5595703125,0.6142578125,0.6083984375,0.5380859375,0.44140625,0.37109375,0.3642578125,0.419921875,0.48828125,0.5419921875,0.55859375,0.5322265625,0.4814453125,0.4404296875,0.4296875,0.41796875,0.376953125,0.3251953125,0.2978515625,0.314453125,0.369140625,0.439453125,0.4990234375,0.5087890625,0.46484375,0.400390625,0.35546875,0.3623046875,0.419921875,0.498046875,0.591796875,0.6611328125,0.6640625,0.6005859375,0.5087890625,0.4296875,0.3720703125,0.37109375,0.4287109375,0.5107421875,0.568359375,0.5673828125,0.509765625,0.4384765625,0.3779296875,0.3505859375,0.36328125,0.4013671875,0.4326171875,0.439453125,0.4375,0.4326171875,0.4267578125,0.421875,0.4189453125,0.41796875,0.419921875,0.43359375,0.4873046875,0.5615234375,0.6142578125,0.6201171875,0.5771484375,0.509765625,0.44921875,0.4365234375,0.4716796875,0.52734375,0.5625,0.5498046875,0.4892578125,0.427734375,0.4091796875,0.435546875,0.482421875,0.51171875,0.4970703125,0.439453125,0.3828125,0.37109375,0.4072265625,0.4619140625,0.498046875,0.4873046875,0.4296875,0.3671875,0.3359375,0.3583984375,0.4267578125,0.5107421875,0.568359375,0.5791015625,0.5771484375,0.576171875,0.576171875,0.5771484375,0.578125,0.5791015625,0.5791015625,0.5869140625,0.619140625,0.6552734375,0.6640625,0.6328125,0.5712890625,0.5,0.4306640625,0.3857421875,0.3857421875,0.4326171875,0.4990234375,0.5478515625,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.568359375,0.6025390625,0.642578125,0.6572265625,0.6298828125,0.5703125,0.5,0.41796875,0.3173828125,0.2373046875,0.220703125,0.2744140625,0.361328125,0.439453125,0.5205078125,0.62109375,0.701171875,0.7177734375,0.66796875,0.583984375,0.509765625,0.4345703125,0.349609375,0.2958984375,0.30859375,0.3837890625,0.48046875,0.5595703125,0.6162109375,0.6201171875,0.568359375,0.4951171875,0.4453125,0.4501953125,0.509765625,0.5771484375,0.619140625,0.6123046875,0.5576171875,0.484375,0.431640625,0.419921875,0.4306640625,0.48046875,0.5498046875,0.599609375,0.6044921875,0.564453125,0.5,0.435546875,0.3955078125,0.40234375,0.453125,0.521484375,0.5693359375,0.5791015625,0.5849609375,0.6142578125,0.6455078125,0.65234375,0.62109375,0.5595703125,0.4892578125,0.4306640625,0.4208984375,0.4599609375,0.51953125,0.55859375,0.5478515625,0.4892578125,0.4296875,0.4130859375,0.4404296875,0.484375,0.509765625,0.4912109375,0.4296875,0.37109375,0.3662109375,0.4189453125,0.4951171875,0.548828125,0.5458984375,0.4892578125,0.4140625,0.333984375,0.2900390625,0.314453125,0.3994140625,0.5009765625,0.5791015625,0.6416015625,0.6728515625,0.6494140625,0.5791015625,0.4921875,0.4326171875,0.419921875,0.4228515625,0.44140625,0.4755859375,0.517578125,0.5537109375,0.57421875,0.5791015625,0.5869140625,0.609375,0.6259765625,0.61328125,0.5634765625,0.4921875,0.419921875,0.3642578125,0.37109375,0.44140625,0.5380859375,0.6083984375,0.6142578125,0.5595703125,0.5,0.482421875,0.5087890625,0.5546875,0.5830078125,0.5673828125,0.509765625,0.44140625,0.380859375,0.349609375,0.35546875,0.38671875,0.4140625,0.419921875,0.412109375,0.388671875,0.3701171875,0.3828125,0.4326171875,0.505859375,0.5791015625,0.658203125,0.748046875,0.8076171875,0.80078125,0.73046875,0.63671875,0.5595703125,0.4931640625,0.4423828125,0.4296875,0.458984375,0.509765625,0.5498046875,0.5595703125,0.5595703125,0.5634765625,0.5693359375,0.5751953125,0.5791015625,0.580078125,0.5791015625,0.5859375,0.6171875,0.6533203125,0.6650390625,0.6376953125,0.5791015625,0.509765625,0.4306640625,0.3369140625,0.267578125,0.26171875,0.322265625,0.412109375,0.4892578125,0.556640625,0.6005859375,0.6005859375,0.5576171875,0.494140625,0.44921875,0.439453125,0.431640625,0.390625,0.337890625,0.306640625,0.318359375,0.3701171875,0.439453125,0.4990234375,0.509765625,0.4697265625,0.4091796875,0.369140625,0.3798828125,0.439453125,0.5126953125,0.58203125,0.625,0.6298828125,0.60546875,0.578125,0.5693359375,0.55859375,0.517578125,0.4658203125,0.4375,0.451171875,0.5029296875,0.5693359375,0.6357421875,0.6845703125,0.6962890625,0.666015625,0.615234375,0.5771484375,0.5693359375,0.5712890625,0.572265625,0.5732421875,0.5751953125,0.576171875,0.5771484375,0.5791015625,0.580078125,0.5791015625,0.576171875,0.572265625,0.5693359375,0.568359375,0.5693359375,0.5673828125,0.5517578125,0.5224609375,0.486328125,0.45703125,0.44140625,0.439453125,0.4443359375,0.4619140625,0.4921875,0.52734375,0.5576171875,0.57421875,0.5791015625,0.568359375,0.517578125,0.4443359375,0.3896484375,0.3818359375,0.421875,0.4892578125,0.5478515625,0.552734375,0.4990234375,0.421875,0.365234375,0.365234375,0.419921875,0.490234375,0.55859375,0.60546875,0.6171875,0.6025390625,0.5830078125,0.5791015625,0.5810546875,0.580078125,0.5771484375,0.572265625,0.56640625,0.5615234375,0.5595703125,0.568359375,0.609375,0.666015625,0.7021484375,0.6943359375,0.646484375,0.5791015625,0.5107421875,0.45703125,0.4404296875,0.466796875,0.517578125,0.55859375,0.5693359375,0.5703125,0.5703125,0.568359375,0.5654296875,0.5615234375,0.5595703125,0.5595703125,0.5693359375,0.609375,0.662109375,0.69140625,0.6787109375,0.6279296875,0.5595703125,0.4912109375,0.4423828125,0.4345703125,0.4697265625,0.5263671875,0.5693359375,0.5791015625,0.568359375,0.5185546875,0.44921875,0.3994140625,0.39453125,0.4345703125,0.5,0.5576171875,0.57421875,0.5478515625,0.5048828125,0.48046875,0.4990234375,0.5595703125,0.6181640625,0.6279296875,0.5888671875,0.529296875,0.490234375,0.5009765625,0.5595703125,0.6162109375,0.6181640625,0.564453125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.7626953125,0.7763671875,0.7216796875,0.6357421875,0.5595703125,0.478515625,0.373046875,0.283203125,0.251953125,0.2900390625,0.3662109375,0.439453125,0.5087890625,0.5751953125,0.6181640625,0.625,0.60546875,0.583984375,0.5791015625,0.5712890625,0.5302734375,0.4775390625,0.4462890625,0.4580078125,0.509765625,0.5791015625,0.6376953125,0.6416015625,0.5888671875,0.5107421875,0.455078125,0.4541015625,0.509765625,0.5771484375,0.6318359375,0.654296875,0.6376953125,0.5986328125,0.56640625,0.5595703125,0.568359375,0.5947265625,0.6201171875,0.615234375,0.572265625,0.5029296875,0.4296875,0.36328125,0.326171875,0.3427734375,0.41015625,0.494140625,0.5546875,0.5693359375,0.55859375,0.5029296875,0.421875,0.357421875,0.33984375,0.375,0.439453125,0.5009765625,0.5244140625,0.5107421875,0.482421875,0.470703125,0.49609375,0.5595703125,0.62890625,0.681640625,0.6962890625,0.66796875,0.6162109375,0.5771484375,0.5693359375,0.5615234375,0.521484375,0.46875,0.4365234375,0.4453125,0.4931640625,0.5595703125,0.6162109375,0.6279296875,0.591796875,0.537109375,0.5009765625,0.51171875,0.5693359375,0.6455078125,0.7353515625,0.798828125,0.798828125,0.7353515625,0.6455078125,0.5693359375,0.5107421875,0.4931640625,0.515625,0.5537109375,0.57421875,0.5517578125,0.4892578125,0.421875,0.3798828125,0.38671875,0.44140625,0.5146484375,0.5673828125,0.5791015625,0.578125,0.5751953125,0.5693359375,0.5634765625,0.5595703125,0.55859375,0.5595703125,0.5693359375,0.60546875,0.646484375,0.662109375,0.6376953125,0.5791015625,0.509765625,0.451171875,0.4404296875,0.4794921875,0.5390625,0.578125,0.568359375,0.509765625,0.4521484375,0.4462890625,0.49609375,0.5673828125,0.6181640625,0.615234375,0.5595703125,0.5029296875,0.4970703125,0.54296875,0.607421875,0.6494140625,0.638671875,0.5791015625,0.505859375,0.435546875,0.3896484375,0.3828125,0.4052734375,0.431640625,0.439453125,0.4404296875,0.439453125,0.4365234375,0.4326171875,0.4296875,0.4287109375,0.4296875,0.4423828125,0.4931640625,0.5625,0.611328125,0.615234375,0.57421875,0.509765625,0.4404296875,0.3798828125,0.3486328125,0.35546875,0.3896484375,0.4208984375,0.4296875,0.431640625,0.43359375,0.4365234375,0.4384765625,0.439453125,0.439453125,0.439453125,0.451171875,0.5,0.568359375,0.6162109375,0.619140625,0.576171875,0.509765625,0.43359375,0.349609375,0.2998046875,0.318359375,0.3994140625,0.5,0.5791015625,0.6552734375,0.740234375,0.791015625,0.7734375,0.6923828125,0.5908203125,0.509765625,0.427734375,0.32421875,0.23828125,0.2158203125,0.26171875,0.34375,0.419921875,0.4794921875,0.4970703125,0.47265625,0.4306640625,0.408203125,0.427734375,0.4892578125,0.5615234375,0.625,0.658203125,0.6513671875,0.6181640625,0.5869140625,0.5791015625,0.5869140625,0.6201171875,0.65625,0.6669921875,0.638671875,0.5791015625,0.509765625,0.439453125,0.376953125,0.34375,0.3505859375,0.3818359375,0.412109375,0.419921875,0.4306640625,0.4794921875,0.5458984375,0.5927734375,0.595703125,0.5546875,0.4892578125,0.4326171875,0.4248046875,0.4658203125,0.5244140625,0.5625,0.5498046875,0.4892578125,0.4306640625,0.427734375,0.4833984375,0.564453125,0.623046875,0.6240234375,0.5693359375,0.5107421875,0.494140625,0.5205078125,0.5634765625,0.587890625,0.5693359375,0.509765625,0.4296875,0.3271484375,0.2412109375,0.2177734375,0.2626953125,0.34375,0.419921875,0.4912109375,0.55859375,0.6005859375,0.607421875,0.5869140625,0.564453125,0.5595703125,0.5576171875,0.5419921875,0.5107421875,0.4736328125,0.44140625,0.4228515625,0.419921875,0.4326171875,0.490234375,0.57421875,0.640625,0.658203125,0.6240234375,0.5595703125,0.498046875,0.470703125,0.4794921875,0.50390625,0.5146484375,0.4892578125,0.4296875,0.375,0.375,0.4326171875,0.5126953125,0.568359375,0.56640625,0.509765625,0.4423828125,0.3984375,0.3984375,0.44140625,0.5048828125,0.5498046875,0.5595703125,0.544921875,0.490234375,0.412109375,0.3525390625,0.3388671875,0.3759765625,0.439453125,0.5166015625,0.607421875,0.673828125,0.67578125,0.611328125,0.5185546875,0.439453125,0.3701171875,0.3173828125,0.3046875,0.3349609375,0.3876953125,0.4296875,0.439453125,0.439453125,0.4384765625,0.4375,0.4365234375,0.4365234375,0.4384765625,0.439453125,0.4521484375,0.5,0.5654296875,0.609375,0.6083984375,0.564453125,0.5,0.423828125,0.333984375,0.271484375,0.2734375,0.33984375,0.431640625,0.509765625,0.5791015625,0.6357421875,0.66015625,0.6435546875,0.6025390625,0.568359375,0.5595703125,0.5498046875,0.5078125,0.4541015625,0.423828125,0.4375,0.4892578125,0.5595703125,0.6201171875,0.6337890625,0.599609375,0.544921875,0.5087890625,0.5205078125,0.5791015625,0.6435546875,0.6767578125,0.6552734375,0.583984375,0.49609375,0.4345703125,0.419921875,0.408203125,0.3662109375,0.3154296875,0.2880859375,0.3046875,0.359375,0.4296875,0.5,0.5537109375,0.5693359375,0.541015625,0.490234375,0.44921875,0.439453125,0.439453125,0.4375,0.43359375,0.4306640625,0.4287109375,0.4287109375,0.4296875,0.4306640625,0.4296875,0.4267578125,0.4228515625,0.419921875,0.4189453125,0.419921875,0.4248046875,0.4443359375,0.4765625,0.513671875,0.54296875,0.5576171875,0.5595703125,0.5546875,0.5390625,0.5107421875,0.478515625,0.4501953125,0.4345703125,0.4296875,0.419921875,0.3857421875,0.3466796875,0.3359375,0.3662109375,0.427734375,0.5,0.5615234375,0.583984375,0.564453125,0.525390625,0.5029296875,0.5205078125,0.5791015625,0.6416015625,0.6728515625,0.6513671875,0.58203125,0.498046875,0.44140625,0.4296875,0.431640625,0.43359375,0.4365234375,0.4384765625,0.439453125,0.439453125,0.439453125,0.44921875,0.4873046875,0.5361328125,0.5625,0.5478515625,0.49609375,0.4296875,0.36328125,0.3125,0.2978515625,0.326171875,0.3779296875,0.4189453125,0.4296875,0.431640625,0.4326171875,0.431640625,0.4287109375,0.4248046875,0.421875,0.419921875,0.427734375,0.46875,0.521484375,0.552734375,0.541015625,0.4892578125,0.419921875,0.349609375,0.296875,0.2822265625,0.3115234375,0.365234375,0.408203125,0.419921875,0.4130859375,0.3837890625,0.3486328125,0.3369140625,0.3642578125,0.421875,0.4892578125,0.544921875,0.5478515625,0.49609375,0.4228515625,0.37109375,0.3740234375,0.4296875,0.486328125,0.494140625,0.4541015625,0.39453125,0.3564453125,0.369140625,0.4296875,0.4912109375,0.5126953125,0.490234375,0.763671875,0.7685546875,0.7158203125,0.6376953125,0.5703125,0.5,0.408203125,0.3271484375,0.294921875,0.318359375,0.3740234375,0.4287109375,0.482421875,0.5439453125,0.599609375,0.638671875,0.6572265625,0.6650390625,0.673828125,0.673828125,0.6396484375,0.587890625,0.552734375,0.55859375,0.60546875,0.673828125,0.7333984375,0.7412109375,0.689453125,0.60546875,0.5341796875,0.5146484375,0.55078125,0.599609375,0.6328125,0.6396484375,0.6181640625,0.5859375,0.56640625,0.5703125,0.5859375,0.611328125,0.6240234375,0.5986328125,0.53515625,0.453125,0.376953125,0.3115234375,0.283203125,0.31640625,0.4072265625,0.5166015625,0.595703125,0.6220703125,0.619140625,0.5673828125,0.48046875,0.3994140625,0.359375,0.375,0.4287109375,0.482421875,0.501953125,0.4912109375,0.47265625,0.4716796875,0.505859375,0.5703125,0.6396484375,0.6923828125,0.708984375,0.6884765625,0.6484375,0.6201171875,0.6220703125,0.623046875,0.5947265625,0.5478515625,0.5078125,0.498046875,0.5234375,0.5703125,0.61328125,0.6279296875,0.6103515625,0.5810546875,0.564453125,0.578125,0.6220703125,0.6787109375,0.7451171875,0.79296875,0.79296875,0.7451171875,0.6787109375,0.6220703125,0.578125,0.5615234375,0.56640625,0.572265625,0.55859375,0.5146484375,0.4482421875,0.3837890625,0.3583984375,0.3955078125,0.4853515625,0.5888671875,0.658203125,0.673828125,0.669921875,0.6513671875,0.6201171875,0.5888671875,0.5673828125,0.5625,0.5703125,0.587890625,0.62890625,0.6728515625,0.689453125,0.666015625,0.6123046875,0.55078125,0.5,0.4912109375,0.525390625,0.5771484375,0.611328125,0.6025390625,0.55078125,0.4990234375,0.486328125,0.5166015625,0.5693359375,0.6103515625,0.6103515625,0.5703125,0.533203125,0.5498046875,0.6171875,0.6962890625,0.744140625,0.7333984375,0.673828125,0.5966796875,0.5087890625,0.4326171875,0.39453125,0.39453125,0.4150390625,0.4287109375,0.4365234375,0.431640625,0.4140625,0.3916015625,0.375,0.3701171875,0.376953125,0.3984375,0.45703125,0.53515625,0.5986328125,0.6201171875,0.5986328125,0.55078125,0.49609375,0.431640625,0.3759765625,0.3466796875,0.34765625,0.3642578125,0.376953125,0.388671875,0.40234375,0.416015625,0.4248046875,0.4287109375,0.4296875,0.4287109375,0.4404296875,0.4912109375,0.5634765625,0.6220703125,0.6376953125,0.6083984375,0.55078125,0.4853515625,0.419921875,0.390625,0.4228515625,0.5068359375,0.6025390625,0.673828125,0.740234375,0.8115234375,0.849609375,0.8212890625,0.7353515625,0.6328125,0.55078125,0.4677734375,0.3525390625,0.2431640625,0.1875,0.2021484375,0.26171875,0.3251953125,0.3779296875,0.396484375,0.380859375,0.357421875,0.3525390625,0.3837890625,0.4482421875,0.5224609375,0.6025390625,0.666015625,0.6953125,0.6923828125,0.677734375,0.673828125,0.6787109375,0.7001953125,0.71875,0.7119140625,0.673828125,0.61328125,0.55078125,0.486328125,0.4140625,0.3525390625,0.318359375,0.314453125,0.322265625,0.3251953125,0.3359375,0.3798828125,0.4453125,0.4990234375,0.5166015625,0.494140625,0.4482421875,0.408203125,0.4130859375,0.45703125,0.5087890625,0.533203125,0.5107421875,0.4482421875,0.3896484375,0.3876953125,0.451171875,0.548828125,0.6318359375,0.6572265625,0.6220703125,0.5791015625,0.5693359375,0.58984375,0.6181640625,0.62890625,0.60546875,0.55078125,0.4775390625,0.3701171875,0.2626953125,0.203125,0.2099609375,0.2626953125,0.3251953125,0.3896484375,0.4580078125,0.5166015625,0.55078125,0.5615234375,0.5625,0.5703125,0.57421875,0.552734375,0.5,0.4306640625,0.3681640625,0.3330078125,0.3251953125,0.33984375,0.4052734375,0.505859375,0.595703125,0.6396484375,0.6240234375,0.5703125,0.5126953125,0.474609375,0.4580078125,0.4541015625,0.4482421875,0.4228515625,0.376953125,0.33984375,0.359375,0.4345703125,0.5283203125,0.59375,0.599609375,0.55078125,0.4931640625,0.45703125,0.45703125,0.4931640625,0.541015625,0.5712890625,0.5703125,0.5498046875,0.4951171875,0.423828125,0.369140625,0.35546875,0.380859375,0.4287109375,0.48828125,0.5673828125,0.6298828125,0.638671875,0.587890625,0.505859375,0.4287109375,0.359375,0.306640625,0.2939453125,0.32421875,0.376953125,0.4189453125,0.4287109375,0.427734375,0.421875,0.4140625,0.4091796875,0.4111328125,0.4189453125,0.4287109375,0.4482421875,0.4931640625,0.548828125,0.5849609375,0.583984375,0.548828125,0.5,0.4423828125,0.3759765625,0.33203125,0.341796875,0.40234375,0.4833984375,0.55078125,0.611328125,0.658203125,0.673828125,0.6533203125,0.611328125,0.578125,0.5703125,0.5595703125,0.5185546875,0.46484375,0.4345703125,0.4482421875,0.5,0.5703125,0.6337890625,0.6630859375,0.6533203125,0.625,0.60546875,0.62109375,0.673828125,0.7265625,0.7353515625,0.6767578125,0.5634765625,0.4375,0.3525390625,0.3251953125,0.306640625,0.263671875,0.2197265625,0.2080078125,0.240234375,0.3046875,0.376953125,0.4482421875,0.5068359375,0.5322265625,0.5146484375,0.4736328125,0.4375,0.4287109375,0.4267578125,0.4140625,0.39453125,0.376953125,0.3671875,0.3681640625,0.376953125,0.384765625,0.3798828125,0.3623046875,0.33984375,0.3232421875,0.318359375,0.3251953125,0.3427734375,0.3857421875,0.4501953125,0.5146484375,0.5595703125,0.576171875,0.5703125,0.556640625,0.5322265625,0.4951171875,0.4521484375,0.4150390625,0.390625,0.376953125,0.3603515625,0.3251953125,0.2978515625,0.3037109375,0.3525390625,0.42578125,0.5,0.56640625,0.6103515625,0.6240234375,0.6181640625,0.61328125,0.6298828125,0.673828125,0.71484375,0.7099609375,0.6455078125,0.541015625,0.439453125,0.380859375,0.376953125,0.388671875,0.40234375,0.416015625,0.4248046875,0.4287109375,0.4296875,0.4287109375,0.4345703125,0.4580078125,0.484375,0.4921875,0.4716796875,0.427734375,0.376953125,0.326171875,0.283203125,0.265625,0.283203125,0.3232421875,0.3603515625,0.376953125,0.3876953125,0.39453125,0.3935546875,0.3798828125,0.3583984375,0.3388671875,0.3251953125,0.3251953125,0.359375,0.4111328125,0.4462890625,0.4404296875,0.3935546875,0.3251953125,0.2548828125,0.1962890625,0.1748046875,0.201171875,0.255859375,0.3056640625,0.3251953125,0.3310546875,0.32421875,0.3154296875,0.322265625,0.3505859375,0.396484375,0.4482421875,0.48828125,0.4873046875,0.443359375,0.3818359375,0.337890625,0.3369140625,0.376953125,0.4169921875,0.412109375,0.3681640625,0.31640625,0.2919921875,0.314453125,0.376953125,0.4423828125,0.48046875,0.4833984375,0.7294921875,0.708984375,0.650390625,0.58203125,0.5302734375,0.4814453125,0.4306640625,0.39453125,0.3896484375,0.4130859375,0.4462890625,0.46875,0.490234375,0.521484375,0.56640625,0.6181640625,0.669921875,0.7109375,0.740234375,0.755859375,0.7333984375,0.6845703125,0.6435546875,0.63671875,0.673828125,0.740234375,0.8037109375,0.8291015625,0.7978515625,0.7236328125,0.6435546875,0.599609375,0.6044921875,0.6171875,0.607421875,0.57421875,0.53515625,0.509765625,0.5087890625,0.5302734375,0.5615234375,0.6025390625,0.6240234375,0.599609375,0.529296875,0.44140625,0.3642578125,0.296875,0.26171875,0.2900390625,0.3798828125,0.4990234375,0.5927734375,0.634765625,0.650390625,0.623046875,0.5576171875,0.4833984375,0.4345703125,0.4326171875,0.46875,0.5048828125,0.50390625,0.4716796875,0.4384765625,0.431640625,0.46484375,0.5302734375,0.5986328125,0.6484375,0.6650390625,0.6513671875,0.626953125,0.6171875,0.634765625,0.6552734375,0.6513671875,0.6181640625,0.5712890625,0.5322265625,0.517578125,0.5302734375,0.5478515625,0.5634765625,0.576171875,0.587890625,0.6015625,0.6171875,0.634765625,0.65625,0.6806640625,0.6982421875,0.6982421875,0.6806640625,0.65625,0.634765625,0.62109375,0.619140625,0.6162109375,0.5908203125,0.5380859375,0.466796875,0.39453125,0.3330078125,0.322265625,0.3857421875,0.5078125,0.638671875,0.7216796875,0.740234375,0.7314453125,0.6904296875,0.6240234375,0.5576171875,0.515625,0.5087890625,0.5302734375,0.5634765625,0.6181640625,0.673828125,0.701171875,0.6904296875,0.650390625,0.6044921875,0.56640625,0.5595703125,0.5849609375,0.6240234375,0.6494140625,0.642578125,0.6044921875,0.5615234375,0.5302734375,0.51953125,0.5263671875,0.5400390625,0.5439453125,0.5302734375,0.5263671875,0.580078125,0.6767578125,0.7705078125,0.818359375,0.802734375,0.740234375,0.66015625,0.5595703125,0.4658203125,0.4140625,0.412109375,0.439453125,0.46875,0.48828125,0.4794921875,0.44140625,0.3916015625,0.353515625,0.3447265625,0.3642578125,0.3984375,0.45703125,0.5302734375,0.5908203125,0.62109375,0.62109375,0.6044921875,0.5771484375,0.5185546875,0.44140625,0.375,0.33984375,0.341796875,0.3642578125,0.392578125,0.423828125,0.4521484375,0.46875,0.47265625,0.470703125,0.46875,0.478515625,0.521484375,0.5849609375,0.640625,0.662109375,0.6455078125,0.6044921875,0.5576171875,0.5146484375,0.501953125,0.5380859375,0.6103515625,0.6865234375,0.740234375,0.791015625,0.849609375,0.880859375,0.8564453125,0.779296875,0.68359375,0.6044921875,0.5205078125,0.3994140625,0.275390625,0.1953125,0.1796875,0.212890625,0.2587890625,0.2958984375,0.3037109375,0.2890625,0.275390625,0.28515625,0.328125,0.39453125,0.47265625,0.56640625,0.6572265625,0.7177734375,0.7421875,0.7421875,0.740234375,0.7431640625,0.7529296875,0.7568359375,0.740234375,0.701171875,0.65234375,0.6044921875,0.552734375,0.4775390625,0.3916015625,0.3193359375,0.2763671875,0.2607421875,0.2587890625,0.2646484375,0.2919921875,0.3369140625,0.3798828125,0.4072265625,0.41015625,0.39453125,0.3857421875,0.4140625,0.4638671875,0.501953125,0.5029296875,0.4619140625,0.39453125,0.3330078125,0.3203125,0.375,0.4775390625,0.5810546875,0.6376953125,0.634765625,0.6220703125,0.630859375,0.654296875,0.673828125,0.6728515625,0.646484375,0.6044921875,0.5458984375,0.4443359375,0.3251953125,0.234375,0.19921875,0.216796875,0.2587890625,0.3056640625,0.3564453125,0.4052734375,0.447265625,0.478515625,0.50390625,0.5302734375,0.548828125,0.53515625,0.48046875,0.3974609375,0.3173828125,0.2685546875,0.2587890625,0.271484375,0.3310546875,0.4248046875,0.515625,0.568359375,0.5673828125,0.5302734375,0.484375,0.4423828125,0.4111328125,0.39453125,0.3876953125,0.3798828125,0.3642578125,0.357421875,0.3994140625,0.4833984375,0.57421875,0.6337890625,0.640625,0.6044921875,0.5625,0.53515625,0.5302734375,0.541015625,0.552734375,0.55078125,0.5302734375,0.5,0.462890625,0.4296875,0.4169921875,0.4267578125,0.4482421875,0.46875,0.498046875,0.552734375,0.6103515625,0.6328125,0.60546875,0.5419921875,0.46875,0.3994140625,0.3466796875,0.333984375,0.3642578125,0.41796875,0.458984375,0.46875,0.4658203125,0.4501953125,0.4306640625,0.4189453125,0.423828125,0.443359375,0.46875,0.498046875,0.5322265625,0.5576171875,0.5625,0.546875,0.5205078125,0.5,0.4775390625,0.4501953125,0.435546875,0.4521484375,0.498046875,0.5556640625,0.6044921875,0.6474609375,0.6708984375,0.6630859375,0.6240234375,0.5732421875,0.5380859375,0.5302734375,0.51953125,0.478515625,0.4248046875,0.39453125,0.4072265625,0.4599609375,0.5302734375,0.5986328125,0.6494140625,0.67578125,0.6826171875,0.6845703125,0.701171875,0.740234375,0.7763671875,0.7666015625,0.6875,0.5517578125,0.40625,0.3017578125,0.2587890625,0.2255859375,0.177734375,0.142578125,0.1513671875,0.2080078125,0.2880859375,0.3642578125,0.4365234375,0.5009765625,0.5380859375,0.53515625,0.505859375,0.4765625,0.46875,0.462890625,0.4345703125,0.3916015625,0.3525390625,0.333984375,0.3408203125,0.3642578125,0.3837890625,0.375,0.3369140625,0.2861328125,0.248046875,0.2392578125,0.2587890625,0.294921875,0.3623046875,0.447265625,0.5185546875,0.5546875,0.552734375,0.5302734375,0.50390625,0.4794921875,0.4580078125,0.4365234375,0.4140625,0.3896484375,0.3642578125,0.33203125,0.287109375,0.2587890625,0.275390625,0.3388671875,0.4228515625,0.5,0.572265625,0.642578125,0.6953125,0.720703125,0.724609375,0.7255859375,0.740234375,0.74609375,0.69921875,0.5986328125,0.48046875,0.38671875,0.349609375,0.3642578125,0.392578125,0.423828125,0.4521484375,0.46875,0.47265625,0.470703125,0.46875,0.4697265625,0.4677734375,0.4580078125,0.4384765625,0.4111328125,0.384765625,0.3642578125,0.341796875,0.3125,0.2900390625,0.2861328125,0.3056640625,0.3359375,0.3642578125,0.390625,0.4130859375,0.4140625,0.3857421875,0.337890625,0.291015625,0.2587890625,0.2431640625,0.265625,0.314453125,0.35546875,0.3623046875,0.3251953125,0.2587890625,0.185546875,0.1181640625,0.0849609375,0.1044921875,0.162109375,0.2236328125,0.2587890625,0.28515625,0.3095703125,0.3310546875,0.34765625,0.361328125,0.376953125,0.39453125,0.4091796875,0.408203125,0.3916015625,0.3671875,0.349609375,0.3486328125,0.3642578125,0.3720703125,0.3447265625,0.294921875,0.2568359375,0.255859375,0.296875,0.3642578125,0.4345703125,0.4921875,0.521484375,0.662109375,0.619140625,0.556640625,0.501953125,0.46875,0.447265625,0.4462890625,0.4697265625,0.5048828125,0.5341796875,0.54296875,0.5302734375,0.509765625,0.4951171875,0.5048828125,0.5498046875,0.619140625,0.6884765625,0.740234375,0.7744140625,0.765625,0.720703125,0.6708984375,0.650390625,0.6767578125,0.740234375,0.8095703125,0.8603515625,0.8642578125,0.814453125,0.734375,0.666015625,0.634765625,0.6064453125,0.5458984375,0.4716796875,0.4169921875,0.40234375,0.4267578125,0.46875,0.521484375,0.5869140625,0.6328125,0.6240234375,0.560546875,0.47265625,0.39453125,0.3232421875,0.26953125,0.26953125,0.3369140625,0.4453125,0.5458984375,0.6044921875,0.6435546875,0.65234375,0.6240234375,0.57421875,0.5283203125,0.5126953125,0.5302734375,0.5439453125,0.5146484375,0.4521484375,0.39453125,0.375,0.404296875,0.46875,0.5361328125,0.578125,0.587890625,0.57421875,0.5595703125,0.5673828125,0.6044921875,0.6484375,0.67578125,0.66796875,0.62109375,0.5537109375,0.4970703125,0.46875,0.4560546875,0.4697265625,0.5107421875,0.5625,0.603515625,0.6171875,0.6044921875,0.583984375,0.55859375,0.541015625,0.541015625,0.55859375,0.583984375,0.6044921875,0.626953125,0.6533203125,0.6572265625,0.6162109375,0.53515625,0.4423828125,0.3642578125,0.302734375,0.2958984375,0.3671875,0.4970703125,0.6337890625,0.7216796875,0.740234375,0.7275390625,0.66796875,0.57421875,0.4833984375,0.4306640625,0.431640625,0.46875,0.5205078125,0.58984375,0.654296875,0.6904296875,0.6884765625,0.6630859375,0.634765625,0.61328125,0.609375,0.6240234375,0.646484375,0.6611328125,0.6572265625,0.634765625,0.6025390625,0.552734375,0.49609375,0.4560546875,0.44140625,0.451171875,0.46875,0.50390625,0.5927734375,0.7099609375,0.8037109375,0.8369140625,0.806640625,0.740234375,0.6591796875,0.5546875,0.4609375,0.416015625,0.431640625,0.48046875,0.5302734375,0.564453125,0.5546875,0.4990234375,0.4248046875,0.369140625,0.359375,0.39453125,0.44140625,0.4931640625,0.541015625,0.5771484375,0.6005859375,0.6171875,0.634765625,0.6416015625,0.599609375,0.515625,0.4248046875,0.365234375,0.3583984375,0.39453125,0.44140625,0.4912109375,0.5302734375,0.546875,0.54296875,0.533203125,0.5302734375,0.5361328125,0.564453125,0.607421875,0.646484375,0.6650390625,0.658203125,0.634765625,0.6083984375,0.5859375,0.5849609375,0.61328125,0.6611328125,0.7080078125,0.740234375,0.7734375,0.8212890625,0.8564453125,0.84765625,0.791015625,0.7109375,0.634765625,0.552734375,0.439453125,0.322265625,0.2421875,0.216796875,0.232421875,0.2587890625,0.27734375,0.267578125,0.2421875,0.228515625,0.24609375,0.2958984375,0.3642578125,0.4423828125,0.541015625,0.6376953125,0.70703125,0.7373046875,0.7412109375,0.740234375,0.7412109375,0.744140625,0.740234375,0.7236328125,0.6953125,0.6630859375,0.634765625,0.6005859375,0.53515625,0.447265625,0.3583984375,0.2939453125,0.263671875,0.2587890625,0.2587890625,0.2607421875,0.26953125,0.2900390625,0.31640625,0.3427734375,0.3642578125,0.392578125,0.4482421875,0.5048828125,0.52734375,0.5,0.4365234375,0.3642578125,0.296875,0.2626953125,0.2890625,0.375,0.486328125,0.5703125,0.6044921875,0.626953125,0.66015625,0.6904296875,0.701171875,0.689453125,0.662109375,0.634765625,0.5966796875,0.5166015625,0.408203125,0.30859375,0.2490234375,0.23828125,0.2587890625,0.283203125,0.3017578125,0.3193359375,0.3447265625,0.380859375,0.423828125,0.46875,0.5087890625,0.515625,0.4775390625,0.40234375,0.322265625,0.2705078125,0.2587890625,0.267578125,0.30859375,0.375,0.44140625,0.4833984375,0.490234375,0.46875,0.439453125,0.3994140625,0.3642578125,0.34765625,0.353515625,0.3740234375,0.39453125,0.421875,0.48046875,0.5576171875,0.6240234375,0.6591796875,0.6572265625,0.634765625,0.611328125,0.5986328125,0.5908203125,0.5771484375,0.5517578125,0.513671875,0.46875,0.4287109375,0.4140625,0.43359375,0.4765625,0.5205078125,0.541015625,0.5302734375,0.521484375,0.548828125,0.599609375,0.6376953125,0.638671875,0.5966796875,0.5302734375,0.4599609375,0.4072265625,0.39453125,0.4248046875,0.478515625,0.51953125,0.5302734375,0.5234375,0.4970703125,0.4638671875,0.4443359375,0.4521484375,0.4853515625,0.5302734375,0.5703125,0.5888671875,0.576171875,0.541015625,0.50390625,0.48828125,0.5,0.517578125,0.5322265625,0.546875,0.5634765625,0.583984375,0.6083984375,0.634765625,0.6572265625,0.65625,0.6240234375,0.568359375,0.51171875,0.4765625,0.46875,0.458984375,0.41796875,0.3642578125,0.333984375,0.3466796875,0.3994140625,0.46875,0.5419921875,0.611328125,0.666015625,0.6953125,0.7080078125,0.7177734375,0.740234375,0.7607421875,0.748046875,0.6796875,0.560546875,0.4248046875,0.318359375,0.2587890625,0.2080078125,0.1494140625,0.1181640625,0.142578125,0.2197265625,0.3154296875,0.39453125,0.4677734375,0.5361328125,0.580078125,0.5849609375,0.5615234375,0.537109375,0.5302734375,0.5205078125,0.4775390625,0.4140625,0.3583984375,0.3369140625,0.353515625,0.39453125,0.4287109375,0.4189453125,0.36328125,0.2900390625,0.234375,0.224609375,0.2587890625,0.314453125,0.3994140625,0.48828125,0.5439453125,0.548828125,0.5146484375,0.46875,0.4296875,0.4140625,0.4228515625,0.44140625,0.4501953125,0.43359375,0.39453125,0.3427734375,0.2802734375,0.2421875,0.2587890625,0.3291015625,0.4208984375,0.5,0.5771484375,0.669921875,0.7509765625,0.7919921875,0.7890625,0.7626953125,0.740234375,0.70703125,0.625,0.5107421875,0.408203125,0.353515625,0.35546875,0.39453125,0.44140625,0.4912109375,0.5302734375,0.546875,0.54296875,0.533203125,0.5302734375,0.5244140625,0.4970703125,0.4521484375,0.408203125,0.3818359375,0.37890625,0.39453125,0.40625,0.3935546875,0.36328125,0.3369140625,0.3310546875,0.3525390625,0.39453125,0.44140625,0.484375,0.4970703125,0.4609375,0.388671875,0.3125,0.2587890625,0.224609375,0.2333984375,0.2783203125,0.328125,0.3486328125,0.322265625,0.2587890625,0.1826171875,0.1044921875,0.056640625,0.068359375,0.1298828125,0.205078125,0.2587890625,0.30859375,0.365234375,0.4111328125,0.427734375,0.4140625,0.38671875,0.3642578125,0.3486328125,0.349609375,0.3671875,0.3916015625,0.408203125,0.4091796875,0.39453125,0.3662109375,0.310546875,0.25390625,0.2314453125,0.2587890625,0.322265625,0.39453125,0.4697265625,0.5458984375,0.5966796875,0.5859375,0.53515625,0.482421875,0.4453125,0.4287109375,0.4296875,0.46875,0.5361328125,0.599609375,0.62890625,0.615234375,0.5703125,0.5146484375,0.4541015625,0.421875,0.4443359375,0.517578125,0.6044921875,0.673828125,0.72265625,0.7265625,0.6845703125,0.6279296875,0.595703125,0.6123046875,0.673828125,0.7490234375,0.8251953125,0.8642578125,0.841796875,0.767578125,0.6826171875,0.6220703125,0.5595703125,0.462890625,0.3642578125,0.3095703125,0.3154296875,0.3671875,0.4287109375,0.4990234375,0.587890625,0.6572265625,0.666015625,0.611328125,0.525390625,0.4482421875,0.3720703125,0.296875,0.2607421875,0.2919921875,0.3798828125,0.4794921875,0.55078125,0.609375,0.6513671875,0.6591796875,0.6337890625,0.59375,0.568359375,0.5703125,0.56640625,0.515625,0.4326171875,0.3603515625,0.3349609375,0.3642578125,0.4287109375,0.4931640625,0.5244140625,0.51953125,0.4951171875,0.48046875,0.4990234375,0.55078125,0.615234375,0.6748046875,0.697265625,0.66015625,0.578125,0.490234375,0.4287109375,0.3896484375,0.396484375,0.4521484375,0.52734375,0.583984375,0.5908203125,0.55078125,0.494140625,0.427734375,0.3798828125,0.3798828125,0.427734375,0.494140625,0.55078125,0.6064453125,0.6640625,0.6884765625,0.6513671875,0.5615234375,0.4580078125,0.376953125,0.314453125,0.2978515625,0.3505859375,0.458984375,0.5791015625,0.65625,0.673828125,0.6591796875,0.59375,0.4931640625,0.4033203125,0.359375,0.375,0.4287109375,0.494140625,0.5693359375,0.630859375,0.66015625,0.6552734375,0.6357421875,0.6220703125,0.61328125,0.611328125,0.6171875,0.6259765625,0.6318359375,0.6298828125,0.6220703125,0.599609375,0.5390625,0.4560546875,0.388671875,0.3623046875,0.3828125,0.4287109375,0.494140625,0.6025390625,0.720703125,0.7939453125,0.796875,0.744140625,0.673828125,0.5927734375,0.4921875,0.41015625,0.38671875,0.4287109375,0.5029296875,0.5703125,0.6181640625,0.6123046875,0.55078125,0.466796875,0.4052734375,0.3994140625,0.4482421875,0.5048828125,0.541015625,0.552734375,0.5517578125,0.5537109375,0.576171875,0.6220703125,0.6591796875,0.6396484375,0.564453125,0.470703125,0.4052734375,0.3994140625,0.4482421875,0.5107421875,0.5703125,0.6083984375,0.615234375,0.5966796875,0.576171875,0.5703125,0.572265625,0.5849609375,0.6044921875,0.6220703125,0.6318359375,0.630859375,0.6220703125,0.611328125,0.6044921875,0.60546875,0.619140625,0.640625,0.66015625,0.673828125,0.6923828125,0.7353515625,0.779296875,0.791015625,0.7587890625,0.6943359375,0.6220703125,0.5439453125,0.44921875,0.3623046875,0.3095703125,0.298828125,0.3125,0.3251953125,0.3271484375,0.298828125,0.2587890625,0.23828125,0.2548828125,0.3076171875,0.376953125,0.4541015625,0.5419921875,0.6220703125,0.669921875,0.6826171875,0.6767578125,0.673828125,0.673828125,0.673828125,0.669921875,0.66015625,0.646484375,0.6328125,0.6220703125,0.6044921875,0.5615234375,0.4931640625,0.4189453125,0.361328125,0.3310546875,0.3251953125,0.3193359375,0.296875,0.26953125,0.26171875,0.283203125,0.326171875,0.376953125,0.4365234375,0.515625,0.5791015625,0.587890625,0.5361328125,0.4541015625,0.376953125,0.3046875,0.2431640625,0.2314453125,0.2861328125,0.3876953125,0.4873046875,0.55078125,0.603515625,0.6552734375,0.6884765625,0.6904296875,0.666015625,0.6376953125,0.6220703125,0.603515625,0.5537109375,0.4775390625,0.3994140625,0.34375,0.3212890625,0.3251953125,0.330078125,0.314453125,0.29296875,0.2900390625,0.3173828125,0.3681640625,0.4287109375,0.486328125,0.5185546875,0.5068359375,0.453125,0.384765625,0.3369140625,0.3251953125,0.3291015625,0.34765625,0.37890625,0.41015625,0.431640625,0.4365234375,0.4287109375,0.412109375,0.376953125,0.341796875,0.3291015625,0.3505859375,0.396484375,0.4482421875,0.5029296875,0.5673828125,0.623046875,0.65234375,0.6513671875,0.634765625,0.6220703125,0.615234375,0.6201171875,0.62109375,0.6005859375,0.5537109375,0.4921875,0.4287109375,0.3798828125,0.3818359375,0.439453125,0.5244140625,0.591796875,0.607421875,0.5703125,0.5302734375,0.53515625,0.5791015625,0.630859375,0.6552734375,0.6328125,0.5703125,0.5,0.4482421875,0.4345703125,0.46484375,0.5185546875,0.5595703125,0.5703125,0.5615234375,0.525390625,0.48046875,0.4541015625,0.4658203125,0.5107421875,0.5703125,0.62109375,0.6279296875,0.5849609375,0.51953125,0.466796875,0.4599609375,0.5,0.55078125,0.5966796875,0.6259765625,0.6318359375,0.623046875,0.6162109375,0.6220703125,0.626953125,0.611328125,0.5703125,0.5146484375,0.46484375,0.4345703125,0.4287109375,0.4189453125,0.376953125,0.32421875,0.2939453125,0.306640625,0.359375,0.4287109375,0.5029296875,0.5791015625,0.638671875,0.6689453125,0.671875,0.66796875,0.673828125,0.68359375,0.6845703125,0.6552734375,0.5849609375,0.48828125,0.39453125,0.3251953125,0.2587890625,0.1875,0.1494140625,0.177734375,0.263671875,0.3662109375,0.4482421875,0.5205078125,0.587890625,0.6279296875,0.6298828125,0.6044921875,0.5771484375,0.5703125,0.55859375,0.5078125,0.435546875,0.376953125,0.361328125,0.390625,0.4482421875,0.49609375,0.490234375,0.4287109375,0.3447265625,0.283203125,0.27734375,0.3251953125,0.396484375,0.4892578125,0.5693359375,0.5966796875,0.5625,0.4951171875,0.4287109375,0.3779296875,0.37109375,0.41015625,0.466796875,0.505859375,0.4990234375,0.4482421875,0.37890625,0.298828125,0.24609375,0.2548828125,0.3251953125,0.419921875,0.5,0.580078125,0.68359375,0.7734375,0.810546875,0.787109375,0.728515625,0.673828125,0.6103515625,0.509765625,0.404296875,0.33984375,0.3388671875,0.38671875,0.4482421875,0.5107421875,0.5703125,0.6083984375,0.615234375,0.5966796875,0.576171875,0.5703125,0.560546875,0.515625,0.4501953125,0.396484375,0.37890625,0.4013671875,0.4482421875,0.4892578125,0.490234375,0.4541015625,0.40625,0.3798828125,0.3955078125,0.4482421875,0.513671875,0.5791015625,0.6083984375,0.576171875,0.4921875,0.396484375,0.3251953125,0.2763671875,0.2724609375,0.314453125,0.37109375,0.4033203125,0.38671875,0.3251953125,0.2470703125,0.1591796875,0.1005859375,0.1044921875,0.169921875,0.255859375,0.3251953125,0.3935546875,0.474609375,0.53515625,0.544921875,0.5009765625,0.4345703125,0.376953125,0.3369140625,0.337890625,0.3818359375,0.443359375,0.4873046875,0.48828125,0.4482421875,0.388671875,0.3095703125,0.24609375,0.2373046875,0.2890625,0.37109375,0.4482421875,0.5263671875,0.6142578125,0.6767578125,0.52734375,0.4931640625,0.462890625,0.4443359375,0.439453125,0.4501953125,0.50390625,0.5810546875,0.6416015625,0.6572265625,0.623046875,0.5595703125,0.4833984375,0.3955078125,0.3349609375,0.33984375,0.408203125,0.5009765625,0.5791015625,0.6376953125,0.646484375,0.6064453125,0.546875,0.5078125,0.51953125,0.5791015625,0.658203125,0.7490234375,0.8115234375,0.8076171875,0.7392578125,0.646484375,0.5693359375,0.490234375,0.3837890625,0.2900390625,0.2548828125,0.2900390625,0.365234375,0.439453125,0.5185546875,0.6181640625,0.6953125,0.708984375,0.6552734375,0.568359375,0.4892578125,0.41015625,0.3193359375,0.2587890625,0.2646484375,0.3359375,0.4306640625,0.509765625,0.578125,0.634765625,0.6572265625,0.640625,0.599609375,0.56640625,0.5595703125,0.5478515625,0.4931640625,0.4130859375,0.3505859375,0.3359375,0.373046875,0.439453125,0.5009765625,0.521484375,0.498046875,0.45703125,0.431640625,0.44921875,0.509765625,0.5859375,0.66796875,0.716796875,0.697265625,0.6171875,0.517578125,0.439453125,0.384765625,0.3828125,0.4365234375,0.5126953125,0.56640625,0.564453125,0.509765625,0.43359375,0.34375,0.2802734375,0.2802734375,0.34375,0.43359375,0.509765625,0.583984375,0.666015625,0.71484375,0.6943359375,0.6123046875,0.5107421875,0.4296875,0.36328125,0.3291015625,0.349609375,0.4189453125,0.505859375,0.5654296875,0.5791015625,0.56640625,0.5087890625,0.4248046875,0.3583984375,0.3408203125,0.375,0.439453125,0.5107421875,0.5791015625,0.6220703125,0.626953125,0.603515625,0.5771484375,0.5693359375,0.568359375,0.5673828125,0.568359375,0.5703125,0.5712890625,0.5703125,0.5693359375,0.5546875,0.498046875,0.41796875,0.35546875,0.3408203125,0.3759765625,0.439453125,0.51953125,0.6279296875,0.7255859375,0.763671875,0.73046875,0.6552734375,0.5791015625,0.4990234375,0.4033203125,0.333984375,0.3291015625,0.3916015625,0.4814453125,0.5595703125,0.6162109375,0.6181640625,0.5634765625,0.4853515625,0.4306640625,0.4326171875,0.4892578125,0.5498046875,0.5712890625,0.55078125,0.513671875,0.4921875,0.5107421875,0.5693359375,0.6240234375,0.6240234375,0.56640625,0.486328125,0.4306640625,0.4326171875,0.4892578125,0.5595703125,0.619140625,0.6474609375,0.63671875,0.599609375,0.5673828125,0.5595703125,0.5595703125,0.5615234375,0.5654296875,0.568359375,0.5703125,0.5703125,0.5693359375,0.5673828125,0.56640625,0.5673828125,0.5703125,0.57421875,0.5771484375,0.5791015625,0.5908203125,0.6328125,0.68359375,0.7109375,0.6943359375,0.6396484375,0.5693359375,0.49609375,0.423828125,0.3759765625,0.3662109375,0.38671875,0.412109375,0.419921875,0.412109375,0.3720703125,0.3212890625,0.29296875,0.3076171875,0.3603515625,0.4296875,0.5029296875,0.5732421875,0.6201171875,0.62890625,0.609375,0.5859375,0.5791015625,0.5791015625,0.5791015625,0.578125,0.576171875,0.5732421875,0.5712890625,0.5693359375,0.564453125,0.544921875,0.5107421875,0.47265625,0.4404296875,0.4228515625,0.419921875,0.41015625,0.3720703125,0.3232421875,0.296875,0.3115234375,0.36328125,0.4296875,0.505859375,0.59765625,0.6640625,0.6650390625,0.6015625,0.5087890625,0.4296875,0.3525390625,0.26953125,0.2236328125,0.24609375,0.330078125,0.4306640625,0.509765625,0.5771484375,0.6357421875,0.6630859375,0.650390625,0.6123046875,0.5791015625,0.5693359375,0.5634765625,0.5439453125,0.5087890625,0.46875,0.4375,0.421875,0.419921875,0.412109375,0.375,0.3271484375,0.302734375,0.318359375,0.37109375,0.439453125,0.5078125,0.556640625,0.564453125,0.529296875,0.47265625,0.4296875,0.419921875,0.4208984375,0.423828125,0.4296875,0.435546875,0.439453125,0.4404296875,0.439453125,0.4296875,0.39453125,0.3544921875,0.33984375,0.3642578125,0.421875,0.4892578125,0.55859375,0.619140625,0.650390625,0.6435546875,0.609375,0.578125,0.5693359375,0.57421875,0.5986328125,0.62109375,0.6171875,0.576171875,0.5107421875,0.439453125,0.3837890625,0.38671875,0.451171875,0.5419921875,0.6083984375,0.61328125,0.5595703125,0.5029296875,0.494140625,0.53515625,0.5947265625,0.6318359375,0.619140625,0.5595703125,0.4892578125,0.4375,0.423828125,0.4541015625,0.5078125,0.5498046875,0.5595703125,0.5498046875,0.5087890625,0.45703125,0.4267578125,0.4404296875,0.4912109375,0.5595703125,0.6162109375,0.62109375,0.5693359375,0.4951171875,0.4423828125,0.4443359375,0.5,0.5673828125,0.625,0.65234375,0.640625,0.60546875,0.5751953125,0.5693359375,0.568359375,0.5537109375,0.5244140625,0.490234375,0.4599609375,0.443359375,0.439453125,0.4296875,0.3876953125,0.3349609375,0.3046875,0.3173828125,0.3701171875,0.439453125,0.5126953125,0.5810546875,0.6240234375,0.6298828125,0.607421875,0.583984375,0.5791015625,0.5869140625,0.609375,0.6259765625,0.61328125,0.5634765625,0.4921875,0.419921875,0.34375,0.2587890625,0.2080078125,0.2255859375,0.306640625,0.408203125,0.4892578125,0.560546875,0.6220703125,0.650390625,0.638671875,0.6005859375,0.5673828125,0.5595703125,0.5478515625,0.4990234375,0.4306640625,0.3828125,0.3798828125,0.4228515625,0.4892578125,0.5458984375,0.5478515625,0.4931640625,0.416015625,0.361328125,0.36328125,0.419921875,0.498046875,0.5927734375,0.662109375,0.6669921875,0.6064453125,0.517578125,0.439453125,0.3828125,0.3779296875,0.4287109375,0.5009765625,0.55078125,0.546875,0.4892578125,0.412109375,0.3203125,0.255859375,0.2578125,0.3251953125,0.419921875,0.5,0.5810546875,0.6826171875,0.7646484375,0.7841796875,0.736328125,0.654296875,0.5791015625,0.5009765625,0.3994140625,0.314453125,0.2900390625,0.333984375,0.4140625,0.4892578125,0.5595703125,0.619140625,0.6474609375,0.63671875,0.599609375,0.5673828125,0.5595703125,0.5478515625,0.5,0.43359375,0.3857421875,0.3828125,0.4248046875,0.4892578125,0.5458984375,0.5556640625,0.515625,0.45703125,0.419921875,0.4306640625,0.4892578125,0.5654296875,0.6494140625,0.69921875,0.6806640625,0.599609375,0.4990234375,0.419921875,0.361328125,0.3525390625,0.392578125,0.4521484375,0.4912109375,0.4794921875,0.419921875,0.33984375,0.2470703125,0.181640625,0.1826171875,0.2490234375,0.341796875,0.419921875,0.498046875,0.58984375,0.65625,0.658203125,0.595703125,0.505859375,0.4296875,0.3740234375,0.37109375,0.4228515625,0.49609375,0.5478515625,0.544921875,0.4892578125,0.4130859375,0.3212890625,0.2548828125,0.25390625,0.318359375,0.41015625,0.4892578125,0.5693359375,0.662109375,0.728515625,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.4765625,0.5126953125,0.5419921875,0.5576171875,0.5595703125,0.564453125,0.5869140625,0.607421875,0.6005859375,0.55859375,0.4912109375,0.419921875,0.341796875,0.25,0.185546875,0.1875,0.255859375,0.349609375,0.4296875,0.490234375,0.5029296875,0.4658203125,0.4091796875,0.37109375,0.380859375,0.439453125,0.517578125,0.609375,0.6748046875,0.6748046875,0.609375,0.517578125,0.439453125,0.3642578125,0.287109375,0.25,0.283203125,0.3779296875,0.486328125,0.5693359375,0.6474609375,0.7333984375,0.78515625,0.7685546875,0.689453125,0.5888671875,0.509765625,0.4306640625,0.3369140625,0.267578125,0.26171875,0.322265625,0.412109375,0.4892578125,0.5556640625,0.59765625,0.59375,0.544921875,0.4775390625,0.4296875,0.419921875,0.4150390625,0.3935546875,0.3740234375,0.380859375,0.423828125,0.490234375,0.5595703125,0.615234375,0.6181640625,0.5673828125,0.49609375,0.4462890625,0.4521484375,0.509765625,0.5888671875,0.689453125,0.7705078125,0.7880859375,0.7392578125,0.6552734375,0.5791015625,0.51953125,0.501953125,0.5263671875,0.568359375,0.5908203125,0.5712890625,0.509765625,0.4296875,0.3369140625,0.271484375,0.2724609375,0.3388671875,0.431640625,0.509765625,0.5888671875,0.6865234375,0.763671875,0.779296875,0.7275390625,0.64453125,0.5693359375,0.5,0.4326171875,0.3896484375,0.3837890625,0.40625,0.431640625,0.439453125,0.4345703125,0.408203125,0.3818359375,0.3818359375,0.4208984375,0.4873046875,0.5595703125,0.6259765625,0.6640625,0.650390625,0.5888671875,0.5087890625,0.4521484375,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.4326171875,0.408203125,0.3857421875,0.392578125,0.4365234375,0.505859375,0.5791015625,0.6552734375,0.7275390625,0.755859375,0.712890625,0.611328125,0.5,0.419921875,0.34375,0.255859375,0.1953125,0.2001953125,0.2685546875,0.361328125,0.439453125,0.5,0.5185546875,0.4951171875,0.4541015625,0.4306640625,0.44921875,0.509765625,0.5654296875,0.5654296875,0.5078125,0.4267578125,0.369140625,0.37109375,0.4296875,0.4912109375,0.5107421875,0.4853515625,0.443359375,0.4189453125,0.4384765625,0.5,0.568359375,0.61328125,0.61328125,0.56640625,0.5,0.451171875,0.439453125,0.439453125,0.4365234375,0.4326171875,0.4267578125,0.4228515625,0.419921875,0.419921875,0.419921875,0.419921875,0.4208984375,0.4228515625,0.42578125,0.427734375,0.4296875,0.44140625,0.484375,0.5390625,0.5703125,0.55859375,0.5078125,0.439453125,0.375,0.3408203125,0.3583984375,0.4248046875,0.5087890625,0.56640625,0.5791015625,0.5693359375,0.5283203125,0.4755859375,0.443359375,0.4541015625,0.5029296875,0.5693359375,0.6318359375,0.6640625,0.64453125,0.578125,0.49609375,0.4404296875,0.4296875,0.4306640625,0.4296875,0.4267578125,0.4228515625,0.419921875,0.4189453125,0.419921875,0.42578125,0.447265625,0.484375,0.5263671875,0.560546875,0.5771484375,0.5791015625,0.5673828125,0.5244140625,0.470703125,0.44140625,0.4560546875,0.5087890625,0.5791015625,0.658203125,0.7490234375,0.8095703125,0.8037109375,0.7333984375,0.6376953125,0.5595703125,0.4794921875,0.3779296875,0.2958984375,0.27734375,0.3271484375,0.412109375,0.4892578125,0.5576171875,0.6015625,0.599609375,0.55078125,0.4814453125,0.431640625,0.419921875,0.4228515625,0.4384765625,0.46875,0.5048828125,0.5361328125,0.5546875,0.5595703125,0.5517578125,0.5126953125,0.4619140625,0.4326171875,0.4443359375,0.4931640625,0.5595703125,0.6259765625,0.6748046875,0.685546875,0.65625,0.60546875,0.5673828125,0.5595703125,0.5615234375,0.5634765625,0.564453125,0.564453125,0.5634765625,0.5615234375,0.5595703125,0.546875,0.4990234375,0.43359375,0.3896484375,0.390625,0.4345703125,0.5,0.564453125,0.60546875,0.6015625,0.552734375,0.4833984375,0.4326171875,0.419921875,0.431640625,0.4892578125,0.5732421875,0.640625,0.66015625,0.6259765625,0.5595703125,0.4970703125,0.4716796875,0.4853515625,0.513671875,0.52734375,0.501953125,0.439453125,0.37890625,0.3642578125,0.3974609375,0.451171875,0.4873046875,0.4765625,0.419921875,0.353515625,0.306640625,0.2978515625,0.33203125,0.3876953125,0.4296875,0.439453125,0.4296875,0.38671875,0.330078125,0.294921875,0.3037109375,0.3525390625,0.419921875,0.48046875,0.5,0.4775390625,0.4375,0.4130859375,0.4306640625,0.4892578125,0.5546875,0.5947265625,0.5908203125,0.54296875,0.4765625,0.4296875,0.419921875,0.4248046875,0.44140625,0.4716796875,0.5068359375,0.537109375,0.5546875,0.5595703125,0.5517578125,0.5146484375,0.466796875,0.4423828125,0.4580078125,0.5107421875,0.5791015625,0.64453125,0.677734375,0.6591796875,0.5908203125,0.5048828125,0.4443359375,0.4296875,0.44140625,0.4990234375,0.583984375,0.654296875,0.67578125,0.6435546875,0.5791015625,0.5,0.3994140625,0.318359375,0.2998046875,0.349609375,0.43359375,0.509765625,0.576171875,0.619140625,0.6162109375,0.568359375,0.5,0.451171875,0.439453125,0.4306640625,0.3955078125,0.3525390625,0.3359375,0.3603515625,0.4189453125,0.4892578125,0.5517578125,0.57421875,0.5556640625,0.51953125,0.4990234375,0.5185546875,0.5791015625,0.6572265625,0.7470703125,0.8095703125,0.8046875,0.734375,0.6396484375,0.5595703125,0.498046875,0.48046875,0.5068359375,0.5517578125,0.5791015625,0.560546875,0.5,0.419921875,0.328125,0.263671875,0.265625,0.3310546875,0.4228515625,0.5,0.57421875,0.658203125,0.708984375,0.6943359375,0.6171875,0.5185546875,0.439453125,0.3623046875,0.2763671875,0.220703125,0.2333984375,0.3095703125,0.4091796875,0.4892578125,0.5576171875,0.6015625,0.6005859375,0.5537109375,0.4873046875,0.439453125,0.4296875,0.423828125,0.3935546875,0.359375,0.3505859375,0.3798828125,0.439453125,0.509765625,0.568359375,0.578125,0.5390625,0.4794921875,0.4404296875,0.451171875,0.509765625,0.5888671875,0.689453125,0.7685546875,0.78515625,0.7333984375,0.6474609375,0.5693359375,0.509765625,0.4990234375,0.5390625,0.599609375,0.6396484375,0.62890625,0.5693359375,0.4892578125,0.3935546875,0.3251953125,0.322265625,0.38671875,0.4794921875,0.5595703125,0.6396484375,0.734375,0.8037109375,0.806640625,0.7421875,0.6484375,0.5693359375,0.5068359375,0.484375,0.5048828125,0.54296875,0.5654296875,0.5478515625,0.4892578125,0.4130859375,0.32421875,0.259765625,0.259765625,0.32421875,0.4130859375,0.4892578125,0.56640625,0.6591796875,0.7275390625,0.443359375,0.50390625,0.552734375,0.57421875,0.5703125,0.5625,0.5615234375,0.55078125,0.5166015625,0.4580078125,0.3896484375,0.3251953125,0.2568359375,0.1767578125,0.1240234375,0.1328125,0.203125,0.2978515625,0.376953125,0.439453125,0.462890625,0.44140625,0.3994140625,0.369140625,0.3779296875,0.4287109375,0.4970703125,0.578125,0.634765625,0.634765625,0.578125,0.4970703125,0.4287109375,0.3642578125,0.30078125,0.279296875,0.3251953125,0.427734375,0.5390625,0.6220703125,0.6982421875,0.7783203125,0.8212890625,0.7978515625,0.7177734375,0.6220703125,0.55078125,0.48046875,0.3876953125,0.3076171875,0.2802734375,0.314453125,0.3818359375,0.4482421875,0.5029296875,0.52734375,0.50390625,0.4404296875,0.3701171875,0.3271484375,0.3251953125,0.333984375,0.341796875,0.3603515625,0.3994140625,0.455078125,0.5166015625,0.5703125,0.6103515625,0.6103515625,0.5693359375,0.5166015625,0.486328125,0.4990234375,0.55078125,0.6220703125,0.7177734375,0.8017578125,0.833984375,0.8046875,0.73828125,0.673828125,0.62109375,0.6025390625,0.6181640625,0.6416015625,0.646484375,0.615234375,0.55078125,0.47265625,0.384765625,0.326171875,0.330078125,0.39453125,0.4814453125,0.55078125,0.619140625,0.7021484375,0.767578125,0.7822265625,0.7421875,0.677734375,0.6220703125,0.56640625,0.5,0.439453125,0.4052734375,0.40234375,0.416015625,0.4287109375,0.4326171875,0.4150390625,0.3955078125,0.3974609375,0.4345703125,0.498046875,0.5703125,0.63671875,0.671875,0.6533203125,0.5859375,0.5009765625,0.4423828125,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4248046875,0.4130859375,0.4140625,0.4482421875,0.515625,0.59765625,0.673828125,0.7421875,0.7822265625,0.755859375,0.6552734375,0.5146484375,0.3935546875,0.3251953125,0.26953125,0.2099609375,0.177734375,0.2001953125,0.2724609375,0.359375,0.4287109375,0.4833984375,0.5068359375,0.5,0.48046875,0.4736328125,0.4970703125,0.55078125,0.5966796875,0.5791015625,0.498046875,0.3955078125,0.32421875,0.3203125,0.376953125,0.4404296875,0.4658203125,0.4521484375,0.423828125,0.4111328125,0.4365234375,0.5,0.5673828125,0.611328125,0.609375,0.5595703125,0.4912109375,0.4404296875,0.4287109375,0.4267578125,0.4140625,0.390625,0.36328125,0.3408203125,0.328125,0.3251953125,0.3251953125,0.3251953125,0.3291015625,0.3388671875,0.3525390625,0.3662109375,0.376953125,0.3974609375,0.4462890625,0.505859375,0.541015625,0.533203125,0.4892578125,0.4287109375,0.375,0.359375,0.4033203125,0.4931640625,0.59375,0.6591796875,0.673828125,0.6650390625,0.62890625,0.580078125,0.544921875,0.5419921875,0.5732421875,0.6220703125,0.6640625,0.666015625,0.61328125,0.5224609375,0.431640625,0.3798828125,0.376953125,0.384765625,0.3798828125,0.3623046875,0.33984375,0.3232421875,0.318359375,0.3251953125,0.345703125,0.4013671875,0.48828125,0.580078125,0.6484375,0.6767578125,0.673828125,0.6533203125,0.6044921875,0.548828125,0.5224609375,0.5439453125,0.6025390625,0.673828125,0.7490234375,0.8251953125,0.8603515625,0.8291015625,0.7412109375,0.6416015625,0.5703125,0.4970703125,0.396484375,0.3037109375,0.267578125,0.298828125,0.3720703125,0.4482421875,0.5146484375,0.552734375,0.5380859375,0.4755859375,0.39453125,0.3388671875,0.3251953125,0.330078125,0.353515625,0.400390625,0.4609375,0.5166015625,0.5546875,0.5703125,0.5732421875,0.55078125,0.5146484375,0.4892578125,0.490234375,0.521484375,0.5703125,0.6181640625,0.6494140625,0.6513671875,0.625,0.5888671875,0.5673828125,0.5703125,0.58203125,0.5947265625,0.6044921875,0.6044921875,0.5947265625,0.58203125,0.5703125,0.55078125,0.505859375,0.4501953125,0.4140625,0.4150390625,0.4501953125,0.5,0.546875,0.568359375,0.546875,0.484375,0.4052734375,0.3466796875,0.3251953125,0.3310546875,0.39453125,0.5009765625,0.6005859375,0.6494140625,0.6328125,0.5703125,0.5068359375,0.4794921875,0.48828125,0.5107421875,0.51953125,0.4921875,0.4287109375,0.3642578125,0.328125,0.330078125,0.3544921875,0.3759765625,0.3671875,0.3251953125,0.2783203125,0.25390625,0.267578125,0.31640625,0.376953125,0.419921875,0.4287109375,0.41796875,0.3701171875,0.30078125,0.248046875,0.236328125,0.2685546875,0.3251953125,0.380859375,0.4111328125,0.412109375,0.396484375,0.3876953125,0.404296875,0.4482421875,0.4931640625,0.509765625,0.484375,0.42578125,0.3623046875,0.3251953125,0.3251953125,0.33984375,0.37109375,0.419921875,0.4755859375,0.5244140625,0.5556640625,0.5703125,0.57421875,0.55859375,0.5380859375,0.53515625,0.5615234375,0.6123046875,0.673828125,0.7275390625,0.7421875,0.6953125,0.595703125,0.482421875,0.4033203125,0.376953125,0.3828125,0.4462890625,0.556640625,0.6650390625,0.7275390625,0.724609375,0.673828125,0.6025390625,0.5068359375,0.4228515625,0.390625,0.419921875,0.4853515625,0.55078125,0.6083984375,0.6376953125,0.6220703125,0.5634765625,0.4912109375,0.4404296875,0.4287109375,0.419921875,0.3798828125,0.3310546875,0.3056640625,0.3232421875,0.3779296875,0.4482421875,0.5146484375,0.55859375,0.576171875,0.580078125,0.587890625,0.6181640625,0.673828125,0.740234375,0.814453125,0.8564453125,0.8330078125,0.7509765625,0.650390625,0.5703125,0.5087890625,0.4892578125,0.513671875,0.5556640625,0.580078125,0.560546875,0.5,0.4228515625,0.3408203125,0.2890625,0.2978515625,0.361328125,0.4404296875,0.5,0.5556640625,0.6201171875,0.66015625,0.6455078125,0.580078125,0.4970703125,0.4287109375,0.359375,0.275390625,0.21484375,0.2158203125,0.2783203125,0.369140625,0.4482421875,0.5146484375,0.552734375,0.5419921875,0.4892578125,0.421875,0.37890625,0.376953125,0.3828125,0.3759765625,0.37109375,0.38671875,0.4287109375,0.4892578125,0.55078125,0.6025390625,0.611328125,0.5771484375,0.525390625,0.4912109375,0.5,0.55078125,0.6220703125,0.7177734375,0.7978515625,0.8212890625,0.7783203125,0.6982421875,0.6220703125,0.5615234375,0.55078125,0.591796875,0.65234375,0.6923828125,0.681640625,0.6220703125,0.541015625,0.4404296875,0.3623046875,0.3486328125,0.4033203125,0.4912109375,0.5703125,0.6513671875,0.7509765625,0.830078125,0.8427734375,0.7880859375,0.7001953125,0.6220703125,0.5546875,0.5107421875,0.4970703125,0.5029296875,0.5078125,0.4912109375,0.4482421875,0.3916015625,0.32421875,0.27734375,0.27734375,0.32421875,0.3916015625,0.4482421875,0.5087890625,0.59375,0.66796875,0.4140625,0.48046875,0.5322265625,0.5478515625,0.5302734375,0.50390625,0.478515625,0.447265625,0.4052734375,0.3564453125,0.3056640625,0.2587890625,0.20703125,0.1455078125,0.1064453125,0.123046875,0.1943359375,0.28515625,0.3642578125,0.4296875,0.46875,0.4716796875,0.4501953125,0.4287109375,0.4326171875,0.46875,0.51953125,0.5791015625,0.62109375,0.62109375,0.5791015625,0.51953125,0.46875,0.4189453125,0.3642578125,0.33984375,0.3720703125,0.4560546875,0.5546875,0.634765625,0.7099609375,0.78515625,0.826171875,0.806640625,0.73828125,0.6591796875,0.6044921875,0.5498046875,0.4638671875,0.375,0.3193359375,0.314453125,0.3486328125,0.39453125,0.431640625,0.4326171875,0.3916015625,0.3251953125,0.2666015625,0.2431640625,0.2587890625,0.2880859375,0.3291015625,0.380859375,0.4326171875,0.4775390625,0.5087890625,0.5302734375,0.5439453125,0.5400390625,0.5263671875,0.51953125,0.5302734375,0.5615234375,0.6044921875,0.658203125,0.734375,0.806640625,0.8427734375,0.830078125,0.787109375,0.740234375,0.703125,0.6953125,0.7099609375,0.7236328125,0.7138671875,0.6708984375,0.6044921875,0.5283203125,0.4501953125,0.40234375,0.4140625,0.4755859375,0.55078125,0.6044921875,0.65234375,0.7001953125,0.7294921875,0.7255859375,0.6953125,0.6591796875,0.634765625,0.609375,0.5595703125,0.5,0.4521484375,0.4345703125,0.4443359375,0.46875,0.486328125,0.4716796875,0.4365234375,0.4111328125,0.41796875,0.4619140625,0.5302734375,0.5986328125,0.6435546875,0.642578125,0.5966796875,0.529296875,0.48046875,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.4658203125,0.45703125,0.4638671875,0.5048828125,0.5791015625,0.6640625,0.740234375,0.8017578125,0.806640625,0.7265625,0.5771484375,0.412109375,0.298828125,0.2587890625,0.2392578125,0.224609375,0.234375,0.2783203125,0.34765625,0.41796875,0.46875,0.509765625,0.533203125,0.5380859375,0.53515625,0.5400390625,0.5634765625,0.6044921875,0.6328125,0.595703125,0.4970703125,0.3837890625,0.3095703125,0.306640625,0.3642578125,0.4267578125,0.4541015625,0.4443359375,0.4189453125,0.4091796875,0.4365234375,0.5,0.568359375,0.6171875,0.6240234375,0.5849609375,0.525390625,0.4794921875,0.46875,0.4638671875,0.4384765625,0.3916015625,0.3359375,0.2890625,0.263671875,0.2587890625,0.2578125,0.2548828125,0.2587890625,0.275390625,0.3037109375,0.3359375,0.3642578125,0.3984375,0.45703125,0.5185546875,0.5546875,0.5498046875,0.5146484375,0.46875,0.431640625,0.4306640625,0.4833984375,0.57421875,0.66796875,0.7275390625,0.740234375,0.7353515625,0.7109375,0.673828125,0.6376953125,0.6181640625,0.619140625,0.634765625,0.6435546875,0.609375,0.5322265625,0.44140625,0.3720703125,0.34765625,0.3642578125,0.3837890625,0.375,0.3369140625,0.2861328125,0.248046875,0.2392578125,0.2587890625,0.2998046875,0.392578125,0.5244140625,0.6513671875,0.734375,0.7578125,0.740234375,0.7041015625,0.6435546875,0.5849609375,0.56640625,0.5986328125,0.6669921875,0.740234375,0.8115234375,0.8642578125,0.8642578125,0.7978515625,0.689453125,0.5888671875,0.5302734375,0.47265625,0.380859375,0.2890625,0.2421875,0.2587890625,0.3212890625,0.39453125,0.4609375,0.4970703125,0.48046875,0.4140625,0.330078125,0.2724609375,0.2587890625,0.26171875,0.279296875,0.3203125,0.3798828125,0.4453125,0.498046875,0.5302734375,0.552734375,0.5615234375,0.5517578125,0.533203125,0.5166015625,0.5146484375,0.5302734375,0.544921875,0.54296875,0.52734375,0.5078125,0.4990234375,0.5068359375,0.5302734375,0.5595703125,0.59375,0.6181640625,0.6181640625,0.59375,0.5595703125,0.5302734375,0.5009765625,0.466796875,0.44140625,0.4365234375,0.4521484375,0.478515625,0.5,0.515625,0.515625,0.4853515625,0.4248046875,0.3525390625,0.29296875,0.2587890625,0.25,0.3046875,0.4140625,0.52734375,0.59375,0.58984375,0.5302734375,0.46875,0.4501953125,0.4775390625,0.521484375,0.548828125,0.5302734375,0.46875,0.3974609375,0.330078125,0.2841796875,0.2666015625,0.26953125,0.2724609375,0.2587890625,0.2451171875,0.2568359375,0.30078125,0.3642578125,0.4248046875,0.4619140625,0.46875,0.4580078125,0.40625,0.3251953125,0.2509765625,0.2119140625,0.2197265625,0.2587890625,0.3037109375,0.341796875,0.3662109375,0.375,0.375,0.37890625,0.39453125,0.40625,0.3876953125,0.341796875,0.287109375,0.2470703125,0.2392578125,0.2587890625,0.287109375,0.32421875,0.3701171875,0.4189453125,0.46484375,0.501953125,0.5302734375,0.5537109375,0.572265625,0.5908203125,0.6162109375,0.6513671875,0.6943359375,0.740234375,0.779296875,0.7822265625,0.7255859375,0.619140625,0.49609375,0.404296875,0.3642578125,0.353515625,0.40625,0.5185546875,0.6484375,0.744140625,0.771484375,0.740234375,0.6865234375,0.6103515625,0.5380859375,0.501953125,0.5146484375,0.5576171875,0.6044921875,0.6455078125,0.662109375,0.640625,0.5849609375,0.521484375,0.478515625,0.46875,0.45703125,0.40625,0.3369140625,0.2861328125,0.283203125,0.326171875,0.39453125,0.4658203125,0.5341796875,0.5908203125,0.6328125,0.6640625,0.6982421875,0.740234375,0.7890625,0.8388671875,0.853515625,0.8095703125,0.71484375,0.6103515625,0.5302734375,0.4697265625,0.455078125,0.48828125,0.541015625,0.57421875,0.5595703125,0.5,0.4267578125,0.36328125,0.3359375,0.3583984375,0.416015625,0.470703125,0.5,0.5234375,0.560546875,0.5908203125,0.59375,0.564453125,0.5166015625,0.46875,0.4130859375,0.3291015625,0.2509765625,0.2197265625,0.25,0.3203125,0.39453125,0.4599609375,0.4931640625,0.48046875,0.4306640625,0.375,0.3486328125,0.3642578125,0.388671875,0.4111328125,0.435546875,0.46875,0.51171875,0.55859375,0.6044921875,0.642578125,0.6494140625,0.6240234375,0.5849609375,0.5595703125,0.56640625,0.6044921875,0.6591796875,0.73828125,0.806640625,0.826171875,0.78515625,0.7099609375,0.634765625,0.5751953125,0.564453125,0.6044921875,0.6650390625,0.705078125,0.6943359375,0.634765625,0.552734375,0.4462890625,0.35546875,0.328125,0.37109375,0.4521484375,0.5302734375,0.6123046875,0.71875,0.8095703125,0.8369140625,0.7939453125,0.7119140625,0.634765625,0.5625,0.4912109375,0.4384765625,0.4140625,0.41015625,0.408203125,0.39453125,0.373046875,0.3486328125,0.3310546875,0.3310546875,0.3486328125,0.373046875,0.39453125,0.4248046875,0.4931640625,0.57421875,0.40234375,0.4609375,0.5029296875,0.5048828125,0.46875,0.423828125,0.380859375,0.3447265625,0.3193359375,0.3017578125,0.283203125,0.2587890625,0.2265625,0.181640625,0.154296875,0.1708984375,0.2333984375,0.3173828125,0.39453125,0.4638671875,0.517578125,0.541015625,0.53515625,0.5166015625,0.5107421875,0.5302734375,0.5595703125,0.59375,0.6181640625,0.6181640625,0.59375,0.5595703125,0.5302734375,0.49609375,0.4443359375,0.40234375,0.4033203125,0.4521484375,0.529296875,0.6044921875,0.6787109375,0.75,0.7900390625,0.7783203125,0.7275390625,0.669921875,0.634765625,0.599609375,0.5322265625,0.447265625,0.375,0.3388671875,0.3408203125,0.3642578125,0.380859375,0.361328125,0.30859375,0.2509765625,0.2158203125,0.220703125,0.2587890625,0.310546875,0.3798828125,0.44921875,0.494140625,0.50390625,0.4892578125,0.46875,0.451171875,0.44140625,0.4560546875,0.49609375,0.552734375,0.6025390625,0.634765625,0.6669921875,0.7138671875,0.76171875,0.7900390625,0.7890625,0.7666015625,0.740234375,0.7216796875,0.7314453125,0.7568359375,0.7705078125,0.7529296875,0.703125,0.634765625,0.5615234375,0.494140625,0.4609375,0.48046875,0.5380859375,0.599609375,0.634765625,0.6572265625,0.662109375,0.6455078125,0.619140625,0.595703125,0.5908203125,0.6044921875,0.615234375,0.59375,0.546875,0.4990234375,0.4775390625,0.490234375,0.5302734375,0.5625,0.546875,0.48828125,0.4228515625,0.388671875,0.4072265625,0.46875,0.5400390625,0.6005859375,0.626953125,0.6123046875,0.572265625,0.5380859375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5244140625,0.5087890625,0.501953125,0.52734375,0.587890625,0.6650390625,0.740234375,0.7958984375,0.779296875,0.6708984375,0.5048828125,0.34765625,0.26171875,0.2587890625,0.2802734375,0.3115234375,0.35546875,0.408203125,0.458984375,0.5009765625,0.5302734375,0.5546875,0.5712890625,0.580078125,0.5849609375,0.59375,0.6103515625,0.634765625,0.6455078125,0.59375,0.4912109375,0.3857421875,0.326171875,0.333984375,0.39453125,0.45703125,0.48046875,0.4638671875,0.4306640625,0.4140625,0.4375,0.5,0.5703125,0.6259765625,0.646484375,0.6240234375,0.5771484375,0.5390625,0.5302734375,0.5234375,0.490234375,0.4306640625,0.3583984375,0.2978515625,0.265625,0.2587890625,0.255859375,0.24609375,0.2421875,0.2587890625,0.2978515625,0.3466796875,0.39453125,0.4453125,0.509765625,0.568359375,0.5966796875,0.587890625,0.55859375,0.5302734375,0.5087890625,0.515625,0.5576171875,0.6240234375,0.6904296875,0.7314453125,0.740234375,0.7392578125,0.734375,0.7177734375,0.6904296875,0.65625,0.6259765625,0.6044921875,0.5751953125,0.5087890625,0.4248046875,0.3583984375,0.333984375,0.3525390625,0.39453125,0.4287109375,0.4189453125,0.36328125,0.2900390625,0.234375,0.224609375,0.2587890625,0.3203125,0.4384765625,0.587890625,0.71484375,0.7802734375,0.779296875,0.740234375,0.685546875,0.611328125,0.5498046875,0.5380859375,0.5849609375,0.6640625,0.740234375,0.8076171875,0.841796875,0.814453125,0.7236328125,0.60546875,0.5107421875,0.46875,0.4306640625,0.357421875,0.275390625,0.228515625,0.23828125,0.29296875,0.3642578125,0.431640625,0.470703125,0.4609375,0.40234375,0.326171875,0.271484375,0.2587890625,0.2578125,0.2568359375,0.26953125,0.306640625,0.361328125,0.419921875,0.46875,0.515625,0.5595703125,0.5830078125,0.5712890625,0.5341796875,0.494140625,0.46875,0.4443359375,0.404296875,0.3671875,0.35546875,0.3779296875,0.4228515625,0.46875,0.51953125,0.5791015625,0.62109375,0.62109375,0.5791015625,0.51953125,0.46875,0.4287109375,0.41015625,0.4228515625,0.4580078125,0.4951171875,0.5107421875,0.5,0.4814453125,0.46484375,0.44140625,0.4052734375,0.357421875,0.3056640625,0.2587890625,0.2294921875,0.263671875,0.35546875,0.4609375,0.5283203125,0.52734375,0.46875,0.4111328125,0.4072265625,0.4609375,0.5380859375,0.591796875,0.587890625,0.5302734375,0.451171875,0.3544921875,0.2666015625,0.2177734375,0.2138671875,0.2373046875,0.2587890625,0.283203125,0.330078125,0.39453125,0.4580078125,0.50390625,0.5263671875,0.5302734375,0.51953125,0.4716796875,0.3916015625,0.30859375,0.2529296875,0.2392578125,0.2587890625,0.2900390625,0.3330078125,0.375,0.3994140625,0.400390625,0.3837890625,0.3642578125,0.3369140625,0.2841796875,0.2236328125,0.1845703125,0.18359375,0.21484375,0.2587890625,0.3017578125,0.333984375,0.35546875,0.373046875,0.39453125,0.4267578125,0.46875,0.515625,0.56640625,0.6162109375,0.6572265625,0.6884765625,0.71484375,0.740234375,0.763671875,0.767578125,0.7294921875,0.6455078125,0.541015625,0.4501953125,0.39453125,0.3623046875,0.3857421875,0.474609375,0.5966796875,0.7021484375,0.7509765625,0.740234375,0.7080078125,0.6611328125,0.61328125,0.5849609375,0.5859375,0.6083984375,0.634765625,0.658203125,0.6650390625,0.646484375,0.607421875,0.564453125,0.5361328125,0.5302734375,0.515625,0.4541015625,0.36328125,0.2900390625,0.265625,0.2978515625,0.3642578125,0.4384765625,0.521484375,0.599609375,0.6572265625,0.6923828125,0.7158203125,0.740234375,0.76953125,0.7978515625,0.794921875,0.7431640625,0.6494140625,0.548828125,0.46875,0.41015625,0.4033203125,0.4501953125,0.5185546875,0.5654296875,0.55859375,0.5,0.4326171875,0.390625,0.3916015625,0.4306640625,0.48046875,0.5078125,0.5,0.4853515625,0.490234375,0.513671875,0.541015625,0.556640625,0.5517578125,0.5302734375,0.490234375,0.4091796875,0.3134765625,0.2509765625,0.2470703125,0.294921875,0.3642578125,0.4287109375,0.4580078125,0.4443359375,0.40234375,0.3642578125,0.359375,0.39453125,0.4404296875,0.4873046875,0.5302734375,0.5634765625,0.587890625,0.6103515625,0.634765625,0.6572265625,0.6611328125,0.646484375,0.6240234375,0.609375,0.61328125,0.634765625,0.669921875,0.7275390625,0.7783203125,0.7900390625,0.75,0.6787109375,0.6044921875,0.544921875,0.5341796875,0.57421875,0.634765625,0.6748046875,0.6640625,0.6044921875,0.521484375,0.4111328125,0.314453125,0.2783203125,0.314453125,0.392578125,0.46875,0.5517578125,0.6630859375,0.759765625,0.794921875,0.7587890625,0.681640625,0.6044921875,0.5263671875,0.43359375,0.3525390625,0.3115234375,0.314453125,0.3408203125,0.3642578125,0.384765625,0.41015625,0.427734375,0.427734375,0.41015625,0.384765625,0.3642578125,0.3583984375,0.4033203125,0.4833984375,0.4150390625,0.4619140625,0.4921875,0.48046875,0.4287109375,0.3681640625,0.3173828125,0.2900390625,0.29296875,0.314453125,0.330078125,0.3251953125,0.30859375,0.2744140625,0.24609375,0.251953125,0.30078125,0.3740234375,0.4482421875,0.5185546875,0.580078125,0.61328125,0.6103515625,0.5859375,0.5673828125,0.5703125,0.58203125,0.5947265625,0.6044921875,0.6044921875,0.5947265625,0.58203125,0.5703125,0.5498046875,0.498046875,0.4384765625,0.4072265625,0.423828125,0.48046875,0.55078125,0.6240234375,0.69140625,0.7275390625,0.720703125,0.6806640625,0.6396484375,0.6220703125,0.6044921875,0.5615234375,0.4970703125,0.4326171875,0.3876953125,0.37109375,0.376953125,0.3779296875,0.34375,0.2880859375,0.244140625,0.236328125,0.2685546875,0.3251953125,0.39453125,0.4814453125,0.5546875,0.5771484375,0.544921875,0.484375,0.4287109375,0.3828125,0.3623046875,0.388671875,0.4560546875,0.5390625,0.599609375,0.6220703125,0.634765625,0.654296875,0.67578125,0.689453125,0.69140625,0.68359375,0.673828125,0.671875,0.7001953125,0.740234375,0.7607421875,0.744140625,0.69140625,0.6220703125,0.55078125,0.4921875,0.470703125,0.4970703125,0.552734375,0.6015625,0.6220703125,0.623046875,0.5927734375,0.541015625,0.49609375,0.482421875,0.5048828125,0.55078125,0.5927734375,0.5966796875,0.564453125,0.521484375,0.4990234375,0.5166015625,0.5703125,0.6162109375,0.6025390625,0.529296875,0.435546875,0.37109375,0.37109375,0.4287109375,0.501953125,0.5712890625,0.6162109375,0.623046875,0.6015625,0.5771484375,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5625,0.533203125,0.5029296875,0.5,0.5361328125,0.6015625,0.673828125,0.7275390625,0.708984375,0.6064453125,0.462890625,0.3408203125,0.2939453125,0.3251953125,0.3798828125,0.4404296875,0.4970703125,0.53515625,0.5537109375,0.5615234375,0.5703125,0.580078125,0.587890625,0.59375,0.5986328125,0.6044921875,0.6123046875,0.6220703125,0.6181640625,0.5625,0.47265625,0.3916015625,0.3583984375,0.3837890625,0.4482421875,0.5087890625,0.525390625,0.4970703125,0.4501953125,0.421875,0.4384765625,0.5,0.5712890625,0.6318359375,0.6611328125,0.6494140625,0.611328125,0.578125,0.5703125,0.564453125,0.5341796875,0.48046875,0.416015625,0.361328125,0.3310546875,0.3251953125,0.3203125,0.298828125,0.2802734375,0.287109375,0.3251953125,0.3857421875,0.4482421875,0.51171875,0.5771484375,0.6240234375,0.634765625,0.6142578125,0.5859375,0.5703125,0.5625,0.5673828125,0.5888671875,0.6201171875,0.6513671875,0.669921875,0.673828125,0.677734375,0.6923828125,0.703125,0.6923828125,0.6552734375,0.603515625,0.55078125,0.490234375,0.4052734375,0.3271484375,0.294921875,0.3212890625,0.3837890625,0.4482421875,0.49609375,0.490234375,0.4287109375,0.3447265625,0.283203125,0.27734375,0.3251953125,0.40234375,0.5244140625,0.6591796875,0.7509765625,0.771484375,0.7333984375,0.673828125,0.603515625,0.517578125,0.4521484375,0.4482421875,0.5068359375,0.5947265625,0.673828125,0.7392578125,0.767578125,0.734375,0.6435546875,0.5341796875,0.455078125,0.4287109375,0.408203125,0.3525390625,0.28515625,0.24609375,0.2548828125,0.3076171875,0.376953125,0.4462890625,0.4921875,0.494140625,0.4501953125,0.384765625,0.3369140625,0.3251953125,0.3193359375,0.296875,0.2734375,0.275390625,0.3095703125,0.3671875,0.4287109375,0.49609375,0.5703125,0.619140625,0.615234375,0.5595703125,0.4873046875,0.4287109375,0.37109375,0.2978515625,0.2431640625,0.23828125,0.2880859375,0.3623046875,0.4287109375,0.4970703125,0.578125,0.634765625,0.634765625,0.578125,0.4970703125,0.4287109375,0.3779296875,0.37109375,0.4140625,0.4794921875,0.5322265625,0.5390625,0.5,0.4541015625,0.431640625,0.4287109375,0.4306640625,0.4189453125,0.3818359375,0.3251953125,0.2783203125,0.2880859375,0.3525390625,0.4365234375,0.4921875,0.48828125,0.4287109375,0.3720703125,0.37890625,0.4501953125,0.548828125,0.6201171875,0.626953125,0.5703125,0.4873046875,0.3759765625,0.26953125,0.2138671875,0.22265625,0.271484375,0.3251953125,0.380859375,0.4482421875,0.51171875,0.5546875,0.5712890625,0.5712890625,0.5703125,0.5625,0.52734375,0.46484375,0.3955078125,0.34375,0.3212890625,0.3251953125,0.34375,0.3876953125,0.4384765625,0.4697265625,0.4638671875,0.4267578125,0.376953125,0.318359375,0.2392578125,0.171875,0.154296875,0.1923828125,0.259765625,0.3251953125,0.37890625,0.4013671875,0.3896484375,0.365234375,0.353515625,0.375,0.4287109375,0.4931640625,0.5615234375,0.619140625,0.6533203125,0.6640625,0.666015625,0.673828125,0.6865234375,0.7021484375,0.7001953125,0.662109375,0.5927734375,0.5146484375,0.4482421875,0.39453125,0.3837890625,0.4296875,0.5205078125,0.6142578125,0.669921875,0.673828125,0.66015625,0.640625,0.619140625,0.60546875,0.6044921875,0.611328125,0.6220703125,0.630859375,0.6318359375,0.6220703125,0.6044921875,0.5849609375,0.572265625,0.5703125,0.5556640625,0.490234375,0.3935546875,0.3125,0.283203125,0.3125,0.376953125,0.4521484375,0.53515625,0.6064453125,0.650390625,0.6640625,0.666015625,0.673828125,0.6875,0.70703125,0.7080078125,0.669921875,0.59375,0.505859375,0.4287109375,0.37109375,0.369140625,0.4248046875,0.50390625,0.5595703125,0.5576171875,0.5,0.4365234375,0.4140625,0.4384765625,0.490234375,0.5341796875,0.5390625,0.5,0.453125,0.4306640625,0.4443359375,0.4892578125,0.541015625,0.5712890625,0.5703125,0.5458984375,0.47265625,0.3740234375,0.2978515625,0.275390625,0.310546875,0.376953125,0.4404296875,0.4658203125,0.44921875,0.4111328125,0.384765625,0.396484375,0.4482421875,0.509765625,0.5703125,0.6123046875,0.6279296875,0.623046875,0.6162109375,0.6220703125,0.6298828125,0.6318359375,0.6259765625,0.6171875,0.611328125,0.61328125,0.6220703125,0.6396484375,0.6806640625,0.720703125,0.7275390625,0.69140625,0.6240234375,0.55078125,0.4912109375,0.48046875,0.5205078125,0.5810546875,0.6220703125,0.611328125,0.55078125,0.46875,0.359375,0.265625,0.2333984375,0.2724609375,0.3525390625,0.4287109375,0.51171875,0.6201171875,0.71484375,0.7470703125,0.70703125,0.6279296875,0.55078125,0.470703125,0.3671875,0.27734375,0.240234375,0.263671875,0.322265625,0.376953125,0.43359375,0.5009765625,0.5478515625,0.5478515625,0.5009765625,0.43359375,0.376953125,0.3408203125,0.359375,0.4306640625,0.44140625,0.4873046875,0.515625,0.4990234375,0.439453125,0.37109375,0.318359375,0.302734375,0.3271484375,0.375,0.412109375,0.419921875,0.41015625,0.375,0.3369140625,0.326171875,0.3564453125,0.41796875,0.4892578125,0.560546875,0.62109375,0.6484375,0.6357421875,0.59765625,0.56640625,0.5595703125,0.5615234375,0.5634765625,0.564453125,0.564453125,0.5634765625,0.5615234375,0.5595703125,0.546875,0.498046875,0.4326171875,0.3896484375,0.3935546875,0.4404296875,0.509765625,0.5810546875,0.6416015625,0.6689453125,0.6552734375,0.615234375,0.5791015625,0.5693359375,0.564453125,0.544921875,0.5126953125,0.4755859375,0.4462890625,0.4306640625,0.4296875,0.421875,0.380859375,0.326171875,0.2939453125,0.302734375,0.3525390625,0.419921875,0.498046875,0.5908203125,0.6591796875,0.6640625,0.603515625,0.515625,0.439453125,0.3759765625,0.3408203125,0.35546875,0.41796875,0.498046875,0.5546875,0.5693359375,0.5712890625,0.5751953125,0.578125,0.5810546875,0.58203125,0.5810546875,0.5791015625,0.5869140625,0.626953125,0.677734375,0.7060546875,0.69140625,0.638671875,0.5693359375,0.4990234375,0.4462890625,0.431640625,0.4609375,0.5146484375,0.5576171875,0.5693359375,0.5595703125,0.5146484375,0.4501953125,0.404296875,0.4033203125,0.4443359375,0.509765625,0.5673828125,0.5830078125,0.5546875,0.5087890625,0.482421875,0.5,0.5595703125,0.6142578125,0.609375,0.54296875,0.451171875,0.3857421875,0.3828125,0.439453125,0.5126953125,0.5791015625,0.619140625,0.6201171875,0.59375,0.56640625,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5498046875,0.5107421875,0.4619140625,0.4365234375,0.4541015625,0.5087890625,0.5791015625,0.6357421875,0.62890625,0.5556640625,0.4541015625,0.3779296875,0.3671875,0.419921875,0.4892578125,0.5556640625,0.59765625,0.60546875,0.5859375,0.5634765625,0.5595703125,0.560546875,0.5625,0.5634765625,0.564453125,0.56640625,0.5673828125,0.5693359375,0.55859375,0.5087890625,0.4375,0.3857421875,0.3798828125,0.421875,0.4892578125,0.5498046875,0.5615234375,0.5234375,0.4658203125,0.427734375,0.439453125,0.5,0.5703125,0.6298828125,0.6572265625,0.642578125,0.6025390625,0.568359375,0.5595703125,0.5556640625,0.5390625,0.5078125,0.470703125,0.4404296875,0.4228515625,0.419921875,0.412109375,0.37890625,0.3427734375,0.33203125,0.3603515625,0.419921875,0.4892578125,0.5595703125,0.6201171875,0.650390625,0.6396484375,0.6025390625,0.5693359375,0.5595703125,0.55859375,0.5595703125,0.5634765625,0.5693359375,0.5751953125,0.578125,0.5791015625,0.5869140625,0.6181640625,0.6533203125,0.6640625,0.6357421875,0.5771484375,0.509765625,0.4326171875,0.33984375,0.2705078125,0.2646484375,0.32421875,0.412109375,0.4892578125,0.5458984375,0.5478515625,0.4931640625,0.416015625,0.361328125,0.36328125,0.419921875,0.5009765625,0.6123046875,0.7138671875,0.755859375,0.7255859375,0.6533203125,0.5791015625,0.5009765625,0.408203125,0.341796875,0.3408203125,0.40625,0.5,0.5791015625,0.646484375,0.6826171875,0.666015625,0.599609375,0.5146484375,0.4541015625,0.439453125,0.427734375,0.3837890625,0.328125,0.2958984375,0.3076171875,0.3603515625,0.4296875,0.4990234375,0.55078125,0.5615234375,0.5283203125,0.47265625,0.4296875,0.419921875,0.41015625,0.3720703125,0.32421875,0.2998046875,0.3173828125,0.37109375,0.439453125,0.517578125,0.6083984375,0.671875,0.671875,0.6064453125,0.515625,0.439453125,0.36328125,0.2724609375,0.2080078125,0.20703125,0.271484375,0.3623046875,0.439453125,0.517578125,0.609375,0.6748046875,0.6748046875,0.609375,0.517578125,0.439453125,0.3828125,0.3779296875,0.4296875,0.50390625,0.556640625,0.5546875,0.5,0.4404296875,0.421875,0.443359375,0.4814453125,0.5009765625,0.48046875,0.419921875,0.3623046875,0.35546875,0.400390625,0.46484375,0.5087890625,0.4990234375,0.439453125,0.3828125,0.38671875,0.453125,0.5458984375,0.6123046875,0.6162109375,0.5595703125,0.4765625,0.3671875,0.2724609375,0.2373046875,0.271484375,0.3466796875,0.419921875,0.4892578125,0.556640625,0.6005859375,0.6083984375,0.5888671875,0.5654296875,0.5595703125,0.5556640625,0.5380859375,0.505859375,0.4677734375,0.4375,0.421875,0.419921875,0.4306640625,0.4736328125,0.5263671875,0.5576171875,0.5458984375,0.49609375,0.4296875,0.353515625,0.26171875,0.1943359375,0.19140625,0.2529296875,0.3427734375,0.419921875,0.478515625,0.4912109375,0.45703125,0.40234375,0.3681640625,0.380859375,0.439453125,0.5107421875,0.578125,0.62109375,0.626953125,0.6064453125,0.583984375,0.5791015625,0.5888671875,0.619140625,0.65234375,0.6572265625,0.623046875,0.5595703125,0.4892578125,0.423828125,0.384765625,0.392578125,0.4462890625,0.5185546875,0.5693359375,0.5791015625,0.5771484375,0.57421875,0.5703125,0.5673828125,0.56640625,0.5673828125,0.5693359375,0.5703125,0.5703125,0.568359375,0.5654296875,0.5615234375,0.5595703125,0.5595703125,0.5458984375,0.4892578125,0.40625,0.341796875,0.326171875,0.36328125,0.4296875,0.5029296875,0.572265625,0.6181640625,0.6259765625,0.6064453125,0.583984375,0.5791015625,0.587890625,0.61328125,0.6357421875,0.62890625,0.5830078125,0.5126953125,0.439453125,0.380859375,0.3779296875,0.431640625,0.5078125,0.5615234375,0.5576171875,0.5,0.439453125,0.4267578125,0.4638671875,0.5234375,0.564453125,0.5556640625,0.5,0.4345703125,0.392578125,0.39453125,0.4404296875,0.50390625,0.5498046875,0.5595703125,0.544921875,0.486328125,0.4033203125,0.33984375,0.3251953125,0.3623046875,0.4296875,0.4912109375,0.509765625,0.484375,0.4404296875,0.4130859375,0.4296875,0.4892578125,0.5595703125,0.619140625,0.6484375,0.6396484375,0.60546875,0.5751953125,0.5693359375,0.5703125,0.5712890625,0.5703125,0.568359375,0.5673828125,0.568359375,0.5693359375,0.5791015625,0.615234375,0.6552734375,0.6689453125,0.6416015625,0.5810546875,0.509765625,0.44921875,0.439453125,0.4794921875,0.5400390625,0.580078125,0.5693359375,0.509765625,0.427734375,0.3251953125,0.2431640625,0.224609375,0.2763671875,0.361328125,0.439453125,0.521484375,0.6240234375,0.7060546875,0.724609375,0.6728515625,0.587890625,0.509765625,0.4287109375,0.326171875,0.244140625,0.224609375,0.2734375,0.35546875,0.4296875,0.505859375,0.595703125,0.6591796875,0.6591796875,0.595703125,0.505859375,0.4296875,0.375,0.375,0.431640625,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.4990234375,0.57421875,0.626953125,0.625,0.5693359375,0.5029296875,0.4521484375,0.4384765625,0.4658203125,0.5146484375,0.5517578125,0.5595703125,0.546875,0.498046875,0.4326171875,0.3896484375,0.3935546875,0.4404296875,0.509765625,0.5771484375,0.62109375,0.6181640625,0.5673828125,0.49609375,0.443359375,0.4296875,0.4287109375,0.4296875,0.4326171875,0.4365234375,0.439453125,0.4404296875,0.439453125,0.4296875,0.3935546875,0.3525390625,0.3369140625,0.361328125,0.419921875,0.4892578125,0.556640625,0.6015625,0.603515625,0.560546875,0.4970703125,0.4501953125,0.439453125,0.443359375,0.4599609375,0.4912109375,0.5283203125,0.55859375,0.576171875,0.5791015625,0.5693359375,0.5283203125,0.4765625,0.447265625,0.4599609375,0.5107421875,0.5791015625,0.6572265625,0.7490234375,0.814453125,0.814453125,0.7490234375,0.6572265625,0.5791015625,0.5078125,0.439453125,0.3955078125,0.388671875,0.4091796875,0.43359375,0.439453125,0.439453125,0.435546875,0.4296875,0.423828125,0.419921875,0.4189453125,0.419921875,0.431640625,0.4755859375,0.533203125,0.5673828125,0.5576171875,0.5078125,0.439453125,0.37109375,0.3173828125,0.3017578125,0.3271484375,0.3779296875,0.4189453125,0.4296875,0.4228515625,0.3896484375,0.349609375,0.3349609375,0.3603515625,0.4189453125,0.4892578125,0.5478515625,0.5517578125,0.498046875,0.421875,0.3681640625,0.37109375,0.4296875,0.4921875,0.5185546875,0.5078125,0.4814453125,0.4697265625,0.49609375,0.5595703125,0.6259765625,0.6630859375,0.6484375,0.5859375,0.505859375,0.451171875,0.439453125,0.44140625,0.4404296875,0.4375,0.4326171875,0.4267578125,0.421875,0.419921875,0.4091796875,0.3701171875,0.32421875,0.30078125,0.3193359375,0.3720703125,0.439453125,0.4990234375,0.5234375,0.509765625,0.4833984375,0.4716796875,0.498046875,0.5595703125,0.6240234375,0.6572265625,0.6376953125,0.5703125,0.4873046875,0.4306640625,0.419921875,0.421875,0.42578125,0.4306640625,0.4345703125,0.4384765625,0.439453125,0.439453125,0.431640625,0.3994140625,0.3623046875,0.3515625,0.3798828125,0.439453125,0.509765625,0.568359375,0.578125,0.5380859375,0.4765625,0.4345703125,0.443359375,0.5,0.564453125,0.6064453125,0.6044921875,0.55859375,0.4951171875,0.44921875,0.439453125,0.4443359375,0.462890625,0.494140625,0.5302734375,0.560546875,0.576171875,0.5791015625,0.5673828125,0.5146484375,0.44140625,0.38671875,0.3798828125,0.421875,0.4892578125,0.55859375,0.60546875,0.609375,0.56640625,0.5009765625,0.4521484375,0.439453125,0.4375,0.43359375,0.4296875,0.4248046875,0.421875,0.419921875,0.419921875,0.431640625,0.4833984375,0.5556640625,0.6083984375,0.6162109375,0.5751953125,0.509765625,0.431640625,0.33984375,0.2744140625,0.2744140625,0.33984375,0.431640625,0.509765625,0.5693359375,0.5888671875,0.564453125,0.5244140625,0.5,0.51953125,0.5791015625,0.654296875,0.728515625,0.7626953125,0.7255859375,0.6298828125,0.5205078125,0.439453125,0.3623046875,0.26953125,0.205078125,0.205078125,0.26953125,0.3623046875,0.439453125,0.5107421875,0.5771484375,0.6181640625,0.62109375,0.595703125,0.568359375,0.5595703125,0.5478515625,0.505859375,0.455078125,0.427734375,0.4443359375,0.4990234375,0.5693359375,0.638671875,0.6904296875,0.701171875,0.66796875,0.6123046875,0.5693359375,0.5595703125,0.5498046875,0.5078125,0.4541015625,0.423828125,0.4375,0.4892578125,0.5595703125,0.638671875,0.73046875,0.794921875,0.7939453125,0.7275390625,0.6357421875,0.5595703125,0.4833984375,0.3935546875,0.330078125,0.330078125,0.3935546875,0.4833984375,0.5595703125,0.6357421875,0.7275390625,0.7939453125,0.794921875,0.73046875,0.638671875,0.5595703125,0.498046875,0.48046875,0.5078125,0.5546875,0.583984375,0.568359375,0.509765625,0.4521484375,0.4482421875,0.498046875,0.5703125,0.62109375,0.6162109375,0.5595703125,0.501953125,0.494140625,0.5390625,0.6044921875,0.6484375,0.638671875,0.5791015625,0.515625,0.4833984375,0.4853515625,0.5029296875,0.5078125,0.48046875,0.419921875,0.3466796875,0.2734375,0.2392578125,0.275390625,0.3701171875,0.478515625,0.5595703125,0.6240234375,0.6591796875,0.642578125,0.5771484375,0.4931640625,0.4345703125,0.419921875,0.421875,0.4404296875,0.4755859375,0.5185546875,0.5546875,0.5751953125,0.5791015625,0.5888671875,0.6298828125,0.6806640625,0.7080078125,0.693359375,0.6396484375,0.5693359375,0.490234375,0.3984375,0.3349609375,0.337890625,0.4072265625,0.5009765625,0.5791015625,0.63671875,0.6455078125,0.6025390625,0.5400390625,0.4990234375,0.509765625,0.5693359375,0.6357421875,0.669921875,0.6513671875,0.5830078125,0.4990234375,0.44140625,0.4296875,0.443359375,0.494140625,0.5634765625,0.611328125,0.61328125,0.568359375,0.5,0.427734375,0.3662109375,0.3349609375,0.34375,0.3798828125,0.412109375,0.419921875,0.419921875,0.4228515625,0.42578125,0.4296875,0.4306640625,0.4306640625,0.4296875,0.4287109375,0.4287109375,0.4306640625,0.43359375,0.4375,0.439453125,0.439453125,0.43359375,0.4091796875,0.388671875,0.3955078125,0.439453125,0.5078125,0.5791015625,0.6435546875,0.67578125,0.654296875,0.583984375,0.4990234375,0.44140625,0.4296875,0.4443359375,0.5048828125,0.5888671875,0.65625,0.6728515625,0.6357421875,0.5693359375,0.5078125,0.486328125,0.5087890625,0.548828125,0.57421875,0.5576171875,0.5,0.443359375,0.4345703125,0.4755859375,0.53515625,0.572265625,0.5595703125,0.5,0.4287109375,0.369140625,0.341796875,0.3564453125,0.396484375,0.4306640625,0.439453125,0.43359375,0.4091796875,0.38671875,0.392578125,0.43359375,0.5,0.5693359375,0.6240234375,0.6240234375,0.5673828125,0.490234375,0.4365234375,0.4404296875,0.5,0.5673828125,0.611328125,0.6083984375,0.5576171875,0.4853515625,0.43359375,0.419921875,0.41796875,0.416015625,0.4140625,0.4140625,0.416015625,0.41796875,0.419921875,0.4326171875,0.484375,0.5537109375,0.6015625,0.6025390625,0.5576171875,0.4892578125,0.4306640625,0.421875,0.466796875,0.5322265625,0.5771484375,0.568359375,0.509765625,0.431640625,0.345703125,0.2919921875,0.306640625,0.3837890625,0.4814453125,0.5595703125,0.634765625,0.71875,0.7724609375,0.7607421875,0.685546875,0.587890625,0.509765625,0.4326171875,0.3466796875,0.2939453125,0.3095703125,0.3876953125,0.48828125,0.5693359375,0.6494140625,0.7431640625,0.8095703125,0.8095703125,0.7431640625,0.6494140625,0.5693359375,0.5078125,0.48828125,0.513671875,0.5361328125,0.6025390625,0.654296875,0.6611328125,0.6220703125,0.572265625,0.53515625,0.521484375,0.5341796875,0.55859375,0.57421875,0.5703125,0.5498046875,0.498046875,0.4384765625,0.4072265625,0.423828125,0.48046875,0.55078125,0.6181640625,0.6552734375,0.6376953125,0.56640625,0.4716796875,0.4013671875,0.376953125,0.3701171875,0.375,0.3916015625,0.4140625,0.431640625,0.4365234375,0.4287109375,0.4111328125,0.3701171875,0.326171875,0.3095703125,0.3330078125,0.38671875,0.4482421875,0.5068359375,0.5498046875,0.556640625,0.525390625,0.4755859375,0.4375,0.4287109375,0.4345703125,0.46484375,0.5185546875,0.5830078125,0.6376953125,0.66796875,0.673828125,0.6650390625,0.62890625,0.5830078125,0.5576171875,0.5693359375,0.61328125,0.673828125,0.7412109375,0.822265625,0.87890625,0.87890625,0.822265625,0.7412109375,0.673828125,0.6083984375,0.533203125,0.4677734375,0.4287109375,0.419921875,0.42578125,0.4287109375,0.4248046875,0.40625,0.3759765625,0.34375,0.3232421875,0.318359375,0.3251953125,0.3466796875,0.40234375,0.4736328125,0.5224609375,0.5263671875,0.4873046875,0.4287109375,0.3662109375,0.3095703125,0.279296875,0.287109375,0.3232421875,0.3603515625,0.376953125,0.37890625,0.353515625,0.3173828125,0.3017578125,0.3232421875,0.3779296875,0.4482421875,0.505859375,0.5078125,0.4521484375,0.373046875,0.3173828125,0.3193359375,0.376953125,0.44140625,0.4755859375,0.478515625,0.46875,0.4716796875,0.505859375,0.5703125,0.634765625,0.6640625,0.638671875,0.56640625,0.4833984375,0.4326171875,0.4287109375,0.4384765625,0.439453125,0.42578125,0.3984375,0.3662109375,0.33984375,0.3251953125,0.310546875,0.2861328125,0.26953125,0.279296875,0.3193359375,0.3759765625,0.4287109375,0.4736328125,0.4921875,0.4873046875,0.4765625,0.4814453125,0.513671875,0.5703125,0.623046875,0.6318359375,0.5810546875,0.486328125,0.3876953125,0.330078125,0.3251953125,0.337890625,0.3583984375,0.3828125,0.40625,0.421875,0.427734375,0.4287109375,0.4228515625,0.40234375,0.3837890625,0.390625,0.4287109375,0.48828125,0.55078125,0.6025390625,0.611328125,0.5732421875,0.51171875,0.46484375,0.4599609375,0.5,0.5458984375,0.568359375,0.5546875,0.509765625,0.4580078125,0.427734375,0.4287109375,0.4443359375,0.482421875,0.5380859375,0.5986328125,0.6455078125,0.6689453125,0.673828125,0.658203125,0.5888671875,0.4853515625,0.3955078125,0.3583984375,0.3837890625,0.4482421875,0.5185546875,0.5751953125,0.591796875,0.560546875,0.5009765625,0.44921875,0.4287109375,0.4169921875,0.396484375,0.37109375,0.3486328125,0.3330078125,0.326171875,0.3251953125,0.33984375,0.40234375,0.498046875,0.583984375,0.623046875,0.60546875,0.55078125,0.4833984375,0.40234375,0.345703125,0.345703125,0.40234375,0.4833984375,0.55078125,0.60546875,0.62890625,0.6220703125,0.6025390625,0.595703125,0.619140625,0.673828125,0.736328125,0.787109375,0.7890625,0.724609375,0.61328125,0.5029296875,0.4287109375,0.3603515625,0.2802734375,0.2236328125,0.2236328125,0.2802734375,0.3603515625,0.4287109375,0.4931640625,0.5615234375,0.6123046875,0.6279296875,0.611328125,0.5849609375,0.5703125,0.55078125,0.5078125,0.4638671875,0.4521484375,0.484375,0.548828125,0.6220703125,0.6904296875,0.736328125,0.73828125,0.6943359375,0.62890625,0.5810546875,0.5703125,0.5595703125,0.5185546875,0.46484375,0.4345703125,0.4482421875,0.5,0.5703125,0.646484375,0.728515625,0.7802734375,0.771484375,0.708984375,0.6298828125,0.5703125,0.513671875,0.4462890625,0.3994140625,0.3994140625,0.4462890625,0.513671875,0.5703125,0.6298828125,0.708984375,0.771484375,0.7802734375,0.728515625,0.646484375,0.5703125,0.5087890625,0.4892578125,0.517578125,0.5693359375,0.6064453125,0.6015625,0.55078125,0.5,0.4931640625,0.5322265625,0.5888671875,0.6279296875,0.62109375,0.5703125,0.5224609375,0.5322265625,0.59765625,0.6806640625,0.736328125,0.732421875,0.673828125,0.6025390625,0.537109375,0.484375,0.4443359375,0.4111328125,0.373046875,0.3251953125,0.2734375,0.23046875,0.2294921875,0.2900390625,0.3935546875,0.498046875,0.5703125,0.625,0.646484375,0.611328125,0.525390625,0.4228515625,0.349609375,0.3251953125,0.3232421875,0.3583984375,0.43359375,0.5302734375,0.615234375,0.6640625,0.673828125,0.6826171875,0.7177734375,0.759765625,0.7763671875,0.7509765625,0.6923828125,0.6220703125,0.544921875,0.462890625,0.4150390625,0.43359375,0.509765625,0.6025390625,0.673828125,0.7216796875,0.71875,0.6650390625,0.5947265625,0.55078125,0.5615234375,0.6220703125,0.6845703125,0.701171875,0.65234375,0.552734375,0.4462890625,0.3828125,0.376953125,0.400390625,0.46484375,0.546875,0.60546875,0.611328125,0.568359375,0.5,0.42578125,0.3525390625,0.2998046875,0.2841796875,0.298828125,0.3193359375,0.3251953125,0.328125,0.3408203125,0.3603515625,0.3779296875,0.3876953125,0.3857421875,0.376953125,0.3681640625,0.3671875,0.376953125,0.39453125,0.4140625,0.4267578125,0.4287109375,0.42578125,0.419921875,0.4287109375,0.4677734375,0.533203125,0.6083984375,0.673828125,0.724609375,0.7275390625,0.6650390625,0.556640625,0.4462890625,0.3828125,0.376953125,0.4033203125,0.482421875,0.591796875,0.6826171875,0.7158203125,0.6875,0.6220703125,0.556640625,0.5185546875,0.515625,0.53515625,0.552734375,0.5419921875,0.5,0.4599609375,0.46484375,0.5087890625,0.560546875,0.5849609375,0.5625,0.5,0.427734375,0.3671875,0.337890625,0.349609375,0.3876953125,0.4208984375,0.4287109375,0.4267578125,0.419921875,0.4248046875,0.4541015625,0.5068359375,0.5673828125,0.6220703125,0.658203125,0.6396484375,0.568359375,0.4833984375,0.431640625,0.439453125,0.5,0.56640625,0.6044921875,0.5859375,0.5146484375,0.419921875,0.349609375,0.3251953125,0.314453125,0.30078125,0.291015625,0.291015625,0.30078125,0.314453125,0.3251953125,0.3486328125,0.4130859375,0.4951171875,0.5537109375,0.5595703125,0.5166015625,0.4482421875,0.390625,0.392578125,0.455078125,0.5439453125,0.6064453125,0.6083984375,0.55078125,0.474609375,0.39453125,0.34765625,0.361328125,0.4287109375,0.509765625,0.5703125,0.6279296875,0.6982421875,0.7490234375,0.7490234375,0.6953125,0.6181640625,0.55078125,0.4833984375,0.4052734375,0.3564453125,0.3701171875,0.4453125,0.5419921875,0.6220703125,0.701171875,0.7958984375,0.8623046875,0.8623046875,0.7958984375,0.701171875,0.6220703125,0.55859375,0.533203125,0.546875,0.5576171875,0.5927734375,0.6298828125,0.646484375,0.634765625,0.6181640625,0.6064453125,0.599609375,0.5908203125,0.576171875,0.5556640625,0.5302734375,0.49609375,0.4443359375,0.40234375,0.4033203125,0.4521484375,0.529296875,0.6044921875,0.6728515625,0.7109375,0.6904296875,0.607421875,0.4951171875,0.4052734375,0.3642578125,0.3447265625,0.353515625,0.3916015625,0.44140625,0.4794921875,0.48828125,0.46875,0.435546875,0.380859375,0.3251953125,0.2978515625,0.30859375,0.3486328125,0.39453125,0.4404296875,0.482421875,0.5078125,0.5078125,0.4912109375,0.4736328125,0.46875,0.4755859375,0.5087890625,0.568359375,0.640625,0.701171875,0.7333984375,0.740234375,0.7333984375,0.70703125,0.673828125,0.654296875,0.6630859375,0.6962890625,0.740234375,0.7900390625,0.849609375,0.892578125,0.892578125,0.849609375,0.7900390625,0.740234375,0.689453125,0.6240234375,0.5546875,0.501953125,0.4755859375,0.46875,0.46875,0.4609375,0.419921875,0.353515625,0.2861328125,0.244140625,0.23828125,0.2587890625,0.2958984375,0.3671875,0.4521484375,0.5166015625,0.53515625,0.51171875,0.46875,0.4189453125,0.357421875,0.306640625,0.2861328125,0.3017578125,0.3349609375,0.3642578125,0.380859375,0.361328125,0.3203125,0.2861328125,0.287109375,0.3271484375,0.39453125,0.453125,0.4609375,0.4140625,0.3447265625,0.2978515625,0.3046875,0.3642578125,0.427734375,0.458984375,0.455078125,0.4384765625,0.435546875,0.4658203125,0.5302734375,0.5947265625,0.6240234375,0.6044921875,0.546875,0.484375,0.455078125,0.46875,0.4931640625,0.5029296875,0.48046875,0.4248046875,0.353515625,0.29296875,0.2587890625,0.2353515625,0.23046875,0.2587890625,0.3173828125,0.3876953125,0.4423828125,0.46875,0.482421875,0.4775390625,0.4609375,0.44921875,0.45703125,0.4873046875,0.5302734375,0.564453125,0.548828125,0.4775390625,0.375,0.2861328125,0.24609375,0.2587890625,0.2890625,0.333984375,0.3857421875,0.4306640625,0.4580078125,0.4677734375,0.46875,0.4658203125,0.4560546875,0.4521484375,0.46875,0.5078125,0.5576171875,0.6044921875,0.6435546875,0.6533203125,0.6240234375,0.568359375,0.5146484375,0.490234375,0.5,0.513671875,0.5087890625,0.4853515625,0.4580078125,0.4423828125,0.447265625,0.46875,0.5009765625,0.5537109375,0.619140625,0.6787109375,0.7197265625,0.7373046875,0.740234375,0.7216796875,0.638671875,0.5078125,0.3857421875,0.322265625,0.3330078125,0.39453125,0.4697265625,0.546875,0.595703125,0.5966796875,0.5546875,0.5029296875,0.46875,0.4384765625,0.3935546875,0.341796875,0.2978515625,0.2705078125,0.259765625,0.2587890625,0.2734375,0.341796875,0.4521484375,0.5634765625,0.6318359375,0.640625,0.6044921875,0.5546875,0.4951171875,0.4521484375,0.4521484375,0.4951171875,0.5546875,0.6044921875,0.6455078125,0.6689453125,0.673828125,0.6708984375,0.67578125,0.69921875,0.740234375,0.7841796875,0.810546875,0.7919921875,0.720703125,0.6181640625,0.525390625,0.46875,0.4189453125,0.359375,0.3173828125,0.3173828125,0.359375,0.4189453125,0.46875,0.5185546875,0.57421875,0.6162109375,0.6240234375,0.5986328125,0.560546875,0.5302734375,0.4970703125,0.4482421875,0.4140625,0.421875,0.478515625,0.5595703125,0.634765625,0.7021484375,0.7421875,0.7314453125,0.673828125,0.5966796875,0.5419921875,0.5302734375,0.51953125,0.478515625,0.4248046875,0.39453125,0.4072265625,0.4599609375,0.5302734375,0.6025390625,0.666015625,0.693359375,0.6708984375,0.6142578125,0.55859375,0.5302734375,0.5087890625,0.484375,0.4658203125,0.4658203125,0.484375,0.5087890625,0.5302734375,0.55859375,0.6142578125,0.6708984375,0.693359375,0.666015625,0.6025390625,0.5302734375,0.4677734375,0.451171875,0.48828125,0.5576171875,0.619140625,0.63671875,0.6044921875,0.5654296875,0.548828125,0.5576171875,0.576171875,0.5849609375,0.5693359375,0.5302734375,0.5009765625,0.53515625,0.626953125,0.7314453125,0.798828125,0.798828125,0.740234375,0.662109375,0.5615234375,0.455078125,0.3662109375,0.3095703125,0.2783203125,0.2587890625,0.240234375,0.2333984375,0.2568359375,0.31640625,0.3994140625,0.4765625,0.5302734375,0.5712890625,0.5869140625,0.5546875,0.474609375,0.3759765625,0.296875,0.2587890625,0.244140625,0.283203125,0.3857421875,0.5244140625,0.6513671875,0.7255859375,0.740234375,0.748046875,0.7763671875,0.806640625,0.8095703125,0.7724609375,0.70703125,0.634765625,0.5615234375,0.4951171875,0.4716796875,0.5107421875,0.595703125,0.68359375,0.740234375,0.771484375,0.75,0.681640625,0.6044921875,0.560546875,0.57421875,0.634765625,0.6943359375,0.69921875,0.6318359375,0.5185546875,0.41015625,0.3544921875,0.3642578125,0.4033203125,0.48046875,0.568359375,0.6240234375,0.62109375,0.5693359375,0.5,0.423828125,0.3427734375,0.275390625,0.2421875,0.2421875,0.2548828125,0.2587890625,0.2646484375,0.29296875,0.3359375,0.375,0.3935546875,0.3876953125,0.3642578125,0.3408203125,0.333984375,0.3525390625,0.3916015625,0.4345703125,0.462890625,0.46875,0.46875,0.4755859375,0.501953125,0.5546875,0.6240234375,0.689453125,0.740234375,0.771484375,0.744140625,0.6484375,0.5185546875,0.40625,0.353515625,0.3642578125,0.40625,0.5,0.619140625,0.708984375,0.7373046875,0.7021484375,0.634765625,0.564453125,0.5068359375,0.4775390625,0.48046875,0.5,0.5107421875,0.5,0.4912109375,0.5185546875,0.568359375,0.607421875,0.6083984375,0.56640625,0.5,0.4287109375,0.373046875,0.3525390625,0.375,0.421875,0.4599609375,0.46875,0.470703125,0.4794921875,0.501953125,0.5380859375,0.5791015625,0.6123046875,0.634765625,0.640625,0.595703125,0.515625,0.44140625,0.41015625,0.435546875,0.5,0.5673828125,0.60546875,0.5849609375,0.501953125,0.390625,0.2998046875,0.2587890625,0.2294921875,0.1953125,0.1708984375,0.1708984375,0.1953125,0.2294921875,0.2587890625,0.2978515625,0.375,0.4638671875,0.5185546875,0.515625,0.46484375,0.39453125,0.33984375,0.3544921875,0.44140625,0.5576171875,0.64453125,0.6591796875,0.6044921875,0.5302734375,0.4580078125,0.4140625,0.416015625,0.45703125,0.5029296875,0.5302734375,0.556640625,0.60546875,0.6591796875,0.6904296875,0.6845703125,0.6494140625,0.6044921875,0.55078125,0.48046875,0.4248046875,0.421875,0.4755859375,0.55859375,0.634765625,0.71484375,0.80859375,0.8759765625,0.8759765625,0.80859375,0.71484375,0.634765625,0.572265625,0.544921875,0.5546875,0.5458984375,0.541015625,0.5576171875,0.5830078125,0.6044921875,0.6259765625,0.650390625,0.6572265625,0.6328125,0.580078125,0.51953125,0.46875,0.4189453125,0.3642578125,0.33984375,0.3720703125,0.4560546875,0.5546875,0.634765625,0.705078125,0.7548828125,0.748046875,0.673828125,0.55859375,0.4541015625,0.39453125,0.359375,0.369140625,0.4248046875,0.4990234375,0.5546875,0.564453125,0.5302734375,0.478515625,0.4091796875,0.3447265625,0.30859375,0.310546875,0.3359375,0.3642578125,0.3935546875,0.4326171875,0.474609375,0.5078125,0.5244140625,0.529296875,0.5302734375,0.53515625,0.560546875,0.607421875,0.6630859375,0.7099609375,0.7353515625,0.740234375,0.736328125,0.720703125,0.701171875,0.6904296875,0.6953125,0.71484375,0.740234375,0.76953125,0.8037109375,0.828125,0.828125,0.8037109375,0.76953125,0.740234375,0.7099609375,0.6650390625,0.61328125,0.568359375,0.541015625,0.53125,0.5302734375,0.517578125,0.4580078125,0.36328125,0.2734375,0.220703125,0.220703125,0.2587890625,0.3134765625,0.39453125,0.482421875,0.546875,0.568359375,0.5556640625,0.5302734375,0.4951171875,0.4326171875,0.36328125,0.3203125,0.3173828125,0.349609375,0.39453125,0.427734375,0.416015625,0.36328125,0.306640625,0.279296875,0.3017578125,0.3642578125,0.4248046875,0.4384765625,0.4052734375,0.3525390625,0.3193359375,0.333984375,0.39453125,0.4560546875,0.4755859375,0.4521484375,0.4111328125,0.3876953125,0.4072265625,0.46875,0.5341796875,0.5673828125,0.560546875,0.52734375,0.4951171875,0.494140625,0.5302734375,0.57421875,0.6005859375,0.58203125,0.5107421875,0.408203125,0.3154296875,0.2587890625,0.2236328125,0.234375,0.30078125,0.3994140625,0.490234375,0.5361328125,0.5302734375,0.505859375,0.4697265625,0.4326171875,0.4140625,0.4189453125,0.4423828125,0.46875,0.4833984375,0.451171875,0.375,0.2890625,0.2314453125,0.2236328125,0.2587890625,0.3095703125,0.375,0.4443359375,0.4970703125,0.5234375,0.5302734375,0.5302734375,0.5283203125,0.5263671875,0.5302734375,0.546875,0.5751953125,0.6064453125,0.634765625,0.66015625,0.673828125,0.6630859375,0.6240234375,0.5703125,0.5244140625,0.5,0.4755859375,0.4384765625,0.408203125,0.4052734375,0.4345703125,0.482421875,0.5302734375,0.5791015625,0.6376953125,0.6923828125,0.7294921875,0.7421875,0.7412109375,0.740234375,0.7216796875,0.6337890625,0.4970703125,0.3671875,0.2958984375,0.302734375,0.3642578125,0.4443359375,0.54296875,0.626953125,0.6591796875,0.634765625,0.580078125,0.5302734375,0.4794921875,0.4130859375,0.3447265625,0.2919921875,0.265625,0.2587890625,0.2587890625,0.271484375,0.33203125,0.435546875,0.546875,0.6259765625,0.65234375,0.634765625,0.60546875,0.5712890625,0.546875,0.546875,0.5712890625,0.60546875,0.634765625,0.6591796875,0.67578125,0.6845703125,0.6904296875,0.69921875,0.7158203125,0.740234375,0.7646484375,0.7734375,0.7509765625,0.6953125,0.6240234375,0.564453125,0.5302734375,0.5009765625,0.4658203125,0.44140625,0.44140625,0.4658203125,0.5009765625,0.5302734375,0.560546875,0.5986328125,0.6240234375,0.6162109375,0.57421875,0.5185546875,0.46875,0.41796875,0.359375,0.328125,0.3525390625,0.4296875,0.525390625,0.6044921875,0.6708984375,0.70703125,0.6904296875,0.6240234375,0.5400390625,0.482421875,0.46875,0.458984375,0.41796875,0.3642578125,0.333984375,0.3466796875,0.3994140625,0.46875,0.5361328125,0.578125,0.5771484375,0.5380859375,0.48828125,0.4609375,0.46875,0.490234375,0.5146484375,0.533203125,0.533203125,0.5146484375,0.490234375,0.46875,0.4609375,0.48828125,0.5380859375,0.5771484375,0.578125,0.5361328125,0.46875,0.4072265625,0.3896484375,0.43359375,0.5185546875,0.6044921875,0.646484375,0.634765625,0.609375,0.5849609375,0.5625,0.541015625,0.51953125,0.4951171875,0.46875,0.4599609375,0.5146484375,0.6240234375,0.7373046875,0.8037109375,0.7998046875,0.740234375,0.65625,0.5341796875,0.3994140625,0.294921875,0.244140625,0.2421875,0.2587890625,0.2783203125,0.302734375,0.3330078125,0.3701171875,0.4072265625,0.44140625,0.46875,0.49609375,0.5166015625,0.5078125,0.4609375,0.3857421875,0.3115234375,0.2587890625,0.2255859375,0.2509765625,0.3505859375,0.4970703125,0.6376953125,0.72265625,0.740234375,0.7470703125,0.7724609375,0.794921875,0.7900390625,0.74609375,0.677734375,0.6044921875,0.5341796875,0.4833984375,0.48046875,0.53515625,0.6240234375,0.701171875,0.740234375,0.7529296875,0.7138671875,0.634765625,0.5576171875,0.521484375,0.5419921875,0.6044921875,0.6630859375,0.6640625,0.5966796875,0.4912109375,0.3994140625,0.365234375,0.39453125,0.451171875,0.5380859375,0.6240234375,0.6630859375,0.638671875,0.5732421875,0.5,0.423828125,0.3427734375,0.275390625,0.2421875,0.2421875,0.2548828125,0.2587890625,0.2685546875,0.3115234375,0.375,0.4306640625,0.4521484375,0.435546875,0.39453125,0.353515625,0.3369140625,0.3583984375,0.4140625,0.4775390625,0.5205078125,0.5302734375,0.53125,0.541015625,0.568359375,0.61328125,0.6650390625,0.7099609375,0.740234375,0.7509765625,0.7021484375,0.5966796875,0.474609375,0.3857421875,0.3623046875,0.39453125,0.453125,0.5537109375,0.662109375,0.7294921875,0.7294921875,0.67578125,0.6044921875,0.529296875,0.453125,0.40234375,0.3974609375,0.4306640625,0.4736328125,0.5,0.5283203125,0.5830078125,0.640625,0.6630859375,0.6357421875,0.572265625,0.5,0.4306640625,0.3818359375,0.375,0.4140625,0.4736328125,0.51953125,0.5302734375,0.5341796875,0.5546875,0.5849609375,0.61328125,0.6259765625,0.62109375,0.6044921875,0.57421875,0.505859375,0.4248046875,0.375,0.37890625,0.4296875,0.5,0.5703125,0.619140625,0.61328125,0.5380859375,0.4228515625,0.318359375,0.2587890625,0.208984375,0.1494140625,0.1064453125,0.1064453125,0.1494140625,0.208984375,0.2587890625,0.3154296875,0.4033203125,0.48828125,0.52734375,0.50390625,0.4375,0.3642578125,0.310546875,0.3330078125,0.43359375,0.5654296875,0.666015625,0.6884765625,0.634765625,0.564453125,0.5029296875,0.4658203125,0.4609375,0.4736328125,0.4814453125,0.46875,0.4580078125,0.4794921875,0.533203125,0.595703125,0.642578125,0.654296875,0.634765625,0.5986328125,0.5341796875,0.46875,0.44140625,0.4677734375,0.5322265625,0.6044921875,0.6845703125,0.7783203125,0.8447265625,0.8447265625,0.7783203125,0.6845703125,0.6044921875,0.5419921875,0.5185546875,0.53515625,0.501953125,0.4658203125,0.466796875,0.501953125,0.55078125,0.6064453125,0.6640625,0.6923828125,0.6640625,0.587890625,0.4990234375,0.4287109375,0.3642578125,0.30078125,0.279296875,0.3251953125,0.427734375,0.5390625,0.6220703125,0.6962890625,0.7626953125,0.783203125,0.732421875,0.62890625,0.521484375,0.4482421875,0.3994140625,0.4052734375,0.466796875,0.55078125,0.6123046875,0.6181640625,0.5703125,0.5048828125,0.4296875,0.3681640625,0.3388671875,0.34375,0.36328125,0.376953125,0.3916015625,0.4228515625,0.4677734375,0.5146484375,0.5498046875,0.5673828125,0.5703125,0.572265625,0.5849609375,0.6083984375,0.6357421875,0.658203125,0.6708984375,0.673828125,0.671875,0.666015625,0.658203125,0.6533203125,0.6552734375,0.6630859375,0.673828125,0.6845703125,0.6982421875,0.7080078125,0.7080078125,0.6982421875,0.6845703125,0.673828125,0.6611328125,0.640625,0.6162109375,0.5927734375,0.5771484375,0.5712890625,0.5703125,0.5556640625,0.490234375,0.390625,0.2998046875,0.2568359375,0.271484375,0.3251953125,0.392578125,0.47265625,0.546875,0.58984375,0.5966796875,0.5830078125,0.5703125,0.548828125,0.490234375,0.416015625,0.361328125,0.353515625,0.3896484375,0.4482421875,0.49609375,0.490234375,0.4326171875,0.357421875,0.3095703125,0.3173828125,0.376953125,0.4384765625,0.4580078125,0.43359375,0.3916015625,0.3671875,0.38671875,0.4482421875,0.5068359375,0.515625,0.4716796875,0.4052734375,0.361328125,0.3701171875,0.4287109375,0.4931640625,0.52734375,0.5263671875,0.5078125,0.4970703125,0.5166015625,0.5703125,0.6328125,0.68359375,0.685546875,0.62109375,0.509765625,0.3994140625,0.3251953125,0.2783203125,0.29296875,0.3740234375,0.486328125,0.5771484375,0.60546875,0.5703125,0.515625,0.455078125,0.40625,0.38671875,0.39453125,0.4150390625,0.4287109375,0.427734375,0.3876953125,0.3203125,0.2626953125,0.2431640625,0.26953125,0.3251953125,0.390625,0.4658203125,0.53125,0.5703125,0.5791015625,0.5732421875,0.5703125,0.5693359375,0.5703125,0.57421875,0.5830078125,0.5966796875,0.6103515625,0.6220703125,0.6357421875,0.658203125,0.6708984375,0.65625,0.611328125,0.5537109375,0.5,0.443359375,0.37890625,0.3388671875,0.353515625,0.4189453125,0.501953125,0.5703125,0.6318359375,0.689453125,0.7236328125,0.7255859375,0.7021484375,0.6796875,0.673828125,0.65625,0.5791015625,0.458984375,0.3505859375,0.2978515625,0.314453125,0.376953125,0.4599609375,0.5712890625,0.673828125,0.7197265625,0.6982421875,0.634765625,0.5703125,0.5048828125,0.4296875,0.3642578125,0.3251953125,0.31640625,0.3232421875,0.3251953125,0.333984375,0.3759765625,0.4501953125,0.5322265625,0.5966796875,0.625,0.6220703125,0.6103515625,0.5966796875,0.5869140625,0.5869140625,0.5966796875,0.6103515625,0.6220703125,0.6318359375,0.6396484375,0.6455078125,0.650390625,0.6552734375,0.6630859375,0.673828125,0.6826171875,0.68359375,0.669921875,0.642578125,0.6103515625,0.583984375,0.5703125,0.55859375,0.544921875,0.53515625,0.53515625,0.544921875,0.55859375,0.5703125,0.5849609375,0.611328125,0.6279296875,0.6123046875,0.5615234375,0.4931640625,0.4287109375,0.3623046875,0.2900390625,0.2529296875,0.28125,0.3671875,0.4697265625,0.55078125,0.6181640625,0.6552734375,0.6416015625,0.5791015625,0.498046875,0.44140625,0.4287109375,0.4189453125,0.376953125,0.32421875,0.2939453125,0.306640625,0.359375,0.4287109375,0.4912109375,0.5146484375,0.490234375,0.4375,0.3935546875,0.3896484375,0.4287109375,0.4853515625,0.552734375,0.599609375,0.599609375,0.552734375,0.4853515625,0.4287109375,0.3896484375,0.3935546875,0.4375,0.490234375,0.5146484375,0.4912109375,0.4287109375,0.365234375,0.341796875,0.3798828125,0.46484375,0.5595703125,0.6171875,0.6220703125,0.6083984375,0.583984375,0.546875,0.50390625,0.466796875,0.4423828125,0.4287109375,0.4345703125,0.498046875,0.6044921875,0.7041015625,0.7529296875,0.736328125,0.673828125,0.5888671875,0.4638671875,0.3349609375,0.251953125,0.2373046875,0.2744140625,0.3251953125,0.3759765625,0.419921875,0.4443359375,0.4462890625,0.4326171875,0.423828125,0.4287109375,0.4453125,0.4755859375,0.5,0.4951171875,0.4521484375,0.3896484375,0.3251953125,0.2744140625,0.271484375,0.337890625,0.455078125,0.5791015625,0.6572265625,0.673828125,0.6806640625,0.70703125,0.7333984375,0.7314453125,0.69140625,0.6240234375,0.55078125,0.482421875,0.439453125,0.4453125,0.50390625,0.5859375,0.650390625,0.673828125,0.6708984375,0.6220703125,0.54296875,0.4755859375,0.4541015625,0.4853515625,0.55078125,0.6103515625,0.6142578125,0.55859375,0.4755859375,0.41015625,0.400390625,0.4482421875,0.5185546875,0.611328125,0.6875,0.7060546875,0.658203125,0.576171875,0.5,0.42578125,0.3525390625,0.2998046875,0.2841796875,0.298828125,0.3193359375,0.3251953125,0.3369140625,0.3876953125,0.4609375,0.5185546875,0.5341796875,0.5048828125,0.4482421875,0.390625,0.361328125,0.376953125,0.435546875,0.5078125,0.55859375,0.5703125,0.5712890625,0.5771484375,0.5927734375,0.6162109375,0.640625,0.6611328125,0.673828125,0.669921875,0.6142578125,0.5205078125,0.4296875,0.3837890625,0.39453125,0.4482421875,0.51953125,0.619140625,0.70703125,0.73828125,0.7021484375,0.626953125,0.55078125,0.47265625,0.384765625,0.322265625,0.3173828125,0.3681640625,0.44140625,0.5,0.55859375,0.6376953125,0.701171875,0.7099609375,0.658203125,0.576171875,0.5,0.431640625,0.3876953125,0.3896484375,0.439453125,0.5078125,0.55859375,0.5703125,0.5771484375,0.6044921875,0.6376953125,0.654296875,0.640625,0.6015625,0.55078125,0.490234375,0.4052734375,0.3310546875,0.30859375,0.34765625,0.423828125,0.5,0.57421875,0.640625,0.6611328125,0.6103515625,0.5068359375,0.3994140625,0.3251953125,0.2578125,0.1767578125,0.1201171875,0.1201171875,0.1767578125,0.2578125,0.3251953125,0.396484375,0.4892578125,0.5654296875,0.583984375,0.5361328125,0.4541015625,0.376953125,0.3232421875,0.341796875,0.4365234375,0.5625,0.6572265625,0.67578125,0.6220703125,0.5546875,0.5087890625,0.490234375,0.4912109375,0.4921875,0.47265625,0.4287109375,0.3857421875,0.3779296875,0.4189453125,0.49609375,0.5751953125,0.6201171875,0.6220703125,0.599609375,0.5419921875,0.470703125,0.4267578125,0.431640625,0.4814453125,0.55078125,0.630859375,0.724609375,0.7919921875,0.7919921875,0.724609375,0.630859375,0.55078125,0.490234375,0.4736328125,0.501953125,0.4443359375,0.3994140625,0.400390625,0.4443359375,0.509765625,0.583984375,0.666015625,0.7158203125,0.6982421875,0.6181640625,0.5185546875,0.439453125,0.3642578125,0.287109375,0.25,0.283203125,0.3779296875,0.486328125,0.5693359375,0.646484375,0.73046875,0.7783203125,0.755859375,0.671875,0.5693359375,0.4892578125,0.4326171875,0.4306640625,0.4853515625,0.5634765625,0.6181640625,0.6162109375,0.5595703125,0.48828125,0.419921875,0.376953125,0.3720703125,0.3955078125,0.421875,0.4296875,0.4345703125,0.451171875,0.48046875,0.513671875,0.5419921875,0.556640625,0.5595703125,0.5595703125,0.5625,0.56640625,0.572265625,0.576171875,0.5791015625,0.5791015625,0.5791015625,0.578125,0.5771484375,0.576171875,0.576171875,0.5771484375,0.5791015625,0.5810546875,0.5830078125,0.5849609375,0.5849609375,0.5830078125,0.5810546875,0.5791015625,0.5771484375,0.5732421875,0.568359375,0.564453125,0.560546875,0.5595703125,0.5595703125,0.5458984375,0.48828125,0.4052734375,0.3388671875,0.3203125,0.3544921875,0.419921875,0.4912109375,0.560546875,0.60546875,0.6142578125,0.5927734375,0.5673828125,0.5595703125,0.5458984375,0.49609375,0.427734375,0.380859375,0.37890625,0.4228515625,0.4892578125,0.5458984375,0.548828125,0.4951171875,0.4189453125,0.3662109375,0.37109375,0.4296875,0.4912109375,0.5087890625,0.482421875,0.4375,0.41015625,0.4287109375,0.4892578125,0.5478515625,0.552734375,0.501953125,0.427734375,0.3759765625,0.380859375,0.439453125,0.5029296875,0.5283203125,0.5166015625,0.48828125,0.474609375,0.498046875,0.5595703125,0.6337890625,0.708984375,0.7431640625,0.7060546875,0.609375,0.5009765625,0.419921875,0.3642578125,0.3701171875,0.439453125,0.5341796875,0.60546875,0.61328125,0.5595703125,0.490234375,0.423828125,0.3837890625,0.3798828125,0.4052734375,0.431640625,0.439453125,0.4306640625,0.3896484375,0.3330078125,0.296875,0.3046875,0.3525390625,0.419921875,0.4912109375,0.5595703125,0.603515625,0.6103515625,0.58984375,0.5654296875,0.5595703125,0.5595703125,0.5595703125,0.560546875,0.5625,0.5654296875,0.5673828125,0.5693359375,0.5791015625,0.611328125,0.6474609375,0.6572265625,0.626953125,0.568359375,0.5,0.4248046875,0.3408203125,0.2900390625,0.3046875,0.3818359375,0.48046875,0.5595703125,0.6279296875,0.681640625,0.69921875,0.6748046875,0.626953125,0.5888671875,0.5791015625,0.5654296875,0.505859375,0.4189453125,0.349609375,0.3291015625,0.36328125,0.4296875,0.5126953125,0.62109375,0.7158203125,0.7490234375,0.7119140625,0.634765625,0.5595703125,0.48828125,0.419921875,0.3759765625,0.3681640625,0.3896484375,0.4130859375,0.419921875,0.423828125,0.4423828125,0.4775390625,0.517578125,0.55078125,0.5673828125,0.5693359375,0.5673828125,0.5654296875,0.5634765625,0.5634765625,0.5654296875,0.5673828125,0.5693359375,0.5712890625,0.572265625,0.5732421875,0.5751953125,0.576171875,0.5771484375,0.5791015625,0.5810546875,0.580078125,0.5771484375,0.572265625,0.56640625,0.5615234375,0.5595703125,0.5576171875,0.5556640625,0.5537109375,0.5537109375,0.5556640625,0.5576171875,0.5595703125,0.568359375,0.595703125,0.62109375,0.6181640625,0.5771484375,0.5107421875,0.439453125,0.36328125,0.2783203125,0.2275390625,0.24609375,0.3271484375,0.4287109375,0.509765625,0.5771484375,0.62109375,0.619140625,0.5703125,0.501953125,0.451171875,0.439453125,0.4296875,0.3876953125,0.3349609375,0.3046875,0.3173828125,0.3701171875,0.439453125,0.5,0.5126953125,0.474609375,0.416015625,0.375,0.3828125,0.439453125,0.515625,0.60546875,0.6689453125,0.6689453125,0.60546875,0.515625,0.439453125,0.3828125,0.375,0.416015625,0.474609375,0.5126953125,0.5,0.439453125,0.373046875,0.337890625,0.3544921875,0.419921875,0.501953125,0.5576171875,0.5693359375,0.564453125,0.548828125,0.5205078125,0.48828125,0.4599609375,0.4443359375,0.439453125,0.451171875,0.5087890625,0.5927734375,0.6611328125,0.6796875,0.6455078125,0.5791015625,0.49609375,0.384765625,0.28515625,0.244140625,0.2744140625,0.3466796875,0.419921875,0.486328125,0.5380859375,0.5537109375,0.529296875,0.4833984375,0.447265625,0.439453125,0.4501953125,0.490234375,0.5380859375,0.5615234375,0.54296875,0.48828125,0.419921875,0.35546875,0.3232421875,0.345703125,0.41796875,0.505859375,0.5654296875,0.5791015625,0.587890625,0.62109375,0.6591796875,0.6708984375,0.6416015625,0.5810546875,0.509765625,0.44140625,0.396484375,0.3974609375,0.4453125,0.5146484375,0.56640625,0.5791015625,0.5693359375,0.5205078125,0.451171875,0.40234375,0.3984375,0.44140625,0.509765625,0.5693359375,0.578125,0.53515625,0.4697265625,0.4248046875,0.431640625,0.4892578125,0.568359375,0.662109375,0.73046875,0.734375,0.6708984375,0.5791015625,0.5,0.427734375,0.3662109375,0.3349609375,0.34375,0.3798828125,0.412109375,0.419921875,0.4306640625,0.48046875,0.5478515625,0.595703125,0.5986328125,0.5556640625,0.4892578125,0.4228515625,0.3798828125,0.3828125,0.4306640625,0.4990234375,0.5478515625,0.5595703125,0.5595703125,0.560546875,0.564453125,0.568359375,0.5732421875,0.5771484375,0.5791015625,0.5693359375,0.5185546875,0.4462890625,0.392578125,0.384765625,0.423828125,0.4892578125,0.568359375,0.6630859375,0.734375,0.740234375,0.6796875,0.5888671875,0.509765625,0.4296875,0.3369140625,0.2705078125,0.2685546875,0.3330078125,0.4228515625,0.5,0.576171875,0.66796875,0.7333984375,0.7353515625,0.6708984375,0.5791015625,0.5,0.4306640625,0.3857421875,0.3857421875,0.4326171875,0.4990234375,0.5478515625,0.5595703125,0.5673828125,0.6015625,0.6416015625,0.6572265625,0.6328125,0.5771484375,0.509765625,0.4326171875,0.33984375,0.271484375,0.267578125,0.3291015625,0.4208984375,0.5,0.5771484375,0.66015625,0.7080078125,0.6865234375,0.6025390625,0.5,0.419921875,0.341796875,0.25,0.1845703125,0.1845703125,0.25,0.341796875,0.419921875,0.498046875,0.591796875,0.6611328125,0.6640625,0.6005859375,0.5087890625,0.4296875,0.373046875,0.3798828125,0.451171875,0.5478515625,0.619140625,0.6259765625,0.5693359375,0.505859375,0.4775390625,0.486328125,0.51171875,0.5234375,0.4990234375,0.439453125,0.3759765625,0.3427734375,0.3603515625,0.4248046875,0.50390625,0.55859375,0.5693359375,0.556640625,0.505859375,0.439453125,0.3935546875,0.39453125,0.4404296875,0.509765625,0.5888671875,0.68359375,0.75,0.75,0.68359375,0.5888671875,0.509765625,0.44921875,0.4375,0.4755859375,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.35546875,0.349609375,0.380859375,0.44140625,0.509765625,0.5869140625,0.6845703125,0.76171875,0.7763671875,0.7236328125,0.6376953125,0.5595703125,0.4765625,0.369140625,0.2763671875,0.2431640625,0.2802734375,0.3564453125,0.4296875,0.5078125,0.6083984375,0.6904296875,0.712890625,0.6669921875,0.5849609375,0.509765625,0.44921875,0.4296875,0.4521484375,0.4921875,0.515625,0.498046875,0.439453125,0.3759765625,0.3427734375,0.3603515625,0.4248046875,0.50390625,0.55859375,0.5693359375,0.564453125,0.5458984375,0.513671875,0.4755859375,0.443359375,0.4248046875,0.419921875,0.4189453125,0.419921875,0.4228515625,0.4267578125,0.4296875,0.4306640625,0.4296875,0.427734375,0.42578125,0.4228515625,0.4208984375,0.419921875,0.419921875,0.419921875,0.419921875,0.419921875,0.4208984375,0.4228515625,0.42578125,0.427734375,0.4296875,0.431640625,0.43359375,0.4365234375,0.4384765625,0.439453125,0.439453125,0.439453125,0.43359375,0.4091796875,0.38671875,0.392578125,0.43359375,0.5,0.5693359375,0.6328125,0.66796875,0.6533203125,0.5908203125,0.5107421875,0.4541015625,0.439453125,0.4296875,0.396484375,0.359375,0.3486328125,0.37890625,0.439453125,0.509765625,0.5693359375,0.5859375,0.55859375,0.5146484375,0.4892578125,0.5078125,0.5693359375,0.6279296875,0.630859375,0.5751953125,0.4951171875,0.4365234375,0.4345703125,0.4892578125,0.548828125,0.568359375,0.548828125,0.5146484375,0.49609375,0.5185546875,0.5791015625,0.6337890625,0.625,0.5517578125,0.4521484375,0.3798828125,0.373046875,0.4296875,0.5126953125,0.62109375,0.7158203125,0.7490234375,0.7119140625,0.634765625,0.5595703125,0.498046875,0.474609375,0.48828125,0.5166015625,0.5283203125,0.5029296875,0.439453125,0.373046875,0.3349609375,0.3486328125,0.41015625,0.490234375,0.546875,0.5595703125,0.5498046875,0.51171875,0.4638671875,0.439453125,0.45703125,0.5107421875,0.5791015625,0.64453125,0.6787109375,0.66015625,0.59375,0.5107421875,0.453125,0.439453125,0.439453125,0.439453125,0.4384765625,0.4365234375,0.43359375,0.431640625,0.4296875,0.439453125,0.48828125,0.5576171875,0.6064453125,0.6103515625,0.5673828125,0.5,0.4189453125,0.318359375,0.23828125,0.220703125,0.271484375,0.3544921875,0.4296875,0.4970703125,0.548828125,0.5654296875,0.5390625,0.490234375,0.4501953125,0.439453125,0.431640625,0.40625,0.384765625,0.3935546875,0.4384765625,0.5078125,0.5791015625,0.6533203125,0.7265625,0.7568359375,0.716796875,0.6181640625,0.509765625,0.4296875,0.3662109375,0.333984375,0.353515625,0.4208984375,0.505859375,0.564453125,0.5791015625,0.5771484375,0.55859375,0.5234375,0.48046875,0.4443359375,0.423828125,0.419921875,0.419921875,0.4228515625,0.4267578125,0.4326171875,0.4365234375,0.439453125,0.439453125,0.439453125,0.4384765625,0.4345703125,0.4306640625,0.42578125,0.421875,0.419921875,0.4189453125,0.419921875,0.423828125,0.4296875,0.435546875,0.439453125,0.439453125,0.439453125,0.439453125,0.4384765625,0.4365234375,0.43359375,0.431640625,0.4296875,0.4404296875,0.49609375,0.578125,0.64453125,0.6640625,0.6318359375,0.5693359375,0.4912109375,0.3935546875,0.3154296875,0.298828125,0.349609375,0.43359375,0.509765625,0.5791015625,0.63671875,0.6611328125,0.646484375,0.6083984375,0.576171875,0.5693359375,0.560546875,0.5185546875,0.4638671875,0.4296875,0.439453125,0.490234375,0.5595703125,0.619140625,0.6328125,0.5966796875,0.5419921875,0.505859375,0.5185546875,0.5791015625,0.658203125,0.748046875,0.8076171875,0.80078125,0.73046875,0.63671875,0.5595703125,0.501953125,0.4921875,0.5302734375,0.587890625,0.626953125,0.6162109375,0.5595703125,0.490234375,0.42578125,0.3857421875,0.3837890625,0.408203125,0.4326171875,0.439453125,0.4423828125,0.4580078125,0.486328125,0.5185546875,0.544921875,0.55859375,0.5595703125,0.564453125,0.58984375,0.61328125,0.6103515625,0.5693359375,0.501953125,0.4296875,0.353515625,0.275390625,0.2392578125,0.2744140625,0.369140625,0.478515625,0.5595703125,0.6279296875,0.6796875,0.6943359375,0.6650390625,0.6123046875,0.5703125,0.5595703125,0.5673828125,0.607421875,0.6591796875,0.689453125,0.677734375,0.626953125,0.5595703125,0.48828125,0.419921875,0.3759765625,0.3681640625,0.3896484375,0.4130859375,0.419921875,0.431640625,0.4833984375,0.5556640625,0.6083984375,0.6162109375,0.5751953125,0.509765625,0.439453125,0.376953125,0.345703125,0.353515625,0.3876953125,0.419921875,0.4296875,0.4228515625,0.390625,0.3525390625,0.337890625,0.3623046875,0.419921875,0.4892578125,0.5478515625,0.5576171875,0.5166015625,0.45703125,0.41796875,0.4296875,0.4892578125,0.5693359375,0.662109375,0.728515625,0.73046875,0.666015625,0.576171875,0.5,0.4345703125,0.3935546875,0.3974609375,0.4462890625,0.515625,0.56640625,0.5791015625,0.5888671875,0.6220703125,0.6591796875,0.669921875,0.6396484375,0.5791015625,0.509765625,0.439453125,0.3798828125,0.3515625,0.3623046875,0.3994140625,0.431640625,0.439453125,0.439453125,0.439453125,0.4384765625,0.4365234375,0.43359375,0.431640625,0.4296875,0.419921875,0.3837890625,0.34375,0.330078125,0.357421875,0.41796875,0.4892578125,0.5693359375,0.6650390625,0.7353515625,0.7392578125,0.677734375,0.5869140625,0.509765625,0.4306640625,0.3369140625,0.2685546875,0.2646484375,0.328125,0.419921875,0.5,0.5791015625,0.673828125,0.7412109375,0.7431640625,0.6787109375,0.5869140625,0.509765625,0.439453125,0.376953125,0.345703125,0.353515625,0.3876953125,0.419921875,0.4296875,0.443359375,0.494140625,0.564453125,0.615234375,0.6181640625,0.576171875,0.509765625,0.431640625,0.33984375,0.2734375,0.271484375,0.333984375,0.423828125,0.5,0.5771484375,0.677734375,0.7607421875,0.7822265625,0.736328125,0.6552734375,0.5791015625,0.5009765625,0.4091796875,0.3447265625,0.3447265625,0.4091796875,0.5009765625,0.5791015625,0.65625,0.74609375,0.8076171875,0.8046875,0.7373046875,0.6455078125,0.5693359375,0.5087890625,0.4814453125,0.4873046875,0.5068359375,0.51171875,0.4814453125,0.419921875,0.365234375,0.3740234375,0.44921875,0.5498046875,0.625,0.6337890625,0.5791015625,0.5078125,0.439453125,0.3955078125,0.388671875,0.4091796875,0.43359375,0.439453125,0.4306640625,0.3955078125,0.3525390625,0.3359375,0.3603515625,0.4189453125,0.4892578125,0.5693359375,0.6630859375,0.73046875,0.73046875,0.6630859375,0.5693359375,0.4892578125,0.4296875,0.419921875,0.4619140625,0.353515625,0.38671875,0.439453125,0.498046875,0.55078125,0.611328125,0.6923828125,0.759765625,0.7734375,0.7265625,0.646484375,0.5703125,0.48828125,0.3828125,0.2890625,0.2470703125,0.2666015625,0.322265625,0.376953125,0.439453125,0.533203125,0.626953125,0.677734375,0.6669921875,0.6142578125,0.55078125,0.49609375,0.4658203125,0.46484375,0.48046875,0.4892578125,0.47265625,0.4287109375,0.3857421875,0.3779296875,0.4189453125,0.49609375,0.5751953125,0.6201171875,0.6220703125,0.6064453125,0.568359375,0.5087890625,0.4384765625,0.37890625,0.3408203125,0.3251953125,0.318359375,0.3232421875,0.33984375,0.3623046875,0.3798828125,0.384765625,0.376953125,0.3662109375,0.3525390625,0.3388671875,0.3291015625,0.3251953125,0.3251953125,0.3251953125,0.3251953125,0.3251953125,0.3291015625,0.3388671875,0.3525390625,0.3662109375,0.376953125,0.388671875,0.40234375,0.416015625,0.4248046875,0.4287109375,0.4296875,0.4287109375,0.4267578125,0.419921875,0.4248046875,0.4541015625,0.5068359375,0.5673828125,0.6220703125,0.66796875,0.6884765625,0.662109375,0.59375,0.51171875,0.4501953125,0.4287109375,0.4130859375,0.384765625,0.3642578125,0.375,0.421875,0.4873046875,0.55078125,0.6025390625,0.6142578125,0.587890625,0.5498046875,0.533203125,0.55859375,0.6220703125,0.6806640625,0.681640625,0.6181640625,0.5205078125,0.4375,0.412109375,0.4482421875,0.494140625,0.5234375,0.537109375,0.548828125,0.5732421875,0.615234375,0.673828125,0.7158203125,0.68359375,0.5751953125,0.4404296875,0.341796875,0.3232421875,0.376953125,0.4599609375,0.5712890625,0.673828125,0.7197265625,0.6982421875,0.634765625,0.5703125,0.5166015625,0.4970703125,0.5078125,0.5263671875,0.52734375,0.4931640625,0.4287109375,0.3623046875,0.3271484375,0.345703125,0.4130859375,0.498046875,0.556640625,0.5703125,0.5634765625,0.541015625,0.5185546875,0.51953125,0.5537109375,0.611328125,0.673828125,0.7275390625,0.7421875,0.69921875,0.6083984375,0.5087890625,0.443359375,0.4287109375,0.4296875,0.4287109375,0.4248046875,0.416015625,0.40234375,0.388671875,0.376953125,0.3798828125,0.4287109375,0.5078125,0.5751953125,0.5966796875,0.5654296875,0.5,0.419921875,0.3232421875,0.244140625,0.220703125,0.2568359375,0.3203125,0.376953125,0.4296875,0.4794921875,0.5078125,0.50390625,0.4755859375,0.4453125,0.4287109375,0.416015625,0.40234375,0.4091796875,0.4521484375,0.5263671875,0.6064453125,0.673828125,0.7333984375,0.771484375,0.7548828125,0.6728515625,0.55078125,0.4423828125,0.376953125,0.3330078125,0.326171875,0.375,0.4697265625,0.576171875,0.6494140625,0.673828125,0.67578125,0.640625,0.5654296875,0.46875,0.3837890625,0.3349609375,0.3251953125,0.328125,0.3408203125,0.36328125,0.390625,0.4140625,0.4267578125,0.4287109375,0.427734375,0.421875,0.40625,0.3828125,0.3583984375,0.337890625,0.3251953125,0.318359375,0.3232421875,0.34375,0.3759765625,0.40625,0.4248046875,0.4287109375,0.4296875,0.4287109375,0.4248046875,0.416015625,0.40234375,0.388671875,0.376953125,0.3798828125,0.431640625,0.5224609375,0.61328125,0.666015625,0.6640625,0.6220703125,0.5615234375,0.48046875,0.4091796875,0.38671875,0.419921875,0.486328125,0.55078125,0.611328125,0.658203125,0.677734375,0.666015625,0.6376953125,0.6181640625,0.6220703125,0.62109375,0.580078125,0.517578125,0.46875,0.462890625,0.5029296875,0.5703125,0.6318359375,0.6552734375,0.638671875,0.60546875,0.587890625,0.611328125,0.673828125,0.748046875,0.8173828125,0.845703125,0.8095703125,0.7236328125,0.6318359375,0.5703125,0.52734375,0.51953125,0.548828125,0.591796875,0.6201171875,0.6123046875,0.5703125,0.517578125,0.462890625,0.421875,0.40625,0.4130859375,0.4248046875,0.4287109375,0.43359375,0.45703125,0.49609375,0.5380859375,0.5673828125,0.5771484375,0.5703125,0.5654296875,0.576171875,0.5849609375,0.568359375,0.51953125,0.4501953125,0.376953125,0.3037109375,0.2392578125,0.22265625,0.2783203125,0.3857421875,0.49609375,0.5703125,0.630859375,0.681640625,0.701171875,0.6796875,0.6318359375,0.5888671875,0.5703125,0.568359375,0.5966796875,0.640625,0.6708984375,0.6669921875,0.6279296875,0.5703125,0.5048828125,0.4296875,0.3642578125,0.3251953125,0.31640625,0.3232421875,0.3251953125,0.33984375,0.40234375,0.498046875,0.583984375,0.623046875,0.60546875,0.55078125,0.486328125,0.4140625,0.3564453125,0.33203125,0.3408203125,0.3623046875,0.376953125,0.380859375,0.361328125,0.3330078125,0.3212890625,0.3408203125,0.3876953125,0.4482421875,0.4970703125,0.5009765625,0.458984375,0.40234375,0.3701171875,0.38671875,0.4482421875,0.5263671875,0.6142578125,0.6767578125,0.681640625,0.630859375,0.5576171875,0.5,0.4521484375,0.4306640625,0.4521484375,0.5146484375,0.59375,0.65234375,0.673828125,0.689453125,0.7177734375,0.73828125,0.7275390625,0.6806640625,0.615234375,0.55078125,0.48828125,0.4287109375,0.390625,0.3837890625,0.40234375,0.4228515625,0.4287109375,0.4296875,0.4287109375,0.4248046875,0.416015625,0.40234375,0.388671875,0.376953125,0.359375,0.318359375,0.2783203125,0.271484375,0.3076171875,0.375,0.4482421875,0.5283203125,0.62890625,0.7109375,0.734375,0.6923828125,0.6181640625,0.55078125,0.48046875,0.3876953125,0.3115234375,0.29296875,0.3408203125,0.4228515625,0.5,0.5791015625,0.673828125,0.744140625,0.7529296875,0.7001953125,0.6201171875,0.55078125,0.486328125,0.4140625,0.3564453125,0.33203125,0.3408203125,0.3623046875,0.376953125,0.400390625,0.46484375,0.55078125,0.6181640625,0.6376953125,0.6083984375,0.55078125,0.4833984375,0.40234375,0.341796875,0.33203125,0.3759765625,0.4423828125,0.5,0.5615234375,0.6552734375,0.75,0.7998046875,0.7890625,0.736328125,0.673828125,0.60546875,0.5244140625,0.4677734375,0.4677734375,0.5244140625,0.60546875,0.673828125,0.7392578125,0.806640625,0.8447265625,0.8271484375,0.759765625,0.6806640625,0.6220703125,0.57421875,0.5361328125,0.5068359375,0.4755859375,0.4365234375,0.384765625,0.3251953125,0.2822265625,0.3154296875,0.427734375,0.5712890625,0.68359375,0.716796875,0.673828125,0.6083984375,0.533203125,0.4677734375,0.4287109375,0.419921875,0.42578125,0.4287109375,0.419921875,0.3798828125,0.3310546875,0.3056640625,0.3232421875,0.3779296875,0.4482421875,0.52734375,0.6220703125,0.6884765625,0.6884765625,0.6220703125,0.52734375,0.4482421875,0.3876953125,0.376953125,0.4248046875,0.408203125,0.48046875,0.541015625,0.58203125,0.6044921875,0.630859375,0.677734375,0.7177734375,0.720703125,0.6767578125,0.603515625,0.5302734375,0.453125,0.3701171875,0.3056640625,0.2841796875,0.3037109375,0.33984375,0.3642578125,0.39453125,0.4638671875,0.5546875,0.6298828125,0.6611328125,0.6455078125,0.6044921875,0.5595703125,0.521484375,0.4970703125,0.48828125,0.48828125,0.484375,0.46875,0.4580078125,0.4794921875,0.533203125,0.595703125,0.642578125,0.654296875,0.634765625,0.6044921875,0.5546875,0.4853515625,0.408203125,0.3388671875,0.2900390625,0.2587890625,0.2392578125,0.248046875,0.2861328125,0.3369140625,0.375,0.3837890625,0.3642578125,0.3359375,0.3037109375,0.275390625,0.2587890625,0.2548828125,0.2578125,0.2587890625,0.2578125,0.2548828125,0.2587890625,0.275390625,0.3037109375,0.3359375,0.3642578125,0.392578125,0.423828125,0.4521484375,0.46875,0.47265625,0.470703125,0.46875,0.470703125,0.4794921875,0.501953125,0.5380859375,0.5791015625,0.6123046875,0.634765625,0.6533203125,0.662109375,0.6484375,0.607421875,0.5517578125,0.5009765625,0.46875,0.4404296875,0.4111328125,0.40234375,0.4306640625,0.4892578125,0.5537109375,0.6044921875,0.6396484375,0.634765625,0.5966796875,0.5546875,0.541015625,0.5703125,0.634765625,0.6962890625,0.708984375,0.654296875,0.5517578125,0.4482421875,0.3916015625,0.39453125,0.4150390625,0.4443359375,0.4912109375,0.5546875,0.626953125,0.6904296875,0.740234375,0.765625,0.7109375,0.58203125,0.43359375,0.3291015625,0.3095703125,0.3642578125,0.4443359375,0.54296875,0.626953125,0.6591796875,0.634765625,0.580078125,0.5302734375,0.494140625,0.4951171875,0.52734375,0.560546875,0.5673828125,0.5341796875,0.46875,0.400390625,0.35546875,0.3564453125,0.40234375,0.4697265625,0.5185546875,0.5302734375,0.5283203125,0.52734375,0.541015625,0.5771484375,0.6328125,0.69140625,0.740234375,0.7783203125,0.7783203125,0.7255859375,0.6357421875,0.541015625,0.4814453125,0.46875,0.470703125,0.47265625,0.46875,0.4521484375,0.423828125,0.392578125,0.3642578125,0.3515625,0.390625,0.46875,0.546875,0.5830078125,0.5625,0.5,0.423828125,0.34375,0.2861328125,0.2734375,0.2998046875,0.3388671875,0.3642578125,0.388671875,0.4306640625,0.4775390625,0.5078125,0.5126953125,0.4951171875,0.46875,0.443359375,0.4306640625,0.4521484375,0.5166015625,0.6044921875,0.685546875,0.740234375,0.7783203125,0.7763671875,0.71484375,0.6044921875,0.4833984375,0.3974609375,0.3642578125,0.3505859375,0.3671875,0.427734375,0.5244140625,0.626953125,0.703125,0.740234375,0.7548828125,0.7158203125,0.61328125,0.474609375,0.34765625,0.2734375,0.2587890625,0.263671875,0.2890625,0.3359375,0.3916015625,0.4384765625,0.4638671875,0.46875,0.4677734375,0.4580078125,0.4306640625,0.3857421875,0.333984375,0.2890625,0.2587890625,0.23828125,0.244140625,0.2861328125,0.353515625,0.419921875,0.4609375,0.46875,0.470703125,0.47265625,0.46875,0.4521484375,0.423828125,0.392578125,0.3642578125,0.34765625,0.3720703125,0.44140625,0.5322265625,0.609375,0.6435546875,0.634765625,0.609375,0.5654296875,0.521484375,0.501953125,0.5185546875,0.55859375,0.6044921875,0.6455078125,0.6669921875,0.6630859375,0.640625,0.6181640625,0.615234375,0.634765625,0.6484375,0.61328125,0.541015625,0.4716796875,0.44140625,0.4658203125,0.5302734375,0.5947265625,0.630859375,0.6376953125,0.6328125,0.638671875,0.67578125,0.740234375,0.8076171875,0.845703125,0.826171875,0.748046875,0.64453125,0.5634765625,0.5302734375,0.513671875,0.5107421875,0.521484375,0.5380859375,0.548828125,0.5458984375,0.5302734375,0.509765625,0.4892578125,0.4716796875,0.4638671875,0.4638671875,0.4677734375,0.46875,0.474609375,0.4970703125,0.5302734375,0.5576171875,0.56640625,0.5537109375,0.5302734375,0.5107421875,0.5126953125,0.5244140625,0.521484375,0.4912109375,0.43359375,0.3642578125,0.2919921875,0.2333984375,0.2236328125,0.2783203125,0.376953125,0.4716796875,0.5302734375,0.5771484375,0.6259765625,0.654296875,0.646484375,0.607421875,0.5615234375,0.5302734375,0.5107421875,0.517578125,0.546875,0.5771484375,0.587890625,0.5703125,0.5302734375,0.4794921875,0.4130859375,0.3447265625,0.2919921875,0.265625,0.2587890625,0.2587890625,0.2734375,0.341796875,0.4521484375,0.5634765625,0.6318359375,0.640625,0.6044921875,0.55078125,0.4736328125,0.3916015625,0.3359375,0.3212890625,0.337890625,0.3642578125,0.3837890625,0.380859375,0.3583984375,0.3359375,0.33203125,0.353515625,0.39453125,0.4287109375,0.419921875,0.375,0.3251953125,0.3046875,0.3310546875,0.39453125,0.4697265625,0.5458984375,0.5966796875,0.6015625,0.568359375,0.525390625,0.5,0.4833984375,0.4833984375,0.513671875,0.57421875,0.646484375,0.7060546875,0.740234375,0.7685546875,0.7978515625,0.806640625,0.7783203125,0.720703125,0.6552734375,0.6044921875,0.5576171875,0.5078125,0.46875,0.4521484375,0.4560546875,0.4658203125,0.46875,0.470703125,0.47265625,0.46875,0.4521484375,0.423828125,0.392578125,0.3642578125,0.3291015625,0.271484375,0.220703125,0.208984375,0.2490234375,0.3203125,0.39453125,0.4755859375,0.580078125,0.673828125,0.7177734375,0.703125,0.6533203125,0.6044921875,0.5478515625,0.4609375,0.375,0.3359375,0.3603515625,0.42578125,0.5,0.578125,0.669921875,0.740234375,0.7568359375,0.71875,0.65625,0.6044921875,0.55078125,0.4736328125,0.3916015625,0.3359375,0.3212890625,0.337890625,0.3642578125,0.4013671875,0.4765625,0.568359375,0.640625,0.666015625,0.646484375,0.6044921875,0.5556640625,0.498046875,0.4521484375,0.435546875,0.4501953125,0.4775390625,0.5,0.5302734375,0.599609375,0.6904296875,0.7646484375,0.7958984375,0.78125,0.740234375,0.689453125,0.6298828125,0.587890625,0.587890625,0.6298828125,0.689453125,0.740234375,0.7841796875,0.8154296875,0.814453125,0.775390625,0.71484375,0.662109375,0.634765625,0.6142578125,0.5810546875,0.52734375,0.455078125,0.376953125,0.3095703125,0.2587890625,0.232421875,0.2841796875,0.4169921875,0.58203125,0.71484375,0.7666015625,0.740234375,0.689453125,0.6240234375,0.5546875,0.501953125,0.4755859375,0.46875,0.46875,0.45703125,0.40625,0.3369140625,0.2861328125,0.283203125,0.326171875,0.39453125,0.474609375,0.568359375,0.634765625,0.634765625,0.568359375,0.474609375,0.39453125,0.33203125,0.31640625,0.3642578125,0.5107421875,0.5986328125,0.6455078125,0.6513671875,0.634765625,0.623046875,0.6298828125,0.6435546875,0.6376953125,0.6015625,0.5400390625,0.46875,0.400390625,0.349609375,0.333984375,0.3525390625,0.3857421875,0.404296875,0.39453125,0.384765625,0.416015625,0.4853515625,0.568359375,0.6318359375,0.65234375,0.634765625,0.6044921875,0.5615234375,0.5185546875,0.494140625,0.494140625,0.509765625,0.5302734375,0.556640625,0.60546875,0.6591796875,0.6904296875,0.6845703125,0.6494140625,0.6044921875,0.55859375,0.509765625,0.4580078125,0.4052734375,0.353515625,0.3046875,0.2587890625,0.224609375,0.234375,0.2900390625,0.36328125,0.4189453125,0.4287109375,0.39453125,0.3466796875,0.2978515625,0.2587890625,0.2421875,0.24609375,0.255859375,0.2587890625,0.255859375,0.24609375,0.2421875,0.2587890625,0.2978515625,0.3466796875,0.39453125,0.44140625,0.4912109375,0.5302734375,0.546875,0.54296875,0.533203125,0.5302734375,0.5341796875,0.5546875,0.5849609375,0.61328125,0.6259765625,0.62109375,0.6044921875,0.5908203125,0.59375,0.607421875,0.615234375,0.6044921875,0.5732421875,0.5302734375,0.484375,0.44921875,0.4443359375,0.48046875,0.5419921875,0.6005859375,0.634765625,0.650390625,0.6240234375,0.568359375,0.5185546875,0.505859375,0.5390625,0.6044921875,0.671875,0.7060546875,0.6796875,0.59375,0.482421875,0.3984375,0.3642578125,0.3505859375,0.3671875,0.427734375,0.5244140625,0.626953125,0.703125,0.740234375,0.748046875,0.68359375,0.5576171875,0.4248046875,0.3408203125,0.3359375,0.39453125,0.4697265625,0.546875,0.595703125,0.5966796875,0.5546875,0.5029296875,0.46875,0.455078125,0.484375,0.546875,0.6044921875,0.6240234375,0.5947265625,0.5302734375,0.458984375,0.3984375,0.3720703125,0.38671875,0.4267578125,0.4609375,0.46875,0.4716796875,0.4892578125,0.5302734375,0.5908203125,0.65625,0.7080078125,0.740234375,0.7607421875,0.7548828125,0.712890625,0.6455078125,0.5791015625,0.5380859375,0.5302734375,0.533203125,0.54296875,0.546875,0.5302734375,0.4912109375,0.44140625,0.39453125,0.3623046875,0.3837890625,0.4521484375,0.5302734375,0.57421875,0.560546875,0.5,0.4296875,0.3759765625,0.353515625,0.36328125,0.390625,0.4052734375,0.39453125,0.3857421875,0.4140625,0.474609375,0.5380859375,0.57421875,0.568359375,0.5302734375,0.4873046875,0.4638671875,0.482421875,0.546875,0.6318359375,0.703125,0.740234375,0.7548828125,0.7216796875,0.634765625,0.5244140625,0.4306640625,0.3876953125,0.39453125,0.4150390625,0.4443359375,0.4912109375,0.5546875,0.626953125,0.6904296875,0.740234375,0.7734375,0.748046875,0.6484375,0.501953125,0.361328125,0.2763671875,0.2587890625,0.265625,0.2978515625,0.3583984375,0.4306640625,0.490234375,0.5234375,0.5302734375,0.5302734375,0.5234375,0.4970703125,0.4443359375,0.375,0.3095703125,0.2587890625,0.220703125,0.220703125,0.2734375,0.36328125,0.4580078125,0.517578125,0.5302734375,0.533203125,0.54296875,0.546875,0.5302734375,0.4912109375,0.44140625,0.39453125,0.3525390625,0.333984375,0.3583984375,0.4248046875,0.5087890625,0.5751953125,0.6044921875,0.6201171875,0.6220703125,0.61328125,0.6015625,0.599609375,0.611328125,0.634765625,0.6533203125,0.642578125,0.607421875,0.568359375,0.55078125,0.564453125,0.6044921875,0.6357421875,0.6103515625,0.53515625,0.4501953125,0.3994140625,0.4091796875,0.46875,0.53515625,0.5791015625,0.599609375,0.6103515625,0.6298828125,0.673828125,0.740234375,0.80078125,0.8095703125,0.748046875,0.6376953125,0.52734375,0.466796875,0.46875,0.4853515625,0.48828125,0.4775390625,0.4609375,0.4501953125,0.453125,0.46875,0.4892578125,0.509765625,0.52734375,0.53515625,0.53515625,0.53125,0.5302734375,0.53515625,0.5537109375,0.57421875,0.5771484375,0.5556640625,0.5146484375,0.46875,0.43359375,0.4326171875,0.4609375,0.4912109375,0.4951171875,0.4599609375,0.39453125,0.322265625,0.263671875,0.248046875,0.287109375,0.361328125,0.431640625,0.46875,0.5009765625,0.546875,0.5849609375,0.59375,0.5654296875,0.5166015625,0.46875,0.4287109375,0.4111328125,0.421875,0.4521484375,0.4814453125,0.48828125,0.46875,0.4384765625,0.3935546875,0.341796875,0.2978515625,0.2705078125,0.259765625,0.2587890625,0.271484375,0.33203125,0.435546875,0.546875,0.6259765625,0.65234375,0.634765625,0.59765625,0.5224609375,0.4306640625,0.3583984375,0.3330078125,0.3525390625,0.39453125,0.4345703125,0.4482421875,0.4306640625,0.3916015625,0.3564453125,0.345703125,0.3642578125,0.3798828125,0.357421875,0.30859375,0.267578125,0.2607421875,0.2978515625,0.3642578125,0.4345703125,0.4921875,0.521484375,0.5185546875,0.4990234375,0.48828125,0.5,0.517578125,0.5341796875,0.5576171875,0.59375,0.6416015625,0.693359375,0.740234375,0.78515625,0.8212890625,0.826171875,0.7900390625,0.7275390625,0.6689453125,0.634765625,0.6064453125,0.5751953125,0.546875,0.5302734375,0.5263671875,0.5283203125,0.5302734375,0.533203125,0.54296875,0.546875,0.5302734375,0.4912109375,0.44140625,0.39453125,0.33984375,0.2607421875,0.1923828125,0.1728515625,0.2138671875,0.2890625,0.3642578125,0.443359375,0.544921875,0.6376953125,0.6904296875,0.6923828125,0.6640625,0.634765625,0.595703125,0.5185546875,0.4306640625,0.375,0.3779296875,0.4296875,0.5,0.576171875,0.66015625,0.7236328125,0.740234375,0.7119140625,0.6669921875,0.634765625,0.59765625,0.5224609375,0.4306640625,0.3583984375,0.3330078125,0.3525390625,0.39453125,0.4482421875,0.525390625,0.607421875,0.6630859375,0.677734375,0.6611328125,0.634765625,0.6083984375,0.583984375,0.5634765625,0.546875,0.5322265625,0.517578125,0.5,0.490234375,0.521484375,0.5908203125,0.673828125,0.736328125,0.7578125,0.740234375,0.7109375,0.67578125,0.6513671875,0.6513671875,0.67578125,0.7109375,0.740234375,0.759765625,0.751953125,0.7119140625,0.6572265625,0.611328125,0.5927734375,0.6044921875,0.619140625,0.60546875,0.5517578125,0.4638671875,0.3671875,0.294921875,0.2587890625,0.248046875,0.302734375,0.4248046875,0.57421875,0.6962890625,0.7509765625,0.740234375,0.7099609375,0.6650390625,0.61328125,0.568359375,0.541015625,0.53125,0.5302734375,0.515625,0.4541015625,0.36328125,0.2900390625,0.265625,0.2978515625,0.3642578125,0.443359375,0.5380859375,0.6044921875,0.6044921875,0.5380859375,0.443359375,0.3642578125,0.2978515625,0.267578125,0.30078125,0.625,0.69921875,0.7099609375,0.6728515625,0.6220703125,0.5771484375,0.55859375,0.5595703125,0.560546875,0.5419921875,0.49609375,0.4287109375,0.3671875,0.3466796875,0.375,0.431640625,0.48046875,0.4873046875,0.4482421875,0.4033203125,0.3935546875,0.4306640625,0.5029296875,0.5771484375,0.62109375,0.6220703125,0.603515625,0.5595703125,0.5087890625,0.4775390625,0.4833984375,0.5205078125,0.5703125,0.6279296875,0.6982421875,0.7490234375,0.7490234375,0.6953125,0.6181640625,0.55078125,0.4951171875,0.4580078125,0.4423828125,0.4345703125,0.4189453125,0.3818359375,0.3251953125,0.27734375,0.283203125,0.3447265625,0.4287109375,0.490234375,0.49609375,0.4482421875,0.3857421875,0.3251953125,0.287109375,0.2802734375,0.298828125,0.3203125,0.3251953125,0.3203125,0.298828125,0.2802734375,0.287109375,0.3251953125,0.3857421875,0.4482421875,0.5107421875,0.5703125,0.6083984375,0.615234375,0.5966796875,0.576171875,0.5703125,0.5771484375,0.6044921875,0.6376953125,0.654296875,0.640625,0.6015625,0.55078125,0.5107421875,0.51171875,0.5517578125,0.6044921875,0.634765625,0.6220703125,0.5703125,0.509765625,0.4658203125,0.4580078125,0.4931640625,0.552734375,0.6015625,0.6220703125,0.6201171875,0.5771484375,0.509765625,0.45703125,0.4462890625,0.484375,0.55078125,0.6240234375,0.6845703125,0.697265625,0.642578125,0.541015625,0.4404296875,0.376953125,0.3330078125,0.326171875,0.375,0.4697265625,0.576171875,0.6494140625,0.673828125,0.66796875,0.6064453125,0.5048828125,0.41015625,0.3662109375,0.384765625,0.4482421875,0.5185546875,0.5751953125,0.591796875,0.560546875,0.5009765625,0.44921875,0.4287109375,0.4326171875,0.4833984375,0.56640625,0.638671875,0.6640625,0.634765625,0.5703125,0.4970703125,0.427734375,0.3828125,0.3759765625,0.3974609375,0.421875,0.4287109375,0.43359375,0.45703125,0.50390625,0.5634765625,0.6201171875,0.6572265625,0.673828125,0.6806640625,0.67578125,0.6552734375,0.623046875,0.5927734375,0.57421875,0.5703125,0.576171875,0.5966796875,0.615234375,0.6083984375,0.5703125,0.5107421875,0.4482421875,0.3994140625,0.40234375,0.4560546875,0.5263671875,0.5703125,0.5595703125,0.5,0.435546875,0.40625,0.419921875,0.4580078125,0.490234375,0.48828125,0.4482421875,0.4091796875,0.4228515625,0.486328125,0.56640625,0.6201171875,0.6201171875,0.5703125,0.51171875,0.47265625,0.4765625,0.525390625,0.5966796875,0.65234375,0.673828125,0.6708984375,0.6220703125,0.53515625,0.4501953125,0.4013671875,0.4052734375,0.4482421875,0.494140625,0.5234375,0.537109375,0.548828125,0.5732421875,0.615234375,0.673828125,0.724609375,0.7275390625,0.6611328125,0.5439453125,0.419921875,0.341796875,0.3251953125,0.3310546875,0.361328125,0.416015625,0.48046875,0.5341796875,0.564453125,0.5703125,0.5732421875,0.5791015625,0.5703125,0.53125,0.4658203125,0.390625,0.3251953125,0.271484375,0.2568359375,0.2998046875,0.390625,0.490234375,0.5556640625,0.5703125,0.576171875,0.5966796875,0.615234375,0.6083984375,0.5703125,0.5107421875,0.4482421875,0.3837890625,0.3212890625,0.294921875,0.3271484375,0.4052734375,0.490234375,0.55078125,0.6005859375,0.640625,0.658203125,0.650390625,0.630859375,0.6171875,0.6220703125,0.6220703125,0.5849609375,0.525390625,0.4765625,0.46484375,0.494140625,0.55078125,0.59765625,0.5859375,0.5166015625,0.4287109375,0.369140625,0.37109375,0.4287109375,0.494140625,0.53515625,0.548828125,0.552734375,0.5673828125,0.607421875,0.673828125,0.73046875,0.7236328125,0.64453125,0.52734375,0.4296875,0.3955078125,0.4287109375,0.4716796875,0.4794921875,0.4501953125,0.4072265625,0.37890625,0.38671875,0.4287109375,0.4814453125,0.5361328125,0.5771484375,0.5927734375,0.5859375,0.57421875,0.5703125,0.5751953125,0.59375,0.6083984375,0.5966796875,0.5537109375,0.4921875,0.4287109375,0.3798828125,0.37890625,0.4248046875,0.486328125,0.5234375,0.5087890625,0.4482421875,0.3759765625,0.3154296875,0.2900390625,0.3115234375,0.3623046875,0.4091796875,0.4287109375,0.447265625,0.4912109375,0.5380859375,0.560546875,0.541015625,0.490234375,0.4287109375,0.37109375,0.33203125,0.328125,0.3583984375,0.40234375,0.4306640625,0.4287109375,0.4169921875,0.396484375,0.37109375,0.3486328125,0.3330078125,0.326171875,0.3251953125,0.333984375,0.3759765625,0.4501953125,0.5322265625,0.5966796875,0.625,0.6220703125,0.5986328125,0.5341796875,0.4482421875,0.380859375,0.361328125,0.390625,0.4482421875,0.5048828125,0.5341796875,0.5224609375,0.4736328125,0.4140625,0.376953125,0.376953125,0.3779296875,0.34375,0.2919921875,0.2568359375,0.2626953125,0.30859375,0.376953125,0.4423828125,0.48046875,0.4833984375,0.4638671875,0.4462890625,0.45703125,0.5,0.544921875,0.5673828125,0.5703125,0.568359375,0.580078125,0.6171875,0.673828125,0.7333984375,0.7783203125,0.78515625,0.75,0.69140625,0.6416015625,0.6220703125,0.6103515625,0.5966796875,0.5830078125,0.57421875,0.5703125,0.5693359375,0.5703125,0.576171875,0.5966796875,0.615234375,0.6083984375,0.5703125,0.5107421875,0.4482421875,0.376953125,0.28125,0.201171875,0.177734375,0.220703125,0.30078125,0.376953125,0.4541015625,0.5419921875,0.6181640625,0.65625,0.6552734375,0.6357421875,0.6220703125,0.5986328125,0.5341796875,0.4521484375,0.3935546875,0.3876953125,0.4306640625,0.5,0.5732421875,0.646484375,0.6953125,0.701171875,0.673828125,0.638671875,0.6220703125,0.5986328125,0.5341796875,0.4482421875,0.380859375,0.361328125,0.390625,0.4482421875,0.5126953125,0.5849609375,0.642578125,0.6669921875,0.658203125,0.63671875,0.6220703125,0.6162109375,0.623046875,0.6318359375,0.6259765625,0.5966796875,0.55078125,0.5,0.455078125,0.4453125,0.482421875,0.5546875,0.62890625,0.671875,0.673828125,0.662109375,0.6484375,0.638671875,0.638671875,0.6484375,0.662109375,0.673828125,0.673828125,0.63671875,0.5732421875,0.5146484375,0.4892578125,0.505859375,0.55078125,0.5966796875,0.61328125,0.580078125,0.5029296875,0.4130859375,0.34765625,0.3251953125,0.3251953125,0.3662109375,0.44921875,0.5498046875,0.6328125,0.673828125,0.673828125,0.6611328125,0.640625,0.6162109375,0.5927734375,0.5771484375,0.5712890625,0.5703125,0.5556640625,0.490234375,0.3935546875,0.3125,0.283203125,0.3125,0.376953125,0.45703125,0.55078125,0.6181640625,0.6181640625,0.55078125,0.45703125,0.376953125,0.306640625,0.25390625,0.2568359375,0.70703125,0.74609375,0.71484375,0.6416015625,0.5693359375,0.509765625,0.4853515625,0.498046875,0.5224609375,0.53125,0.5029296875,0.439453125,0.380859375,0.3740234375,0.4228515625,0.4951171875,0.546875,0.544921875,0.4892578125,0.4248046875,0.3857421875,0.392578125,0.443359375,0.51171875,0.5595703125,0.5693359375,0.5576171875,0.515625,0.4619140625,0.431640625,0.443359375,0.4931640625,0.5595703125,0.634765625,0.71875,0.7724609375,0.7607421875,0.685546875,0.587890625,0.509765625,0.44921875,0.427734375,0.447265625,0.482421875,0.501953125,0.48046875,0.419921875,0.36328125,0.361328125,0.416015625,0.4931640625,0.5478515625,0.5458984375,0.4892578125,0.419921875,0.3603515625,0.33203125,0.3427734375,0.37890625,0.412109375,0.419921875,0.412109375,0.37890625,0.3427734375,0.33203125,0.3603515625,0.419921875,0.4892578125,0.5595703125,0.619140625,0.6474609375,0.63671875,0.599609375,0.5673828125,0.5595703125,0.5673828125,0.6015625,0.6416015625,0.6572265625,0.6328125,0.5771484375,0.509765625,0.4541015625,0.4501953125,0.5009765625,0.5732421875,0.6220703125,0.6171875,0.5595703125,0.4912109375,0.4404296875,0.4287109375,0.4599609375,0.5146484375,0.5576171875,0.5693359375,0.5595703125,0.51171875,0.4453125,0.3984375,0.3974609375,0.44140625,0.509765625,0.5869140625,0.6689453125,0.7158203125,0.693359375,0.609375,0.5078125,0.4296875,0.3662109375,0.333984375,0.353515625,0.4208984375,0.505859375,0.564453125,0.5791015625,0.568359375,0.517578125,0.4443359375,0.3896484375,0.3818359375,0.421875,0.4892578125,0.55859375,0.60546875,0.609375,0.56640625,0.5009765625,0.4521484375,0.439453125,0.451171875,0.505859375,0.5859375,0.6484375,0.6630859375,0.6259765625,0.5595703125,0.486328125,0.419921875,0.3798828125,0.37890625,0.4052734375,0.4326171875,0.439453125,0.4423828125,0.458984375,0.48828125,0.5244140625,0.556640625,0.57421875,0.5791015625,0.580078125,0.5791015625,0.5751953125,0.5693359375,0.5634765625,0.5595703125,0.5595703125,0.5673828125,0.599609375,0.63671875,0.6474609375,0.619140625,0.5595703125,0.4892578125,0.431640625,0.4228515625,0.4658203125,0.5283203125,0.5693359375,0.5595703125,0.5,0.439453125,0.4248046875,0.4609375,0.517578125,0.5556640625,0.5458984375,0.4892578125,0.4345703125,0.43359375,0.48828125,0.5654296875,0.619140625,0.6162109375,0.5595703125,0.4912109375,0.44140625,0.431640625,0.4658203125,0.5234375,0.5673828125,0.5791015625,0.5693359375,0.51953125,0.44921875,0.3955078125,0.3876953125,0.42578125,0.4892578125,0.548828125,0.568359375,0.548828125,0.5146484375,0.49609375,0.5185546875,0.5791015625,0.6435546875,0.67578125,0.6533203125,0.5810546875,0.4931640625,0.43359375,0.419921875,0.4228515625,0.4404296875,0.470703125,0.5078125,0.5390625,0.5556640625,0.5595703125,0.5654296875,0.58984375,0.6103515625,0.603515625,0.5595703125,0.4912109375,0.419921875,0.3544921875,0.3203125,0.3388671875,0.4052734375,0.48828125,0.5458984375,0.5595703125,0.5673828125,0.599609375,0.63671875,0.6474609375,0.619140625,0.5595703125,0.4892578125,0.412109375,0.32421875,0.2646484375,0.2705078125,0.33984375,0.4326171875,0.509765625,0.5771484375,0.6337890625,0.658203125,0.64453125,0.607421875,0.576171875,0.5693359375,0.5595703125,0.5126953125,0.4482421875,0.4013671875,0.400390625,0.443359375,0.509765625,0.56640625,0.5673828125,0.5107421875,0.4326171875,0.3779296875,0.380859375,0.439453125,0.5029296875,0.5302734375,0.521484375,0.498046875,0.48828125,0.5166015625,0.5791015625,0.63671875,0.6318359375,0.5634765625,0.466796875,0.3955078125,0.38671875,0.439453125,0.4970703125,0.5068359375,0.46875,0.4111328125,0.3720703125,0.3828125,0.439453125,0.5087890625,0.5732421875,0.61328125,0.615234375,0.5908203125,0.56640625,0.5595703125,0.56640625,0.5927734375,0.6181640625,0.6162109375,0.576171875,0.5107421875,0.439453125,0.3828125,0.37890625,0.4306640625,0.50390625,0.5537109375,0.548828125,0.4892578125,0.41796875,0.359375,0.3330078125,0.349609375,0.392578125,0.4296875,0.439453125,0.451171875,0.4931640625,0.5458984375,0.57421875,0.560546875,0.5078125,0.439453125,0.3720703125,0.3212890625,0.3095703125,0.33984375,0.3916015625,0.431640625,0.439453125,0.4375,0.43359375,0.4296875,0.4248046875,0.421875,0.419921875,0.419921875,0.423828125,0.4423828125,0.4775390625,0.517578125,0.55078125,0.5673828125,0.5693359375,0.5556640625,0.5048828125,0.4345703125,0.3837890625,0.380859375,0.4228515625,0.4892578125,0.5556640625,0.5986328125,0.59765625,0.55078125,0.486328125,0.439453125,0.4296875,0.421875,0.380859375,0.328125,0.296875,0.30859375,0.3603515625,0.4296875,0.4912109375,0.5126953125,0.490234375,0.4501953125,0.4248046875,0.44140625,0.5,0.55859375,0.5771484375,0.5556640625,0.517578125,0.498046875,0.5185546875,0.5791015625,0.6474609375,0.6982421875,0.7099609375,0.6787109375,0.6240234375,0.5810546875,0.5693359375,0.5673828125,0.5654296875,0.5625,0.560546875,0.5595703125,0.5595703125,0.5595703125,0.5673828125,0.599609375,0.63671875,0.6474609375,0.619140625,0.5595703125,0.4892578125,0.41015625,0.3095703125,0.23046875,0.2138671875,0.265625,0.3515625,0.4296875,0.5029296875,0.5732421875,0.619140625,0.6259765625,0.603515625,0.5771484375,0.5693359375,0.5556640625,0.5048828125,0.435546875,0.3876953125,0.3857421875,0.4306640625,0.5,0.5712890625,0.6328125,0.6630859375,0.65234375,0.61328125,0.5791015625,0.5693359375,0.5556640625,0.5048828125,0.4345703125,0.3837890625,0.380859375,0.4228515625,0.4892578125,0.5595703125,0.6220703125,0.6533203125,0.6455078125,0.611328125,0.5791015625,0.5693359375,0.5751953125,0.60546875,0.640625,0.65234375,0.625,0.5673828125,0.5,0.435546875,0.3955078125,0.40234375,0.453125,0.521484375,0.5693359375,0.5791015625,0.5771484375,0.5751953125,0.5732421875,0.5732421875,0.5751953125,0.5771484375,0.5791015625,0.5693359375,0.5224609375,0.4560546875,0.408203125,0.404296875,0.4443359375,0.509765625,0.57421875,0.6142578125,0.6083984375,0.5556640625,0.4853515625,0.4326171875,0.419921875,0.421875,0.44140625,0.4775390625,0.521484375,0.5576171875,0.5771484375,0.5791015625,0.5771484375,0.5732421875,0.568359375,0.564453125,0.560546875,0.5595703125,0.5595703125,0.5458984375,0.4892578125,0.40625,0.341796875,0.326171875,0.36328125,0.4296875,0.509765625,0.603515625,0.669921875,0.669921875,0.603515625,0.509765625,0.4296875,0.353515625,0.2783203125,0.2451171875,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.75390625,0.720703125,0.6279296875,0.5205078125,0.439453125,0.384765625,0.392578125,0.4638671875,0.560546875,0.630859375,0.6357421875,0.5791015625,0.5166015625,0.4931640625,0.5107421875,0.546875,0.5673828125,0.5478515625,0.4892578125,0.421875,0.36328125,0.3349609375,0.345703125,0.380859375,0.412109375,0.419921875,0.41015625,0.369140625,0.3173828125,0.287109375,0.30078125,0.3515625,0.419921875,0.4990234375,0.5986328125,0.677734375,0.6953125,0.646484375,0.564453125,0.4892578125,0.4345703125,0.43359375,0.48828125,0.5654296875,0.619140625,0.6162109375,0.5595703125,0.5,0.4814453125,0.5068359375,0.5478515625,0.5712890625,0.55078125,0.4892578125,0.421875,0.3798828125,0.38671875,0.44140625,0.5146484375,0.5673828125,0.5791015625,0.568359375,0.5185546875,0.451171875,0.4033203125,0.400390625,0.443359375,0.509765625,0.576171875,0.619140625,0.6162109375,0.568359375,0.5,0.451171875,0.439453125,0.4501953125,0.4970703125,0.560546875,0.603515625,0.6015625,0.556640625,0.4892578125,0.4296875,0.4111328125,0.435546875,0.478515625,0.5048828125,0.48828125,0.4296875,0.3623046875,0.310546875,0.294921875,0.3203125,0.369140625,0.4091796875,0.419921875,0.4140625,0.384765625,0.353515625,0.3466796875,0.3779296875,0.439453125,0.509765625,0.5888671875,0.689453125,0.7685546875,0.78515625,0.7333984375,0.6474609375,0.5693359375,0.49609375,0.42578125,0.3798828125,0.373046875,0.3955078125,0.421875,0.4296875,0.4228515625,0.390625,0.353515625,0.3408203125,0.3681640625,0.4287109375,0.5,0.5712890625,0.6328125,0.6640625,0.6552734375,0.619140625,0.5869140625,0.5791015625,0.5849609375,0.60546875,0.62109375,0.607421875,0.5595703125,0.490234375,0.419921875,0.3564453125,0.322265625,0.33984375,0.404296875,0.4873046875,0.544921875,0.5595703125,0.5576171875,0.5419921875,0.5107421875,0.4736328125,0.44140625,0.4228515625,0.419921875,0.419921875,0.4228515625,0.4267578125,0.4326171875,0.4365234375,0.439453125,0.439453125,0.451171875,0.5,0.568359375,0.6162109375,0.619140625,0.576171875,0.509765625,0.451171875,0.4404296875,0.478515625,0.5361328125,0.572265625,0.5595703125,0.5,0.439453125,0.4248046875,0.4609375,0.517578125,0.5556640625,0.5458984375,0.4892578125,0.431640625,0.4150390625,0.439453125,0.48046875,0.5029296875,0.4814453125,0.419921875,0.3505859375,0.2998046875,0.2900390625,0.32421875,0.3798828125,0.4208984375,0.4296875,0.419921875,0.3876953125,0.3515625,0.341796875,0.3720703125,0.4306640625,0.5,0.5546875,0.5576171875,0.5068359375,0.4326171875,0.380859375,0.3837890625,0.439453125,0.5087890625,0.5751953125,0.615234375,0.619140625,0.59375,0.5673828125,0.5595703125,0.5546875,0.5390625,0.51171875,0.4814453125,0.4560546875,0.4423828125,0.439453125,0.4521484375,0.5087890625,0.5908203125,0.6572265625,0.67578125,0.642578125,0.5791015625,0.5087890625,0.439453125,0.3916015625,0.3779296875,0.3935546875,0.4140625,0.419921875,0.431640625,0.4833984375,0.5556640625,0.6083984375,0.6162109375,0.5751953125,0.509765625,0.431640625,0.3408203125,0.27734375,0.27734375,0.3427734375,0.43359375,0.509765625,0.57421875,0.615234375,0.611328125,0.5625,0.4931640625,0.4423828125,0.4296875,0.419921875,0.3876953125,0.353515625,0.345703125,0.376953125,0.439453125,0.509765625,0.5693359375,0.5888671875,0.564453125,0.5244140625,0.5,0.51953125,0.5791015625,0.634765625,0.62890625,0.5595703125,0.46484375,0.3935546875,0.3857421875,0.439453125,0.5,0.5244140625,0.5146484375,0.4931640625,0.486328125,0.515625,0.5791015625,0.6396484375,0.65234375,0.6142578125,0.5556640625,0.5146484375,0.5224609375,0.5791015625,0.642578125,0.673828125,0.65234375,0.58203125,0.4951171875,0.4345703125,0.419921875,0.431640625,0.4892578125,0.5732421875,0.640625,0.66015625,0.6259765625,0.5595703125,0.498046875,0.48046875,0.5078125,0.5546875,0.583984375,0.568359375,0.509765625,0.4423828125,0.3984375,0.3984375,0.44140625,0.5048828125,0.5498046875,0.5595703125,0.5673828125,0.6083984375,0.6611328125,0.6923828125,0.6806640625,0.62890625,0.5595703125,0.4892578125,0.4375,0.4248046875,0.45703125,0.513671875,0.5576171875,0.5693359375,0.5712890625,0.572265625,0.5732421875,0.5751953125,0.576171875,0.5771484375,0.5791015625,0.5771484375,0.5615234375,0.53125,0.4931640625,0.4609375,0.443359375,0.439453125,0.4306640625,0.3955078125,0.3525390625,0.3359375,0.3603515625,0.4189453125,0.4892578125,0.5615234375,0.6259765625,0.66015625,0.654296875,0.62109375,0.5888671875,0.5791015625,0.568359375,0.5263671875,0.4736328125,0.4443359375,0.458984375,0.5107421875,0.5791015625,0.6357421875,0.6357421875,0.5771484375,0.49609375,0.439453125,0.44140625,0.5,0.5576171875,0.5595703125,0.50390625,0.4248046875,0.369140625,0.37109375,0.4296875,0.4990234375,0.548828125,0.5595703125,0.525390625,0.4697265625,0.4287109375,0.419921875,0.421875,0.42578125,0.4306640625,0.4345703125,0.4384765625,0.439453125,0.439453125,0.451171875,0.5,0.568359375,0.6162109375,0.619140625,0.576171875,0.509765625,0.43359375,0.349609375,0.298828125,0.3154296875,0.3935546875,0.4912109375,0.5693359375,0.6328125,0.6650390625,0.6455078125,0.578125,0.4931640625,0.4345703125,0.419921875,0.41015625,0.376953125,0.33984375,0.3291015625,0.359375,0.419921875,0.4892578125,0.5556640625,0.5986328125,0.595703125,0.5478515625,0.48046875,0.4306640625,0.419921875,0.412109375,0.3798828125,0.34375,0.3349609375,0.3662109375,0.427734375,0.5,0.5673828125,0.611328125,0.6083984375,0.5576171875,0.4853515625,0.43359375,0.419921875,0.4296875,0.48046875,0.55078125,0.603515625,0.609375,0.5673828125,0.5,0.427734375,0.3671875,0.33984375,0.353515625,0.3935546875,0.4296875,0.439453125,0.4404296875,0.439453125,0.4365234375,0.4326171875,0.4296875,0.4287109375,0.4296875,0.4228515625,0.3896484375,0.349609375,0.3349609375,0.3603515625,0.4189453125,0.4892578125,0.5615234375,0.6240234375,0.6572265625,0.6484375,0.6123046875,0.5791015625,0.5693359375,0.564453125,0.544921875,0.5126953125,0.4755859375,0.4462890625,0.4306640625,0.4296875,0.431640625,0.4326171875,0.4345703125,0.435546875,0.4365234375,0.4384765625,0.439453125,0.4345703125,0.412109375,0.390625,0.39453125,0.435546875,0.5,0.5693359375,0.6455078125,0.7353515625,0.798828125,0.798828125,0.7353515625,0.6455078125,0.5693359375,0.4892578125,0.380859375,0.283203125,0.7431640625,0.7021484375,0.60546875,0.501953125,0.4287109375,0.384765625,0.4111328125,0.5078125,0.62890625,0.7158203125,0.728515625,0.673828125,0.60546875,0.5556640625,0.529296875,0.521484375,0.515625,0.4931640625,0.4482421875,0.3955078125,0.34375,0.306640625,0.2958984375,0.306640625,0.3212890625,0.3251953125,0.3173828125,0.28125,0.2353515625,0.2099609375,0.220703125,0.265625,0.3251953125,0.3955078125,0.484375,0.5615234375,0.5888671875,0.5615234375,0.5029296875,0.4482421875,0.4091796875,0.4228515625,0.486328125,0.56640625,0.6201171875,0.6201171875,0.5703125,0.517578125,0.5,0.5146484375,0.5380859375,0.5439453125,0.51171875,0.4482421875,0.3837890625,0.3583984375,0.3955078125,0.4853515625,0.5888671875,0.658203125,0.673828125,0.662109375,0.611328125,0.5380859375,0.48046875,0.46484375,0.494140625,0.55078125,0.6083984375,0.6376953125,0.6220703125,0.5634765625,0.4912109375,0.4404296875,0.4287109375,0.4375,0.4755859375,0.525390625,0.556640625,0.5498046875,0.5068359375,0.4482421875,0.3935546875,0.3701171875,0.380859375,0.4091796875,0.4296875,0.419921875,0.376953125,0.3251953125,0.275390625,0.2470703125,0.25,0.2783203125,0.3095703125,0.3251953125,0.33203125,0.33203125,0.337890625,0.3671875,0.421875,0.4873046875,0.55078125,0.6220703125,0.7177734375,0.7978515625,0.8212890625,0.7783203125,0.6982421875,0.6220703125,0.544921875,0.45703125,0.380859375,0.3427734375,0.34375,0.36328125,0.376953125,0.3798828125,0.361328125,0.3369140625,0.333984375,0.3671875,0.4287109375,0.5,0.5732421875,0.646484375,0.69921875,0.71484375,0.7001953125,0.6796875,0.673828125,0.6728515625,0.66015625,0.6201171875,0.5498046875,0.462890625,0.3837890625,0.3251953125,0.2802734375,0.2666015625,0.3037109375,0.3857421875,0.48046875,0.546875,0.5703125,0.57421875,0.552734375,0.5,0.4306640625,0.3681640625,0.3330078125,0.3251953125,0.328125,0.3408203125,0.36328125,0.390625,0.4140625,0.4267578125,0.4287109375,0.4404296875,0.4912109375,0.5634765625,0.6220703125,0.6376953125,0.6083984375,0.55078125,0.5,0.4912109375,0.521484375,0.564453125,0.5849609375,0.5615234375,0.5,0.435546875,0.40625,0.419921875,0.4580078125,0.490234375,0.48828125,0.4482421875,0.4052734375,0.39453125,0.412109375,0.431640625,0.4287109375,0.3916015625,0.3251953125,0.2587890625,0.21875,0.224609375,0.2724609375,0.3359375,0.3759765625,0.376953125,0.36328125,0.3408203125,0.328125,0.3427734375,0.3876953125,0.4453125,0.5,0.5400390625,0.5390625,0.4951171875,0.43359375,0.388671875,0.3876953125,0.4287109375,0.4833984375,0.5439453125,0.5927734375,0.6123046875,0.6044921875,0.583984375,0.5703125,0.556640625,0.5322265625,0.4990234375,0.4658203125,0.4423828125,0.4306640625,0.4287109375,0.44140625,0.5009765625,0.59375,0.6796875,0.724609375,0.716796875,0.673828125,0.615234375,0.5361328125,0.44921875,0.37890625,0.3388671875,0.326171875,0.3251953125,0.33984375,0.40234375,0.498046875,0.583984375,0.623046875,0.60546875,0.55078125,0.484375,0.41015625,0.3603515625,0.365234375,0.419921875,0.4931640625,0.55078125,0.5986328125,0.6201171875,0.5986328125,0.53515625,0.45703125,0.3984375,0.376953125,0.3623046875,0.3408203125,0.33203125,0.3564453125,0.4140625,0.486328125,0.55078125,0.60546875,0.62890625,0.6220703125,0.6025390625,0.595703125,0.619140625,0.673828125,0.720703125,0.7060546875,0.625,0.5126953125,0.421875,0.3935546875,0.4287109375,0.474609375,0.4990234375,0.509765625,0.5224609375,0.552734375,0.60546875,0.673828125,0.736328125,0.7587890625,0.734375,0.6826171875,0.638671875,0.6337890625,0.673828125,0.7158203125,0.7177734375,0.6572265625,0.5478515625,0.4306640625,0.3505859375,0.3251953125,0.3310546875,0.39453125,0.5009765625,0.6005859375,0.6494140625,0.6328125,0.5703125,0.5087890625,0.4892578125,0.517578125,0.5693359375,0.6064453125,0.6015625,0.55078125,0.4931640625,0.45703125,0.45703125,0.4931640625,0.541015625,0.5712890625,0.5703125,0.5703125,0.6044921875,0.6552734375,0.6904296875,0.6845703125,0.638671875,0.5703125,0.5,0.4482421875,0.4384765625,0.4775390625,0.544921875,0.6005859375,0.6220703125,0.6318359375,0.6396484375,0.6455078125,0.650390625,0.6552734375,0.6630859375,0.673828125,0.677734375,0.6552734375,0.603515625,0.5341796875,0.4716796875,0.4365234375,0.4287109375,0.419921875,0.3798828125,0.3310546875,0.3056640625,0.3232421875,0.3779296875,0.4482421875,0.5244140625,0.6103515625,0.681640625,0.71484375,0.7099609375,0.6884765625,0.673828125,0.654296875,0.611328125,0.5634765625,0.5419921875,0.5615234375,0.6123046875,0.673828125,0.71875,0.701171875,0.6201171875,0.517578125,0.4462890625,0.4423828125,0.5,0.556640625,0.552734375,0.4853515625,0.3916015625,0.32421875,0.3203125,0.376953125,0.4443359375,0.484375,0.478515625,0.4296875,0.3671875,0.3271484375,0.3251953125,0.337890625,0.3583984375,0.3828125,0.40625,0.421875,0.427734375,0.4287109375,0.4404296875,0.4912109375,0.5634765625,0.6220703125,0.6376953125,0.6083984375,0.55078125,0.486328125,0.419921875,0.38671875,0.4091796875,0.48046875,0.5615234375,0.6220703125,0.666015625,0.6728515625,0.6240234375,0.529296875,0.4228515625,0.349609375,0.3251953125,0.3095703125,0.28125,0.2607421875,0.271484375,0.318359375,0.3837890625,0.4482421875,0.5048828125,0.5341796875,0.5185546875,0.4609375,0.3876953125,0.3369140625,0.3251953125,0.3193359375,0.298828125,0.2841796875,0.2998046875,0.3525390625,0.42578125,0.5,0.56640625,0.6044921875,0.5859375,0.5146484375,0.419921875,0.349609375,0.3251953125,0.3291015625,0.384765625,0.4755859375,0.5556640625,0.5888671875,0.5634765625,0.5,0.4267578125,0.359375,0.3232421875,0.330078125,0.3701171875,0.41015625,0.4287109375,0.4365234375,0.431640625,0.4140625,0.3916015625,0.375,0.3701171875,0.376953125,0.37890625,0.353515625,0.3173828125,0.3017578125,0.3232421875,0.3779296875,0.4482421875,0.5234375,0.6025390625,0.662109375,0.6826171875,0.666015625,0.6376953125,0.6220703125,0.6044921875,0.5615234375,0.4970703125,0.4326171875,0.3876953125,0.37109375,0.376953125,0.38671875,0.39453125,0.400390625,0.4052734375,0.4111328125,0.4189453125,0.4287109375,0.4365234375,0.4375,0.4443359375,0.4697265625,0.5146484375,0.5693359375,0.6220703125,0.6787109375,0.7451171875,0.79296875,0.79296875,0.7451171875,0.6787109375,0.6220703125,0.556640625,0.4482421875,0.330078125,0.708984375,0.6826171875,0.6064453125,0.5244140625,0.46875,0.44140625,0.482421875,0.587890625,0.708984375,0.7900390625,0.796875,0.740234375,0.6650390625,0.5810546875,0.5048828125,0.4521484375,0.4248046875,0.4111328125,0.39453125,0.373046875,0.3427734375,0.30859375,0.28125,0.2646484375,0.259765625,0.2587890625,0.2529296875,0.2265625,0.1923828125,0.1728515625,0.181640625,0.21484375,0.2587890625,0.30859375,0.369140625,0.421875,0.447265625,0.439453125,0.416015625,0.39453125,0.3857421875,0.4140625,0.474609375,0.5380859375,0.57421875,0.568359375,0.5302734375,0.4921875,0.484375,0.4990234375,0.513671875,0.50390625,0.4609375,0.39453125,0.3330078125,0.322265625,0.3857421875,0.5078125,0.638671875,0.7216796875,0.740234375,0.73046875,0.6875,0.6240234375,0.568359375,0.546875,0.5634765625,0.6044921875,0.6455078125,0.662109375,0.640625,0.5849609375,0.521484375,0.478515625,0.46875,0.4736328125,0.4912109375,0.5078125,0.5078125,0.482421875,0.4404296875,0.39453125,0.3525390625,0.326171875,0.3251953125,0.3447265625,0.3681640625,0.376953125,0.3642578125,0.33984375,0.2978515625,0.2509765625,0.2197265625,0.2158203125,0.2333984375,0.2587890625,0.2861328125,0.3212890625,0.369140625,0.4306640625,0.49609375,0.5556640625,0.6044921875,0.6591796875,0.73828125,0.806640625,0.826171875,0.78515625,0.7099609375,0.634765625,0.5556640625,0.4541015625,0.361328125,0.30859375,0.306640625,0.3349609375,0.3642578125,0.3828125,0.376953125,0.3583984375,0.3525390625,0.376953125,0.4306640625,0.5,0.5751953125,0.65625,0.7236328125,0.7568359375,0.7568359375,0.744140625,0.740234375,0.7314453125,0.6845703125,0.5908203125,0.4716796875,0.361328125,0.2890625,0.2587890625,0.2431640625,0.2470703125,0.2841796875,0.3525390625,0.431640625,0.4951171875,0.5302734375,0.548828125,0.53515625,0.48046875,0.3974609375,0.3173828125,0.2685546875,0.2587890625,0.263671875,0.2890625,0.3359375,0.3916015625,0.4384765625,0.4638671875,0.46875,0.478515625,0.521484375,0.5849609375,0.640625,0.662109375,0.6455078125,0.6044921875,0.568359375,0.5634765625,0.5849609375,0.607421875,0.6044921875,0.5654296875,0.5,0.4296875,0.3759765625,0.353515625,0.36328125,0.390625,0.4052734375,0.39453125,0.3828125,0.39453125,0.4140625,0.416015625,0.38671875,0.3291015625,0.2587890625,0.1953125,0.1708984375,0.201171875,0.2705078125,0.341796875,0.376953125,0.3642578125,0.3388671875,0.3251953125,0.3359375,0.375,0.4287109375,0.474609375,0.5,0.5146484375,0.513671875,0.49609375,0.47265625,0.455078125,0.4541015625,0.46875,0.4931640625,0.529296875,0.56640625,0.5849609375,0.580078125,0.556640625,0.5302734375,0.5029296875,0.4765625,0.4580078125,0.453125,0.458984375,0.466796875,0.46875,0.478515625,0.5224609375,0.5966796875,0.67578125,0.7333984375,0.751953125,0.740234375,0.7099609375,0.6376953125,0.52734375,0.408203125,0.314453125,0.267578125,0.2587890625,0.2734375,0.341796875,0.4521484375,0.5634765625,0.6318359375,0.640625,0.6044921875,0.5576171875,0.513671875,0.4912109375,0.501953125,0.5400390625,0.580078125,0.6044921875,0.62109375,0.62109375,0.5908203125,0.5302734375,0.45703125,0.3984375,0.3642578125,0.337890625,0.3212890625,0.3359375,0.3916015625,0.4736328125,0.55078125,0.6044921875,0.6455078125,0.6689453125,0.673828125,0.6708984375,0.67578125,0.69921875,0.740234375,0.775390625,0.7646484375,0.6982421875,0.599609375,0.5087890625,0.462890625,0.46875,0.484375,0.4892578125,0.4990234375,0.533203125,0.5927734375,0.6669921875,0.740234375,0.8076171875,0.8486328125,0.84765625,0.8095703125,0.759765625,0.7314453125,0.740234375,0.7509765625,0.7216796875,0.6376953125,0.513671875,0.38671875,0.298828125,0.2587890625,0.25,0.3046875,0.4140625,0.52734375,0.59375,0.58984375,0.5302734375,0.4677734375,0.451171875,0.48828125,0.5576171875,0.619140625,0.63671875,0.6044921875,0.5625,0.53515625,0.5302734375,0.541015625,0.552734375,0.55078125,0.5302734375,0.5146484375,0.5361328125,0.5849609375,0.626953125,0.6328125,0.595703125,0.5302734375,0.458984375,0.404296875,0.39453125,0.44140625,0.5234375,0.5966796875,0.634765625,0.6591796875,0.67578125,0.6845703125,0.6904296875,0.69921875,0.7158203125,0.740234375,0.759765625,0.74609375,0.6904296875,0.607421875,0.52734375,0.4794921875,0.46875,0.45703125,0.40625,0.3369140625,0.2861328125,0.283203125,0.326171875,0.39453125,0.4755859375,0.5859375,0.6953125,0.767578125,0.787109375,0.767578125,0.740234375,0.7080078125,0.662109375,0.6240234375,0.6162109375,0.6435546875,0.6923828125,0.740234375,0.7685546875,0.73046875,0.6318359375,0.5185546875,0.4443359375,0.44140625,0.5,0.556640625,0.55078125,0.48046875,0.3837890625,0.3134765625,0.3076171875,0.3642578125,0.427734375,0.4521484375,0.421875,0.3525390625,0.28125,0.24609375,0.2587890625,0.2890625,0.333984375,0.3857421875,0.4306640625,0.4580078125,0.4677734375,0.46875,0.478515625,0.521484375,0.5849609375,0.640625,0.662109375,0.6455078125,0.6044921875,0.55859375,0.5185546875,0.501953125,0.521484375,0.5654296875,0.609375,0.634765625,0.6484375,0.6318359375,0.5712890625,0.474609375,0.3720703125,0.2958984375,0.2587890625,0.23046875,0.201171875,0.1923828125,0.220703125,0.2783203125,0.34375,0.39453125,0.435546875,0.4521484375,0.4306640625,0.375,0.3115234375,0.2685546875,0.2587890625,0.2548828125,0.2421875,0.2421875,0.275390625,0.3427734375,0.423828125,0.5,0.5673828125,0.60546875,0.5849609375,0.501953125,0.390625,0.2998046875,0.2587890625,0.2490234375,0.30078125,0.40234375,0.5078125,0.568359375,0.5595703125,0.5,0.42578125,0.353515625,0.314453125,0.3251953125,0.376953125,0.4345703125,0.46875,0.48828125,0.4794921875,0.44140625,0.3916015625,0.353515625,0.3447265625,0.3642578125,0.380859375,0.361328125,0.3203125,0.2861328125,0.287109375,0.3271484375,0.39453125,0.4736328125,0.5703125,0.6572265625,0.701171875,0.697265625,0.6650390625,0.634765625,0.599609375,0.5322265625,0.447265625,0.375,0.3388671875,0.3408203125,0.3642578125,0.388671875,0.4052734375,0.4140625,0.4189453125,0.427734375,0.4443359375,0.46875,0.49609375,0.5244140625,0.5517578125,0.5771484375,0.59765625,0.6162109375,0.634765625,0.65625,0.6806640625,0.6982421875,0.6982421875,0.6806640625,0.65625,0.634765625,0.6005859375,0.51171875,0.39453125,0.666015625,0.662109375,0.6181640625,0.564453125,0.5302734375,0.51953125,0.5673828125,0.662109375,0.759765625,0.8125,0.8017578125,0.740234375,0.6591796875,0.5498046875,0.4384765625,0.361328125,0.3349609375,0.3447265625,0.3642578125,0.3798828125,0.380859375,0.361328125,0.3251953125,0.2880859375,0.263671875,0.2587890625,0.2548828125,0.240234375,0.220703125,0.208984375,0.2138671875,0.2333984375,0.2587890625,0.2841796875,0.3056640625,0.3193359375,0.328125,0.3359375,0.3466796875,0.3642578125,0.388671875,0.4306640625,0.4775390625,0.5078125,0.5126953125,0.4951171875,0.46875,0.451171875,0.4609375,0.4853515625,0.5,0.482421875,0.4326171875,0.3642578125,0.302734375,0.2958984375,0.3671875,0.4970703125,0.6337890625,0.7216796875,0.740234375,0.734375,0.7060546875,0.6630859375,0.6240234375,0.60546875,0.611328125,0.634765625,0.658203125,0.6650390625,0.646484375,0.607421875,0.564453125,0.5361328125,0.5302734375,0.529296875,0.5244140625,0.5078125,0.474609375,0.4326171875,0.3935546875,0.3642578125,0.3369140625,0.3095703125,0.2978515625,0.30859375,0.3388671875,0.3720703125,0.39453125,0.4033203125,0.3740234375,0.3134765625,0.2509765625,0.21484375,0.220703125,0.2587890625,0.30859375,0.3720703125,0.4443359375,0.513671875,0.568359375,0.6064453125,0.634765625,0.669921875,0.7275390625,0.7783203125,0.7900390625,0.75,0.6787109375,0.6044921875,0.5234375,0.4189453125,0.3251953125,0.28125,0.2958984375,0.345703125,0.39453125,0.4306640625,0.435546875,0.4140625,0.3916015625,0.39453125,0.43359375,0.5,0.5751953125,0.65625,0.7236328125,0.7568359375,0.7568359375,0.744140625,0.740234375,0.7265625,0.6572265625,0.53515625,0.400390625,0.2958984375,0.251953125,0.2587890625,0.2763671875,0.2890625,0.3056640625,0.333984375,0.375,0.4228515625,0.46875,0.5087890625,0.515625,0.4775390625,0.40234375,0.322265625,0.2705078125,0.2587890625,0.265625,0.2978515625,0.3583984375,0.4306640625,0.490234375,0.5234375,0.5302734375,0.5361328125,0.564453125,0.607421875,0.646484375,0.6650390625,0.658203125,0.634765625,0.6162109375,0.6220703125,0.640625,0.646484375,0.6220703125,0.568359375,0.5,0.423828125,0.34375,0.2861328125,0.2734375,0.2998046875,0.3388671875,0.3642578125,0.3896484375,0.4326171875,0.4658203125,0.4609375,0.41015625,0.333984375,0.2587890625,0.1982421875,0.189453125,0.240234375,0.3251953125,0.400390625,0.42578125,0.39453125,0.35546875,0.345703125,0.375,0.4306640625,0.484375,0.5087890625,0.5,0.484375,0.4853515625,0.5029296875,0.5263671875,0.5439453125,0.544921875,0.5302734375,0.5166015625,0.521484375,0.5380859375,0.5498046875,0.5419921875,0.51171875,0.46875,0.4267578125,0.400390625,0.40625,0.44140625,0.48828125,0.5224609375,0.5302734375,0.5322265625,0.546875,0.5791015625,0.626953125,0.677734375,0.716796875,0.740234375,0.7470703125,0.703125,0.5986328125,0.4638671875,0.341796875,0.2724609375,0.2587890625,0.271484375,0.33203125,0.435546875,0.546875,0.6259765625,0.65234375,0.634765625,0.6123046875,0.603515625,0.61328125,0.6318359375,0.6484375,0.6494140625,0.634765625,0.6171875,0.6005859375,0.5771484375,0.541015625,0.4931640625,0.44140625,0.39453125,0.3525390625,0.3330078125,0.3583984375,0.4306640625,0.5224609375,0.59765625,0.634765625,0.6591796875,0.67578125,0.6845703125,0.6904296875,0.69921875,0.7158203125,0.740234375,0.763671875,0.7685546875,0.740234375,0.681640625,0.611328125,0.556640625,0.5302734375,0.505859375,0.4765625,0.4658203125,0.5,0.57421875,0.6630859375,0.740234375,0.8125,0.8759765625,0.9033203125,0.880859375,0.82421875,0.7685546875,0.740234375,0.716796875,0.6708984375,0.59375,0.494140625,0.392578125,0.3115234375,0.2587890625,0.2294921875,0.263671875,0.35546875,0.4609375,0.5283203125,0.52734375,0.46875,0.4072265625,0.3896484375,0.43359375,0.5185546875,0.6044921875,0.646484375,0.634765625,0.611328125,0.5986328125,0.5908203125,0.5771484375,0.5517578125,0.513671875,0.46875,0.4345703125,0.443359375,0.48828125,0.5380859375,0.55859375,0.5322265625,0.46875,0.396484375,0.333984375,0.3173828125,0.3642578125,0.4560546875,0.5478515625,0.6044921875,0.6455078125,0.6689453125,0.673828125,0.6708984375,0.67578125,0.69921875,0.740234375,0.779296875,0.787109375,0.748046875,0.673828125,0.5927734375,0.541015625,0.5302734375,0.515625,0.4541015625,0.36328125,0.2900390625,0.265625,0.2978515625,0.3642578125,0.44921875,0.5732421875,0.7041015625,0.7919921875,0.814453125,0.78515625,0.740234375,0.6923828125,0.6435546875,0.6162109375,0.6240234375,0.662109375,0.7080078125,0.740234375,0.75,0.6982421875,0.5966796875,0.4912109375,0.4306640625,0.439453125,0.5,0.556640625,0.5546875,0.4912109375,0.40234375,0.3388671875,0.3369140625,0.39453125,0.455078125,0.4638671875,0.4140625,0.328125,0.2529296875,0.2275390625,0.2587890625,0.3095703125,0.375,0.4443359375,0.4970703125,0.5234375,0.5302734375,0.5302734375,0.5361328125,0.564453125,0.607421875,0.646484375,0.6650390625,0.658203125,0.634765625,0.611328125,0.599609375,0.6015625,0.61328125,0.6220703125,0.6201171875,0.6044921875,0.583984375,0.5546875,0.5078125,0.4443359375,0.3720703125,0.30859375,0.2587890625,0.2138671875,0.177734375,0.1728515625,0.208984375,0.271484375,0.330078125,0.3642578125,0.3876953125,0.3935546875,0.375,0.3359375,0.29296875,0.2646484375,0.2587890625,0.2548828125,0.2421875,0.2421875,0.275390625,0.3427734375,0.423828125,0.5,0.5703125,0.619140625,0.61328125,0.5380859375,0.4228515625,0.318359375,0.2587890625,0.23046875,0.2685546875,0.3671875,0.48046875,0.5546875,0.5576171875,0.5,0.423828125,0.3486328125,0.30859375,0.328125,0.396484375,0.474609375,0.5302734375,0.564453125,0.5546875,0.4990234375,0.4248046875,0.369140625,0.359375,0.39453125,0.427734375,0.416015625,0.36328125,0.306640625,0.279296875,0.3017578125,0.3642578125,0.4453125,0.5537109375,0.654296875,0.70703125,0.6982421875,0.6533203125,0.6044921875,0.5498046875,0.4638671875,0.375,0.3193359375,0.314453125,0.3486328125,0.39453125,0.435546875,0.458984375,0.4638671875,0.4609375,0.4658203125,0.4892578125,0.5302734375,0.578125,0.6318359375,0.6708984375,0.6796875,0.6591796875,0.6279296875,0.6044921875,0.583984375,0.55859375,0.541015625,0.541015625,0.55859375,0.583984375,0.6044921875,0.6083984375,0.5546875,0.4580078125,0.6318359375,0.642578125,0.619140625,0.5869140625,0.5703125,0.572265625,0.619140625,0.693359375,0.755859375,0.7734375,0.7392578125,0.673828125,0.58984375,0.4716796875,0.3544921875,0.28515625,0.28125,0.32421875,0.376953125,0.42578125,0.45703125,0.4541015625,0.4189453125,0.3701171875,0.333984375,0.3251953125,0.32421875,0.318359375,0.310546875,0.3056640625,0.3076171875,0.3154296875,0.3251953125,0.330078125,0.314453125,0.2900390625,0.27734375,0.2900390625,0.328125,0.376953125,0.4296875,0.4794921875,0.5078125,0.50390625,0.4755859375,0.4453125,0.4287109375,0.427734375,0.455078125,0.4951171875,0.5166015625,0.4990234375,0.447265625,0.376953125,0.314453125,0.2978515625,0.3505859375,0.458984375,0.5791015625,0.65625,0.673828125,0.6708984375,0.658203125,0.638671875,0.62109375,0.611328125,0.61328125,0.6220703125,0.630859375,0.6318359375,0.6220703125,0.6044921875,0.5849609375,0.572265625,0.5703125,0.5673828125,0.5498046875,0.5146484375,0.4677734375,0.4228515625,0.3916015625,0.376953125,0.361328125,0.3330078125,0.30859375,0.310546875,0.34375,0.3955078125,0.4482421875,0.486328125,0.47265625,0.4091796875,0.3291015625,0.275390625,0.2763671875,0.3251953125,0.390625,0.4658203125,0.53515625,0.5830078125,0.60546875,0.61328125,0.6220703125,0.6396484375,0.6806640625,0.720703125,0.7275390625,0.69140625,0.6240234375,0.55078125,0.470703125,0.3701171875,0.2880859375,0.2646484375,0.306640625,0.380859375,0.4482421875,0.4990234375,0.5078125,0.4775390625,0.4345703125,0.4140625,0.4375,0.5,0.5732421875,0.646484375,0.69921875,0.71484375,0.7001953125,0.6796875,0.673828125,0.658203125,0.5859375,0.470703125,0.357421875,0.2890625,0.2841796875,0.3251953125,0.369140625,0.3828125,0.3701171875,0.349609375,0.3466796875,0.3740234375,0.4287109375,0.486328125,0.5185546875,0.5068359375,0.453125,0.384765625,0.3369140625,0.3251953125,0.3310546875,0.361328125,0.416015625,0.48046875,0.5341796875,0.564453125,0.5703125,0.572265625,0.5849609375,0.6044921875,0.6220703125,0.6318359375,0.630859375,0.6220703125,0.619140625,0.6376953125,0.662109375,0.6650390625,0.6318359375,0.5703125,0.5,0.419921875,0.3232421875,0.244140625,0.220703125,0.2568359375,0.3203125,0.376953125,0.435546875,0.5087890625,0.5595703125,0.5546875,0.4921875,0.4033203125,0.3251953125,0.267578125,0.265625,0.3251953125,0.4140625,0.4833984375,0.4951171875,0.4482421875,0.396484375,0.3876953125,0.42578125,0.4873046875,0.5341796875,0.5390625,0.5,0.458984375,0.4599609375,0.50390625,0.5654296875,0.6103515625,0.611328125,0.5703125,0.525390625,0.5068359375,0.51171875,0.5224609375,0.517578125,0.4853515625,0.4287109375,0.373046875,0.3447265625,0.365234375,0.4287109375,0.505859375,0.55859375,0.5703125,0.5654296875,0.5478515625,0.533203125,0.5390625,0.5712890625,0.62109375,0.673828125,0.71484375,0.7099609375,0.6416015625,0.5283203125,0.4130859375,0.3408203125,0.3251953125,0.333984375,0.3759765625,0.4501953125,0.5322265625,0.5966796875,0.625,0.6220703125,0.619140625,0.640625,0.6767578125,0.703125,0.701171875,0.669921875,0.6220703125,0.576171875,0.5537109375,0.5517578125,0.552734375,0.541015625,0.5048828125,0.4482421875,0.390625,0.361328125,0.380859375,0.4482421875,0.5341796875,0.5986328125,0.6220703125,0.6318359375,0.6396484375,0.6455078125,0.650390625,0.6552734375,0.6630859375,0.673828125,0.6884765625,0.712890625,0.7294921875,0.7197265625,0.6796875,0.623046875,0.5703125,0.5126953125,0.4462890625,0.40625,0.4248046875,0.5,0.59375,0.673828125,0.75,0.83203125,0.8837890625,0.875,0.8115234375,0.7333984375,0.673828125,0.6240234375,0.580078125,0.5390625,0.4951171875,0.443359375,0.38671875,0.3251953125,0.2783203125,0.2880859375,0.3525390625,0.4365234375,0.4921875,0.48828125,0.4287109375,0.365234375,0.341796875,0.3798828125,0.46484375,0.5595703125,0.6171875,0.6220703125,0.615234375,0.6201171875,0.62109375,0.6005859375,0.5537109375,0.4921875,0.4287109375,0.37890625,0.3759765625,0.41796875,0.474609375,0.5068359375,0.490234375,0.4287109375,0.353515625,0.2802734375,0.2490234375,0.28515625,0.376953125,0.478515625,0.55078125,0.60546875,0.62890625,0.6220703125,0.6025390625,0.595703125,0.619140625,0.673828125,0.73046875,0.7626953125,0.7509765625,0.6982421875,0.62890625,0.5810546875,0.5703125,0.5556640625,0.490234375,0.3935546875,0.3125,0.283203125,0.3125,0.376953125,0.462890625,0.5869140625,0.7119140625,0.78515625,0.787109375,0.736328125,0.673828125,0.6123046875,0.5615234375,0.5419921875,0.5634765625,0.611328125,0.654296875,0.673828125,0.669921875,0.6142578125,0.5234375,0.443359375,0.41015625,0.435546875,0.5,0.55859375,0.5625,0.5107421875,0.4365234375,0.384765625,0.3896484375,0.4482421875,0.505859375,0.5078125,0.4482421875,0.359375,0.2900390625,0.2783203125,0.3251953125,0.390625,0.4658203125,0.53125,0.5703125,0.5791015625,0.5732421875,0.5703125,0.572265625,0.5849609375,0.6044921875,0.6220703125,0.6318359375,0.630859375,0.6220703125,0.6171875,0.630859375,0.650390625,0.658203125,0.640625,0.6005859375,0.55078125,0.5048828125,0.4755859375,0.4619140625,0.4501953125,0.42578125,0.3837890625,0.3251953125,0.265625,0.220703125,0.2138671875,0.2490234375,0.3076171875,0.357421875,0.376953125,0.3857421875,0.3876953125,0.3779296875,0.3603515625,0.3408203125,0.328125,0.3251953125,0.3193359375,0.298828125,0.2841796875,0.2998046875,0.3525390625,0.42578125,0.5,0.57421875,0.640625,0.6611328125,0.6103515625,0.5068359375,0.3994140625,0.3251953125,0.2802734375,0.2978515625,0.37890625,0.4814453125,0.552734375,0.556640625,0.5,0.4228515625,0.34375,0.2998046875,0.3232421875,0.4033203125,0.4990234375,0.5703125,0.6181640625,0.6123046875,0.55078125,0.466796875,0.4052734375,0.3994140625,0.4482421875,0.49609375,0.490234375,0.4326171875,0.357421875,0.3095703125,0.3173828125,0.376953125,0.4599609375,0.5693359375,0.6669921875,0.7080078125,0.6826171875,0.6171875,0.55078125,0.48046875,0.3876953125,0.3076171875,0.2802734375,0.314453125,0.3818359375,0.4482421875,0.501953125,0.525390625,0.5185546875,0.4990234375,0.4921875,0.515625,0.5703125,0.63671875,0.708984375,0.75390625,0.744140625,0.6845703125,0.609375,0.55078125,0.494140625,0.427734375,0.3798828125,0.3798828125,0.427734375,0.494140625,0.55078125,0.5888671875,0.5712890625,0.50390625,0.6220703125,0.6240234375,0.5966796875,0.568359375,0.5595703125,0.568359375,0.611328125,0.6689453125,0.705078125,0.697265625,0.6484375,0.5791015625,0.49609375,0.3857421875,0.2890625,0.25,0.283203125,0.3564453125,0.4296875,0.49609375,0.544921875,0.5556640625,0.5234375,0.470703125,0.4296875,0.419921875,0.419921875,0.4189453125,0.4169921875,0.4169921875,0.4169921875,0.41796875,0.419921875,0.412109375,0.375,0.326171875,0.2998046875,0.3134765625,0.36328125,0.4296875,0.4970703125,0.548828125,0.5654296875,0.5390625,0.490234375,0.4501953125,0.439453125,0.4482421875,0.4873046875,0.5380859375,0.56640625,0.5517578125,0.5,0.4296875,0.36328125,0.3291015625,0.349609375,0.4189453125,0.505859375,0.5654296875,0.5791015625,0.5791015625,0.576171875,0.5732421875,0.5693359375,0.568359375,0.568359375,0.5693359375,0.5703125,0.5703125,0.568359375,0.5654296875,0.5615234375,0.5595703125,0.5595703125,0.556640625,0.5419921875,0.513671875,0.48046875,0.451171875,0.4345703125,0.4296875,0.419921875,0.38671875,0.3486328125,0.3359375,0.36328125,0.421875,0.4892578125,0.544921875,0.5458984375,0.490234375,0.4130859375,0.359375,0.3623046875,0.419921875,0.4912109375,0.5595703125,0.6044921875,0.6142578125,0.595703125,0.57421875,0.5693359375,0.5791015625,0.615234375,0.6552734375,0.6689453125,0.6416015625,0.5810546875,0.509765625,0.4296875,0.333984375,0.263671875,0.259765625,0.3212890625,0.412109375,0.4892578125,0.5478515625,0.55859375,0.5205078125,0.462890625,0.4267578125,0.439453125,0.5,0.5712890625,0.6328125,0.6640625,0.6552734375,0.619140625,0.5869140625,0.5791015625,0.56640625,0.5068359375,0.419921875,0.349609375,0.326171875,0.357421875,0.419921875,0.4765625,0.48828125,0.453125,0.400390625,0.3671875,0.380859375,0.439453125,0.5078125,0.556640625,0.564453125,0.529296875,0.47265625,0.4296875,0.419921875,0.4228515625,0.4404296875,0.470703125,0.5078125,0.5390625,0.5556640625,0.5595703125,0.5595703125,0.5615234375,0.5654296875,0.568359375,0.5703125,0.5703125,0.5693359375,0.576171875,0.6083984375,0.6455078125,0.658203125,0.630859375,0.5703125,0.5,0.4189453125,0.318359375,0.23828125,0.220703125,0.271484375,0.3544921875,0.4296875,0.505859375,0.5966796875,0.66015625,0.6591796875,0.5927734375,0.4990234375,0.419921875,0.361328125,0.3583984375,0.4130859375,0.4912109375,0.546875,0.5458984375,0.4892578125,0.4306640625,0.4208984375,0.4609375,0.5224609375,0.564453125,0.5556640625,0.5,0.4443359375,0.44140625,0.4921875,0.56640625,0.6181640625,0.615234375,0.5595703125,0.5,0.4755859375,0.4892578125,0.515625,0.52734375,0.5009765625,0.439453125,0.3740234375,0.337890625,0.3515625,0.4130859375,0.4912109375,0.546875,0.5595703125,0.5498046875,0.5126953125,0.466796875,0.4423828125,0.4599609375,0.5126953125,0.5791015625,0.6416015625,0.6728515625,0.6494140625,0.5791015625,0.4921875,0.4326171875,0.419921875,0.423828125,0.4423828125,0.4775390625,0.517578125,0.55078125,0.5673828125,0.5693359375,0.5771484375,0.615234375,0.666015625,0.6962890625,0.6845703125,0.6357421875,0.5693359375,0.5107421875,0.4921875,0.513671875,0.55078125,0.5712890625,0.5498046875,0.4892578125,0.4228515625,0.380859375,0.3837890625,0.4345703125,0.5048828125,0.5556640625,0.5693359375,0.5712890625,0.572265625,0.5732421875,0.5751953125,0.576171875,0.5771484375,0.5791015625,0.58984375,0.62890625,0.6748046875,0.6982421875,0.6796875,0.626953125,0.5595703125,0.4833984375,0.3935546875,0.33203125,0.3359375,0.4052734375,0.4990234375,0.5791015625,0.658203125,0.7509765625,0.814453125,0.8134765625,0.7470703125,0.6552734375,0.5791015625,0.5185546875,0.490234375,0.494140625,0.5107421875,0.5126953125,0.482421875,0.419921875,0.3623046875,0.35546875,0.400390625,0.46484375,0.5087890625,0.4990234375,0.439453125,0.373046875,0.337890625,0.3544921875,0.419921875,0.501953125,0.5576171875,0.5693359375,0.57421875,0.5986328125,0.62109375,0.6171875,0.576171875,0.5107421875,0.439453125,0.3818359375,0.3720703125,0.412109375,0.47265625,0.51171875,0.5,0.439453125,0.3623046875,0.27734375,0.2275390625,0.24609375,0.328125,0.4296875,0.509765625,0.5693359375,0.5888671875,0.564453125,0.5244140625,0.5,0.51953125,0.5791015625,0.646484375,0.6953125,0.7041015625,0.6689453125,0.6123046875,0.5693359375,0.5595703125,0.5458984375,0.4892578125,0.40625,0.341796875,0.326171875,0.36328125,0.4296875,0.5126953125,0.6240234375,0.72265625,0.76171875,0.728515625,0.654296875,0.5791015625,0.5107421875,0.458984375,0.4443359375,0.4736328125,0.5263671875,0.568359375,0.5791015625,0.5693359375,0.5185546875,0.4482421875,0.3955078125,0.3896484375,0.431640625,0.5,0.55859375,0.568359375,0.5263671875,0.462890625,0.4208984375,0.4296875,0.4892578125,0.5478515625,0.55078125,0.4970703125,0.41796875,0.3623046875,0.36328125,0.419921875,0.4912109375,0.5595703125,0.603515625,0.6103515625,0.58984375,0.5654296875,0.5595703125,0.5595703125,0.5615234375,0.5654296875,0.568359375,0.5703125,0.5703125,0.5693359375,0.576171875,0.607421875,0.64453125,0.658203125,0.6337890625,0.5771484375,0.509765625,0.4501953125,0.4306640625,0.4501953125,0.484375,0.5029296875,0.48046875,0.419921875,0.3515625,0.30078125,0.2890625,0.3203125,0.375,0.41796875,0.4296875,0.4306640625,0.4306640625,0.4296875,0.42578125,0.4228515625,0.419921875,0.419921875,0.412109375,0.3798828125,0.34375,0.3349609375,0.3662109375,0.427734375,0.5,0.5771484375,0.66015625,0.7080078125,0.6865234375,0.6025390625,0.5,0.419921875,0.36328125,0.36328125,0.421875,0.5029296875,0.5595703125,0.5576171875,0.5,0.421875,0.3359375,0.283203125,0.2998046875,0.3798828125,0.4794921875,0.5595703125,0.6162109375,0.6181640625,0.5634765625,0.4853515625,0.4306640625,0.4326171875,0.4892578125,0.5458984375,0.548828125,0.4951171875,0.4189453125,0.3662109375,0.37109375,0.4296875,0.5107421875,0.6142578125,0.697265625,0.7177734375,0.6689453125,0.5859375,0.509765625,0.4306640625,0.3369140625,0.267578125,0.26171875,0.322265625,0.412109375,0.4892578125,0.5498046875,0.568359375,0.544921875,0.50390625,0.48046875,0.4990234375,0.5595703125,0.6357421875,0.720703125,0.7734375,0.759765625,0.68359375,0.5869140625,0.509765625,0.43359375,0.34375,0.2802734375,0.2802734375,0.34375,0.43359375,0.509765625,0.5654296875,0.5712890625,0.5263671875,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.6630859375,0.5966796875,0.513671875,0.4541015625,0.439453125,0.4482421875,0.4873046875,0.5380859375,0.56640625,0.5517578125,0.5,0.4296875,0.3525390625,0.2744140625,0.2373046875,0.271484375,0.3662109375,0.4765625,0.5595703125,0.62890625,0.681640625,0.6943359375,0.6640625,0.611328125,0.5693359375,0.5595703125,0.5595703125,0.5634765625,0.5693359375,0.5751953125,0.5791015625,0.580078125,0.5791015625,0.568359375,0.5263671875,0.4736328125,0.4443359375,0.458984375,0.5107421875,0.5791015625,0.6474609375,0.6982421875,0.7119140625,0.681640625,0.6298828125,0.5888671875,0.5791015625,0.5888671875,0.626953125,0.6748046875,0.69921875,0.681640625,0.6279296875,0.5595703125,0.4873046875,0.4189453125,0.373046875,0.365234375,0.38671875,0.412109375,0.419921875,0.4208984375,0.421875,0.4208984375,0.4189453125,0.41796875,0.41796875,0.419921875,0.421875,0.423828125,0.42578125,0.42578125,0.423828125,0.421875,0.419921875,0.421875,0.4375,0.46875,0.5087890625,0.5439453125,0.5634765625,0.5693359375,0.5595703125,0.5126953125,0.4462890625,0.3984375,0.39453125,0.4345703125,0.5,0.55859375,0.5771484375,0.5556640625,0.517578125,0.498046875,0.5185546875,0.5791015625,0.64453125,0.677734375,0.6591796875,0.5908203125,0.5048828125,0.4443359375,0.4296875,0.439453125,0.4873046875,0.5537109375,0.6005859375,0.6015625,0.5576171875,0.4892578125,0.41015625,0.3154296875,0.2490234375,0.2490234375,0.3154296875,0.41015625,0.4892578125,0.5498046875,0.5634765625,0.5283203125,0.4716796875,0.43359375,0.4423828125,0.5,0.564453125,0.6044921875,0.6005859375,0.552734375,0.486328125,0.439453125,0.4296875,0.4248046875,0.400390625,0.3779296875,0.3818359375,0.4228515625,0.48828125,0.5595703125,0.6181640625,0.6279296875,0.58984375,0.533203125,0.49609375,0.5087890625,0.5693359375,0.6396484375,0.693359375,0.7080078125,0.6806640625,0.6298828125,0.5888671875,0.5791015625,0.576171875,0.55859375,0.5283203125,0.4912109375,0.4599609375,0.443359375,0.439453125,0.439453125,0.435546875,0.4296875,0.423828125,0.419921875,0.4189453125,0.419921875,0.4326171875,0.4853515625,0.5556640625,0.6083984375,0.6142578125,0.57421875,0.509765625,0.4345703125,0.349609375,0.296875,0.3115234375,0.3896484375,0.48828125,0.5693359375,0.6494140625,0.7431640625,0.8095703125,0.8095703125,0.7431640625,0.6494140625,0.5693359375,0.5078125,0.4892578125,0.5146484375,0.55859375,0.5859375,0.5693359375,0.509765625,0.451171875,0.4404296875,0.4794921875,0.5390625,0.578125,0.568359375,0.509765625,0.44921875,0.427734375,0.447265625,0.482421875,0.501953125,0.48046875,0.419921875,0.3642578125,0.37109375,0.44140625,0.5380859375,0.6083984375,0.6142578125,0.5595703125,0.48828125,0.4228515625,0.3828125,0.380859375,0.40625,0.4326171875,0.439453125,0.4296875,0.38671875,0.3310546875,0.2978515625,0.30859375,0.3603515625,0.4296875,0.5029296875,0.5732421875,0.6201171875,0.62890625,0.609375,0.5859375,0.5791015625,0.5751953125,0.556640625,0.5205078125,0.478515625,0.4423828125,0.423828125,0.419921875,0.4296875,0.47265625,0.529296875,0.564453125,0.556640625,0.5078125,0.439453125,0.3818359375,0.376953125,0.42578125,0.498046875,0.548828125,0.544921875,0.4892578125,0.421875,0.365234375,0.3408203125,0.3544921875,0.3916015625,0.4228515625,0.4296875,0.427734375,0.42578125,0.423828125,0.423828125,0.42578125,0.427734375,0.4296875,0.44140625,0.4853515625,0.5419921875,0.57421875,0.5615234375,0.509765625,0.439453125,0.3603515625,0.2685546875,0.2041015625,0.205078125,0.271484375,0.36328125,0.439453125,0.515625,0.6025390625,0.662109375,0.65625,0.5888671875,0.49609375,0.419921875,0.3662109375,0.3759765625,0.44921875,0.5498046875,0.623046875,0.6328125,0.5791015625,0.521484375,0.5087890625,0.54296875,0.595703125,0.6298828125,0.6171875,0.5595703125,0.490234375,0.42578125,0.3857421875,0.3837890625,0.408203125,0.4326171875,0.439453125,0.4521484375,0.5087890625,0.5888671875,0.650390625,0.6640625,0.6259765625,0.5595703125,0.5,0.490234375,0.5322265625,0.595703125,0.638671875,0.62890625,0.5693359375,0.48828125,0.3876953125,0.3076171875,0.291015625,0.341796875,0.4248046875,0.5,0.5546875,0.5576171875,0.5068359375,0.4326171875,0.380859375,0.3837890625,0.439453125,0.505859375,0.5546875,0.56640625,0.537109375,0.486328125,0.447265625,0.439453125,0.4345703125,0.412109375,0.390625,0.39453125,0.435546875,0.5,0.5693359375,0.6416015625,0.71484375,0.7470703125,0.7099609375,0.615234375,0.5087890625,0.4296875,0.36328125,0.314453125,0.302734375,0.3330078125,0.3837890625,0.421875,0.4296875,0.419921875,0.384765625,0.345703125,0.3330078125,0.3603515625,0.419921875,0.4892578125,0.5478515625,0.560546875,0.5244140625,0.4697265625,0.4345703125,0.44921875,0.509765625,0.5703125,0.5869140625,0.55859375,0.5107421875,0.4814453125,0.498046875,0.5595703125,0.6259765625,0.6630859375,0.6484375,0.5859375,0.505859375,0.451171875,0.439453125,0.44140625,0.4423828125,0.4423828125,0.4423828125,0.4404296875,0.4404296875,0.439453125,0.451171875,0.5,0.568359375,0.6162109375,0.619140625,0.576171875,0.509765625,0.453125,0.451171875,0.505859375,0.5830078125,0.6376953125,0.6357421875,0.5791015625,0.5107421875,0.4599609375,0.4453125,0.4736328125,0.5234375,0.5615234375,0.5693359375,0.568359375,0.568359375,0.5693359375,0.5732421875,0.576171875,0.5791015625,0.5791015625,0.568359375,0.5185546875,0.44921875,0.3994140625,0.39453125,0.4345703125,0.5,0.5771484375,0.6748046875,0.7529296875,0.76953125,0.7197265625,0.6357421875,0.5595703125,0.5,0.4833984375,0.509765625,0.5546875,0.580078125,0.560546875,0.5,0.41796875,0.3154296875,0.232421875,0.2119140625,0.2607421875,0.34375,0.419921875,0.4794921875,0.4970703125,0.47265625,0.4306640625,0.408203125,0.427734375,0.4892578125,0.55078125,0.5712890625,0.548828125,0.509765625,0.4873046875,0.5078125,0.5693359375,0.6474609375,0.7314453125,0.7802734375,0.759765625,0.6748046875,0.5712890625,0.4892578125,0.41015625,0.3193359375,0.2587890625,0.2646484375,0.3359375,0.4306640625,0.509765625,0.5654296875,0.5654296875,0.5078125,0.4267578125,0.369140625,0.37109375,0.4296875,0.5107421875,0.6142578125,0.697265625,0.7177734375,0.6689453125,0.5859375,0.509765625,0.431640625,0.33984375,0.2744140625,0.2744140625,0.33984375,0.431640625,0.509765625,0.568359375,0.578125,0.5390625,0.71484375,0.6279296875,0.5263671875,0.453125,0.4287109375,0.427734375,0.455078125,0.4951171875,0.5166015625,0.4990234375,0.447265625,0.376953125,0.3017578125,0.2314453125,0.2080078125,0.2587890625,0.3681640625,0.4853515625,0.5703125,0.6396484375,0.6923828125,0.705078125,0.6748046875,0.6220703125,0.580078125,0.5703125,0.57421875,0.5927734375,0.623046875,0.6552734375,0.67578125,0.6806640625,0.673828125,0.654296875,0.611328125,0.5634765625,0.5419921875,0.5615234375,0.6123046875,0.673828125,0.7333984375,0.7783203125,0.7890625,0.763671875,0.7177734375,0.681640625,0.673828125,0.6796875,0.7021484375,0.7255859375,0.7236328125,0.689453125,0.6318359375,0.5703125,0.5029296875,0.4228515625,0.3486328125,0.3056640625,0.298828125,0.3125,0.3251953125,0.333984375,0.3359375,0.330078125,0.3212890625,0.3154296875,0.3173828125,0.3251953125,0.3369140625,0.3505859375,0.3603515625,0.3603515625,0.3505859375,0.3369140625,0.3251953125,0.3212890625,0.34375,0.3994140625,0.4775390625,0.5537109375,0.603515625,0.6220703125,0.6220703125,0.5849609375,0.521484375,0.4638671875,0.4375,0.4541015625,0.5,0.544921875,0.5673828125,0.5703125,0.568359375,0.580078125,0.6171875,0.673828125,0.7275390625,0.7421875,0.6953125,0.595703125,0.482421875,0.4033203125,0.376953125,0.37890625,0.421875,0.4892578125,0.5419921875,0.552734375,0.5146484375,0.4482421875,0.3681640625,0.2744140625,0.20703125,0.20703125,0.2744140625,0.3681640625,0.4482421875,0.51171875,0.541015625,0.52734375,0.4892578125,0.45703125,0.458984375,0.5,0.544921875,0.5615234375,0.53515625,0.4775390625,0.4140625,0.376953125,0.376953125,0.3837890625,0.37890625,0.3779296875,0.3984375,0.4453125,0.5068359375,0.5703125,0.62109375,0.6298828125,0.599609375,0.5576171875,0.5361328125,0.5595703125,0.6220703125,0.6923828125,0.7509765625,0.7763671875,0.759765625,0.7177734375,0.6826171875,0.673828125,0.66796875,0.6376953125,0.5830078125,0.5185546875,0.46484375,0.4345703125,0.4287109375,0.4248046875,0.40625,0.3759765625,0.34375,0.3232421875,0.318359375,0.3251953125,0.34765625,0.4130859375,0.5029296875,0.580078125,0.61328125,0.5966796875,0.55078125,0.4931640625,0.4228515625,0.3759765625,0.3857421875,0.4521484375,0.54296875,0.6220703125,0.701171875,0.7958984375,0.8623046875,0.8623046875,0.7958984375,0.701171875,0.6220703125,0.55859375,0.533203125,0.5498046875,0.587890625,0.6142578125,0.6025390625,0.55078125,0.5,0.4912109375,0.525390625,0.5771484375,0.611328125,0.6025390625,0.55078125,0.4951171875,0.4580078125,0.4423828125,0.4345703125,0.4189453125,0.3818359375,0.3251953125,0.2802734375,0.30078125,0.3896484375,0.505859375,0.5947265625,0.615234375,0.5703125,0.5068359375,0.4453125,0.40234375,0.390625,0.4052734375,0.423828125,0.4287109375,0.41796875,0.3701171875,0.3046875,0.2607421875,0.2626953125,0.30859375,0.376953125,0.4541015625,0.5419921875,0.6220703125,0.669921875,0.6826171875,0.6767578125,0.673828125,0.6650390625,0.623046875,0.5458984375,0.453125,0.3759765625,0.333984375,0.3251953125,0.3369140625,0.384765625,0.453125,0.5068359375,0.5185546875,0.486328125,0.4287109375,0.376953125,0.3642578125,0.39453125,0.447265625,0.4873046875,0.48828125,0.4482421875,0.3984375,0.3583984375,0.3408203125,0.3486328125,0.3681640625,0.3818359375,0.376953125,0.3662109375,0.3525390625,0.3427734375,0.3427734375,0.3525390625,0.3662109375,0.376953125,0.3984375,0.4541015625,0.521484375,0.560546875,0.55078125,0.4990234375,0.4287109375,0.3525390625,0.2705078125,0.21875,0.2275390625,0.2900390625,0.369140625,0.4287109375,0.4833984375,0.537109375,0.5615234375,0.5341796875,0.4638671875,0.384765625,0.3251953125,0.291015625,0.326171875,0.431640625,0.5673828125,0.6728515625,0.7080078125,0.673828125,0.62890625,0.6083984375,0.6142578125,0.6298828125,0.634765625,0.615234375,0.5703125,0.517578125,0.462890625,0.421875,0.40625,0.4130859375,0.4248046875,0.4287109375,0.4423828125,0.5009765625,0.5859375,0.6533203125,0.671875,0.63671875,0.5703125,0.51171875,0.5068359375,0.55859375,0.6328125,0.6845703125,0.6806640625,0.6220703125,0.5419921875,0.4453125,0.3662109375,0.3427734375,0.37890625,0.4423828125,0.5,0.5400390625,0.5390625,0.4951171875,0.43359375,0.388671875,0.3876953125,0.4287109375,0.4775390625,0.5087890625,0.509765625,0.484375,0.4482421875,0.42578125,0.4287109375,0.4365234375,0.4375,0.4443359375,0.4697265625,0.5146484375,0.5693359375,0.6220703125,0.6728515625,0.7099609375,0.703125,0.6376953125,0.5361328125,0.439453125,0.376953125,0.3291015625,0.2978515625,0.2958984375,0.322265625,0.3583984375,0.3798828125,0.376953125,0.3603515625,0.3251953125,0.2939453125,0.291015625,0.3251953125,0.384765625,0.4482421875,0.5,0.515625,0.4970703125,0.4677734375,0.4580078125,0.4873046875,0.55078125,0.611328125,0.6240234375,0.5888671875,0.533203125,0.4970703125,0.509765625,0.5703125,0.634765625,0.6640625,0.638671875,0.56640625,0.4833984375,0.4326171875,0.4287109375,0.439453125,0.4462890625,0.4482421875,0.4443359375,0.4365234375,0.4306640625,0.4287109375,0.4404296875,0.4912109375,0.5634765625,0.6220703125,0.6376953125,0.6083984375,0.55078125,0.5029296875,0.5087890625,0.5703125,0.654296875,0.7158203125,0.7216796875,0.673828125,0.6142578125,0.5693359375,0.5537109375,0.5703125,0.6025390625,0.6240234375,0.6220703125,0.61328125,0.611328125,0.62109375,0.638671875,0.658203125,0.6708984375,0.673828125,0.662109375,0.611328125,0.53515625,0.466796875,0.4375,0.4541015625,0.5,0.5595703125,0.640625,0.7119140625,0.734375,0.701171875,0.634765625,0.5703125,0.5185546875,0.5068359375,0.533203125,0.5712890625,0.587890625,0.5625,0.5,0.4169921875,0.3076171875,0.2099609375,0.1689453125,0.1943359375,0.259765625,0.3251953125,0.3779296875,0.396484375,0.380859375,0.357421875,0.3525390625,0.3837890625,0.4482421875,0.51171875,0.5439453125,0.5419921875,0.52734375,0.5263671875,0.5576171875,0.6220703125,0.697265625,0.7705078125,0.7978515625,0.751953125,0.646484375,0.53125,0.4482421875,0.3720703125,0.296875,0.2607421875,0.2919921875,0.3798828125,0.4794921875,0.55078125,0.5966796875,0.5791015625,0.498046875,0.3955078125,0.32421875,0.3203125,0.376953125,0.4599609375,0.5693359375,0.6669921875,0.7080078125,0.6826171875,0.6171875,0.55078125,0.4833984375,0.40234375,0.345703125,0.345703125,0.40234375,0.4833984375,0.55078125,0.6025390625,0.611328125,0.5771484375,0.7646484375,0.685546875,0.5859375,0.5078125,0.46875,0.451171875,0.4609375,0.4853515625,0.5,0.482421875,0.4326171875,0.3642578125,0.2880859375,0.2138671875,0.1845703125,0.228515625,0.33203125,0.4462890625,0.5302734375,0.599609375,0.65234375,0.6650390625,0.634765625,0.5810546875,0.5400390625,0.5302734375,0.5380859375,0.5791015625,0.6455078125,0.712890625,0.7548828125,0.7607421875,0.740234375,0.7080078125,0.662109375,0.6240234375,0.6162109375,0.6435546875,0.6923828125,0.740234375,0.7841796875,0.8173828125,0.826171875,0.806640625,0.7724609375,0.74609375,0.740234375,0.7412109375,0.7421875,0.7294921875,0.6923828125,0.6376953125,0.5791015625,0.5302734375,0.4755859375,0.39453125,0.3056640625,0.2421875,0.220703125,0.2333984375,0.2587890625,0.28125,0.28515625,0.2705078125,0.248046875,0.2333984375,0.2373046875,0.2587890625,0.2880859375,0.3232421875,0.34765625,0.34765625,0.3232421875,0.2880859375,0.2587890625,0.23828125,0.2490234375,0.30859375,0.408203125,0.5166015625,0.5966796875,0.634765625,0.6552734375,0.646484375,0.607421875,0.5517578125,0.505859375,0.48828125,0.5,0.517578125,0.5341796875,0.5576171875,0.59375,0.6416015625,0.693359375,0.740234375,0.779296875,0.7822265625,0.7255859375,0.619140625,0.49609375,0.404296875,0.3642578125,0.3486328125,0.375,0.4306640625,0.48046875,0.4931640625,0.4599609375,0.39453125,0.314453125,0.220703125,0.154296875,0.154296875,0.220703125,0.314453125,0.39453125,0.4638671875,0.5185546875,0.541015625,0.5302734375,0.50390625,0.48828125,0.5,0.5107421875,0.4931640625,0.447265625,0.3916015625,0.3525390625,0.34375,0.3642578125,0.3876953125,0.400390625,0.408203125,0.421875,0.447265625,0.4853515625,0.5302734375,0.56640625,0.5703125,0.548828125,0.52734375,0.5302734375,0.5693359375,0.634765625,0.70703125,0.7724609375,0.8095703125,0.806640625,0.7763671875,0.748046875,0.740234375,0.7333984375,0.701171875,0.640625,0.568359375,0.5087890625,0.4755859375,0.46875,0.4609375,0.419921875,0.353515625,0.2861328125,0.244140625,0.23828125,0.2587890625,0.294921875,0.3671875,0.4638671875,0.5517578125,0.60546875,0.619140625,0.6044921875,0.5771484375,0.525390625,0.474609375,0.4609375,0.4951171875,0.5615234375,0.634765625,0.71484375,0.80859375,0.8759765625,0.8759765625,0.80859375,0.71484375,0.634765625,0.5703125,0.541015625,0.5546875,0.5966796875,0.634765625,0.6396484375,0.6044921875,0.56640625,0.5595703125,0.5849609375,0.6240234375,0.6494140625,0.642578125,0.6044921875,0.55859375,0.509765625,0.4580078125,0.4052734375,0.353515625,0.3046875,0.2587890625,0.2275390625,0.25390625,0.33984375,0.44921875,0.53515625,0.5615234375,0.5302734375,0.484375,0.443359375,0.421875,0.4248046875,0.4453125,0.4638671875,0.46875,0.45703125,0.40234375,0.3251953125,0.267578125,0.2568359375,0.296875,0.3642578125,0.4423828125,0.541015625,0.6376953125,0.70703125,0.7373046875,0.7412109375,0.740234375,0.728515625,0.6708984375,0.5634765625,0.435546875,0.328125,0.2705078125,0.2587890625,0.2705078125,0.322265625,0.40234375,0.4775390625,0.515625,0.5087890625,0.46875,0.42578125,0.39453125,0.3837890625,0.3916015625,0.4052734375,0.408203125,0.39453125,0.37890625,0.376953125,0.3857421875,0.3974609375,0.3994140625,0.3876953125,0.3642578125,0.3349609375,0.2998046875,0.275390625,0.275390625,0.2998046875,0.3349609375,0.3642578125,0.40234375,0.4755859375,0.5576171875,0.6044921875,0.5947265625,0.5400390625,0.46875,0.396484375,0.3330078125,0.3056640625,0.328125,0.384765625,0.4404296875,0.46875,0.4853515625,0.484375,0.455078125,0.3994140625,0.3349609375,0.28515625,0.2587890625,0.25390625,0.3095703125,0.427734375,0.5712890625,0.689453125,0.7451171875,0.740234375,0.7197265625,0.69140625,0.654296875,0.615234375,0.5791015625,0.55078125,0.5302734375,0.509765625,0.4892578125,0.4716796875,0.4638671875,0.4638671875,0.4677734375,0.46875,0.48046875,0.529296875,0.5966796875,0.642578125,0.6435546875,0.5986328125,0.5302734375,0.47265625,0.474609375,0.5380859375,0.626953125,0.6904296875,0.6923828125,0.634765625,0.5595703125,0.4794921875,0.421875,0.408203125,0.435546875,0.474609375,0.5,0.5146484375,0.513671875,0.49609375,0.47265625,0.455078125,0.4541015625,0.46875,0.484375,0.482421875,0.4658203125,0.447265625,0.4375,0.4462890625,0.46875,0.49609375,0.5244140625,0.5517578125,0.5771484375,0.59765625,0.6162109375,0.634765625,0.6494140625,0.6416015625,0.5986328125,0.52734375,0.44921875,0.3916015625,0.3642578125,0.349609375,0.3505859375,0.3671875,0.3857421875,0.3955078125,0.38671875,0.3642578125,0.3330078125,0.291015625,0.2587890625,0.2587890625,0.2939453125,0.345703125,0.39453125,0.43359375,0.4501953125,0.4521484375,0.4580078125,0.484375,0.5361328125,0.6044921875,0.6630859375,0.6640625,0.607421875,0.52734375,0.4697265625,0.4716796875,0.5302734375,0.5947265625,0.6240234375,0.6044921875,0.546875,0.484375,0.455078125,0.46875,0.4951171875,0.513671875,0.5185546875,0.5078125,0.48828125,0.47265625,0.46875,0.478515625,0.521484375,0.5849609375,0.640625,0.662109375,0.6455078125,0.6044921875,0.5703125,0.580078125,0.6357421875,0.708984375,0.7646484375,0.7744140625,0.740234375,0.697265625,0.6669921875,0.654296875,0.6572265625,0.662109375,0.6572265625,0.634765625,0.611328125,0.60546875,0.6240234375,0.6630859375,0.7060546875,0.734375,0.740234375,0.7314453125,0.69140625,0.6240234375,0.5517578125,0.501953125,0.486328125,0.5,0.525390625,0.5693359375,0.61328125,0.6318359375,0.6162109375,0.576171875,0.5302734375,0.4951171875,0.5,0.5380859375,0.580078125,0.59375,0.5634765625,0.5,0.41796875,0.3095703125,0.208984375,0.15625,0.1650390625,0.2109375,0.2587890625,0.2958984375,0.3037109375,0.2890625,0.275390625,0.28515625,0.328125,0.39453125,0.4599609375,0.5,0.513671875,0.5166015625,0.529296875,0.5693359375,0.634765625,0.708984375,0.7744140625,0.787109375,0.7236328125,0.603515625,0.4794921875,0.39453125,0.3232421875,0.26953125,0.26953125,0.3369140625,0.4453125,0.5458984375,0.6044921875,0.6328125,0.595703125,0.4970703125,0.3837890625,0.3095703125,0.306640625,0.3642578125,0.4453125,0.5537109375,0.654296875,0.70703125,0.6982421875,0.6533203125,0.6044921875,0.5546875,0.4951171875,0.4521484375,0.4521484375,0.4951171875,0.5546875,0.6044921875,0.642578125,0.6494140625,0.6240234375,0.779296875,0.7314453125,0.65625,0.58203125,0.5302734375,0.4921875,0.484375,0.5,0.513671875,0.50390625,0.4609375,0.39453125,0.31640625,0.2314453125,0.181640625,0.201171875,0.2841796875,0.3876953125,0.46875,0.5390625,0.591796875,0.6044921875,0.57421875,0.5205078125,0.4794921875,0.46875,0.4814453125,0.541015625,0.6357421875,0.7255859375,0.7783203125,0.7783203125,0.740234375,0.6923828125,0.6435546875,0.6162109375,0.6240234375,0.662109375,0.7080078125,0.740234375,0.765625,0.78515625,0.7900390625,0.7783203125,0.7587890625,0.744140625,0.740234375,0.7373046875,0.7197265625,0.6787109375,0.619140625,0.5537109375,0.5009765625,0.46875,0.4326171875,0.361328125,0.275390625,0.2119140625,0.193359375,0.2158203125,0.2587890625,0.296875,0.3037109375,0.2783203125,0.240234375,0.21484375,0.220703125,0.2587890625,0.3095703125,0.369140625,0.4111328125,0.4111328125,0.369140625,0.3095703125,0.2587890625,0.216796875,0.19921875,0.234375,0.3251953125,0.4443359375,0.5458984375,0.6044921875,0.6484375,0.6806640625,0.6796875,0.640625,0.580078125,0.5263671875,0.5,0.4833984375,0.4833984375,0.513671875,0.57421875,0.646484375,0.7060546875,0.740234375,0.763671875,0.767578125,0.7294921875,0.6455078125,0.541015625,0.4501953125,0.39453125,0.359375,0.3642578125,0.40234375,0.4443359375,0.4580078125,0.4287109375,0.3642578125,0.2841796875,0.1904296875,0.123046875,0.123046875,0.1904296875,0.2841796875,0.3642578125,0.439453125,0.51953125,0.5771484375,0.5908203125,0.5634765625,0.5244140625,0.5,0.47265625,0.4189453125,0.3583984375,0.3193359375,0.318359375,0.3505859375,0.39453125,0.4365234375,0.4638671875,0.46875,0.4580078125,0.4462890625,0.4482421875,0.46875,0.48828125,0.482421875,0.4638671875,0.4580078125,0.4814453125,0.53515625,0.6044921875,0.677734375,0.74609375,0.7900390625,0.794921875,0.7724609375,0.7470703125,0.740234375,0.7353515625,0.7099609375,0.6630859375,0.607421875,0.560546875,0.53515625,0.5302734375,0.517578125,0.4580078125,0.36328125,0.2734375,0.220703125,0.220703125,0.2587890625,0.3095703125,0.376953125,0.455078125,0.52734375,0.5810546875,0.6142578125,0.634765625,0.642578125,0.611328125,0.5546875,0.5078125,0.5,0.5380859375,0.6044921875,0.6845703125,0.7783203125,0.8447265625,0.8447265625,0.7783203125,0.6845703125,0.6044921875,0.5390625,0.505859375,0.5185546875,0.568359375,0.6240234375,0.650390625,0.634765625,0.61328125,0.609375,0.6240234375,0.646484375,0.6611328125,0.6572265625,0.634765625,0.6044921875,0.5546875,0.4853515625,0.408203125,0.3388671875,0.2900390625,0.2587890625,0.2421875,0.263671875,0.3251953125,0.4033203125,0.46484375,0.486328125,0.46875,0.4453125,0.4326171875,0.44140625,0.46875,0.501953125,0.5244140625,0.5302734375,0.5166015625,0.458984375,0.375,0.30859375,0.2919921875,0.328125,0.39453125,0.47265625,0.56640625,0.6572265625,0.7177734375,0.7421875,0.7421875,0.740234375,0.728515625,0.6708984375,0.5634765625,0.435546875,0.328125,0.2705078125,0.2587890625,0.2685546875,0.3173828125,0.3974609375,0.48046875,0.53515625,0.548828125,0.5302734375,0.498046875,0.447265625,0.3916015625,0.3505859375,0.3369140625,0.345703125,0.3642578125,0.3896484375,0.43359375,0.4775390625,0.4970703125,0.48046875,0.4404296875,0.39453125,0.34375,0.2841796875,0.2421875,0.2421875,0.2841796875,0.34375,0.39453125,0.451171875,0.54296875,0.634765625,0.681640625,0.6650390625,0.6025390625,0.5302734375,0.462890625,0.4208984375,0.421875,0.4609375,0.5107421875,0.5380859375,0.5302734375,0.5029296875,0.4443359375,0.3662109375,0.294921875,0.251953125,0.244140625,0.2587890625,0.2861328125,0.34765625,0.4443359375,0.5546875,0.6513671875,0.712890625,0.740234375,0.75,0.7197265625,0.6484375,0.560546875,0.4892578125,0.4599609375,0.46875,0.4892578125,0.509765625,0.52734375,0.53515625,0.53515625,0.53125,0.5302734375,0.5380859375,0.572265625,0.6123046875,0.626953125,0.6005859375,0.5400390625,0.46875,0.412109375,0.41796875,0.48828125,0.5849609375,0.6552734375,0.6611328125,0.6044921875,0.53515625,0.48046875,0.4580078125,0.46875,0.4951171875,0.5107421875,0.5,0.484375,0.4853515625,0.5029296875,0.5263671875,0.5439453125,0.544921875,0.5302734375,0.5048828125,0.46484375,0.427734375,0.416015625,0.439453125,0.4833984375,0.5302734375,0.578125,0.6318359375,0.6708984375,0.6796875,0.6591796875,0.6279296875,0.6044921875,0.5791015625,0.5283203125,0.4638671875,0.408203125,0.37890625,0.3779296875,0.39453125,0.4189453125,0.458984375,0.4970703125,0.5078125,0.4853515625,0.44140625,0.39453125,0.345703125,0.2939453125,0.2587890625,0.2587890625,0.291015625,0.3330078125,0.3642578125,0.3857421875,0.396484375,0.408203125,0.4384765625,0.4921875,0.5625,0.634765625,0.6904296875,0.681640625,0.6044921875,0.5,0.4228515625,0.4130859375,0.46875,0.5341796875,0.5673828125,0.560546875,0.52734375,0.4951171875,0.494140625,0.5302734375,0.57421875,0.607421875,0.615234375,0.5966796875,0.5625,0.5361328125,0.5302734375,0.5361328125,0.564453125,0.607421875,0.646484375,0.6650390625,0.658203125,0.634765625,0.615234375,0.6240234375,0.662109375,0.712890625,0.7509765625,0.759765625,0.740234375,0.7177734375,0.7080078125,0.70703125,0.701171875,0.6826171875,0.6484375,0.6044921875,0.5634765625,0.546875,0.568359375,0.6240234375,0.6875,0.73046875,0.740234375,0.7373046875,0.71875,0.6796875,0.6240234375,0.56640625,0.5234375,0.5,0.484375,0.4814453125,0.4912109375,0.501953125,0.5048828125,0.4931640625,0.46875,0.4541015625,0.48046875,0.53515625,0.5849609375,0.5986328125,0.564453125,0.5,0.4208984375,0.3232421875,0.2373046875,0.1923828125,0.197265625,0.228515625,0.2587890625,0.27734375,0.267578125,0.2421875,0.228515625,0.24609375,0.2958984375,0.3642578125,0.4296875,0.4697265625,0.482421875,0.4853515625,0.4990234375,0.5390625,0.6044921875,0.6787109375,0.744140625,0.7568359375,0.693359375,0.572265625,0.44921875,0.3642578125,0.296875,0.26171875,0.2900390625,0.3798828125,0.4990234375,0.5927734375,0.634765625,0.6455078125,0.59375,0.4912109375,0.3857421875,0.326171875,0.333984375,0.39453125,0.4736328125,0.5703125,0.6572265625,0.701171875,0.697265625,0.6650390625,0.634765625,0.60546875,0.5712890625,0.546875,0.546875,0.5712890625,0.60546875,0.634765625,0.6572265625,0.6611328125,0.646484375,0.7451171875,0.7392578125,0.697265625,0.6337890625,0.5703125,0.517578125,0.4990234375,0.5146484375,0.5380859375,0.5439453125,0.51171875,0.4482421875,0.3671875,0.271484375,0.2001953125,0.1953125,0.2578125,0.349609375,0.4287109375,0.4990234375,0.55078125,0.564453125,0.5341796875,0.48046875,0.439453125,0.4287109375,0.443359375,0.5087890625,0.6083984375,0.69921875,0.7421875,0.7275390625,0.673828125,0.6123046875,0.5615234375,0.5419921875,0.5634765625,0.611328125,0.654296875,0.673828125,0.68359375,0.69140625,0.693359375,0.6884765625,0.6806640625,0.6748046875,0.673828125,0.6689453125,0.6455078125,0.5986328125,0.5380859375,0.482421875,0.4443359375,0.4287109375,0.408203125,0.3525390625,0.28125,0.232421875,0.228515625,0.2666015625,0.3251953125,0.376953125,0.3857421875,0.3515625,0.2998046875,0.265625,0.2744140625,0.3251953125,0.3935546875,0.474609375,0.53125,0.53125,0.474609375,0.3935546875,0.3251953125,0.2626953125,0.2099609375,0.203125,0.2626953125,0.3701171875,0.4775390625,0.55078125,0.6171875,0.6845703125,0.72265625,0.705078125,0.6376953125,0.55859375,0.5,0.4521484375,0.4306640625,0.4521484375,0.5146484375,0.59375,0.65234375,0.673828125,0.6865234375,0.7021484375,0.7001953125,0.662109375,0.5927734375,0.5146484375,0.4482421875,0.396484375,0.384765625,0.4111328125,0.44921875,0.4658203125,0.4404296875,0.376953125,0.2978515625,0.203125,0.13671875,0.13671875,0.203125,0.2978515625,0.376953125,0.45703125,0.5537109375,0.6328125,0.65625,0.6201171875,0.556640625,0.5,0.4404296875,0.361328125,0.2939453125,0.2763671875,0.314453125,0.3818359375,0.4482421875,0.505859375,0.5419921875,0.5419921875,0.505859375,0.4580078125,0.427734375,0.4287109375,0.431640625,0.4130859375,0.388671875,0.3857421875,0.4189453125,0.48046875,0.55078125,0.6240234375,0.69140625,0.7314453125,0.7333984375,0.70703125,0.6806640625,0.673828125,0.6708984375,0.658203125,0.6357421875,0.6083984375,0.5849609375,0.572265625,0.5703125,0.5556640625,0.490234375,0.390625,0.2998046875,0.2568359375,0.271484375,0.3251953125,0.384765625,0.4365234375,0.4755859375,0.5068359375,0.5361328125,0.57421875,0.6220703125,0.6591796875,0.646484375,0.5869140625,0.5166015625,0.4755859375,0.490234375,0.55078125,0.630859375,0.724609375,0.7919921875,0.7919921875,0.724609375,0.630859375,0.55078125,0.484375,0.4462890625,0.45703125,0.509765625,0.5771484375,0.6201171875,0.6220703125,0.61328125,0.611328125,0.6171875,0.6259765625,0.6318359375,0.6298828125,0.6220703125,0.6064453125,0.568359375,0.5087890625,0.4384765625,0.37890625,0.3408203125,0.3251953125,0.3193359375,0.330078125,0.359375,0.3955078125,0.423828125,0.435546875,0.4287109375,0.421875,0.431640625,0.4609375,0.5029296875,0.5419921875,0.5654296875,0.5703125,0.5576171875,0.5009765625,0.419921875,0.357421875,0.34375,0.380859375,0.4482421875,0.5224609375,0.6025390625,0.666015625,0.6953125,0.6923828125,0.677734375,0.673828125,0.6650390625,0.623046875,0.5458984375,0.453125,0.3759765625,0.333984375,0.3251953125,0.3330078125,0.3681640625,0.4306640625,0.5,0.552734375,0.57421875,0.5703125,0.548828125,0.4873046875,0.4052734375,0.3369140625,0.310546875,0.3310546875,0.376953125,0.4375,0.5185546875,0.58984375,0.6123046875,0.5791015625,0.5126953125,0.4482421875,0.3798828125,0.298828125,0.2421875,0.2421875,0.298828125,0.3798828125,0.4482421875,0.5205078125,0.6220703125,0.7138671875,0.75,0.71875,0.6455078125,0.5703125,0.5078125,0.484375,0.5087890625,0.5615234375,0.60546875,0.609375,0.5703125,0.5078125,0.4111328125,0.3095703125,0.244140625,0.2373046875,0.2744140625,0.3251953125,0.3759765625,0.42578125,0.4755859375,0.5234375,0.5732421875,0.623046875,0.673828125,0.7099609375,0.6884765625,0.60546875,0.4970703125,0.4140625,0.392578125,0.4287109375,0.4814453125,0.5361328125,0.5771484375,0.5927734375,0.5859375,0.57421875,0.5703125,0.5771484375,0.6015625,0.623046875,0.6162109375,0.5712890625,0.501953125,0.4287109375,0.3720703125,0.3759765625,0.443359375,0.5361328125,0.6044921875,0.6083984375,0.55078125,0.4873046875,0.4580078125,0.4716796875,0.509765625,0.5419921875,0.5400390625,0.5,0.458984375,0.4599609375,0.50390625,0.5654296875,0.6103515625,0.611328125,0.5703125,0.51171875,0.439453125,0.3837890625,0.3798828125,0.4287109375,0.5029296875,0.5703125,0.63671875,0.708984375,0.75390625,0.744140625,0.6845703125,0.609375,0.55078125,0.4921875,0.4130859375,0.341796875,0.314453125,0.3388671875,0.3935546875,0.4482421875,0.505859375,0.5791015625,0.6337890625,0.638671875,0.5888671875,0.5146484375,0.4482421875,0.384765625,0.3251953125,0.291015625,0.2939453125,0.3251953125,0.3603515625,0.376953125,0.3828125,0.37890625,0.3818359375,0.4111328125,0.4716796875,0.5478515625,0.6220703125,0.6767578125,0.6640625,0.5810546875,0.4697265625,0.38671875,0.3740234375,0.4287109375,0.4931640625,0.52734375,0.5263671875,0.5078125,0.4970703125,0.5166015625,0.5703125,0.6298828125,0.6748046875,0.685546875,0.66015625,0.6142578125,0.578125,0.5703125,0.572265625,0.5849609375,0.6044921875,0.6220703125,0.6318359375,0.630859375,0.6220703125,0.6142578125,0.619140625,0.63671875,0.6591796875,0.67578125,0.6806640625,0.673828125,0.6689453125,0.6826171875,0.6982421875,0.697265625,0.666015625,0.6123046875,0.55078125,0.494140625,0.46484375,0.48046875,0.5380859375,0.611328125,0.662109375,0.673828125,0.6767578125,0.6845703125,0.6845703125,0.66015625,0.611328125,0.552734375,0.5,0.4501953125,0.41015625,0.392578125,0.3994140625,0.419921875,0.43359375,0.4287109375,0.4306640625,0.4736328125,0.5400390625,0.59375,0.6044921875,0.56640625,0.5,0.423828125,0.3447265625,0.28515625,0.2646484375,0.28125,0.3095703125,0.3251953125,0.3271484375,0.298828125,0.2587890625,0.23828125,0.2548828125,0.3076171875,0.376953125,0.44140625,0.47265625,0.4716796875,0.45703125,0.455078125,0.4873046875,0.55078125,0.626953125,0.7001953125,0.7275390625,0.681640625,0.576171875,0.4609375,0.376953125,0.3115234375,0.283203125,0.31640625,0.4072265625,0.5166015625,0.595703125,0.6220703125,0.6181640625,0.5625,0.47265625,0.3916015625,0.3583984375,0.3837890625,0.4482421875,0.5234375,0.6025390625,0.662109375,0.6826171875,0.666015625,0.6376953125,0.6220703125,0.6103515625,0.5966796875,0.5869140625,0.5869140625,0.5966796875,0.6103515625,0.6220703125,0.6298828125,0.6318359375,0.6259765625,0.677734375,0.701171875,0.6826171875,0.6279296875,0.5595703125,0.4990234375,0.4814453125,0.5068359375,0.5478515625,0.5712890625,0.55078125,0.4892578125,0.408203125,0.30859375,0.23046875,0.2177734375,0.2734375,0.361328125,0.439453125,0.509765625,0.5615234375,0.5751953125,0.544921875,0.4912109375,0.44921875,0.439453125,0.453125,0.5107421875,0.59375,0.66015625,0.6787109375,0.64453125,0.5791015625,0.5107421875,0.458984375,0.4443359375,0.4736328125,0.5263671875,0.568359375,0.5791015625,0.5810546875,0.58203125,0.58203125,0.58203125,0.580078125,0.5791015625,0.5791015625,0.576171875,0.560546875,0.5302734375,0.494140625,0.462890625,0.4443359375,0.439453125,0.427734375,0.3837890625,0.326171875,0.2919921875,0.3017578125,0.3515625,0.419921875,0.478515625,0.48828125,0.44921875,0.3896484375,0.3505859375,0.361328125,0.419921875,0.498046875,0.58984375,0.654296875,0.654296875,0.58984375,0.498046875,0.419921875,0.34375,0.2626953125,0.2177734375,0.2412109375,0.3271484375,0.4296875,0.509765625,0.5869140625,0.6767578125,0.73828125,0.7353515625,0.66796875,0.576171875,0.5,0.4345703125,0.3935546875,0.3974609375,0.4462890625,0.515625,0.56640625,0.5791015625,0.5888671875,0.619140625,0.65234375,0.6572265625,0.623046875,0.5595703125,0.4892578125,0.4296875,0.4130859375,0.4404296875,0.484375,0.509765625,0.4912109375,0.4296875,0.349609375,0.255859375,0.189453125,0.189453125,0.255859375,0.349609375,0.4296875,0.5107421875,0.611328125,0.69140625,0.7080078125,0.6572265625,0.57421875,0.5,0.4228515625,0.3310546875,0.263671875,0.2607421875,0.322265625,0.412109375,0.4892578125,0.556640625,0.6005859375,0.6005859375,0.5576171875,0.494140625,0.44921875,0.439453125,0.4326171875,0.4013671875,0.36328125,0.3505859375,0.3779296875,0.4384765625,0.509765625,0.5810546875,0.6416015625,0.6708984375,0.6591796875,0.62109375,0.587890625,0.5791015625,0.5791015625,0.576171875,0.572265625,0.56640625,0.5625,0.5595703125,0.5595703125,0.5458984375,0.48828125,0.4052734375,0.3388671875,0.3203125,0.3544921875,0.419921875,0.4814453125,0.51171875,0.5068359375,0.4873046875,0.4814453125,0.5087890625,0.5693359375,0.6240234375,0.625,0.5712890625,0.49609375,0.4453125,0.4501953125,0.509765625,0.5888671875,0.68359375,0.75,0.75,0.68359375,0.5888671875,0.509765625,0.44140625,0.3974609375,0.3984375,0.4453125,0.51171875,0.5595703125,0.5693359375,0.568359375,0.5673828125,0.568359375,0.5703125,0.5712890625,0.5703125,0.5693359375,0.564453125,0.5458984375,0.513671875,0.4755859375,0.443359375,0.4248046875,0.419921875,0.4189453125,0.4208984375,0.4267578125,0.4326171875,0.4384765625,0.4404296875,0.439453125,0.4404296875,0.4541015625,0.48046875,0.5126953125,0.541015625,0.556640625,0.5595703125,0.5478515625,0.4970703125,0.4287109375,0.3798828125,0.3779296875,0.421875,0.4892578125,0.5615234375,0.625,0.658203125,0.6513671875,0.6181640625,0.5869140625,0.5791015625,0.5751953125,0.556640625,0.5205078125,0.478515625,0.4423828125,0.423828125,0.419921875,0.4228515625,0.44140625,0.4736328125,0.5107421875,0.5419921875,0.5576171875,0.5595703125,0.544921875,0.48828125,0.408203125,0.345703125,0.3310546875,0.3662109375,0.4296875,0.5078125,0.60546875,0.68359375,0.7001953125,0.6494140625,0.5654296875,0.4892578125,0.412109375,0.3193359375,0.2548828125,0.2548828125,0.3193359375,0.412109375,0.4892578125,0.5693359375,0.6708984375,0.7529296875,0.771484375,0.7216796875,0.63671875,0.5595703125,0.4990234375,0.486328125,0.5244140625,0.5830078125,0.6240234375,0.6162109375,0.5595703125,0.48046875,0.373046875,0.2783203125,0.2421875,0.2744140625,0.3466796875,0.419921875,0.48046875,0.509765625,0.5078125,0.4912109375,0.4892578125,0.5185546875,0.5791015625,0.6328125,0.6259765625,0.556640625,0.4619140625,0.392578125,0.3857421875,0.439453125,0.5087890625,0.5732421875,0.61328125,0.615234375,0.5908203125,0.56640625,0.5595703125,0.56640625,0.59375,0.6201171875,0.619140625,0.5791015625,0.5126953125,0.439453125,0.3818359375,0.37890625,0.4345703125,0.5146484375,0.5703125,0.5673828125,0.509765625,0.44921875,0.435546875,0.470703125,0.52734375,0.5654296875,0.556640625,0.5,0.4443359375,0.44140625,0.4921875,0.56640625,0.6181640625,0.615234375,0.5595703125,0.4833984375,0.392578125,0.3271484375,0.3271484375,0.390625,0.4814453125,0.5595703125,0.6357421875,0.720703125,0.7734375,0.759765625,0.68359375,0.5869140625,0.509765625,0.4326171875,0.3408203125,0.2724609375,0.267578125,0.326171875,0.4140625,0.4892578125,0.5654296875,0.65625,0.7216796875,0.7216796875,0.658203125,0.5673828125,0.4892578125,0.419921875,0.3603515625,0.3330078125,0.345703125,0.384765625,0.419921875,0.4296875,0.4248046875,0.4013671875,0.37890625,0.384765625,0.427734375,0.49609375,0.5693359375,0.6259765625,0.62109375,0.5517578125,0.45703125,0.3876953125,0.3828125,0.439453125,0.5029296875,0.5283203125,0.5166015625,0.48828125,0.474609375,0.498046875,0.5595703125,0.6279296875,0.6787109375,0.69140625,0.662109375,0.609375,0.5693359375,0.5595703125,0.5595703125,0.5615234375,0.5654296875,0.568359375,0.5703125,0.5703125,0.5693359375,0.568359375,0.5693359375,0.572265625,0.576171875,0.5791015625,0.580078125,0.5791015625,0.5859375,0.6171875,0.6533203125,0.6650390625,0.6376953125,0.5791015625,0.509765625,0.443359375,0.400390625,0.4033203125,0.451171875,0.5185546875,0.568359375,0.5791015625,0.5869140625,0.6171875,0.650390625,0.658203125,0.6279296875,0.568359375,0.5,0.431640625,0.3759765625,0.3505859375,0.3642578125,0.40234375,0.43359375,0.439453125,0.44921875,0.4970703125,0.5634765625,0.6103515625,0.6123046875,0.5673828125,0.5,0.427734375,0.3642578125,0.33203125,0.3408203125,0.376953125,0.41015625,0.419921875,0.412109375,0.3720703125,0.3212890625,0.29296875,0.3076171875,0.3603515625,0.4296875,0.4912109375,0.51171875,0.4892578125,0.4501953125,0.427734375,0.4482421875,0.509765625,0.5869140625,0.671875,0.720703125,0.69921875,0.615234375,0.51171875,0.4296875,0.36328125,0.326171875,0.3427734375,0.41015625,0.494140625,0.5546875,0.5693359375,0.55859375,0.5087890625,0.4375,0.3857421875,0.3798828125,0.421875,0.4892578125,0.5615234375,0.6240234375,0.6572265625,0.6484375,0.6123046875,0.5791015625,0.5693359375,0.5673828125,0.5654296875,0.5634765625,0.5634765625,0.5654296875,0.5673828125,0.5693359375,0.5703125,0.5712890625,0.5703125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5302734375,0.5625,0.5537109375,0.505859375,0.439453125,0.384765625,0.3837890625,0.4384765625,0.515625,0.5693359375,0.56640625,0.509765625,0.4326171875,0.34765625,0.294921875,0.3095703125,0.384765625,0.4814453125,0.5595703125,0.6259765625,0.67578125,0.689453125,0.6630859375,0.6142578125,0.5771484375,0.5693359375,0.5771484375,0.6015625,0.62109375,0.6123046875,0.5673828125,0.5,0.4296875,0.36328125,0.3115234375,0.296875,0.3232421875,0.3720703125,0.41015625,0.419921875,0.419921875,0.419921875,0.4208984375,0.4228515625,0.42578125,0.427734375,0.4296875,0.4345703125,0.4521484375,0.4833984375,0.517578125,0.544921875,0.55859375,0.5595703125,0.5478515625,0.5048828125,0.451171875,0.421875,0.435546875,0.4892578125,0.5595703125,0.6201171875,0.6337890625,0.5986328125,0.5419921875,0.5029296875,0.5126953125,0.5693359375,0.6455078125,0.734375,0.7978515625,0.7958984375,0.7294921875,0.63671875,0.5595703125,0.48046875,0.3818359375,0.3056640625,0.29296875,0.3466796875,0.4326171875,0.509765625,0.5869140625,0.6796875,0.744140625,0.744140625,0.6796875,0.5869140625,0.509765625,0.439453125,0.376953125,0.345703125,0.353515625,0.3876953125,0.419921875,0.4296875,0.4423828125,0.490234375,0.5546875,0.599609375,0.5986328125,0.5546875,0.4892578125,0.4345703125,0.43359375,0.490234375,0.5693359375,0.625,0.6240234375,0.5693359375,0.4931640625,0.4033203125,0.3408203125,0.3427734375,0.4091796875,0.5009765625,0.5791015625,0.6552734375,0.73828125,0.787109375,0.7666015625,0.68359375,0.5810546875,0.5,0.419921875,0.3271484375,0.2626953125,0.265625,0.333984375,0.4296875,0.509765625,0.5810546875,0.6396484375,0.666015625,0.6494140625,0.6064453125,0.5693359375,0.5595703125,0.5458984375,0.49609375,0.427734375,0.380859375,0.37890625,0.4228515625,0.4892578125,0.5556640625,0.59765625,0.59375,0.544921875,0.4775390625,0.4296875,0.419921875,0.421875,0.42578125,0.4306640625,0.4345703125,0.4384765625,0.439453125,0.439453125,0.4326171875,0.4052734375,0.37890625,0.3798828125,0.419921875,0.486328125,0.5595703125,0.6162109375,0.611328125,0.5419921875,0.447265625,0.3779296875,0.373046875,0.4296875,0.4912109375,0.5087890625,0.482421875,0.4375,0.41015625,0.4287109375,0.4892578125,0.5693359375,0.666015625,0.7373046875,0.7431640625,0.6806640625,0.5888671875,0.509765625,0.4384765625,0.376953125,0.3486328125,0.3603515625,0.3984375,0.431640625,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.4423828125,0.4580078125,0.486328125,0.5185546875,0.544921875,0.55859375,0.5595703125,0.5576171875,0.5556640625,0.5537109375,0.5537109375,0.5556640625,0.5576171875,0.5595703125,0.55859375,0.544921875,0.5185546875,0.486328125,0.4580078125,0.4423828125,0.439453125,0.431640625,0.3974609375,0.357421875,0.341796875,0.3662109375,0.421875,0.4892578125,0.5546875,0.595703125,0.5947265625,0.548828125,0.484375,0.439453125,0.4296875,0.4345703125,0.451171875,0.48046875,0.513671875,0.5419921875,0.556640625,0.5595703125,0.556640625,0.54296875,0.517578125,0.4873046875,0.4599609375,0.4443359375,0.439453125,0.431640625,0.4052734375,0.3828125,0.3896484375,0.435546875,0.505859375,0.5791015625,0.6572265625,0.7421875,0.7919921875,0.7724609375,0.6904296875,0.5888671875,0.509765625,0.4306640625,0.3359375,0.2646484375,0.2587890625,0.3193359375,0.41015625,0.4892578125,0.5673828125,0.6513671875,0.69921875,0.6796875,0.59765625,0.498046875,0.419921875,0.36328125,0.357421875,0.4033203125,0.4677734375,0.509765625,0.4990234375,0.439453125,0.36328125,0.2880859375,0.255859375,0.2939453125,0.390625,0.4990234375,0.5791015625,0.6318359375,0.6220703125,0.546875,0.4462890625,0.373046875,0.365234375,0.419921875,0.482421875,0.5126953125,0.5107421875,0.494140625,0.490234375,0.5185546875,0.5791015625,0.642578125,0.673828125,0.65234375,0.58203125,0.4951171875,0.4345703125,0.419921875,0.431640625,0.490234375,0.5771484375,0.6474609375,0.6689453125,0.6357421875,0.5693359375,0.5078125,0.4892578125,0.5146484375,0.55859375,0.5859375,0.5693359375,0.509765625,0.451171875,0.4384765625,0.474609375,0.529296875,0.564453125,0.5498046875,0.4892578125,0.427734375,0.408203125,0.4306640625,0.47265625,0.4970703125,0.4794921875,0.419921875,0.341796875,0.25,0.185546875,0.1875,0.255859375,0.349609375,0.4296875,0.5107421875,0.6142578125,0.697265625,0.7177734375,0.6689453125,0.5859375,0.509765625,0.4306640625,0.3369140625,0.267578125,0.26171875,0.322265625,0.412109375,0.4892578125,0.568359375,0.662109375,0.7314453125,0.7373046875,0.6767578125,0.5869140625,0.509765625,0.443359375,0.400390625,0.4013671875,0.4482421875,0.5126953125,0.5595703125,0.5693359375,0.5546875,0.4970703125,0.4150390625,0.349609375,0.33203125,0.3662109375,0.4296875,0.490234375,0.517578125,0.51171875,0.4921875,0.4873046875,0.517578125,0.5791015625,0.634765625,0.6279296875,0.556640625,0.4580078125,0.3857421875,0.3759765625,0.4296875,0.49609375,0.5458984375,0.5576171875,0.5263671875,0.4736328125,0.4306640625,0.419921875,0.41796875,0.41796875,0.4189453125,0.4208984375,0.421875,0.4208984375,0.419921875,0.41796875,0.4169921875,0.4169921875,0.4169921875,0.4189453125,0.419921875,0.419921875,0.4306640625,0.4794921875,0.5458984375,0.5927734375,0.595703125,0.5546875,0.4892578125,0.421875,0.3671875,0.3447265625,0.361328125,0.400390625,0.4326171875,0.439453125,0.44921875,0.4970703125,0.5634765625,0.6103515625,0.6123046875,0.5673828125,0.5,0.431640625,0.38671875,0.388671875,0.435546875,0.501953125,0.5498046875,0.5595703125,0.56640625,0.5986328125,0.6376953125,0.654296875,0.6318359375,0.5771484375,0.509765625,0.4443359375,0.4033203125,0.40625,0.453125,0.51953125,0.568359375,0.5791015625,0.5693359375,0.5283203125,0.4755859375,0.443359375,0.4541015625,0.5029296875,0.5693359375,0.625,0.626953125,0.57421875,0.4990234375,0.4482421875,0.4521484375,0.509765625,0.5888671875,0.6865234375,0.7626953125,0.7763671875,0.7216796875,0.6357421875,0.5595703125,0.4873046875,0.4189453125,0.373046875,0.365234375,0.38671875,0.412109375,0.419921875,0.4130859375,0.3828125,0.3466796875,0.3369140625,0.3671875,0.427734375,0.5,0.5673828125,0.6103515625,0.60546875,0.5546875,0.4833984375,0.431640625,0.419921875,0.419921875,0.419921875,0.4208984375,0.4228515625,0.42578125,0.427734375,0.4296875,0.431640625,0.43359375,0.435546875,0.451171875,0.4912109375,0.5009765625,0.4755859375,0.4287109375,0.390625,0.404296875,0.4677734375,0.5478515625,0.6015625,0.6005859375,0.55078125,0.4853515625,0.4130859375,0.3671875,0.376953125,0.4365234375,0.51171875,0.5703125,0.619140625,0.6572265625,0.669921875,0.658203125,0.6328125,0.6171875,0.6220703125,0.6328125,0.640625,0.6259765625,0.5791015625,0.5068359375,0.43359375,0.376953125,0.326171875,0.283203125,0.26171875,0.26953125,0.296875,0.3193359375,0.3251953125,0.3251953125,0.3251953125,0.3291015625,0.3388671875,0.3525390625,0.3662109375,0.376953125,0.3935546875,0.4306640625,0.4833984375,0.5341796875,0.5673828125,0.5771484375,0.5703125,0.5498046875,0.5009765625,0.4453125,0.4189453125,0.4404296875,0.4990234375,0.5703125,0.6337890625,0.6630859375,0.6494140625,0.611328125,0.5791015625,0.5810546875,0.6220703125,0.6787109375,0.7451171875,0.7890625,0.779296875,0.71875,0.6376953125,0.5703125,0.5009765625,0.4189453125,0.357421875,0.3525390625,0.4052734375,0.4833984375,0.55078125,0.619140625,0.7001953125,0.7568359375,0.7568359375,0.7001953125,0.619140625,0.55078125,0.486328125,0.4140625,0.3564453125,0.33203125,0.3408203125,0.3623046875,0.376953125,0.396484375,0.4423828125,0.4970703125,0.533203125,0.5322265625,0.4970703125,0.4482421875,0.4091796875,0.4228515625,0.490234375,0.5791015625,0.646484375,0.66015625,0.6220703125,0.564453125,0.498046875,0.4541015625,0.4638671875,0.5244140625,0.60546875,0.673828125,0.7392578125,0.8046875,0.830078125,0.7890625,0.69140625,0.58203125,0.5,0.4208984375,0.3330078125,0.2783203125,0.2919921875,0.3701171875,0.470703125,0.55078125,0.623046875,0.68359375,0.708984375,0.6875,0.63671875,0.58984375,0.5703125,0.548828125,0.490234375,0.416015625,0.361328125,0.353515625,0.3896484375,0.4482421875,0.5029296875,0.52734375,0.50390625,0.4404296875,0.3701171875,0.3271484375,0.3251953125,0.337890625,0.3583984375,0.3828125,0.40625,0.421875,0.427734375,0.4287109375,0.421875,0.3974609375,0.3759765625,0.3828125,0.427734375,0.4970703125,0.5703125,0.625,0.6123046875,0.529296875,0.41796875,0.3349609375,0.322265625,0.376953125,0.4384765625,0.4580078125,0.43359375,0.3916015625,0.3671875,0.38671875,0.4482421875,0.5302734375,0.63671875,0.7265625,0.75390625,0.7099609375,0.62890625,0.55078125,0.478515625,0.4111328125,0.37109375,0.369140625,0.39453125,0.421875,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.43359375,0.45703125,0.49609375,0.5380859375,0.5673828125,0.5771484375,0.5703125,0.55859375,0.544921875,0.53515625,0.53515625,0.544921875,0.55859375,0.5703125,0.5771484375,0.5673828125,0.5380859375,0.49609375,0.45703125,0.43359375,0.4287109375,0.421875,0.39453125,0.361328125,0.3447265625,0.3583984375,0.3974609375,0.4482421875,0.494140625,0.5166015625,0.5029296875,0.4580078125,0.40625,0.3759765625,0.376953125,0.3916015625,0.4228515625,0.4677734375,0.5146484375,0.5498046875,0.5673828125,0.5703125,0.568359375,0.556640625,0.533203125,0.5,0.466796875,0.4423828125,0.4287109375,0.4150390625,0.39453125,0.39453125,0.4326171875,0.5087890625,0.5966796875,0.673828125,0.7490234375,0.822265625,0.853515625,0.8173828125,0.724609375,0.6240234375,0.55078125,0.4794921875,0.3798828125,0.2919921875,0.2607421875,0.296875,0.3720703125,0.4482421875,0.521484375,0.5888671875,0.61328125,0.572265625,0.4814453125,0.3876953125,0.3251953125,0.2880859375,0.3056640625,0.3720703125,0.4521484375,0.5,0.4892578125,0.4287109375,0.357421875,0.3056640625,0.30859375,0.3818359375,0.5,0.6083984375,0.673828125,0.7060546875,0.666015625,0.5517578125,0.412109375,0.30859375,0.28125,0.3251953125,0.38671875,0.443359375,0.4951171875,0.5390625,0.580078125,0.6240234375,0.673828125,0.7158203125,0.7177734375,0.6572265625,0.5478515625,0.4306640625,0.3505859375,0.3251953125,0.33203125,0.40234375,0.5205078125,0.6328125,0.693359375,0.68359375,0.6220703125,0.55859375,0.533203125,0.5498046875,0.587890625,0.6142578125,0.6025390625,0.55078125,0.4990234375,0.4833984375,0.501953125,0.53125,0.541015625,0.51171875,0.4482421875,0.3837890625,0.3525390625,0.357421875,0.380859375,0.396484375,0.3779296875,0.3251953125,0.2568359375,0.1767578125,0.1240234375,0.1328125,0.203125,0.2978515625,0.376953125,0.4599609375,0.5693359375,0.6669921875,0.7080078125,0.6826171875,0.6171875,0.55078125,0.48046875,0.3876953125,0.3076171875,0.2802734375,0.314453125,0.3818359375,0.4482421875,0.5185546875,0.611328125,0.69140625,0.71875,0.6845703125,0.6171875,0.55078125,0.494140625,0.46484375,0.4765625,0.525390625,0.5849609375,0.6220703125,0.6220703125,0.5986328125,0.5322265625,0.4375,0.35546875,0.318359375,0.33203125,0.376953125,0.4248046875,0.462890625,0.4921875,0.5234375,0.5625,0.6142578125,0.673828125,0.71875,0.6982421875,0.60546875,0.4794921875,0.3779296875,0.3427734375,0.376953125,0.4267578125,0.4638671875,0.4697265625,0.4384765625,0.3876953125,0.34375,0.3251953125,0.3173828125,0.3154296875,0.3212890625,0.330078125,0.3359375,0.333984375,0.3251953125,0.3154296875,0.3076171875,0.3056640625,0.310546875,0.318359375,0.32421875,0.3251953125,0.3359375,0.3798828125,0.4453125,0.4990234375,0.5166015625,0.494140625,0.4482421875,0.3994140625,0.3662109375,0.359375,0.380859375,0.4130859375,0.4326171875,0.4287109375,0.4306640625,0.4736328125,0.5400390625,0.59375,0.6044921875,0.56640625,0.5,0.4326171875,0.39453125,0.4052734375,0.458984375,0.525390625,0.568359375,0.5703125,0.56640625,0.5859375,0.6181640625,0.6396484375,0.6328125,0.599609375,0.55078125,0.5048828125,0.482421875,0.5,0.5537109375,0.619140625,0.6630859375,0.673828125,0.6650390625,0.62890625,0.580078125,0.544921875,0.5419921875,0.5732421875,0.6220703125,0.6611328125,0.654296875,0.6025390625,0.5361328125,0.4931640625,0.5,0.55078125,0.6201171875,0.7021484375,0.763671875,0.7685546875,0.7158203125,0.6376953125,0.5703125,0.5029296875,0.4228515625,0.3486328125,0.3056640625,0.298828125,0.3125,0.3251953125,0.330078125,0.31640625,0.3037109375,0.3154296875,0.359375,0.4267578125,0.5,0.5654296875,0.5966796875,0.5712890625,0.4951171875,0.40234375,0.33984375,0.3251953125,0.3251953125,0.3251953125,0.3291015625,0.3388671875,0.3525390625,0.3662109375,0.376953125,0.388671875,0.40234375,0.412109375,0.380859375,0.427734375,0.466796875,0.4814453125,0.46875,0.4599609375,0.4892578125,0.5498046875,0.6123046875,0.6484375,0.642578125,0.6044921875,0.5556640625,0.5029296875,0.4638671875,0.455078125,0.4755859375,0.5068359375,0.5302734375,0.546875,0.55859375,0.5654296875,0.57421875,0.5888671875,0.609375,0.634765625,0.6572265625,0.654296875,0.61328125,0.5380859375,0.4541015625,0.392578125,0.3642578125,0.3427734375,0.31640625,0.2900390625,0.26953125,0.2607421875,0.2587890625,0.2587890625,0.2578125,0.2548828125,0.2587890625,0.275390625,0.3037109375,0.3359375,0.3642578125,0.3974609375,0.4521484375,0.513671875,0.5576171875,0.5703125,0.5556640625,0.5302734375,0.494140625,0.43359375,0.375,0.35546875,0.388671875,0.4560546875,0.5302734375,0.599609375,0.6533203125,0.67578125,0.666015625,0.638671875,0.6240234375,0.634765625,0.6572265625,0.6845703125,0.6982421875,0.681640625,0.6357421875,0.5791015625,0.5302734375,0.4814453125,0.4306640625,0.4052734375,0.4248046875,0.484375,0.552734375,0.6044921875,0.6552734375,0.71484375,0.7568359375,0.7568359375,0.71484375,0.6552734375,0.6044921875,0.55078125,0.4736328125,0.3916015625,0.3359375,0.3212890625,0.337890625,0.3642578125,0.392578125,0.4267578125,0.453125,0.4580078125,0.44140625,0.416015625,0.39453125,0.3837890625,0.41015625,0.474609375,0.5546875,0.619140625,0.6455078125,0.634765625,0.6123046875,0.5849609375,0.5712890625,0.587890625,0.6337890625,0.6904296875,0.740234375,0.7880859375,0.833984375,0.8427734375,0.7900390625,0.689453125,0.5810546875,0.5,0.421875,0.3408203125,0.2978515625,0.3251953125,0.416015625,0.5224609375,0.6044921875,0.6767578125,0.7353515625,0.7509765625,0.7119140625,0.6376953125,0.5673828125,0.5302734375,0.4951171875,0.4326171875,0.36328125,0.3203125,0.3173828125,0.349609375,0.39453125,0.431640625,0.4326171875,0.3916015625,0.3251953125,0.2666015625,0.2431640625,0.2587890625,0.2890625,0.333984375,0.3857421875,0.4306640625,0.4580078125,0.4677734375,0.46875,0.4609375,0.4267578125,0.38671875,0.3720703125,0.3984375,0.458984375,0.5302734375,0.5859375,0.576171875,0.4990234375,0.39453125,0.3173828125,0.30859375,0.3642578125,0.4248046875,0.4384765625,0.4052734375,0.3525390625,0.3193359375,0.333984375,0.39453125,0.4794921875,0.5986328125,0.7119140625,0.767578125,0.748046875,0.6796875,0.6044921875,0.53125,0.462890625,0.4189453125,0.4140625,0.4375,0.4619140625,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.474609375,0.4970703125,0.5302734375,0.5576171875,0.56640625,0.5537109375,0.5302734375,0.5009765625,0.4658203125,0.44140625,0.44140625,0.4658203125,0.5009765625,0.5302734375,0.5537109375,0.56640625,0.5576171875,0.5302734375,0.4970703125,0.474609375,0.46875,0.46484375,0.4443359375,0.4140625,0.3857421875,0.373046875,0.3779296875,0.39453125,0.408203125,0.4033203125,0.3798828125,0.353515625,0.3369140625,0.341796875,0.3642578125,0.3935546875,0.4326171875,0.474609375,0.5078125,0.5244140625,0.529296875,0.5302734375,0.5322265625,0.5400390625,0.5458984375,0.541015625,0.5224609375,0.49609375,0.46875,0.439453125,0.412109375,0.4140625,0.4658203125,0.5595703125,0.66015625,0.740234375,0.8134765625,0.875,0.892578125,0.8447265625,0.7529296875,0.662109375,0.6044921875,0.5458984375,0.4453125,0.3369140625,0.26953125,0.26953125,0.3232421875,0.39453125,0.4638671875,0.5107421875,0.5078125,0.44921875,0.3623046875,0.2900390625,0.2587890625,0.255859375,0.30859375,0.4052734375,0.5,0.546875,0.53125,0.46875,0.4033203125,0.3720703125,0.4052734375,0.5,0.6171875,0.705078125,0.740234375,0.7412109375,0.669921875,0.5322265625,0.3779296875,0.2646484375,0.228515625,0.2587890625,0.3115234375,0.392578125,0.494140625,0.59375,0.6708984375,0.716796875,0.740234375,0.7509765625,0.7216796875,0.6376953125,0.513671875,0.38671875,0.298828125,0.2587890625,0.251953125,0.3203125,0.4521484375,0.59375,0.68359375,0.6923828125,0.634765625,0.5703125,0.541015625,0.5546875,0.5966796875,0.634765625,0.6396484375,0.6044921875,0.5654296875,0.548828125,0.546875,0.541015625,0.5146484375,0.462890625,0.39453125,0.328125,0.28515625,0.275390625,0.2890625,0.3037109375,0.2958984375,0.2587890625,0.20703125,0.1455078125,0.1064453125,0.123046875,0.1943359375,0.28515625,0.3642578125,0.4453125,0.5537109375,0.654296875,0.70703125,0.6982421875,0.6533203125,0.6044921875,0.5498046875,0.4638671875,0.375,0.3193359375,0.314453125,0.3486328125,0.39453125,0.44921875,0.53515625,0.6240234375,0.6796875,0.6845703125,0.650390625,0.6044921875,0.564453125,0.55078125,0.568359375,0.607421875,0.642578125,0.6533203125,0.634765625,0.6005859375,0.537109375,0.4580078125,0.3896484375,0.3515625,0.3486328125,0.3642578125,0.384765625,0.41796875,0.4716796875,0.5439453125,0.6220703125,0.689453125,0.740234375,0.7724609375,0.7490234375,0.6591796875,0.533203125,0.4189453125,0.3603515625,0.3642578125,0.3837890625,0.400390625,0.3994140625,0.375,0.3330078125,0.2900390625,0.2587890625,0.2373046875,0.2333984375,0.248046875,0.2705078125,0.28515625,0.28125,0.2587890625,0.2333984375,0.2138671875,0.208984375,0.220703125,0.240234375,0.2548828125,0.2587890625,0.2646484375,0.2919921875,0.3369140625,0.3798828125,0.4072265625,0.41015625,0.39453125,0.3818359375,0.3916015625,0.4248046875,0.4638671875,0.4892578125,0.490234375,0.46875,0.4541015625,0.48046875,0.53515625,0.5849609375,0.5986328125,0.564453125,0.5,0.4345703125,0.400390625,0.4140625,0.4638671875,0.5185546875,0.544921875,0.5302734375,0.5087890625,0.509765625,0.53515625,0.57421875,0.607421875,0.6171875,0.6044921875,0.5888671875,0.591796875,0.619140625,0.662109375,0.70703125,0.734375,0.740234375,0.7353515625,0.7109375,0.673828125,0.6376953125,0.6181640625,0.619140625,0.634765625,0.646484375,0.6298828125,0.5927734375,0.5576171875,0.5458984375,0.5634765625,0.6044921875,0.6533203125,0.7041015625,0.7294921875,0.708984375,0.650390625,0.58203125,0.5302734375,0.4755859375,0.39453125,0.3056640625,0.2421875,0.220703125,0.2333984375,0.2587890625,0.2802734375,0.287109375,0.2919921875,0.314453125,0.361328125,0.427734375,0.5,0.5634765625,0.5869140625,0.546875,0.4521484375,0.345703125,0.2744140625,0.2587890625,0.2578125,0.2548828125,0.2587890625,0.275390625,0.3037109375,0.3359375,0.3642578125,0.3935546875,0.427734375,0.4521484375,0.3310546875,0.3779296875,0.4453125,0.501953125,0.5302734375,0.5546875,0.5966796875,0.642578125,0.673828125,0.6787109375,0.6611328125,0.634765625,0.6083984375,0.580078125,0.5517578125,0.52734375,0.5068359375,0.4873046875,0.46875,0.447265625,0.423828125,0.4169921875,0.44140625,0.494140625,0.5546875,0.6044921875,0.6416015625,0.6376953125,0.5849609375,0.501953125,0.4248046875,0.38671875,0.39453125,0.41015625,0.4072265625,0.3798828125,0.3369140625,0.2919921875,0.2646484375,0.2587890625,0.255859375,0.24609375,0.2421875,0.2587890625,0.2978515625,0.3466796875,0.39453125,0.4462890625,0.5146484375,0.57421875,0.59375,0.568359375,0.517578125,0.46875,0.4150390625,0.33984375,0.2783203125,0.267578125,0.314453125,0.3935546875,0.46875,0.544921875,0.625,0.6826171875,0.6953125,0.6689453125,0.6298828125,0.6044921875,0.5869140625,0.5712890625,0.5576171875,0.541015625,0.5205078125,0.4951171875,0.46875,0.443359375,0.4287109375,0.44140625,0.4853515625,0.546875,0.6015625,0.634765625,0.6640625,0.69921875,0.7236328125,0.7236328125,0.69921875,0.6640625,0.634765625,0.59765625,0.5224609375,0.4306640625,0.3583984375,0.3330078125,0.3525390625,0.39453125,0.435546875,0.453125,0.44140625,0.40625,0.369140625,0.3525390625,0.3642578125,0.3857421875,0.41796875,0.4609375,0.5078125,0.55078125,0.5830078125,0.6044921875,0.6220703125,0.6376953125,0.6513671875,0.66796875,0.689453125,0.7138671875,0.740234375,0.7705078125,0.8017578125,0.806640625,0.76171875,0.67578125,0.578125,0.5,0.4228515625,0.345703125,0.30859375,0.3447265625,0.44140625,0.5517578125,0.634765625,0.70703125,0.765625,0.775390625,0.720703125,0.6220703125,0.52734375,0.46875,0.4189453125,0.357421875,0.306640625,0.2861328125,0.3017578125,0.3349609375,0.3642578125,0.380859375,0.361328125,0.30859375,0.2509765625,0.2158203125,0.220703125,0.2587890625,0.3095703125,0.375,0.4443359375,0.4970703125,0.5234375,0.5302734375,0.5302734375,0.5185546875,0.4697265625,0.40234375,0.3564453125,0.35546875,0.400390625,0.46875,0.52734375,0.529296875,0.4716796875,0.3916015625,0.3349609375,0.3359375,0.39453125,0.453125,0.4609375,0.4140625,0.3447265625,0.2978515625,0.3046875,0.3642578125,0.4501953125,0.5771484375,0.7041015625,0.775390625,0.76953125,0.7080078125,0.634765625,0.5625,0.498046875,0.4609375,0.4638671875,0.4931640625,0.5224609375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.53515625,0.5537109375,0.57421875,0.5771484375,0.5556640625,0.5146484375,0.46875,0.4189453125,0.359375,0.3173828125,0.3173828125,0.359375,0.4189453125,0.46875,0.5146484375,0.5556640625,0.5771484375,0.57421875,0.5537109375,0.53515625,0.5302734375,0.5283203125,0.51953125,0.4970703125,0.4609375,0.419921875,0.38671875,0.3642578125,0.33984375,0.3037109375,0.2734375,0.26953125,0.298828125,0.3466796875,0.39453125,0.4404296875,0.482421875,0.5078125,0.5078125,0.4912109375,0.4736328125,0.46875,0.4765625,0.5107421875,0.5576171875,0.5927734375,0.5986328125,0.572265625,0.5302734375,0.48046875,0.431640625,0.416015625,0.4609375,0.5546875,0.6591796875,0.740234375,0.8115234375,0.8662109375,0.8759765625,0.828125,0.7470703125,0.6728515625,0.634765625,0.5927734375,0.4990234375,0.3798828125,0.2900390625,0.26171875,0.296875,0.3642578125,0.4287109375,0.45703125,0.4326171875,0.3671875,0.2939453125,0.2529296875,0.2587890625,0.2939453125,0.3818359375,0.4990234375,0.59375,0.626953125,0.595703125,0.5302734375,0.4677734375,0.4521484375,0.5,0.59375,0.6904296875,0.7431640625,0.740234375,0.70703125,0.619140625,0.48828125,0.3583984375,0.26953125,0.2421875,0.2587890625,0.298828125,0.38671875,0.513671875,0.6376953125,0.7216796875,0.7509765625,0.740234375,0.716796875,0.6708984375,0.59375,0.494140625,0.392578125,0.3115234375,0.2587890625,0.232421875,0.283203125,0.4052734375,0.546875,0.64453125,0.66015625,0.6044921875,0.5390625,0.505859375,0.5185546875,0.568359375,0.6240234375,0.650390625,0.634765625,0.61328125,0.6025390625,0.5908203125,0.560546875,0.5068359375,0.4365234375,0.3642578125,0.2958984375,0.24609375,0.228515625,0.2421875,0.267578125,0.27734375,0.2587890625,0.2265625,0.181640625,0.154296875,0.1708984375,0.2333984375,0.3173828125,0.39453125,0.4736328125,0.5703125,0.6572265625,0.701171875,0.697265625,0.6650390625,0.634765625,0.599609375,0.5322265625,0.447265625,0.375,0.3388671875,0.3408203125,0.3642578125,0.3994140625,0.466796875,0.5517578125,0.6240234375,0.66015625,0.658203125,0.634765625,0.615234375,0.6181640625,0.640625,0.6630859375,0.6669921875,0.6455078125,0.6044921875,0.55859375,0.5107421875,0.4697265625,0.44140625,0.4248046875,0.4111328125,0.39453125,0.3798828125,0.3935546875,0.447265625,0.53515625,0.6318359375,0.7041015625,0.740234375,0.7607421875,0.7490234375,0.6904296875,0.595703125,0.49609375,0.4248046875,0.39453125,0.37890625,0.375,0.375,0.3662109375,0.341796875,0.3037109375,0.2587890625,0.220703125,0.21484375,0.240234375,0.2783203125,0.3037109375,0.296875,0.2587890625,0.21484375,0.181640625,0.1728515625,0.1923828125,0.2265625,0.2529296875,0.2587890625,0.2587890625,0.2607421875,0.26953125,0.2900390625,0.31640625,0.3427734375,0.3642578125,0.392578125,0.453125,0.52734375,0.58203125,0.5966796875,0.572265625,0.5302734375,0.4951171875,0.5,0.5380859375,0.580078125,0.59375,0.5634765625,0.5,0.435546875,0.4052734375,0.4189453125,0.4609375,0.4990234375,0.50390625,0.46875,0.4267578125,0.40234375,0.4169921875,0.4716796875,0.5458984375,0.6064453125,0.634765625,0.65625,0.6826171875,0.708984375,0.7294921875,0.73828125,0.740234375,0.740234375,0.7392578125,0.734375,0.7177734375,0.6904296875,0.65625,0.6259765625,0.6044921875,0.5830078125,0.5576171875,0.541015625,0.5458984375,0.572265625,0.6064453125,0.634765625,0.66015625,0.6748046875,0.662109375,0.619140625,0.556640625,0.501953125,0.46875,0.4326171875,0.361328125,0.275390625,0.2119140625,0.193359375,0.2158203125,0.2587890625,0.298828125,0.3193359375,0.328125,0.341796875,0.375,0.4306640625,0.5,0.5634765625,0.5869140625,0.546875,0.4521484375,0.345703125,0.2744140625,0.2587890625,0.255859375,0.24609375,0.2421875,0.2587890625,0.2978515625,0.3466796875,0.39453125,0.4443359375,0.50390625,0.546875,0.3017578125,0.3388671875,0.4208984375,0.5087890625,0.5703125,0.6220703125,0.671875,0.7001953125,0.697265625,0.6689453125,0.6376953125,0.6220703125,0.6142578125,0.61328125,0.60546875,0.5810546875,0.5361328125,0.4814453125,0.4287109375,0.3740234375,0.3154296875,0.2880859375,0.3154296875,0.392578125,0.4814453125,0.55078125,0.6015625,0.6044921875,0.5546875,0.4794921875,0.419921875,0.4091796875,0.4482421875,0.494140625,0.5166015625,0.4990234375,0.4453125,0.3798828125,0.3359375,0.3251953125,0.3203125,0.298828125,0.2802734375,0.287109375,0.3251953125,0.3857421875,0.4482421875,0.515625,0.59375,0.646484375,0.6416015625,0.580078125,0.498046875,0.4287109375,0.359375,0.2724609375,0.2080078125,0.2041015625,0.2626953125,0.3505859375,0.4287109375,0.5087890625,0.60546875,0.6845703125,0.7080078125,0.671875,0.607421875,0.55078125,0.5,0.4541015625,0.4248046875,0.4189453125,0.427734375,0.4345703125,0.4287109375,0.421875,0.431640625,0.46484375,0.515625,0.568359375,0.60546875,0.6220703125,0.6328125,0.646484375,0.65625,0.65625,0.646484375,0.6328125,0.6220703125,0.5986328125,0.5341796875,0.4482421875,0.380859375,0.361328125,0.390625,0.4482421875,0.4990234375,0.505859375,0.462890625,0.396484375,0.3447265625,0.337890625,0.376953125,0.423828125,0.4521484375,0.462890625,0.4658203125,0.4755859375,0.5048828125,0.55078125,0.6025390625,0.6484375,0.6767578125,0.68359375,0.6748046875,0.66796875,0.673828125,0.689453125,0.7177734375,0.734375,0.7138671875,0.654296875,0.5751953125,0.5,0.4228515625,0.34375,0.3037109375,0.3359375,0.4296875,0.5390625,0.6220703125,0.6953125,0.759765625,0.7763671875,0.720703125,0.61328125,0.5029296875,0.4287109375,0.3662109375,0.3095703125,0.279296875,0.287109375,0.3232421875,0.3603515625,0.376953125,0.3779296875,0.34375,0.2880859375,0.244140625,0.236328125,0.2685546875,0.3251953125,0.390625,0.4658203125,0.53125,0.5703125,0.5791015625,0.5732421875,0.5703125,0.556640625,0.498046875,0.4130859375,0.345703125,0.3271484375,0.3623046875,0.4287109375,0.4892578125,0.501953125,0.4658203125,0.41015625,0.375,0.3876953125,0.4482421875,0.505859375,0.5078125,0.4521484375,0.373046875,0.3173828125,0.3193359375,0.376953125,0.462890625,0.5869140625,0.7080078125,0.7724609375,0.759765625,0.6953125,0.6220703125,0.55078125,0.4921875,0.466796875,0.484375,0.525390625,0.5615234375,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5751953125,0.59375,0.6083984375,0.5966796875,0.5537109375,0.4921875,0.4287109375,0.3603515625,0.2802734375,0.2236328125,0.2236328125,0.2802734375,0.3603515625,0.4287109375,0.4921875,0.5537109375,0.5966796875,0.6083984375,0.59375,0.5751953125,0.5703125,0.572265625,0.5791015625,0.57421875,0.544921875,0.4921875,0.431640625,0.376953125,0.3212890625,0.2568359375,0.216796875,0.2314453125,0.296875,0.3798828125,0.4482421875,0.5068359375,0.5498046875,0.556640625,0.525390625,0.4755859375,0.4375,0.4287109375,0.4404296875,0.4931640625,0.5703125,0.6337890625,0.654296875,0.6259765625,0.5703125,0.5029296875,0.4287109375,0.38671875,0.41015625,0.4921875,0.5927734375,0.673828125,0.7431640625,0.7958984375,0.8046875,0.765625,0.6982421875,0.642578125,0.6220703125,0.595703125,0.5166015625,0.4072265625,0.31640625,0.283203125,0.3115234375,0.376953125,0.4384765625,0.455078125,0.4189453125,0.353515625,0.2978515625,0.287109375,0.3251953125,0.390625,0.4990234375,0.6171875,0.6904296875,0.693359375,0.6416015625,0.5703125,0.509765625,0.4990234375,0.546875,0.626953125,0.693359375,0.7109375,0.673828125,0.6142578125,0.5283203125,0.43359375,0.359375,0.3212890625,0.31640625,0.3251953125,0.3505859375,0.4306640625,0.5478515625,0.6572265625,0.7177734375,0.7158203125,0.673828125,0.6240234375,0.580078125,0.5390625,0.4951171875,0.443359375,0.38671875,0.3251953125,0.28125,0.3056640625,0.3974609375,0.513671875,0.5966796875,0.607421875,0.55078125,0.484375,0.4462890625,0.45703125,0.509765625,0.5771484375,0.6201171875,0.6220703125,0.6162109375,0.6201171875,0.6171875,0.587890625,0.52734375,0.451171875,0.376953125,0.3076171875,0.2548828125,0.23828125,0.2587890625,0.298828125,0.3271484375,0.3251953125,0.30859375,0.2744140625,0.24609375,0.251953125,0.30078125,0.3740234375,0.4482421875,0.5234375,0.6025390625,0.662109375,0.6826171875,0.666015625,0.6376953125,0.6220703125,0.6044921875,0.5615234375,0.4970703125,0.4326171875,0.3876953125,0.37109375,0.376953125,0.39453125,0.4375,0.501953125,0.56640625,0.611328125,0.6279296875,0.6220703125,0.6181640625,0.6376953125,0.666015625,0.677734375,0.658203125,0.611328125,0.55078125,0.49609375,0.46875,0.4716796875,0.4921875,0.505859375,0.4912109375,0.4482421875,0.40234375,0.3857421875,0.4189453125,0.49609375,0.5859375,0.6513671875,0.673828125,0.685546875,0.6953125,0.6845703125,0.642578125,0.5751953125,0.50390625,0.4482421875,0.404296875,0.3876953125,0.396484375,0.412109375,0.4111328125,0.380859375,0.3251953125,0.2744140625,0.265625,0.2998046875,0.3515625,0.3857421875,0.376953125,0.3251953125,0.265625,0.220703125,0.2099609375,0.2353515625,0.28125,0.3173828125,0.3251953125,0.3193359375,0.296875,0.26953125,0.26171875,0.283203125,0.326171875,0.376953125,0.439453125,0.5361328125,0.634765625,0.689453125,0.68359375,0.6318359375,0.5703125,0.5185546875,0.5068359375,0.533203125,0.5712890625,0.587890625,0.5625,0.5,0.4365234375,0.4111328125,0.427734375,0.4658203125,0.4921875,0.48046875,0.4287109375,0.3671875,0.3154296875,0.3095703125,0.3642578125,0.462890625,0.5595703125,0.6220703125,0.6728515625,0.7158203125,0.7373046875,0.7294921875,0.7021484375,0.6796875,0.673828125,0.677734375,0.6923828125,0.703125,0.6923828125,0.6552734375,0.603515625,0.55078125,0.501953125,0.466796875,0.4658203125,0.501953125,0.556640625,0.6025390625,0.6220703125,0.62890625,0.619140625,0.5859375,0.53515625,0.482421875,0.4453125,0.4287109375,0.408203125,0.3525390625,0.28125,0.232421875,0.228515625,0.2666015625,0.3251953125,0.37890625,0.4033203125,0.400390625,0.3896484375,0.396484375,0.4345703125,0.5,0.5654296875,0.5966796875,0.5712890625,0.4951171875,0.40234375,0.33984375,0.3251953125,0.3203125,0.298828125,0.2802734375,0.287109375,0.3251953125,0.3857421875,0.4482421875,0.515625,0.5966796875,0.6533203125,0.2822265625,0.3017578125,0.3818359375,0.4814453125,0.5595703125,0.6259765625,0.6787109375,0.6943359375,0.6689453125,0.6201171875,0.580078125,0.5693359375,0.57421875,0.5966796875,0.619140625,0.6142578125,0.57421875,0.5087890625,0.439453125,0.365234375,0.283203125,0.2333984375,0.2509765625,0.3310546875,0.4306640625,0.509765625,0.5673828125,0.5771484375,0.5341796875,0.470703125,0.4267578125,0.43359375,0.4892578125,0.5546875,0.595703125,0.5927734375,0.5458984375,0.4794921875,0.4306640625,0.419921875,0.412109375,0.37890625,0.3427734375,0.33203125,0.3603515625,0.419921875,0.4892578125,0.56640625,0.65234375,0.7060546875,0.693359375,0.6171875,0.5185546875,0.439453125,0.361328125,0.2685546875,0.2021484375,0.201171875,0.2666015625,0.3603515625,0.439453125,0.5205078125,0.62109375,0.701171875,0.7177734375,0.66796875,0.583984375,0.509765625,0.44140625,0.3837890625,0.357421875,0.3681640625,0.4033203125,0.43359375,0.439453125,0.4404296875,0.4541015625,0.4814453125,0.515625,0.546875,0.564453125,0.5693359375,0.5712890625,0.5732421875,0.5751953125,0.5751953125,0.5732421875,0.5712890625,0.5693359375,0.5556640625,0.5048828125,0.4345703125,0.3837890625,0.380859375,0.4228515625,0.4892578125,0.546875,0.55078125,0.5,0.4248046875,0.3720703125,0.3740234375,0.4296875,0.48828125,0.5087890625,0.48828125,0.451171875,0.4306640625,0.4501953125,0.509765625,0.5771484375,0.634765625,0.662109375,0.650390625,0.615234375,0.5859375,0.5791015625,0.5888671875,0.6220703125,0.658203125,0.6669921875,0.634765625,0.5712890625,0.5,0.421875,0.3359375,0.2841796875,0.302734375,0.3857421875,0.48828125,0.5693359375,0.6455078125,0.7236328125,0.759765625,0.724609375,0.6298828125,0.5205078125,0.439453125,0.37109375,0.3173828125,0.3017578125,0.3271484375,0.3779296875,0.4189453125,0.4296875,0.421875,0.380859375,0.326171875,0.2939453125,0.302734375,0.3525390625,0.419921875,0.4912109375,0.5595703125,0.603515625,0.6103515625,0.58984375,0.5654296875,0.5595703125,0.546875,0.490234375,0.41015625,0.3486328125,0.3349609375,0.373046875,0.439453125,0.5009765625,0.517578125,0.48828125,0.4404296875,0.412109375,0.4287109375,0.4892578125,0.5478515625,0.5517578125,0.498046875,0.421875,0.3681640625,0.37109375,0.4296875,0.5126953125,0.6240234375,0.7216796875,0.7587890625,0.72265625,0.6455078125,0.5693359375,0.4990234375,0.4453125,0.4296875,0.4580078125,0.5087890625,0.5498046875,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.56640625,0.5927734375,0.6181640625,0.6162109375,0.576171875,0.5107421875,0.439453125,0.3623046875,0.26953125,0.205078125,0.205078125,0.26953125,0.3623046875,0.439453125,0.5107421875,0.576171875,0.6162109375,0.6181640625,0.5927734375,0.56640625,0.5595703125,0.5654296875,0.58984375,0.6123046875,0.6064453125,0.5654296875,0.4990234375,0.4296875,0.3544921875,0.271484375,0.2197265625,0.2353515625,0.3125,0.41015625,0.4892578125,0.556640625,0.6015625,0.603515625,0.560546875,0.4970703125,0.4501953125,0.439453125,0.4521484375,0.5078125,0.5859375,0.6474609375,0.6611328125,0.625,0.5595703125,0.4814453125,0.3916015625,0.3291015625,0.333984375,0.4033203125,0.4990234375,0.5791015625,0.6494140625,0.701171875,0.7138671875,0.681640625,0.625,0.5810546875,0.5693359375,0.5546875,0.494140625,0.41015625,0.3427734375,0.326171875,0.36328125,0.4296875,0.490234375,0.5009765625,0.4609375,0.3994140625,0.3564453125,0.36328125,0.419921875,0.5,0.6083984375,0.705078125,0.7431640625,0.7109375,0.6357421875,0.5595703125,0.4990234375,0.4892578125,0.53125,0.595703125,0.6416015625,0.6357421875,0.5791015625,0.5087890625,0.4384765625,0.388671875,0.375,0.390625,0.412109375,0.419921875,0.4345703125,0.4951171875,0.58203125,0.65234375,0.673828125,0.642578125,0.5791015625,0.5185546875,0.490234375,0.494140625,0.5107421875,0.5126953125,0.482421875,0.419921875,0.36328125,0.365234375,0.42578125,0.5087890625,0.568359375,0.5673828125,0.509765625,0.44140625,0.3974609375,0.3984375,0.4453125,0.51171875,0.5595703125,0.5693359375,0.57421875,0.59765625,0.6201171875,0.6142578125,0.5712890625,0.5029296875,0.4296875,0.3603515625,0.3076171875,0.29296875,0.3212890625,0.3720703125,0.412109375,0.419921875,0.41015625,0.375,0.3369140625,0.326171875,0.3564453125,0.41796875,0.4892578125,0.5615234375,0.6240234375,0.6572265625,0.6484375,0.6123046875,0.5791015625,0.5693359375,0.564453125,0.544921875,0.5126953125,0.4755859375,0.4462890625,0.4306640625,0.4296875,0.4345703125,0.4541015625,0.486328125,0.5234375,0.552734375,0.568359375,0.5693359375,0.576171875,0.6083984375,0.646484375,0.6611328125,0.63671875,0.5791015625,0.509765625,0.4501953125,0.4365234375,0.4697265625,0.5234375,0.55859375,0.546875,0.4892578125,0.4248046875,0.384765625,0.390625,0.443359375,0.513671875,0.56640625,0.5791015625,0.587890625,0.6181640625,0.6494140625,0.654296875,0.6201171875,0.55859375,0.4892578125,0.4306640625,0.4130859375,0.4375,0.4775390625,0.5,0.48046875,0.419921875,0.361328125,0.3505859375,0.3896484375,0.44921875,0.48828125,0.478515625,0.419921875,0.3515625,0.30078125,0.287109375,0.3173828125,0.369140625,0.41015625,0.419921875,0.41015625,0.3720703125,0.3232421875,0.296875,0.3115234375,0.36328125,0.4296875,0.5087890625,0.615234375,0.708984375,0.744140625,0.708984375,0.6337890625,0.5595703125,0.5,0.4833984375,0.509765625,0.5546875,0.580078125,0.560546875,0.5,0.4384765625,0.4189453125,0.4443359375,0.4892578125,0.515625,0.4990234375,0.439453125,0.365234375,0.2900390625,0.2548828125,0.2900390625,0.3837890625,0.490234375,0.5693359375,0.6357421875,0.6875,0.7021484375,0.67578125,0.626953125,0.5888671875,0.5791015625,0.5869140625,0.6181640625,0.6533203125,0.6640625,0.6357421875,0.5771484375,0.509765625,0.4443359375,0.400390625,0.3994140625,0.4443359375,0.5087890625,0.556640625,0.5693359375,0.568359375,0.5546875,0.52734375,0.4931640625,0.462890625,0.4443359375,0.439453125,0.427734375,0.3837890625,0.326171875,0.2919921875,0.3017578125,0.3515625,0.419921875,0.4794921875,0.4990234375,0.4765625,0.4375,0.416015625,0.4375,0.5,0.5673828125,0.6103515625,0.60546875,0.5546875,0.4833984375,0.431640625,0.419921875,0.412109375,0.37890625,0.3427734375,0.33203125,0.3603515625,0.419921875,0.4892578125,0.5673828125,0.6591796875,0.724609375,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.232421875,0.2119140625,0.2607421875,0.34375,0.419921875,0.48828125,0.5419921875,0.5595703125,0.53515625,0.4873046875,0.44921875,0.439453125,0.453125,0.5107421875,0.59375,0.66015625,0.6787109375,0.64453125,0.5791015625,0.5,0.3994140625,0.318359375,0.2998046875,0.349609375,0.43359375,0.509765625,0.568359375,0.578125,0.5390625,0.4794921875,0.4404296875,0.451171875,0.509765625,0.578125,0.634765625,0.6572265625,0.640625,0.599609375,0.56640625,0.5595703125,0.5498046875,0.5029296875,0.439453125,0.39453125,0.3955078125,0.44140625,0.509765625,0.58984375,0.689453125,0.767578125,0.78125,0.728515625,0.64453125,0.5693359375,0.4931640625,0.40234375,0.3359375,0.333984375,0.39453125,0.4833984375,0.5595703125,0.634765625,0.720703125,0.775390625,0.763671875,0.6884765625,0.58984375,0.509765625,0.4404296875,0.39453125,0.3935546875,0.439453125,0.505859375,0.556640625,0.5693359375,0.568359375,0.5537109375,0.5244140625,0.490234375,0.4599609375,0.443359375,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.4306640625,0.3955078125,0.3525390625,0.3359375,0.3603515625,0.4189453125,0.4892578125,0.5517578125,0.5732421875,0.552734375,0.515625,0.49609375,0.517578125,0.5791015625,0.6376953125,0.640625,0.5859375,0.5078125,0.4521484375,0.453125,0.509765625,0.576171875,0.6181640625,0.615234375,0.564453125,0.494140625,0.443359375,0.4296875,0.439453125,0.4892578125,0.55859375,0.6103515625,0.6162109375,0.5751953125,0.509765625,0.4296875,0.328125,0.244140625,0.220703125,0.265625,0.345703125,0.419921875,0.5,0.6083984375,0.705078125,0.7431640625,0.7109375,0.6357421875,0.5595703125,0.490234375,0.44140625,0.43359375,0.4697265625,0.52734375,0.5703125,0.5791015625,0.5673828125,0.521484375,0.4638671875,0.4287109375,0.4384765625,0.490234375,0.5595703125,0.6259765625,0.6630859375,0.6484375,0.5859375,0.505859375,0.451171875,0.439453125,0.4345703125,0.412109375,0.3916015625,0.3984375,0.4404296875,0.5078125,0.5791015625,0.6357421875,0.6376953125,0.5830078125,0.505859375,0.451171875,0.453125,0.509765625,0.5693359375,0.587890625,0.5634765625,0.5205078125,0.494140625,0.5107421875,0.5693359375,0.6416015625,0.71484375,0.74609375,0.70703125,0.6103515625,0.5009765625,0.419921875,0.3515625,0.3017578125,0.2900390625,0.3203125,0.3720703125,0.412109375,0.419921875,0.41796875,0.41796875,0.4189453125,0.4208984375,0.421875,0.4208984375,0.419921875,0.431640625,0.4892578125,0.5732421875,0.640625,0.66015625,0.6259765625,0.5595703125,0.4794921875,0.38671875,0.322265625,0.3251953125,0.3935546875,0.4892578125,0.5693359375,0.6357421875,0.6728515625,0.6572265625,0.5927734375,0.509765625,0.453125,0.439453125,0.453125,0.51171875,0.595703125,0.6630859375,0.681640625,0.6455078125,0.5791015625,0.498046875,0.396484375,0.3154296875,0.2978515625,0.3486328125,0.4326171875,0.509765625,0.5791015625,0.63671875,0.6611328125,0.646484375,0.6083984375,0.576171875,0.5693359375,0.5771484375,0.6025390625,0.625,0.619140625,0.576171875,0.509765625,0.439453125,0.36328125,0.2724609375,0.2080078125,0.20703125,0.271484375,0.3623046875,0.439453125,0.5078125,0.55859375,0.572265625,0.5419921875,0.490234375,0.44921875,0.439453125,0.43359375,0.4091796875,0.388671875,0.3955078125,0.439453125,0.5078125,0.5791015625,0.63671875,0.6455078125,0.6015625,0.537109375,0.4931640625,0.5009765625,0.5595703125,0.6337890625,0.7080078125,0.740234375,0.703125,0.607421875,0.4990234375,0.419921875,0.36328125,0.3564453125,0.400390625,0.46484375,0.5068359375,0.498046875,0.439453125,0.3740234375,0.3369140625,0.3486328125,0.4091796875,0.48828125,0.544921875,0.5595703125,0.5673828125,0.5908203125,0.611328125,0.6025390625,0.5576171875,0.490234375,0.419921875,0.3662109375,0.3740234375,0.4443359375,0.5400390625,0.609375,0.6142578125,0.5595703125,0.5,0.4833984375,0.51171875,0.5576171875,0.5859375,0.5693359375,0.509765625,0.439453125,0.3779296875,0.3466796875,0.353515625,0.384765625,0.4140625,0.419921875,0.431640625,0.490234375,0.578125,0.650390625,0.673828125,0.6435546875,0.5791015625,0.5107421875,0.4580078125,0.4423828125,0.466796875,0.5146484375,0.5517578125,0.5595703125,0.5458984375,0.49609375,0.4287109375,0.3837890625,0.384765625,0.4306640625,0.5,0.5673828125,0.611328125,0.6083984375,0.5576171875,0.4853515625,0.43359375,0.419921875,0.421875,0.439453125,0.4736328125,0.5146484375,0.548828125,0.5673828125,0.5693359375,0.564453125,0.5478515625,0.5185546875,0.4853515625,0.45703125,0.4423828125,0.439453125,0.4501953125,0.49609375,0.55859375,0.6005859375,0.5986328125,0.5546875,0.4892578125,0.4326171875,0.421875,0.4609375,0.5185546875,0.556640625,0.546875,0.4892578125,0.421875,0.365234375,0.3408203125,0.3544921875,0.3916015625,0.4228515625,0.4296875,0.439453125,0.484375,0.548828125,0.5947265625,0.595703125,0.5546875,0.4892578125,0.4345703125,0.4365234375,0.4951171875,0.5751953125,0.630859375,0.6279296875,0.5693359375,0.5087890625,0.49609375,0.533203125,0.58984375,0.6279296875,0.6181640625,0.5595703125,0.4912109375,0.44140625,0.431640625,0.4658203125,0.5234375,0.5673828125,0.5791015625,0.5703125,0.52734375,0.4697265625,0.43359375,0.44140625,0.490234375,0.5595703125,0.6357421875,0.712890625,0.7490234375,0.7119140625,0.6142578125,0.5029296875,0.419921875,0.3623046875,0.3603515625,0.4189453125,0.5009765625,0.55859375,0.5576171875,0.5,0.44140625,0.4375,0.4912109375,0.5673828125,0.62109375,0.6181640625,0.5595703125,0.4765625,0.3662109375,0.271484375,0.2373046875,0.2744140625,0.3525390625,0.4296875,0.4990234375,0.55078125,0.5615234375,0.5283203125,0.47265625,0.4296875,0.419921875,0.431640625,0.4833984375,0.5556640625,0.6083984375,0.6162109375,0.5751953125,0.509765625,0.439453125,0.3798828125,0.3505859375,0.359375,0.3935546875,0.423828125,0.4296875,0.431640625,0.4482421875,0.4814453125,0.521484375,0.556640625,0.5751953125,0.5791015625,0.5693359375,0.5283203125,0.4755859375,0.443359375,0.4541015625,0.5029296875,0.5693359375,0.625,0.6259765625,0.572265625,0.49609375,0.4423828125,0.4443359375,0.5,0.5673828125,0.6259765625,0.6533203125,0.640625,0.6025390625,0.5693359375,0.5595703125,0.546875,0.4990234375,0.435546875,0.392578125,0.396484375,0.4423828125,0.509765625,0.5869140625,0.6796875,0.744140625,0.2099609375,0.1689453125,0.1943359375,0.259765625,0.3251953125,0.3876953125,0.4453125,0.4794921875,0.48046875,0.4580078125,0.435546875,0.4287109375,0.443359375,0.5087890625,0.6083984375,0.69921875,0.7421875,0.7275390625,0.673828125,0.6025390625,0.5068359375,0.4228515625,0.390625,0.419921875,0.4853515625,0.55078125,0.6025390625,0.611328125,0.5771484375,0.525390625,0.4912109375,0.5,0.55078125,0.609375,0.6513671875,0.6591796875,0.6337890625,0.59375,0.568359375,0.5703125,0.5693359375,0.533203125,0.4775390625,0.4375,0.439453125,0.4833984375,0.55078125,0.6298828125,0.720703125,0.787109375,0.796875,0.75,0.6796875,0.6220703125,0.5634765625,0.490234375,0.431640625,0.41796875,0.4541015625,0.5146484375,0.5703125,0.62890625,0.7060546875,0.7646484375,0.7685546875,0.712890625,0.62890625,0.55078125,0.4814453125,0.431640625,0.4267578125,0.470703125,0.5419921875,0.599609375,0.6220703125,0.626953125,0.611328125,0.5703125,0.5146484375,0.46484375,0.4345703125,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.419921875,0.3798828125,0.3310546875,0.3056640625,0.3232421875,0.3779296875,0.4482421875,0.5126953125,0.55078125,0.5615234375,0.5595703125,0.5703125,0.6083984375,0.673828125,0.7314453125,0.7333984375,0.673828125,0.5849609375,0.515625,0.50390625,0.55078125,0.6083984375,0.6376953125,0.6181640625,0.55078125,0.46484375,0.400390625,0.376953125,0.3798828125,0.4287109375,0.51171875,0.587890625,0.623046875,0.60546875,0.55078125,0.4794921875,0.376953125,0.27734375,0.22265625,0.2275390625,0.2724609375,0.3251953125,0.390625,0.4990234375,0.6171875,0.6904296875,0.693359375,0.6416015625,0.5703125,0.50390625,0.470703125,0.48828125,0.5498046875,0.6240234375,0.6708984375,0.673828125,0.6513671875,0.5888671875,0.5107421875,0.45703125,0.455078125,0.5009765625,0.5703125,0.634765625,0.6640625,0.638671875,0.56640625,0.4833984375,0.4326171875,0.4287109375,0.4365234375,0.4375,0.4482421875,0.482421875,0.541015625,0.609375,0.673828125,0.7216796875,0.7158203125,0.654296875,0.5703125,0.5087890625,0.5029296875,0.55078125,0.60546875,0.62890625,0.6181640625,0.58984375,0.5693359375,0.5791015625,0.6220703125,0.6728515625,0.7099609375,0.69921875,0.625,0.509765625,0.3994140625,0.3251953125,0.267578125,0.228515625,0.224609375,0.2548828125,0.298828125,0.3271484375,0.3251953125,0.3173828125,0.3154296875,0.3212890625,0.330078125,0.3359375,0.333984375,0.3251953125,0.3310546875,0.39453125,0.5009765625,0.6005859375,0.6494140625,0.6328125,0.5703125,0.4912109375,0.4033203125,0.3486328125,0.3623046875,0.4404296875,0.541015625,0.6220703125,0.6865234375,0.7158203125,0.6865234375,0.60546875,0.5087890625,0.443359375,0.4287109375,0.4443359375,0.515625,0.6240234375,0.71875,0.759765625,0.7373046875,0.673828125,0.591796875,0.4892578125,0.4033203125,0.375,0.4130859375,0.484375,0.55078125,0.611328125,0.658203125,0.677734375,0.666015625,0.6376953125,0.6181640625,0.6220703125,0.634765625,0.6484375,0.6455078125,0.611328125,0.55078125,0.484375,0.4287109375,0.37109375,0.2978515625,0.2431640625,0.23828125,0.2880859375,0.3623046875,0.4287109375,0.48828125,0.533203125,0.544921875,0.5185546875,0.4736328125,0.4375,0.4287109375,0.42578125,0.419921875,0.4287109375,0.4677734375,0.533203125,0.6083984375,0.673828125,0.7216796875,0.71875,0.6611328125,0.58203125,0.5244140625,0.521484375,0.5703125,0.630859375,0.67578125,0.6708984375,0.6015625,0.4921875,0.3896484375,0.3251953125,0.287109375,0.2978515625,0.357421875,0.4326171875,0.4814453125,0.4794921875,0.4287109375,0.37109375,0.337890625,0.349609375,0.408203125,0.4873046875,0.5478515625,0.5703125,0.5810546875,0.5888671875,0.57421875,0.52734375,0.455078125,0.3828125,0.3251953125,0.2900390625,0.318359375,0.4091796875,0.521484375,0.6025390625,0.6171875,0.5703125,0.5185546875,0.5068359375,0.537109375,0.583984375,0.6142578125,0.6025390625,0.55078125,0.4873046875,0.421875,0.3671875,0.337890625,0.33203125,0.33203125,0.3251953125,0.33203125,0.40234375,0.5234375,0.646484375,0.7197265625,0.7236328125,0.673828125,0.6123046875,0.5615234375,0.53515625,0.5380859375,0.55859375,0.57421875,0.5703125,0.5478515625,0.490234375,0.4189453125,0.375,0.3798828125,0.4296875,0.5,0.56640625,0.6044921875,0.5859375,0.5146484375,0.419921875,0.349609375,0.3251953125,0.32421875,0.3583984375,0.4296875,0.517578125,0.5888671875,0.623046875,0.6220703125,0.607421875,0.576171875,0.53125,0.484375,0.44921875,0.431640625,0.4287109375,0.4365234375,0.46875,0.5107421875,0.537109375,0.5322265625,0.4970703125,0.4482421875,0.4052734375,0.3974609375,0.4267578125,0.4697265625,0.498046875,0.490234375,0.4482421875,0.3984375,0.3583984375,0.3408203125,0.3486328125,0.3681640625,0.3818359375,0.376953125,0.3759765625,0.40625,0.4580078125,0.5029296875,0.5166015625,0.494140625,0.4482421875,0.412109375,0.4375,0.5205078125,0.6181640625,0.681640625,0.6806640625,0.6220703125,0.5595703125,0.5361328125,0.5576171875,0.599609375,0.6298828125,0.62109375,0.5703125,0.51171875,0.47265625,0.4765625,0.525390625,0.5966796875,0.65234375,0.673828125,0.6708984375,0.6240234375,0.5498046875,0.48828125,0.470703125,0.50390625,0.5703125,0.64453125,0.708984375,0.720703125,0.65625,0.53515625,0.4111328125,0.3251953125,0.26953125,0.2802734375,0.359375,0.4658203125,0.544921875,0.5556640625,0.5,0.44140625,0.439453125,0.4951171875,0.57421875,0.6298828125,0.6279296875,0.5703125,0.4853515625,0.3681640625,0.2587890625,0.2080078125,0.2314453125,0.3017578125,0.376953125,0.4462890625,0.4921875,0.494140625,0.4501953125,0.384765625,0.3369140625,0.3251953125,0.33984375,0.40234375,0.498046875,0.583984375,0.623046875,0.60546875,0.55078125,0.4892578125,0.4287109375,0.38671875,0.37109375,0.3759765625,0.3828125,0.376953125,0.3740234375,0.40234375,0.466796875,0.548828125,0.623046875,0.6650390625,0.673828125,0.6650390625,0.62890625,0.580078125,0.544921875,0.5419921875,0.5732421875,0.6220703125,0.6611328125,0.654296875,0.5986328125,0.5224609375,0.466796875,0.4599609375,0.5,0.5517578125,0.6044921875,0.63671875,0.638671875,0.6142578125,0.5859375,0.5703125,0.55078125,0.505859375,0.453125,0.4267578125,0.4423828125,0.490234375,0.55078125,0.619140625,0.7001953125,0.7568359375,0.208984375,0.15625,0.1650390625,0.2109375,0.2587890625,0.3076171875,0.3662109375,0.421875,0.4580078125,0.4716796875,0.470703125,0.46875,0.4814453125,0.541015625,0.6357421875,0.7255859375,0.7783203125,0.7783203125,0.740234375,0.6865234375,0.6103515625,0.5380859375,0.501953125,0.5146484375,0.5576171875,0.6044921875,0.642578125,0.6494140625,0.6240234375,0.5849609375,0.5595703125,0.56640625,0.6044921875,0.6435546875,0.65234375,0.6240234375,0.57421875,0.5283203125,0.5126953125,0.5302734375,0.546875,0.5341796875,0.501953125,0.48046875,0.490234375,0.537109375,0.6044921875,0.677734375,0.7451171875,0.779296875,0.7646484375,0.71484375,0.6630859375,0.634765625,0.611328125,0.57421875,0.533203125,0.5048828125,0.4990234375,0.51171875,0.5302734375,0.5595703125,0.625,0.6982421875,0.740234375,0.7294921875,0.6748046875,0.6044921875,0.5322265625,0.4677734375,0.44140625,0.46875,0.5341796875,0.5986328125,0.634765625,0.6572265625,0.65625,0.6240234375,0.568359375,0.51171875,0.4765625,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.45703125,0.40625,0.3369140625,0.2861328125,0.283203125,0.326171875,0.39453125,0.4619140625,0.5146484375,0.5517578125,0.5830078125,0.619140625,0.671875,0.740234375,0.80078125,0.8095703125,0.7587890625,0.673828125,0.5986328125,0.5732421875,0.6044921875,0.646484375,0.666015625,0.640625,0.568359375,0.4765625,0.4013671875,0.3642578125,0.3505859375,0.38671875,0.46875,0.5634765625,0.6279296875,0.6396484375,0.6044921875,0.5498046875,0.4638671875,0.3642578125,0.2841796875,0.244140625,0.2421875,0.2587890625,0.2939453125,0.3818359375,0.4990234375,0.59375,0.626953125,0.595703125,0.5302734375,0.46875,0.45703125,0.5107421875,0.607421875,0.703125,0.7509765625,0.740234375,0.69921875,0.61328125,0.5078125,0.4326171875,0.4189453125,0.4609375,0.5302734375,0.5947265625,0.6240234375,0.6044921875,0.546875,0.484375,0.455078125,0.46875,0.4951171875,0.5205078125,0.5517578125,0.59375,0.642578125,0.693359375,0.740234375,0.7744140625,0.7646484375,0.708984375,0.6357421875,0.580078125,0.5703125,0.6044921875,0.646484375,0.6728515625,0.673828125,0.654296875,0.630859375,0.6220703125,0.634765625,0.6513671875,0.6455078125,0.5986328125,0.5107421875,0.404296875,0.314453125,0.2587890625,0.21875,0.201171875,0.2119140625,0.2421875,0.271484375,0.2783203125,0.2587890625,0.2373046875,0.2333984375,0.248046875,0.2705078125,0.28515625,0.28125,0.2587890625,0.25,0.3046875,0.4140625,0.52734375,0.59375,0.58984375,0.5302734375,0.4521484375,0.37109375,0.328125,0.35546875,0.4462890625,0.552734375,0.634765625,0.701171875,0.7333984375,0.708984375,0.6357421875,0.544921875,0.4833984375,0.46875,0.4853515625,0.5595703125,0.673828125,0.775390625,0.8232421875,0.8037109375,0.740234375,0.6611328125,0.5654296875,0.48828125,0.4638671875,0.4951171875,0.5537109375,0.6044921875,0.6455078125,0.6669921875,0.6630859375,0.640625,0.6181640625,0.615234375,0.634765625,0.6591796875,0.669921875,0.6513671875,0.6044921875,0.544921875,0.4951171875,0.46875,0.4443359375,0.404296875,0.3671875,0.35546875,0.3779296875,0.4228515625,0.46875,0.513671875,0.546875,0.5546875,0.53515625,0.501953125,0.4755859375,0.46875,0.46875,0.4755859375,0.501953125,0.5546875,0.6240234375,0.689453125,0.740234375,0.7734375,0.75390625,0.681640625,0.587890625,0.515625,0.4970703125,0.5302734375,0.5703125,0.58203125,0.5439453125,0.4609375,0.36328125,0.2900390625,0.2587890625,0.251953125,0.2900390625,0.3671875,0.44921875,0.501953125,0.505859375,0.46875,0.4228515625,0.3818359375,0.3671875,0.3916015625,0.443359375,0.49609375,0.5302734375,0.5517578125,0.548828125,0.5078125,0.4326171875,0.349609375,0.287109375,0.2587890625,0.2529296875,0.298828125,0.3896484375,0.48828125,0.5546875,0.5654296875,0.5302734375,0.494140625,0.49609375,0.5380859375,0.5966796875,0.638671875,0.640625,0.6044921875,0.5556640625,0.49609375,0.4306640625,0.369140625,0.3212890625,0.2861328125,0.2587890625,0.2509765625,0.31640625,0.4521484375,0.6103515625,0.728515625,0.76953125,0.740234375,0.6943359375,0.6513671875,0.6162109375,0.5908203125,0.572265625,0.5537109375,0.5302734375,0.4931640625,0.4287109375,0.36328125,0.3369140625,0.3623046875,0.4267578125,0.5,0.5673828125,0.60546875,0.5849609375,0.501953125,0.390625,0.2998046875,0.2587890625,0.24609375,0.287109375,0.3857421875,0.5078125,0.6064453125,0.6484375,0.634765625,0.60546875,0.56640625,0.5244140625,0.4912109375,0.474609375,0.4697265625,0.46875,0.4697265625,0.4716796875,0.4697265625,0.4580078125,0.4375,0.4150390625,0.39453125,0.37890625,0.3759765625,0.38671875,0.40234375,0.4130859375,0.41015625,0.39453125,0.37890625,0.376953125,0.3857421875,0.3974609375,0.3994140625,0.3876953125,0.3642578125,0.341796875,0.3369140625,0.353515625,0.3798828125,0.4033203125,0.408203125,0.39453125,0.3916015625,0.4482421875,0.5517578125,0.654296875,0.708984375,0.6962890625,0.634765625,0.5693359375,0.5302734375,0.52734375,0.548828125,0.5703125,0.56640625,0.5302734375,0.4873046875,0.4638671875,0.482421875,0.546875,0.6318359375,0.703125,0.740234375,0.7509765625,0.703125,0.607421875,0.5107421875,0.45703125,0.46875,0.5302734375,0.603515625,0.6640625,0.6708984375,0.599609375,0.4716796875,0.3447265625,0.2587890625,0.205078125,0.2236328125,0.3173828125,0.44140625,0.53515625,0.5537109375,0.5,0.4404296875,0.43359375,0.48046875,0.548828125,0.595703125,0.5888671875,0.5302734375,0.4462890625,0.33203125,0.228515625,0.1845703125,0.2138671875,0.2880859375,0.3642578125,0.431640625,0.470703125,0.4609375,0.40234375,0.326171875,0.271484375,0.2587890625,0.2734375,0.341796875,0.4521484375,0.5634765625,0.6318359375,0.640625,0.6044921875,0.55859375,0.51171875,0.46875,0.435546875,0.4111328125,0.388671875,0.3642578125,0.3466796875,0.373046875,0.4521484375,0.5634765625,0.6669921875,0.7275390625,0.740234375,0.7353515625,0.7109375,0.673828125,0.6376953125,0.6181640625,0.619140625,0.634765625,0.6474609375,0.6337890625,0.5927734375,0.541015625,0.5,0.4873046875,0.5,0.5224609375,0.5556640625,0.5849609375,0.5966796875,0.583984375,0.5576171875,0.5302734375,0.5,0.462890625,0.44140625,0.453125,0.4970703125,0.5546875,0.6044921875,0.6552734375,0.71484375,0.7568359375,0.2373046875,0.1923828125,0.197265625,0.228515625,0.2587890625,0.291015625,0.3427734375,0.408203125,0.46875,0.509765625,0.52734375,0.5302734375,0.5380859375,0.5791015625,0.6455078125,0.712890625,0.7548828125,0.7607421875,0.740234375,0.7080078125,0.6611328125,0.61328125,0.5849609375,0.5859375,0.6083984375,0.634765625,0.6572265625,0.6611328125,0.646484375,0.6240234375,0.609375,0.61328125,0.634765625,0.650390625,0.623046875,0.5576171875,0.4833984375,0.4345703125,0.4326171875,0.46875,0.5068359375,0.5185546875,0.5107421875,0.5048828125,0.521484375,0.5673828125,0.634765625,0.701171875,0.7392578125,0.7314453125,0.685546875,0.6279296875,0.5966796875,0.6044921875,0.6220703125,0.630859375,0.6181640625,0.5830078125,0.53515625,0.4931640625,0.46875,0.46484375,0.5126953125,0.599609375,0.681640625,0.7197265625,0.6982421875,0.634765625,0.55859375,0.4755859375,0.421875,0.4248046875,0.48046875,0.55078125,0.6044921875,0.6474609375,0.6708984375,0.6630859375,0.6240234375,0.5732421875,0.5380859375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.515625,0.4541015625,0.36328125,0.2900390625,0.265625,0.2978515625,0.3642578125,0.4326171875,0.4892578125,0.533203125,0.5712890625,0.615234375,0.671875,0.740234375,0.8037109375,0.828125,0.7978515625,0.728515625,0.6572265625,0.6220703125,0.634765625,0.6611328125,0.677734375,0.6630859375,0.607421875,0.525390625,0.4482421875,0.39453125,0.359375,0.37109375,0.435546875,0.5302734375,0.6123046875,0.6484375,0.634765625,0.603515625,0.548828125,0.474609375,0.39453125,0.326171875,0.2822265625,0.2587890625,0.255859375,0.30859375,0.4052734375,0.5,0.546875,0.53125,0.46875,0.412109375,0.4189453125,0.5,0.62109375,0.7265625,0.767578125,0.740234375,0.6796875,0.572265625,0.44921875,0.3671875,0.353515625,0.3994140625,0.46875,0.5341796875,0.5673828125,0.560546875,0.52734375,0.4951171875,0.494140625,0.5302734375,0.5751953125,0.6181640625,0.654296875,0.6796875,0.697265625,0.7158203125,0.740234375,0.759765625,0.7509765625,0.712890625,0.662109375,0.6240234375,0.615234375,0.634765625,0.662109375,0.689453125,0.701171875,0.6904296875,0.66015625,0.626953125,0.6044921875,0.58203125,0.541015625,0.48046875,0.408203125,0.33984375,0.2900390625,0.2587890625,0.2392578125,0.2470703125,0.275390625,0.3056640625,0.3173828125,0.2998046875,0.2587890625,0.220703125,0.21484375,0.240234375,0.2783203125,0.3037109375,0.296875,0.2587890625,0.2294921875,0.263671875,0.35546875,0.4609375,0.5283203125,0.52734375,0.46875,0.392578125,0.314453125,0.2783203125,0.314453125,0.4111328125,0.521484375,0.6044921875,0.6728515625,0.7158203125,0.712890625,0.662109375,0.5927734375,0.5419921875,0.5302734375,0.544921875,0.6123046875,0.7119140625,0.7978515625,0.83203125,0.8046875,0.740234375,0.6640625,0.583984375,0.52734375,0.5185546875,0.5537109375,0.6015625,0.634765625,0.6533203125,0.642578125,0.607421875,0.568359375,0.55078125,0.564453125,0.6044921875,0.64453125,0.6572265625,0.634765625,0.587890625,0.541015625,0.51953125,0.5302734375,0.544921875,0.54296875,0.52734375,0.5078125,0.4990234375,0.5068359375,0.5302734375,0.5556640625,0.5751953125,0.580078125,0.568359375,0.548828125,0.533203125,0.5302734375,0.53125,0.541015625,0.568359375,0.61328125,0.6650390625,0.7099609375,0.740234375,0.755859375,0.7265625,0.6513671875,0.5576171875,0.482421875,0.453125,0.46875,0.4873046875,0.4697265625,0.4140625,0.3388671875,0.2763671875,0.2490234375,0.2587890625,0.287109375,0.349609375,0.4326171875,0.5078125,0.548828125,0.5517578125,0.5302734375,0.49609375,0.443359375,0.3916015625,0.3671875,0.3818359375,0.4228515625,0.46875,0.505859375,0.501953125,0.44921875,0.3671875,0.2900390625,0.251953125,0.2587890625,0.2861328125,0.3408203125,0.4111328125,0.4697265625,0.4970703125,0.4921875,0.46875,0.451171875,0.466796875,0.5185546875,0.5849609375,0.63671875,0.6533203125,0.634765625,0.6064453125,0.568359375,0.513671875,0.4443359375,0.3720703125,0.30859375,0.2587890625,0.2294921875,0.2705078125,0.388671875,0.546875,0.6826171875,0.748046875,0.740234375,0.71484375,0.6884765625,0.6572265625,0.6162109375,0.56640625,0.515625,0.46875,0.416015625,0.3447265625,0.2900390625,0.2861328125,0.33984375,0.4228515625,0.5,0.5703125,0.619140625,0.61328125,0.5380859375,0.4228515625,0.318359375,0.2587890625,0.2294921875,0.2646484375,0.3671875,0.4970703125,0.599609375,0.634765625,0.6044921875,0.55859375,0.5166015625,0.4912109375,0.4912109375,0.5078125,0.525390625,0.5302734375,0.5234375,0.4921875,0.44140625,0.3896484375,0.35546875,0.349609375,0.3642578125,0.3798828125,0.3828125,0.3720703125,0.3564453125,0.345703125,0.3486328125,0.3642578125,0.3896484375,0.43359375,0.4775390625,0.4970703125,0.48046875,0.4404296875,0.39453125,0.3466796875,0.298828125,0.26953125,0.2734375,0.3037109375,0.33984375,0.3642578125,0.3984375,0.482421875,0.59375,0.6796875,0.7060546875,0.671875,0.6044921875,0.53515625,0.4814453125,0.4580078125,0.4638671875,0.482421875,0.48828125,0.46875,0.443359375,0.4306640625,0.4521484375,0.5166015625,0.6044921875,0.685546875,0.740234375,0.767578125,0.7265625,0.62109375,0.5,0.4189453125,0.412109375,0.46875,0.5439453125,0.6123046875,0.6328125,0.5771484375,0.462890625,0.34375,0.2587890625,0.205078125,0.2236328125,0.3173828125,0.44140625,0.53515625,0.5537109375,0.5,0.439453125,0.4248046875,0.4580078125,0.5107421875,0.5439453125,0.529296875,0.46875,0.3876953125,0.2841796875,0.201171875,0.181640625,0.2314453125,0.31640625,0.39453125,0.4609375,0.4970703125,0.48046875,0.4140625,0.330078125,0.2724609375,0.2587890625,0.271484375,0.33203125,0.435546875,0.546875,0.6259765625,0.65234375,0.634765625,0.6103515625,0.587890625,0.5634765625,0.5302734375,0.4873046875,0.4404296875,0.39453125,0.3583984375,0.3671875,0.435546875,0.546875,0.6572265625,0.7255859375,0.740234375,0.7392578125,0.734375,0.7177734375,0.6904296875,0.65625,0.6259765625,0.6044921875,0.5859375,0.5703125,0.5576171875,0.5458984375,0.533203125,0.517578125,0.5,0.486328125,0.4951171875,0.5185546875,0.5380859375,0.537109375,0.51171875,0.46875,0.4248046875,0.396484375,0.40625,0.4580078125,0.533203125,0.599609375,0.634765625,0.6640625,0.69921875,0.7236328125,0.28515625,0.2646484375,0.28125,0.3095703125,0.3251953125,0.341796875,0.37890625,0.435546875,0.4951171875,0.5419921875,0.5654296875,0.5703125,0.57421875,0.5927734375,0.623046875,0.6552734375,0.67578125,0.6806640625,0.673828125,0.66015625,0.640625,0.619140625,0.60546875,0.6044921875,0.611328125,0.6220703125,0.6298828125,0.6318359375,0.6259765625,0.6171875,0.611328125,0.61328125,0.6220703125,0.619140625,0.5673828125,0.48046875,0.3994140625,0.359375,0.375,0.4287109375,0.4833984375,0.509765625,0.5107421875,0.5048828125,0.515625,0.5556640625,0.6220703125,0.6826171875,0.697265625,0.65625,0.5859375,0.5263671875,0.513671875,0.55078125,0.60546875,0.6572265625,0.6767578125,0.64453125,0.5703125,0.48828125,0.4287109375,0.3935546875,0.421875,0.5087890625,0.611328125,0.6796875,0.6796875,0.6220703125,0.5419921875,0.4453125,0.3701171875,0.3564453125,0.4052734375,0.4833984375,0.55078125,0.611328125,0.658203125,0.673828125,0.6533203125,0.611328125,0.578125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5556640625,0.490234375,0.3935546875,0.3125,0.283203125,0.3125,0.376953125,0.4443359375,0.490234375,0.5166015625,0.5341796875,0.5595703125,0.6064453125,0.673828125,0.740234375,0.7802734375,0.7744140625,0.7265625,0.6630859375,0.623046875,0.6220703125,0.63671875,0.658203125,0.6669921875,0.642578125,0.5849609375,0.5126953125,0.4482421875,0.3935546875,0.3759765625,0.4111328125,0.4873046875,0.5703125,0.619140625,0.6220703125,0.611328125,0.59765625,0.568359375,0.515625,0.4482421875,0.380859375,0.3251953125,0.2880859375,0.3056640625,0.3720703125,0.4521484375,0.5,0.4892578125,0.4287109375,0.373046875,0.38671875,0.4736328125,0.59375,0.6904296875,0.7177734375,0.673828125,0.59765625,0.4814453125,0.3623046875,0.2939453125,0.2978515625,0.3564453125,0.4287109375,0.4931640625,0.52734375,0.5263671875,0.5078125,0.4970703125,0.5166015625,0.5703125,0.630859375,0.681640625,0.708984375,0.7060546875,0.6845703125,0.6689453125,0.673828125,0.6806640625,0.67578125,0.6591796875,0.63671875,0.619140625,0.6142578125,0.6220703125,0.6376953125,0.666015625,0.6904296875,0.6884765625,0.6552734375,0.603515625,0.55078125,0.498046875,0.439453125,0.38671875,0.353515625,0.3388671875,0.333984375,0.3251953125,0.32421875,0.3525390625,0.3955078125,0.4267578125,0.4228515625,0.3837890625,0.3251953125,0.2744140625,0.265625,0.2998046875,0.3515625,0.3857421875,0.376953125,0.3251953125,0.2783203125,0.2880859375,0.3525390625,0.4365234375,0.4921875,0.48828125,0.4287109375,0.3525390625,0.2724609375,0.2333984375,0.265625,0.359375,0.46875,0.55078125,0.62109375,0.67578125,0.693359375,0.66796875,0.619140625,0.5791015625,0.5703125,0.58203125,0.63671875,0.712890625,0.7705078125,0.7802734375,0.7412109375,0.673828125,0.6005859375,0.5361328125,0.50390625,0.515625,0.5595703125,0.6025390625,0.6220703125,0.6220703125,0.5849609375,0.525390625,0.4765625,0.46484375,0.494140625,0.55078125,0.6044921875,0.6220703125,0.599609375,0.556640625,0.5244140625,0.5283203125,0.5703125,0.6181640625,0.6494140625,0.6513671875,0.625,0.5888671875,0.5673828125,0.5703125,0.580078125,0.587890625,0.58984375,0.5849609375,0.5771484375,0.5712890625,0.5703125,0.5712890625,0.5771484375,0.5927734375,0.6162109375,0.640625,0.6611328125,0.673828125,0.6767578125,0.6484375,0.587890625,0.5146484375,0.4541015625,0.42578125,0.4287109375,0.4296875,0.39453125,0.3359375,0.2822265625,0.26171875,0.2802734375,0.3251953125,0.3828125,0.455078125,0.52734375,0.57421875,0.5888671875,0.5810546875,0.5703125,0.5478515625,0.4873046875,0.408203125,0.349609375,0.337890625,0.37109375,0.4287109375,0.4794921875,0.4814453125,0.4326171875,0.357421875,0.2978515625,0.287109375,0.3251953125,0.37890625,0.4345703125,0.4755859375,0.4853515625,0.46875,0.443359375,0.4287109375,0.4248046875,0.4462890625,0.4951171875,0.5556640625,0.6044921875,0.6259765625,0.6220703125,0.61328125,0.60546875,0.5830078125,0.53515625,0.4658203125,0.390625,0.3251953125,0.275390625,0.279296875,0.3525390625,0.4755859375,0.5966796875,0.6669921875,0.673828125,0.666015625,0.6640625,0.6533203125,0.619140625,0.5615234375,0.4931640625,0.4287109375,0.361328125,0.283203125,0.234375,0.248046875,0.3232421875,0.419921875,0.5,0.57421875,0.640625,0.6611328125,0.6103515625,0.5068359375,0.3994140625,0.3251953125,0.279296875,0.2978515625,0.3828125,0.494140625,0.5791015625,0.5966796875,0.55078125,0.4921875,0.44921875,0.4423828125,0.4736328125,0.5234375,0.5615234375,0.5703125,0.55859375,0.505859375,0.4248046875,0.3515625,0.318359375,0.33203125,0.376953125,0.419921875,0.427734375,0.3984375,0.35546875,0.3271484375,0.3349609375,0.376953125,0.4375,0.5185546875,0.58984375,0.6123046875,0.5791015625,0.5126953125,0.4482421875,0.3798828125,0.296875,0.2314453125,0.216796875,0.2568359375,0.3212890625,0.376953125,0.4404296875,0.541015625,0.642578125,0.697265625,0.6845703125,0.6240234375,0.55078125,0.48046875,0.4189453125,0.3857421875,0.388671875,0.4130859375,0.431640625,0.4287109375,0.416015625,0.40234375,0.4091796875,0.4521484375,0.5263671875,0.6064453125,0.673828125,0.7177734375,0.6904296875,0.59375,0.4736328125,0.38671875,0.373046875,0.4287109375,0.505859375,0.587890625,0.6318359375,0.6044921875,0.5146484375,0.408203125,0.3251953125,0.26953125,0.2802734375,0.359375,0.4658203125,0.544921875,0.5556640625,0.5,0.4384765625,0.4189453125,0.443359375,0.4853515625,0.509765625,0.490234375,0.4287109375,0.349609375,0.2578125,0.1953125,0.2001953125,0.271484375,0.3671875,0.4482421875,0.5146484375,0.552734375,0.5380859375,0.4755859375,0.39453125,0.3388671875,0.3251953125,0.333984375,0.3759765625,0.4501953125,0.5322265625,0.5966796875,0.625,0.6220703125,0.6162109375,0.623046875,0.6279296875,0.6123046875,0.5703125,0.509765625,0.4482421875,0.3935546875,0.3759765625,0.4150390625,0.5009765625,0.5966796875,0.6591796875,0.673828125,0.677734375,0.6923828125,0.703125,0.6923828125,0.6552734375,0.603515625,0.55078125,0.5078125,0.4931640625,0.5107421875,0.5400390625,0.556640625,0.54296875,0.5,0.45703125,0.4462890625,0.466796875,0.49609375,0.5068359375,0.4833984375,0.4287109375,0.3720703125,0.3447265625,0.369140625,0.44140625,0.5322265625,0.5986328125,0.6220703125,0.6328125,0.646484375,0.65625,0.33203125,0.3408203125,0.376953125,0.41015625,0.419921875,0.4248046875,0.4423828125,0.474609375,0.5107421875,0.5400390625,0.556640625,0.5595703125,0.5595703125,0.5634765625,0.5693359375,0.5751953125,0.5791015625,0.580078125,0.5791015625,0.5771484375,0.57421875,0.5703125,0.5673828125,0.56640625,0.5673828125,0.5693359375,0.5703125,0.5712890625,0.5703125,0.568359375,0.5673828125,0.568359375,0.5693359375,0.55859375,0.5029296875,0.421875,0.357421875,0.33984375,0.375,0.439453125,0.5009765625,0.5263671875,0.5146484375,0.4892578125,0.478515625,0.505859375,0.5693359375,0.6279296875,0.6337890625,0.58203125,0.5078125,0.453125,0.4541015625,0.509765625,0.583984375,0.6650390625,0.712890625,0.6943359375,0.615234375,0.517578125,0.439453125,0.3857421875,0.3935546875,0.462890625,0.556640625,0.623046875,0.626953125,0.5693359375,0.48828125,0.3876953125,0.3095703125,0.2939453125,0.3466796875,0.4326171875,0.509765625,0.5791015625,0.6357421875,0.66015625,0.6435546875,0.6025390625,0.568359375,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5458984375,0.4892578125,0.40625,0.341796875,0.326171875,0.36328125,0.4296875,0.4931640625,0.521484375,0.5146484375,0.494140625,0.4873046875,0.515625,0.5791015625,0.6484375,0.69921875,0.708984375,0.6748046875,0.619140625,0.578125,0.5693359375,0.5791015625,0.611328125,0.6455078125,0.6533203125,0.6220703125,0.5595703125,0.4892578125,0.423828125,0.3828125,0.388671875,0.4404296875,0.509765625,0.5595703125,0.5693359375,0.5732421875,0.59375,0.611328125,0.6015625,0.556640625,0.4892578125,0.419921875,0.36328125,0.357421875,0.4033203125,0.4677734375,0.509765625,0.5,0.439453125,0.3828125,0.388671875,0.4580078125,0.5546875,0.626953125,0.6337890625,0.5791015625,0.498046875,0.3876953125,0.2900390625,0.2529296875,0.287109375,0.36328125,0.439453125,0.5029296875,0.5283203125,0.5166015625,0.48828125,0.474609375,0.498046875,0.5595703125,0.6279296875,0.6806640625,0.6962890625,0.671875,0.6240234375,0.5869140625,0.5791015625,0.580078125,0.5791015625,0.576171875,0.572265625,0.5693359375,0.568359375,0.5693359375,0.5791015625,0.6123046875,0.650390625,0.6630859375,0.6357421875,0.5771484375,0.509765625,0.44140625,0.380859375,0.349609375,0.35546875,0.38671875,0.4140625,0.419921875,0.427734375,0.4677734375,0.51953125,0.5498046875,0.5380859375,0.4873046875,0.419921875,0.361328125,0.3505859375,0.3896484375,0.44921875,0.48828125,0.478515625,0.419921875,0.3623046875,0.35546875,0.400390625,0.46484375,0.5087890625,0.4990234375,0.439453125,0.361328125,0.2763671875,0.224609375,0.2431640625,0.3251953125,0.427734375,0.509765625,0.580078125,0.638671875,0.6630859375,0.646484375,0.603515625,0.568359375,0.5595703125,0.5693359375,0.6142578125,0.671875,0.70703125,0.6982421875,0.6484375,0.5791015625,0.5087890625,0.4541015625,0.4375,0.46484375,0.5166015625,0.5576171875,0.5693359375,0.5595703125,0.5126953125,0.4482421875,0.4013671875,0.400390625,0.443359375,0.509765625,0.5693359375,0.5869140625,0.5595703125,0.5146484375,0.486328125,0.5009765625,0.5595703125,0.6259765625,0.6748046875,0.685546875,0.65625,0.60546875,0.5673828125,0.5595703125,0.560546875,0.5625,0.5625,0.5615234375,0.560546875,0.5595703125,0.5595703125,0.5595703125,0.560546875,0.564453125,0.568359375,0.5732421875,0.5771484375,0.5791015625,0.5771484375,0.560546875,0.5283203125,0.490234375,0.4580078125,0.44140625,0.439453125,0.431640625,0.390625,0.3349609375,0.30078125,0.3076171875,0.353515625,0.419921875,0.490234375,0.5576171875,0.6025390625,0.611328125,0.5908203125,0.5673828125,0.5595703125,0.544921875,0.48828125,0.4091796875,0.3486328125,0.3369140625,0.3740234375,0.439453125,0.498046875,0.5068359375,0.46484375,0.400390625,0.3564453125,0.36328125,0.419921875,0.4873046875,0.5400390625,0.55859375,0.5361328125,0.4892578125,0.4501953125,0.439453125,0.44140625,0.45703125,0.486328125,0.5224609375,0.5517578125,0.5673828125,0.5693359375,0.57421875,0.595703125,0.6142578125,0.6044921875,0.5595703125,0.4912109375,0.419921875,0.35546875,0.3251953125,0.3486328125,0.4208984375,0.5087890625,0.5673828125,0.5791015625,0.583984375,0.6064453125,0.626953125,0.62109375,0.578125,0.5107421875,0.439453125,0.36328125,0.27734375,0.224609375,0.2392578125,0.318359375,0.4189453125,0.5,0.5771484375,0.66015625,0.7080078125,0.6865234375,0.6025390625,0.5,0.419921875,0.36328125,0.3642578125,0.4228515625,0.505859375,0.5654296875,0.5654296875,0.509765625,0.4423828125,0.3974609375,0.3955078125,0.4384765625,0.501953125,0.548828125,0.5595703125,0.546875,0.4912109375,0.4111328125,0.3486328125,0.33203125,0.3662109375,0.4296875,0.486328125,0.4970703125,0.458984375,0.400390625,0.3623046875,0.373046875,0.4296875,0.5078125,0.60546875,0.68359375,0.7001953125,0.6494140625,0.5654296875,0.4892578125,0.41015625,0.3125,0.2353515625,0.2197265625,0.271484375,0.3544921875,0.4296875,0.5078125,0.609375,0.693359375,0.7158203125,0.6689453125,0.5869140625,0.509765625,0.4384765625,0.3779296875,0.3505859375,0.36328125,0.4013671875,0.4326171875,0.439453125,0.431640625,0.40625,0.384765625,0.3935546875,0.4384765625,0.5078125,0.5791015625,0.6337890625,0.626953125,0.5546875,0.4580078125,0.388671875,0.3828125,0.439453125,0.5185546875,0.6103515625,0.6728515625,0.66796875,0.5966796875,0.5,0.419921875,0.3623046875,0.3603515625,0.4189453125,0.5009765625,0.55859375,0.5576171875,0.5,0.4384765625,0.419921875,0.447265625,0.4921875,0.5185546875,0.5009765625,0.439453125,0.361328125,0.2734375,0.2177734375,0.23046875,0.30859375,0.408203125,0.4892578125,0.5576171875,0.6015625,0.599609375,0.55078125,0.4814453125,0.431640625,0.419921875,0.423828125,0.4423828125,0.4775390625,0.517578125,0.55078125,0.5673828125,0.5693359375,0.5751953125,0.60546875,0.6396484375,0.6484375,0.619140625,0.5595703125,0.4892578125,0.423828125,0.3828125,0.390625,0.443359375,0.515625,0.5673828125,0.5791015625,0.5869140625,0.6181640625,0.6533203125,0.6640625,0.6357421875,0.5771484375,0.509765625,0.4521484375,0.4404296875,0.4765625,0.5322265625,0.568359375,0.556640625,0.5,0.44140625,0.4248046875,0.451171875,0.494140625,0.5185546875,0.5,0.439453125,0.3740234375,0.337890625,0.3525390625,0.416015625,0.4970703125,0.5546875,0.5693359375,0.5712890625,0.5732421875,0.5751953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.40234375,0.453125,0.521484375,0.5693359375,0.5791015625,0.57421875,0.5546875,0.51953125,0.4794921875,0.4443359375,0.4248046875,0.419921875,0.41796875,0.4189453125,0.421875,0.4267578125,0.4326171875,0.4375,0.439453125,0.44140625,0.4423828125,0.44140625,0.439453125,0.435546875,0.431640625,0.4296875,0.427734375,0.4267578125,0.42578125,0.423828125,0.4228515625,0.421875,0.419921875,0.412109375,0.3876953125,0.3681640625,0.3759765625,0.421875,0.4892578125,0.5595703125,0.61328125,0.6064453125,0.537109375,0.4423828125,0.373046875,0.3662109375,0.419921875,0.478515625,0.5,0.4814453125,0.447265625,0.4296875,0.4501953125,0.509765625,0.5869140625,0.6865234375,0.7666015625,0.7861328125,0.7373046875,0.6552734375,0.5791015625,0.517578125,0.490234375,0.498046875,0.5205078125,0.5283203125,0.5009765625,0.439453125,0.36328125,0.279296875,0.2294921875,0.24609375,0.32421875,0.421875,0.5,0.564453125,0.607421875,0.6064453125,0.5615234375,0.498046875,0.4501953125,0.439453125,0.439453125,0.4384765625,0.4345703125,0.4306640625,0.42578125,0.421875,0.419921875,0.412109375,0.3896484375,0.37109375,0.3828125,0.4296875,0.4990234375,0.5693359375,0.623046875,0.6162109375,0.5478515625,0.455078125,0.388671875,0.3837890625,0.439453125,0.5078125,0.556640625,0.5654296875,0.533203125,0.478515625,0.4384765625,0.4296875,0.443359375,0.494140625,0.564453125,0.615234375,0.6181640625,0.576171875,0.509765625,0.439453125,0.376953125,0.34375,0.3505859375,0.3818359375,0.412109375,0.419921875,0.4326171875,0.490234375,0.5751953125,0.6435546875,0.6640625,0.6318359375,0.5693359375,0.5126953125,0.5048828125,0.544921875,0.6044921875,0.642578125,0.6298828125,0.5693359375,0.505859375,0.4765625,0.482421875,0.5048828125,0.5146484375,0.4892578125,0.4296875,0.3564453125,0.283203125,0.248046875,0.2822265625,0.375,0.48046875,0.5595703125,0.61328125,0.607421875,0.541015625,0.4482421875,0.380859375,0.3759765625,0.4296875,0.49609375,0.5478515625,0.5615234375,0.533203125,0.4814453125,0.4404296875,0.4296875,0.4287109375,0.427734375,0.4287109375,0.4306640625,0.431640625,0.4306640625,0.4296875,0.439453125,0.4892578125,0.55859375,0.6103515625,0.6162109375,0.5751953125,0.509765625,0.443359375,0.400390625,0.4013671875,0.4482421875,0.5126953125,0.5595703125,0.5693359375,0.5771484375,0.6181640625,0.6708984375,0.7021484375,0.6904296875,0.638671875,0.5693359375,0.5087890625,0.498046875,0.5380859375,0.599609375,0.642578125,0.6357421875,0.5791015625,0.5224609375,0.5146484375,0.5556640625,0.6142578125,0.65234375,0.6396484375,0.5791015625,0.498046875,0.3935546875,0.30859375,0.28515625,0.3310546875,0.4130859375,0.4892578125,0.556640625,0.6005859375,0.6005859375,0.5576171875,0.494140625,0.44921875,0.439453125,0.4501953125,0.4892578125,0.5361328125,0.55859375,0.5400390625,0.4873046875,0.419921875,0.353515625,0.306640625,0.2978515625,0.33203125,0.3876953125,0.4296875,0.439453125,0.431640625,0.3994140625,0.3623046875,0.3515625,0.3798828125,0.439453125,0.509765625,0.5654296875,0.5654296875,0.505859375,0.4228515625,0.3642578125,0.36328125,0.419921875,0.48828125,0.5419921875,0.55859375,0.5322265625,0.4814453125,0.4404296875,0.4296875,0.427734375,0.42578125,0.4228515625,0.4208984375,0.419921875,0.419921875,0.419921875,0.419921875,0.4228515625,0.42578125,0.4296875,0.4306640625,0.4306640625,0.4296875,0.431640625,0.447265625,0.4765625,0.5126953125,0.5419921875,0.5576171875,0.5595703125,0.5478515625,0.505859375,0.453125,0.4248046875,0.4384765625,0.4912109375,0.5595703125,0.625,0.6611328125,0.6474609375,0.5859375,0.5078125,0.4521484375,0.439453125,0.4326171875,0.4052734375,0.37890625,0.3798828125,0.419921875,0.486328125,0.5595703125,0.6201171875,0.634765625,0.6015625,0.5478515625,0.51171875,0.5224609375,0.5791015625,0.6455078125,0.6953125,0.7080078125,0.6796875,0.62890625,0.5888671875,0.5791015625,0.576171875,0.5576171875,0.5234375,0.4814453125,0.4453125,0.4248046875,0.419921875,0.431640625,0.490234375,0.578125,0.650390625,0.673828125,0.6435546875,0.5791015625,0.5078125,0.4365234375,0.388671875,0.3759765625,0.392578125,0.4140625,0.419921875,0.4326171875,0.4912109375,0.576171875,0.6435546875,0.6611328125,0.6259765625,0.5595703125,0.478515625,0.37890625,0.3017578125,0.287109375,0.33984375,0.4248046875,0.5,0.5771484375,0.6748046875,0.7529296875,0.76953125,0.7197265625,0.6357421875,0.5595703125,0.4990234375,0.48046875,0.5048828125,0.5478515625,0.57421875,0.5576171875,0.5,0.431640625,0.373046875,0.34375,0.3515625,0.384765625,0.4140625,0.419921875,0.4111328125,0.3857421875,0.36328125,0.3701171875,0.416015625,0.486328125,0.5595703125,0.619140625,0.6298828125,0.58984375,0.529296875,0.4892578125,0.5,0.5595703125,0.6376953125,0.724609375,0.7783203125,0.76171875,0.681640625,0.5810546875,0.5,0.421875,0.3359375,0.2841796875,0.302734375,0.3857421875,0.48828125,0.5693359375,0.6474609375,0.7314453125,0.7802734375,0.759765625,0.6748046875,0.5712890625,0.4892578125,0.421875,0.37890625,0.3818359375,0.431640625,0.5,0.5498046875,0.5595703125,0.544921875,0.486328125,0.4033203125,0.33984375,0.3251953125,0.3623046875,0.4296875,0.4931640625,0.521484375,0.5126953125,0.4873046875,0.4755859375,0.5,0.5595703125,0.6357421875,0.728515625,0.796875,0.8017578125,0.7392578125,0.6484375,0.5693359375,0.5078125,0.4873046875,0.51171875,0.5556640625,0.5830078125,0.5673828125,0.509765625,0.4541015625,0.44921875,0.4990234375,0.5703125,0.619140625,0.615234375,0.5595703125,0.4814453125,0.384765625,0.3095703125,0.294921875,0.34765625,0.4326171875,0.509765625,0.5791015625,0.6376953125,0.6650390625,0.6533203125,0.6171875,0.5859375,0.5791015625,0.5771484375,0.560546875,0.5263671875,0.484375,0.447265625,0.42578125,0.419921875,0.4296875,0.4765625,0.54296875,0.5908203125,0.5947265625,0.5546875,0.4892578125,0.421875,0.3642578125,0.33984375,0.3544921875,0.39453125,0.4296875,0.439453125,0.453125,0.50390625,0.5732421875,0.6220703125,0.623046875,0.578125,0.509765625,0.44921875,0.4375,0.4755859375,0.533203125,0.5712890625,0.5595703125,0.5,0.4404296875,0.4365234375,0.48828125,0.564453125,0.6181640625,0.6162109375,0.5595703125,0.4873046875,0.4189453125,0.373046875,0.365234375,0.38671875,0.412109375,0.419921875,0.4208984375,0.421875,0.4208984375,0.482421875,0.5546875,0.62890625,0.671875,0.673828125,0.65625,0.61328125,0.541015625,0.4580078125,0.3857421875,0.3427734375,0.3251953125,0.31640625,0.3154296875,0.3291015625,0.3564453125,0.388671875,0.4150390625,0.4287109375,0.439453125,0.4462890625,0.4443359375,0.4306640625,0.41015625,0.3896484375,0.376953125,0.3671875,0.359375,0.353515625,0.3486328125,0.34375,0.3359375,0.3251953125,0.314453125,0.306640625,0.3212890625,0.369140625,0.4404296875,0.513671875,0.5703125,0.6064453125,0.5849609375,0.501953125,0.3935546875,0.310546875,0.2890625,0.3251953125,0.373046875,0.408203125,0.4306640625,0.4462890625,0.46875,0.50390625,0.55078125,0.6123046875,0.7001953125,0.7822265625,0.8193359375,0.796875,0.7373046875,0.673828125,0.6162109375,0.578125,0.5576171875,0.544921875,0.5244140625,0.4853515625,0.4287109375,0.3642578125,0.2978515625,0.2646484375,0.287109375,0.3583984375,0.439453125,0.5,0.5478515625,0.576171875,0.5703125,0.529296875,0.4755859375,0.4375,0.4287109375,0.427734375,0.421875,0.40625,0.3828125,0.3583984375,0.337890625,0.3251953125,0.3154296875,0.314453125,0.33984375,0.4013671875,0.484375,0.5634765625,0.6220703125,0.658203125,0.63671875,0.5576171875,0.458984375,0.388671875,0.380859375,0.4287109375,0.486328125,0.5185546875,0.5107421875,0.466796875,0.4111328125,0.376953125,0.376953125,0.400390625,0.46484375,0.55078125,0.6181640625,0.6376953125,0.6083984375,0.55078125,0.486328125,0.4140625,0.3525390625,0.318359375,0.314453125,0.322265625,0.3251953125,0.33984375,0.4052734375,0.5087890625,0.609375,0.666015625,0.6640625,0.6220703125,0.58203125,0.5869140625,0.630859375,0.6826171875,0.70703125,0.6845703125,0.6220703125,0.5537109375,0.5009765625,0.470703125,0.4580078125,0.4482421875,0.4228515625,0.376953125,0.3251953125,0.28125,0.27734375,0.328125,0.4189453125,0.5087890625,0.5703125,0.6083984375,0.591796875,0.5205078125,0.4267578125,0.35546875,0.3388671875,0.376953125,0.4287109375,0.4716796875,0.4892578125,0.4716796875,0.431640625,0.39453125,0.376953125,0.369140625,0.3671875,0.373046875,0.3818359375,0.3876953125,0.3857421875,0.376953125,0.3798828125,0.4287109375,0.51171875,0.587890625,0.623046875,0.60546875,0.55078125,0.494140625,0.46484375,0.4765625,0.525390625,0.5849609375,0.6220703125,0.6220703125,0.62109375,0.6552734375,0.70703125,0.7421875,0.736328125,0.6904296875,0.6220703125,0.560546875,0.5439453125,0.580078125,0.6455078125,0.701171875,0.7119140625,0.673828125,0.6337890625,0.638671875,0.6826171875,0.734375,0.7587890625,0.736328125,0.673828125,0.58984375,0.474609375,0.365234375,0.3095703125,0.32421875,0.3837890625,0.4482421875,0.505859375,0.5419921875,0.5419921875,0.505859375,0.4580078125,0.427734375,0.4287109375,0.443359375,0.46875,0.4853515625,0.4755859375,0.4345703125,0.37890625,0.3251953125,0.2783203125,0.25390625,0.267578125,0.31640625,0.376953125,0.419921875,0.4287109375,0.4228515625,0.40234375,0.3837890625,0.390625,0.4287109375,0.48828125,0.55078125,0.5966796875,0.5791015625,0.494140625,0.3828125,0.2978515625,0.279296875,0.3251953125,0.3876953125,0.4453125,0.4755859375,0.4677734375,0.431640625,0.39453125,0.376953125,0.3662109375,0.3525390625,0.3388671875,0.3291015625,0.3251953125,0.3251953125,0.3251953125,0.328125,0.3408203125,0.3603515625,0.3779296875,0.3876953125,0.3857421875,0.376953125,0.373046875,0.39453125,0.443359375,0.50390625,0.552734375,0.57421875,0.5703125,0.5517578125,0.5078125,0.4609375,0.4384765625,0.4580078125,0.5087890625,0.5703125,0.6259765625,0.654296875,0.6337890625,0.5703125,0.4931640625,0.4404296875,0.4287109375,0.421875,0.3974609375,0.3759765625,0.3828125,0.427734375,0.4970703125,0.5703125,0.634765625,0.6708984375,0.6689453125,0.64453125,0.623046875,0.6318359375,0.673828125,0.72265625,0.759765625,0.76953125,0.748046875,0.7099609375,0.6806640625,0.673828125,0.6669921875,0.630859375,0.560546875,0.4736328125,0.3935546875,0.34375,0.3251953125,0.33203125,0.40234375,0.5234375,0.646484375,0.7197265625,0.7236328125,0.673828125,0.60546875,0.5185546875,0.4296875,0.36328125,0.33203125,0.3251953125,0.3251953125,0.3408203125,0.4130859375,0.5205078125,0.615234375,0.6572265625,0.6337890625,0.5703125,0.4912109375,0.4013671875,0.333984375,0.32421875,0.37109375,0.44140625,0.5,0.5595703125,0.640625,0.7119140625,0.734375,0.701171875,0.634765625,0.5703125,0.515625,0.4921875,0.5029296875,0.5322265625,0.552734375,0.5419921875,0.5,0.447265625,0.39453125,0.3544921875,0.3349609375,0.33203125,0.3330078125,0.3251953125,0.3115234375,0.2919921875,0.291015625,0.3291015625,0.4052734375,0.4931640625,0.5703125,0.6298828125,0.640625,0.6005859375,0.5400390625,0.5,0.509765625,0.5703125,0.6484375,0.7333984375,0.7841796875,0.765625,0.68359375,0.5810546875,0.5,0.4228515625,0.34375,0.3037109375,0.3359375,0.4296875,0.5390625,0.6220703125,0.697265625,0.7705078125,0.7978515625,0.751953125,0.646484375,0.53125,0.4482421875,0.3828125,0.3505859375,0.3720703125,0.439453125,0.5185546875,0.5673828125,0.5703125,0.5458984375,0.47265625,0.3740234375,0.2978515625,0.275390625,0.310546875,0.376953125,0.4443359375,0.490234375,0.5087890625,0.5078125,0.5068359375,0.5263671875,0.5703125,0.630859375,0.7158203125,0.7900390625,0.8125,0.7734375,0.697265625,0.6220703125,0.5576171875,0.5263671875,0.53515625,0.568359375,0.5966796875,0.5927734375,0.55078125,0.5087890625,0.50390625,0.5361328125,0.5849609375,0.6171875,0.6123046875,0.5703125,0.51171875,0.4365234375,0.376953125,0.3671875,0.4130859375,0.4853515625,0.55078125,0.6123046875,0.666015625,0.697265625,0.6982421875,0.6826171875,0.6689453125,0.673828125,0.6767578125,0.6484375,0.580078125,0.48828125,0.4013671875,0.345703125,0.3251953125,0.3251953125,0.3623046875,0.42578125,0.484375,0.509765625,0.4931640625,0.4482421875,0.396484375,0.3505859375,0.3291015625,0.341796875,0.376953125,0.412109375,0.4287109375,0.4521484375,0.515625,0.5986328125,0.6572265625,0.6630859375,0.619140625,0.55078125,0.490234375,0.4736328125,0.501953125,0.548828125,0.5771484375,0.560546875,0.5,0.439453125,0.431640625,0.4794921875,0.5546875,0.6123046875,0.6181640625,0.5703125,0.5029296875,0.4228515625,0.3486328125,0.3056640625,0.298828125,0.3125,0.3251953125,0.333984375,0.3359375,0.330078125,0.5908203125,0.673828125,0.736328125,0.7578125,0.740234375,0.70703125,0.64453125,0.5517578125,0.447265625,0.3544921875,0.2919921875,0.2587890625,0.234375,0.2255859375,0.248046875,0.3037109375,0.375,0.4345703125,0.46875,0.49609375,0.517578125,0.5185546875,0.4912109375,0.443359375,0.3955078125,0.3642578125,0.33984375,0.3232421875,0.314453125,0.30859375,0.2998046875,0.283203125,0.2587890625,0.2373046875,0.2392578125,0.28125,0.35546875,0.439453125,0.5009765625,0.5302734375,0.5390625,0.509765625,0.4384765625,0.3505859375,0.279296875,0.2490234375,0.2587890625,0.283203125,0.3271484375,0.39453125,0.4697265625,0.5361328125,0.5810546875,0.6044921875,0.6328125,0.689453125,0.7568359375,0.8037109375,0.8115234375,0.783203125,0.740234375,0.6962890625,0.65625,0.62109375,0.587890625,0.552734375,0.513671875,0.46875,0.4228515625,0.3828125,0.3671875,0.3857421875,0.4296875,0.4736328125,0.5,0.517578125,0.52734375,0.5244140625,0.5078125,0.4873046875,0.47265625,0.46875,0.4677734375,0.4580078125,0.4306640625,0.3857421875,0.333984375,0.2890625,0.2587890625,0.2392578125,0.2548828125,0.3193359375,0.421875,0.529296875,0.6044921875,0.634765625,0.6435546875,0.6103515625,0.54296875,0.47265625,0.4296875,0.431640625,0.46875,0.5068359375,0.51171875,0.4775390625,0.4189453125,0.3671875,0.3466796875,0.3642578125,0.4013671875,0.4765625,0.568359375,0.640625,0.666015625,0.646484375,0.6044921875,0.552734375,0.4775390625,0.3916015625,0.3193359375,0.2763671875,0.2607421875,0.2587890625,0.2705078125,0.3271484375,0.4248046875,0.5322265625,0.61328125,0.64453125,0.634765625,0.626953125,0.654296875,0.7041015625,0.7421875,0.7431640625,0.7021484375,0.634765625,0.5615234375,0.4873046875,0.427734375,0.39453125,0.3837890625,0.37890625,0.3642578125,0.3466796875,0.341796875,0.361328125,0.4052734375,0.4599609375,0.5048828125,0.5302734375,0.5419921875,0.5244140625,0.4765625,0.4169921875,0.369140625,0.3525390625,0.3642578125,0.3857421875,0.4150390625,0.4384765625,0.44140625,0.4228515625,0.392578125,0.3642578125,0.341796875,0.337890625,0.3525390625,0.375,0.3896484375,0.3857421875,0.3642578125,0.3505859375,0.38671875,0.46875,0.5634765625,0.6279296875,0.6396484375,0.6044921875,0.564453125,0.55078125,0.568359375,0.607421875,0.642578125,0.6533203125,0.634765625,0.619140625,0.6416015625,0.6904296875,0.7314453125,0.73828125,0.701171875,0.634765625,0.5703125,0.5419921875,0.56640625,0.6318359375,0.705078125,0.74609375,0.740234375,0.7314453125,0.759765625,0.8095703125,0.84765625,0.8486328125,0.8076171875,0.740234375,0.65625,0.53515625,0.4111328125,0.3310546875,0.3154296875,0.3486328125,0.39453125,0.4365234375,0.4638671875,0.46875,0.4580078125,0.4462890625,0.4482421875,0.46875,0.4921875,0.4970703125,0.4697265625,0.4111328125,0.3408203125,0.2861328125,0.2587890625,0.2451171875,0.2568359375,0.30078125,0.3642578125,0.4248046875,0.4619140625,0.46875,0.4658203125,0.4560546875,0.4521484375,0.46875,0.5078125,0.5576171875,0.6044921875,0.634765625,0.599609375,0.4970703125,0.3671875,0.2646484375,0.2294921875,0.2587890625,0.3095703125,0.3701171875,0.421875,0.44140625,0.4267578125,0.3935546875,0.3642578125,0.3359375,0.3037109375,0.275390625,0.2587890625,0.2548828125,0.2578125,0.2587890625,0.2646484375,0.29296875,0.3359375,0.375,0.3935546875,0.3876953125,0.3642578125,0.345703125,0.3623046875,0.4140625,0.48046875,0.5322265625,0.5478515625,0.5302734375,0.498046875,0.4521484375,0.4140625,0.4052734375,0.43359375,0.482421875,0.5302734375,0.572265625,0.5986328125,0.5927734375,0.5576171875,0.5107421875,0.4765625,0.46875,0.4609375,0.4267578125,0.38671875,0.3720703125,0.3984375,0.458984375,0.5302734375,0.6015625,0.6689453125,0.71484375,0.732421875,0.7294921875,0.7265625,0.740234375,0.7587890625,0.7724609375,0.775390625,0.767578125,0.75390625,0.7431640625,0.740234375,0.732421875,0.689453125,0.6015625,0.4853515625,0.373046875,0.2958984375,0.2587890625,0.2509765625,0.31640625,0.4521484375,0.6103515625,0.728515625,0.76953125,0.740234375,0.6845703125,0.5927734375,0.4775390625,0.369140625,0.2958984375,0.263671875,0.2587890625,0.275390625,0.349609375,0.4638671875,0.5654296875,0.61328125,0.59375,0.5302734375,0.45703125,0.3896484375,0.35546875,0.3701171875,0.419921875,0.4716796875,0.5,0.525390625,0.5693359375,0.61328125,0.6318359375,0.6162109375,0.576171875,0.5302734375,0.4873046875,0.4619140625,0.4609375,0.48046875,0.50390625,0.5126953125,0.5,0.4794921875,0.451171875,0.4140625,0.369140625,0.3251953125,0.287109375,0.2587890625,0.2294921875,0.201171875,0.2041015625,0.255859375,0.349609375,0.4501953125,0.5302734375,0.58984375,0.6005859375,0.560546875,0.5,0.458984375,0.4697265625,0.5302734375,0.609375,0.69921875,0.7587890625,0.7509765625,0.677734375,0.580078125,0.5,0.4228515625,0.345703125,0.30859375,0.3447265625,0.44140625,0.5517578125,0.634765625,0.708984375,0.7744140625,0.787109375,0.7236328125,0.603515625,0.4794921875,0.39453125,0.3310546875,0.310546875,0.34765625,0.4248046875,0.50390625,0.5419921875,0.5302734375,0.490234375,0.4091796875,0.3134765625,0.2509765625,0.2470703125,0.294921875,0.3642578125,0.4345703125,0.49609375,0.533203125,0.5380859375,0.525390625,0.517578125,0.5302734375,0.560546875,0.62890625,0.708984375,0.759765625,0.755859375,0.705078125,0.634765625,0.5673828125,0.5224609375,0.5166015625,0.546875,0.58984375,0.6142578125,0.6044921875,0.5869140625,0.5751953125,0.5693359375,0.5654296875,0.5595703125,0.5478515625,0.5302734375,0.5068359375,0.4755859375,0.455078125,0.4638671875,0.5029296875,0.5556640625,0.6044921875,0.6484375,0.6826171875,0.701171875,0.70703125,0.7080078125,0.7177734375,0.740234375,0.7578125,0.734375,0.6513671875,0.5244140625,0.392578125,0.2998046875,0.2587890625,0.2392578125,0.2470703125,0.287109375,0.341796875,0.3876953125,0.40625,0.39453125,0.3740234375,0.353515625,0.34765625,0.3642578125,0.3994140625,0.439453125,0.46875,0.5078125,0.5849609375,0.673828125,0.728515625,0.7265625,0.6748046875,0.6044921875,0.5419921875,0.5185546875,0.53515625,0.568359375,0.5849609375,0.5615234375,0.5,0.4365234375,0.4140625,0.44140625,0.4990234375,0.55078125,0.5634765625,0.5302734375,0.4755859375,0.39453125,0.3056640625,0.2421875,0.220703125,0.2333984375,0.2587890625,0.28125,0.28515625,0.2705078125,0.6904296875,0.7646484375,0.7958984375,0.78125,0.740234375,0.69140625,0.6259765625,0.5439453125,0.455078125,0.373046875,0.3076171875,0.2587890625,0.21484375,0.1884765625,0.20703125,0.2783203125,0.380859375,0.4736328125,0.5302734375,0.5771484375,0.6201171875,0.6318359375,0.5966796875,0.5234375,0.4482421875,0.39453125,0.353515625,0.330078125,0.3251953125,0.328125,0.3232421875,0.2998046875,0.2587890625,0.22265625,0.2255859375,0.2783203125,0.361328125,0.4384765625,0.4765625,0.46875,0.4482421875,0.419921875,0.3837890625,0.3447265625,0.3076171875,0.279296875,0.2587890625,0.251953125,0.294921875,0.3896484375,0.5048828125,0.599609375,0.6416015625,0.634765625,0.623046875,0.63671875,0.6767578125,0.7236328125,0.755859375,0.7607421875,0.740234375,0.712890625,0.68359375,0.6513671875,0.6181640625,0.5859375,0.556640625,0.5302734375,0.505859375,0.494140625,0.4970703125,0.5078125,0.517578125,0.5146484375,0.5,0.4814453125,0.4716796875,0.474609375,0.4912109375,0.51171875,0.5263671875,0.5302734375,0.5302734375,0.5234375,0.4970703125,0.4443359375,0.375,0.3095703125,0.2587890625,0.2255859375,0.2451171875,0.328125,0.447265625,0.5546875,0.6083984375,0.6044921875,0.5810546875,0.54296875,0.5029296875,0.4794921875,0.482421875,0.5029296875,0.5302734375,0.5458984375,0.5224609375,0.4638671875,0.3974609375,0.35546875,0.357421875,0.39453125,0.4482421875,0.525390625,0.607421875,0.6630859375,0.677734375,0.6611328125,0.634765625,0.6005859375,0.53515625,0.447265625,0.3583984375,0.2939453125,0.263671875,0.2587890625,0.2646484375,0.294921875,0.3583984375,0.44140625,0.5224609375,0.578125,0.6044921875,0.6328125,0.6884765625,0.7451171875,0.767578125,0.740234375,0.6767578125,0.6044921875,0.52734375,0.4384765625,0.3642578125,0.3310546875,0.3408203125,0.37109375,0.39453125,0.4169921875,0.451171875,0.4853515625,0.5048828125,0.50390625,0.48828125,0.46875,0.451171875,0.439453125,0.43359375,0.4296875,0.423828125,0.412109375,0.39453125,0.3818359375,0.39453125,0.4248046875,0.4521484375,0.4580078125,0.435546875,0.39453125,0.3564453125,0.349609375,0.375,0.4140625,0.439453125,0.4326171875,0.39453125,0.359375,0.37109375,0.435546875,0.5302734375,0.6123046875,0.6484375,0.634765625,0.615234375,0.6181640625,0.640625,0.6630859375,0.6669921875,0.6455078125,0.6044921875,0.5703125,0.5791015625,0.6240234375,0.673828125,0.6943359375,0.66796875,0.6044921875,0.53515625,0.48828125,0.4912109375,0.5498046875,0.63671875,0.708984375,0.740234375,0.7685546875,0.82421875,0.880859375,0.9033203125,0.8759765625,0.8125,0.740234375,0.658203125,0.544921875,0.427734375,0.34765625,0.322265625,0.3369140625,0.3642578125,0.3876953125,0.400390625,0.408203125,0.421875,0.447265625,0.4853515625,0.5302734375,0.5654296875,0.5546875,0.48828125,0.3896484375,0.298828125,0.2529296875,0.2587890625,0.283203125,0.330078125,0.39453125,0.4580078125,0.50390625,0.5263671875,0.5302734375,0.5283203125,0.5263671875,0.5302734375,0.546875,0.5751953125,0.6064453125,0.634765625,0.6484375,0.6064453125,0.5078125,0.3857421875,0.287109375,0.24609375,0.2587890625,0.2939453125,0.3564453125,0.4248046875,0.46875,0.470703125,0.439453125,0.39453125,0.3466796875,0.2978515625,0.2587890625,0.2421875,0.24609375,0.255859375,0.2587890625,0.2685546875,0.3115234375,0.375,0.4306640625,0.4521484375,0.435546875,0.39453125,0.3583984375,0.3603515625,0.40234375,0.4609375,0.5029296875,0.5048828125,0.46875,0.421875,0.373046875,0.3447265625,0.3525390625,0.3916015625,0.4375,0.46875,0.49609375,0.5224609375,0.541015625,0.5458984375,0.5400390625,0.5322265625,0.5302734375,0.5185546875,0.4697265625,0.40234375,0.3564453125,0.35546875,0.400390625,0.46875,0.5478515625,0.64453125,0.732421875,0.78125,0.78515625,0.76171875,0.740234375,0.7216796875,0.7080078125,0.7041015625,0.7119140625,0.7265625,0.7373046875,0.740234375,0.7353515625,0.703125,0.6298828125,0.521484375,0.40625,0.314453125,0.2587890625,0.2294921875,0.2705078125,0.388671875,0.546875,0.6826171875,0.748046875,0.740234375,0.703125,0.6259765625,0.513671875,0.3974609375,0.3095703125,0.2666015625,0.2587890625,0.2734375,0.3408203125,0.44140625,0.52734375,0.560546875,0.5341796875,0.46875,0.40234375,0.365234375,0.373046875,0.4189453125,0.4755859375,0.5068359375,0.5,0.484375,0.4814453125,0.4912109375,0.501953125,0.5048828125,0.4931640625,0.46875,0.44140625,0.4150390625,0.40234375,0.4140625,0.443359375,0.4765625,0.5,0.5185546875,0.529296875,0.513671875,0.4609375,0.384765625,0.3115234375,0.2587890625,0.2099609375,0.16015625,0.1455078125,0.189453125,0.2841796875,0.388671875,0.46875,0.529296875,0.5400390625,0.5,0.4384765625,0.3984375,0.4091796875,0.46875,0.5498046875,0.6474609375,0.720703125,0.728515625,0.6689453125,0.578125,0.5,0.421875,0.3408203125,0.2978515625,0.3251953125,0.416015625,0.5224609375,0.6044921875,0.6787109375,0.744140625,0.7568359375,0.693359375,0.572265625,0.44921875,0.3642578125,0.302734375,0.2900390625,0.333984375,0.4111328125,0.4794921875,0.5009765625,0.46875,0.4130859375,0.3291015625,0.2509765625,0.2197265625,0.25,0.3203125,0.39453125,0.46875,0.541015625,0.5849609375,0.5830078125,0.5419921875,0.49609375,0.46875,0.4638671875,0.5078125,0.587890625,0.662109375,0.693359375,0.6689453125,0.6044921875,0.533203125,0.4736328125,0.4521484375,0.482421875,0.546875,0.60546875,0.634765625,0.646484375,0.6298828125,0.58203125,0.5224609375,0.474609375,0.45703125,0.46875,0.4873046875,0.5068359375,0.52734375,0.5517578125,0.580078125,0.6083984375,0.634765625,0.6572265625,0.662109375,0.6572265625,0.654296875,0.6669921875,0.697265625,0.740234375,0.779296875,0.7802734375,0.71484375,0.587890625,0.4384765625,0.3203125,0.2587890625,0.21484375,0.18359375,0.1845703125,0.2236328125,0.2841796875,0.3369140625,0.3642578125,0.3798828125,0.3876953125,0.39453125,0.4111328125,0.4423828125,0.484375,0.5302734375,0.5859375,0.673828125,0.7587890625,0.7978515625,0.7744140625,0.708984375,0.634765625,0.572265625,0.544921875,0.5546875,0.580078125,0.58984375,0.5625,0.5,0.4326171875,0.3916015625,0.3916015625,0.4248046875,0.466796875,0.4853515625,0.46875,0.4326171875,0.361328125,0.275390625,0.2119140625,0.193359375,0.2158203125,0.2587890625,0.296875,0.3037109375,0.2783203125,0.75,0.7998046875,0.7890625,0.736328125,0.673828125,0.6142578125,0.5625,0.51953125,0.4794921875,0.4365234375,0.384765625,0.3251953125,0.2626953125,0.2119140625,0.2099609375,0.2744140625,0.3857421875,0.49609375,0.5703125,0.6357421875,0.701171875,0.73046875,0.6982421875,0.6142578125,0.5185546875,0.4482421875,0.3935546875,0.3701171875,0.376953125,0.396484375,0.4033203125,0.3798828125,0.3251953125,0.275390625,0.2724609375,0.322265625,0.3974609375,0.45703125,0.4677734375,0.4287109375,0.3837890625,0.3642578125,0.369140625,0.384765625,0.390625,0.3701171875,0.3251953125,0.2900390625,0.318359375,0.4130859375,0.5341796875,0.62890625,0.6572265625,0.6220703125,0.5751953125,0.5498046875,0.5595703125,0.599609375,0.646484375,0.6748046875,0.673828125,0.662109375,0.6484375,0.630859375,0.6123046875,0.5947265625,0.5810546875,0.5703125,0.5654296875,0.5791015625,0.599609375,0.6064453125,0.5888671875,0.548828125,0.5,0.451171875,0.4228515625,0.4287109375,0.4697265625,0.5234375,0.5615234375,0.5703125,0.5732421875,0.5791015625,0.5703125,0.53125,0.4658203125,0.390625,0.3251953125,0.2783203125,0.2900390625,0.3671875,0.474609375,0.5615234375,0.5869140625,0.55078125,0.5009765625,0.4599609375,0.4462890625,0.46875,0.5126953125,0.552734375,0.5703125,0.568359375,0.525390625,0.455078125,0.392578125,0.3681640625,0.392578125,0.4482421875,0.5126953125,0.5849609375,0.642578125,0.6669921875,0.658203125,0.63671875,0.6220703125,0.6044921875,0.5615234375,0.4931640625,0.4189453125,0.361328125,0.3310546875,0.3251953125,0.32421875,0.3212890625,0.333984375,0.3720703125,0.431640625,0.49609375,0.55078125,0.6103515625,0.689453125,0.7529296875,0.76171875,0.7099609375,0.6279296875,0.55078125,0.4716796875,0.376953125,0.302734375,0.2841796875,0.32421875,0.390625,0.4482421875,0.50390625,0.568359375,0.6123046875,0.6064453125,0.5556640625,0.486328125,0.4287109375,0.38671875,0.3818359375,0.4140625,0.462890625,0.4951171875,0.490234375,0.4482421875,0.4072265625,0.4052734375,0.44140625,0.4892578125,0.515625,0.5,0.4482421875,0.396484375,0.3876953125,0.421875,0.4736328125,0.5078125,0.4990234375,0.4482421875,0.3935546875,0.3759765625,0.4111328125,0.4873046875,0.5703125,0.619140625,0.6220703125,0.6181640625,0.6376953125,0.666015625,0.677734375,0.658203125,0.611328125,0.55078125,0.501953125,0.498046875,0.5400390625,0.5966796875,0.62890625,0.6123046875,0.55078125,0.4775390625,0.41015625,0.3857421875,0.4267578125,0.517578125,0.611328125,0.673828125,0.7333984375,0.8115234375,0.875,0.8837890625,0.83203125,0.75,0.673828125,0.595703125,0.5009765625,0.4140625,0.361328125,0.3505859375,0.3642578125,0.376953125,0.3837890625,0.37890625,0.3779296875,0.3984375,0.4453125,0.5068359375,0.5703125,0.6171875,0.6025390625,0.521484375,0.4091796875,0.318359375,0.2900390625,0.3251953125,0.380859375,0.4482421875,0.51171875,0.5546875,0.5712890625,0.5712890625,0.5703125,0.5693359375,0.5703125,0.57421875,0.5830078125,0.5966796875,0.6103515625,0.6220703125,0.623046875,0.5888671875,0.517578125,0.4296875,0.3583984375,0.32421875,0.3251953125,0.3466796875,0.4052734375,0.48046875,0.5341796875,0.5419921875,0.505859375,0.4482421875,0.3857421875,0.3251953125,0.287109375,0.2802734375,0.298828125,0.3203125,0.3251953125,0.3369140625,0.3876953125,0.4609375,0.5185546875,0.5341796875,0.5048828125,0.4482421875,0.396484375,0.384765625,0.4150390625,0.4619140625,0.4921875,0.48046875,0.4287109375,0.3681640625,0.3173828125,0.2978515625,0.3193359375,0.3671875,0.41015625,0.4287109375,0.4423828125,0.466796875,0.5,0.533203125,0.556640625,0.568359375,0.5703125,0.556640625,0.498046875,0.4130859375,0.345703125,0.3271484375,0.3623046875,0.4287109375,0.51171875,0.623046875,0.7294921875,0.78515625,0.7763671875,0.7275390625,0.673828125,0.6240234375,0.5869140625,0.5771484375,0.5986328125,0.63671875,0.666015625,0.673828125,0.673828125,0.6669921875,0.6357421875,0.5693359375,0.48046875,0.3935546875,0.3251953125,0.275390625,0.279296875,0.3525390625,0.4755859375,0.5966796875,0.6669921875,0.673828125,0.6552734375,0.60546875,0.525390625,0.4384765625,0.3681640625,0.33203125,0.3251953125,0.337890625,0.392578125,0.46875,0.5263671875,0.5361328125,0.49609375,0.4287109375,0.3681640625,0.353515625,0.39453125,0.46484375,0.5244140625,0.537109375,0.5,0.4501953125,0.41015625,0.392578125,0.3994140625,0.419921875,0.43359375,0.4287109375,0.4130859375,0.384765625,0.3603515625,0.3623046875,0.39453125,0.447265625,0.5,0.5537109375,0.60546875,0.6220703125,0.580078125,0.4921875,0.396484375,0.3251953125,0.2587890625,0.1845703125,0.142578125,0.166015625,0.248046875,0.3486328125,0.4287109375,0.4892578125,0.5,0.458984375,0.3984375,0.3583984375,0.369140625,0.4287109375,0.5107421875,0.61328125,0.6953125,0.7138671875,0.6630859375,0.5771484375,0.5,0.4208984375,0.3330078125,0.2783203125,0.2919921875,0.3701171875,0.470703125,0.55078125,0.626953125,0.7001953125,0.7275390625,0.681640625,0.576171875,0.4609375,0.376953125,0.3173828125,0.306640625,0.3505859375,0.4208984375,0.474609375,0.4775390625,0.4287109375,0.359375,0.275390625,0.21484375,0.2158203125,0.2783203125,0.369140625,0.4482421875,0.5244140625,0.6044921875,0.6513671875,0.6376953125,0.5703125,0.4892578125,0.4287109375,0.392578125,0.4111328125,0.482421875,0.5673828125,0.619140625,0.611328125,0.55078125,0.4755859375,0.40234375,0.3671875,0.39453125,0.47265625,0.560546875,0.6220703125,0.66015625,0.6435546875,0.572265625,0.478515625,0.4072265625,0.390625,0.4287109375,0.4814453125,0.5361328125,0.5810546875,0.60546875,0.61328125,0.6142578125,0.6220703125,0.6240234375,0.6025390625,0.5703125,0.5537109375,0.5693359375,0.6142578125,0.673828125,0.7333984375,0.771484375,0.7509765625,0.6591796875,0.5244140625,0.40234375,0.3251953125,0.259765625,0.1923828125,0.154296875,0.171875,0.2392578125,0.318359375,0.376953125,0.4228515625,0.4482421875,0.4541015625,0.4580078125,0.474609375,0.5126953125,0.5703125,0.640625,0.7333984375,0.8095703125,0.828125,0.7802734375,0.69921875,0.6220703125,0.55859375,0.533203125,0.546875,0.5751953125,0.587890625,0.5625,0.5,0.4296875,0.375,0.353515625,0.369140625,0.4052734375,0.4306640625,0.4287109375,0.408203125,0.3525390625,0.28125,0.232421875,0.228515625,0.2666015625,0.3251953125,0.376953125,0.3857421875,0.3515625,0.7607421875,0.7822265625,0.736328125,0.6552734375,0.5791015625,0.517578125,0.4873046875,0.4912109375,0.5078125,0.51171875,0.4814453125,0.419921875,0.3447265625,0.2705078125,0.236328125,0.2734375,0.369140625,0.478515625,0.5595703125,0.6357421875,0.71875,0.7685546875,0.75,0.669921875,0.5693359375,0.4892578125,0.4296875,0.41015625,0.4345703125,0.474609375,0.4990234375,0.4794921875,0.419921875,0.361328125,0.3525390625,0.3955078125,0.458984375,0.5029296875,0.49609375,0.439453125,0.3818359375,0.369140625,0.4033203125,0.4560546875,0.490234375,0.4775390625,0.419921875,0.3662109375,0.3740234375,0.4462890625,0.54296875,0.615234375,0.623046875,0.5693359375,0.5029296875,0.455078125,0.4462890625,0.478515625,0.53125,0.5712890625,0.5791015625,0.5771484375,0.5751953125,0.5712890625,0.5673828125,0.5634765625,0.5615234375,0.5595703125,0.5654296875,0.5966796875,0.634765625,0.6484375,0.623046875,0.5673828125,0.5,0.4345703125,0.3916015625,0.392578125,0.4375,0.5009765625,0.548828125,0.5595703125,0.5654296875,0.58984375,0.6103515625,0.603515625,0.5595703125,0.4912109375,0.419921875,0.36328125,0.3623046875,0.4208984375,0.5029296875,0.5625,0.564453125,0.509765625,0.4443359375,0.3994140625,0.396484375,0.4375,0.5,0.546875,0.5595703125,0.5498046875,0.501953125,0.4345703125,0.3857421875,0.3818359375,0.4228515625,0.4892578125,0.5595703125,0.6220703125,0.6533203125,0.6455078125,0.611328125,0.5791015625,0.5693359375,0.564453125,0.544921875,0.5107421875,0.47265625,0.4404296875,0.4228515625,0.419921875,0.412109375,0.3837890625,0.3525390625,0.34765625,0.3798828125,0.4404296875,0.509765625,0.5859375,0.677734375,0.744140625,0.7451171875,0.6806640625,0.5888671875,0.509765625,0.4296875,0.3349609375,0.2666015625,0.2626953125,0.32421875,0.4130859375,0.4892578125,0.564453125,0.6484375,0.7001953125,0.6875,0.6123046875,0.5166015625,0.439453125,0.3837890625,0.3798828125,0.4287109375,0.5,0.5498046875,0.544921875,0.4892578125,0.4326171875,0.423828125,0.462890625,0.521484375,0.5595703125,0.5478515625,0.4892578125,0.4306640625,0.4208984375,0.4599609375,0.51953125,0.55859375,0.5478515625,0.4892578125,0.423828125,0.3828125,0.388671875,0.4404296875,0.509765625,0.5595703125,0.5693359375,0.576171875,0.6083984375,0.646484375,0.6611328125,0.63671875,0.5791015625,0.509765625,0.451171875,0.44140625,0.482421875,0.5419921875,0.5810546875,0.5693359375,0.509765625,0.431640625,0.34765625,0.2998046875,0.3193359375,0.4013671875,0.5009765625,0.5791015625,0.6552734375,0.7470703125,0.8134765625,0.814453125,0.7509765625,0.658203125,0.5791015625,0.505859375,0.4345703125,0.38671875,0.376953125,0.396484375,0.421875,0.4296875,0.4248046875,0.400390625,0.3779296875,0.3818359375,0.4228515625,0.48828125,0.5595703125,0.6142578125,0.609375,0.5400390625,0.4443359375,0.3740234375,0.3662109375,0.419921875,0.4892578125,0.556640625,0.6005859375,0.6083984375,0.5888671875,0.5654296875,0.5595703125,0.5595703125,0.5595703125,0.560546875,0.5625,0.5654296875,0.5673828125,0.5693359375,0.5673828125,0.548828125,0.5146484375,0.4736328125,0.439453125,0.421875,0.419921875,0.4326171875,0.4833984375,0.55078125,0.5986328125,0.599609375,0.556640625,0.4892578125,0.419921875,0.3603515625,0.33203125,0.3427734375,0.37890625,0.412109375,0.419921875,0.4306640625,0.48046875,0.5478515625,0.595703125,0.5986328125,0.5556640625,0.4892578125,0.4296875,0.4130859375,0.44140625,0.4873046875,0.515625,0.4990234375,0.439453125,0.37109375,0.3193359375,0.3046875,0.333984375,0.38671875,0.4287109375,0.439453125,0.4443359375,0.4599609375,0.4873046875,0.517578125,0.54296875,0.556640625,0.5595703125,0.546875,0.490234375,0.41015625,0.3486328125,0.3349609375,0.373046875,0.439453125,0.5224609375,0.6318359375,0.7265625,0.76171875,0.7275390625,0.65234375,0.5791015625,0.5126953125,0.462890625,0.4501953125,0.4794921875,0.5302734375,0.5693359375,0.5791015625,0.5849609375,0.6064453125,0.623046875,0.6103515625,0.5625,0.4912109375,0.419921875,0.35546875,0.3251953125,0.3486328125,0.4208984375,0.5087890625,0.5673828125,0.5791015625,0.57421875,0.5537109375,0.517578125,0.4755859375,0.44140625,0.4228515625,0.419921875,0.4306640625,0.474609375,0.5322265625,0.5673828125,0.55859375,0.5087890625,0.439453125,0.380859375,0.375,0.4267578125,0.501953125,0.5556640625,0.5546875,0.5,0.431640625,0.3759765625,0.3505859375,0.3642578125,0.40234375,0.43359375,0.439453125,0.4296875,0.396484375,0.3583984375,0.345703125,0.373046875,0.431640625,0.5,0.57421875,0.6552734375,0.7021484375,0.681640625,0.599609375,0.4990234375,0.419921875,0.341796875,0.251953125,0.189453125,0.1943359375,0.2646484375,0.359375,0.439453125,0.5,0.509765625,0.4697265625,0.4091796875,0.369140625,0.3798828125,0.439453125,0.5205078125,0.6220703125,0.7021484375,0.7177734375,0.6650390625,0.578125,0.5,0.419921875,0.3271484375,0.2626953125,0.265625,0.333984375,0.4296875,0.509765625,0.5869140625,0.671875,0.720703125,0.69921875,0.615234375,0.51171875,0.4296875,0.3701171875,0.359375,0.400390625,0.462890625,0.505859375,0.498046875,0.439453125,0.3623046875,0.2763671875,0.220703125,0.2333984375,0.3095703125,0.4091796875,0.4892578125,0.5673828125,0.6533203125,0.70703125,0.6923828125,0.615234375,0.517578125,0.439453125,0.384765625,0.384765625,0.44140625,0.51953125,0.572265625,0.568359375,0.509765625,0.431640625,0.3466796875,0.2958984375,0.3134765625,0.392578125,0.4912109375,0.5693359375,0.623046875,0.6181640625,0.55078125,0.4580078125,0.3916015625,0.3857421875,0.439453125,0.5087890625,0.57421875,0.6142578125,0.619140625,0.5966796875,0.57421875,0.5693359375,0.5615234375,0.5234375,0.4736328125,0.4453125,0.4599609375,0.5107421875,0.5791015625,0.6533203125,0.7255859375,0.755859375,0.7138671875,0.6123046875,0.5009765625,0.419921875,0.3427734375,0.2529296875,0.19140625,0.1943359375,0.26171875,0.353515625,0.4296875,0.4892578125,0.5146484375,0.50390625,0.4794921875,0.470703125,0.498046875,0.5595703125,0.6376953125,0.7314453125,0.80078125,0.8037109375,0.740234375,0.6484375,0.5693359375,0.5078125,0.48828125,0.513671875,0.5556640625,0.580078125,0.560546875,0.5,0.4287109375,0.3701171875,0.3447265625,0.359375,0.3994140625,0.4326171875,0.439453125,0.427734375,0.3837890625,0.326171875,0.2919921875,0.3017578125,0.3515625,0.419921875,0.478515625,0.48828125,0.44921875,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.7099609375,0.689453125,0.6083984375,0.5078125,0.4296875,0.3759765625,0.3828125,0.451171875,0.5439453125,0.6103515625,0.615234375,0.5595703125,0.478515625,0.3720703125,0.2802734375,0.2490234375,0.287109375,0.3642578125,0.439453125,0.51953125,0.6201171875,0.7001953125,0.71875,0.6689453125,0.5859375,0.509765625,0.453125,0.451171875,0.505859375,0.5830078125,0.6376953125,0.6357421875,0.5791015625,0.5205078125,0.505859375,0.5400390625,0.5927734375,0.6279296875,0.6162109375,0.5595703125,0.5029296875,0.4931640625,0.5341796875,0.5947265625,0.634765625,0.6259765625,0.5693359375,0.509765625,0.484375,0.4951171875,0.51953125,0.5283203125,0.5009765625,0.439453125,0.37109375,0.3173828125,0.3017578125,0.3271484375,0.3779296875,0.4189453125,0.4296875,0.431640625,0.435546875,0.439453125,0.44140625,0.4423828125,0.44140625,0.439453125,0.44921875,0.49609375,0.5595703125,0.6044921875,0.603515625,0.5576171875,0.4892578125,0.4189453125,0.3603515625,0.3359375,0.3525390625,0.3955078125,0.4306640625,0.439453125,0.4521484375,0.5087890625,0.5908203125,0.6572265625,0.67578125,0.642578125,0.5791015625,0.5205078125,0.5029296875,0.52734375,0.5673828125,0.58984375,0.5693359375,0.509765625,0.439453125,0.3798828125,0.3505859375,0.359375,0.3935546875,0.423828125,0.4296875,0.419921875,0.3876953125,0.353515625,0.345703125,0.376953125,0.439453125,0.509765625,0.576171875,0.619140625,0.6162109375,0.568359375,0.5,0.451171875,0.439453125,0.443359375,0.4599609375,0.4912109375,0.5283203125,0.55859375,0.576171875,0.5791015625,0.568359375,0.5185546875,0.44921875,0.3994140625,0.39453125,0.4345703125,0.5,0.576171875,0.66796875,0.7353515625,0.73828125,0.6767578125,0.5869140625,0.509765625,0.4306640625,0.3369140625,0.267578125,0.26171875,0.322265625,0.412109375,0.4892578125,0.5693359375,0.671875,0.7578125,0.78125,0.736328125,0.6552734375,0.5791015625,0.5185546875,0.49609375,0.5146484375,0.548828125,0.568359375,0.548828125,0.4892578125,0.43359375,0.42578125,0.46875,0.53125,0.5712890625,0.5595703125,0.5,0.439453125,0.4296875,0.470703125,0.533203125,0.576171875,0.5673828125,0.509765625,0.439453125,0.376953125,0.34375,0.3505859375,0.3818359375,0.412109375,0.419921875,0.431640625,0.4814453125,0.55078125,0.599609375,0.6015625,0.5576171875,0.4892578125,0.4296875,0.4189453125,0.458984375,0.51953125,0.5595703125,0.5498046875,0.4892578125,0.408203125,0.306640625,0.2255859375,0.2080078125,0.2587890625,0.34375,0.419921875,0.498046875,0.591796875,0.6611328125,0.6640625,0.6005859375,0.5087890625,0.4296875,0.36328125,0.3291015625,0.34765625,0.416015625,0.5,0.5576171875,0.5693359375,0.5546875,0.4970703125,0.4150390625,0.349609375,0.33203125,0.3662109375,0.4296875,0.4892578125,0.5146484375,0.50390625,0.4794921875,0.470703125,0.498046875,0.5595703125,0.625,0.6611328125,0.6474609375,0.5859375,0.5078125,0.4521484375,0.439453125,0.439453125,0.439453125,0.4384765625,0.4365234375,0.43359375,0.431640625,0.4296875,0.431640625,0.4501953125,0.484375,0.525390625,0.5595703125,0.5771484375,0.5791015625,0.5859375,0.6171875,0.6533203125,0.6650390625,0.6376953125,0.5791015625,0.509765625,0.4423828125,0.3984375,0.3984375,0.44140625,0.5048828125,0.5498046875,0.5595703125,0.56640625,0.599609375,0.640625,0.6572265625,0.634765625,0.578125,0.509765625,0.4521484375,0.44921875,0.5009765625,0.57421875,0.6240234375,0.6181640625,0.5595703125,0.490234375,0.4384765625,0.4267578125,0.45703125,0.5107421875,0.55078125,0.5595703125,0.5546875,0.5361328125,0.505859375,0.4716796875,0.4443359375,0.4306640625,0.4296875,0.4248046875,0.3994140625,0.375,0.37890625,0.419921875,0.486328125,0.5595703125,0.6357421875,0.71484375,0.75390625,0.720703125,0.6279296875,0.5205078125,0.439453125,0.37109375,0.3173828125,0.3017578125,0.3271484375,0.3779296875,0.4189453125,0.4296875,0.4443359375,0.5048828125,0.5908203125,0.6591796875,0.677734375,0.64453125,0.5791015625,0.5078125,0.4365234375,0.388671875,0.3759765625,0.392578125,0.4140625,0.419921875,0.423828125,0.4443359375,0.48046875,0.5234375,0.55859375,0.5771484375,0.5791015625,0.587890625,0.6279296875,0.681640625,0.7119140625,0.7001953125,0.6484375,0.5791015625,0.517578125,0.4970703125,0.51953125,0.5595703125,0.58203125,0.5615234375,0.5,0.431640625,0.38671875,0.388671875,0.435546875,0.501953125,0.5498046875,0.5595703125,0.546875,0.4970703125,0.4306640625,0.3837890625,0.3818359375,0.4248046875,0.4892578125,0.568359375,0.6689453125,0.7529296875,0.775390625,0.7294921875,0.646484375,0.5693359375,0.490234375,0.396484375,0.330078125,0.3291015625,0.392578125,0.4833984375,0.5595703125,0.6162109375,0.626953125,0.587890625,0.5302734375,0.4921875,0.501953125,0.5595703125,0.6337890625,0.716796875,0.7666015625,0.7509765625,0.673828125,0.5771484375,0.5,0.4228515625,0.330078125,0.26171875,0.2578125,0.3193359375,0.41015625,0.4892578125,0.5703125,0.6728515625,0.7548828125,0.7744140625,0.7255859375,0.6435546875,0.5693359375,0.5126953125,0.5029296875,0.5419921875,0.5986328125,0.6337890625,0.6201171875,0.5595703125,0.478515625,0.3779296875,0.30078125,0.287109375,0.3427734375,0.4306640625,0.509765625,0.5908203125,0.6923828125,0.7734375,0.791015625,0.740234375,0.6552734375,0.5791015625,0.51953125,0.501953125,0.5263671875,0.568359375,0.5908203125,0.5712890625,0.509765625,0.427734375,0.32421875,0.2392578125,0.21875,0.267578125,0.3515625,0.4296875,0.4931640625,0.5244140625,0.51953125,0.5,0.4931640625,0.51953125,0.5791015625,0.642578125,0.67578125,0.65625,0.587890625,0.50390625,0.4443359375,0.4296875,0.4189453125,0.37890625,0.330078125,0.3046875,0.3203125,0.373046875,0.439453125,0.5185546875,0.6240234375,0.7158203125,0.748046875,0.7109375,0.6337890625,0.5595703125,0.4814453125,0.3916015625,0.3291015625,0.333984375,0.4033203125,0.4990234375,0.5791015625,0.6357421875,0.6279296875,0.5546875,0.4541015625,0.380859375,0.373046875,0.4296875,0.509765625,0.603515625,0.671875,0.673828125,0.609375,0.517578125,0.439453125,0.3828125,0.380859375,0.435546875,0.513671875,0.568359375,0.56640625,0.509765625,0.4423828125,0.396484375,0.392578125,0.435546875,0.4990234375,0.546875,0.5595703125,0.5517578125,0.5146484375,0.466796875,0.4423828125,0.4580078125,0.5107421875,0.5791015625,0.63671875,0.6435546875,0.5986328125,0.6650390625,0.6240234375,0.533203125,0.439453125,0.376953125,0.3408203125,0.3623046875,0.44140625,0.5400390625,0.6103515625,0.6181640625,0.5703125,0.4990234375,0.4013671875,0.3125,0.275390625,0.30078125,0.3642578125,0.4287109375,0.5,0.595703125,0.6796875,0.7119140625,0.6826171875,0.6162109375,0.55078125,0.5029296875,0.5087890625,0.5703125,0.654296875,0.7158203125,0.7216796875,0.673828125,0.6181640625,0.5908203125,0.59375,0.6142578125,0.6279296875,0.61328125,0.5703125,0.5283203125,0.52734375,0.5673828125,0.6240234375,0.6640625,0.6630859375,0.6220703125,0.576171875,0.55078125,0.544921875,0.541015625,0.5244140625,0.486328125,0.4287109375,0.3662109375,0.3095703125,0.279296875,0.287109375,0.3232421875,0.3603515625,0.376953125,0.3896484375,0.41015625,0.4306640625,0.4443359375,0.4462890625,0.439453125,0.4287109375,0.4296875,0.4658203125,0.521484375,0.5615234375,0.5595703125,0.515625,0.4482421875,0.3779296875,0.3232421875,0.3056640625,0.3310546875,0.3798828125,0.419921875,0.4287109375,0.44140625,0.5009765625,0.59375,0.6796875,0.724609375,0.716796875,0.673828125,0.6298828125,0.61328125,0.6220703125,0.6376953125,0.63671875,0.6064453125,0.55078125,0.4892578125,0.4287109375,0.38671875,0.37109375,0.3759765625,0.3828125,0.376953125,0.3623046875,0.3408203125,0.33203125,0.3564453125,0.4140625,0.486328125,0.55078125,0.6083984375,0.6376953125,0.6220703125,0.5634765625,0.4912109375,0.4404296875,0.4287109375,0.4345703125,0.46484375,0.5185546875,0.5830078125,0.6376953125,0.66796875,0.673828125,0.662109375,0.611328125,0.53515625,0.466796875,0.4375,0.4541015625,0.5,0.55859375,0.6376953125,0.705078125,0.72265625,0.6845703125,0.6171875,0.55078125,0.48046875,0.3876953125,0.3076171875,0.2802734375,0.314453125,0.3818359375,0.4482421875,0.521484375,0.62890625,0.736328125,0.7958984375,0.7890625,0.736328125,0.673828125,0.615234375,0.5732421875,0.548828125,0.537109375,0.5234375,0.494140625,0.4482421875,0.4091796875,0.419921875,0.4755859375,0.541015625,0.5771484375,0.560546875,0.5,0.439453125,0.4287109375,0.47265625,0.54296875,0.5966796875,0.599609375,0.55078125,0.486328125,0.4140625,0.3525390625,0.318359375,0.314453125,0.322265625,0.3251953125,0.3388671875,0.39453125,0.4755859375,0.5380859375,0.552734375,0.5146484375,0.4482421875,0.3876953125,0.376953125,0.41796875,0.478515625,0.5185546875,0.5078125,0.4482421875,0.3662109375,0.263671875,0.177734375,0.1494140625,0.1875,0.2587890625,0.3251953125,0.396484375,0.4892578125,0.5654296875,0.583984375,0.5361328125,0.4541015625,0.376953125,0.314453125,0.2978515625,0.3466796875,0.4462890625,0.552734375,0.6162109375,0.6220703125,0.5986328125,0.5322265625,0.4375,0.35546875,0.318359375,0.33203125,0.376953125,0.4228515625,0.4482421875,0.4541015625,0.4580078125,0.474609375,0.5126953125,0.5703125,0.6259765625,0.654296875,0.6337890625,0.5703125,0.4931640625,0.4404296875,0.4287109375,0.4296875,0.4287109375,0.4248046875,0.416015625,0.40234375,0.388671875,0.376953125,0.3759765625,0.41015625,0.4814453125,0.5693359375,0.640625,0.6748046875,0.673828125,0.6689453125,0.6826171875,0.6982421875,0.697265625,0.666015625,0.6123046875,0.55078125,0.4931640625,0.45703125,0.45703125,0.4931640625,0.541015625,0.5712890625,0.5703125,0.568359375,0.59375,0.6337890625,0.6591796875,0.6513671875,0.609375,0.55078125,0.501953125,0.5009765625,0.5478515625,0.6083984375,0.6455078125,0.630859375,0.5703125,0.501953125,0.455078125,0.4501953125,0.484375,0.5361328125,0.5703125,0.5703125,0.5537109375,0.5166015625,0.4638671875,0.4130859375,0.3798828125,0.3701171875,0.376953125,0.3818359375,0.37109375,0.3623046875,0.37890625,0.427734375,0.4970703125,0.5703125,0.6455078125,0.7158203125,0.7431640625,0.7021484375,0.60546875,0.501953125,0.4287109375,0.3662109375,0.3095703125,0.279296875,0.287109375,0.3232421875,0.3603515625,0.376953125,0.4033203125,0.482421875,0.595703125,0.6953125,0.7421875,0.7275390625,0.673828125,0.60546875,0.5185546875,0.4296875,0.36328125,0.33203125,0.3251953125,0.3251953125,0.3349609375,0.3837890625,0.46875,0.5654296875,0.640625,0.67578125,0.673828125,0.6728515625,0.70703125,0.7587890625,0.7939453125,0.7880859375,0.7421875,0.673828125,0.609375,0.578125,0.5791015625,0.59375,0.5947265625,0.5634765625,0.5,0.4326171875,0.39453125,0.4052734375,0.458984375,0.525390625,0.568359375,0.5703125,0.5498046875,0.498046875,0.4306640625,0.380859375,0.37109375,0.3994140625,0.4482421875,0.51171875,0.611328125,0.712890625,0.767578125,0.755859375,0.6943359375,0.6220703125,0.5439453125,0.455078125,0.392578125,0.3876953125,0.439453125,0.51171875,0.5703125,0.6123046875,0.6201171875,0.591796875,0.548828125,0.51953125,0.52734375,0.5703125,0.625,0.68359375,0.71484375,0.6962890625,0.6328125,0.5576171875,0.5,0.4384765625,0.353515625,0.279296875,0.2568359375,0.296875,0.3720703125,0.4482421875,0.5283203125,0.6318359375,0.7216796875,0.7587890625,0.7353515625,0.6767578125,0.6220703125,0.5810546875,0.5791015625,0.611328125,0.6494140625,0.6630859375,0.6337890625,0.5703125,0.490234375,0.3935546875,0.322265625,0.3173828125,0.3798828125,0.4716796875,0.55078125,0.6328125,0.7353515625,0.8212890625,0.849609375,0.8115234375,0.740234375,0.673828125,0.62109375,0.6025390625,0.6181640625,0.6416015625,0.646484375,0.615234375,0.55078125,0.4677734375,0.3525390625,0.2470703125,0.201171875,0.228515625,0.3017578125,0.376953125,0.447265625,0.505859375,0.546875,0.5732421875,0.595703125,0.626953125,0.673828125,0.7177734375,0.724609375,0.67578125,0.580078125,0.474609375,0.4013671875,0.376953125,0.361328125,0.330078125,0.3017578125,0.298828125,0.3271484375,0.376953125,0.4287109375,0.490234375,0.580078125,0.6669921875,0.708984375,0.6904296875,0.6337890625,0.5703125,0.5029296875,0.4287109375,0.38671875,0.41015625,0.4921875,0.5927734375,0.673828125,0.7265625,0.701171875,0.5947265625,0.4560546875,0.349609375,0.32421875,0.376953125,0.45703125,0.55078125,0.6220703125,0.630859375,0.578125,0.4970703125,0.4287109375,0.380859375,0.38671875,0.4482421875,0.5322265625,0.59375,0.599609375,0.55078125,0.490234375,0.4423828125,0.4267578125,0.453125,0.505859375,0.55078125,0.5703125,0.57421875,0.55859375,0.5380859375,0.53515625,0.5615234375,0.6123046875,0.673828125,0.720703125,0.7109375,0.646484375,0.61328125,0.5546875,0.4677734375,0.3955078125,0.3642578125,0.35546875,0.388671875,0.4560546875,0.5263671875,0.5693359375,0.5673828125,0.5302734375,0.478515625,0.4111328125,0.35546875,0.33984375,0.3681640625,0.419921875,0.46875,0.5224609375,0.5986328125,0.6708984375,0.70703125,0.6953125,0.65234375,0.6044921875,0.5703125,0.580078125,0.6357421875,0.708984375,0.7646484375,0.7744140625,0.740234375,0.693359375,0.646484375,0.6044921875,0.576171875,0.5595703125,0.546875,0.5302734375,0.5166015625,0.5263671875,0.560546875,0.6044921875,0.638671875,0.6484375,0.634765625,0.619140625,0.611328125,0.6044921875,0.587890625,0.556640625,0.5146484375,0.46875,0.4189453125,0.357421875,0.306640625,0.2861328125,0.3017578125,0.3349609375,0.3642578125,0.3955078125,0.443359375,0.4912109375,0.5185546875,0.517578125,0.49609375,0.46875,0.4521484375,0.46484375,0.4970703125,0.5185546875,0.5087890625,0.4619140625,0.39453125,0.326171875,0.283203125,0.2861328125,0.3369140625,0.40625,0.45703125,0.46875,0.478515625,0.5224609375,0.5966796875,0.67578125,0.7333984375,0.751953125,0.740234375,0.724609375,0.720703125,0.720703125,0.7119140625,0.6875,0.6494140625,0.6044921875,0.55859375,0.51171875,0.46875,0.435546875,0.4111328125,0.388671875,0.3642578125,0.337890625,0.3212890625,0.3359375,0.3916015625,0.4736328125,0.55078125,0.6044921875,0.6455078125,0.662109375,0.640625,0.5849609375,0.521484375,0.478515625,0.46875,0.4755859375,0.5087890625,0.568359375,0.640625,0.701171875,0.7333984375,0.740234375,0.7314453125,0.69140625,0.6240234375,0.5517578125,0.501953125,0.486328125,0.5,0.5263671875,0.580078125,0.640625,0.6796875,0.6806640625,0.6484375,0.6044921875,0.5498046875,0.4638671875,0.375,0.3193359375,0.314453125,0.3486328125,0.39453125,0.453125,0.5546875,0.673828125,0.7646484375,0.7998046875,0.7822265625,0.740234375,0.6904296875,0.626953125,0.5546875,0.4912109375,0.4443359375,0.4150390625,0.39453125,0.388671875,0.4287109375,0.501953125,0.568359375,0.5927734375,0.564453125,0.5,0.4384765625,0.4248046875,0.46875,0.546875,0.615234375,0.63671875,0.6044921875,0.552734375,0.4775390625,0.3916015625,0.3193359375,0.2763671875,0.2607421875,0.2587890625,0.2724609375,0.330078125,0.4140625,0.48046875,0.4970703125,0.4609375,0.39453125,0.3349609375,0.32421875,0.3642578125,0.4248046875,0.46484375,0.4541015625,0.39453125,0.3154296875,0.2197265625,0.142578125,0.1181640625,0.1494140625,0.2080078125,0.2587890625,0.3154296875,0.4033203125,0.48828125,0.52734375,0.50390625,0.4375,0.3642578125,0.3046875,0.2998046875,0.3671875,0.48046875,0.5888671875,0.64453125,0.634765625,0.6005859375,0.537109375,0.4580078125,0.3896484375,0.3515625,0.3486328125,0.3642578125,0.3798828125,0.3876953125,0.39453125,0.4111328125,0.4423828125,0.484375,0.5302734375,0.572265625,0.5986328125,0.5927734375,0.5576171875,0.5107421875,0.4765625,0.46875,0.470703125,0.47265625,0.46875,0.4521484375,0.423828125,0.392578125,0.3642578125,0.3505859375,0.392578125,0.4912109375,0.61328125,0.7119140625,0.7529296875,0.740234375,0.7177734375,0.7080078125,0.70703125,0.701171875,0.6826171875,0.6484375,0.6044921875,0.5625,0.53515625,0.5302734375,0.541015625,0.552734375,0.55078125,0.5302734375,0.5126953125,0.5283203125,0.57421875,0.6240234375,0.65234375,0.6435546875,0.6044921875,0.568359375,0.568359375,0.5966796875,0.6259765625,0.6298828125,0.5947265625,0.5302734375,0.4638671875,0.4267578125,0.4326171875,0.474609375,0.5234375,0.5458984375,0.5302734375,0.4970703125,0.4423828125,0.3798828125,0.3369140625,0.32421875,0.3388671875,0.3642578125,0.3837890625,0.380859375,0.3701171875,0.3720703125,0.40234375,0.4599609375,0.5302734375,0.6044921875,0.67578125,0.708984375,0.6826171875,0.6064453125,0.5244140625,0.46875,0.4189453125,0.357421875,0.306640625,0.2861328125,0.3017578125,0.3349609375,0.3642578125,0.404296875,0.49609375,0.619140625,0.7255859375,0.7822265625,0.779296875,0.740234375,0.6845703125,0.5927734375,0.4775390625,0.369140625,0.2958984375,0.263671875,0.2587890625,0.2734375,0.34765625,0.474609375,0.61328125,0.7158203125,0.7548828125,0.740234375,0.724609375,0.7470703125,0.794921875,0.8369140625,0.8427734375,0.806640625,0.740234375,0.6748046875,0.634765625,0.62109375,0.6181640625,0.6044921875,0.564453125,0.5,0.4345703125,0.400390625,0.4140625,0.4638671875,0.5185546875,0.544921875,0.5302734375,0.498046875,0.451171875,0.40234375,0.3701171875,0.3623046875,0.375,0.39453125,0.4287109375,0.5126953125,0.6240234375,0.7099609375,0.736328125,0.7021484375,0.634765625,0.560546875,0.484375,0.4326171875,0.427734375,0.4609375,0.50390625,0.5302734375,0.5458984375,0.548828125,0.5380859375,0.521484375,0.5107421875,0.513671875,0.5302734375,0.5498046875,0.5712890625,0.58203125,0.57421875,0.5498046875,0.521484375,0.5,0.46875,0.400390625,0.3203125,0.26953125,0.2734375,0.32421875,0.39453125,0.47265625,0.5654296875,0.646484375,0.6875,0.6845703125,0.658203125,0.634765625,0.6240234375,0.638671875,0.666015625,0.67578125,0.6533203125,0.599609375,0.5302734375,0.4521484375,0.3671875,0.31640625,0.3369140625,0.419921875,0.5234375,0.6044921875,0.68359375,0.779296875,0.8564453125,0.880859375,0.849609375,0.791015625,0.740234375,0.703125,0.6953125,0.7099609375,0.7236328125,0.7138671875,0.6708984375,0.6044921875,0.51953125,0.3955078125,0.275390625,0.2119140625,0.224609375,0.2900390625,0.3642578125,0.439453125,0.52734375,0.6103515625,0.6708984375,0.705078125,0.72265625,0.740234375,0.75390625,0.7373046875,0.67578125,0.580078125,0.4775390625,0.4013671875,0.3642578125,0.337890625,0.3203125,0.3251953125,0.3564453125,0.40234375,0.4443359375,0.46875,0.4951171875,0.54296875,0.59375,0.62109375,0.6123046875,0.5751953125,0.5302734375,0.48046875,0.431640625,0.416015625,0.4609375,0.5546875,0.6591796875,0.740234375,0.791015625,0.755859375,0.6318359375,0.4716796875,0.34765625,0.3134765625,0.3642578125,0.4423828125,0.5341796875,0.6044921875,0.62109375,0.5830078125,0.5205078125,0.46875,0.4345703125,0.4443359375,0.5,0.57421875,0.6298828125,0.6396484375,0.6044921875,0.5546875,0.4970703125,0.453125,0.44140625,0.462890625,0.5,0.5302734375,0.5537109375,0.572265625,0.5908203125,0.6162109375,0.6513671875,0.6943359375,0.740234375,0.76953125,0.7353515625,0.6435546875,0.568359375,0.501953125,0.4287109375,0.388671875,0.39453125,0.41796875,0.4560546875,0.49609375,0.51953125,0.5166015625,0.49609375,0.46875,0.44140625,0.4140625,0.4033203125,0.4189453125,0.45703125,0.4990234375,0.5302734375,0.5615234375,0.609375,0.6572265625,0.6845703125,0.68359375,0.662109375,0.634765625,0.615234375,0.6240234375,0.662109375,0.712890625,0.7509765625,0.759765625,0.740234375,0.705078125,0.642578125,0.5625,0.494140625,0.45703125,0.453125,0.46875,0.48828125,0.5078125,0.52734375,0.546875,0.56640625,0.5859375,0.6044921875,0.625,0.6455078125,0.6513671875,0.634765625,0.599609375,0.5595703125,0.5302734375,0.4951171875,0.4326171875,0.36328125,0.3203125,0.3173828125,0.349609375,0.39453125,0.4482421875,0.5234375,0.5966796875,0.6318359375,0.6201171875,0.5771484375,0.5302734375,0.4921875,0.48046875,0.48828125,0.494140625,0.4775390625,0.431640625,0.3642578125,0.2978515625,0.265625,0.2900390625,0.36328125,0.4541015625,0.515625,0.5302734375,0.5322265625,0.546875,0.5791015625,0.626953125,0.677734375,0.716796875,0.740234375,0.759765625,0.7763671875,0.775390625,0.7509765625,0.708984375,0.666015625,0.634765625,0.6103515625,0.587890625,0.5634765625,0.5302734375,0.4873046875,0.4404296875,0.39453125,0.3525390625,0.3330078125,0.3583984375,0.4306640625,0.5224609375,0.59765625,0.634765625,0.658203125,0.6650390625,0.646484375,0.607421875,0.564453125,0.5361328125,0.5302734375,0.53515625,0.560546875,0.607421875,0.6630859375,0.7099609375,0.7353515625,0.740234375,0.7373046875,0.71875,0.6796875,0.6240234375,0.56640625,0.5234375,0.5,0.48828125,0.505859375,0.5517578125,0.607421875,0.646484375,0.6552734375,0.634765625,0.599609375,0.5322265625,0.447265625,0.375,0.3388671875,0.3408203125,0.3642578125,0.40234375,0.482421875,0.5908203125,0.6904296875,0.75,0.7607421875,0.740234375,0.703125,0.626953125,0.5244140625,0.427734375,0.3671875,0.3505859375,0.3642578125,0.3955078125,0.4677734375,0.5546875,0.61328125,0.6162109375,0.568359375,0.5,0.4365234375,0.416015625,0.4521484375,0.5302734375,0.6083984375,0.6474609375,0.634765625,0.6005859375,0.53515625,0.447265625,0.3583984375,0.2939453125,0.263671875,0.2587890625,0.271484375,0.326171875,0.40234375,0.4609375,0.470703125,0.431640625,0.3642578125,0.3046875,0.2939453125,0.333984375,0.39453125,0.4345703125,0.423828125,0.3642578125,0.2880859375,0.2080078125,0.1513671875,0.142578125,0.177734375,0.2255859375,0.2587890625,0.2978515625,0.375,0.4638671875,0.5185546875,0.515625,0.46484375,0.39453125,0.3359375,0.3349609375,0.40234375,0.5078125,0.599609375,0.6337890625,0.6044921875,0.55859375,0.5107421875,0.4697265625,0.44140625,0.4248046875,0.4111328125,0.39453125,0.3740234375,0.353515625,0.34765625,0.3642578125,0.3994140625,0.439453125,0.46875,0.49609375,0.5224609375,0.541015625,0.5458984375,0.5400390625,0.5322265625,0.5302734375,0.533203125,0.54296875,0.546875,0.5302734375,0.4912109375,0.44140625,0.39453125,0.3642578125,0.3994140625,0.501953125,0.6318359375,0.734375,0.76953125,0.740234375,0.697265625,0.6669921875,0.654296875,0.6572265625,0.662109375,0.6572265625,0.634765625,0.611328125,0.5986328125,0.5908203125,0.5771484375,0.5517578125,0.513671875,0.46875,0.4326171875,0.4345703125,0.4833984375,0.5576171875,0.623046875,0.650390625,0.634765625,0.615234375,0.6181640625,0.62890625,0.626953125,0.5966796875,0.5390625,0.46875,0.4052734375,0.3798828125,0.400390625,0.44921875,0.4951171875,0.5029296875,0.46875,0.4169921875,0.3486328125,0.2900390625,0.26953125,0.294921875,0.345703125,0.39453125,0.4306640625,0.4306640625,0.40234375,0.373046875,0.369140625,0.404296875,0.46875,0.5439453125,0.619140625,0.666015625,0.662109375,0.6181640625,0.564453125,0.5302734375,0.4951171875,0.4326171875,0.36328125,0.3203125,0.3173828125,0.349609375,0.39453125,0.4501953125,0.541015625,0.6455078125,0.7294921875,0.767578125,0.763671875,0.740234375,0.703125,0.6259765625,0.513671875,0.3974609375,0.3095703125,0.2666015625,0.2587890625,0.2763671875,0.361328125,0.501953125,0.6484375,0.748046875,0.7734375,0.740234375,0.7060546875,0.71484375,0.759765625,0.8095703125,0.830078125,0.8037109375,0.740234375,0.6748046875,0.634765625,0.62109375,0.6181640625,0.6044921875,0.564453125,0.5,0.435546875,0.4052734375,0.4189453125,0.4609375,0.4990234375,0.50390625,0.46875,0.4248046875,0.390625,0.373046875,0.3720703125,0.37890625,0.37890625,0.3642578125,0.361328125,0.41796875,0.521484375,0.6240234375,0.6787109375,0.666015625,0.6044921875,0.5341796875,0.4765625,0.447265625,0.44921875,0.4697265625,0.48046875,0.46875,0.453125,0.4501953125,0.4609375,0.4775390625,0.48828125,0.4853515625,0.46875,0.44921875,0.427734375,0.4169921875,0.4248046875,0.44921875,0.4775390625,0.5,0.5048828125,0.4609375,0.3798828125,0.306640625,0.275390625,0.2998046875,0.3642578125,0.4365234375,0.5078125,0.560546875,0.5849609375,0.5888671875,0.5908203125,0.6044921875,0.6298828125,0.6689453125,0.6953125,0.6826171875,0.625,0.544921875,0.46875,0.3935546875,0.3193359375,0.2900390625,0.3330078125,0.4375,0.5517578125,0.634765625,0.7109375,0.791015625,0.84765625,0.8564453125,0.8212890625,0.7734375,0.740234375,0.7216796875,0.7314453125,0.7568359375,0.7705078125,0.7529296875,0.703125,0.634765625,0.5498046875,0.4267578125,0.3056640625,0.2421875,0.2548828125,0.3203125,0.39453125,0.474609375,0.580078125,0.6845703125,0.75390625,0.7744140625,0.7607421875,0.740234375,0.7197265625,0.6904296875,0.6435546875,0.5791015625,0.5078125,0.4443359375,0.39453125,0.3564453125,0.3505859375,0.38671875,0.44921875,0.509765625,0.5390625,0.5302734375,0.513671875,0.5078125,0.5107421875,0.513671875,0.5087890625,0.4931640625,0.46875,0.439453125,0.412109375,0.4140625,0.4658203125,0.5595703125,0.66015625,0.740234375,0.7919921875,0.7607421875,0.6435546875,0.4912109375,0.3740234375,0.3427734375,0.39453125,0.470703125,0.5556640625,0.6181640625,0.634765625,0.6064453125,0.5625,0.5302734375,0.5107421875,0.51953125,0.5576171875,0.607421875,0.6455078125,0.654296875,0.634765625,0.599609375,0.533203125,0.4580078125,0.40625,0.396484375,0.4248046875,0.46875,0.515625,0.56640625,0.6162109375,0.6572265625,0.6884765625,0.71484375,0.740234375,0.7490234375,0.6943359375,0.5849609375,0.541015625,0.4755859375,0.419921875,0.4091796875,0.4482421875,0.498046875,0.5390625,0.552734375,0.5302734375,0.486328125,0.4462890625,0.4287109375,0.4208984375,0.423828125,0.4462890625,0.4833984375,0.5244140625,0.5556640625,0.5703125,0.5830078125,0.6025390625,0.6240234375,0.6376953125,0.6396484375,0.6318359375,0.6220703125,0.6142578125,0.619140625,0.63671875,0.6591796875,0.67578125,0.6806640625,0.673828125,0.650390625,0.583984375,0.4892578125,0.4072265625,0.3701171875,0.3837890625,0.4287109375,0.474609375,0.4970703125,0.4951171875,0.484375,0.4833984375,0.505859375,0.55078125,0.6025390625,0.6484375,0.669921875,0.6572265625,0.6220703125,0.5869140625,0.5703125,0.548828125,0.490234375,0.416015625,0.361328125,0.353515625,0.3896484375,0.4482421875,0.5185546875,0.6142578125,0.6982421875,0.73046875,0.701171875,0.6357421875,0.5703125,0.515625,0.4892578125,0.48828125,0.494140625,0.4833984375,0.443359375,0.376953125,0.3125,0.283203125,0.3125,0.3935546875,0.490234375,0.5556640625,0.5703125,0.5654296875,0.5478515625,0.533203125,0.5390625,0.5712890625,0.62109375,0.673828125,0.7236328125,0.759765625,0.765625,0.7353515625,0.68359375,0.6396484375,0.6220703125,0.6162109375,0.623046875,0.6279296875,0.6123046875,0.5703125,0.509765625,0.4482421875,0.390625,0.361328125,0.380859375,0.4482421875,0.5341796875,0.5986328125,0.6220703125,0.630859375,0.6318359375,0.6220703125,0.6044921875,0.5849609375,0.572265625,0.5703125,0.572265625,0.5849609375,0.6083984375,0.6357421875,0.658203125,0.6708984375,0.673828125,0.6767578125,0.6845703125,0.6845703125,0.66015625,0.611328125,0.552734375,0.5,0.4541015625,0.4375,0.4638671875,0.521484375,0.5849609375,0.6220703125,0.6220703125,0.6044921875,0.5615234375,0.4970703125,0.4326171875,0.3876953125,0.37109375,0.376953125,0.3955078125,0.4453125,0.521484375,0.599609375,0.6552734375,0.677734375,0.673828125,0.6494140625,0.576171875,0.4697265625,0.375,0.326171875,0.3330078125,0.376953125,0.439453125,0.533203125,0.6240234375,0.6650390625,0.640625,0.5732421875,0.5,0.43359375,0.40234375,0.423828125,0.4912109375,0.5703125,0.619140625,0.6220703125,0.6044921875,0.5615234375,0.4931640625,0.4189453125,0.361328125,0.3310546875,0.3251953125,0.3369140625,0.384765625,0.4501953125,0.494140625,0.4921875,0.4462890625,0.376953125,0.3173828125,0.306640625,0.3466796875,0.4072265625,0.4482421875,0.4375,0.376953125,0.3046875,0.240234375,0.2080078125,0.2197265625,0.263671875,0.306640625,0.3251953125,0.3486328125,0.4130859375,0.4951171875,0.5537109375,0.5595703125,0.5166015625,0.4482421875,0.388671875,0.384765625,0.4404296875,0.5234375,0.5888671875,0.5986328125,0.55078125,0.49609375,0.46875,0.4716796875,0.4921875,0.505859375,0.4912109375,0.4482421875,0.396484375,0.3505859375,0.3291015625,0.341796875,0.376953125,0.412109375,0.4287109375,0.4423828125,0.466796875,0.5,0.533203125,0.556640625,0.568359375,0.5703125,0.576171875,0.5966796875,0.615234375,0.6083984375,0.5703125,0.5107421875,0.4482421875,0.40234375,0.419921875,0.5048828125,0.6162109375,0.701171875,0.7197265625,0.673828125,0.6142578125,0.5693359375,0.5537109375,0.5703125,0.6025390625,0.6240234375,0.6220703125,0.615234375,0.6201171875,0.62109375,0.6005859375,0.5537109375,0.4921875,0.4287109375,0.375,0.359375,0.3994140625,0.48046875,0.5673828125,0.619140625,0.6220703125,0.6171875,0.6279296875,0.63671875,0.6201171875,0.5712890625,0.501953125,0.4287109375,0.3681640625,0.3505859375,0.3837890625,0.439453125,0.4814453125,0.478515625,0.4287109375,0.361328125,0.283203125,0.23046875,0.2353515625,0.296875,0.37890625,0.4482421875,0.4970703125,0.498046875,0.451171875,0.390625,0.353515625,0.3681640625,0.4287109375,0.50390625,0.5791015625,0.6318359375,0.642578125,0.619140625,0.5869140625,0.5703125,0.548828125,0.490234375,0.416015625,0.361328125,0.353515625,0.3896484375,0.4482421875,0.5146484375,0.5927734375,0.662109375,0.7001953125,0.7021484375,0.6865234375,0.673828125,0.6552734375,0.60546875,0.525390625,0.4384765625,0.3681640625,0.33203125,0.3251953125,0.341796875,0.419921875,0.5439453125,0.6611328125,0.7275390625,0.724609375,0.673828125,0.6240234375,0.6201171875,0.6630859375,0.71875,0.7509765625,0.734375,0.673828125,0.609375,0.578125,0.5791015625,0.59375,0.5947265625,0.5634765625,0.5,0.4365234375,0.4111328125,0.427734375,0.4658203125,0.4921875,0.48046875,0.4287109375,0.375,0.353515625,0.369140625,0.40234375,0.427734375,0.419921875,0.376953125,0.341796875,0.3671875,0.4501953125,0.5478515625,0.611328125,0.609375,0.55078125,0.4853515625,0.4482421875,0.4453125,0.46484375,0.4814453125,0.4716796875,0.4287109375,0.38671875,0.37890625,0.4072265625,0.4501953125,0.4794921875,0.4716796875,0.4287109375,0.3740234375,0.3154296875,0.2841796875,0.302734375,0.3662109375,0.44140625,0.5,0.5361328125,0.5166015625,0.4453125,0.361328125,0.3095703125,0.3173828125,0.376953125,0.4443359375,0.48828125,0.501953125,0.49609375,0.4912109375,0.5078125,0.55078125,0.607421875,0.671875,0.7080078125,0.6845703125,0.60546875,0.5087890625,0.4287109375,0.353515625,0.283203125,0.259765625,0.310546875,0.419921875,0.537109375,0.6220703125,0.6943359375,0.7587890625,0.791015625,0.779296875,0.7353515625,0.6923828125,0.673828125,0.671875,0.7001953125,0.740234375,0.7607421875,0.744140625,0.69140625,0.6220703125,0.5380859375,0.4228515625,0.3173828125,0.271484375,0.298828125,0.3720703125,0.4482421875,0.5302734375,0.6396484375,0.7412109375,0.7919921875,0.779296875,0.7275390625,0.673828125,0.626953125,0.59765625,0.583984375,0.572265625,0.5478515625,0.505859375,0.4482421875,0.3984375,0.3974609375,0.451171875,0.53125,0.5947265625,0.6083984375,0.5703125,0.5185546875,0.470703125,0.4375,0.42578125,0.4306640625,0.435546875,0.4287109375,0.4150390625,0.39453125,0.39453125,0.4326171875,0.5087890625,0.5966796875,0.673828125,0.7275390625,0.7109375,0.62109375,0.5,0.41015625,0.3935546875,0.4482421875,0.521484375,0.5947265625,0.6435546875,0.6494140625,0.6220703125,0.5869140625,0.5703125,0.5625,0.5673828125,0.5849609375,0.607421875,0.6240234375,0.62890625,0.6220703125,0.5986328125,0.5322265625,0.44140625,0.369140625,0.3447265625,0.3720703125,0.4287109375,0.4931640625,0.5615234375,0.619140625,0.6533203125,0.6640625,0.666015625,0.673828125,0.66796875,0.6044921875,0.498046875,0.53125,0.46875,0.42578125,0.43359375,0.4892578125,0.5546875,0.599609375,0.6025390625,0.5615234375,0.4990234375,0.4521484375,0.439453125,0.4404296875,0.453125,0.478515625,0.509765625,0.5380859375,0.5546875,0.5595703125,0.5615234375,0.564453125,0.568359375,0.5712890625,0.572265625,0.5712890625,0.5693359375,0.568359375,0.5693359375,0.572265625,0.576171875,0.5791015625,0.580078125,0.5791015625,0.564453125,0.5068359375,0.4248046875,0.359375,0.341796875,0.3759765625,0.439453125,0.498046875,0.5166015625,0.494140625,0.455078125,0.4326171875,0.451171875,0.509765625,0.5771484375,0.634765625,0.6591796875,0.64453125,0.6044921875,0.5693359375,0.5595703125,0.5458984375,0.49609375,0.427734375,0.380859375,0.37890625,0.4228515625,0.4892578125,0.5693359375,0.669921875,0.75,0.7685546875,0.71875,0.6357421875,0.5595703125,0.498046875,0.47265625,0.484375,0.509765625,0.5205078125,0.4931640625,0.4296875,0.36328125,0.326171875,0.341796875,0.40625,0.4892578125,0.5458984375,0.5595703125,0.5498046875,0.5126953125,0.466796875,0.4423828125,0.4599609375,0.5126953125,0.5791015625,0.6455078125,0.6953125,0.70703125,0.6767578125,0.623046875,0.5810546875,0.5693359375,0.5751953125,0.60546875,0.6396484375,0.6484375,0.619140625,0.5595703125,0.4892578125,0.4228515625,0.380859375,0.3837890625,0.4345703125,0.5048828125,0.5556640625,0.5693359375,0.5703125,0.5703125,0.568359375,0.5654296875,0.5615234375,0.5595703125,0.5595703125,0.5595703125,0.5625,0.56640625,0.572265625,0.576171875,0.5791015625,0.5791015625,0.5869140625,0.6171875,0.650390625,0.658203125,0.6279296875,0.568359375,0.5,0.4345703125,0.39453125,0.3984375,0.4462890625,0.5126953125,0.5595703125,0.5693359375,0.564453125,0.544921875,0.5126953125,0.4755859375,0.4462890625,0.4306640625,0.4296875,0.435546875,0.455078125,0.490234375,0.5302734375,0.5615234375,0.5771484375,0.5791015625,0.564453125,0.505859375,0.4208984375,0.353515625,0.333984375,0.3662109375,0.4296875,0.5078125,0.6083984375,0.689453125,0.7099609375,0.6611328125,0.5771484375,0.5,0.431640625,0.388671875,0.392578125,0.44140625,0.5107421875,0.5595703125,0.5693359375,0.564453125,0.544921875,0.5107421875,0.47265625,0.4404296875,0.4228515625,0.419921875,0.4296875,0.47265625,0.5283203125,0.5615234375,0.55078125,0.4990234375,0.4296875,0.3701171875,0.359375,0.3994140625,0.4599609375,0.5,0.4892578125,0.4296875,0.359375,0.3046875,0.2880859375,0.3154296875,0.3662109375,0.408203125,0.419921875,0.4326171875,0.484375,0.5537109375,0.6015625,0.6025390625,0.5576171875,0.4892578125,0.4296875,0.4208984375,0.4638671875,0.529296875,0.57421875,0.5673828125,0.509765625,0.4501953125,0.4365234375,0.4697265625,0.5234375,0.55859375,0.546875,0.4892578125,0.421875,0.3642578125,0.33984375,0.3544921875,0.39453125,0.4296875,0.439453125,0.4443359375,0.4599609375,0.4873046875,0.517578125,0.54296875,0.556640625,0.5595703125,0.5673828125,0.599609375,0.63671875,0.6474609375,0.619140625,0.5595703125,0.4892578125,0.43359375,0.43359375,0.4931640625,0.576171875,0.634765625,0.6357421875,0.5791015625,0.5107421875,0.4599609375,0.4453125,0.4736328125,0.5234375,0.5615234375,0.5693359375,0.57421875,0.5986328125,0.62109375,0.6171875,0.576171875,0.5107421875,0.439453125,0.375,0.33984375,0.357421875,0.421875,0.5029296875,0.55859375,0.5693359375,0.57421875,0.599609375,0.6240234375,0.6201171875,0.5791015625,0.5126953125,0.439453125,0.3798828125,0.3681640625,0.4072265625,0.466796875,0.5078125,0.498046875,0.439453125,0.36328125,0.27734375,0.22265625,0.236328125,0.3125,0.41015625,0.4892578125,0.546875,0.5498046875,0.498046875,0.4248046875,0.375,0.380859375,0.439453125,0.5126953125,0.580078125,0.6220703125,0.6240234375,0.5966796875,0.568359375,0.5595703125,0.5458984375,0.49609375,0.427734375,0.380859375,0.37890625,0.4228515625,0.4892578125,0.5595703125,0.623046875,0.6572265625,0.65234375,0.619140625,0.5888671875,0.5791015625,0.57421875,0.5537109375,0.517578125,0.4755859375,0.44140625,0.4228515625,0.419921875,0.43359375,0.4931640625,0.5810546875,0.6533203125,0.67578125,0.6435546875,0.5791015625,0.521484375,0.51171875,0.5517578125,0.6123046875,0.6513671875,0.6396484375,0.5791015625,0.517578125,0.4970703125,0.51953125,0.5595703125,0.58203125,0.5615234375,0.5,0.4384765625,0.4189453125,0.4443359375,0.4892578125,0.515625,0.4990234375,0.439453125,0.380859375,0.3681640625,0.404296875,0.4599609375,0.4970703125,0.486328125,0.4296875,0.375,0.3759765625,0.4345703125,0.515625,0.5712890625,0.568359375,0.509765625,0.447265625,0.4267578125,0.4482421875,0.4892578125,0.5146484375,0.498046875,0.439453125,0.3828125,0.3720703125,0.4111328125,0.46875,0.5068359375,0.4970703125,0.439453125,0.365234375,0.2822265625,0.232421875,0.248046875,0.3251953125,0.421875,0.5,0.5546875,0.5546875,0.498046875,0.419921875,0.3671875,0.37109375,0.4296875,0.4921875,0.5146484375,0.494140625,0.4560546875,0.43359375,0.451171875,0.509765625,0.583984375,0.66796875,0.7177734375,0.701171875,0.62109375,0.5205078125,0.439453125,0.36328125,0.2841796875,0.2470703125,0.28125,0.376953125,0.486328125,0.5693359375,0.6396484375,0.6943359375,0.7109375,0.68359375,0.6328125,0.5908203125,0.5791015625,0.5869140625,0.626953125,0.677734375,0.7060546875,0.69140625,0.638671875,0.5693359375,0.4873046875,0.3837890625,0.2998046875,0.2783203125,0.3271484375,0.412109375,0.4892578125,0.5712890625,0.673828125,0.7578125,0.7802734375,0.734375,0.6533203125,0.5791015625,0.5205078125,0.5,0.51953125,0.5546875,0.572265625,0.5498046875,0.4892578125,0.4326171875,0.4296875,0.4833984375,0.560546875,0.615234375,0.6142578125,0.5595703125,0.490234375,0.4267578125,0.388671875,0.38671875,0.41015625,0.4345703125,0.439453125,0.431640625,0.4052734375,0.3828125,0.3896484375,0.435546875,0.505859375,0.5791015625,0.63671875,0.63671875,0.576171875,0.4921875,0.431640625,0.431640625,0.4892578125,0.5615234375,0.623046875,0.6533203125,0.6416015625,0.603515625,0.5693359375,0.5595703125,0.55859375,0.5595703125,0.5625,0.56640625,0.5693359375,0.5703125,0.5693359375,0.5546875,0.4970703125,0.416015625,0.3525390625,0.337890625,0.3740234375,0.439453125,0.5107421875,0.578125,0.62109375,0.626953125,0.6064453125,0.583984375,0.5791015625,0.5673828125,0.509765625,0.42578125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.5263671875,0.47265625,0.4375,0.4501953125,0.509765625,0.5791015625,0.638671875,0.6669921875,0.65625,0.6201171875,0.5869140625,0.5791015625,0.5751953125,0.5546875,0.5185546875,0.4755859375,0.4404296875,0.421875,0.419921875,0.421875,0.42578125,0.4306640625,0.4345703125,0.4384765625,0.439453125,0.439453125,0.439453125,0.4384765625,0.4375,0.4365234375,0.4365234375,0.4384765625,0.439453125,0.4345703125,0.4111328125,0.388671875,0.39453125,0.4384765625,0.5068359375,0.5791015625,0.6376953125,0.640625,0.5849609375,0.5048828125,0.4462890625,0.4443359375,0.5,0.564453125,0.6083984375,0.609375,0.5654296875,0.5,0.4521484375,0.439453125,0.4296875,0.396484375,0.359375,0.3486328125,0.37890625,0.439453125,0.509765625,0.5849609375,0.6669921875,0.712890625,0.6904296875,0.6083984375,0.5078125,0.4296875,0.3759765625,0.3857421875,0.4580078125,0.556640625,0.6279296875,0.634765625,0.5791015625,0.5078125,0.4384765625,0.390625,0.37890625,0.3955078125,0.4150390625,0.419921875,0.408203125,0.3662109375,0.3134765625,0.28515625,0.298828125,0.3515625,0.419921875,0.48828125,0.5400390625,0.5546875,0.525390625,0.47265625,0.4306640625,0.419921875,0.4296875,0.48046875,0.552734375,0.6064453125,0.6142578125,0.5751953125,0.509765625,0.439453125,0.3759765625,0.341796875,0.3466796875,0.3798828125,0.41015625,0.419921875,0.421875,0.423828125,0.42578125,0.42578125,0.423828125,0.421875,0.419921875,0.4189453125,0.4208984375,0.4267578125,0.4326171875,0.4384765625,0.4404296875,0.439453125,0.44921875,0.4970703125,0.564453125,0.61328125,0.6171875,0.576171875,0.509765625,0.439453125,0.3779296875,0.3466796875,0.353515625,0.384765625,0.4140625,0.419921875,0.421875,0.439453125,0.4736328125,0.5146484375,0.548828125,0.5673828125,0.5693359375,0.564453125,0.544921875,0.5126953125,0.4755859375,0.4462890625,0.4306640625,0.4296875,0.4248046875,0.4013671875,0.37890625,0.384765625,0.427734375,0.49609375,0.5693359375,0.646484375,0.73046875,0.779296875,0.759765625,0.677734375,0.5771484375,0.5,0.4306640625,0.3701171875,0.3388671875,0.345703125,0.37890625,0.41015625,0.419921875,0.4248046875,0.4443359375,0.4765625,0.513671875,0.54296875,0.5576171875,0.5595703125,0.5673828125,0.607421875,0.6591796875,0.689453125,0.677734375,0.626953125,0.5595703125,0.5009765625,0.490234375,0.53125,0.591796875,0.6337890625,0.6259765625,0.5693359375,0.501953125,0.4501953125,0.43359375,0.4599609375,0.5087890625,0.548828125,0.5595703125,0.5693359375,0.60546875,0.646484375,0.662109375,0.6376953125,0.5791015625,0.509765625,0.4501953125,0.4365234375,0.4697265625,0.5234375,0.55859375,0.546875,0.4892578125,0.4326171875,0.421875,0.4609375,0.5185546875,0.556640625,0.546875,0.4892578125,0.4248046875,0.3828125,0.3857421875,0.43359375,0.5,0.5478515625,0.5595703125,0.556640625,0.5419921875,0.515625,0.4833984375,0.45703125,0.4423828125,0.439453125,0.451171875,0.5,0.568359375,0.6162109375,0.619140625,0.576171875,0.509765625,0.44921875,0.427734375,0.4482421875,0.4853515625,0.5068359375,0.48828125,0.4296875,0.36328125,0.3115234375,0.296875,0.3232421875,0.3720703125,0.41015625,0.419921875,0.43359375,0.4931640625,0.5810546875,0.6533203125,0.67578125,0.6435546875,0.5791015625,0.5078125,0.439453125,0.3955078125,0.388671875,0.4091796875,0.43359375,0.439453125,0.453125,0.509765625,0.5927734375,0.6572265625,0.6728515625,0.6357421875,0.5693359375,0.5087890625,0.4970703125,0.53515625,0.59375,0.630859375,0.619140625,0.5595703125,0.478515625,0.376953125,0.296875,0.28125,0.333984375,0.4208984375,0.5,0.5615234375,0.5830078125,0.5615234375,0.5224609375,0.5,0.51953125,0.5791015625,0.64453125,0.6787109375,0.66015625,0.59375,0.5107421875,0.453125,0.439453125,0.431640625,0.3984375,0.3603515625,0.3486328125,0.376953125,0.4384765625,0.509765625,0.5771484375,0.619140625,0.6123046875,0.5576171875,0.484375,0.431640625,0.419921875,0.4228515625,0.44140625,0.4755859375,0.517578125,0.5537109375,0.57421875,0.5791015625,0.5869140625,0.6123046875,0.6337890625,0.6259765625,0.580078125,0.51171875,0.439453125,0.380859375,0.37109375,0.4091796875,0.4658203125,0.5029296875,0.490234375,0.4296875,0.37109375,0.369140625,0.4267578125,0.5078125,0.5654296875,0.5654296875,0.509765625,0.4521484375,0.44921875,0.5009765625,0.57421875,0.6240234375,0.6181640625,0.5595703125,0.5,0.490234375,0.5322265625,0.595703125,0.638671875,0.62890625,0.5693359375,0.5078125,0.4873046875,0.509765625,0.548828125,0.5712890625,0.55078125,0.4892578125,0.431640625,0.4306640625,0.490234375,0.5732421875,0.6337890625,0.6357421875,0.5791015625,0.5205078125,0.5107421875,0.5498046875,0.609375,0.6484375,0.6376953125,0.5791015625,0.4990234375,0.396484375,0.3125,0.291015625,0.3388671875,0.421875,0.5,0.5615234375,0.58203125,0.560546875,0.51953125,0.494140625,0.5107421875,0.5693359375,0.6240234375,0.623046875,0.564453125,0.4833984375,0.427734375,0.4306640625,0.4892578125,0.5703125,0.6708984375,0.7509765625,0.767578125,0.7177734375,0.6337890625,0.5595703125,0.48046875,0.375,0.2822265625,0.248046875,0.283203125,0.3564453125,0.4296875,0.49609375,0.5439453125,0.552734375,0.5205078125,0.4677734375,0.427734375,0.419921875,0.4306640625,0.47265625,0.525390625,0.5546875,0.5400390625,0.48828125,0.419921875,0.34375,0.2626953125,0.2177734375,0.2412109375,0.3271484375,0.4296875,0.509765625,0.5849609375,0.6650390625,0.708984375,0.6845703125,0.599609375,0.498046875,0.419921875,0.365234375,0.3671875,0.4267578125,0.5087890625,0.56640625,0.56640625,0.509765625,0.44921875,0.427734375,0.447265625,0.482421875,0.501953125,0.48046875,0.419921875,0.35546875,0.322265625,0.3408203125,0.408203125,0.4912109375,0.5478515625,0.5595703125,0.544921875,0.48828125,0.4091796875,0.3486328125,0.3369140625,0.3740234375,0.439453125,0.5,0.5166015625,0.490234375,0.4443359375,0.416015625,0.431640625,0.4892578125,0.5546875,0.599609375,0.6025390625,0.5615234375,0.4990234375,0.4521484375,0.439453125,0.4375,0.43359375,0.4296875,0.4248046875,0.421875,0.419921875,0.419921875,0.4130859375,0.3896484375,0.3701171875,0.37890625,0.42578125,0.49609375,0.5693359375,0.6357421875,0.669921875,0.6513671875,0.5830078125,0.4990234375,0.44140625,0.4296875,0.4248046875,0.4033203125,0.384765625,0.51171875,0.4873046875,0.4755859375,0.498046875,0.55078125,0.61328125,0.673828125,0.7119140625,0.71875,0.7001953125,0.6787109375,0.673828125,0.6640625,0.615234375,0.5302734375,0.43359375,0.3583984375,0.3232421875,0.3251953125,0.337890625,0.3583984375,0.3828125,0.40625,0.421875,0.427734375,0.4287109375,0.427734375,0.421875,0.4140625,0.4091796875,0.4111328125,0.4189453125,0.4287109375,0.4345703125,0.4306640625,0.43359375,0.462890625,0.5234375,0.599609375,0.673828125,0.732421875,0.7333984375,0.669921875,0.572265625,0.4892578125,0.4638671875,0.5,0.548828125,0.583984375,0.5849609375,0.548828125,0.4931640625,0.4482421875,0.4287109375,0.4130859375,0.384765625,0.3642578125,0.375,0.421875,0.4873046875,0.55078125,0.6142578125,0.6669921875,0.677734375,0.626953125,0.533203125,0.439453125,0.376953125,0.3427734375,0.3779296875,0.4794921875,0.60546875,0.6982421875,0.71875,0.673828125,0.607421875,0.5263671875,0.4443359375,0.3828125,0.349609375,0.3349609375,0.3251953125,0.306640625,0.263671875,0.2158203125,0.1943359375,0.2138671875,0.2646484375,0.3251953125,0.38671875,0.4375,0.45703125,0.435546875,0.3876953125,0.3447265625,0.3251953125,0.3291015625,0.384765625,0.478515625,0.5693359375,0.615234375,0.6044921875,0.55078125,0.484375,0.40625,0.3369140625,0.298828125,0.296875,0.3125,0.3251953125,0.3369140625,0.3505859375,0.3603515625,0.3603515625,0.3505859375,0.3369140625,0.3251953125,0.3193359375,0.330078125,0.359375,0.3955078125,0.423828125,0.435546875,0.4287109375,0.4306640625,0.4736328125,0.5439453125,0.6064453125,0.630859375,0.6064453125,0.55078125,0.4873046875,0.421875,0.3671875,0.337890625,0.33203125,0.33203125,0.3251953125,0.32421875,0.3583984375,0.4296875,0.517578125,0.5888671875,0.623046875,0.6220703125,0.6044921875,0.5615234375,0.4970703125,0.4326171875,0.3876953125,0.37109375,0.376953125,0.3828125,0.37890625,0.3818359375,0.4111328125,0.4716796875,0.5478515625,0.6220703125,0.6953125,0.7626953125,0.787109375,0.74609375,0.6552734375,0.5615234375,0.5,0.4443359375,0.3798828125,0.32421875,0.294921875,0.296875,0.3125,0.3251953125,0.3427734375,0.3857421875,0.4501953125,0.5146484375,0.5595703125,0.576171875,0.5703125,0.568359375,0.5966796875,0.640625,0.6708984375,0.6669921875,0.6279296875,0.5703125,0.5185546875,0.509765625,0.5478515625,0.609375,0.6572265625,0.6611328125,0.6220703125,0.5693359375,0.51953125,0.4912109375,0.4951171875,0.5234375,0.5537109375,0.5703125,0.587890625,0.62890625,0.6728515625,0.689453125,0.666015625,0.6123046875,0.55078125,0.49609375,0.46875,0.4716796875,0.4921875,0.505859375,0.4912109375,0.4482421875,0.4052734375,0.3974609375,0.4267578125,0.4697265625,0.498046875,0.490234375,0.4482421875,0.4013671875,0.37890625,0.396484375,0.4501953125,0.515625,0.560546875,0.5703125,0.56640625,0.5498046875,0.5185546875,0.48046875,0.44921875,0.4326171875,0.4287109375,0.4404296875,0.4912109375,0.5634765625,0.6220703125,0.6376953125,0.6083984375,0.55078125,0.494140625,0.4580078125,0.4462890625,0.447265625,0.4453125,0.4228515625,0.376953125,0.326171875,0.283203125,0.26171875,0.26953125,0.296875,0.3193359375,0.3251953125,0.341796875,0.419921875,0.5439453125,0.6611328125,0.7275390625,0.724609375,0.673828125,0.6083984375,0.533203125,0.4677734375,0.4287109375,0.419921875,0.42578125,0.4287109375,0.443359375,0.5087890625,0.60546875,0.6865234375,0.7158203125,0.6865234375,0.6220703125,0.560546875,0.5439453125,0.572265625,0.619140625,0.6484375,0.630859375,0.5703125,0.48828125,0.3857421875,0.3037109375,0.28515625,0.3359375,0.421875,0.5,0.564453125,0.6025390625,0.609375,0.5986328125,0.595703125,0.6201171875,0.673828125,0.7275390625,0.7421875,0.69921875,0.6083984375,0.5087890625,0.443359375,0.4287109375,0.421875,0.39453125,0.369140625,0.37109375,0.4111328125,0.478515625,0.55078125,0.615234375,0.640625,0.603515625,0.513671875,0.41015625,0.3408203125,0.3251953125,0.33203125,0.3681640625,0.4384765625,0.525390625,0.60546875,0.6552734375,0.673828125,0.6865234375,0.7001953125,0.693359375,0.650390625,0.576171875,0.49609375,0.4287109375,0.3779296875,0.369140625,0.3994140625,0.44140625,0.462890625,0.439453125,0.376953125,0.3203125,0.32421875,0.3955078125,0.498046875,0.5791015625,0.5966796875,0.55078125,0.501953125,0.5009765625,0.5478515625,0.6083984375,0.6455078125,0.630859375,0.5703125,0.51171875,0.5068359375,0.55859375,0.6328125,0.6845703125,0.6806640625,0.6220703125,0.5576171875,0.5263671875,0.52734375,0.5419921875,0.5439453125,0.51171875,0.4482421875,0.3916015625,0.40234375,0.4853515625,0.6015625,0.693359375,0.7177734375,0.673828125,0.6220703125,0.61328125,0.6474609375,0.69921875,0.7333984375,0.724609375,0.673828125,0.599609375,0.4921875,0.388671875,0.337890625,0.3583984375,0.4248046875,0.5,0.5654296875,0.6025390625,0.60546875,0.5859375,0.5693359375,0.5791015625,0.6220703125,0.6572265625,0.6318359375,0.548828125,0.451171875,0.3876953125,0.3896484375,0.4482421875,0.52734375,0.6240234375,0.703125,0.7265625,0.6904296875,0.626953125,0.5703125,0.5087890625,0.4189453125,0.328125,0.27734375,0.28125,0.3251953125,0.376953125,0.423828125,0.44921875,0.439453125,0.3994140625,0.3525390625,0.32421875,0.3251953125,0.3447265625,0.3876953125,0.435546875,0.45703125,0.4375,0.38671875,0.3251953125,0.2626953125,0.2099609375,0.203125,0.2626953125,0.3701171875,0.4775390625,0.55078125,0.6123046875,0.66015625,0.6591796875,0.5947265625,0.4892578125,0.388671875,0.3251953125,0.2900390625,0.3154296875,0.40234375,0.509765625,0.5859375,0.5986328125,0.55078125,0.4951171875,0.4580078125,0.4423828125,0.4345703125,0.4189453125,0.3818359375,0.3251953125,0.2734375,0.263671875,0.314453125,0.41015625,0.5078125,0.5654296875,0.5703125,0.5478515625,0.4873046875,0.408203125,0.349609375,0.337890625,0.37109375,0.4287109375,0.482421875,0.5,0.4775390625,0.4345703125,0.40234375,0.40625,0.4482421875,0.498046875,0.5390625,0.552734375,0.5302734375,0.486328125,0.4462890625,0.4287109375,0.4169921875,0.396484375,0.37109375,0.3486328125,0.3330078125,0.326171875,0.3251953125,0.322265625,0.31640625,0.3291015625,0.376953125,0.45703125,0.544921875,0.6220703125,0.6845703125,0.701171875,0.65234375,0.552734375,0.4462890625,0.3828125,0.376953125,0.3857421875,0.3935546875,0.416015625,0.4912109375,0.5078125,0.529296875,0.5615234375,0.6044921875,0.65234375,0.701171875,0.740234375,0.7568359375,0.7529296875,0.7431640625,0.740234375,0.7255859375,0.6513671875,0.5244140625,0.3857421875,0.283203125,0.244140625,0.2587890625,0.2890625,0.333984375,0.3857421875,0.4306640625,0.4580078125,0.4677734375,0.46875,0.4658203125,0.4501953125,0.4306640625,0.4189453125,0.423828125,0.443359375,0.46875,0.4912109375,0.501953125,0.513671875,0.5439453125,0.59765625,0.66796875,0.740234375,0.8017578125,0.8134765625,0.7587890625,0.6572265625,0.5537109375,0.4970703125,0.5,0.5205078125,0.546875,0.5625,0.5576171875,0.5322265625,0.498046875,0.46875,0.4404296875,0.4111328125,0.40234375,0.4306640625,0.4892578125,0.5537109375,0.6044921875,0.6455078125,0.6611328125,0.6298828125,0.5546875,0.4638671875,0.39453125,0.3642578125,0.3603515625,0.4189453125,0.533203125,0.6591796875,0.7490234375,0.7724609375,0.740234375,0.6884765625,0.6123046875,0.5166015625,0.4189453125,0.3408203125,0.2890625,0.2587890625,0.2265625,0.181640625,0.142578125,0.134765625,0.1630859375,0.2109375,0.2587890625,0.306640625,0.35546875,0.3828125,0.375,0.3369140625,0.291015625,0.2587890625,0.248046875,0.296875,0.40234375,0.5244140625,0.61328125,0.63671875,0.6044921875,0.548828125,0.4580078125,0.353515625,0.26953125,0.2314453125,0.2353515625,0.2587890625,0.2880859375,0.3232421875,0.34765625,0.34765625,0.3232421875,0.2880859375,0.2587890625,0.2421875,0.263671875,0.3251953125,0.4033203125,0.46484375,0.486328125,0.46875,0.453125,0.4765625,0.53515625,0.6015625,0.6435546875,0.6416015625,0.6044921875,0.5556640625,0.49609375,0.4306640625,0.369140625,0.3212890625,0.2861328125,0.2587890625,0.24609375,0.287109375,0.3857421875,0.5078125,0.6064453125,0.6484375,0.634765625,0.599609375,0.5322265625,0.447265625,0.375,0.3388671875,0.3408203125,0.3642578125,0.3857421875,0.396484375,0.408203125,0.4384765625,0.4921875,0.5625,0.634765625,0.7041015625,0.7509765625,0.748046875,0.6904296875,0.603515625,0.53125,0.5,0.4716796875,0.4130859375,0.3369140625,0.26953125,0.2353515625,0.236328125,0.2587890625,0.294921875,0.3623046875,0.447265625,0.5185546875,0.5546875,0.552734375,0.5302734375,0.5107421875,0.517578125,0.546875,0.5771484375,0.587890625,0.5703125,0.5302734375,0.4912109375,0.4814453125,0.5107421875,0.5654296875,0.619140625,0.64453125,0.634765625,0.6103515625,0.568359375,0.521484375,0.4912109375,0.486328125,0.50390625,0.5302734375,0.5634765625,0.6181640625,0.673828125,0.701171875,0.6904296875,0.650390625,0.6044921875,0.55859375,0.5107421875,0.4697265625,0.44140625,0.4248046875,0.4111328125,0.39453125,0.37890625,0.3759765625,0.38671875,0.40234375,0.4130859375,0.41015625,0.39453125,0.37890625,0.3818359375,0.408203125,0.4521484375,0.4970703125,0.5244140625,0.5302734375,0.5283203125,0.521484375,0.5078125,0.4912109375,0.4775390625,0.470703125,0.46875,0.478515625,0.521484375,0.5849609375,0.640625,0.662109375,0.6455078125,0.6044921875,0.5576171875,0.505859375,0.4580078125,0.421875,0.3984375,0.3818359375,0.3642578125,0.3427734375,0.31640625,0.2900390625,0.26953125,0.2607421875,0.2587890625,0.2587890625,0.2763671875,0.361328125,0.501953125,0.6484375,0.748046875,0.7734375,0.740234375,0.689453125,0.6240234375,0.5546875,0.501953125,0.4755859375,0.46875,0.46875,0.4833984375,0.544921875,0.6357421875,0.708984375,0.7333984375,0.701171875,0.634765625,0.572265625,0.548828125,0.56640625,0.5986328125,0.615234375,0.591796875,0.5302734375,0.44921875,0.3515625,0.2783203125,0.2705078125,0.330078125,0.4208984375,0.5,0.568359375,0.6240234375,0.6572265625,0.6708984375,0.6796875,0.7001953125,0.740234375,0.7783203125,0.7783203125,0.7255859375,0.6357421875,0.541015625,0.4814453125,0.46875,0.4619140625,0.4375,0.4140625,0.4189453125,0.462890625,0.53125,0.6044921875,0.666015625,0.6767578125,0.61328125,0.4912109375,0.3603515625,0.27734375,0.2587890625,0.2666015625,0.3095703125,0.3974609375,0.513671875,0.6259765625,0.703125,0.740234375,0.765625,0.7783203125,0.7568359375,0.693359375,0.6044921875,0.5234375,0.46875,0.4326171875,0.4287109375,0.4501953125,0.4716796875,0.46875,0.4296875,0.3642578125,0.306640625,0.3095703125,0.3837890625,0.4970703125,0.595703125,0.6328125,0.6044921875,0.568359375,0.568359375,0.5966796875,0.6259765625,0.6298828125,0.5947265625,0.5302734375,0.47265625,0.474609375,0.5380859375,0.626953125,0.6904296875,0.6923828125,0.634765625,0.5693359375,0.529296875,0.5166015625,0.513671875,0.5,0.4599609375,0.39453125,0.3388671875,0.3544921875,0.4521484375,0.59375,0.7158203125,0.7666015625,0.740234375,0.7021484375,0.6953125,0.720703125,0.7587890625,0.7841796875,0.7783203125,0.740234375,0.6806640625,0.576171875,0.4609375,0.3857421875,0.3798828125,0.4287109375,0.5,0.5693359375,0.6279296875,0.6572265625,0.654296875,0.634765625,0.623046875,0.634765625,0.6376953125,0.5810546875,0.4775390625,0.375,0.3203125,0.3330078125,0.39453125,0.4697265625,0.5498046875,0.607421875,0.62109375,0.59375,0.5546875,0.5302734375,0.5048828125,0.4599609375,0.4052734375,0.361328125,0.341796875,0.3466796875,0.3642578125,0.3759765625,0.3623046875,0.322265625,0.275390625,0.2431640625,0.23828125,0.2587890625,0.291015625,0.3369140625,0.375,0.3828125,0.35546875,0.306640625,0.2587890625,0.216796875,0.19921875,0.234375,0.3251953125,0.4443359375,0.5458984375,0.6044921875,0.6435546875,0.6455078125,0.5908203125,0.48828125,0.3740234375,0.2919921875,0.2587890625,0.2548828125,0.3095703125,0.4169921875,0.53515625,0.6181640625,0.6376953125,0.6044921875,0.55859375,0.509765625,0.4580078125,0.4052734375,0.353515625,0.3046875,0.2587890625,0.224609375,0.240234375,0.3115234375,0.4140625,0.5029296875,0.54296875,0.5302734375,0.49609375,0.443359375,0.3916015625,0.3671875,0.3818359375,0.4228515625,0.46875,0.5087890625,0.521484375,0.5,0.4521484375,0.4052734375,0.3837890625,0.39453125,0.41796875,0.4560546875,0.49609375,0.51953125,0.5166015625,0.49609375,0.46875,0.4384765625,0.3935546875,0.341796875,0.2978515625,0.2705078125,0.259765625,0.2587890625,0.2578125,0.26171875,0.2919921875,0.361328125,0.4580078125,0.556640625,0.634765625,0.6943359375,0.69921875,0.6318359375,0.5185546875,0.41015625,0.3544921875,0.3642578125,0.392578125,0.4306640625,0.4853515625,0.474609375,0.5244140625,0.5703125,0.6064453125,0.634765625,0.6630859375,0.6953125,0.7236328125,0.740234375,0.744140625,0.7412109375,0.740234375,0.72265625,0.6376953125,0.4970703125,0.3505859375,0.2509765625,0.2255859375,0.2587890625,0.3095703125,0.375,0.4443359375,0.4970703125,0.5234375,0.5302734375,0.5302734375,0.5234375,0.4970703125,0.4638671875,0.4443359375,0.4521484375,0.4853515625,0.5302734375,0.5693359375,0.5859375,0.587890625,0.59375,0.6201171875,0.671875,0.740234375,0.806640625,0.8408203125,0.814453125,0.728515625,0.6181640625,0.533203125,0.5,0.48828125,0.50390625,0.541015625,0.576171875,0.5888671875,0.5703125,0.5302734375,0.484375,0.44921875,0.4443359375,0.48046875,0.5419921875,0.6005859375,0.634765625,0.65234375,0.6318359375,0.568359375,0.4853515625,0.416015625,0.384765625,0.39453125,0.4248046875,0.49609375,0.595703125,0.6904296875,0.7490234375,0.7607421875,0.740234375,0.7099609375,0.658203125,0.580078125,0.482421875,0.38671875,0.310546875,0.2587890625,0.2109375,0.1630859375,0.134765625,0.142578125,0.181640625,0.2265625,0.2587890625,0.291015625,0.3369140625,0.375,0.3828125,0.35546875,0.306640625,0.2587890625,0.2275390625,0.2548828125,0.3505859375,0.48046875,0.5927734375,0.6455078125,0.634765625,0.5947265625,0.5029296875,0.3798828125,0.2734375,0.216796875,0.2197265625,0.2587890625,0.3095703125,0.369140625,0.4111328125,0.4111328125,0.369140625,0.3095703125,0.2587890625,0.2275390625,0.25390625,0.33984375,0.44921875,0.53515625,0.5615234375,0.5302734375,0.4921875,0.4873046875,0.521484375,0.580078125,0.6318359375,0.65234375,0.634765625,0.6064453125,0.568359375,0.513671875,0.4443359375,0.3720703125,0.30859375,0.2587890625,0.2294921875,0.2646484375,0.3671875,0.4970703125,0.599609375,0.634765625,0.6044921875,0.5498046875,0.4638671875,0.375,0.3193359375,0.314453125,0.3486328125,0.39453125,0.43359375,0.4501953125,0.4521484375,0.4580078125,0.484375,0.5361328125,0.6044921875,0.6689453125,0.6982421875,0.673828125,0.607421875,0.5341796875,0.4931640625,0.5,0.505859375,0.4638671875,0.3798828125,0.2900390625,0.23046875,0.22265625,0.2587890625,0.314453125,0.3994140625,0.48828125,0.5439453125,0.548828125,0.5146484375,0.46875,0.4287109375,0.4111328125,0.421875,0.4521484375,0.4814453125,0.48828125,0.46875,0.4443359375,0.4296875,0.44140625,0.48046875,0.5341796875,0.5791015625,0.6044921875,0.61328125,0.5849609375,0.5244140625,0.4609375,0.4248046875,0.4306640625,0.46875,0.5205078125,0.58984375,0.654296875,0.6904296875,0.6884765625,0.6630859375,0.634765625,0.6005859375,0.537109375,0.4580078125,0.3896484375,0.3515625,0.3486328125,0.3642578125,0.3798828125,0.3828125,0.3720703125,0.3564453125,0.345703125,0.3486328125,0.3642578125,0.384765625,0.4111328125,0.4384765625,0.4580078125,0.4677734375,0.4697265625,0.46875,0.470703125,0.4775390625,0.4912109375,0.5078125,0.521484375,0.5283203125,0.5302734375,0.5361328125,0.564453125,0.607421875,0.646484375,0.6650390625,0.658203125,0.634765625,0.6005859375,0.5419921875,0.46875,0.408203125,0.3779296875,0.3779296875,0.39453125,0.41015625,0.4072265625,0.3798828125,0.3369140625,0.2919921875,0.2646484375,0.2587890625,0.2734375,0.34765625,0.474609375,0.61328125,0.7158203125,0.7548828125,0.740234375,0.7099609375,0.6650390625,0.61328125,0.568359375,0.541015625,0.53125,0.5302734375,0.5419921875,0.5927734375,0.662109375,0.712890625,0.7158203125,0.6728515625,0.6044921875,0.5419921875,0.5146484375,0.5244140625,0.5498046875,0.5595703125,0.5322265625,0.46875,0.3896484375,0.2998046875,0.240234375,0.248046875,0.3212890625,0.4189453125,0.5,0.5712890625,0.6376953125,0.6845703125,0.70703125,0.7119140625,0.71875,0.740234375,0.7607421875,0.7548828125,0.712890625,0.6455078125,0.5791015625,0.5380859375,0.5302734375,0.5224609375,0.4931640625,0.4638671875,0.4609375,0.498046875,0.5625,0.634765625,0.6962890625,0.703125,0.6318359375,0.501953125,0.365234375,0.27734375,0.2587890625,0.263671875,0.2958984375,0.369140625,0.4775390625,0.5927734375,0.6845703125,0.740234375,0.783203125,0.8056640625,0.787109375,0.7236328125,0.6376953125,0.56640625,0.5302734375,0.5107421875,0.5166015625,0.53515625,0.541015625,0.517578125,0.4638671875,0.39453125,0.333984375,0.326171875,0.3857421875,0.4912109375,0.59375,0.6455078125,0.634765625,0.615234375,0.6181640625,0.62890625,0.626953125,0.5966796875,0.5390625,0.46875,0.412109375,0.41796875,0.48828125,0.5849609375,0.6552734375,0.6611328125,0.6044921875,0.5390625,0.4990234375,0.4853515625,0.482421875,0.4697265625,0.4296875,0.3642578125,0.306640625,0.3154296875,0.4052734375,0.546875,0.6787109375,0.7470703125,0.740234375,0.7177734375,0.7138671875,0.728515625,0.7509765625,0.765625,0.76171875,0.740234375,0.69921875,0.6083984375,0.4970703125,0.4140625,0.3935546875,0.431640625,0.5,0.57421875,0.650390625,0.701171875,0.70703125,0.673828125,0.630859375,0.6044921875,0.5703125,0.486328125,0.375,0.2890625,0.2626953125,0.296875,0.3642578125,0.43359375,0.48828125,0.5107421875,0.5,0.4736328125,0.4580078125,0.46875,0.48828125,0.50390625,0.5048828125,0.4853515625,0.451171875,0.4169921875,0.39453125,0.3662109375,0.3095703125,0.2421875,0.1953125,0.1875,0.2158203125,0.2587890625,0.306640625,0.35546875,0.3828125,0.375,0.3369140625,0.291015625,0.2587890625,0.23828125,0.2490234375,0.30859375,0.408203125,0.5166015625,0.5966796875,0.634765625,0.6494140625,0.6123046875,0.5185546875,0.400390625,0.2998046875,0.2529296875,0.2587890625,0.2900390625,0.3642578125,0.4716796875,0.57421875,0.6396484375,0.654296875,0.634765625,0.6044921875,0.5546875,0.4853515625,0.408203125,0.3388671875,0.2900390625,0.2587890625,0.244140625,0.27734375,0.3525390625,0.4384765625,0.4970703125,0.5048828125,0.46875,0.4228515625,0.3818359375,0.3671875,0.3916015625,0.443359375,0.49609375,0.5302734375,0.5546875,0.564453125,0.546875,0.5,0.439453125,0.3896484375,0.3642578125,0.35546875,0.388671875,0.4560546875,0.5263671875,0.5693359375,0.5673828125,0.5302734375,0.4794921875,0.4130859375,0.3447265625,0.2919921875,0.265625,0.2587890625,0.2587890625,0.2568359375,0.2568359375,0.28125,0.341796875,0.4326171875,0.5263671875,0.6044921875,0.6630859375,0.6640625,0.5966796875,0.4912109375,0.3994140625,0.365234375,0.39453125,0.443359375,0.5029296875,0.568359375,0.4716796875,0.52734375,0.576171875,0.607421875,0.6220703125,0.6328125,0.646484375,0.66015625,0.669921875,0.673828125,0.673828125,0.673828125,0.6572265625,0.5791015625,0.455078125,0.337890625,0.271484375,0.2744140625,0.3251953125,0.390625,0.4658203125,0.53125,0.5703125,0.5791015625,0.5732421875,0.5703125,0.5615234375,0.525390625,0.48046875,0.4541015625,0.4658203125,0.5107421875,0.5703125,0.6220703125,0.6376953125,0.619140625,0.58984375,0.580078125,0.609375,0.673828125,0.74609375,0.806640625,0.8193359375,0.7646484375,0.6630859375,0.5634765625,0.5,0.4599609375,0.466796875,0.51953125,0.5849609375,0.6279296875,0.62109375,0.5703125,0.509765625,0.4658203125,0.4580078125,0.4931640625,0.552734375,0.6015625,0.6220703125,0.62109375,0.5771484375,0.5029296875,0.4306640625,0.3935546875,0.4033203125,0.4482421875,0.50390625,0.5751953125,0.642578125,0.6845703125,0.6953125,0.685546875,0.673828125,0.6640625,0.6494140625,0.6162109375,0.5546875,0.47265625,0.3916015625,0.3251953125,0.2646484375,0.2138671875,0.1943359375,0.2158203125,0.263671875,0.306640625,0.3251953125,0.3447265625,0.3876953125,0.435546875,0.45703125,0.4375,0.38671875,0.3251953125,0.2744140625,0.271484375,0.333984375,0.4423828125,0.552734375,0.6162109375,0.6220703125,0.595703125,0.5166015625,0.4033203125,0.3037109375,0.2568359375,0.271484375,0.3251953125,0.3935546875,0.474609375,0.53125,0.53125,0.474609375,0.3935546875,0.3251953125,0.2802734375,0.30078125,0.3896484375,0.505859375,0.5947265625,0.615234375,0.5703125,0.5126953125,0.48046875,0.48828125,0.5322265625,0.587890625,0.6220703125,0.6220703125,0.61328125,0.60546875,0.5830078125,0.53515625,0.4658203125,0.390625,0.3251953125,0.279296875,0.2978515625,0.3828125,0.494140625,0.5791015625,0.5966796875,0.55078125,0.48046875,0.3876953125,0.3076171875,0.2802734375,0.314453125,0.3818359375,0.4482421875,0.5,0.515625,0.4970703125,0.4677734375,0.4580078125,0.4873046875,0.55078125,0.6123046875,0.62890625,0.5927734375,0.52734375,0.4716796875,0.4609375,0.5,0.5361328125,0.5166015625,0.4423828125,0.3486328125,0.283203125,0.27734375,0.3251953125,0.396484375,0.4892578125,0.5693359375,0.5966796875,0.5625,0.4951171875,0.4287109375,0.37109375,0.33203125,0.328125,0.3583984375,0.40234375,0.4306640625,0.4287109375,0.4150390625,0.392578125,0.3798828125,0.39453125,0.439453125,0.4970703125,0.55078125,0.58984375,0.576171875,0.5126953125,0.4326171875,0.37890625,0.37890625,0.4287109375,0.494140625,0.5693359375,0.630859375,0.66015625,0.6552734375,0.6357421875,0.6220703125,0.5986328125,0.5322265625,0.4375,0.35546875,0.318359375,0.33203125,0.376953125,0.419921875,0.427734375,0.3984375,0.35546875,0.3271484375,0.3349609375,0.376953125,0.427734375,0.4716796875,0.4921875,0.484375,0.4580078125,0.4345703125,0.4287109375,0.4326171875,0.44921875,0.48046875,0.5185546875,0.5498046875,0.56640625,0.5703125,0.572265625,0.5849609375,0.6044921875,0.6220703125,0.6318359375,0.630859375,0.6220703125,0.6005859375,0.5419921875,0.4638671875,0.400390625,0.37890625,0.400390625,0.4482421875,0.494140625,0.5166015625,0.4990234375,0.4453125,0.3798828125,0.3359375,0.3251953125,0.3349609375,0.3837890625,0.46875,0.5654296875,0.640625,0.67578125,0.673828125,0.6611328125,0.640625,0.6162109375,0.5927734375,0.5771484375,0.5712890625,0.5703125,0.5791015625,0.619140625,0.66796875,0.693359375,0.67578125,0.62109375,0.55078125,0.48828125,0.462890625,0.4755859375,0.50390625,0.517578125,0.4912109375,0.4287109375,0.3505859375,0.265625,0.21484375,0.2333984375,0.3154296875,0.41796875,0.5,0.572265625,0.6396484375,0.68359375,0.6953125,0.6826171875,0.6689453125,0.673828125,0.6806640625,0.67578125,0.6552734375,0.623046875,0.5927734375,0.57421875,0.5703125,0.5615234375,0.525390625,0.484375,0.466796875,0.4921875,0.55078125,0.6220703125,0.6845703125,0.701171875,0.6484375,0.5400390625,0.419921875,0.3427734375,0.3251953125,0.3251953125,0.33203125,0.36328125,0.4296875,0.5185546875,0.60546875,0.673828125,0.732421875,0.7705078125,0.7666015625,0.7177734375,0.646484375,0.5908203125,0.5703125,0.5673828125,0.5859375,0.6103515625,0.61328125,0.580078125,0.5185546875,0.4482421875,0.3837890625,0.3583984375,0.3916015625,0.47265625,0.5625,0.6181640625,0.6220703125,0.6171875,0.6279296875,0.63671875,0.6201171875,0.5712890625,0.501953125,0.4287109375,0.3720703125,0.3759765625,0.443359375,0.5361328125,0.6044921875,0.6083984375,0.55078125,0.4873046875,0.455078125,0.45703125,0.4716796875,0.47265625,0.44140625,0.376953125,0.3154296875,0.3056640625,0.3662109375,0.478515625,0.5966796875,0.6669921875,0.673828125,0.6650390625,0.6630859375,0.6689453125,0.677734375,0.68359375,0.681640625,0.673828125,0.6494140625,0.5791015625,0.484375,0.4130859375,0.39453125,0.4326171875,0.5,0.5771484375,0.666015625,0.728515625,0.7333984375,0.6826171875,0.609375,0.55078125,0.4873046875,0.3876953125,0.2861328125,0.2314453125,0.2431640625,0.3046875,0.376953125,0.44140625,0.470703125,0.45703125,0.4189453125,0.38671875,0.388671875,0.4287109375,0.486328125,0.5556640625,0.6064453125,0.6123046875,0.568359375,0.50390625,0.4482421875,0.38671875,0.298828125,0.216796875,0.1796875,0.2021484375,0.26171875,0.3251953125,0.38671875,0.4375,0.45703125,0.435546875,0.3876953125,0.3447265625,0.3251953125,0.3212890625,0.34375,0.3994140625,0.4775390625,0.5537109375,0.603515625,0.6220703125,0.6181640625,0.5595703125,0.4580078125,0.353515625,0.2890625,0.2841796875,0.3251953125,0.3837890625,0.462890625,0.5458984375,0.607421875,0.6328125,0.6318359375,0.6220703125,0.6064453125,0.568359375,0.5087890625,0.4384765625,0.37890625,0.3408203125,0.3251953125,0.326171875,0.3671875,0.43359375,0.4912109375,0.5107421875,0.484375,0.4287109375,0.37109375,0.337890625,0.349609375,0.408203125,0.4873046875,0.5478515625,0.5703125,0.5830078125,0.5966796875,0.59375,0.5595703125,0.5,0.4326171875,0.376953125,0.3408203125,0.3623046875,0.44140625,0.5400390625,0.6103515625,0.6181640625,0.5703125,0.5048828125,0.4296875,0.3642578125,0.3251953125,0.31640625,0.3232421875,0.3251953125,0.3212890625,0.306640625,0.3037109375,0.3330078125,0.396484375,0.4765625,0.55078125,0.6103515625,0.6142578125,0.55859375,0.4755859375,0.41015625,0.400390625,0.4482421875,0.51171875,0.5771484375,0.6318359375,0.4814453125,0.517578125,0.5478515625,0.564453125,0.5693359375,0.5712890625,0.5732421875,0.576171875,0.578125,0.5791015625,0.5791015625,0.5791015625,0.5654296875,0.505859375,0.41796875,0.345703125,0.3232421875,0.35546875,0.419921875,0.4912109375,0.5595703125,0.603515625,0.6103515625,0.58984375,0.5654296875,0.5595703125,0.5498046875,0.5087890625,0.45703125,0.4267578125,0.4404296875,0.4912109375,0.5595703125,0.6181640625,0.6298828125,0.59375,0.5390625,0.5048828125,0.5185546875,0.5791015625,0.65625,0.7392578125,0.78515625,0.7626953125,0.6796875,0.578125,0.5,0.4443359375,0.4423828125,0.4951171875,0.5693359375,0.62109375,0.6162109375,0.5595703125,0.4912109375,0.4404296875,0.4287109375,0.4599609375,0.5146484375,0.5576171875,0.5693359375,0.5595703125,0.51171875,0.443359375,0.392578125,0.3857421875,0.4248046875,0.4892578125,0.55859375,0.6201171875,0.654296875,0.6494140625,0.6181640625,0.587890625,0.5791015625,0.583984375,0.603515625,0.6201171875,0.6083984375,0.560546875,0.4912109375,0.419921875,0.3515625,0.298828125,0.28515625,0.3134765625,0.3662109375,0.408203125,0.419921875,0.4306640625,0.47265625,0.525390625,0.5546875,0.5400390625,0.48828125,0.419921875,0.35546875,0.3232421875,0.3447265625,0.4150390625,0.5,0.5576171875,0.5693359375,0.5546875,0.494140625,0.408203125,0.33984375,0.3212890625,0.3544921875,0.419921875,0.498046875,0.58984375,0.654296875,0.654296875,0.58984375,0.498046875,0.419921875,0.3642578125,0.37109375,0.44140625,0.5380859375,0.6083984375,0.6142578125,0.5595703125,0.4912109375,0.4423828125,0.43359375,0.4658203125,0.5205078125,0.560546875,0.5693359375,0.57421875,0.595703125,0.6142578125,0.6044921875,0.5595703125,0.4912109375,0.419921875,0.36328125,0.3642578125,0.4228515625,0.505859375,0.5654296875,0.5654296875,0.509765625,0.4306640625,0.3369140625,0.267578125,0.26171875,0.322265625,0.412109375,0.4892578125,0.5478515625,0.560546875,0.5244140625,0.4697265625,0.4345703125,0.44921875,0.509765625,0.5693359375,0.5810546875,0.541015625,0.4794921875,0.4365234375,0.443359375,0.5,0.5546875,0.5537109375,0.4970703125,0.4169921875,0.361328125,0.36328125,0.419921875,0.498046875,0.5927734375,0.662109375,0.6669921875,0.6064453125,0.517578125,0.439453125,0.3720703125,0.3212890625,0.3095703125,0.33984375,0.3916015625,0.431640625,0.439453125,0.4306640625,0.3974609375,0.3623046875,0.3525390625,0.3818359375,0.44140625,0.509765625,0.564453125,0.5654296875,0.5107421875,0.43359375,0.3798828125,0.3828125,0.439453125,0.5107421875,0.5791015625,0.6220703125,0.626953125,0.603515625,0.5771484375,0.5693359375,0.5546875,0.4970703125,0.4150390625,0.349609375,0.33203125,0.3662109375,0.4296875,0.486328125,0.4970703125,0.458984375,0.400390625,0.3623046875,0.373046875,0.4296875,0.49609375,0.5478515625,0.5625,0.5361328125,0.4873046875,0.44921875,0.439453125,0.4423828125,0.45703125,0.4833984375,0.515625,0.5419921875,0.556640625,0.5595703125,0.5595703125,0.5615234375,0.5654296875,0.568359375,0.5703125,0.5703125,0.5693359375,0.556640625,0.505859375,0.4365234375,0.3876953125,0.3837890625,0.4248046875,0.4892578125,0.5546875,0.595703125,0.5927734375,0.5458984375,0.4794921875,0.4306640625,0.419921875,0.423828125,0.4443359375,0.48046875,0.5234375,0.55859375,0.5771484375,0.5791015625,0.5771484375,0.5732421875,0.568359375,0.564453125,0.560546875,0.5595703125,0.5595703125,0.568359375,0.603515625,0.646484375,0.6630859375,0.638671875,0.580078125,0.509765625,0.4482421875,0.4287109375,0.453125,0.49609375,0.5205078125,0.5009765625,0.439453125,0.361328125,0.2744140625,0.220703125,0.2373046875,0.3173828125,0.41796875,0.5,0.5712890625,0.6318359375,0.662109375,0.65234375,0.6162109375,0.5859375,0.5791015625,0.580078125,0.5791015625,0.5751953125,0.5693359375,0.5634765625,0.5595703125,0.5595703125,0.5498046875,0.5087890625,0.4580078125,0.4296875,0.4453125,0.4990234375,0.5693359375,0.6357421875,0.669921875,0.6494140625,0.580078125,0.4931640625,0.43359375,0.419921875,0.4140625,0.392578125,0.3759765625,0.388671875,0.4365234375,0.5078125,0.5791015625,0.6474609375,0.697265625,0.70703125,0.6728515625,0.615234375,0.5712890625,0.5595703125,0.56640625,0.59765625,0.6357421875,0.6484375,0.62109375,0.560546875,0.4892578125,0.421875,0.3798828125,0.3857421875,0.4375,0.5087890625,0.55859375,0.5693359375,0.57421875,0.599609375,0.6240234375,0.6201171875,0.5791015625,0.5126953125,0.439453125,0.3818359375,0.37890625,0.4345703125,0.5146484375,0.5703125,0.5673828125,0.509765625,0.4482421875,0.427734375,0.4501953125,0.4892578125,0.51171875,0.4912109375,0.4296875,0.36328125,0.330078125,0.3515625,0.421875,0.5087890625,0.5673828125,0.5791015625,0.578125,0.5771484375,0.578125,0.580078125,0.5810546875,0.5810546875,0.5791015625,0.5654296875,0.513671875,0.44140625,0.390625,0.3876953125,0.431640625,0.5,0.5791015625,0.6728515625,0.7392578125,0.740234375,0.67578125,0.5859375,0.509765625,0.4306640625,0.330078125,0.24609375,0.2236328125,0.26953125,0.3525390625,0.4296875,0.490234375,0.50390625,0.46875,0.412109375,0.373046875,0.3828125,0.439453125,0.5166015625,0.6123046875,0.6875,0.7001953125,0.6484375,0.564453125,0.4892578125,0.412109375,0.3125,0.232421875,0.212890625,0.26171875,0.34375,0.419921875,0.48828125,0.5400390625,0.5546875,0.525390625,0.47265625,0.4306640625,0.419921875,0.421875,0.4375,0.46875,0.5087890625,0.5439453125,0.5634765625,0.5693359375,0.5576171875,0.5009765625,0.4169921875,0.34765625,0.326171875,0.357421875,0.419921875,0.490234375,0.5595703125,0.6064453125,0.6171875,0.599609375,0.5771484375,0.5693359375,0.564453125,0.5458984375,0.513671875,0.4755859375,0.443359375,0.4248046875,0.419921875,0.4287109375,0.470703125,0.5263671875,0.5625,0.5546875,0.5068359375,0.439453125,0.3740234375,0.3369140625,0.3486328125,0.4091796875,0.48828125,0.544921875,0.5595703125,0.5673828125,0.5927734375,0.615234375,0.609375,0.56640625,0.5,0.4296875,0.3759765625,0.3828125,0.451171875,0.5439453125,0.6103515625,0.615234375,0.5595703125,0.48828125,0.419921875,0.3759765625,0.3681640625,0.3896484375,0.4130859375,0.419921875,0.412109375,0.380859375,0.34765625,0.3408203125,0.3740234375,0.4375,0.509765625,0.5693359375,0.578125,0.53515625,0.4697265625,0.4248046875,0.431640625,0.4892578125,0.5595703125,0.62109375,0.65234375,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.513671875,0.4755859375,0.443359375,0.4248046875,0.419921875,0.41796875,0.4169921875,0.41796875,0.4208984375,0.423828125,0.427734375,0.4296875,0.4248046875,0.4033203125,0.384765625,0.39453125,0.439453125,0.5078125,0.5791015625,0.6435546875,0.67578125,0.6533203125,0.5810546875,0.4931640625,0.43359375,0.419921875,0.41015625,0.369140625,0.3173828125,0.287109375,0.30078125,0.3515625,0.419921875,0.478515625,0.4931640625,0.458984375,0.40625,0.37109375,0.3828125,0.439453125,0.517578125,0.6171875,0.697265625,0.716796875,0.66796875,0.5859375,0.509765625,0.44921875,0.4296875,0.4521484375,0.4921875,0.515625,0.498046875,0.439453125,0.3720703125,0.3193359375,0.30078125,0.32421875,0.3701171875,0.4091796875,0.419921875,0.4140625,0.384765625,0.3515625,0.34375,0.373046875,0.431640625,0.5,0.564453125,0.6044921875,0.599609375,0.5498046875,0.48046875,0.4306640625,0.419921875,0.4326171875,0.490234375,0.57421875,0.640625,0.658203125,0.6240234375,0.5595703125,0.4912109375,0.4384765625,0.4248046875,0.453125,0.505859375,0.5478515625,0.5595703125,0.5703125,0.6123046875,0.6650390625,0.6943359375,0.6796875,0.6279296875,0.5595703125,0.48828125,0.419921875,0.3759765625,0.3681640625,0.3896484375,0.4130859375,0.419921875,0.4140625,0.392578125,0.3759765625,0.388671875,0.4365234375,0.5078125,0.5791015625,0.6572265625,0.7490234375,0.8134765625,0.8115234375,0.7431640625,0.6494140625,0.5693359375,0.505859375,0.4775390625,0.484375,0.5048828125,0.51171875,0.4833984375,0.419921875,0.349609375,0.296875,0.2822265625,0.3115234375,0.365234375,0.408203125,0.419921875,0.4345703125,0.49609375,0.583984375,0.6552734375,0.6767578125,0.6435546875,0.5791015625,0.5185546875,0.498046875,0.517578125,0.5556640625,0.5771484375,0.55859375,0.5,0.423828125,0.333984375,0.271484375,0.2734375,0.33984375,0.431640625,0.509765625,0.5673828125,0.57421875,0.529296875,0.4638671875,0.4208984375,0.4296875,0.4892578125,0.5498046875,0.5615234375,0.5234375,0.4658203125,0.427734375,0.439453125,0.5,0.560546875,0.5791015625,0.5517578125,0.5068359375,0.48046875,0.498046875,0.5595703125,0.638671875,0.732421875,0.7978515625,0.796875,0.73046875,0.6376953125,0.5595703125,0.4912109375,0.4423828125,0.4345703125,0.4697265625,0.5263671875,0.5693359375,0.5791015625,0.5673828125,0.5146484375,0.44140625,0.38671875,0.3798828125,0.421875,0.4892578125,0.55078125,0.5703125,0.5458984375,0.5029296875,0.478515625,0.498046875,0.5595703125,0.6259765625,0.6640625,0.650390625,0.5888671875,0.5087890625,0.4521484375,0.439453125,0.43359375,0.4091796875,0.388671875,0.3955078125,0.439453125,0.5078125,0.5791015625,0.63671875,0.6455078125,0.6025390625,0.5400390625,0.4990234375,0.509765625,0.5693359375,0.638671875,0.6884765625,0.6982421875,0.6650390625,0.609375,0.568359375,0.5595703125,0.55859375,0.544921875,0.5185546875,0.486328125,0.4580078125,0.4423828125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.431640625,0.3994140625,0.3623046875,0.3515625,0.3798828125,0.439453125,0.509765625,0.5791015625,0.6357421875,0.66015625,0.6435546875,0.6025390625,0.568359375,0.5595703125,0.556640625,0.5400390625,0.5107421875,0.474609375,0.4423828125,0.4248046875,0.419921875,0.41796875,0.41796875,0.4189453125,0.4208984375,0.421875,0.4208984375,0.419921875,0.4296875,0.48046875,0.552734375,0.6064453125,0.6142578125,0.5751953125,0.509765625,0.453125,0.4501953125,0.50390625,0.580078125,0.6328125,0.6279296875,0.5693359375,0.48828125,0.3876953125,0.3076171875,0.291015625,0.341796875,0.4248046875,0.5,0.564453125,0.6044921875,0.6005859375,0.552734375,0.486328125,0.439453125,0.4296875,0.4306640625,0.431640625,0.4306640625,0.4287109375,0.427734375,0.4287109375,0.4296875,0.421875,0.3818359375,0.3291015625,0.296875,0.3056640625,0.353515625,0.419921875,0.490234375,0.55859375,0.60546875,0.6171875,0.6025390625,0.5830078125,0.5791015625,0.5673828125,0.5087890625,0.421875,0.3515625,0.330078125,0.36328125,0.4296875,0.5,0.5537109375,0.5693359375,0.541015625,0.490234375,0.44921875,0.439453125,0.451171875,0.5,0.568359375,0.6162109375,0.619140625,0.576171875,0.509765625,0.439453125,0.376953125,0.34375,0.3505859375,0.3818359375,0.412109375,0.419921875,0.4326171875,0.4892578125,0.5712890625,0.63671875,0.6552734375,0.623046875,0.5595703125,0.5009765625,0.486328125,0.5146484375,0.5595703125,0.5869140625,0.5693359375,0.509765625,0.4521484375,0.4482421875,0.4990234375,0.57421875,0.626953125,0.625,0.5693359375,0.4990234375,0.4296875,0.3828125,0.37109375,0.3896484375,0.412109375,0.419921875,0.421875,0.423828125,0.427734375,0.431640625,0.435546875,0.4375,0.439453125,0.4326171875,0.3994140625,0.3583984375,0.341796875,0.3642578125,0.4208984375,0.4892578125,0.568359375,0.662109375,0.7314453125,0.7373046875,0.6767578125,0.5869140625,0.509765625,0.4326171875,0.3466796875,0.2939453125,0.3095703125,0.3876953125,0.48828125,0.5693359375,0.6298828125,0.6435546875,0.6083984375,0.5517578125,0.5126953125,0.5224609375,0.5791015625,0.6533203125,0.732421875,0.775390625,0.751953125,0.66796875,0.5673828125,0.4892578125,0.4150390625,0.3349609375,0.2890625,0.310546875,0.3916015625,0.4912109375,0.5693359375,0.6357421875,0.6865234375,0.701171875,0.6728515625,0.62109375,0.580078125,0.5693359375,0.564453125,0.5478515625,0.517578125,0.4814453125,0.451171875,0.4345703125,0.4296875,0.421875,0.3994140625,0.3818359375,0.392578125,0.439453125,0.5087890625,0.5791015625,0.6416015625,0.671875,0.6474609375,0.5751953125,0.4892578125,0.431640625,0.419921875,0.4248046875,0.4443359375,0.4765625,0.513671875,0.54296875,0.5576171875,0.5595703125,0.5673828125,0.6083984375,0.6611328125,0.6923828125,0.6806640625,0.62890625,0.5595703125,0.486328125,0.419921875,0.37890625,0.375,0.3994140625,0.4248046875,0.4296875,0.44140625,0.4990234375,0.5830078125,0.6513671875,0.669921875,0.6357421875,0.5693359375,0.505859375,0.4765625,0.482421875,0.5048828125,0.5146484375,0.4892578125,0.4296875,0.3671875,0.3349609375,0.35546875,0.423828125,0.5087890625,0.56640625,0.5791015625,0.5673828125,0.515625,0.443359375,0.390625,0.3828125,0.423828125,0.4892578125,0.5478515625,0.5576171875,0.5166015625,0.45703125,0.41796875,0.4296875,0.4892578125,0.55859375,0.6044921875,0.60546875,0.5087890625,0.4384765625,0.37890625,0.3408203125,0.3251953125,0.3154296875,0.3076171875,0.3095703125,0.3232421875,0.3447265625,0.3642578125,0.376953125,0.3857421875,0.3935546875,0.416015625,0.4638671875,0.533203125,0.6083984375,0.673828125,0.724609375,0.7275390625,0.6611328125,0.5439453125,0.419921875,0.341796875,0.3251953125,0.3173828125,0.28125,0.2353515625,0.2099609375,0.220703125,0.265625,0.3251953125,0.380859375,0.408203125,0.4052734375,0.384765625,0.37109375,0.3857421875,0.4287109375,0.490234375,0.578125,0.66015625,0.697265625,0.6748046875,0.615234375,0.55078125,0.49609375,0.4658203125,0.46484375,0.48046875,0.4892578125,0.47265625,0.4287109375,0.3759765625,0.3193359375,0.279296875,0.26953125,0.2861328125,0.310546875,0.3251953125,0.3330078125,0.33203125,0.3349609375,0.3544921875,0.39453125,0.447265625,0.5,0.544921875,0.5615234375,0.5322265625,0.4638671875,0.3876953125,0.3369140625,0.3251953125,0.33984375,0.4052734375,0.505859375,0.595703125,0.6396484375,0.6240234375,0.5703125,0.5087890625,0.4580078125,0.4384765625,0.4609375,0.5078125,0.5517578125,0.5703125,0.5888671875,0.6318359375,0.6796875,0.701171875,0.681640625,0.630859375,0.5703125,0.5048828125,0.4296875,0.3642578125,0.3251953125,0.31640625,0.3232421875,0.3251953125,0.3251953125,0.33203125,0.36328125,0.4296875,0.5185546875,0.60546875,0.673828125,0.7421875,0.822265625,0.875,0.8662109375,0.7958984375,0.701171875,0.6220703125,0.5546875,0.5087890625,0.482421875,0.46484375,0.439453125,0.392578125,0.3251953125,0.2548828125,0.1962890625,0.1748046875,0.201171875,0.255859375,0.3056640625,0.3251953125,0.3525390625,0.4375,0.5634765625,0.6767578125,0.7353515625,0.7265625,0.673828125,0.6171875,0.580078125,0.568359375,0.5703125,0.5673828125,0.544921875,0.5,0.4423828125,0.3759765625,0.33203125,0.341796875,0.40234375,0.4833984375,0.55078125,0.5986328125,0.5888671875,0.5234375,0.4404296875,0.384765625,0.388671875,0.4482421875,0.5087890625,0.525390625,0.4970703125,0.4501953125,0.421875,0.4384765625,0.5,0.560546875,0.580078125,0.5556640625,0.513671875,0.4892578125,0.5087890625,0.5703125,0.6484375,0.736328125,0.794921875,0.791015625,0.7265625,0.6396484375,0.5703125,0.5126953125,0.48046875,0.4921875,0.5458984375,0.6142578125,0.662109375,0.673828125,0.658203125,0.5888671875,0.4853515625,0.3955078125,0.3583984375,0.3837890625,0.4482421875,0.5107421875,0.5361328125,0.5234375,0.4951171875,0.4814453125,0.5078125,0.5703125,0.63671875,0.671875,0.6533203125,0.5859375,0.5009765625,0.4423828125,0.4287109375,0.42578125,0.419921875,0.4287109375,0.4677734375,0.533203125,0.6083984375,0.673828125,0.7216796875,0.71875,0.6650390625,0.5947265625,0.55078125,0.5615234375,0.6220703125,0.6884765625,0.728515625,0.72265625,0.6748046875,0.611328125,0.5712890625,0.5703125,0.5771484375,0.5673828125,0.5380859375,0.49609375,0.45703125,0.43359375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4228515625,0.40234375,0.3837890625,0.390625,0.4287109375,0.48828125,0.55078125,0.611328125,0.658203125,0.673828125,0.6533203125,0.611328125,0.578125,0.5703125,0.5654296875,0.5419921875,0.4951171875,0.435546875,0.37890625,0.341796875,0.3251953125,0.3173828125,0.3154296875,0.3212890625,0.330078125,0.3359375,0.333984375,0.3251953125,0.3291015625,0.384765625,0.478515625,0.5693359375,0.615234375,0.6044921875,0.55078125,0.5029296875,0.5087890625,0.56640625,0.6416015625,0.689453125,0.681640625,0.6220703125,0.5419921875,0.4453125,0.3662109375,0.3427734375,0.37890625,0.4423828125,0.5,0.544921875,0.5615234375,0.53515625,0.4775390625,0.4140625,0.376953125,0.376953125,0.3857421875,0.3876953125,0.3818359375,0.373046875,0.3671875,0.369140625,0.376953125,0.37890625,0.3505859375,0.3037109375,0.263671875,0.25390625,0.2783203125,0.3251953125,0.3818359375,0.455078125,0.5341796875,0.6005859375,0.642578125,0.662109375,0.673828125,0.6669921875,0.5966796875,0.478515625,0.3662109375,0.3056640625,0.3154296875,0.376953125,0.4482421875,0.5068359375,0.5322265625,0.5146484375,0.4736328125,0.4375,0.4287109375,0.4404296875,0.4912109375,0.5634765625,0.6220703125,0.6376953125,0.6083984375,0.55078125,0.486328125,0.4140625,0.3525390625,0.318359375,0.314453125,0.322265625,0.3251953125,0.3388671875,0.3974609375,0.490234375,0.576171875,0.62109375,0.6142578125,0.5703125,0.5283203125,0.5244140625,0.556640625,0.599609375,0.6220703125,0.6044921875,0.55078125,0.5,0.4931640625,0.5361328125,0.6025390625,0.654296875,0.6611328125,0.6220703125,0.5634765625,0.484375,0.4013671875,0.33984375,0.314453125,0.3154296875,0.3251953125,0.3369140625,0.3505859375,0.3681640625,0.38671875,0.404296875,0.41796875,0.4287109375,0.4306640625,0.4052734375,0.365234375,0.33984375,0.34765625,0.3896484375,0.4482421875,0.5185546875,0.611328125,0.69140625,0.71875,0.6845703125,0.6171875,0.55078125,0.4833984375,0.4052734375,0.3564453125,0.3701171875,0.4453125,0.5419921875,0.6220703125,0.685546875,0.71484375,0.701171875,0.6630859375,0.630859375,0.6328125,0.673828125,0.724609375,0.7646484375,0.76171875,0.7021484375,0.6044921875,0.509765625,0.4482421875,0.3955078125,0.349609375,0.3408203125,0.38671875,0.47265625,0.560546875,0.6220703125,0.6728515625,0.7158203125,0.7333984375,0.7158203125,0.67578125,0.638671875,0.6220703125,0.607421875,0.576171875,0.52734375,0.4716796875,0.4228515625,0.3916015625,0.376953125,0.3671875,0.3662109375,0.3916015625,0.453125,0.5361328125,0.615234375,0.673828125,0.7138671875,0.7021484375,0.626953125,0.5087890625,0.39453125,0.3310546875,0.3251953125,0.3427734375,0.3857421875,0.4501953125,0.5146484375,0.5595703125,0.576171875,0.5703125,0.5703125,0.6044921875,0.6552734375,0.6904296875,0.6845703125,0.638671875,0.5703125,0.4970703125,0.427734375,0.37890625,0.3623046875,0.37109375,0.3818359375,0.376953125,0.3828125,0.4462890625,0.552734375,0.65234375,0.701171875,0.6845703125,0.6220703125,0.5537109375,0.5009765625,0.470703125,0.4580078125,0.4482421875,0.4228515625,0.376953125,0.3349609375,0.3330078125,0.3896484375,0.490234375,0.59375,0.6591796875,0.673828125,0.6591796875,0.5966796875,0.5009765625,0.4150390625,0.3759765625,0.3935546875,0.4482421875,0.4970703125,0.5009765625,0.458984375,0.40234375,0.3701171875,0.38671875,0.4482421875,0.517578125,0.5673828125,0.572265625,0.4853515625,0.408203125,0.3388671875,0.2900390625,0.2587890625,0.232421875,0.2099609375,0.208984375,0.2373046875,0.28515625,0.33203125,0.3642578125,0.392578125,0.4306640625,0.4853515625,0.5546875,0.626953125,0.6904296875,0.740234375,0.7734375,0.748046875,0.6484375,0.501953125,0.361328125,0.2763671875,0.2587890625,0.2529296875,0.2265625,0.1923828125,0.1728515625,0.181640625,0.21484375,0.2587890625,0.3056640625,0.3525390625,0.39453125,0.4228515625,0.439453125,0.4521484375,0.46875,0.4970703125,0.5537109375,0.62109375,0.66796875,0.67578125,0.6484375,0.6044921875,0.5595703125,0.521484375,0.4970703125,0.48828125,0.48828125,0.484375,0.46875,0.4423828125,0.3876953125,0.3173828125,0.2587890625,0.23046875,0.2353515625,0.2587890625,0.287109375,0.3251953125,0.369140625,0.4140625,0.451171875,0.4794921875,0.5,0.5126953125,0.4970703125,0.447265625,0.375,0.3076171875,0.267578125,0.2587890625,0.271484375,0.3310546875,0.4248046875,0.515625,0.568359375,0.5673828125,0.5302734375,0.482421875,0.43359375,0.4052734375,0.4140625,0.4521484375,0.498046875,0.5302734375,0.5615234375,0.607421875,0.646484375,0.654296875,0.6259765625,0.5771484375,0.5302734375,0.4794921875,0.4130859375,0.3447265625,0.2919921875,0.265625,0.2587890625,0.2587890625,0.263671875,0.2958984375,0.369140625,0.4775390625,0.5927734375,0.6845703125,0.740234375,0.7919921875,0.853515625,0.892578125,0.8759765625,0.8046875,0.7138671875,0.634765625,0.56640625,0.509765625,0.4658203125,0.427734375,0.3837890625,0.3271484375,0.2587890625,0.185546875,0.1181640625,0.0849609375,0.1044921875,0.162109375,0.2236328125,0.2587890625,0.3017578125,0.40625,0.5517578125,0.6875,0.7666015625,0.7763671875,0.740234375,0.693359375,0.6416015625,0.59375,0.5576171875,0.5341796875,0.517578125,0.5,0.4775390625,0.4501953125,0.435546875,0.4521484375,0.498046875,0.5556640625,0.6044921875,0.6337890625,0.599609375,0.5078125,0.40234375,0.3349609375,0.3359375,0.39453125,0.45703125,0.48046875,0.4638671875,0.4306640625,0.4140625,0.4375,0.5,0.5595703125,0.57421875,0.541015625,0.48828125,0.455078125,0.4697265625,0.5302734375,0.60546875,0.6845703125,0.7314453125,0.720703125,0.6591796875,0.583984375,0.5302734375,0.490234375,0.4833984375,0.521484375,0.5966796875,0.6767578125,0.728515625,0.740234375,0.7216796875,0.638671875,0.5078125,0.3857421875,0.322265625,0.3330078125,0.39453125,0.45703125,0.484375,0.474609375,0.44921875,0.439453125,0.466796875,0.5302734375,0.5986328125,0.6435546875,0.642578125,0.5966796875,0.529296875,0.48046875,0.46875,0.46875,0.4755859375,0.501953125,0.5546875,0.6240234375,0.689453125,0.740234375,0.771484375,0.75,0.681640625,0.6044921875,0.560546875,0.57421875,0.634765625,0.6982421875,0.72265625,0.693359375,0.6240234375,0.5517578125,0.5166015625,0.5302734375,0.5537109375,0.56640625,0.5576171875,0.5302734375,0.4970703125,0.474609375,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.4658203125,0.4560546875,0.4521484375,0.46875,0.5078125,0.5576171875,0.6044921875,0.6474609375,0.6708984375,0.6630859375,0.6240234375,0.5732421875,0.5380859375,0.5302734375,0.52734375,0.509765625,0.46875,0.408203125,0.3427734375,0.291015625,0.2587890625,0.2373046875,0.2333984375,0.248046875,0.2705078125,0.28515625,0.28125,0.2587890625,0.248046875,0.296875,0.40234375,0.5244140625,0.61328125,0.63671875,0.6044921875,0.5712890625,0.5830078125,0.6357421875,0.6923828125,0.7197265625,0.697265625,0.634765625,0.5595703125,0.4794921875,0.421875,0.408203125,0.435546875,0.474609375,0.5,0.5107421875,0.4931640625,0.447265625,0.3916015625,0.3525390625,0.34375,0.3642578125,0.3857421875,0.3896484375,0.375,0.3525390625,0.337890625,0.341796875,0.3642578125,0.384765625,0.3798828125,0.34765625,0.30078125,0.2607421875,0.2470703125,0.2587890625,0.28515625,0.341796875,0.4326171875,0.541015625,0.6396484375,0.7060546875,0.740234375,0.7470703125,0.6787109375,0.546875,0.4052734375,0.3154296875,0.306640625,0.3642578125,0.4365234375,0.5009765625,0.5380859375,0.53515625,0.505859375,0.4765625,0.46875,0.478515625,0.521484375,0.5849609375,0.640625,0.662109375,0.6455078125,0.6044921875,0.552734375,0.4775390625,0.3916015625,0.3193359375,0.2763671875,0.2607421875,0.2587890625,0.267578125,0.3115234375,0.38671875,0.4658203125,0.5224609375,0.5419921875,0.5302734375,0.51953125,0.541015625,0.587890625,0.634765625,0.6572265625,0.64453125,0.6044921875,0.5634765625,0.5458984375,0.5576171875,0.5927734375,0.6298828125,0.646484375,0.634765625,0.6044921875,0.529296875,0.421875,0.3193359375,0.2548828125,0.2392578125,0.2587890625,0.2861328125,0.3154296875,0.34765625,0.380859375,0.4130859375,0.4423828125,0.46875,0.486328125,0.470703125,0.4248046875,0.375,0.3466796875,0.35546875,0.39453125,0.44921875,0.53515625,0.6240234375,0.6796875,0.6845703125,0.650390625,0.6044921875,0.55078125,0.48046875,0.4248046875,0.421875,0.4755859375,0.55859375,0.634765625,0.7041015625,0.7587890625,0.78125,0.7705078125,0.744140625,0.7294921875,0.740234375,0.7529296875,0.736328125,0.6767578125,0.5849609375,0.490234375,0.423828125,0.39453125,0.37890625,0.3828125,0.4189453125,0.482421875,0.5546875,0.6083984375,0.634765625,0.6572265625,0.6865234375,0.708984375,0.712890625,0.693359375,0.6630859375,0.634765625,0.6064453125,0.5703125,0.5244140625,0.474609375,0.4287109375,0.392578125,0.3642578125,0.3447265625,0.359375,0.4248046875,0.52734375,0.634765625,0.708984375,0.740234375,0.7431640625,0.68359375,0.560546875,0.4140625,0.296875,0.2470703125,0.2587890625,0.294921875,0.3623046875,0.447265625,0.5185546875,0.5546875,0.552734375,0.5302734375,0.5146484375,0.5361328125,0.5849609375,0.626953125,0.6328125,0.595703125,0.5302734375,0.4599609375,0.40234375,0.3720703125,0.3701171875,0.380859375,0.3837890625,0.3642578125,0.3544921875,0.41015625,0.5185546875,0.6318359375,0.69921875,0.6943359375,0.634765625,0.5615234375,0.4873046875,0.427734375,0.39453125,0.3837890625,0.37890625,0.3642578125,0.3544921875,0.3857421875,0.466796875,0.57421875,0.671875,0.728515625,0.740234375,0.7255859375,0.6572265625,0.546875,0.435546875,0.3671875,0.3583984375,0.39453125,0.4287109375,0.419921875,0.375,0.3251953125,0.3046875,0.3310546875,0.39453125,0.466796875,0.53125,0.5576171875,0.4580078125,0.4052734375,0.353515625,0.3046875,0.2587890625,0.2119140625,0.1689453125,0.15625,0.1923828125,0.2646484375,0.3408203125,0.39453125,0.443359375,0.5029296875,0.568359375,0.6298828125,0.677734375,0.712890625,0.740234375,0.7548828125,0.7158203125,0.61328125,0.474609375,0.34765625,0.2734375,0.2587890625,0.2548828125,0.240234375,0.220703125,0.208984375,0.2138671875,0.2333984375,0.2587890625,0.2939453125,0.3564453125,0.4365234375,0.5048828125,0.5419921875,0.5458984375,0.5302734375,0.517578125,0.5322265625,0.5712890625,0.6181640625,0.6513671875,0.6552734375,0.634765625,0.6044921875,0.5615234375,0.5185546875,0.494140625,0.494140625,0.509765625,0.5302734375,0.5361328125,0.490234375,0.3994140625,0.30078125,0.234375,0.2236328125,0.2587890625,0.3115234375,0.384765625,0.4609375,0.513671875,0.529296875,0.5185546875,0.5,0.4755859375,0.4326171875,0.375,0.3193359375,0.2802734375,0.26171875,0.2587890625,0.267578125,0.30859375,0.375,0.44140625,0.4833984375,0.490234375,0.46875,0.4375,0.3916015625,0.3525390625,0.3447265625,0.373046875,0.421875,0.46875,0.5166015625,0.5654296875,0.59375,0.5849609375,0.546875,0.5009765625,0.46875,0.4384765625,0.3935546875,0.341796875,0.2978515625,0.2705078125,0.259765625,0.2587890625,0.2666015625,0.3095703125,0.3974609375,0.513671875,0.6259765625,0.703125,0.740234375,0.7724609375,0.8173828125,0.8447265625,0.828125,0.765625,0.681640625,0.6044921875,0.537109375,0.484375,0.447265625,0.416015625,0.3798828125,0.3271484375,0.2587890625,0.1826171875,0.1044921875,0.056640625,0.068359375,0.1298828125,0.205078125,0.2587890625,0.318359375,0.4248046875,0.560546875,0.6796875,0.748046875,0.7607421875,0.740234375,0.7060546875,0.646484375,0.57421875,0.513671875,0.4833984375,0.4833984375,0.5,0.517578125,0.5322265625,0.546875,0.5634765625,0.583984375,0.6083984375,0.634765625,0.64453125,0.5888671875,0.48046875,0.3671875,0.2998046875,0.3046875,0.3642578125,0.4267578125,0.4541015625,0.4443359375,0.4189453125,0.4091796875,0.4365234375,0.5,0.55859375,0.5654296875,0.5185546875,0.4501953125,0.4033203125,0.41015625,0.46875,0.54296875,0.6103515625,0.6435546875,0.6240234375,0.5654296875,0.5048828125,0.46875,0.4501953125,0.4638671875,0.5185546875,0.6015625,0.681640625,0.73046875,0.740234375,0.7216796875,0.6337890625,0.4970703125,0.3671875,0.2958984375,0.302734375,0.3642578125,0.4267578125,0.4501953125,0.4326171875,0.400390625,0.3837890625,0.4072265625,0.46875,0.5400390625,0.6005859375,0.626953125,0.6123046875,0.572265625,0.5380859375,0.5302734375,0.53125,0.541015625,0.568359375,0.61328125,0.6650390625,0.7099609375,0.740234375,0.7529296875,0.7138671875,0.634765625,0.5576171875,0.521484375,0.5419921875,0.6044921875,0.6650390625,0.6748046875,0.6240234375,0.5380859375,0.462890625,0.4384765625,0.46875,0.5146484375,0.5556640625,0.5771484375,0.57421875,0.5537109375,0.53515625,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5283203125,0.5263671875,0.5302734375,0.546875,0.5751953125,0.6064453125,0.634765625,0.6572265625,0.65625,0.6240234375,0.568359375,0.51171875,0.4765625,0.46875,0.470703125,0.4716796875,0.4580078125,0.421875,0.3662109375,0.3076171875,0.2587890625,0.220703125,0.21484375,0.240234375,0.2783203125,0.3037109375,0.296875,0.2587890625,0.2275390625,0.2548828125,0.3505859375,0.48046875,0.5927734375,0.6455078125,0.634765625,0.6181640625,0.6376953125,0.6787109375,0.712890625,0.7119140625,0.671875,0.6044921875,0.53515625,0.48046875,0.4580078125,0.46875,0.4951171875,0.5107421875,0.5,0.47265625,0.4189453125,0.3583984375,0.3193359375,0.318359375,0.3505859375,0.39453125,0.4326171875,0.439453125,0.4140625,0.375,0.349609375,0.3564453125,0.39453125,0.4375,0.4658203125,0.4580078125,0.4111328125,0.34375,0.287109375,0.2587890625,0.2451171875,0.263671875,0.333984375,0.44921875,0.5791015625,0.6826171875,0.740234375,0.7666015625,0.7158203125,0.59375,0.4521484375,0.3544921875,0.3388671875,0.39453125,0.4677734375,0.5361328125,0.580078125,0.5849609375,0.5615234375,0.537109375,0.5302734375,0.5361328125,0.564453125,0.607421875,0.646484375,0.6650390625,0.658203125,0.634765625,0.6005859375,0.53515625,0.447265625,0.3583984375,0.2939453125,0.263671875,0.2587890625,0.2607421875,0.275390625,0.30859375,0.3564453125,0.40625,0.4462890625,0.46875,0.4951171875,0.544921875,0.6044921875,0.6513671875,0.669921875,0.6591796875,0.634765625,0.6064453125,0.572265625,0.5458984375,0.541015625,0.5576171875,0.5830078125,0.6044921875,0.6083984375,0.5546875,0.447265625,0.328125,0.2451171875,0.2255859375,0.2587890625,0.302734375,0.3427734375,0.3779296875,0.4111328125,0.4462890625,0.4853515625,0.5302734375,0.56640625,0.564453125,0.515625,0.44140625,0.3759765625,0.3486328125,0.3642578125,0.3994140625,0.466796875,0.5517578125,0.6240234375,0.66015625,0.658203125,0.634765625,0.5986328125,0.5341796875,0.46875,0.44140625,0.4677734375,0.5322265625,0.6044921875,0.6796875,0.759765625,0.8173828125,0.8310546875,0.8046875,0.765625,0.740234375,0.7099609375,0.6396484375,0.5380859375,0.4384765625,0.3720703125,0.3515625,0.3642578125,0.390625,0.4443359375,0.5166015625,0.580078125,0.6162109375,0.6201171875,0.6044921875,0.5927734375,0.60546875,0.6357421875,0.662109375,0.66796875,0.646484375,0.6044921875,0.5615234375,0.529296875,0.5078125,0.4912109375,0.4697265625,0.4375,0.39453125,0.361328125,0.380859375,0.4638671875,0.58203125,0.689453125,0.744140625,0.740234375,0.7041015625,0.60546875,0.4609375,0.322265625,0.2373046875,0.2236328125,0.2587890625,0.314453125,0.3994140625,0.48828125,0.5439453125,0.548828125,0.5146484375,0.46875,0.4345703125,0.443359375,0.48828125,0.5380859375,0.55859375,0.5322265625,0.46875,0.404296875,0.369140625,0.373046875,0.40234375,0.4306640625,0.4306640625,0.39453125,0.365234375,0.3994140625,0.4912109375,0.5966796875,0.6640625,0.6630859375,0.6044921875,0.52734375,0.4384765625,0.3642578125,0.3310546875,0.3408203125,0.37109375,0.39453125,0.4208984375,0.4765625,0.5576171875,0.640625,0.7041015625,0.734375,0.740234375,0.7275390625,0.6669921875,0.5634765625,0.4521484375,0.373046875,0.3466796875,0.3642578125,0.3798828125,0.357421875,0.30859375,0.267578125,0.2607421875,0.2978515625,0.3642578125,0.4404296875,0.5234375,0.5771484375,0.4423828125,0.4345703125,0.4189453125,0.3818359375,0.3251953125,0.2607421875,0.1943359375,0.1650390625,0.197265625,0.28125,0.376953125,0.4482421875,0.51171875,0.5771484375,0.6318359375,0.6611328125,0.6669921875,0.6669921875,0.673828125,0.67578125,0.640625,0.5654296875,0.46875,0.3837890625,0.3349609375,0.3251953125,0.32421875,0.318359375,0.310546875,0.3056640625,0.3076171875,0.3154296875,0.3251953125,0.3486328125,0.4150390625,0.509765625,0.591796875,0.62890625,0.615234375,0.5703125,0.5234375,0.498046875,0.5078125,0.5478515625,0.5947265625,0.623046875,0.6220703125,0.603515625,0.5595703125,0.5087890625,0.4775390625,0.4833984375,0.5205078125,0.5703125,0.60546875,0.5771484375,0.486328125,0.3740234375,0.29296875,0.2783203125,0.3251953125,0.396484375,0.4921875,0.580078125,0.6220703125,0.60546875,0.5537109375,0.5,0.4462890625,0.3876953125,0.3388671875,0.314453125,0.314453125,0.322265625,0.3251953125,0.3291015625,0.34765625,0.37890625,0.41015625,0.431640625,0.4365234375,0.4287109375,0.41015625,0.3671875,0.3193359375,0.2978515625,0.3173828125,0.3681640625,0.4287109375,0.490234375,0.541015625,0.560546875,0.5380859375,0.4912109375,0.447265625,0.4287109375,0.4169921875,0.396484375,0.37109375,0.3486328125,0.3330078125,0.326171875,0.3251953125,0.33203125,0.3681640625,0.4384765625,0.525390625,0.60546875,0.6552734375,0.673828125,0.6904296875,0.724609375,0.7529296875,0.7470703125,0.6982421875,0.625,0.55078125,0.486328125,0.4482421875,0.4375,0.439453125,0.4287109375,0.390625,0.3251953125,0.2470703125,0.1591796875,0.1005859375,0.1044921875,0.169921875,0.255859375,0.3251953125,0.39453125,0.48828125,0.5849609375,0.6552734375,0.6845703125,0.68359375,0.673828125,0.65234375,0.59375,0.5146484375,0.4521484375,0.4306640625,0.4521484375,0.5,0.55078125,0.5966796875,0.6259765625,0.6318359375,0.623046875,0.6162109375,0.6220703125,0.6162109375,0.552734375,0.4462890625,0.3466796875,0.2978515625,0.314453125,0.376953125,0.4404296875,0.4658203125,0.4521484375,0.423828125,0.4111328125,0.4365234375,0.5,0.5576171875,0.5595703125,0.50390625,0.4248046875,0.369140625,0.37109375,0.4287109375,0.5,0.55859375,0.580078125,0.5537109375,0.498046875,0.44921875,0.4287109375,0.4248046875,0.4462890625,0.4990234375,0.568359375,0.630859375,0.666015625,0.673828125,0.65625,0.5791015625,0.458984375,0.3505859375,0.2978515625,0.314453125,0.376953125,0.4384765625,0.455078125,0.4267578125,0.3798828125,0.3505859375,0.3681640625,0.4287109375,0.501953125,0.5712890625,0.6162109375,0.623046875,0.6015625,0.5771484375,0.5703125,0.5712890625,0.5771484375,0.5927734375,0.6162109375,0.640625,0.6611328125,0.673828125,0.6708984375,0.6220703125,0.54296875,0.4755859375,0.4541015625,0.4853515625,0.55078125,0.609375,0.611328125,0.5517578125,0.462890625,0.3935546875,0.3818359375,0.4287109375,0.4921875,0.5537109375,0.5966796875,0.6083984375,0.59375,0.5751953125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5693359375,0.5703125,0.57421875,0.5830078125,0.5966796875,0.6103515625,0.6220703125,0.626953125,0.611328125,0.5703125,0.5146484375,0.46484375,0.4345703125,0.4287109375,0.435546875,0.4580078125,0.48046875,0.4794921875,0.4453125,0.3876953125,0.3251953125,0.2744140625,0.265625,0.2998046875,0.3515625,0.3857421875,0.376953125,0.3251953125,0.2744140625,0.271484375,0.333984375,0.4423828125,0.552734375,0.6162109375,0.6220703125,0.6201171875,0.6455078125,0.681640625,0.697265625,0.67578125,0.62109375,0.55078125,0.4873046875,0.4580078125,0.4716796875,0.509765625,0.5419921875,0.5400390625,0.5,0.4404296875,0.361328125,0.2939453125,0.2763671875,0.314453125,0.3818359375,0.4482421875,0.4990234375,0.5078125,0.4736328125,0.421875,0.3876953125,0.396484375,0.4482421875,0.51171875,0.5712890625,0.59375,0.556640625,0.474609375,0.38671875,0.3251953125,0.275390625,0.2451171875,0.267578125,0.3544921875,0.4814453125,0.5986328125,0.673828125,0.7177734375,0.693359375,0.6015625,0.4853515625,0.40234375,0.3916015625,0.4482421875,0.5205078125,0.587890625,0.6279296875,0.6298828125,0.6044921875,0.5771484375,0.5703125,0.572265625,0.5849609375,0.6044921875,0.6220703125,0.6318359375,0.630859375,0.6220703125,0.6044921875,0.5615234375,0.4931640625,0.4189453125,0.361328125,0.3310546875,0.3251953125,0.3212890625,0.3037109375,0.2890625,0.294921875,0.3271484375,0.376953125,0.4287109375,0.484375,0.55078125,0.611328125,0.6455078125,0.6484375,0.634765625,0.6220703125,0.6025390625,0.556640625,0.501953125,0.4658203125,0.466796875,0.501953125,0.55078125,0.5869140625,0.5615234375,0.474609375,0.3671875,0.2900390625,0.2783203125,0.3251953125,0.3828125,0.4208984375,0.44140625,0.4541015625,0.474609375,0.513671875,0.5703125,0.6240234375,0.6396484375,0.599609375,0.5185546875,0.431640625,0.3798828125,0.376953125,0.39453125,0.4375,0.501953125,0.56640625,0.611328125,0.6279296875,0.6220703125,0.599609375,0.5419921875,0.470703125,0.4267578125,0.431640625,0.4814453125,0.55078125,0.630859375,0.7275390625,0.806640625,0.830078125,0.7939453125,0.73046875,0.673828125,0.609375,0.5068359375,0.3935546875,0.3154296875,0.296875,0.3271484375,0.376953125,0.4384765625,0.5263671875,0.6123046875,0.658203125,0.6494140625,0.603515625,0.55078125,0.509765625,0.5087890625,0.544921875,0.5927734375,0.619140625,0.603515625,0.55078125,0.498046875,0.4755859375,0.4873046875,0.51171875,0.5234375,0.5009765625,0.4482421875,0.400390625,0.4130859375,0.4892578125,0.5966796875,0.68359375,0.708984375,0.673828125,0.607421875,0.4921875,0.359375,0.2626953125,0.234375,0.2666015625,0.3251953125,0.396484375,0.4892578125,0.5693359375,0.5966796875,0.5625,0.4951171875,0.4287109375,0.37890625,0.3759765625,0.41796875,0.474609375,0.5068359375,0.490234375,0.4287109375,0.3681640625,0.353515625,0.390625,0.451171875,0.498046875,0.4970703125,0.4482421875,0.400390625,0.41015625,0.4755859375,0.55859375,0.6142578125,0.6103515625,0.55078125,0.4716796875,0.376953125,0.302734375,0.2841796875,0.32421875,0.390625,0.4482421875,0.5029296875,0.5673828125,0.626953125,0.6650390625,0.677734375,0.6748046875,0.673828125,0.6650390625,0.623046875,0.548828125,0.466796875,0.40234375,0.3740234375,0.376953125,0.3779296875,0.34375,0.2919921875,0.2568359375,0.2626953125,0.30859375,0.376953125,0.45703125,0.5537109375,0.62890625,0.447265625,0.482421875,0.501953125,0.48046875,0.419921875,0.34375,0.259765625,0.2109375,0.228515625,0.3095703125,0.41015625,0.4892578125,0.5595703125,0.62109375,0.65234375,0.6455078125,0.6142578125,0.5849609375,0.5791015625,0.5771484375,0.55859375,0.5234375,0.48046875,0.4443359375,0.423828125,0.419921875,0.419921875,0.4189453125,0.4169921875,0.4169921875,0.4169921875,0.41796875,0.419921875,0.4345703125,0.4921875,0.57421875,0.6396484375,0.6572265625,0.623046875,0.5595703125,0.4931640625,0.4453125,0.4365234375,0.46875,0.521484375,0.5615234375,0.5693359375,0.5576171875,0.515625,0.4619140625,0.431640625,0.443359375,0.4931640625,0.5595703125,0.61328125,0.60546875,0.5341796875,0.439453125,0.3701171875,0.3642578125,0.419921875,0.4990234375,0.599609375,0.681640625,0.7021484375,0.6552734375,0.57421875,0.5,0.4306640625,0.37109375,0.3408203125,0.3486328125,0.3818359375,0.412109375,0.419921875,0.4208984375,0.423828125,0.4296875,0.435546875,0.439453125,0.4404296875,0.439453125,0.4287109375,0.38671875,0.333984375,0.3046875,0.3193359375,0.37109375,0.439453125,0.5078125,0.560546875,0.57421875,0.5458984375,0.4931640625,0.451171875,0.439453125,0.4375,0.43359375,0.4296875,0.4248046875,0.421875,0.419921875,0.419921875,0.4228515625,0.44140625,0.4755859375,0.517578125,0.5537109375,0.57421875,0.5791015625,0.5888671875,0.6240234375,0.662109375,0.6728515625,0.642578125,0.5810546875,0.509765625,0.447265625,0.42578125,0.4462890625,0.4833984375,0.5029296875,0.4814453125,0.419921875,0.33984375,0.2470703125,0.181640625,0.1826171875,0.2490234375,0.341796875,0.419921875,0.4921875,0.5634765625,0.61328125,0.6259765625,0.609375,0.5869140625,0.5791015625,0.56640625,0.515625,0.4462890625,0.3974609375,0.3935546875,0.4345703125,0.5,0.5673828125,0.625,0.65234375,0.640625,0.60546875,0.5751953125,0.5693359375,0.5576171875,0.5,0.416015625,0.34765625,0.3291015625,0.36328125,0.4296875,0.4912109375,0.5107421875,0.4853515625,0.443359375,0.4189453125,0.4384765625,0.5,0.5576171875,0.5615234375,0.5078125,0.431640625,0.3779296875,0.380859375,0.439453125,0.509765625,0.5634765625,0.5771484375,0.5478515625,0.494140625,0.451171875,0.439453125,0.44140625,0.45703125,0.48828125,0.525390625,0.5576171875,0.576171875,0.5791015625,0.5654296875,0.505859375,0.4189453125,0.349609375,0.3291015625,0.36328125,0.4296875,0.490234375,0.501953125,0.4638671875,0.4052734375,0.3681640625,0.3798828125,0.439453125,0.5126953125,0.5791015625,0.619140625,0.6201171875,0.59375,0.56640625,0.5595703125,0.5595703125,0.560546875,0.564453125,0.568359375,0.5732421875,0.5771484375,0.5791015625,0.5693359375,0.5205078125,0.451171875,0.40234375,0.3984375,0.44140625,0.509765625,0.568359375,0.5712890625,0.5166015625,0.4384765625,0.3818359375,0.3828125,0.439453125,0.5107421875,0.576171875,0.6162109375,0.6181640625,0.5927734375,0.56640625,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.560546875,0.5625,0.5654296875,0.5673828125,0.5693359375,0.568359375,0.5537109375,0.5244140625,0.490234375,0.4599609375,0.443359375,0.439453125,0.44921875,0.4873046875,0.53515625,0.5595703125,0.5419921875,0.48828125,0.419921875,0.361328125,0.3505859375,0.3896484375,0.44921875,0.48828125,0.478515625,0.419921875,0.35546875,0.3232421875,0.3447265625,0.4150390625,0.5,0.5576171875,0.5693359375,0.576171875,0.609375,0.6494140625,0.6640625,0.638671875,0.580078125,0.509765625,0.44921875,0.435546875,0.470703125,0.52734375,0.5654296875,0.556640625,0.5,0.4228515625,0.3310546875,0.263671875,0.2607421875,0.322265625,0.412109375,0.4892578125,0.5478515625,0.55859375,0.51953125,0.4599609375,0.4208984375,0.4306640625,0.4892578125,0.5654296875,0.6484375,0.6962890625,0.677734375,0.5966796875,0.498046875,0.419921875,0.34765625,0.275390625,0.2470703125,0.2880859375,0.3876953125,0.498046875,0.5791015625,0.6357421875,0.6337890625,0.5732421875,0.490234375,0.4306640625,0.431640625,0.4892578125,0.560546875,0.6220703125,0.650390625,0.638671875,0.6005859375,0.5673828125,0.5595703125,0.5595703125,0.5615234375,0.5654296875,0.568359375,0.5703125,0.5703125,0.5693359375,0.564453125,0.544921875,0.5107421875,0.47265625,0.4404296875,0.4228515625,0.419921875,0.4111328125,0.373046875,0.3271484375,0.3037109375,0.3203125,0.373046875,0.439453125,0.509765625,0.576171875,0.619140625,0.625,0.6025390625,0.5771484375,0.5693359375,0.556640625,0.5087890625,0.4443359375,0.3994140625,0.400390625,0.4443359375,0.509765625,0.564453125,0.5625,0.5029296875,0.4208984375,0.3623046875,0.36328125,0.419921875,0.4814453125,0.5087890625,0.5009765625,0.478515625,0.470703125,0.498046875,0.5595703125,0.6240234375,0.6591796875,0.6416015625,0.5771484375,0.49609375,0.4404296875,0.4296875,0.4345703125,0.4541015625,0.486328125,0.5234375,0.552734375,0.568359375,0.5693359375,0.556640625,0.505859375,0.439453125,0.3935546875,0.39453125,0.4404296875,0.509765625,0.5908203125,0.69140625,0.7705078125,0.7880859375,0.7373046875,0.654296875,0.5791015625,0.5,0.3916015625,0.294921875,0.255859375,0.28515625,0.357421875,0.4296875,0.5078125,0.607421875,0.6884765625,0.7099609375,0.6640625,0.583984375,0.509765625,0.453125,0.443359375,0.4833984375,0.5419921875,0.5791015625,0.568359375,0.509765625,0.4501953125,0.4375,0.47265625,0.5263671875,0.5615234375,0.548828125,0.4892578125,0.4326171875,0.4326171875,0.490234375,0.572265625,0.6318359375,0.6337890625,0.5791015625,0.4990234375,0.3896484375,0.2890625,0.24609375,0.2744140625,0.345703125,0.419921875,0.498046875,0.5927734375,0.662109375,0.6669921875,0.6064453125,0.517578125,0.439453125,0.3818359375,0.3720703125,0.412109375,0.47265625,0.51171875,0.5,0.439453125,0.380859375,0.375,0.4248046875,0.498046875,0.5498046875,0.546875,0.4892578125,0.431640625,0.4248046875,0.4697265625,0.53515625,0.578125,0.5693359375,0.509765625,0.4296875,0.3349609375,0.2666015625,0.2626953125,0.32421875,0.4130859375,0.4892578125,0.55859375,0.619140625,0.6513671875,0.646484375,0.615234375,0.5869140625,0.5791015625,0.5751953125,0.556640625,0.521484375,0.4814453125,0.4482421875,0.431640625,0.4296875,0.421875,0.380859375,0.328125,0.296875,0.30859375,0.3603515625,0.4296875,0.5107421875,0.611328125,0.689453125,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.49609375,0.578125,0.63671875,0.6357421875,0.5791015625,0.4990234375,0.3984375,0.31640625,0.296875,0.3466796875,0.431640625,0.509765625,0.5771484375,0.619140625,0.6123046875,0.5576171875,0.484375,0.431640625,0.419921875,0.4228515625,0.44140625,0.4736328125,0.5107421875,0.5419921875,0.5576171875,0.5595703125,0.55859375,0.5595703125,0.5634765625,0.5693359375,0.5751953125,0.578125,0.5791015625,0.5859375,0.6103515625,0.6328125,0.626953125,0.58203125,0.5126953125,0.439453125,0.369140625,0.3134765625,0.294921875,0.3193359375,0.3681640625,0.408203125,0.419921875,0.412109375,0.3720703125,0.3203125,0.2900390625,0.3017578125,0.3515625,0.419921875,0.4814453125,0.51171875,0.5068359375,0.4873046875,0.4814453125,0.5087890625,0.5693359375,0.64453125,0.7275390625,0.779296875,0.763671875,0.6865234375,0.5888671875,0.509765625,0.443359375,0.4013671875,0.4052734375,0.4541015625,0.521484375,0.5693359375,0.5791015625,0.5771484375,0.57421875,0.5703125,0.5673828125,0.56640625,0.5673828125,0.5693359375,0.560546875,0.5185546875,0.4638671875,0.4296875,0.439453125,0.490234375,0.5595703125,0.62890625,0.6826171875,0.697265625,0.66796875,0.6142578125,0.5712890625,0.5595703125,0.5576171875,0.556640625,0.556640625,0.556640625,0.55859375,0.55859375,0.5595703125,0.5556640625,0.5390625,0.5087890625,0.474609375,0.4453125,0.4306640625,0.4296875,0.4423828125,0.4931640625,0.5595703125,0.60546875,0.6044921875,0.55859375,0.4892578125,0.431640625,0.4306640625,0.48828125,0.5703125,0.6279296875,0.626953125,0.5693359375,0.490234375,0.3984375,0.3349609375,0.337890625,0.4072265625,0.5009765625,0.5791015625,0.6435546875,0.67578125,0.6533203125,0.5810546875,0.4931640625,0.43359375,0.419921875,0.412109375,0.380859375,0.345703125,0.3349609375,0.36328125,0.421875,0.4892578125,0.5546875,0.5947265625,0.5908203125,0.54296875,0.4765625,0.4296875,0.419921875,0.4150390625,0.39453125,0.3779296875,0.3876953125,0.4326171875,0.5,0.5693359375,0.6240234375,0.6240234375,0.56640625,0.486328125,0.4306640625,0.4326171875,0.4892578125,0.5498046875,0.5712890625,0.5517578125,0.5166015625,0.4970703125,0.5185546875,0.5791015625,0.646484375,0.6943359375,0.7021484375,0.666015625,0.609375,0.568359375,0.5595703125,0.5576171875,0.5439453125,0.515625,0.4833984375,0.455078125,0.44140625,0.439453125,0.4345703125,0.4091796875,0.3857421875,0.388671875,0.4296875,0.4970703125,0.5693359375,0.62890625,0.638671875,0.595703125,0.5322265625,0.490234375,0.5,0.5595703125,0.6259765625,0.662109375,0.6455078125,0.5791015625,0.494140625,0.4345703125,0.419921875,0.41796875,0.4169921875,0.4169921875,0.4169921875,0.4189453125,0.419921875,0.419921875,0.4111328125,0.3779296875,0.33984375,0.328125,0.357421875,0.41796875,0.4892578125,0.55078125,0.5712890625,0.548828125,0.509765625,0.4873046875,0.5078125,0.5693359375,0.6357421875,0.6728515625,0.6572265625,0.5927734375,0.509765625,0.453125,0.439453125,0.439453125,0.4365234375,0.4326171875,0.4267578125,0.4228515625,0.419921875,0.419921875,0.419921875,0.4208984375,0.421875,0.4228515625,0.4228515625,0.421875,0.419921875,0.421875,0.4375,0.46875,0.5087890625,0.5439453125,0.5634765625,0.5693359375,0.5810546875,0.6240234375,0.6787109375,0.7099609375,0.6982421875,0.6474609375,0.5791015625,0.5205078125,0.509765625,0.548828125,0.60546875,0.642578125,0.6298828125,0.5693359375,0.49609375,0.4267578125,0.380859375,0.373046875,0.392578125,0.4150390625,0.419921875,0.4296875,0.48046875,0.552734375,0.6064453125,0.6142578125,0.5751953125,0.509765625,0.451171875,0.4404296875,0.478515625,0.5361328125,0.572265625,0.5595703125,0.5,0.419921875,0.32421875,0.2548828125,0.2529296875,0.3173828125,0.41015625,0.4892578125,0.5498046875,0.5615234375,0.5234375,0.4658203125,0.427734375,0.439453125,0.5,0.580078125,0.6806640625,0.7607421875,0.7783203125,0.7275390625,0.64453125,0.5693359375,0.4892578125,0.380859375,0.283203125,0.2451171875,0.2783203125,0.353515625,0.4296875,0.4912109375,0.51171875,0.4892578125,0.4501953125,0.427734375,0.4482421875,0.509765625,0.5771484375,0.619140625,0.6123046875,0.5576171875,0.484375,0.431640625,0.419921875,0.419921875,0.4228515625,0.4267578125,0.4326171875,0.4365234375,0.439453125,0.439453125,0.443359375,0.4599609375,0.4912109375,0.5283203125,0.55859375,0.576171875,0.5791015625,0.5693359375,0.5302734375,0.4794921875,0.4501953125,0.462890625,0.5126953125,0.5791015625,0.642578125,0.67578125,0.6572265625,0.5908203125,0.5087890625,0.4521484375,0.439453125,0.4306640625,0.3955078125,0.3525390625,0.3359375,0.3603515625,0.4189453125,0.4892578125,0.5517578125,0.57421875,0.5537109375,0.515625,0.4931640625,0.5107421875,0.5693359375,0.623046875,0.6162109375,0.5478515625,0.455078125,0.388671875,0.3837890625,0.439453125,0.5107421875,0.5791015625,0.6220703125,0.626953125,0.603515625,0.5771484375,0.5693359375,0.564453125,0.544921875,0.5107421875,0.47265625,0.4404296875,0.4228515625,0.419921875,0.412109375,0.3818359375,0.3505859375,0.34375,0.376953125,0.439453125,0.509765625,0.5849609375,0.6650390625,0.708984375,0.6845703125,0.599609375,0.498046875,0.419921875,0.3466796875,0.271484375,0.2373046875,0.2724609375,0.3671875,0.4765625,0.5595703125,0.63671875,0.7216796875,0.771484375,0.7529296875,0.6708984375,0.5693359375,0.4892578125,0.431640625,0.421875,0.4619140625,0.5224609375,0.5615234375,0.5498046875,0.4892578125,0.4296875,0.4208984375,0.4638671875,0.529296875,0.57421875,0.5673828125,0.509765625,0.44921875,0.4306640625,0.4541015625,0.4951171875,0.5185546875,0.5,0.439453125,0.3642578125,0.2861328125,0.24609375,0.27734375,0.369140625,0.4765625,0.5595703125,0.638671875,0.7333984375,0.7998046875,0.7998046875,0.7333984375,0.638671875,0.5595703125,0.4990234375,0.486328125,0.5244140625,0.5830078125,0.6240234375,0.6162109375,0.5595703125,0.5009765625,0.486328125,0.5146484375,0.5595703125,0.5869140625,0.5693359375,0.509765625,0.451171875,0.4384765625,0.474609375,0.529296875,0.564453125,0.5498046875,0.4892578125,0.41015625,0.3193359375,0.2578125,0.26171875,0.330078125,0.4228515625,0.5,0.564453125,0.6083984375,0.609375,0.5654296875,0.5,0.4521484375,0.439453125,0.44140625,0.45703125,0.486328125,0.5224609375,0.5517578125,0.5673828125,0.5693359375,0.55859375,0.517578125,0.4658203125,0.4375,0.451171875,0.5029296875,0.5693359375,0.64453125,0.7275390625,0.7783203125,0.5244140625,0.6318359375,0.708984375,0.720703125,0.673828125,0.6005859375,0.5,0.4072265625,0.37109375,0.40234375,0.4755859375,0.55078125,0.615234375,0.640625,0.603515625,0.513671875,0.41015625,0.3408203125,0.3251953125,0.3330078125,0.3681640625,0.4306640625,0.5,0.552734375,0.57421875,0.5703125,0.5625,0.5673828125,0.5888671875,0.6201171875,0.6513671875,0.669921875,0.673828125,0.677734375,0.689453125,0.6884765625,0.654296875,0.5869140625,0.5048828125,0.4287109375,0.35546875,0.2841796875,0.240234375,0.2392578125,0.271484375,0.3076171875,0.3251953125,0.3271484375,0.298828125,0.2548828125,0.224609375,0.228515625,0.267578125,0.3251953125,0.384765625,0.4365234375,0.4755859375,0.5068359375,0.5361328125,0.57421875,0.6220703125,0.677734375,0.7421875,0.7822265625,0.767578125,0.7021484375,0.619140625,0.55078125,0.49609375,0.4716796875,0.4951171875,0.55859375,0.62890625,0.671875,0.673828125,0.66015625,0.640625,0.619140625,0.60546875,0.6044921875,0.611328125,0.6220703125,0.62109375,0.580078125,0.517578125,0.46875,0.462890625,0.5029296875,0.5703125,0.6416015625,0.69921875,0.720703125,0.6943359375,0.6396484375,0.58984375,0.5703125,0.5595703125,0.552734375,0.55078125,0.5546875,0.5625,0.568359375,0.5703125,0.564453125,0.5341796875,0.484375,0.4287109375,0.3876953125,0.3720703125,0.376953125,0.3994140625,0.45703125,0.5283203125,0.572265625,0.5673828125,0.517578125,0.4482421875,0.3916015625,0.40234375,0.4814453125,0.587890625,0.6669921875,0.677734375,0.6220703125,0.544921875,0.462890625,0.4150390625,0.43359375,0.509765625,0.6025390625,0.673828125,0.724609375,0.7275390625,0.6611328125,0.5439453125,0.419921875,0.341796875,0.3251953125,0.3212890625,0.306640625,0.2958984375,0.306640625,0.34375,0.3955078125,0.4482421875,0.4931640625,0.509765625,0.484375,0.42578125,0.3623046875,0.3251953125,0.3251953125,0.3359375,0.349609375,0.3798828125,0.431640625,0.4990234375,0.56640625,0.6220703125,0.6591796875,0.6396484375,0.564453125,0.470703125,0.4052734375,0.3994140625,0.4482421875,0.50390625,0.541015625,0.556640625,0.564453125,0.580078125,0.6171875,0.673828125,0.7294921875,0.755859375,0.736328125,0.6787109375,0.611328125,0.5712890625,0.5703125,0.5751953125,0.5595703125,0.5224609375,0.4765625,0.439453125,0.423828125,0.4287109375,0.43359375,0.4228515625,0.4140625,0.4306640625,0.4794921875,0.548828125,0.6220703125,0.6806640625,0.6845703125,0.6328125,0.55859375,0.5068359375,0.51171875,0.5703125,0.6357421875,0.6640625,0.630859375,0.5400390625,0.4306640625,0.3515625,0.3251953125,0.3154296875,0.3076171875,0.3056640625,0.310546875,0.318359375,0.32421875,0.3251953125,0.318359375,0.2919921875,0.265625,0.267578125,0.3076171875,0.375,0.4482421875,0.51171875,0.5439453125,0.5419921875,0.52734375,0.5263671875,0.5576171875,0.6220703125,0.6865234375,0.7158203125,0.6865234375,0.60546875,0.5087890625,0.443359375,0.4287109375,0.4267578125,0.4140625,0.390625,0.36328125,0.3408203125,0.328125,0.3251953125,0.3271484375,0.3330078125,0.3408203125,0.345703125,0.34375,0.3359375,0.3251953125,0.3212890625,0.34375,0.3994140625,0.4775390625,0.5537109375,0.603515625,0.6220703125,0.6416015625,0.69140625,0.75,0.78515625,0.7783203125,0.7333984375,0.673828125,0.6220703125,0.61328125,0.6435546875,0.6865234375,0.70703125,0.6845703125,0.6220703125,0.546875,0.4638671875,0.392578125,0.3486328125,0.3349609375,0.3330078125,0.3251953125,0.3291015625,0.384765625,0.478515625,0.5693359375,0.615234375,0.6044921875,0.55078125,0.5,0.4912109375,0.521484375,0.564453125,0.5849609375,0.5615234375,0.5,0.4189453125,0.318359375,0.240234375,0.2265625,0.28125,0.369140625,0.4482421875,0.5087890625,0.525390625,0.4970703125,0.4501953125,0.421875,0.4384765625,0.5,0.5791015625,0.67578125,0.7548828125,0.7783203125,0.7421875,0.6787109375,0.6220703125,0.556640625,0.4482421875,0.330078125,0.2568359375,0.25390625,0.306640625,0.376953125,0.44140625,0.47265625,0.4716796875,0.45703125,0.455078125,0.4873046875,0.55078125,0.615234375,0.640625,0.603515625,0.513671875,0.41015625,0.3408203125,0.3251953125,0.328125,0.3408203125,0.36328125,0.390625,0.4140625,0.4267578125,0.4287109375,0.4345703125,0.46484375,0.5185546875,0.5830078125,0.6376953125,0.66796875,0.673828125,0.666015625,0.63671875,0.5986328125,0.5771484375,0.5869140625,0.6240234375,0.673828125,0.716796875,0.724609375,0.6796875,0.59375,0.5009765625,0.44140625,0.4287109375,0.419921875,0.3798828125,0.3310546875,0.3056640625,0.3232421875,0.3779296875,0.4482421875,0.5146484375,0.55859375,0.572265625,0.56640625,0.5615234375,0.578125,0.6220703125,0.658203125,0.63671875,0.5576171875,0.458984375,0.388671875,0.380859375,0.4287109375,0.494140625,0.5693359375,0.630859375,0.66015625,0.6552734375,0.6357421875,0.6220703125,0.6044921875,0.5615234375,0.4931640625,0.4189453125,0.361328125,0.3310546875,0.3251953125,0.322265625,0.314453125,0.318359375,0.3525390625,0.4140625,0.486328125,0.55078125,0.6123046875,0.66015625,0.6591796875,0.5947265625,0.4892578125,0.388671875,0.3251953125,0.271484375,0.22265625,0.2138671875,0.26953125,0.3759765625,0.4873046875,0.5703125,0.6455078125,0.71875,0.75,0.7138671875,0.6220703125,0.5205078125,0.4482421875,0.3984375,0.39453125,0.4375,0.4931640625,0.525390625,0.5087890625,0.4482421875,0.388671875,0.384765625,0.4404296875,0.5234375,0.5888671875,0.5986328125,0.55078125,0.4970703125,0.4736328125,0.48046875,0.5,0.5068359375,0.4833984375,0.4287109375,0.3623046875,0.29296875,0.259765625,0.29296875,0.3828125,0.48828125,0.5703125,0.6494140625,0.744140625,0.810546875,0.810546875,0.744140625,0.6494140625,0.5703125,0.5078125,0.484375,0.5087890625,0.5615234375,0.60546875,0.609375,0.5703125,0.5283203125,0.5244140625,0.556640625,0.599609375,0.6220703125,0.6044921875,0.55078125,0.4990234375,0.4833984375,0.501953125,0.53125,0.541015625,0.51171875,0.4482421875,0.3720703125,0.296875,0.2568359375,0.279296875,0.353515625,0.4384765625,0.5,0.548828125,0.583984375,0.5849609375,0.548828125,0.4931640625,0.4482421875,0.4287109375,0.4248046875,0.4462890625,0.4951171875,0.5556640625,0.6044921875,0.6259765625,0.6220703125,0.6044921875,0.5673828125,0.52734375,0.509765625,0.52734375,0.5703125,0.6220703125,0.6787109375,0.7421875,0.7783203125,0.5517578125,0.6708984375,0.75390625,0.7734375,0.740234375,0.6826171875,0.591796875,0.4990234375,0.4521484375,0.4697265625,0.53125,0.6044921875,0.666015625,0.6767578125,0.61328125,0.4912109375,0.3603515625,0.27734375,0.2587890625,0.2685546875,0.3173828125,0.3974609375,0.48046875,0.53515625,0.548828125,0.5302734375,0.5087890625,0.515625,0.5576171875,0.6240234375,0.6904296875,0.7314453125,0.740234375,0.744140625,0.7529296875,0.7451171875,0.7041015625,0.630859375,0.544921875,0.46875,0.390625,0.2978515625,0.2177734375,0.181640625,0.1923828125,0.228515625,0.2587890625,0.2783203125,0.271484375,0.2421875,0.2119140625,0.201171875,0.21875,0.2587890625,0.3095703125,0.376953125,0.455078125,0.52734375,0.5810546875,0.6142578125,0.634765625,0.6591796875,0.6953125,0.7255859375,0.7294921875,0.7001953125,0.65234375,0.6044921875,0.5673828125,0.56640625,0.607421875,0.673828125,0.732421875,0.755859375,0.740234375,0.7080078125,0.6611328125,0.61328125,0.5849609375,0.5859375,0.6083984375,0.634765625,0.6484375,0.61328125,0.541015625,0.4716796875,0.44140625,0.4658203125,0.5302734375,0.603515625,0.6708984375,0.7041015625,0.6845703125,0.626953125,0.5654296875,0.5302734375,0.50390625,0.4853515625,0.48046875,0.4912109375,0.5107421875,0.5263671875,0.5302734375,0.5224609375,0.4873046875,0.4306640625,0.375,0.3427734375,0.341796875,0.3642578125,0.400390625,0.46484375,0.5302734375,0.5576171875,0.53125,0.466796875,0.39453125,0.33984375,0.3583984375,0.4521484375,0.5771484375,0.6708984375,0.689453125,0.634765625,0.5615234375,0.4951171875,0.4716796875,0.5107421875,0.595703125,0.68359375,0.740234375,0.7734375,0.748046875,0.6484375,0.501953125,0.361328125,0.2763671875,0.2587890625,0.259765625,0.2646484375,0.28125,0.30859375,0.3427734375,0.373046875,0.39453125,0.40625,0.3876953125,0.341796875,0.287109375,0.2470703125,0.2392578125,0.2587890625,0.291015625,0.3447265625,0.4189453125,0.4990234375,0.5673828125,0.611328125,0.634765625,0.6416015625,0.599609375,0.515625,0.4248046875,0.365234375,0.3583984375,0.39453125,0.4404296875,0.4892578125,0.541015625,0.59375,0.6455078125,0.6943359375,0.740234375,0.775390625,0.767578125,0.7099609375,0.6240234375,0.5478515625,0.515625,0.5302734375,0.55078125,0.546875,0.5185546875,0.48046875,0.4521484375,0.4482421875,0.46875,0.48828125,0.486328125,0.474609375,0.4775390625,0.5078125,0.5654296875,0.634765625,0.6923828125,0.6904296875,0.626953125,0.5380859375,0.474609375,0.47265625,0.5302734375,0.5966796875,0.6318359375,0.6044921875,0.513671875,0.39453125,0.30078125,0.2587890625,0.2333984375,0.2138671875,0.208984375,0.220703125,0.240234375,0.2548828125,0.2587890625,0.251953125,0.2265625,0.2041015625,0.208984375,0.2529296875,0.3212890625,0.39453125,0.4599609375,0.5,0.513671875,0.5166015625,0.529296875,0.5693359375,0.634765625,0.701171875,0.7333984375,0.708984375,0.6357421875,0.544921875,0.4833984375,0.46875,0.4638671875,0.4384765625,0.3916015625,0.3359375,0.2890625,0.263671875,0.2587890625,0.2626953125,0.2783203125,0.2978515625,0.30859375,0.3037109375,0.2841796875,0.2587890625,0.23828125,0.2490234375,0.30859375,0.408203125,0.5166015625,0.5966796875,0.634765625,0.6689453125,0.7275390625,0.7900390625,0.826171875,0.8212890625,0.78515625,0.740234375,0.703125,0.69921875,0.720703125,0.7421875,0.7392578125,0.701171875,0.634765625,0.560546875,0.4775390625,0.3994140625,0.341796875,0.306640625,0.283203125,0.2587890625,0.248046875,0.296875,0.40234375,0.5244140625,0.61328125,0.63671875,0.6044921875,0.568359375,0.5634765625,0.5849609375,0.607421875,0.6044921875,0.5654296875,0.5,0.4169921875,0.310546875,0.220703125,0.1923828125,0.2353515625,0.3173828125,0.39453125,0.45703125,0.48046875,0.4638671875,0.4306640625,0.4140625,0.4375,0.5,0.5751953125,0.6552734375,0.712890625,0.7255859375,0.69921875,0.66015625,0.634765625,0.6005859375,0.51171875,0.39453125,0.30078125,0.267578125,0.2978515625,0.3642578125,0.4296875,0.4697265625,0.482421875,0.4853515625,0.4990234375,0.5390625,0.6044921875,0.666015625,0.6767578125,0.61328125,0.4912109375,0.3603515625,0.27734375,0.2587890625,0.263671875,0.2890625,0.3359375,0.3916015625,0.4384765625,0.4638671875,0.46875,0.4755859375,0.5087890625,0.568359375,0.640625,0.701171875,0.7333984375,0.740234375,0.7373046875,0.7265625,0.7119140625,0.7041015625,0.7080078125,0.7216796875,0.740234375,0.751953125,0.7333984375,0.67578125,0.5966796875,0.5224609375,0.478515625,0.46875,0.45703125,0.40625,0.3369140625,0.2861328125,0.283203125,0.326171875,0.39453125,0.466796875,0.5380859375,0.5908203125,0.6162109375,0.619140625,0.62109375,0.634765625,0.6435546875,0.6103515625,0.54296875,0.47265625,0.4296875,0.431640625,0.46875,0.5205078125,0.58984375,0.654296875,0.6904296875,0.6884765625,0.6630859375,0.634765625,0.6005859375,0.53515625,0.447265625,0.3583984375,0.2939453125,0.263671875,0.2587890625,0.2607421875,0.2763671875,0.3193359375,0.3916015625,0.4775390625,0.552734375,0.6044921875,0.6435546875,0.6455078125,0.5908203125,0.48828125,0.3740234375,0.2919921875,0.2587890625,0.2373046875,0.2138671875,0.2177734375,0.2666015625,0.3544921875,0.451171875,0.5302734375,0.6025390625,0.6650390625,0.681640625,0.634765625,0.54296875,0.451171875,0.39453125,0.3603515625,0.369140625,0.4140625,0.4638671875,0.484375,0.4580078125,0.39453125,0.3359375,0.3349609375,0.40234375,0.5078125,0.599609375,0.6337890625,0.6044921875,0.5634765625,0.5400390625,0.53515625,0.5380859375,0.533203125,0.509765625,0.46875,0.4169921875,0.3486328125,0.30078125,0.3056640625,0.3662109375,0.4521484375,0.5302734375,0.609375,0.7041015625,0.7705078125,0.7705078125,0.7041015625,0.609375,0.5302734375,0.462890625,0.4208984375,0.421875,0.4609375,0.5107421875,0.5380859375,0.5302734375,0.51953125,0.541015625,0.587890625,0.634765625,0.6572265625,0.64453125,0.6044921875,0.5654296875,0.548828125,0.546875,0.541015625,0.5146484375,0.462890625,0.39453125,0.32421875,0.2734375,0.26953125,0.3203125,0.400390625,0.46875,0.5,0.5205078125,0.546875,0.5625,0.5576171875,0.5322265625,0.498046875,0.46875,0.451171875,0.466796875,0.5185546875,0.5849609375,0.63671875,0.6533203125,0.634765625,0.6064453125,0.576171875,0.5576171875,0.560546875,0.583984375,0.61328125,0.634765625,0.66015625,0.69921875,0.7255859375,0.5771484375,0.6796875,0.744140625,0.759765625,0.740234375,0.7021484375,0.6279296875,0.546875,0.5,0.5087890625,0.564453125,0.634765625,0.6962890625,0.703125,0.6318359375,0.501953125,0.365234375,0.27734375,0.2587890625,0.2705078125,0.322265625,0.40234375,0.4775390625,0.515625,0.5087890625,0.46875,0.431640625,0.4306640625,0.4833984375,0.57421875,0.66796875,0.7275390625,0.740234375,0.7451171875,0.76171875,0.767578125,0.7421875,0.6826171875,0.6044921875,0.5302734375,0.447265625,0.3359375,0.228515625,0.16796875,0.1689453125,0.2109375,0.2587890625,0.2998046875,0.3173828125,0.3056640625,0.275390625,0.2470703125,0.2392578125,0.2587890625,0.294921875,0.3671875,0.4638671875,0.5517578125,0.60546875,0.619140625,0.6044921875,0.5908203125,0.595703125,0.619140625,0.6455078125,0.662109375,0.6572265625,0.634765625,0.6181640625,0.6376953125,0.6904296875,0.748046875,0.783203125,0.7783203125,0.740234375,0.6865234375,0.6103515625,0.5380859375,0.501953125,0.5146484375,0.5576171875,0.6044921875,0.6357421875,0.6103515625,0.53515625,0.4501953125,0.3994140625,0.4091796875,0.46875,0.544921875,0.6240234375,0.6708984375,0.66015625,0.59765625,0.5234375,0.46875,0.4248046875,0.3916015625,0.3837890625,0.40234375,0.4365234375,0.462890625,0.46875,0.4609375,0.42578125,0.375,0.3359375,0.328125,0.3515625,0.39453125,0.4482421875,0.5185546875,0.57421875,0.5771484375,0.5234375,0.4404296875,0.3642578125,0.3095703125,0.328125,0.421875,0.546875,0.640625,0.6591796875,0.6044921875,0.5341796875,0.4833984375,0.48046875,0.53515625,0.6240234375,0.701171875,0.740234375,0.7548828125,0.7158203125,0.61328125,0.474609375,0.34765625,0.2734375,0.2587890625,0.263671875,0.2880859375,0.3251953125,0.361328125,0.380859375,0.3798828125,0.3642578125,0.3369140625,0.2841796875,0.2236328125,0.1845703125,0.18359375,0.21484375,0.2587890625,0.3134765625,0.3994140625,0.5,0.580078125,0.619140625,0.62109375,0.6044921875,0.5771484375,0.5185546875,0.44140625,0.375,0.33984375,0.341796875,0.3642578125,0.39453125,0.4443359375,0.513671875,0.5908203125,0.66015625,0.708984375,0.740234375,0.7529296875,0.712890625,0.6240234375,0.521484375,0.4501953125,0.4345703125,0.46875,0.5087890625,0.5224609375,0.5107421875,0.48828125,0.4765625,0.490234375,0.5302734375,0.5654296875,0.56640625,0.5380859375,0.5078125,0.50390625,0.5390625,0.6044921875,0.6611328125,0.6552734375,0.5849609375,0.48828125,0.41796875,0.412109375,0.46875,0.5400390625,0.59375,0.59375,0.52734375,0.41796875,0.318359375,0.2587890625,0.21484375,0.181640625,0.1728515625,0.1923828125,0.2265625,0.2529296875,0.2587890625,0.2509765625,0.22265625,0.1923828125,0.189453125,0.2265625,0.2919921875,0.3642578125,0.4296875,0.4697265625,0.482421875,0.4853515625,0.4990234375,0.5390625,0.6044921875,0.6728515625,0.7158203125,0.712890625,0.662109375,0.5927734375,0.5419921875,0.5302734375,0.5234375,0.490234375,0.4306640625,0.3583984375,0.2978515625,0.265625,0.2587890625,0.265625,0.2919921875,0.3251953125,0.3447265625,0.3359375,0.302734375,0.2587890625,0.216796875,0.19921875,0.234375,0.3251953125,0.4443359375,0.5458984375,0.6044921875,0.6552734375,0.720703125,0.7783203125,0.806640625,0.7978515625,0.7685546875,0.740234375,0.7216796875,0.7275390625,0.7451171875,0.7509765625,0.7275390625,0.673828125,0.6044921875,0.533203125,0.46484375,0.408203125,0.3662109375,0.3349609375,0.30078125,0.2587890625,0.2275390625,0.2548828125,0.3505859375,0.48046875,0.5927734375,0.6455078125,0.634765625,0.6162109375,0.6220703125,0.640625,0.646484375,0.6220703125,0.568359375,0.5,0.4169921875,0.3056640625,0.208984375,0.1728515625,0.2099609375,0.287109375,0.3642578125,0.4267578125,0.4541015625,0.4443359375,0.4189453125,0.4091796875,0.4365234375,0.5,0.5693359375,0.623046875,0.6455078125,0.6357421875,0.6083984375,0.59375,0.6044921875,0.6083984375,0.5546875,0.4580078125,0.3642578125,0.31640625,0.33203125,0.39453125,0.4599609375,0.5,0.513671875,0.5166015625,0.529296875,0.5693359375,0.634765625,0.6962890625,0.703125,0.6318359375,0.501953125,0.365234375,0.27734375,0.2587890625,0.265625,0.2978515625,0.3583984375,0.4306640625,0.490234375,0.5234375,0.5302734375,0.53515625,0.560546875,0.607421875,0.6630859375,0.7099609375,0.7353515625,0.740234375,0.7431640625,0.75390625,0.767578125,0.775390625,0.7724609375,0.7587890625,0.740234375,0.716796875,0.677734375,0.626953125,0.5791015625,0.546875,0.5322265625,0.5302734375,0.515625,0.4541015625,0.36328125,0.2900390625,0.265625,0.2978515625,0.3642578125,0.4423828125,0.53515625,0.6162109375,0.6572265625,0.6533203125,0.626953125,0.6044921875,0.5810546875,0.54296875,0.5029296875,0.4794921875,0.482421875,0.5029296875,0.5302734375,0.5634765625,0.6181640625,0.673828125,0.701171875,0.6904296875,0.650390625,0.6044921875,0.552734375,0.4775390625,0.3916015625,0.3193359375,0.2763671875,0.2607421875,0.2587890625,0.263671875,0.2939453125,0.3583984375,0.447265625,0.53515625,0.6005859375,0.634765625,0.6494140625,0.6123046875,0.5185546875,0.400390625,0.2998046875,0.2529296875,0.2587890625,0.2724609375,0.26953125,0.2666015625,0.2841796875,0.330078125,0.3974609375,0.46875,0.5400390625,0.5947265625,0.6044921875,0.5576171875,0.4755859375,0.40234375,0.3642578125,0.3486328125,0.37109375,0.4189453125,0.4609375,0.466796875,0.4296875,0.3642578125,0.3046875,0.2998046875,0.3671875,0.48046875,0.5888671875,0.64453125,0.634765625,0.6103515625,0.59375,0.5849609375,0.580078125,0.5712890625,0.5546875,0.5302734375,0.4931640625,0.4248046875,0.3525390625,0.3173828125,0.3369140625,0.3974609375,0.46875,0.548828125,0.642578125,0.7099609375,0.7099609375,0.642578125,0.548828125,0.46875,0.396484375,0.3330078125,0.3056640625,0.328125,0.384765625,0.4404296875,0.46875,0.4951171875,0.544921875,0.6044921875,0.6513671875,0.669921875,0.6591796875,0.634765625,0.61328125,0.6025390625,0.5908203125,0.560546875,0.5068359375,0.4365234375,0.3642578125,0.2998046875,0.275390625,0.306640625,0.3798828125,0.4609375,0.5048828125,0.5,0.48828125,0.50390625,0.541015625,0.576171875,0.5888671875,0.5703125,0.5302734375,0.494140625,0.49609375,0.5380859375,0.5966796875,0.638671875,0.640625,0.6044921875,0.5634765625,0.541015625,0.546875,0.57421875,0.6044921875,0.6171875,0.6044921875,0.59375,0.6083984375,0.6357421875,0.59765625,0.6591796875,0.6845703125,0.68359375,0.673828125,0.65234375,0.5966796875,0.529296875,0.490234375,0.5,0.5517578125,0.6220703125,0.6845703125,0.701171875,0.6484375,0.5400390625,0.419921875,0.3427734375,0.3251953125,0.3369140625,0.384765625,0.453125,0.5068359375,0.5185546875,0.486328125,0.4287109375,0.375,0.359375,0.4033203125,0.4931640625,0.59375,0.6591796875,0.673828125,0.6806640625,0.7099609375,0.740234375,0.7431640625,0.70703125,0.642578125,0.5703125,0.486328125,0.3681640625,0.2548828125,0.1943359375,0.205078125,0.26171875,0.3251953125,0.3837890625,0.4228515625,0.4267578125,0.3955078125,0.3525390625,0.32421875,0.3251953125,0.34765625,0.4130859375,0.5029296875,0.580078125,0.61328125,0.5966796875,0.55078125,0.5048828125,0.482421875,0.49609375,0.541015625,0.5927734375,0.623046875,0.6220703125,0.62109375,0.6552734375,0.7109375,0.7548828125,0.7626953125,0.73046875,0.673828125,0.6025390625,0.5068359375,0.4228515625,0.390625,0.419921875,0.4853515625,0.55078125,0.59765625,0.5859375,0.5166015625,0.4287109375,0.369140625,0.37109375,0.4287109375,0.5068359375,0.595703125,0.654296875,0.650390625,0.5849609375,0.4990234375,0.4287109375,0.369140625,0.32421875,0.3134765625,0.3388671875,0.384765625,0.4208984375,0.4287109375,0.4208984375,0.3876953125,0.345703125,0.3251953125,0.3408203125,0.3876953125,0.4482421875,0.515625,0.59375,0.642578125,0.62890625,0.5537109375,0.45703125,0.376953125,0.3212890625,0.33203125,0.4111328125,0.517578125,0.5966796875,0.607421875,0.55078125,0.482421875,0.439453125,0.4453125,0.50390625,0.5859375,0.650390625,0.673828125,0.67578125,0.640625,0.5654296875,0.46875,0.3837890625,0.3349609375,0.3251953125,0.333984375,0.3701171875,0.4189453125,0.4541015625,0.45703125,0.42578125,0.376953125,0.318359375,0.2392578125,0.171875,0.154296875,0.1923828125,0.259765625,0.3251953125,0.3974609375,0.5,0.599609375,0.654296875,0.6494140625,0.6044921875,0.55078125,0.49609375,0.431640625,0.3759765625,0.3466796875,0.34765625,0.3642578125,0.376953125,0.392578125,0.4306640625,0.490234375,0.560546875,0.6201171875,0.658203125,0.673828125,0.6689453125,0.611328125,0.5126953125,0.41796875,0.3671875,0.3759765625,0.4287109375,0.4833984375,0.509765625,0.5068359375,0.4921875,0.4892578125,0.515625,0.5703125,0.619140625,0.6201171875,0.57421875,0.5126953125,0.4755859375,0.490234375,0.55078125,0.6083984375,0.6044921875,0.5361328125,0.443359375,0.3759765625,0.3720703125,0.4287109375,0.5048828125,0.580078125,0.6162109375,0.5849609375,0.4970703125,0.3974609375,0.3251953125,0.265625,0.220703125,0.2099609375,0.2353515625,0.28125,0.3173828125,0.3251953125,0.31640625,0.28125,0.2392578125,0.22265625,0.248046875,0.306640625,0.376953125,0.44140625,0.47265625,0.4716796875,0.45703125,0.455078125,0.4873046875,0.55078125,0.62109375,0.67578125,0.693359375,0.66796875,0.619140625,0.5791015625,0.5703125,0.564453125,0.5341796875,0.48046875,0.416015625,0.361328125,0.3310546875,0.3251953125,0.333984375,0.3701171875,0.416015625,0.44140625,0.4296875,0.3857421875,0.3251953125,0.2626953125,0.2099609375,0.203125,0.2626953125,0.3701171875,0.4775390625,0.55078125,0.615234375,0.6806640625,0.7275390625,0.73828125,0.7177734375,0.689453125,0.673828125,0.669921875,0.689453125,0.7138671875,0.716796875,0.68359375,0.6220703125,0.55078125,0.484375,0.4404296875,0.4228515625,0.4189453125,0.4111328125,0.380859375,0.3251953125,0.2744140625,0.271484375,0.333984375,0.4423828125,0.552734375,0.6162109375,0.6220703125,0.619140625,0.6376953125,0.662109375,0.6650390625,0.6318359375,0.5703125,0.5,0.4169921875,0.3076171875,0.2138671875,0.181640625,0.220703125,0.30078125,0.376953125,0.4404296875,0.4658203125,0.4521484375,0.423828125,0.4111328125,0.4365234375,0.5,0.5634765625,0.5927734375,0.5791015625,0.541015625,0.5087890625,0.5107421875,0.55078125,0.5888671875,0.5712890625,0.50390625,0.4248046875,0.376953125,0.3876953125,0.4482421875,0.51171875,0.5439453125,0.5419921875,0.52734375,0.5263671875,0.5576171875,0.6220703125,0.6845703125,0.701171875,0.6484375,0.5400390625,0.419921875,0.3427734375,0.3251953125,0.3310546875,0.361328125,0.416015625,0.48046875,0.5341796875,0.564453125,0.5703125,0.572265625,0.5849609375,0.6083984375,0.6357421875,0.658203125,0.6708984375,0.673828125,0.6806640625,0.7099609375,0.748046875,0.76953125,0.759765625,0.72265625,0.673828125,0.62109375,0.5712890625,0.5390625,0.533203125,0.5478515625,0.5654296875,0.5703125,0.5556640625,0.490234375,0.3935546875,0.3125,0.283203125,0.3125,0.376953125,0.4580078125,0.5615234375,0.6513671875,0.6884765625,0.6640625,0.6064453125,0.55078125,0.5009765625,0.4599609375,0.4462890625,0.46875,0.5126953125,0.552734375,0.5703125,0.587890625,0.62890625,0.6728515625,0.689453125,0.666015625,0.6123046875,0.55078125,0.486328125,0.4140625,0.3525390625,0.318359375,0.314453125,0.322265625,0.3251953125,0.3310546875,0.361328125,0.4189453125,0.4931640625,0.5615234375,0.6044921875,0.6220703125,0.6181640625,0.5595703125,0.4580078125,0.353515625,0.2890625,0.2841796875,0.3251953125,0.3671875,0.3759765625,0.3544921875,0.330078125,0.328125,0.3642578125,0.4287109375,0.4990234375,0.55078125,0.560546875,0.521484375,0.4541015625,0.3984375,0.376953125,0.376953125,0.4111328125,0.462890625,0.498046875,0.4921875,0.4453125,0.376953125,0.314453125,0.2978515625,0.3466796875,0.4462890625,0.552734375,0.6162109375,0.6220703125,0.6123046875,0.6044921875,0.5986328125,0.59375,0.587890625,0.580078125,0.5703125,0.546875,0.48046875,0.3935546875,0.330078125,0.3193359375,0.361328125,0.4287109375,0.5087890625,0.6025390625,0.669921875,0.669921875,0.6025390625,0.5087890625,0.4287109375,0.3525390625,0.2705078125,0.21875,0.2275390625,0.2900390625,0.369140625,0.4287109375,0.484375,0.55078125,0.611328125,0.6455078125,0.6484375,0.634765625,0.6220703125,0.6162109375,0.6201171875,0.6171875,0.587890625,0.52734375,0.451171875,0.376953125,0.3173828125,0.3095703125,0.361328125,0.4453125,0.5166015625,0.5361328125,0.5,0.4599609375,0.466796875,0.51953125,0.5849609375,0.6279296875,0.62109375,0.5703125,0.5185546875,0.5068359375,0.537109375,0.583984375,0.6142578125,0.6025390625,0.55078125,0.4990234375,0.4833984375,0.509765625,0.5576171875,0.59375,0.591796875,0.55078125,0.5107421875,0.5087890625,0.541015625,0.6162109375,0.6279296875,0.609375,0.5869140625,0.5791015625,0.5673828125,0.5234375,0.4677734375,0.4345703125,0.447265625,0.4990234375,0.5693359375,0.6357421875,0.669921875,0.6494140625,0.580078125,0.4931640625,0.43359375,0.419921875,0.4296875,0.47265625,0.529296875,0.564453125,0.556640625,0.5078125,0.439453125,0.375,0.3408203125,0.3583984375,0.4248046875,0.5087890625,0.56640625,0.5791015625,0.5888671875,0.6279296875,0.6767578125,0.7021484375,0.6845703125,0.6298828125,0.5595703125,0.4765625,0.3662109375,0.26953125,0.2333984375,0.2685546875,0.3447265625,0.419921875,0.4873046875,0.5380859375,0.5498046875,0.51953125,0.4677734375,0.427734375,0.419921875,0.4326171875,0.4853515625,0.5556640625,0.6083984375,0.6142578125,0.57421875,0.509765625,0.4443359375,0.4033203125,0.404296875,0.4501953125,0.5146484375,0.5595703125,0.5693359375,0.5771484375,0.6181640625,0.6728515625,0.705078125,0.6962890625,0.646484375,0.5791015625,0.5,0.3994140625,0.318359375,0.2998046875,0.349609375,0.43359375,0.509765625,0.56640625,0.5673828125,0.5107421875,0.4326171875,0.3779296875,0.380859375,0.439453125,0.51953125,0.6123046875,0.677734375,0.6767578125,0.6103515625,0.517578125,0.439453125,0.37109375,0.3203125,0.3076171875,0.3369140625,0.3896484375,0.4296875,0.439453125,0.4306640625,0.396484375,0.35546875,0.3388671875,0.36328125,0.419921875,0.4892578125,0.56640625,0.65234375,0.705078125,0.689453125,0.611328125,0.5107421875,0.4296875,0.3720703125,0.37109375,0.4287109375,0.5107421875,0.568359375,0.5673828125,0.509765625,0.44140625,0.396484375,0.3974609375,0.4453125,0.5146484375,0.56640625,0.5791015625,0.5771484375,0.55859375,0.5234375,0.48046875,0.4443359375,0.423828125,0.419921875,0.4296875,0.470703125,0.5234375,0.5556640625,0.544921875,0.49609375,0.4296875,0.353515625,0.26171875,0.1943359375,0.19140625,0.2529296875,0.3427734375,0.419921875,0.4990234375,0.6015625,0.685546875,0.7080078125,0.6630859375,0.583984375,0.509765625,0.4404296875,0.3798828125,0.3486328125,0.35546875,0.3896484375,0.4208984375,0.4296875,0.4345703125,0.453125,0.4853515625,0.5234375,0.5556640625,0.57421875,0.5791015625,0.568359375,0.51171875,0.4287109375,0.361328125,0.341796875,0.375,0.439453125,0.5009765625,0.5263671875,0.513671875,0.4853515625,0.47265625,0.498046875,0.5595703125,0.6162109375,0.6201171875,0.568359375,0.4951171875,0.4453125,0.4501953125,0.509765625,0.5673828125,0.5703125,0.5146484375,0.4345703125,0.37890625,0.3818359375,0.439453125,0.5185546875,0.609375,0.6708984375,0.6640625,0.59375,0.498046875,0.419921875,0.3515625,0.30078125,0.287109375,0.3173828125,0.369140625,0.41015625,0.419921875,0.41015625,0.369140625,0.318359375,0.291015625,0.3056640625,0.359375,0.4296875,0.4912109375,0.51171875,0.4892578125,0.4501953125,0.427734375,0.4482421875,0.509765625,0.580078125,0.638671875,0.6630859375,0.646484375,0.603515625,0.568359375,0.5595703125,0.5556640625,0.5390625,0.5078125,0.470703125,0.4404296875,0.4228515625,0.419921875,0.4296875,0.470703125,0.5224609375,0.5517578125,0.5390625,0.48828125,0.419921875,0.34375,0.2626953125,0.2177734375,0.2412109375,0.3271484375,0.4296875,0.509765625,0.5791015625,0.6396484375,0.669921875,0.6591796875,0.6220703125,0.5888671875,0.5791015625,0.5859375,0.6181640625,0.6552734375,0.66796875,0.640625,0.5810546875,0.509765625,0.447265625,0.4248046875,0.443359375,0.4794921875,0.5,0.48046875,0.419921875,0.35546875,0.3232421875,0.3447265625,0.4150390625,0.5,0.5576171875,0.5693359375,0.576171875,0.6083984375,0.6455078125,0.658203125,0.630859375,0.5703125,0.5,0.41796875,0.3154296875,0.2333984375,0.21484375,0.265625,0.3515625,0.4296875,0.4912109375,0.5107421875,0.4853515625,0.443359375,0.4189453125,0.4384765625,0.5,0.5595703125,0.57421875,0.5380859375,0.4814453125,0.443359375,0.453125,0.509765625,0.5654296875,0.5712890625,0.5263671875,0.4619140625,0.419921875,0.4296875,0.4892578125,0.55078125,0.5712890625,0.548828125,0.509765625,0.4873046875,0.5078125,0.5693359375,0.6357421875,0.669921875,0.6494140625,0.580078125,0.4931640625,0.43359375,0.419921875,0.4228515625,0.4404296875,0.470703125,0.5078125,0.5390625,0.5556640625,0.5595703125,0.5595703125,0.5625,0.56640625,0.572265625,0.576171875,0.5791015625,0.5791015625,0.5888671875,0.62890625,0.6796875,0.7080078125,0.6953125,0.6455078125,0.5791015625,0.5126953125,0.4599609375,0.4423828125,0.466796875,0.5126953125,0.5498046875,0.5595703125,0.5458984375,0.4892578125,0.40625,0.341796875,0.326171875,0.36328125,0.4296875,0.5107421875,0.6123046875,0.6943359375,0.71484375,0.666015625,0.583984375,0.509765625,0.4443359375,0.3994140625,0.396484375,0.4375,0.5,0.546875,0.5595703125,0.5693359375,0.60546875,0.646484375,0.662109375,0.6376953125,0.5791015625,0.509765625,0.439453125,0.376953125,0.34375,0.3505859375,0.3818359375,0.412109375,0.419921875,0.4228515625,0.4404296875,0.47265625,0.5107421875,0.544921875,0.564453125,0.5693359375,0.5576171875,0.5009765625,0.4169921875,0.34765625,0.326171875,0.357421875,0.419921875,0.4765625,0.4873046875,0.451171875,0.3974609375,0.3642578125,0.37890625,0.439453125,0.509765625,0.5615234375,0.57421875,0.5419921875,0.4853515625,0.44140625,0.4296875,0.4384765625,0.478515625,0.53125,0.5625,0.55078125,0.4990234375,0.4296875,0.36328125,0.3291015625,0.34765625,0.416015625,0.5,0.5576171875,0.5693359375,0.5673828125,0.56640625,0.564453125,0.5634765625,0.5625,0.560546875,0.5595703125,0.544921875,0.4873046875,0.4072265625,0.345703125,0.333984375,0.3720703125,0.439453125,0.51953125,0.61328125,0.6806640625,0.6806640625,0.61328125,0.51953125,0.439453125,0.3603515625,0.2685546875,0.2041015625,0.205078125,0.271484375,0.36328125,0.439453125,0.509765625,0.576171875,0.619140625,0.625,0.6025390625,0.5771484375,0.5693359375,0.57421875,0.59765625,0.6201171875,0.6142578125,0.5712890625,0.5029296875,0.4296875,0.37109375,0.3671875,0.419921875,0.498046875,0.5546875,0.5546875,0.5,0.4443359375,0.4423828125,0.4951171875,0.5693359375,0.62109375,0.6162109375,0.5595703125,0.5,0.4833984375,0.51171875,0.5576171875,0.5859375,0.5693359375,0.509765625,0.451171875,0.439453125,0.4775390625,0.5361328125,0.5751953125,0.56640625,0.509765625,0.453125,0.443359375,0.4814453125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.6484375,0.5859375,0.505859375,0.451171875,0.439453125,0.431640625,0.390625,0.3349609375,0.30078125,0.3076171875,0.353515625,0.419921875,0.490234375,0.5595703125,0.607421875,0.62109375,0.60546875,0.5849609375,0.5791015625,0.5888671875,0.6298828125,0.681640625,0.7119140625,0.6982421875,0.6474609375,0.5791015625,0.5078125,0.4365234375,0.388671875,0.3759765625,0.392578125,0.4140625,0.419921875,0.4296875,0.46875,0.51953125,0.548828125,0.5361328125,0.486328125,0.419921875,0.34765625,0.275390625,0.2470703125,0.2880859375,0.3876953125,0.498046875,0.5791015625,0.6474609375,0.7001953125,0.7138671875,0.685546875,0.6328125,0.5908203125,0.5791015625,0.5859375,0.6181640625,0.6552734375,0.66796875,0.640625,0.5810546875,0.509765625,0.4384765625,0.376953125,0.3486328125,0.3603515625,0.3984375,0.431640625,0.439453125,0.44921875,0.490234375,0.5419921875,0.572265625,0.55859375,0.5078125,0.439453125,0.36328125,0.279296875,0.2294921875,0.24609375,0.32421875,0.421875,0.5,0.5576171875,0.5732421875,0.5458984375,0.501953125,0.4775390625,0.498046875,0.5595703125,0.638671875,0.7333984375,0.7998046875,0.7998046875,0.7333984375,0.638671875,0.5595703125,0.4892578125,0.4375,0.4248046875,0.45703125,0.513671875,0.5576171875,0.5693359375,0.55859375,0.5087890625,0.4375,0.3857421875,0.3798828125,0.421875,0.4892578125,0.5703125,0.6728515625,0.7548828125,0.7744140625,0.7255859375,0.6435546875,0.5693359375,0.51171875,0.49609375,0.5234375,0.56640625,0.5908203125,0.5712890625,0.509765625,0.4375,0.3759765625,0.34375,0.3505859375,0.3837890625,0.4130859375,0.419921875,0.421875,0.4384765625,0.47265625,0.5146484375,0.5517578125,0.5732421875,0.5791015625,0.5908203125,0.6328125,0.68359375,0.7109375,0.6943359375,0.6396484375,0.5693359375,0.490234375,0.3974609375,0.333984375,0.3349609375,0.4013671875,0.4931640625,0.5693359375,0.64453125,0.7275390625,0.779296875,0.763671875,0.6865234375,0.5888671875,0.509765625,0.443359375,0.400390625,0.4013671875,0.4482421875,0.5126953125,0.5595703125,0.5693359375,0.564453125,0.5478515625,0.517578125,0.4814453125,0.451171875,0.4345703125,0.4296875,0.421875,0.3955078125,0.373046875,0.3798828125,0.42578125,0.49609375,0.5693359375,0.6259765625,0.619140625,0.5478515625,0.451171875,0.3798828125,0.373046875,0.4296875,0.4912109375,0.5126953125,0.4921875,0.453125,0.4306640625,0.44921875,0.509765625,0.5693359375,0.5888671875,0.564453125,0.5244140625,0.5,0.51953125,0.5791015625,0.65625,0.74609375,0.806640625,0.8017578125,0.732421875,0.6376953125,0.5595703125,0.4912109375,0.4384765625,0.4248046875,0.453125,0.505859375,0.5478515625,0.5595703125,0.5517578125,0.5146484375,0.4658203125,0.4384765625,0.4521484375,0.5029296875,0.5693359375,0.6240234375,0.6240234375,0.56640625,0.486328125,0.4306640625,0.4326171875,0.4892578125,0.556640625,0.6005859375,0.6005859375,0.5576171875,0.494140625,0.44921875,0.439453125,0.4443359375,0.4609375,0.4892578125,0.5205078125,0.5458984375,0.55859375,0.5595703125,0.568359375,0.609375,0.666015625,0.7021484375,0.6943359375,0.646484375,0.5791015625,0.5,0.3994140625,0.318359375,0.2998046875,0.349609375,0.43359375,0.509765625,0.5751953125,0.6142578125,0.6064453125,0.552734375,0.48046875,0.4296875,0.419921875,0.4326171875,0.484375,0.5537109375,0.6015625,0.6025390625,0.5576171875,0.4892578125,0.431640625,0.4306640625,0.490234375,0.5732421875,0.6337890625,0.6357421875,0.5791015625,0.5078125,0.4384765625,0.390625,0.37890625,0.3955078125,0.4150390625,0.419921875,0.4296875,0.48046875,0.55078125,0.603515625,0.609375,0.5673828125,0.5,0.421875,0.3388671875,0.291015625,0.3125,0.396484375,0.4990234375,0.5791015625,0.6357421875,0.6376953125,0.58203125,0.501953125,0.4453125,0.4443359375,0.5,0.556640625,0.56640625,0.5283203125,0.470703125,0.4326171875,0.4423828125,0.5,0.556640625,0.5654296875,0.52734375,0.470703125,0.435546875,0.44921875,0.509765625,0.568359375,0.5712890625,0.515625,0.4345703125,0.3759765625,0.375,0.4296875,0.5,0.568359375,0.6142578125,0.6240234375,0.6064453125,0.5849609375,0.5791015625,0.576171875,0.5576171875,0.5234375,0.4814453125,0.4453125,0.4248046875,0.419921875,0.4189453125,0.4208984375,0.4267578125,0.4326171875,0.4384765625,0.4404296875,0.439453125,0.447265625,0.4833984375,0.529296875,0.5537109375,0.5380859375,0.486328125,0.419921875,0.353515625,0.3046875,0.2958984375,0.3291015625,0.384765625,0.427734375,0.439453125,0.4345703125,0.4091796875,0.3857421875,0.388671875,0.4296875,0.4970703125,0.5693359375,0.646484375,0.73046875,0.7783203125,0.755859375,0.671875,0.5693359375,0.4892578125,0.419921875,0.359375,0.3291015625,0.33984375,0.376953125,0.41015625,0.419921875,0.4326171875,0.482421875,0.548828125,0.595703125,0.5966796875,0.5546875,0.4892578125,0.4248046875,0.384765625,0.388671875,0.4365234375,0.5029296875,0.5498046875,0.5595703125,0.5546875,0.5390625,0.5107421875,0.478515625,0.4501953125,0.4345703125,0.4296875,0.421875,0.3994140625,0.3818359375,0.392578125,0.439453125,0.5087890625,0.5791015625,0.6357421875,0.6435546875,0.6005859375,0.5380859375,0.4951171875,0.5029296875,0.5595703125,0.6259765625,0.67578125,0.689453125,0.6630859375,0.6142578125,0.5771484375,0.5693359375,0.580078125,0.62109375,0.671875,0.697265625,0.681640625,0.6279296875,0.5595703125,0.4873046875,0.4189453125,0.373046875,0.365234375,0.38671875,0.412109375,0.419921875,0.421875,0.42578125,0.4306640625,0.4345703125,0.4384765625,0.439453125,0.439453125,0.43359375,0.4091796875,0.388671875,0.3955078125,0.439453125,0.5078125,0.5791015625,0.6572265625,0.75,0.81640625,0.8173828125,0.751953125,0.6591796875,0.5791015625,0.5,0.408203125,0.34375,0.3447265625,0.4111328125,0.5029296875,0.5791015625,0.6416015625,0.6728515625,0.6494140625,0.5791015625,0.4921875,0.4326171875,0.419921875,0.4326171875,0.490234375,0.5751953125,0.6435546875,0.6640625,0.6318359375,0.5693359375,0.5107421875,0.494140625,0.5205078125,0.5634765625,0.587890625,0.5693359375,0.509765625,0.44921875,0.4287109375,0.44921875,0.4853515625,0.5048828125,0.4814453125,0.419921875,0.361328125,0.357421875,0.41015625,0.48828125,0.5439453125,0.544921875,0.4892578125,0.43359375,0.4267578125,0.470703125,0.5341796875,0.5771484375,0.5673828125,0.509765625,0.4501953125,0.4375,0.4736328125,0.638671875,0.56640625,0.4833984375,0.4326171875,0.4287109375,0.4296875,0.39453125,0.3359375,0.2822265625,0.26171875,0.2802734375,0.3251953125,0.3837890625,0.462890625,0.5498046875,0.6201171875,0.66015625,0.6728515625,0.673828125,0.681640625,0.7177734375,0.763671875,0.7890625,0.7783203125,0.7333984375,0.673828125,0.60546875,0.5185546875,0.4296875,0.36328125,0.33203125,0.3251953125,0.3251953125,0.3330078125,0.3623046875,0.400390625,0.421875,0.412109375,0.375,0.3251953125,0.275390625,0.2451171875,0.267578125,0.3544921875,0.4814453125,0.5986328125,0.673828125,0.734375,0.78515625,0.8046875,0.783203125,0.7353515625,0.6923828125,0.673828125,0.669921875,0.689453125,0.7138671875,0.716796875,0.68359375,0.6220703125,0.55078125,0.478515625,0.4111328125,0.37109375,0.369140625,0.39453125,0.421875,0.4287109375,0.4375,0.4736328125,0.5185546875,0.544921875,0.533203125,0.48828125,0.4287109375,0.3642578125,0.2978515625,0.2646484375,0.287109375,0.3583984375,0.439453125,0.5,0.541015625,0.544921875,0.5166015625,0.4833984375,0.474609375,0.505859375,0.5703125,0.6494140625,0.744140625,0.810546875,0.810546875,0.744140625,0.6494140625,0.5703125,0.5,0.4482421875,0.4384765625,0.4775390625,0.544921875,0.6005859375,0.6220703125,0.6181640625,0.5625,0.47265625,0.3916015625,0.3583984375,0.3837890625,0.4482421875,0.5283203125,0.6318359375,0.7216796875,0.7587890625,0.7353515625,0.6767578125,0.6220703125,0.580078125,0.576171875,0.6044921875,0.6376953125,0.646484375,0.615234375,0.55078125,0.4775390625,0.404296875,0.34765625,0.3232421875,0.32421875,0.3310546875,0.3251953125,0.322265625,0.3505859375,0.4189453125,0.5107421875,0.59765625,0.6533203125,0.673828125,0.6923828125,0.7353515625,0.779296875,0.791015625,0.7587890625,0.6943359375,0.6220703125,0.544921875,0.462890625,0.4111328125,0.419921875,0.4833984375,0.5625,0.6220703125,0.677734375,0.7421875,0.7822265625,0.767578125,0.7021484375,0.619140625,0.55078125,0.494140625,0.46484375,0.4765625,0.525390625,0.5849609375,0.6220703125,0.6220703125,0.607421875,0.576171875,0.52734375,0.4716796875,0.4228515625,0.3916015625,0.376953125,0.36328125,0.34375,0.3427734375,0.380859375,0.45703125,0.544921875,0.6220703125,0.67578125,0.6572265625,0.5625,0.4365234375,0.341796875,0.3232421875,0.376953125,0.4423828125,0.48046875,0.4873046875,0.4765625,0.4736328125,0.4970703125,0.55078125,0.60546875,0.62890625,0.6220703125,0.6025390625,0.595703125,0.619140625,0.673828125,0.7392578125,0.806640625,0.8408203125,0.8134765625,0.7333984375,0.640625,0.5703125,0.5087890625,0.4580078125,0.4384765625,0.4609375,0.5078125,0.5517578125,0.5703125,0.57421875,0.55859375,0.5341796875,0.521484375,0.53515625,0.572265625,0.6220703125,0.6591796875,0.6396484375,0.564453125,0.470703125,0.4052734375,0.3994140625,0.4482421875,0.505859375,0.5419921875,0.5419921875,0.505859375,0.4580078125,0.427734375,0.4287109375,0.443359375,0.474609375,0.515625,0.552734375,0.5751953125,0.578125,0.5703125,0.5712890625,0.611328125,0.6787109375,0.736328125,0.755859375,0.7294921875,0.673828125,0.6025390625,0.5068359375,0.4228515625,0.390625,0.419921875,0.4853515625,0.55078125,0.6044921875,0.615234375,0.5693359375,0.478515625,0.384765625,0.3291015625,0.3251953125,0.3486328125,0.4130859375,0.4951171875,0.5537109375,0.5595703125,0.5166015625,0.4482421875,0.3916015625,0.40234375,0.4853515625,0.6015625,0.693359375,0.7177734375,0.673828125,0.607421875,0.5263671875,0.4443359375,0.3828125,0.349609375,0.3349609375,0.3251953125,0.3291015625,0.384765625,0.4755859375,0.5556640625,0.5888671875,0.5634765625,0.5,0.4248046875,0.3583984375,0.337890625,0.388671875,0.4921875,0.599609375,0.673828125,0.7216796875,0.7158203125,0.650390625,0.556640625,0.482421875,0.462890625,0.5,0.5419921875,0.5498046875,0.521484375,0.4775390625,0.44921875,0.45703125,0.5,0.5400390625,0.5419921875,0.509765625,0.4716796875,0.4580078125,0.4873046875,0.55078125,0.609375,0.611328125,0.5478515625,0.4501953125,0.3671875,0.341796875,0.376953125,0.43359375,0.5068359375,0.58203125,0.638671875,0.6669921875,0.673828125,0.673828125,0.6669921875,0.630859375,0.560546875,0.4736328125,0.3935546875,0.34375,0.3251953125,0.3193359375,0.330078125,0.359375,0.3955078125,0.423828125,0.435546875,0.4287109375,0.423828125,0.4326171875,0.4462890625,0.4443359375,0.419921875,0.3759765625,0.3251953125,0.27734375,0.24609375,0.251953125,0.296875,0.359375,0.4091796875,0.4287109375,0.43359375,0.4228515625,0.4140625,0.4306640625,0.4794921875,0.548828125,0.6220703125,0.6962890625,0.7626953125,0.783203125,0.732421875,0.62890625,0.521484375,0.4482421875,0.3837890625,0.318359375,0.271484375,0.2607421875,0.28125,0.3095703125,0.3251953125,0.345703125,0.3974609375,0.46484375,0.5146484375,0.5244140625,0.49609375,0.4482421875,0.40234375,0.3857421875,0.412109375,0.4697265625,0.533203125,0.5703125,0.5703125,0.556640625,0.5322265625,0.4951171875,0.4521484375,0.4150390625,0.390625,0.376953125,0.3671875,0.3662109375,0.3916015625,0.453125,0.5361328125,0.615234375,0.673828125,0.7138671875,0.708984375,0.6572265625,0.5869140625,0.53515625,0.5302734375,0.5703125,0.619140625,0.6572265625,0.669921875,0.658203125,0.6328125,0.6171875,0.6220703125,0.638671875,0.67578125,0.7119140625,0.7197265625,0.689453125,0.6328125,0.5703125,0.5029296875,0.4228515625,0.3486328125,0.3056640625,0.298828125,0.3125,0.3251953125,0.337890625,0.3583984375,0.3828125,0.40625,0.421875,0.427734375,0.4287109375,0.42578125,0.419921875,0.4287109375,0.4677734375,0.533203125,0.6083984375,0.673828125,0.7431640625,0.8291015625,0.89453125,0.8984375,0.83984375,0.751953125,0.673828125,0.5966796875,0.5146484375,0.462890625,0.4716796875,0.53515625,0.6142578125,0.673828125,0.71484375,0.7099609375,0.6416015625,0.5283203125,0.4130859375,0.3408203125,0.3251953125,0.33984375,0.4052734375,0.5087890625,0.609375,0.666015625,0.6640625,0.6220703125,0.5791015625,0.5693359375,0.58984375,0.6181640625,0.62890625,0.60546875,0.55078125,0.49609375,0.4658203125,0.45703125,0.4541015625,0.4365234375,0.392578125,0.3251953125,0.265625,0.2578125,0.3095703125,0.3935546875,0.46484375,0.484375,0.4482421875,0.4091796875,0.419921875,0.4794921875,0.5546875,0.6044921875,0.6015625,0.55078125,0.4970703125,0.4755859375,0.4912109375,0.6044921875,0.546875,0.484375,0.455078125,0.46875,0.4873046875,0.4697265625,0.4140625,0.3388671875,0.2763671875,0.2490234375,0.2587890625,0.2890625,0.361328125,0.4716796875,0.5908203125,0.6845703125,0.7314453125,0.740234375,0.74609375,0.7724609375,0.806640625,0.826171875,0.8173828125,0.7841796875,0.740234375,0.6845703125,0.5927734375,0.4775390625,0.369140625,0.2958984375,0.263671875,0.2587890625,0.26171875,0.2724609375,0.287109375,0.294921875,0.291015625,0.27734375,0.2587890625,0.2451171875,0.263671875,0.333984375,0.44921875,0.5791015625,0.6826171875,0.740234375,0.7880859375,0.8359375,0.8642578125,0.8564453125,0.8173828125,0.7724609375,0.740234375,0.7216796875,0.7275390625,0.7451171875,0.7509765625,0.7275390625,0.673828125,0.6044921875,0.53125,0.462890625,0.4189453125,0.4140625,0.4375,0.4619140625,0.46875,0.4755859375,0.501953125,0.53515625,0.5546875,0.546875,0.513671875,0.46875,0.4228515625,0.3828125,0.3671875,0.3857421875,0.4296875,0.4736328125,0.5,0.5087890625,0.484375,0.44140625,0.4111328125,0.4169921875,0.4619140625,0.5302734375,0.609375,0.7041015625,0.7705078125,0.7705078125,0.7041015625,0.609375,0.5302734375,0.458984375,0.404296875,0.39453125,0.44140625,0.5234375,0.5966796875,0.634765625,0.6455078125,0.59375,0.4912109375,0.3857421875,0.326171875,0.333984375,0.39453125,0.47265625,0.5654296875,0.646484375,0.6875,0.6845703125,0.658203125,0.634765625,0.6259765625,0.650390625,0.693359375,0.7236328125,0.7177734375,0.6728515625,0.6044921875,0.5302734375,0.451171875,0.380859375,0.3310546875,0.3017578125,0.2822265625,0.2587890625,0.2412109375,0.2646484375,0.34765625,0.474609375,0.6064453125,0.69921875,0.740234375,0.7734375,0.8212890625,0.8564453125,0.84765625,0.791015625,0.7109375,0.634765625,0.5625,0.4990234375,0.4716796875,0.494140625,0.55078125,0.6064453125,0.634765625,0.6591796875,0.6953125,0.7255859375,0.7294921875,0.7001953125,0.65234375,0.6044921875,0.564453125,0.55078125,0.568359375,0.607421875,0.642578125,0.6533203125,0.634765625,0.6064453125,0.5703125,0.5244140625,0.474609375,0.4287109375,0.392578125,0.3642578125,0.3349609375,0.306640625,0.30859375,0.361328125,0.4541015625,0.5556640625,0.634765625,0.6884765625,0.666015625,0.5654296875,0.43359375,0.3330078125,0.310546875,0.3642578125,0.43359375,0.48828125,0.521484375,0.53515625,0.5439453125,0.564453125,0.6044921875,0.6455078125,0.6689453125,0.673828125,0.6708984375,0.67578125,0.69921875,0.740234375,0.78515625,0.8193359375,0.814453125,0.7587890625,0.669921875,0.5849609375,0.5302734375,0.482421875,0.43359375,0.4052734375,0.4140625,0.4521484375,0.498046875,0.5302734375,0.5556640625,0.576171875,0.5908203125,0.599609375,0.6064453125,0.6181640625,0.634765625,0.6416015625,0.599609375,0.515625,0.4248046875,0.365234375,0.3583984375,0.39453125,0.4365234375,0.4638671875,0.46875,0.4580078125,0.4462890625,0.4482421875,0.46875,0.5,0.5419921875,0.580078125,0.595703125,0.5849609375,0.5576171875,0.5302734375,0.515625,0.5478515625,0.6240234375,0.7099609375,0.767578125,0.775390625,0.740234375,0.6865234375,0.6103515625,0.5380859375,0.501953125,0.5146484375,0.5576171875,0.6044921875,0.63671875,0.61328125,0.5244140625,0.40234375,0.296875,0.248046875,0.2587890625,0.2978515625,0.375,0.4638671875,0.5185546875,0.515625,0.46484375,0.39453125,0.3388671875,0.3544921875,0.4521484375,0.59375,0.7158203125,0.7666015625,0.740234375,0.6884765625,0.6123046875,0.5166015625,0.4189453125,0.3408203125,0.2890625,0.2587890625,0.2490234375,0.30078125,0.40234375,0.5078125,0.568359375,0.5595703125,0.5,0.4287109375,0.3798828125,0.3857421875,0.4609375,0.576171875,0.6806640625,0.740234375,0.7763671875,0.7685546875,0.708984375,0.619140625,0.53515625,0.4931640625,0.5,0.515625,0.5185546875,0.5078125,0.4912109375,0.48046875,0.4833984375,0.5,0.5107421875,0.4951171875,0.46875,0.4580078125,0.48046875,0.53515625,0.6044921875,0.666015625,0.6787109375,0.6240234375,0.521484375,0.41796875,0.361328125,0.3642578125,0.3916015625,0.451171875,0.5380859375,0.6298828125,0.69921875,0.734375,0.740234375,0.732421875,0.689453125,0.6015625,0.4853515625,0.373046875,0.2958984375,0.2587890625,0.2421875,0.263671875,0.3251953125,0.4033203125,0.46484375,0.486328125,0.46875,0.44140625,0.4072265625,0.3701171875,0.3330078125,0.302734375,0.2783203125,0.2587890625,0.2421875,0.23828125,0.26171875,0.314453125,0.3798828125,0.435546875,0.46875,0.48828125,0.486328125,0.474609375,0.4775390625,0.5078125,0.5654296875,0.634765625,0.705078125,0.7548828125,0.748046875,0.673828125,0.55859375,0.4541015625,0.39453125,0.34375,0.2783203125,0.220703125,0.1923828125,0.201171875,0.23046875,0.2587890625,0.2900390625,0.3369140625,0.38671875,0.4189453125,0.42578125,0.4130859375,0.39453125,0.3828125,0.400390625,0.447265625,0.501953125,0.5419921875,0.5498046875,0.5302734375,0.50390625,0.4794921875,0.4580078125,0.4365234375,0.4140625,0.3896484375,0.3642578125,0.3447265625,0.359375,0.4248046875,0.52734375,0.634765625,0.708984375,0.740234375,0.7509765625,0.728515625,0.6708984375,0.599609375,0.5419921875,0.5185546875,0.5302734375,0.546875,0.55859375,0.5654296875,0.57421875,0.5888671875,0.609375,0.634765625,0.6640625,0.697265625,0.712890625,0.6923828125,0.6416015625,0.580078125,0.5302734375,0.4755859375,0.39453125,0.3056640625,0.2421875,0.220703125,0.2333984375,0.2587890625,0.2890625,0.333984375,0.3857421875,0.4306640625,0.4580078125,0.4677734375,0.46875,0.46875,0.4755859375,0.501953125,0.5546875,0.6240234375,0.689453125,0.740234375,0.7939453125,0.869140625,0.9306640625,0.9423828125,0.89453125,0.81640625,0.740234375,0.66796875,0.6044921875,0.5771484375,0.599609375,0.65625,0.7119140625,0.740234375,0.7470703125,0.703125,0.5986328125,0.4638671875,0.341796875,0.2724609375,0.2587890625,0.2705078125,0.3271484375,0.4248046875,0.5322265625,0.61328125,0.64453125,0.634765625,0.6220703125,0.630859375,0.654296875,0.673828125,0.6728515625,0.646484375,0.6044921875,0.5625,0.529296875,0.4970703125,0.455078125,0.3984375,0.330078125,0.2587890625,0.1953125,0.169921875,0.201171875,0.275390625,0.35546875,0.3994140625,0.39453125,0.38671875,0.4248046875,0.501953125,0.5849609375,0.6376953125,0.6416015625,0.6044921875,0.560546875,0.525390625,0.5078125,0.560546875,0.52734375,0.4951171875,0.494140625,0.5302734375,0.5703125,0.58203125,0.5439453125,0.4609375,0.36328125,0.2900390625,0.2587890625,0.251953125,0.2958984375,0.400390625,0.53515625,0.6572265625,0.7265625,0.740234375,0.744140625,0.7587890625,0.7783203125,0.7900390625,0.78515625,0.765625,0.740234375,0.703125,0.6259765625,0.513671875,0.3974609375,0.3095703125,0.2666015625,0.2587890625,0.255859375,0.2451171875,0.2314453125,0.2236328125,0.2265625,0.240234375,0.2587890625,0.28515625,0.341796875,0.4326171875,0.541015625,0.6396484375,0.7060546875,0.740234375,0.7724609375,0.8173828125,0.8564453125,0.8642578125,0.8359375,0.7880859375,0.740234375,0.703125,0.69921875,0.720703125,0.7421875,0.7392578125,0.701171875,0.634765625,0.5625,0.498046875,0.4609375,0.4638671875,0.4931640625,0.5224609375,0.5302734375,0.533203125,0.548828125,0.568359375,0.580078125,0.5751953125,0.5556640625,0.5302734375,0.505859375,0.494140625,0.4970703125,0.5078125,0.517578125,0.5146484375,0.5,0.470703125,0.4111328125,0.34765625,0.3173828125,0.337890625,0.3974609375,0.46875,0.548828125,0.642578125,0.7099609375,0.7099609375,0.642578125,0.548828125,0.46875,0.396484375,0.333984375,0.3173828125,0.3642578125,0.4560546875,0.5478515625,0.6044921875,0.6328125,0.595703125,0.4970703125,0.3837890625,0.3095703125,0.306640625,0.3642578125,0.4365234375,0.5078125,0.560546875,0.5849609375,0.5888671875,0.5908203125,0.6044921875,0.6337890625,0.693359375,0.7568359375,0.787109375,0.7666015625,0.70703125,0.634765625,0.5625,0.4912109375,0.427734375,0.3779296875,0.3388671875,0.3017578125,0.2587890625,0.2197265625,0.21875,0.2841796875,0.4111328125,0.560546875,0.6787109375,0.740234375,0.791015625,0.849609375,0.880859375,0.8564453125,0.779296875,0.68359375,0.6044921875,0.537109375,0.49609375,0.4970703125,0.53515625,0.5849609375,0.61328125,0.6044921875,0.5908203125,0.595703125,0.619140625,0.6455078125,0.662109375,0.6572265625,0.634765625,0.615234375,0.6181640625,0.640625,0.6630859375,0.6669921875,0.6455078125,0.6044921875,0.5615234375,0.529296875,0.5078125,0.4912109375,0.4697265625,0.4375,0.39453125,0.345703125,0.2958984375,0.28125,0.3251953125,0.4189453125,0.5234375,0.6044921875,0.6591796875,0.64453125,0.5576171875,0.44140625,0.3544921875,0.33984375,0.39453125,0.4658203125,0.5322265625,0.580078125,0.6015625,0.6064453125,0.61328125,0.634765625,0.6591796875,0.67578125,0.6845703125,0.6904296875,0.69921875,0.7158203125,0.740234375,0.7626953125,0.7646484375,0.728515625,0.6572265625,0.572265625,0.5048828125,0.46875,0.4375,0.3916015625,0.3525390625,0.3447265625,0.373046875,0.421875,0.46875,0.51953125,0.580078125,0.6328125,0.6572265625,0.650390625,0.6259765625,0.6044921875,0.5771484375,0.5185546875,0.44140625,0.375,0.33984375,0.341796875,0.3642578125,0.3876953125,0.400390625,0.408203125,0.421875,0.447265625,0.4853515625,0.5302734375,0.5791015625,0.630859375,0.6591796875,0.6435546875,0.587890625,0.5205078125,0.46875,0.4345703125,0.4501953125,0.521484375,0.6240234375,0.712890625,0.7529296875,0.740234375,0.7080078125,0.6611328125,0.61328125,0.5849609375,0.5859375,0.6083984375,0.634765625,0.6455078125,0.5927734375,0.48046875,0.3505859375,0.2548828125,0.2275390625,0.2587890625,0.3154296875,0.4033203125,0.48828125,0.52734375,0.50390625,0.4375,0.3642578125,0.306640625,0.3154296875,0.4052734375,0.546875,0.6787109375,0.7470703125,0.740234375,0.7099609375,0.658203125,0.580078125,0.482421875,0.38671875,0.310546875,0.2587890625,0.23046875,0.2685546875,0.3671875,0.48046875,0.5546875,0.5576171875,0.5,0.431640625,0.3935546875,0.4140625,0.4970703125,0.6083984375,0.69921875,0.740234375,0.7626953125,0.763671875,0.7294921875,0.662109375,0.5859375,0.52734375,0.5,0.4833984375,0.48046875,0.4912109375,0.5078125,0.5185546875,0.515625,0.5,0.474609375,0.435546875,0.408203125,0.421875,0.4794921875,0.5595703125,0.634765625,0.7021484375,0.736328125,0.7099609375,0.6240234375,0.5126953125,0.4287109375,0.39453125,0.3837890625,0.412109375,0.4853515625,0.5849609375,0.6767578125,0.7294921875,0.740234375,0.7353515625,0.703125,0.6298828125,0.521484375,0.40625,0.314453125,0.2587890625,0.2275390625,0.25390625,0.33984375,0.44921875,0.53515625,0.5615234375,0.5302734375,0.4765625,0.3994140625,0.31640625,0.2568359375,0.2333984375,0.240234375,0.2587890625,0.27734375,0.2978515625,0.328125,0.3720703125,0.4267578125,0.482421875,0.5302734375,0.5654296875,0.56640625,0.5380859375,0.5078125,0.50390625,0.5390625,0.6044921875,0.6728515625,0.7109375,0.6904296875,0.607421875,0.4951171875,0.4052734375,0.3642578125,0.330078125,0.271484375,0.208984375,0.1728515625,0.177734375,0.2138671875,0.2587890625,0.302734375,0.337890625,0.35546875,0.3564453125,0.349609375,0.349609375,0.3642578125,0.3916015625,0.4443359375,0.5048828125,0.5439453125,0.544921875,0.513671875,0.46875,0.4296875,0.4140625,0.4228515625,0.44140625,0.4501953125,0.43359375,0.39453125,0.361328125,0.380859375,0.4638671875,0.58203125,0.689453125,0.744140625,0.740234375,0.7177734375,0.6826171875,0.6328125,0.5771484375,0.52734375,0.4912109375,0.46875,0.447265625,0.423828125,0.4169921875,0.44140625,0.494140625,0.5546875,0.6044921875,0.6494140625,0.681640625,0.6787109375,0.6357421875,0.56640625,0.50390625,0.46875,0.4326171875,0.361328125,0.275390625,0.2119140625,0.193359375,0.2158203125,0.2587890625,0.3095703125,0.375,0.4443359375,0.4970703125,0.5234375,0.5302734375,0.5302734375,0.53125,0.541015625,0.568359375,0.61328125,0.6650390625,0.7099609375,0.740234375,0.775390625,0.8369140625,0.89453125,0.9140625,0.880859375,0.8134765625,0.740234375,0.6728515625,0.6318359375,0.6328125,0.6708984375,0.720703125,0.7490234375,0.740234375,0.7099609375,0.6376953125,0.52734375,0.408203125,0.314453125,0.267578125,0.2587890625,0.2646484375,0.294921875,0.3583984375,0.44140625,0.5224609375,0.578125,0.6044921875,0.626953125,0.66015625,0.6904296875,0.701171875,0.689453125,0.662109375,0.634765625,0.6103515625,0.5869140625,0.5517578125,0.494140625,0.4169921875,0.333984375,0.2587890625,0.189453125,0.138671875,0.134765625,0.1845703125,0.2646484375,0.3330078125,0.3642578125,0.392578125,0.4541015625,0.5380859375,0.61328125,0.654296875,0.6572265625,0.634765625,0.603515625,0.556640625,0.5078125,0.5263671875,0.5078125,0.4970703125,0.5166015625,0.5703125,0.630859375,0.67578125,0.6708984375,0.6015625,0.4921875,0.3896484375,0.3251953125,0.2841796875,0.2890625,0.357421875,0.470703125,0.5859375,0.658203125,0.673828125,0.6748046875,0.6806640625,0.6884765625,0.693359375,0.69140625,0.68359375,0.673828125,0.6552734375,0.60546875,0.525390625,0.4384765625,0.3681640625,0.33203125,0.3251953125,0.318359375,0.2890625,0.2509765625,0.2294921875,0.2392578125,0.2763671875,0.3251953125,0.3818359375,0.455078125,0.5341796875,0.6005859375,0.642578125,0.662109375,0.673828125,0.6923828125,0.7353515625,0.783203125,0.8046875,0.78515625,0.734375,0.673828125,0.6220703125,0.61328125,0.6435546875,0.6865234375,0.70703125,0.6845703125,0.6220703125,0.55078125,0.4921875,0.466796875,0.484375,0.525390625,0.5615234375,0.5703125,0.5712890625,0.5771484375,0.5849609375,0.58984375,0.587890625,0.580078125,0.5703125,0.5654296875,0.5791015625,0.599609375,0.6064453125,0.5888671875,0.548828125,0.5,0.4384765625,0.3505859375,0.2724609375,0.2451171875,0.2802734375,0.353515625,0.4287109375,0.5087890625,0.6025390625,0.669921875,0.669921875,0.6025390625,0.5087890625,0.4287109375,0.353515625,0.2802734375,0.2490234375,0.28515625,0.376953125,0.478515625,0.55078125,0.5966796875,0.5791015625,0.498046875,0.3955078125,0.32421875,0.3203125,0.376953125,0.4443359375,0.48828125,0.501953125,0.49609375,0.4912109375,0.5078125,0.55078125,0.6123046875,0.7001953125,0.7783203125,0.8056640625,0.7705078125,0.697265625,0.6220703125,0.5537109375,0.5009765625,0.466796875,0.4453125,0.4208984375,0.3818359375,0.3251953125,0.265625,0.2275390625,0.248046875,0.33984375,0.474609375,0.5966796875,0.673828125,0.740234375,0.8115234375,0.849609375,0.8212890625,0.7353515625,0.6328125,0.55078125,0.48828125,0.4658203125,0.490234375,0.5419921875,0.5859375,0.5908203125,0.55078125,0.5048828125,0.482421875,0.49609375,0.541015625,0.5927734375,0.623046875,0.6220703125,0.6181640625,0.6376953125,0.666015625,0.677734375,0.658203125,0.611328125,0.55078125,0.498046875,0.4755859375,0.4873046875,0.51171875,0.5234375,0.5009765625,0.4482421875,0.380859375,0.306640625,0.2646484375,0.2880859375,0.3701171875,0.470703125,0.55078125,0.6083984375,0.6064453125,0.5439453125,0.455078125,0.392578125,0.390625,0.4482421875,0.5205078125,0.587890625,0.6318359375,0.6435546875,0.630859375,0.6171875,0.6220703125,0.6318359375,0.6396484375,0.6455078125,0.650390625,0.6552734375,0.6630859375,0.673828125,0.6796875,0.6630859375,0.6181640625,0.5537109375,0.4892578125,0.4462890625,0.4287109375,0.41015625,0.3671875,0.3193359375,0.2978515625,0.3173828125,0.3681640625,0.4287109375,0.4990234375,0.587890625,0.6640625,0.6923828125,0.6640625,0.6064453125,0.55078125,0.49609375,0.431640625,0.3759765625,0.3466796875,0.34765625,0.3642578125,0.376953125,0.3837890625,0.37890625,0.3779296875,0.3984375,0.4453125,0.5068359375,0.5703125,0.634765625,0.6982421875,0.7236328125,0.6865234375,0.59765625,0.5,0.4287109375,0.3759765625,0.3671875,0.41796875,0.5126953125,0.611328125,0.6689453125,0.673828125,0.66015625,0.640625,0.619140625,0.60546875,0.6044921875,0.611328125,0.6220703125,0.6162109375,0.552734375,0.4423828125,0.333984375,0.271484375,0.2744140625,0.3251953125,0.396484375,0.4892578125,0.5654296875,0.583984375,0.5361328125,0.4541015625,0.376953125,0.3154296875,0.3056640625,0.3662109375,0.478515625,0.5966796875,0.6669921875,0.673828125,0.6640625,0.6494140625,0.6162109375,0.5546875,0.47265625,0.3916015625,0.3251953125,0.2802734375,0.2978515625,0.37890625,0.4814453125,0.552734375,0.556640625,0.5,0.4326171875,0.39453125,0.4130859375,0.484375,0.5791015625,0.6494140625,0.673828125,0.6865234375,0.7021484375,0.7041015625,0.6748046875,0.619140625,0.5546875,0.5,0.45703125,0.44921875,0.4775390625,0.521484375,0.5498046875,0.5419921875,0.5,0.4423828125,0.37890625,0.3427734375,0.3662109375,0.4453125,0.5419921875,0.6220703125,0.6943359375,0.755859375,0.767578125,0.712890625,0.611328125,0.51171875,0.4482421875,0.4033203125,0.3935546875,0.4345703125,0.515625,0.6044921875,0.6611328125,0.673828125,0.673828125,0.6669921875,0.6357421875,0.5693359375,0.48046875,0.3935546875,0.3251953125,0.2802734375,0.30078125,0.3896484375,0.505859375,0.5947265625,0.615234375,0.5703125,0.498046875,0.3935546875,0.2900390625,0.2294921875,0.23046875,0.2734375,0.3251953125,0.3720703125,0.4033203125,0.421875,0.4384765625,0.466796875,0.51171875,0.5703125,0.619140625,0.6201171875,0.57421875,0.5126953125,0.4755859375,0.490234375,0.55078125,0.6181640625,0.6552734375,0.6376953125,0.56640625,0.4716796875,0.4013671875,0.376953125,0.357421875,0.3076171875,0.2490234375,0.2138671875,0.220703125,0.265625,0.3251953125,0.3798828125,0.4013671875,0.3857421875,0.3515625,0.3271484375,0.3349609375,0.376953125,0.4365234375,0.515625,0.58203125,0.6005859375,0.5625,0.494140625,0.4287109375,0.3779296875,0.37109375,0.41015625,0.466796875,0.505859375,0.4990234375,0.4482421875,0.400390625,0.4130859375,0.4892578125,0.5966796875,0.68359375,0.708984375,0.673828125,0.625,0.587890625,0.5615234375,0.5400390625,0.5146484375,0.4775390625,0.4287109375,0.3740234375,0.3154296875,0.2880859375,0.3154296875,0.392578125,0.4814453125,0.55078125,0.609375,0.6455078125,0.6376953125,0.5830078125,0.5087890625,0.4501953125,0.4287109375,0.408203125,0.3525390625,0.28125,0.232421875,0.228515625,0.2666015625,0.3251953125,0.390625,0.4658203125,0.53125,0.5703125,0.5791015625,0.5732421875,0.5703125,0.5712890625,0.5771484375,0.5927734375,0.6162109375,0.640625,0.6611328125,0.673828125,0.693359375,0.7431640625,0.7978515625,0.82421875,0.802734375,0.744140625,0.673828125,0.6103515625,0.587890625,0.6123046875,0.6640625,0.708984375,0.712890625,0.673828125,0.615234375,0.5361328125,0.44921875,0.37890625,0.3388671875,0.326171875,0.3251953125,0.32421875,0.3212890625,0.333984375,0.3720703125,0.431640625,0.49609375,0.55078125,0.603515625,0.6552734375,0.6884765625,0.6904296875,0.666015625,0.6376953125,0.6220703125,0.6142578125,0.61328125,0.5986328125,0.5546875,0.4833984375,0.400390625,0.3251953125,0.25,0.173828125,0.134765625,0.1572265625,0.2314453125,0.31640625,0.376953125,0.43359375,0.5068359375,0.5791015625,0.6259765625,0.640625,0.6328125,0.6220703125,0.6015625,0.5498046875,0.482421875,0.5166015625,0.48828125,0.474609375,0.498046875,0.5595703125,0.6337890625,0.7080078125,0.740234375,0.703125,0.607421875,0.4990234375,0.419921875,0.357421875,0.326171875,0.349609375,0.419921875,0.5068359375,0.56640625,0.5791015625,0.5791015625,0.580078125,0.58203125,0.58203125,0.58203125,0.5810546875,0.5791015625,0.57421875,0.5537109375,0.517578125,0.4755859375,0.44140625,0.4228515625,0.419921875,0.41015625,0.3701171875,0.3193359375,0.291015625,0.3037109375,0.353515625,0.419921875,0.490234375,0.55859375,0.60546875,0.6171875,0.6025390625,0.5830078125,0.5791015625,0.5908203125,0.6328125,0.685546875,0.7138671875,0.7001953125,0.6474609375,0.5791015625,0.5205078125,0.509765625,0.548828125,0.60546875,0.642578125,0.6298828125,0.5693359375,0.4990234375,0.4453125,0.4296875,0.4580078125,0.5087890625,0.5498046875,0.5595703125,0.5595703125,0.560546875,0.5615234375,0.5625,0.5625,0.560546875,0.5595703125,0.5654296875,0.5966796875,0.634765625,0.6484375,0.623046875,0.5673828125,0.5,0.421875,0.322265625,0.2431640625,0.2255859375,0.27734375,0.3623046875,0.439453125,0.51953125,0.61328125,0.6806640625,0.6806640625,0.61328125,0.51953125,0.439453125,0.3623046875,0.27734375,0.2275390625,0.24609375,0.328125,0.4296875,0.509765625,0.5654296875,0.5654296875,0.5078125,0.4267578125,0.369140625,0.37109375,0.4296875,0.4921875,0.5146484375,0.494140625,0.4560546875,0.43359375,0.451171875,0.509765625,0.5869140625,0.6865234375,0.765625,0.783203125,0.732421875,0.6474609375,0.5693359375,0.505859375,0.4755859375,0.4814453125,0.501953125,0.5087890625,0.4814453125,0.419921875,0.345703125,0.2734375,0.2431640625,0.28515625,0.38671875,0.498046875,0.5791015625,0.6552734375,0.740234375,0.791015625,0.7734375,0.6923828125,0.5908203125,0.509765625,0.44921875,0.4365234375,0.474609375,0.533203125,0.57421875,0.56640625,0.509765625,0.4443359375,0.4033203125,0.404296875,0.4501953125,0.5146484375,0.5595703125,0.5693359375,0.576171875,0.6083984375,0.646484375,0.6611328125,0.63671875,0.5791015625,0.509765625,0.4501953125,0.4375,0.47265625,0.5263671875,0.5615234375,0.548828125,0.4892578125,0.412109375,0.3212890625,0.259765625,0.263671875,0.333984375,0.4296875,0.509765625,0.568359375,0.5771484375,0.5322265625,0.466796875,0.421875,0.4306640625,0.4892578125,0.560546875,0.6220703125,0.65234375,0.6416015625,0.6064453125,0.576171875,0.5693359375,0.5712890625,0.572265625,0.5732421875,0.5751953125,0.576171875,0.5771484375,0.5791015625,0.578125,0.5634765625,0.533203125,0.4970703125,0.4638671875,0.4443359375,0.439453125,0.4287109375,0.38671875,0.333984375,0.3046875,0.3193359375,0.37109375,0.439453125,0.5185546875,0.6181640625,0.6982421875,0.7158203125,0.666015625,0.583984375,0.509765625,0.4404296875,0.3798828125,0.3486328125,0.35546875,0.3896484375,0.4208984375,0.4296875,0.4248046875,0.400390625,0.3779296875,0.3818359375,0.4228515625,0.48828125,0.5595703125,0.634765625,0.7119140625,0.75,0.71875,0.626953125,0.5205078125,0.439453125,0.375,0.341796875,0.361328125,0.4287109375,0.51171875,0.568359375,0.5791015625,0.5771484375,0.57421875,0.5703125,0.5673828125,0.56640625,0.5673828125,0.5693359375,0.5576171875,0.5,0.4150390625,0.3447265625,0.3232421875,0.35546875,0.419921875,0.498046875,0.591796875,0.6611328125,0.6640625,0.6005859375,0.5087890625,0.4296875,0.36328125,0.330078125,0.3515625,0.421875,0.5087890625,0.5673828125,0.5791015625,0.583984375,0.603515625,0.6201171875,0.6083984375,0.560546875,0.4912109375,0.419921875,0.36328125,0.36328125,0.421875,0.5029296875,0.5595703125,0.5576171875,0.5,0.431640625,0.3876953125,0.390625,0.44140625,0.513671875,0.5654296875,0.5791015625,0.5888671875,0.6201171875,0.6533203125,0.66015625,0.62890625,0.568359375,0.5,0.4423828125,0.4326171875,0.470703125,0.5283203125,0.56640625,0.556640625,0.5,0.4248046875,0.341796875,0.291015625,0.3076171875,0.3876953125,0.48828125,0.5693359375,0.646484375,0.7294921875,0.775390625,0.7529296875,0.6689453125,0.568359375,0.4892578125,0.4248046875,0.3857421875,0.3935546875,0.4462890625,0.5166015625,0.5673828125,0.5791015625,0.5849609375,0.6064453125,0.623046875,0.6103515625,0.5625,0.4912109375,0.419921875,0.3642578125,0.37109375,0.44140625,0.5380859375,0.6083984375,0.6142578125,0.5595703125,0.478515625,0.3701171875,0.275390625,0.2392578125,0.2734375,0.3466796875,0.419921875,0.4794921875,0.505859375,0.498046875,0.4755859375,0.46875,0.4970703125,0.5595703125,0.6162109375,0.6201171875,0.568359375,0.4951171875,0.4453125,0.4501953125,0.509765625,0.5771484375,0.62109375,0.6181640625,0.5673828125,0.49609375,0.443359375,0.4296875,0.41796875,0.375,0.3203125,0.2890625,0.30078125,0.3515625,0.419921875,0.478515625,0.4912109375,0.455078125,0.3994140625,0.3623046875,0.373046875,0.4296875,0.505859375,0.5986328125,0.6650390625,0.6689453125,0.6064453125,0.517578125,0.439453125,0.3828125,0.3779296875,0.4287109375,0.5009765625,0.55078125,0.546875,0.4892578125,0.4326171875,0.4326171875,0.490234375,0.572265625,0.6318359375,0.6337890625,0.5791015625,0.5185546875,0.4921875,0.4990234375,0.51953125,0.52734375,0.5,0.439453125,0.365234375,0.283203125,0.2333984375,0.2509765625,0.3310546875,0.4306640625,0.509765625,0.576171875,0.6201171875,0.6181640625,0.5712890625,0.5029296875,0.453125,0.439453125,0.427734375,0.3837890625,0.326171875,0.2919921875,0.3017578125,0.3515625,0.419921875,0.4912109375,0.5595703125,0.603515625,0.6103515625,0.58984375,0.5654296875,0.5595703125,0.5595703125,0.560546875,0.564453125,0.568359375,0.5732421875,0.5771484375,0.5791015625,0.5908203125,0.6337890625,0.6875,0.716796875,0.7021484375,0.6494140625,0.5791015625,0.5185546875,0.505859375,0.5439453125,0.603515625,0.64453125,0.6357421875,0.5791015625,0.5087890625,0.439453125,0.3916015625,0.3779296875,0.3935546875,0.4140625,0.419921875,0.412109375,0.3837890625,0.3525390625,0.34765625,0.3798828125,0.4404296875,0.509765625,0.5771484375,0.6357421875,0.6630859375,0.650390625,0.6123046875,0.5791015625,0.5693359375,0.57421875,0.5966796875,0.6162109375,0.607421875,0.5625,0.4931640625,0.419921875,0.3408203125,0.25,0.1875,0.19140625,0.259765625,0.3525390625,0.4296875,0.5,0.5673828125,0.6123046875,0.62109375,0.6015625,0.5771484375,0.5693359375,0.556640625,0.5068359375,0.4404296875,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.5341796875,0.439453125,0.3701171875,0.3642578125,0.419921875,0.5009765625,0.6103515625,0.70703125,0.74609375,0.71484375,0.6416015625,0.5693359375,0.4990234375,0.4296875,0.3828125,0.37109375,0.3896484375,0.412109375,0.419921875,0.421875,0.423828125,0.42578125,0.42578125,0.423828125,0.421875,0.419921875,0.421875,0.4384765625,0.47265625,0.5146484375,0.5517578125,0.5732421875,0.5791015625,0.5703125,0.5283203125,0.47265625,0.4365234375,0.4443359375,0.4921875,0.5595703125,0.6240234375,0.6591796875,0.642578125,0.5771484375,0.4931640625,0.4345703125,0.419921875,0.427734375,0.4677734375,0.5205078125,0.552734375,0.5439453125,0.49609375,0.4296875,0.373046875,0.365234375,0.4072265625,0.4677734375,0.5087890625,0.498046875,0.439453125,0.37109375,0.318359375,0.302734375,0.3271484375,0.375,0.412109375,0.419921875,0.4189453125,0.419921875,0.423828125,0.4296875,0.435546875,0.439453125,0.439453125,0.451171875,0.4990234375,0.5634765625,0.6064453125,0.6044921875,0.55859375,0.4892578125,0.412109375,0.330078125,0.2841796875,0.30859375,0.3955078125,0.4990234375,0.5791015625,0.65625,0.7451171875,0.8046875,0.798828125,0.7294921875,0.6357421875,0.5595703125,0.4814453125,0.384765625,0.3095703125,0.294921875,0.34765625,0.4326171875,0.509765625,0.5693359375,0.587890625,0.5634765625,0.5205078125,0.494140625,0.5107421875,0.5693359375,0.6240234375,0.623046875,0.564453125,0.4833984375,0.427734375,0.4306640625,0.4892578125,0.5673828125,0.65234375,0.7021484375,0.6826171875,0.6005859375,0.5,0.419921875,0.365234375,0.373046875,0.4462890625,0.546875,0.6220703125,0.6318359375,0.5791015625,0.4990234375,0.3896484375,0.2900390625,0.2490234375,0.2802734375,0.353515625,0.4296875,0.5107421875,0.6142578125,0.697265625,0.7177734375,0.6689453125,0.5859375,0.509765625,0.451171875,0.44140625,0.482421875,0.5419921875,0.5810546875,0.5693359375,0.509765625,0.4375,0.3740234375,0.3408203125,0.34765625,0.380859375,0.412109375,0.419921875,0.4306640625,0.4794921875,0.5458984375,0.5927734375,0.595703125,0.5546875,0.4892578125,0.43359375,0.42578125,0.46875,0.53125,0.5712890625,0.5595703125,0.5,0.419921875,0.3251953125,0.2578125,0.255859375,0.3203125,0.412109375,0.4892578125,0.5478515625,0.5595703125,0.521484375,0.462890625,0.423828125,0.4326171875,0.4892578125,0.5546875,0.5986328125,0.599609375,0.5546875,0.490234375,0.4423828125,0.4296875,0.427734375,0.42578125,0.423828125,0.423828125,0.42578125,0.427734375,0.4296875,0.4345703125,0.4541015625,0.48828125,0.5263671875,0.55859375,0.576171875,0.5791015625,0.5693359375,0.52734375,0.4716796875,0.4375,0.4453125,0.4931640625,0.5595703125,0.634765625,0.71875,0.7724609375,0.7607421875,0.685546875,0.587890625,0.509765625,0.443359375,0.4013671875,0.4052734375,0.4541015625,0.521484375,0.5693359375,0.5791015625,0.564453125,0.505859375,0.4208984375,0.353515625,0.333984375,0.3662109375,0.4296875,0.509765625,0.6181640625,0.716796875,0.7568359375,0.7265625,0.6533203125,0.5791015625,0.5078125,0.4384765625,0.3935546875,0.384765625,0.40625,0.431640625,0.439453125,0.44140625,0.4423828125,0.44140625,0.439453125,0.435546875,0.431640625,0.4296875,0.421875,0.396484375,0.376953125,0.38671875,0.4345703125,0.505859375,0.5791015625,0.658203125,0.7490234375,0.8115234375,0.8076171875,0.7392578125,0.646484375,0.5693359375,0.4990234375,0.4306640625,0.384765625,0.375,0.392578125,0.4140625,0.419921875,0.43359375,0.4931640625,0.5810546875,0.6533203125,0.67578125,0.6435546875,0.5791015625,0.5185546875,0.4990234375,0.521484375,0.5615234375,0.5859375,0.568359375,0.509765625,0.44140625,0.3828125,0.353515625,0.3623046875,0.39453125,0.423828125,0.4296875,0.439453125,0.48828125,0.5576171875,0.6064453125,0.6103515625,0.5673828125,0.5,0.439453125,0.4296875,0.470703125,0.533203125,0.576171875,0.5673828125,0.509765625,0.4296875,0.3291015625,0.248046875,0.2275390625,0.2744140625,0.35546875,0.4296875,0.5068359375,0.6044921875,0.6806640625,0.697265625,0.646484375,0.564453125,0.4892578125,0.421875,0.36328125,0.3359375,0.3486328125,0.38671875,0.419921875,0.4296875,0.4443359375,0.501953125,0.5830078125,0.646484375,0.6611328125,0.625,0.5595703125,0.498046875,0.4716796875,0.48046875,0.50390625,0.51171875,0.4833984375,0.419921875,0.34375,0.271484375,0.2431640625,0.2861328125,0.3876953125,0.4990234375,0.5791015625,0.6318359375,0.6220703125,0.5478515625,0.44921875,0.37890625,0.373046875,0.4296875,0.4912109375,0.5126953125,0.4921875,0.453125,0.4306640625,0.44921875,0.509765625,0.5791015625,0.63671875,0.6611328125,0.646484375,0.6083984375,0.576171875,0.5693359375,0.5615234375,0.5234375,0.4736328125,0.4453125,0.4599609375,0.5107421875,0.5791015625,0.63671875,0.6435546875,0.5986328125,0.5341796875,0.490234375,0.5,0.5595703125,0.638671875,0.732421875,0.7978515625,0.796875,0.73046875,0.6376953125,0.5595703125,0.4990234375,0.4794921875,0.501953125,0.5419921875,0.5654296875,0.5478515625,0.4892578125,0.431640625,0.416015625,0.4443359375,0.490234375,0.5166015625,0.4990234375,0.439453125,0.384765625,0.390625,0.4609375,0.5576171875,0.6279296875,0.634765625,0.5791015625,0.5,0.3994140625,0.318359375,0.2998046875,0.349609375,0.43359375,0.509765625,0.5791015625,0.638671875,0.6669921875,0.65625,0.6201171875,0.5869140625,0.5791015625,0.568359375,0.5244140625,0.466796875,0.431640625,0.4404296875,0.490234375,0.5595703125,0.6259765625,0.6611328125,0.64453125,0.5791015625,0.4970703125,0.44140625,0.4296875,0.431640625,0.43359375,0.435546875,0.435546875,0.43359375,0.431640625,0.4296875,0.4384765625,0.478515625,0.53125,0.5625,0.55078125,0.4990234375,0.4296875,0.369140625,0.35546875,0.390625,0.447265625,0.486328125,0.4765625,0.419921875,0.3564453125,0.3232421875,0.341796875,0.408203125,0.490234375,0.546875,0.5595703125,0.548828125,0.501953125,0.4384765625,0.3955078125,0.3974609375,0.4423828125,0.509765625,0.576171875,0.619140625,0.6162109375,0.568359375,0.5,0.451171875,0.439453125,0.453125,0.509765625,0.5927734375,0.6572265625,0.6728515625,0.6357421875,0.5693359375,0.490234375,0.3984375,0.3349609375,0.337890625,0.4072265625,0.5009765625,0.5791015625,0.6435546875,0.6767578125,0.6552734375,0.583984375,0.49609375,0.4345703125,0.419921875,0.41015625,0.376953125,0.3408203125,0.486328125,0.3740234375,0.29296875,0.2783203125,0.3251953125,0.3994140625,0.509765625,0.625,0.69921875,0.7099609375,0.6728515625,0.6220703125,0.5634765625,0.484375,0.4013671875,0.33984375,0.314453125,0.3154296875,0.3251953125,0.3369140625,0.3505859375,0.3603515625,0.3603515625,0.3505859375,0.3369140625,0.3251953125,0.322265625,0.3505859375,0.4189453125,0.5107421875,0.59765625,0.6533203125,0.673828125,0.6728515625,0.6318359375,0.5654296875,0.5078125,0.48828125,0.5146484375,0.5703125,0.625,0.646484375,0.611328125,0.525390625,0.4228515625,0.349609375,0.3251953125,0.32421875,0.3525390625,0.3994140625,0.439453125,0.44921875,0.423828125,0.376953125,0.337890625,0.341796875,0.3896484375,0.451171875,0.4892578125,0.48046875,0.4287109375,0.3681640625,0.3173828125,0.2900390625,0.29296875,0.314453125,0.330078125,0.3251953125,0.318359375,0.3232421875,0.34375,0.3759765625,0.40625,0.4248046875,0.4287109375,0.439453125,0.4833984375,0.541015625,0.576171875,0.5673828125,0.517578125,0.4482421875,0.375,0.314453125,0.3056640625,0.369140625,0.484375,0.5986328125,0.673828125,0.7373046875,0.7998046875,0.826171875,0.7939453125,0.7158203125,0.630859375,0.5703125,0.51171875,0.4365234375,0.376953125,0.3671875,0.4130859375,0.4853515625,0.55078125,0.60546875,0.62890625,0.6181640625,0.58984375,0.5693359375,0.5791015625,0.6220703125,0.6572265625,0.6318359375,0.548828125,0.451171875,0.3876953125,0.3896484375,0.4482421875,0.5234375,0.5966796875,0.6279296875,0.591796875,0.5,0.3984375,0.3251953125,0.28125,0.30859375,0.412109375,0.5517578125,0.666015625,0.7060546875,0.673828125,0.607421875,0.4921875,0.36328125,0.2763671875,0.26171875,0.3076171875,0.376953125,0.4599609375,0.5693359375,0.6669921875,0.7080078125,0.6826171875,0.6171875,0.55078125,0.501953125,0.498046875,0.5400390625,0.5966796875,0.62890625,0.6123046875,0.55078125,0.4765625,0.396484375,0.3330078125,0.3037109375,0.306640625,0.3212890625,0.3251953125,0.3359375,0.3798828125,0.4453125,0.4990234375,0.5166015625,0.494140625,0.4482421875,0.4091796875,0.419921875,0.4755859375,0.541015625,0.5771484375,0.560546875,0.5,0.419921875,0.3251953125,0.2548828125,0.24609375,0.298828125,0.37890625,0.4482421875,0.5,0.515625,0.4892578125,0.44140625,0.4052734375,0.4072265625,0.4482421875,0.4970703125,0.5322265625,0.533203125,0.4970703125,0.4423828125,0.396484375,0.376953125,0.3662109375,0.3525390625,0.3427734375,0.3427734375,0.3525390625,0.3662109375,0.376953125,0.39453125,0.4375,0.505859375,0.580078125,0.6376953125,0.66796875,0.673828125,0.6640625,0.6220703125,0.560546875,0.51171875,0.498046875,0.5224609375,0.5703125,0.6279296875,0.6982421875,0.7490234375,0.7490234375,0.6953125,0.6181640625,0.55078125,0.49609375,0.4716796875,0.4951171875,0.55859375,0.62890625,0.671875,0.673828125,0.6494140625,0.576171875,0.4697265625,0.375,0.326171875,0.3330078125,0.376953125,0.4423828125,0.55078125,0.6728515625,0.7548828125,0.771484375,0.7333984375,0.673828125,0.6064453125,0.5263671875,0.4521484375,0.4091796875,0.40234375,0.416015625,0.4287109375,0.439453125,0.4462890625,0.4443359375,0.4306640625,0.41015625,0.3896484375,0.376953125,0.3642578125,0.3505859375,0.361328125,0.4140625,0.5009765625,0.595703125,0.673828125,0.7490234375,0.8251953125,0.8642578125,0.841796875,0.767578125,0.6826171875,0.6220703125,0.5654296875,0.4921875,0.4169921875,0.3603515625,0.33203125,0.3251953125,0.3251953125,0.341796875,0.419921875,0.5439453125,0.6611328125,0.7275390625,0.724609375,0.673828125,0.6181640625,0.587890625,0.5869140625,0.6025390625,0.611328125,0.5947265625,0.55078125,0.4990234375,0.4462890625,0.40625,0.3857421875,0.3837890625,0.384765625,0.376953125,0.3798828125,0.4287109375,0.5078125,0.5751953125,0.5966796875,0.5654296875,0.5,0.439453125,0.4287109375,0.47265625,0.54296875,0.5966796875,0.599609375,0.55078125,0.48046875,0.384765625,0.296875,0.2548828125,0.271484375,0.3232421875,0.376953125,0.435546875,0.5107421875,0.57421875,0.5927734375,0.5615234375,0.5029296875,0.4482421875,0.3955078125,0.34375,0.310546875,0.30859375,0.3330078125,0.361328125,0.376953125,0.400390625,0.466796875,0.5576171875,0.6298828125,0.654296875,0.626953125,0.5703125,0.5146484375,0.4814453125,0.4697265625,0.4609375,0.439453125,0.392578125,0.3251953125,0.2568359375,0.216796875,0.2431640625,0.34375,0.484375,0.60546875,0.673828125,0.7060546875,0.666015625,0.5556640625,0.42578125,0.3349609375,0.3212890625,0.376953125,0.4423828125,0.48046875,0.4873046875,0.4765625,0.4736328125,0.4970703125,0.55078125,0.611328125,0.658203125,0.677734375,0.666015625,0.6376953125,0.6181640625,0.6220703125,0.6240234375,0.6025390625,0.5703125,0.5537109375,0.5693359375,0.6142578125,0.673828125,0.720703125,0.7109375,0.646484375,0.5625,0.5068359375,0.5107421875,0.5703125,0.6484375,0.736328125,0.794921875,0.791015625,0.7265625,0.6396484375,0.5703125,0.5146484375,0.484375,0.484375,0.4990234375,0.5078125,0.4921875,0.4482421875,0.40625,0.40234375,0.4345703125,0.4775390625,0.4990234375,0.482421875,0.4287109375,0.3837890625,0.404296875,0.4931640625,0.609375,0.6982421875,0.71875,0.673828125,0.6025390625,0.5068359375,0.4228515625,0.390625,0.419921875,0.4853515625,0.55078125,0.61328125,0.673828125,0.7119140625,0.71875,0.7001953125,0.6787109375,0.673828125,0.6611328125,0.6064453125,0.5302734375,0.47265625,0.462890625,0.5029296875,0.5703125,0.6337890625,0.6572265625,0.619140625,0.5341796875,0.439453125,0.3818359375,0.376953125,0.388671875,0.40234375,0.412109375,0.412109375,0.40234375,0.388671875,0.376953125,0.376953125,0.4111328125,0.462890625,0.498046875,0.4921875,0.4453125,0.376953125,0.3134765625,0.2841796875,0.2978515625,0.3359375,0.3681640625,0.3662109375,0.3251953125,0.2822265625,0.2744140625,0.3193359375,0.4052734375,0.498046875,0.5576171875,0.5703125,0.5615234375,0.5234375,0.4736328125,0.4423828125,0.44921875,0.4921875,0.55078125,0.6083984375,0.6376953125,0.6220703125,0.5634765625,0.4912109375,0.4404296875,0.4287109375,0.443359375,0.5087890625,0.60546875,0.6865234375,0.7158203125,0.6865234375,0.6220703125,0.544921875,0.462890625,0.4150390625,0.43359375,0.509765625,0.6025390625,0.673828125,0.7265625,0.7353515625,0.6767578125,0.5634765625,0.4375,0.3525390625,0.3251953125,0.3095703125,0.28125,0.2646484375,0.3994140625,0.30078125,0.234375,0.2236328125,0.2587890625,0.314453125,0.404296875,0.5107421875,0.5986328125,0.6455078125,0.6513671875,0.634765625,0.6044921875,0.529296875,0.421875,0.3193359375,0.2548828125,0.2392578125,0.2587890625,0.2880859375,0.3232421875,0.34765625,0.34765625,0.3232421875,0.2880859375,0.2587890625,0.2412109375,0.2646484375,0.34765625,0.474609375,0.6064453125,0.69921875,0.740234375,0.7548828125,0.7216796875,0.646484375,0.560546875,0.501953125,0.494140625,0.5302734375,0.5712890625,0.5869140625,0.5546875,0.474609375,0.3759765625,0.296875,0.2587890625,0.23828125,0.2431640625,0.275390625,0.322265625,0.3623046875,0.3759765625,0.3642578125,0.3544921875,0.3798828125,0.43359375,0.48828125,0.517578125,0.5078125,0.46875,0.423828125,0.380859375,0.3447265625,0.3193359375,0.3017578125,0.283203125,0.2587890625,0.23828125,0.244140625,0.2861328125,0.353515625,0.419921875,0.4609375,0.46875,0.4775390625,0.509765625,0.546875,0.5576171875,0.52734375,0.4658203125,0.39453125,0.326171875,0.2900390625,0.3193359375,0.421875,0.5615234375,0.677734375,0.740234375,0.7822265625,0.80078125,0.7763671875,0.708984375,0.625,0.5595703125,0.5302734375,0.5068359375,0.4755859375,0.455078125,0.4638671875,0.5029296875,0.5556640625,0.6044921875,0.646484375,0.6728515625,0.673828125,0.654296875,0.630859375,0.6220703125,0.634765625,0.6376953125,0.5810546875,0.4775390625,0.375,0.3203125,0.3330078125,0.39453125,0.4677734375,0.529296875,0.546875,0.5,0.4072265625,0.31640625,0.2587890625,0.228515625,0.2646484375,0.3779296875,0.5322265625,0.669921875,0.7412109375,0.740234375,0.703125,0.6015625,0.4609375,0.3388671875,0.2822265625,0.30078125,0.3642578125,0.4453125,0.5537109375,0.654296875,0.70703125,0.6982421875,0.6533203125,0.6044921875,0.5703125,0.5791015625,0.6240234375,0.673828125,0.6943359375,0.66796875,0.6044921875,0.5263671875,0.4326171875,0.341796875,0.28125,0.2568359375,0.2568359375,0.2587890625,0.2646484375,0.2919921875,0.3369140625,0.3798828125,0.4072265625,0.41015625,0.39453125,0.388671875,0.4287109375,0.501953125,0.568359375,0.5927734375,0.564453125,0.5,0.4208984375,0.3291015625,0.2587890625,0.2421875,0.2802734375,0.3427734375,0.39453125,0.435546875,0.4580078125,0.4521484375,0.4248046875,0.39453125,0.3818359375,0.39453125,0.416015625,0.44140625,0.4580078125,0.453125,0.4267578125,0.392578125,0.3642578125,0.3349609375,0.2998046875,0.275390625,0.275390625,0.2998046875,0.3349609375,0.3642578125,0.3984375,0.4638671875,0.5517578125,0.640625,0.705078125,0.7353515625,0.740234375,0.732421875,0.6962890625,0.634765625,0.5712890625,0.5283203125,0.5166015625,0.5302734375,0.556640625,0.60546875,0.6591796875,0.6904296875,0.6845703125,0.6494140625,0.6044921875,0.5673828125,0.56640625,0.607421875,0.673828125,0.732421875,0.755859375,0.740234375,0.703125,0.626953125,0.5244140625,0.427734375,0.3671875,0.3505859375,0.3642578125,0.3974609375,0.4833984375,0.6044921875,0.71484375,0.7763671875,0.7783203125,0.740234375,0.685546875,0.6044921875,0.5166015625,0.4521484375,0.4306640625,0.443359375,0.46875,0.49609375,0.517578125,0.5185546875,0.4912109375,0.443359375,0.3955078125,0.3642578125,0.3369140625,0.322265625,0.34765625,0.427734375,0.544921875,0.658203125,0.740234375,0.8095703125,0.8603515625,0.8642578125,0.814453125,0.734375,0.666015625,0.634765625,0.607421875,0.5478515625,0.4609375,0.369140625,0.2998046875,0.2646484375,0.2587890625,0.2763671875,0.361328125,0.501953125,0.6484375,0.748046875,0.7734375,0.740234375,0.6953125,0.6572265625,0.6328125,0.6240234375,0.6240234375,0.6201171875,0.6044921875,0.583984375,0.556640625,0.5185546875,0.474609375,0.4296875,0.392578125,0.3642578125,0.3515625,0.390625,0.46875,0.546875,0.5830078125,0.5625,0.5,0.4384765625,0.4248046875,0.46875,0.546875,0.615234375,0.63671875,0.6044921875,0.552734375,0.478515625,0.40234375,0.3505859375,0.333984375,0.3447265625,0.3642578125,0.3857421875,0.4140625,0.4384765625,0.447265625,0.435546875,0.4150390625,0.39453125,0.3720703125,0.3388671875,0.30859375,0.2978515625,0.3095703125,0.3369140625,0.3642578125,0.3994140625,0.4658203125,0.541015625,0.5927734375,0.6025390625,0.57421875,0.5302734375,0.4892578125,0.46484375,0.44921875,0.427734375,0.3876953125,0.3291015625,0.2587890625,0.197265625,0.1923828125,0.2724609375,0.421875,0.5869140625,0.7001953125,0.740234375,0.740234375,0.666015625,0.5322265625,0.39453125,0.3095703125,0.3056640625,0.3642578125,0.43359375,0.48828125,0.521484375,0.53515625,0.5439453125,0.564453125,0.6044921875,0.6455078125,0.6669921875,0.6630859375,0.640625,0.6181640625,0.615234375,0.634765625,0.6572265625,0.662109375,0.6572265625,0.654296875,0.6669921875,0.697265625,0.740234375,0.76953125,0.7353515625,0.6435546875,0.5380859375,0.470703125,0.4716796875,0.5302734375,0.60546875,0.6845703125,0.7314453125,0.720703125,0.6591796875,0.583984375,0.5302734375,0.4853515625,0.4462890625,0.421875,0.4140625,0.4140625,0.41015625,0.39453125,0.3837890625,0.4052734375,0.4521484375,0.5,0.521484375,0.5087890625,0.46875,0.4375,0.4638671875,0.5498046875,0.6591796875,0.7451171875,0.771484375,0.740234375,0.6865234375,0.6103515625,0.5380859375,0.501953125,0.5146484375,0.5576171875,0.6044921875,0.65234375,0.701171875,0.740234375,0.7568359375,0.7529296875,0.7431640625,0.740234375,0.7255859375,0.658203125,0.5576171875,0.4716796875,0.4384765625,0.46484375,0.5302734375,0.591796875,0.609375,0.5654296875,0.48046875,0.39453125,0.3525390625,0.3642578125,0.3935546875,0.427734375,0.4521484375,0.4521484375,0.427734375,0.3935546875,0.3642578125,0.3486328125,0.37109375,0.4189453125,0.4609375,0.466796875,0.4296875,0.3642578125,0.294921875,0.240234375,0.2177734375,0.228515625,0.2548828125,0.26953125,0.2587890625,0.2470703125,0.265625,0.3232421875,0.40234375,0.4765625,0.5205078125,0.5302734375,0.525390625,0.5078125,0.4912109375,0.4912109375,0.5166015625,0.55859375,0.6044921875,0.6455078125,0.662109375,0.640625,0.5849609375,0.521484375,0.478515625,0.46875,0.4833984375,0.544921875,0.6357421875,0.708984375,0.7333984375,0.701171875,0.634765625,0.5615234375,0.4951171875,0.4716796875,0.5107421875,0.595703125,0.68359375,0.740234375,0.7763671875,0.7666015625,0.6875,0.5517578125,0.40625,0.3017578125,0.2587890625,0.228515625,0.197265625,0.1923828125,0.3173828125,0.2587890625,0.23046875,0.2353515625,0.2587890625,0.2900390625,0.33984375,0.408203125,0.48046875,0.541015625,0.58203125,0.6044921875,0.6083984375,0.5546875,0.447265625,0.328125,0.2451171875,0.2255859375,0.2587890625,0.3095703125,0.369140625,0.4111328125,0.4111328125,0.369140625,0.3095703125,0.2587890625,0.2197265625,0.21875,0.2841796875,0.4111328125,0.560546875,0.6787109375,0.740234375,0.7744140625,0.7587890625,0.6875,0.5849609375,0.49609375,0.4560546875,0.46875,0.49609375,0.5166015625,0.5078125,0.4609375,0.3857421875,0.3115234375,0.2587890625,0.2158203125,0.1875,0.1953125,0.2421875,0.3095703125,0.3662109375,0.39453125,0.419921875,0.46484375,0.5185546875,0.5576171875,0.5693359375,0.5546875,0.5302734375,0.50390625,0.478515625,0.447265625,0.4052734375,0.3564453125,0.3056640625,0.2587890625,0.220703125,0.220703125,0.2734375,0.36328125,0.4580078125,0.517578125,0.5302734375,0.5361328125,0.5576171875,0.57421875,0.560546875,0.509765625,0.4375,0.3642578125,0.2998046875,0.27734375,0.328125,0.447265625,0.5888671875,0.6953125,0.740234375,0.7568359375,0.732421875,0.662109375,0.5712890625,0.4951171875,0.4609375,0.46875,0.4873046875,0.5068359375,0.52734375,0.5517578125,0.580078125,0.6083984375,0.634765625,0.662109375,0.689453125,0.701171875,0.6904296875,0.66015625,0.626953125,0.6044921875,0.5703125,0.486328125,0.375,0.2890625,0.2626953125,0.296875,0.3642578125,0.4345703125,0.490234375,0.5,0.4521484375,0.37109375,0.296875,0.2587890625,0.2421875,0.26953125,0.3583984375,0.48828125,0.619140625,0.70703125,0.740234375,0.740234375,0.6708984375,0.5439453125,0.4140625,0.3359375,0.3349609375,0.39453125,0.4736328125,0.5703125,0.6572265625,0.701171875,0.697265625,0.6650390625,0.634765625,0.619140625,0.6416015625,0.6904296875,0.7314453125,0.73828125,0.701171875,0.634765625,0.556640625,0.4580078125,0.361328125,0.2919921875,0.26171875,0.2578125,0.2587890625,0.2587890625,0.2607421875,0.26953125,0.2900390625,0.31640625,0.3427734375,0.3642578125,0.3955078125,0.4677734375,0.5546875,0.61328125,0.6162109375,0.568359375,0.5,0.4228515625,0.3388671875,0.275390625,0.2587890625,0.287109375,0.33203125,0.3642578125,0.392578125,0.4228515625,0.44140625,0.4384765625,0.4150390625,0.3857421875,0.3642578125,0.3525390625,0.369140625,0.40625,0.44140625,0.453125,0.435546875,0.39453125,0.34375,0.2841796875,0.2421875,0.2421875,0.2841796875,0.34375,0.39453125,0.4462890625,0.521484375,0.607421875,0.6796875,0.72265625,0.73828125,0.740234375,0.736328125,0.71484375,0.66796875,0.6044921875,0.541015625,0.494140625,0.46875,0.4580078125,0.4794921875,0.533203125,0.595703125,0.642578125,0.654296875,0.634765625,0.6181640625,0.6376953125,0.6904296875,0.748046875,0.783203125,0.7783203125,0.740234375,0.6904296875,0.626953125,0.5546875,0.4912109375,0.4443359375,0.4150390625,0.39453125,0.3876953125,0.4306640625,0.5244140625,0.634765625,0.7216796875,0.7548828125,0.740234375,0.703125,0.6318359375,0.546875,0.482421875,0.4638671875,0.4873046875,0.5302734375,0.5771484375,0.6201171875,0.6318359375,0.5966796875,0.5234375,0.4482421875,0.39453125,0.3486328125,0.3154296875,0.3310546875,0.4111328125,0.53515625,0.65625,0.740234375,0.8037109375,0.8291015625,0.7978515625,0.7236328125,0.6435546875,0.599609375,0.6044921875,0.615234375,0.5869140625,0.513671875,0.4140625,0.322265625,0.26953125,0.2587890625,0.2734375,0.34765625,0.474609375,0.61328125,0.7158203125,0.7548828125,0.740234375,0.708984375,0.666015625,0.6240234375,0.599609375,0.5986328125,0.615234375,0.634765625,0.654296875,0.6650390625,0.6484375,0.5966796875,0.5205078125,0.4462890625,0.39453125,0.3623046875,0.3837890625,0.4521484375,0.5302734375,0.57421875,0.560546875,0.5,0.4365234375,0.416015625,0.4521484375,0.5302734375,0.6083984375,0.6474609375,0.634765625,0.6064453125,0.5693359375,0.5244140625,0.48046875,0.4423828125,0.4150390625,0.39453125,0.373046875,0.34375,0.3193359375,0.3115234375,0.322265625,0.34375,0.3642578125,0.376953125,0.3681640625,0.3447265625,0.3251953125,0.326171875,0.3525390625,0.39453125,0.4443359375,0.501953125,0.5458984375,0.5576171875,0.5361328125,0.4990234375,0.46875,0.4482421875,0.4453125,0.447265625,0.4326171875,0.392578125,0.330078125,0.2587890625,0.203125,0.2197265625,0.328125,0.494140625,0.6513671875,0.7373046875,0.740234375,0.7041015625,0.6064453125,0.4716796875,0.3583984375,0.30859375,0.330078125,0.39453125,0.4658203125,0.5322265625,0.580078125,0.6015625,0.6064453125,0.61328125,0.634765625,0.6533203125,0.642578125,0.607421875,0.568359375,0.55078125,0.564453125,0.6044921875,0.6484375,0.6826171875,0.701171875,0.70703125,0.7080078125,0.7177734375,0.740234375,0.7490234375,0.6943359375,0.5849609375,0.4716796875,0.4052734375,0.4091796875,0.46875,0.54296875,0.6103515625,0.6435546875,0.6240234375,0.5654296875,0.5048828125,0.46875,0.4384765625,0.3955078125,0.3525390625,0.328125,0.328125,0.3447265625,0.3642578125,0.3896484375,0.439453125,0.5,0.546875,0.564453125,0.5546875,0.5302734375,0.5126953125,0.5341796875,0.595703125,0.673828125,0.7353515625,0.7568359375,0.740234375,0.7080078125,0.6611328125,0.61328125,0.5849609375,0.5859375,0.6083984375,0.634765625,0.6630859375,0.6953125,0.7236328125,0.740234375,0.744140625,0.7412109375,0.740234375,0.7236328125,0.6494140625,0.53515625,0.43359375,0.3857421875,0.4052734375,0.46875,0.53125,0.5478515625,0.5107421875,0.44140625,0.3798828125,0.3623046875,0.39453125,0.4443359375,0.50390625,0.546875,0.546875,0.50390625,0.4443359375,0.39453125,0.3603515625,0.369140625,0.4140625,0.4638671875,0.484375,0.4580078125,0.39453125,0.3193359375,0.2392578125,0.181640625,0.16796875,0.1943359375,0.2333984375,0.2587890625,0.2822265625,0.3212890625,0.3720703125,0.419921875,0.4521484375,0.466796875,0.46875,0.4697265625,0.474609375,0.4912109375,0.5244140625,0.56640625,0.60546875,0.634765625,0.658203125,0.6650390625,0.646484375,0.607421875,0.564453125,0.5361328125,0.5302734375,0.5419921875,0.5927734375,0.662109375,0.712890625,0.7158203125,0.6728515625,0.6044921875,0.5341796875,0.4833984375,0.48046875,0.53515625,0.6240234375,0.701171875,0.740234375,0.7607421875,0.748046875,0.6796875,0.560546875,0.4248046875,0.318359375,0.2587890625,0.2109375,0.1650390625,0.15625,0.279296875,0.26953125,0.2861328125,0.310546875,0.3251953125,0.333984375,0.3388671875,0.353515625,0.38671875,0.439453125,0.498046875,0.55078125,0.5869140625,0.5615234375,0.474609375,0.3671875,0.2900390625,0.2783203125,0.3251953125,0.3935546875,0.474609375,0.53125,0.53125,0.474609375,0.3935546875,0.3251953125,0.265625,0.2275390625,0.248046875,0.33984375,0.474609375,0.5966796875,0.673828125,0.7255859375,0.7353515625,0.6845703125,0.5888671875,0.4912109375,0.43359375,0.4287109375,0.4453125,0.4755859375,0.5,0.4951171875,0.4521484375,0.3896484375,0.3251953125,0.26171875,0.2021484375,0.1796875,0.216796875,0.298828125,0.38671875,0.4482421875,0.501953125,0.5595703125,0.6044921875,0.619140625,0.6064453125,0.583984375,0.5703125,0.5625,0.5615234375,0.55078125,0.5166015625,0.4580078125,0.3896484375,0.3251953125,0.271484375,0.2568359375,0.2998046875,0.390625,0.490234375,0.5556640625,0.5703125,0.5751953125,0.59375,0.6044921875,0.583984375,0.52734375,0.451171875,0.376953125,0.3134765625,0.2900390625,0.3359375,0.439453125,0.5615234375,0.646484375,0.673828125,0.6708984375,0.619140625,0.5283203125,0.4375,0.384765625,0.38671875,0.4287109375,0.4814453125,0.5361328125,0.5810546875,0.60546875,0.61328125,0.6142578125,0.6220703125,0.6376953125,0.666015625,0.6904296875,0.6884765625,0.6552734375,0.603515625,0.55078125,0.4873046875,0.3876953125,0.2861328125,0.2314453125,0.2431640625,0.3046875,0.376953125,0.447265625,0.5,0.5087890625,0.4697265625,0.40234375,0.3466796875,0.3251953125,0.31640625,0.3212890625,0.359375,0.43359375,0.5283203125,0.6142578125,0.673828125,0.7080078125,0.67578125,0.58203125,0.4697265625,0.39453125,0.390625,0.4482421875,0.5234375,0.6025390625,0.662109375,0.6826171875,0.666015625,0.6376953125,0.6220703125,0.62109375,0.6552734375,0.70703125,0.7421875,0.736328125,0.6904296875,0.6220703125,0.544921875,0.45703125,0.376953125,0.3291015625,0.31640625,0.322265625,0.3251953125,0.3193359375,0.296875,0.26953125,0.26171875,0.283203125,0.326171875,0.376953125,0.439453125,0.533203125,0.6240234375,0.6650390625,0.640625,0.5732421875,0.5,0.42578125,0.3525390625,0.3037109375,0.2978515625,0.3251953125,0.3603515625,0.376953125,0.39453125,0.431640625,0.4716796875,0.4892578125,0.4716796875,0.4287109375,0.376953125,0.337890625,0.3447265625,0.396484375,0.462890625,0.505859375,0.4990234375,0.4482421875,0.3798828125,0.298828125,0.2421875,0.2421875,0.298828125,0.3798828125,0.4482421875,0.5126953125,0.5849609375,0.646484375,0.6806640625,0.6845703125,0.6767578125,0.673828125,0.6748046875,0.6748046875,0.658203125,0.615234375,0.55078125,0.484375,0.4287109375,0.3857421875,0.3779296875,0.4189453125,0.49609375,0.5751953125,0.6201171875,0.6220703125,0.62109375,0.6552734375,0.7109375,0.7548828125,0.7626953125,0.73046875,0.673828125,0.615234375,0.5732421875,0.548828125,0.537109375,0.5234375,0.494140625,0.4482421875,0.4052734375,0.4013671875,0.4501953125,0.53515625,0.6220703125,0.6708984375,0.673828125,0.65234375,0.5966796875,0.525390625,0.4765625,0.47265625,0.51171875,0.5703125,0.6357421875,0.701171875,0.73046875,0.6982421875,0.6142578125,0.5185546875,0.4482421875,0.3837890625,0.32421875,0.3095703125,0.365234375,0.474609375,0.58984375,0.673828125,0.7333984375,0.7412109375,0.689453125,0.60546875,0.5341796875,0.5146484375,0.55078125,0.595703125,0.60546875,0.564453125,0.4833984375,0.39453125,0.337890625,0.3251953125,0.3349609375,0.3837890625,0.46875,0.5654296875,0.640625,0.67578125,0.673828125,0.6552734375,0.611328125,0.560546875,0.529296875,0.53515625,0.572265625,0.6220703125,0.67578125,0.7275390625,0.744140625,0.7021484375,0.6142578125,0.5185546875,0.4482421875,0.3994140625,0.40234375,0.4560546875,0.5263671875,0.5703125,0.5595703125,0.5,0.43359375,0.40234375,0.423828125,0.4912109375,0.5703125,0.619140625,0.6220703125,0.6142578125,0.615234375,0.61328125,0.5927734375,0.552734375,0.5,0.4482421875,0.3896484375,0.314453125,0.2509765625,0.232421875,0.263671875,0.322265625,0.376953125,0.419921875,0.4296875,0.4091796875,0.380859375,0.3701171875,0.3935546875,0.4482421875,0.5087890625,0.556640625,0.572265625,0.5458984375,0.4931640625,0.4482421875,0.4287109375,0.4267578125,0.4482421875,0.4765625,0.484375,0.455078125,0.396484375,0.3251953125,0.271484375,0.2900390625,0.392578125,0.5361328125,0.658203125,0.705078125,0.673828125,0.6083984375,0.501953125,0.388671875,0.3203125,0.3212890625,0.3759765625,0.4482421875,0.5205078125,0.587890625,0.6318359375,0.6435546875,0.630859375,0.6171875,0.6220703125,0.6220703125,0.5849609375,0.525390625,0.4765625,0.46484375,0.494140625,0.55078125,0.6123046875,0.666015625,0.697265625,0.6982421875,0.6826171875,0.6689453125,0.673828125,0.66796875,0.6044921875,0.498046875,0.3984375,0.349609375,0.3662109375,0.4287109375,0.5,0.55859375,0.580078125,0.5537109375,0.498046875,0.44921875,0.4287109375,0.41015625,0.3671875,0.3154296875,0.28515625,0.2900390625,0.3271484375,0.376953125,0.4326171875,0.5,0.5595703125,0.59375,0.5966796875,0.5830078125,0.5703125,0.5634765625,0.5751953125,0.603515625,0.6396484375,0.6689453125,0.6796875,0.673828125,0.66015625,0.640625,0.619140625,0.60546875,0.6044921875,0.611328125,0.6220703125,0.6328125,0.646484375,0.66015625,0.669921875,0.673828125,0.673828125,0.673828125,0.658203125,0.5859375,0.478515625,0.3837890625,0.341796875,0.365234375,0.4287109375,0.490234375,0.509765625,0.4814453125,0.4296875,0.392578125,0.3974609375,0.4482421875,0.515625,0.5966796875,0.6533203125,0.6533203125,0.5966796875,0.515625,0.4482421875,0.3984375,0.39453125,0.4375,0.4931640625,0.525390625,0.5087890625,0.4482421875,0.3681640625,0.271484375,0.1923828125,0.1689453125,0.205078125,0.2685546875,0.3251953125,0.3779296875,0.427734375,0.4599609375,0.4658203125,0.451171875,0.43359375,0.4287109375,0.431640625,0.44921875,0.484375,0.53125,0.576171875,0.607421875,0.6220703125,0.630859375,0.6318359375,0.6220703125,0.6044921875,0.5849609375,0.572265625,0.5703125,0.5791015625,0.619140625,0.66796875,0.693359375,0.67578125,0.62109375,0.55078125,0.482421875,0.439453125,0.4453125,0.50390625,0.5859375,0.650390625,0.673828125,0.68359375,0.6845703125,0.6552734375,0.5849609375,0.48828125,0.39453125,0.3251953125,0.259765625,0.1943359375,0.1689453125,0.30078125,0.32421875,0.3701171875,0.4091796875,0.419921875,0.4140625,0.38671875,0.35546875,0.349609375,0.380859375,0.44140625,0.509765625,0.564453125,0.5625,0.5029296875,0.4208984375,0.3623046875,0.36328125,0.419921875,0.498046875,0.58984375,0.654296875,0.654296875,0.58984375,0.498046875,0.419921875,0.345703125,0.2734375,0.2431640625,0.28515625,0.38671875,0.498046875,0.5791015625,0.6435546875,0.6767578125,0.658203125,0.5908203125,0.5078125,0.451171875,0.439453125,0.4501953125,0.490234375,0.5380859375,0.5615234375,0.54296875,0.48828125,0.419921875,0.34375,0.26171875,0.212890625,0.232421875,0.3125,0.412109375,0.4892578125,0.5576171875,0.6171875,0.646484375,0.63671875,0.6015625,0.568359375,0.5595703125,0.564453125,0.5869140625,0.607421875,0.6005859375,0.55859375,0.4912109375,0.419921875,0.3544921875,0.3203125,0.3388671875,0.4052734375,0.48828125,0.5458984375,0.5595703125,0.56640625,0.591796875,0.6171875,0.61328125,0.5703125,0.5029296875,0.4296875,0.36328125,0.328125,0.3466796875,0.416015625,0.5029296875,0.564453125,0.5791015625,0.568359375,0.5126953125,0.4306640625,0.3642578125,0.3447265625,0.376953125,0.439453125,0.5087890625,0.57421875,0.6142578125,0.619140625,0.5966796875,0.57421875,0.5693359375,0.5791015625,0.6123046875,0.650390625,0.6630859375,0.6357421875,0.5771484375,0.509765625,0.4306640625,0.330078125,0.24609375,0.2236328125,0.26953125,0.3525390625,0.4296875,0.5,0.5517578125,0.564453125,0.53125,0.4755859375,0.431640625,0.419921875,0.412109375,0.390625,0.375,0.388671875,0.4384765625,0.5087890625,0.5791015625,0.6337890625,0.630859375,0.5703125,0.4873046875,0.4296875,0.431640625,0.4892578125,0.5615234375,0.6240234375,0.6572265625,0.6484375,0.6123046875,0.5791015625,0.5693359375,0.5771484375,0.6181640625,0.6708984375,0.7021484375,0.6904296875,0.638671875,0.5693359375,0.49609375,0.42578125,0.37890625,0.3701171875,0.3896484375,0.4130859375,0.419921875,0.41015625,0.3720703125,0.3232421875,0.296875,0.3115234375,0.36328125,0.4296875,0.5078125,0.6083984375,0.689453125,0.7099609375,0.6611328125,0.5771484375,0.5,0.427734375,0.3662109375,0.3359375,0.3466796875,0.3857421875,0.419921875,0.4296875,0.4404296875,0.4814453125,0.533203125,0.5615234375,0.5478515625,0.49609375,0.4296875,0.3740234375,0.3720703125,0.4248046875,0.5,0.55078125,0.546875,0.4892578125,0.412109375,0.3193359375,0.2548828125,0.2548828125,0.3193359375,0.412109375,0.4892578125,0.5595703125,0.6220703125,0.6552734375,0.6484375,0.6171875,0.5869140625,0.5791015625,0.5859375,0.6083984375,0.6279296875,0.6201171875,0.576171875,0.509765625,0.439453125,0.3759765625,0.3427734375,0.3603515625,0.4248046875,0.50390625,0.55859375,0.5693359375,0.5771484375,0.6181640625,0.6728515625,0.705078125,0.6962890625,0.646484375,0.5791015625,0.5185546875,0.49609375,0.5146484375,0.548828125,0.568359375,0.548828125,0.4892578125,0.42578125,0.3876953125,0.3955078125,0.44921875,0.51953125,0.5693359375,0.5791015625,0.5673828125,0.5234375,0.4658203125,0.431640625,0.44140625,0.4912109375,0.5595703125,0.6357421875,0.71875,0.7685546875,0.75,0.669921875,0.5693359375,0.4892578125,0.4130859375,0.3310546875,0.28515625,0.30859375,0.3935546875,0.498046875,0.5791015625,0.6376953125,0.6416015625,0.5888671875,0.5107421875,0.455078125,0.4541015625,0.509765625,0.57421875,0.61328125,0.60546875,0.552734375,0.482421875,0.431640625,0.419921875,0.423828125,0.4443359375,0.48046875,0.5234375,0.55859375,0.5771484375,0.5791015625,0.568359375,0.525390625,0.47265625,0.44140625,0.453125,0.5029296875,0.5693359375,0.6435546875,0.724609375,0.771484375,0.7509765625,0.669921875,0.5693359375,0.4892578125,0.431640625,0.4228515625,0.4658203125,0.5283203125,0.5693359375,0.5595703125,0.5,0.431640625,0.388671875,0.392578125,0.44140625,0.5107421875,0.5595703125,0.5693359375,0.5751953125,0.6044921875,0.63671875,0.6455078125,0.6162109375,0.5576171875,0.4892578125,0.412109375,0.3154296875,0.23828125,0.22265625,0.2724609375,0.35546875,0.4296875,0.48828125,0.5048828125,0.478515625,0.435546875,0.4111328125,0.4296875,0.4892578125,0.556640625,0.6025390625,0.6064453125,0.5634765625,0.5,0.4521484375,0.439453125,0.447265625,0.4853515625,0.5341796875,0.560546875,0.5439453125,0.490234375,0.419921875,0.36328125,0.3701171875,0.443359375,0.544921875,0.62109375,0.6318359375,0.5791015625,0.5009765625,0.3984375,0.3115234375,0.287109375,0.3310546875,0.412109375,0.4892578125,0.560546875,0.6220703125,0.65234375,0.6416015625,0.6064453125,0.576171875,0.5693359375,0.5595703125,0.5126953125,0.4482421875,0.4013671875,0.400390625,0.443359375,0.509765625,0.5791015625,0.6376953125,0.6650390625,0.6533203125,0.6171875,0.5859375,0.5791015625,0.5673828125,0.509765625,0.42578125,0.3583984375,0.3388671875,0.373046875,0.439453125,0.509765625,0.5634765625,0.5771484375,0.5478515625,0.494140625,0.451171875,0.439453125,0.4287109375,0.3857421875,0.3330078125,0.3017578125,0.3134765625,0.36328125,0.4296875,0.5,0.56640625,0.609375,0.615234375,0.5927734375,0.5673828125,0.5595703125,0.55859375,0.560546875,0.56640625,0.572265625,0.578125,0.580078125,0.5791015625,0.5771484375,0.57421875,0.5703125,0.5673828125,0.56640625,0.5673828125,0.5693359375,0.5712890625,0.5732421875,0.576171875,0.578125,0.5791015625,0.5791015625,0.5791015625,0.56640625,0.5078125,0.4228515625,0.35546875,0.337890625,0.373046875,0.439453125,0.5009765625,0.5185546875,0.4912109375,0.4443359375,0.4150390625,0.4306640625,0.4892578125,0.5673828125,0.6591796875,0.724609375,0.724609375,0.6591796875,0.5673828125,0.4892578125,0.431640625,0.421875,0.4619140625,0.5224609375,0.5615234375,0.5498046875,0.4892578125,0.408203125,0.3076171875,0.228515625,0.2109375,0.26171875,0.3447265625,0.419921875,0.486328125,0.5390625,0.556640625,0.5322265625,0.486328125,0.44921875,0.439453125,0.4423828125,0.45703125,0.4853515625,0.5185546875,0.5478515625,0.564453125,0.5693359375,0.5703125,0.5703125,0.568359375,0.5654296875,0.5615234375,0.5595703125,0.5595703125,0.568359375,0.603515625,0.646484375,0.6630859375,0.638671875,0.580078125,0.509765625,0.44140625,0.396484375,0.3974609375,0.4453125,0.5146484375,0.56640625,0.5791015625,0.5869140625,0.609375,0.6259765625,0.61328125,0.5634765625,0.4921875,0.419921875,0.34375,0.2607421875,0.2119140625,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.447265625,0.4765625,0.5283203125,0.5693359375,0.5791015625,0.568359375,0.5185546875,0.44921875,0.3994140625,0.39453125,0.4345703125,0.5,0.5576171875,0.5732421875,0.5458984375,0.501953125,0.4775390625,0.498046875,0.5595703125,0.6396484375,0.734375,0.8046875,0.8095703125,0.7470703125,0.6572265625,0.5791015625,0.498046875,0.390625,0.294921875,0.2587890625,0.29296875,0.3671875,0.439453125,0.5087890625,0.5751953125,0.615234375,0.619140625,0.59375,0.5673828125,0.5595703125,0.5673828125,0.6083984375,0.6640625,0.6982421875,0.69140625,0.6455078125,0.5791015625,0.5009765625,0.40234375,0.3212890625,0.302734375,0.3505859375,0.43359375,0.509765625,0.576171875,0.6201171875,0.6181640625,0.5712890625,0.5029296875,0.453125,0.439453125,0.451171875,0.505859375,0.587890625,0.654296875,0.6748046875,0.642578125,0.5791015625,0.5087890625,0.439453125,0.3916015625,0.3779296875,0.3935546875,0.4140625,0.419921875,0.43359375,0.4931640625,0.5810546875,0.6533203125,0.67578125,0.6435546875,0.5791015625,0.5078125,0.4375,0.3896484375,0.37890625,0.3984375,0.421875,0.4296875,0.42578125,0.4052734375,0.3876953125,0.3974609375,0.4423828125,0.509765625,0.5791015625,0.642578125,0.67578125,0.65625,0.587890625,0.50390625,0.4443359375,0.4296875,0.439453125,0.4892578125,0.55859375,0.6103515625,0.6162109375,0.5751953125,0.509765625,0.4326171875,0.3466796875,0.2939453125,0.3095703125,0.3876953125,0.48828125,0.5693359375,0.6396484375,0.6923828125,0.70703125,0.677734375,0.6240234375,0.5810546875,0.5693359375,0.5546875,0.494140625,0.41015625,0.3427734375,0.326171875,0.36328125,0.4296875,0.4912109375,0.51171875,0.4892578125,0.4501953125,0.427734375,0.4482421875,0.509765625,0.5771484375,0.62109375,0.619140625,0.5703125,0.501953125,0.451171875,0.439453125,0.44921875,0.490234375,0.5419921875,0.572265625,0.55859375,0.5078125,0.439453125,0.375,0.3388671875,0.353515625,0.416015625,0.494140625,0.548828125,0.5595703125,0.5478515625,0.5048828125,0.451171875,0.421875,0.435546875,0.4892578125,0.5595703125,0.63671875,0.7216796875,0.7734375,0.755859375,0.6767578125,0.5771484375,0.5,0.4345703125,0.39453125,0.3984375,0.4462890625,0.5126953125,0.5595703125,0.5693359375,0.5771484375,0.6181640625,0.6708984375,0.7021484375,0.6904296875,0.638671875,0.5693359375,0.5068359375,0.484375,0.5048828125,0.54296875,0.5654296875,0.5478515625,0.4892578125,0.4130859375,0.3212890625,0.2548828125,0.25390625,0.318359375,0.41015625,0.4892578125,0.5576171875,0.6015625,0.6005859375,0.5537109375,0.4873046875,0.439453125,0.4296875,0.4443359375,0.5009765625,0.5810546875,0.6435546875,0.658203125,0.623046875,0.5595703125,0.4892578125,0.4228515625,0.37890625,0.37109375,0.390625,0.4130859375,0.419921875,0.4296875,0.470703125,0.5234375,0.5556640625,0.544921875,0.49609375,0.4296875,0.3740234375,0.37109375,0.4228515625,0.49609375,0.5478515625,0.544921875,0.4892578125,0.421875,0.3642578125,0.3369140625,0.3486328125,0.3837890625,0.4130859375,0.419921875,0.408203125,0.3662109375,0.3134765625,0.28515625,0.298828125,0.3515625,0.419921875,0.5,0.6025390625,0.6875,0.7119140625,0.666015625,0.5849609375,0.509765625,0.4296875,0.3271484375,0.2412109375,0.2177734375,0.2626953125,0.34375,0.419921875,0.4794921875,0.4970703125,0.47265625,0.4306640625,0.408203125,0.427734375,0.4892578125,0.5615234375,0.623046875,0.6552734375,0.6484375,0.615234375,0.5859375,0.5791015625,0.5771484375,0.55859375,0.5234375,0.48046875,0.4443359375,0.423828125,0.419921875,0.41015625,0.369140625,0.318359375,0.291015625,0.3056640625,0.359375,0.4296875,0.5107421875,0.6142578125,0.697265625,0.7177734375,0.6689453125,0.5859375,0.509765625,0.451171875,0.4404296875,0.478515625,0.5361328125,0.572265625,0.5595703125,0.5,0.427734375,0.3642578125,0.33203125,0.3408203125,0.376953125,0.41015625,0.419921875,0.4326171875,0.482421875,0.548828125,0.595703125,0.5966796875,0.5546875,0.4892578125,0.4150390625,0.3310546875,0.28125,0.2978515625,0.3779296875,0.478515625,0.5595703125,0.6181640625,0.6240234375,0.57421875,0.5009765625,0.44921875,0.4521484375,0.509765625,0.5791015625,0.638671875,0.6669921875,0.65625,0.6201171875,0.5869140625,0.5791015625,0.5888671875,0.6298828125,0.6806640625,0.7080078125,0.693359375,0.6396484375,0.5693359375,0.505859375,0.478515625,0.4892578125,0.5146484375,0.5263671875,0.5009765625,0.439453125,0.36328125,0.27734375,0.224609375,0.2392578125,0.318359375,0.4189453125,0.5,0.568359375,0.61328125,0.611328125,0.5634765625,0.494140625,0.443359375,0.4296875,0.419921875,0.3876953125,0.353515625,0.345703125,0.376953125,0.439453125,0.509765625,0.5751953125,0.6162109375,0.6083984375,0.5556640625,0.4833984375,0.431640625,0.419921875,0.4130859375,0.390625,0.37109375,0.37890625,0.4228515625,0.4892578125,0.5595703125,0.6259765625,0.6748046875,0.685546875,0.65625,0.60546875,0.5673828125,0.5595703125,0.5517578125,0.513671875,0.46484375,0.4384765625,0.455078125,0.5087890625,0.5791015625,0.6455078125,0.681640625,0.6630859375,0.595703125,0.51171875,0.453125,0.439453125,0.439453125,0.4384765625,0.4375,0.4365234375,0.4365234375,0.4384765625,0.439453125,0.44140625,0.4423828125,0.4423828125,0.4423828125,0.4404296875,0.4404296875,0.439453125,0.439453125,0.4384765625,0.4375,0.4365234375,0.4365234375,0.4384765625,0.439453125,0.4345703125,0.412109375,0.3916015625,0.3984375,0.4404296875,0.5078125,0.5791015625,0.6357421875,0.6357421875,0.5771484375,0.49609375,0.439453125,0.44140625,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4296875,0.470703125,0.533203125,0.576171875,0.5673828125,0.509765625,0.43359375,0.3505859375,0.302734375,0.3212890625,0.40234375,0.5009765625,0.5791015625,0.6455078125,0.693359375,0.7021484375,0.669921875,0.6171875,0.5771484375,0.5693359375,0.5673828125,0.55078125,0.5185546875,0.48046875,0.4482421875,0.431640625,0.4296875,0.431640625,0.4326171875,0.431640625,0.4287109375,0.4248046875,0.421875,0.419921875,0.4306640625,0.4814453125,0.5546875,0.609375,0.6171875,0.5771484375,0.509765625,0.4375,0.3740234375,0.3408203125,0.34765625,0.380859375,0.412109375,0.419921875,0.4326171875,0.490234375,0.57421875,0.640625,0.658203125,0.6240234375,0.5595703125,0.4794921875,0.37890625,0.298828125,0.5576171875,0.5830078125,0.62890625,0.6650390625,0.673828125,0.662109375,0.611328125,0.53515625,0.466796875,0.4375,0.4541015625,0.5,0.541015625,0.544921875,0.5166015625,0.4833984375,0.474609375,0.505859375,0.5703125,0.650390625,0.7509765625,0.8330078125,0.8564453125,0.814453125,0.740234375,0.673828125,0.6005859375,0.4970703125,0.392578125,0.3330078125,0.3330078125,0.376953125,0.4287109375,0.4833984375,0.5439453125,0.5927734375,0.6123046875,0.6044921875,0.583984375,0.5703125,0.5693359375,0.6044921875,0.6630859375,0.716796875,0.7373046875,0.71875,0.673828125,0.6123046875,0.5244140625,0.4423828125,0.4052734375,0.427734375,0.4873046875,0.55078125,0.609375,0.6455078125,0.6376953125,0.5830078125,0.5087890625,0.4501953125,0.4287109375,0.431640625,0.4833984375,0.57421875,0.6640625,0.7177734375,0.7158203125,0.673828125,0.615234375,0.5361328125,0.44921875,0.37890625,0.3388671875,0.326171875,0.3251953125,0.341796875,0.419921875,0.5439453125,0.6611328125,0.7275390625,0.724609375,0.673828125,0.60546875,0.5185546875,0.43359375,0.376953125,0.3583984375,0.365234375,0.376953125,0.3876953125,0.4013671875,0.4306640625,0.4833984375,0.55078125,0.6181640625,0.673828125,0.7177734375,0.724609375,0.67578125,0.580078125,0.474609375,0.4013671875,0.376953125,0.3798828125,0.4287109375,0.51171875,0.587890625,0.623046875,0.60546875,0.55078125,0.4833984375,0.4052734375,0.3564453125,0.3701171875,0.4453125,0.5419921875,0.6220703125,0.693359375,0.7509765625,0.7724609375,0.74609375,0.69140625,0.6416015625,0.6220703125,0.595703125,0.5166015625,0.4072265625,0.31640625,0.283203125,0.3115234375,0.376953125,0.44140625,0.47265625,0.4716796875,0.45703125,0.455078125,0.4873046875,0.55078125,0.6181640625,0.6552734375,0.6416015625,0.5791015625,0.498046875,0.44140625,0.4287109375,0.4375,0.4736328125,0.5185546875,0.544921875,0.533203125,0.48828125,0.4287109375,0.3740234375,0.3525390625,0.3798828125,0.4482421875,0.5234375,0.568359375,0.5703125,0.5498046875,0.5009765625,0.4453125,0.4189453125,0.4404296875,0.4990234375,0.5703125,0.6455078125,0.71875,0.75390625,0.7265625,0.6484375,0.560546875,0.5,0.4541015625,0.4375,0.4638671875,0.521484375,0.5849609375,0.6220703125,0.6220703125,0.62109375,0.6552734375,0.70703125,0.7421875,0.736328125,0.6904296875,0.6220703125,0.5546875,0.5107421875,0.4970703125,0.5029296875,0.5078125,0.4912109375,0.4482421875,0.388671875,0.3095703125,0.24609375,0.2373046875,0.2890625,0.37109375,0.4482421875,0.5146484375,0.552734375,0.5419921875,0.4892578125,0.421875,0.37890625,0.376953125,0.3994140625,0.4599609375,0.54296875,0.6103515625,0.63671875,0.6162109375,0.5703125,0.5146484375,0.4482421875,0.3837890625,0.3408203125,0.32421875,0.32421875,0.3251953125,0.333984375,0.3701171875,0.4189453125,0.4541015625,0.45703125,0.42578125,0.376953125,0.3369140625,0.337890625,0.3818359375,0.443359375,0.4873046875,0.48828125,0.4482421875,0.396484375,0.3505859375,0.322265625,0.3154296875,0.32421875,0.3310546875,0.3251953125,0.306640625,0.263671875,0.2158203125,0.1943359375,0.2138671875,0.2646484375,0.3251953125,0.3994140625,0.5068359375,0.6142578125,0.673828125,0.6669921875,0.6142578125,0.55078125,0.4775390625,0.3701171875,0.2626953125,0.203125,0.2099609375,0.2626953125,0.3251953125,0.3779296875,0.396484375,0.380859375,0.357421875,0.3525390625,0.3837890625,0.4482421875,0.521484375,0.5947265625,0.6513671875,0.67578125,0.6748046875,0.66796875,0.673828125,0.67578125,0.640625,0.5654296875,0.46875,0.3837890625,0.3349609375,0.3251953125,0.31640625,0.28125,0.2392578125,0.22265625,0.248046875,0.306640625,0.376953125,0.4599609375,0.5693359375,0.6669921875,0.7080078125,0.6826171875,0.6171875,0.55078125,0.5,0.4912109375,0.521484375,0.564453125,0.5849609375,0.5615234375,0.5,0.423828125,0.3447265625,0.28515625,0.2646484375,0.28125,0.3095703125,0.3251953125,0.345703125,0.3974609375,0.46484375,0.5146484375,0.5244140625,0.49609375,0.4482421875,0.3916015625,0.3271484375,0.291015625,0.314453125,0.3935546875,0.490234375,0.5703125,0.630859375,0.6455078125,0.6083984375,0.5478515625,0.5009765625,0.501953125,0.55078125,0.61328125,0.673828125,0.7119140625,0.71875,0.7001953125,0.6787109375,0.673828125,0.6826171875,0.7177734375,0.759765625,0.7763671875,0.7509765625,0.6923828125,0.6220703125,0.5556640625,0.515625,0.5048828125,0.5107421875,0.509765625,0.4833984375,0.4287109375,0.361328125,0.283203125,0.234375,0.248046875,0.3232421875,0.419921875,0.5,0.568359375,0.611328125,0.60546875,0.546875,0.46484375,0.400390625,0.376953125,0.3623046875,0.3408203125,0.33203125,0.3564453125,0.4140625,0.486328125,0.55078125,0.60546875,0.623046875,0.583984375,0.498046875,0.40234375,0.33984375,0.3251953125,0.32421875,0.32421875,0.3408203125,0.3837890625,0.4482421875,0.5146484375,0.5703125,0.6181640625,0.6494140625,0.6513671875,0.625,0.5888671875,0.5673828125,0.5703125,0.572265625,0.55078125,0.5224609375,0.5146484375,0.5439453125,0.6025390625,0.673828125,0.7373046875,0.759765625,0.71875,0.6240234375,0.515625,0.4443359375,0.4287109375,0.427734375,0.421875,0.4140625,0.4091796875,0.4111328125,0.4189453125,0.4287109375,0.439453125,0.4462890625,0.4482421875,0.4443359375,0.4365234375,0.4306640625,0.4287109375,0.427734375,0.421875,0.4140625,0.4091796875,0.4111328125,0.4189453125,0.4287109375,0.4365234375,0.4375,0.4482421875,0.482421875,0.541015625,0.609375,0.673828125,0.71875,0.701171875,0.6201171875,0.517578125,0.4462890625,0.4423828125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.47265625,0.54296875,0.5966796875,0.599609375,0.55078125,0.4873046875,0.427734375,0.4052734375,0.4423828125,0.5244140625,0.6123046875,0.673828125,0.720703125,0.7451171875,0.7353515625,0.6953125,0.6484375,0.6201171875,0.6220703125,0.625,0.5966796875,0.5361328125,0.462890625,0.40234375,0.3740234375,0.376953125,0.3876953125,0.39453125,0.3935546875,0.3798828125,0.3583984375,0.3388671875,0.3251953125,0.3310546875,0.392578125,0.494140625,0.5888671875,0.6328125,0.6142578125,0.55078125,0.4765625,0.396484375,0.3330078125,0.3037109375,0.306640625,0.3212890625,0.3251953125,0.33984375,0.4052734375,0.505859375,0.595703125,0.6396484375,0.6240234375,0.5703125,0.4990234375,0.4033203125,0.3193359375,0.654296875,0.673828125,0.70703125,0.7333984375,0.740234375,0.7314453125,0.69140625,0.6240234375,0.5517578125,0.501953125,0.486328125,0.5,0.5087890625,0.484375,0.44140625,0.4111328125,0.4169921875,0.4619140625,0.5302734375,0.6103515625,0.71484375,0.8095703125,0.853515625,0.8388671875,0.7890625,0.740234375,0.6875,0.6103515625,0.52734375,0.466796875,0.443359375,0.451171875,0.46875,0.4931640625,0.529296875,0.56640625,0.5849609375,0.580078125,0.556640625,0.5302734375,0.51171875,0.529296875,0.5849609375,0.66015625,0.72265625,0.75,0.740234375,0.7119140625,0.6552734375,0.587890625,0.541015625,0.533203125,0.5615234375,0.6044921875,0.6494140625,0.681640625,0.6787109375,0.6357421875,0.56640625,0.50390625,0.46875,0.4521484375,0.4775390625,0.546875,0.6376953125,0.7138671875,0.7490234375,0.740234375,0.7099609375,0.6376953125,0.52734375,0.408203125,0.314453125,0.267578125,0.2587890625,0.2763671875,0.361328125,0.501953125,0.6484375,0.748046875,0.7734375,0.740234375,0.68359375,0.58984375,0.4775390625,0.3857421875,0.3408203125,0.3408203125,0.3642578125,0.3955078125,0.4501953125,0.5244140625,0.6044921875,0.6728515625,0.716796875,0.740234375,0.75390625,0.7373046875,0.67578125,0.580078125,0.4775390625,0.4013671875,0.3642578125,0.3505859375,0.38671875,0.46875,0.5634765625,0.6279296875,0.6396484375,0.6044921875,0.55078125,0.48046875,0.4248046875,0.421875,0.4755859375,0.55859375,0.634765625,0.7080078125,0.7763671875,0.8095703125,0.7900390625,0.7314453125,0.6708984375,0.634765625,0.5927734375,0.4990234375,0.3798828125,0.2900390625,0.26171875,0.296875,0.3642578125,0.4296875,0.4697265625,0.482421875,0.4853515625,0.4990234375,0.5390625,0.6044921875,0.6708984375,0.70703125,0.6904296875,0.6240234375,0.5400390625,0.482421875,0.46875,0.4755859375,0.501953125,0.53515625,0.5546875,0.546875,0.513671875,0.46875,0.4296875,0.419921875,0.4443359375,0.4912109375,0.533203125,0.5478515625,0.5302734375,0.494140625,0.43359375,0.375,0.35546875,0.388671875,0.4560546875,0.5302734375,0.6015625,0.6611328125,0.681640625,0.6513671875,0.587890625,0.5283203125,0.5,0.48828125,0.505859375,0.5517578125,0.607421875,0.646484375,0.6552734375,0.634765625,0.619140625,0.6416015625,0.6904296875,0.7314453125,0.73828125,0.701171875,0.634765625,0.5625,0.4912109375,0.4384765625,0.4140625,0.41015625,0.408203125,0.39453125,0.3662109375,0.310546875,0.25390625,0.2314453125,0.2587890625,0.322265625,0.39453125,0.4599609375,0.4931640625,0.48046875,0.4306640625,0.375,0.3486328125,0.3642578125,0.396484375,0.4462890625,0.5029296875,0.54296875,0.5576171875,0.5478515625,0.5302734375,0.5048828125,0.4580078125,0.39453125,0.3310546875,0.2841796875,0.2626953125,0.2587890625,0.263671875,0.2880859375,0.3251953125,0.361328125,0.380859375,0.3798828125,0.3642578125,0.3486328125,0.349609375,0.3671875,0.3916015625,0.408203125,0.4091796875,0.39453125,0.376953125,0.361328125,0.34765625,0.3310546875,0.3095703125,0.28515625,0.2587890625,0.2265625,0.181640625,0.142578125,0.134765625,0.1630859375,0.2109375,0.2587890625,0.3173828125,0.4189453125,0.5380859375,0.6298828125,0.6640625,0.6474609375,0.6044921875,0.5458984375,0.4443359375,0.3251953125,0.234375,0.19921875,0.216796875,0.2587890625,0.2958984375,0.3037109375,0.2890625,0.275390625,0.28515625,0.328125,0.39453125,0.46875,0.5478515625,0.6181640625,0.66796875,0.697265625,0.716796875,0.740234375,0.7548828125,0.7158203125,0.61328125,0.474609375,0.34765625,0.2734375,0.2587890625,0.2509765625,0.22265625,0.1923828125,0.189453125,0.2265625,0.2919921875,0.3642578125,0.4453125,0.5537109375,0.654296875,0.70703125,0.6982421875,0.6533203125,0.6044921875,0.568359375,0.5634765625,0.5849609375,0.607421875,0.6044921875,0.5654296875,0.5,0.4208984375,0.3232421875,0.2373046875,0.1923828125,0.197265625,0.228515625,0.2587890625,0.2900390625,0.3369140625,0.38671875,0.4189453125,0.42578125,0.4130859375,0.39453125,0.369140625,0.330078125,0.3037109375,0.31640625,0.3740234375,0.4541015625,0.5302734375,0.5947265625,0.6298828125,0.6259765625,0.5966796875,0.568359375,0.568359375,0.6044921875,0.65234375,0.701171875,0.740234375,0.7568359375,0.7529296875,0.7431640625,0.740234375,0.748046875,0.7763671875,0.806640625,0.8095703125,0.7724609375,0.70703125,0.634765625,0.5673828125,0.521484375,0.5048828125,0.5107421875,0.5185546875,0.5068359375,0.46875,0.416015625,0.3447265625,0.2900390625,0.2861328125,0.33984375,0.4228515625,0.5,0.5693359375,0.62109375,0.6240234375,0.568359375,0.48046875,0.4033203125,0.3642578125,0.337890625,0.3212890625,0.3359375,0.3916015625,0.4736328125,0.55078125,0.6044921875,0.640625,0.6318359375,0.5634765625,0.4521484375,0.341796875,0.2734375,0.2587890625,0.2626953125,0.2841796875,0.3310546875,0.39453125,0.4580078125,0.5048828125,0.5302734375,0.544921875,0.54296875,0.52734375,0.5078125,0.4990234375,0.5068359375,0.5302734375,0.55078125,0.5537109375,0.5517578125,0.56640625,0.6064453125,0.6689453125,0.740234375,0.8037109375,0.8232421875,0.775390625,0.673828125,0.5595703125,0.4853515625,0.46875,0.4658203125,0.4501953125,0.4306640625,0.4189453125,0.423828125,0.443359375,0.46875,0.4951171875,0.513671875,0.5185546875,0.5078125,0.48828125,0.47265625,0.46875,0.4658203125,0.4501953125,0.4306640625,0.4189453125,0.423828125,0.443359375,0.46875,0.4951171875,0.5205078125,0.5517578125,0.59375,0.642578125,0.693359375,0.740234375,0.7685546875,0.73046875,0.6318359375,0.5185546875,0.4443359375,0.44140625,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4384765625,0.4248046875,0.46875,0.546875,0.615234375,0.63671875,0.6044921875,0.5615234375,0.533203125,0.541015625,0.587890625,0.6552734375,0.7119140625,0.740234375,0.751953125,0.73828125,0.6982421875,0.6513671875,0.619140625,0.6142578125,0.634765625,0.650390625,0.6220703125,0.546875,0.4521484375,0.376953125,0.3486328125,0.3642578125,0.390625,0.4130859375,0.4140625,0.3857421875,0.337890625,0.291015625,0.2587890625,0.2509765625,0.3154296875,0.44140625,0.57421875,0.658203125,0.6630859375,0.6044921875,0.5263671875,0.4326171875,0.341796875,0.28125,0.2568359375,0.2568359375,0.2587890625,0.271484375,0.3310546875,0.4248046875,0.515625,0.568359375,0.5673828125,0.5302734375,0.4765625,0.400390625,0.328125,0.6904296875,0.701171875,0.720703125,0.736328125,0.740234375,0.7373046875,0.71875,0.6796875,0.6240234375,0.56640625,0.5234375,0.5,0.470703125,0.4111328125,0.34765625,0.3173828125,0.337890625,0.3974609375,0.46875,0.548828125,0.6494140625,0.7431640625,0.794921875,0.7978515625,0.76953125,0.740234375,0.7119140625,0.6787109375,0.640625,0.6044921875,0.5732421875,0.5498046875,0.5302734375,0.5166015625,0.521484375,0.5380859375,0.5498046875,0.5419921875,0.51171875,0.46875,0.4287109375,0.4169921875,0.455078125,0.5380859375,0.6357421875,0.708984375,0.740234375,0.751953125,0.73828125,0.6982421875,0.6513671875,0.619140625,0.6142578125,0.634765625,0.6640625,0.697265625,0.712890625,0.6923828125,0.6416015625,0.580078125,0.5302734375,0.48828125,0.4697265625,0.494140625,0.560546875,0.64453125,0.7099609375,0.740234375,0.7470703125,0.703125,0.5986328125,0.4638671875,0.341796875,0.2724609375,0.2587890625,0.2734375,0.34765625,0.474609375,0.61328125,0.7158203125,0.7548828125,0.740234375,0.7001953125,0.6123046875,0.4970703125,0.3974609375,0.3486328125,0.3544921875,0.39453125,0.44921875,0.53515625,0.634765625,0.71484375,0.7548828125,0.7568359375,0.740234375,0.7197265625,0.6904296875,0.6435546875,0.5791015625,0.5078125,0.4443359375,0.39453125,0.359375,0.37109375,0.435546875,0.5302734375,0.6123046875,0.6484375,0.634765625,0.5986328125,0.5341796875,0.46875,0.44140625,0.4677734375,0.5322265625,0.6044921875,0.6806640625,0.759765625,0.806640625,0.794921875,0.7333984375,0.6591796875,0.6044921875,0.5458984375,0.4453125,0.3369140625,0.26953125,0.26953125,0.3232421875,0.39453125,0.4599609375,0.5,0.513671875,0.5166015625,0.529296875,0.5693359375,0.634765625,0.7021484375,0.7421875,0.7314453125,0.673828125,0.5966796875,0.5419921875,0.5302734375,0.533203125,0.548828125,0.568359375,0.580078125,0.5751953125,0.5556640625,0.5302734375,0.5087890625,0.5087890625,0.5244140625,0.5380859375,0.5361328125,0.5107421875,0.46875,0.4150390625,0.33984375,0.2783203125,0.267578125,0.314453125,0.3935546875,0.46875,0.537109375,0.58203125,0.587890625,0.5576171875,0.5146484375,0.490234375,0.5,0.5263671875,0.580078125,0.640625,0.6796875,0.6806640625,0.6484375,0.6044921875,0.5703125,0.5791015625,0.6240234375,0.673828125,0.6943359375,0.66796875,0.6044921875,0.5263671875,0.43359375,0.3525390625,0.3115234375,0.314453125,0.3408203125,0.3642578125,0.3720703125,0.3447265625,0.294921875,0.2568359375,0.255859375,0.296875,0.3642578125,0.4287109375,0.4580078125,0.4443359375,0.40234375,0.3642578125,0.359375,0.39453125,0.4375,0.46875,0.4794921875,0.47265625,0.458984375,0.455078125,0.46875,0.482421875,0.470703125,0.427734375,0.3642578125,0.302734375,0.2666015625,0.2587890625,0.259765625,0.2646484375,0.28125,0.30859375,0.3427734375,0.373046875,0.39453125,0.4091796875,0.408203125,0.3916015625,0.3671875,0.349609375,0.3486328125,0.3642578125,0.38671875,0.4140625,0.427734375,0.4111328125,0.365234375,0.30859375,0.2587890625,0.2109375,0.1630859375,0.134765625,0.142578125,0.181640625,0.2265625,0.2587890625,0.296875,0.376953125,0.4853515625,0.5849609375,0.64453125,0.6552734375,0.634765625,0.5966796875,0.5166015625,0.408203125,0.30859375,0.2490234375,0.23828125,0.2587890625,0.27734375,0.267578125,0.2421875,0.228515625,0.24609375,0.2958984375,0.3642578125,0.4365234375,0.5078125,0.5712890625,0.62109375,0.66015625,0.697265625,0.740234375,0.7734375,0.748046875,0.6484375,0.501953125,0.361328125,0.2763671875,0.2587890625,0.251953125,0.2265625,0.2041015625,0.208984375,0.2529296875,0.3212890625,0.39453125,0.4736328125,0.5703125,0.6572265625,0.701171875,0.697265625,0.6650390625,0.634765625,0.6162109375,0.6220703125,0.640625,0.646484375,0.6220703125,0.568359375,0.5,0.41796875,0.3095703125,0.208984375,0.15625,0.1650390625,0.2109375,0.2587890625,0.302734375,0.337890625,0.35546875,0.3564453125,0.349609375,0.349609375,0.3642578125,0.375,0.3603515625,0.3330078125,0.3232421875,0.345703125,0.3994140625,0.46875,0.5390625,0.5966796875,0.626953125,0.62890625,0.6181640625,0.615234375,0.634765625,0.6630859375,0.6953125,0.7236328125,0.740234375,0.744140625,0.7412109375,0.740234375,0.7470703125,0.7724609375,0.794921875,0.7900390625,0.74609375,0.677734375,0.6044921875,0.537109375,0.490234375,0.48046875,0.501953125,0.5341796875,0.546875,0.5302734375,0.4931640625,0.4287109375,0.36328125,0.3369140625,0.3623046875,0.4267578125,0.5,0.5732421875,0.638671875,0.6630859375,0.6240234375,0.5380859375,0.451171875,0.39453125,0.3525390625,0.3330078125,0.3583984375,0.4306640625,0.5224609375,0.59765625,0.634765625,0.65234375,0.6259765625,0.546875,0.435546875,0.33203125,0.271484375,0.2587890625,0.2666015625,0.302734375,0.3642578125,0.427734375,0.470703125,0.482421875,0.46875,0.4443359375,0.404296875,0.3671875,0.35546875,0.3779296875,0.4228515625,0.46875,0.509765625,0.5341796875,0.5498046875,0.5712890625,0.611328125,0.669921875,0.740234375,0.8046875,0.83203125,0.7978515625,0.7119140625,0.6123046875,0.544921875,0.5302734375,0.5234375,0.4970703125,0.4638671875,0.4443359375,0.4521484375,0.4853515625,0.5302734375,0.57421875,0.607421875,0.615234375,0.5966796875,0.5625,0.5361328125,0.5302734375,0.5234375,0.4970703125,0.4638671875,0.4443359375,0.4521484375,0.4853515625,0.5302734375,0.5751953125,0.6181640625,0.654296875,0.6796875,0.697265625,0.7158203125,0.740234375,0.75,0.6982421875,0.5966796875,0.4912109375,0.4306640625,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4365234375,0.416015625,0.4521484375,0.5302734375,0.6083984375,0.6474609375,0.634765625,0.6142578125,0.619140625,0.6513671875,0.6982421875,0.73828125,0.751953125,0.740234375,0.7119140625,0.6552734375,0.587890625,0.541015625,0.533203125,0.5615234375,0.6044921875,0.6376953125,0.619140625,0.546875,0.4521484375,0.3798828125,0.361328125,0.39453125,0.44140625,0.484375,0.4970703125,0.4609375,0.388671875,0.3125,0.2587890625,0.2333984375,0.2880859375,0.4169921875,0.5654296875,0.669921875,0.689453125,0.634765625,0.556640625,0.4580078125,0.361328125,0.2919921875,0.26171875,0.2578125,0.2587890625,0.267578125,0.30859375,0.375,0.44140625,0.4833984375,0.490234375,0.46875,0.4375,0.3896484375,0.341796875,0.6533203125,0.658203125,0.666015625,0.671875,0.673828125,0.6767578125,0.6845703125,0.6845703125,0.66015625,0.611328125,0.552734375,0.5,0.4384765625,0.3505859375,0.2724609375,0.2451171875,0.2802734375,0.353515625,0.4287109375,0.505859375,0.59375,0.669921875,0.7080078125,0.70703125,0.6875,0.673828125,0.66796875,0.677734375,0.6904296875,0.689453125,0.6640625,0.6201171875,0.5703125,0.525390625,0.5068359375,0.51171875,0.5224609375,0.517578125,0.4853515625,0.4287109375,0.3681640625,0.3232421875,0.328125,0.3974609375,0.5068359375,0.609375,0.673828125,0.720703125,0.7451171875,0.7353515625,0.6953125,0.6484375,0.6201171875,0.6220703125,0.638671875,0.67578125,0.7119140625,0.7197265625,0.689453125,0.6328125,0.5703125,0.505859375,0.443359375,0.41796875,0.44921875,0.52734375,0.61328125,0.673828125,0.71484375,0.7099609375,0.6416015625,0.5283203125,0.4130859375,0.3408203125,0.3251953125,0.3349609375,0.3837890625,0.46875,0.5654296875,0.640625,0.67578125,0.673828125,0.6494140625,0.5791015625,0.48046875,0.3994140625,0.3681640625,0.3916015625,0.4482421875,0.51953125,0.6220703125,0.7216796875,0.7763671875,0.771484375,0.7265625,0.673828125,0.626953125,0.59765625,0.583984375,0.572265625,0.5478515625,0.505859375,0.4482421875,0.3935546875,0.3759765625,0.4111328125,0.4873046875,0.5703125,0.619140625,0.6220703125,0.599609375,0.5419921875,0.470703125,0.4267578125,0.431640625,0.4814453125,0.55078125,0.6298828125,0.7177734375,0.7763671875,0.7724609375,0.70703125,0.62109375,0.55078125,0.4794921875,0.3798828125,0.2919921875,0.2607421875,0.296875,0.3720703125,0.4482421875,0.51171875,0.5439453125,0.5419921875,0.52734375,0.5263671875,0.5576171875,0.6220703125,0.6904296875,0.736328125,0.73828125,0.6943359375,0.62890625,0.5810546875,0.5703125,0.5712890625,0.5771484375,0.5849609375,0.58984375,0.587890625,0.580078125,0.5703125,0.5654296875,0.576171875,0.5888671875,0.5810546875,0.546875,0.490234375,0.4287109375,0.359375,0.2724609375,0.2080078125,0.2041015625,0.2626953125,0.3505859375,0.4287109375,0.4931640625,0.5244140625,0.515625,0.482421875,0.4541015625,0.4580078125,0.5,0.55859375,0.6376953125,0.705078125,0.72265625,0.6845703125,0.6171875,0.55078125,0.501953125,0.498046875,0.5400390625,0.5966796875,0.62890625,0.6123046875,0.55078125,0.470703125,0.3671875,0.27734375,0.240234375,0.263671875,0.322265625,0.376953125,0.4169921875,0.412109375,0.3681640625,0.31640625,0.2919921875,0.314453125,0.376953125,0.4404296875,0.4658203125,0.44921875,0.4111328125,0.384765625,0.396484375,0.4482421875,0.5,0.5126953125,0.482421875,0.4296875,0.388671875,0.388671875,0.4287109375,0.4765625,0.5009765625,0.4873046875,0.4384765625,0.376953125,0.3349609375,0.3251953125,0.3212890625,0.306640625,0.2958984375,0.306640625,0.34375,0.3955078125,0.4482421875,0.48828125,0.4873046875,0.443359375,0.3818359375,0.337890625,0.3369140625,0.376953125,0.4345703125,0.5009765625,0.544921875,0.53515625,0.474609375,0.3935546875,0.3251953125,0.2646484375,0.2138671875,0.1943359375,0.2158203125,0.263671875,0.306640625,0.3251953125,0.34375,0.3935546875,0.4697265625,0.5478515625,0.6044921875,0.6259765625,0.6220703125,0.603515625,0.5537109375,0.4775390625,0.3994140625,0.34375,0.3212890625,0.3251953125,0.3271484375,0.298828125,0.2587890625,0.23828125,0.2548828125,0.3076171875,0.376953125,0.4453125,0.498046875,0.5322265625,0.5537109375,0.578125,0.6171875,0.673828125,0.724609375,0.7275390625,0.6611328125,0.5439453125,0.419921875,0.341796875,0.3251953125,0.318359375,0.2919921875,0.265625,0.267578125,0.3076171875,0.375,0.4482421875,0.5234375,0.6025390625,0.662109375,0.6826171875,0.666015625,0.6376953125,0.6220703125,0.619140625,0.6376953125,0.662109375,0.6650390625,0.6318359375,0.5703125,0.5,0.4169921875,0.3076171875,0.2099609375,0.1689453125,0.1943359375,0.259765625,0.3251953125,0.3798828125,0.4013671875,0.3857421875,0.3515625,0.3271484375,0.3349609375,0.376953125,0.41796875,0.419921875,0.3876953125,0.349609375,0.3359375,0.365234375,0.4287109375,0.501953125,0.5712890625,0.6201171875,0.63671875,0.6279296875,0.6171875,0.6220703125,0.6328125,0.646484375,0.66015625,0.669921875,0.673828125,0.673828125,0.673828125,0.6806640625,0.70703125,0.7333984375,0.7314453125,0.69140625,0.6240234375,0.55078125,0.4833984375,0.439453125,0.4375,0.4775390625,0.533203125,0.5693359375,0.5703125,0.5478515625,0.490234375,0.4189453125,0.375,0.3798828125,0.4296875,0.5,0.576171875,0.658203125,0.7060546875,0.6875,0.611328125,0.5185546875,0.4482421875,0.390625,0.361328125,0.380859375,0.4482421875,0.5341796875,0.5986328125,0.6220703125,0.625,0.5966796875,0.5322265625,0.4501953125,0.3759765625,0.333984375,0.3251953125,0.3349609375,0.376953125,0.4384765625,0.4873046875,0.5009765625,0.4765625,0.4287109375,0.37109375,0.2978515625,0.2431640625,0.23828125,0.2880859375,0.3623046875,0.4287109375,0.484375,0.517578125,0.529296875,0.5380859375,0.5595703125,0.6064453125,0.673828125,0.7412109375,0.7802734375,0.7705078125,0.712890625,0.63671875,0.58203125,0.5703125,0.5615234375,0.525390625,0.48046875,0.4541015625,0.4658203125,0.5107421875,0.5703125,0.6298828125,0.6748046875,0.685546875,0.66015625,0.6142578125,0.578125,0.5703125,0.5615234375,0.525390625,0.48046875,0.4541015625,0.4658203125,0.5107421875,0.5703125,0.630859375,0.681640625,0.708984375,0.7060546875,0.6845703125,0.6689453125,0.673828125,0.669921875,0.6142578125,0.5234375,0.443359375,0.41015625,0.435546875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.43359375,0.40234375,0.423828125,0.4912109375,0.5703125,0.619140625,0.6220703125,0.6201171875,0.6484375,0.6953125,0.7353515625,0.7451171875,0.720703125,0.673828125,0.6123046875,0.5244140625,0.4423828125,0.4052734375,0.427734375,0.4873046875,0.55078125,0.599609375,0.5966796875,0.5390625,0.4599609375,0.40234375,0.3994140625,0.4482421875,0.513671875,0.5791015625,0.6083984375,0.576171875,0.4921875,0.396484375,0.3251953125,0.283203125,0.3154296875,0.423828125,0.55859375,0.6572265625,0.67578125,0.6220703125,0.544921875,0.45703125,0.376953125,0.3291015625,0.31640625,0.322265625,0.3251953125,0.3291015625,0.34765625,0.37890625,0.41015625,0.431640625,0.4365234375,0.4287109375,0.416015625,0.396484375,0.375,0.576171875,0.5771484375,0.578125,0.5791015625,0.5791015625,0.5869140625,0.6171875,0.650390625,0.658203125,0.6279296875,0.568359375,0.5,0.421875,0.322265625,0.2431640625,0.2255859375,0.27734375,0.3623046875,0.439453125,0.5126953125,0.5830078125,0.62890625,0.6357421875,0.61328125,0.587890625,0.5791015625,0.5869140625,0.623046875,0.6689453125,0.693359375,0.677734375,0.6259765625,0.5595703125,0.5,0.4755859375,0.4892578125,0.515625,0.52734375,0.5009765625,0.439453125,0.365234375,0.291015625,0.2587890625,0.2958984375,0.3916015625,0.5,0.5791015625,0.6455078125,0.693359375,0.7021484375,0.669921875,0.6171875,0.5771484375,0.5693359375,0.580078125,0.62109375,0.671875,0.697265625,0.681640625,0.6279296875,0.5595703125,0.482421875,0.3935546875,0.333984375,0.33984375,0.4091796875,0.5029296875,0.5791015625,0.6416015625,0.6728515625,0.6494140625,0.5791015625,0.4921875,0.4326171875,0.419921875,0.423828125,0.4443359375,0.48046875,0.5234375,0.55859375,0.5771484375,0.5791015625,0.5654296875,0.5126953125,0.4404296875,0.3876953125,0.3818359375,0.4228515625,0.4892578125,0.5693359375,0.6708984375,0.7548828125,0.7783203125,0.7333984375,0.6533203125,0.5791015625,0.5205078125,0.5,0.51953125,0.5546875,0.572265625,0.5498046875,0.4892578125,0.423828125,0.3828125,0.388671875,0.4404296875,0.509765625,0.5595703125,0.5693359375,0.556640625,0.505859375,0.439453125,0.3935546875,0.39453125,0.4404296875,0.509765625,0.5888671875,0.6826171875,0.748046875,0.7470703125,0.6806640625,0.587890625,0.509765625,0.4306640625,0.3359375,0.2646484375,0.2587890625,0.3193359375,0.41015625,0.4892578125,0.55078125,0.5712890625,0.548828125,0.509765625,0.4873046875,0.5078125,0.5693359375,0.638671875,0.6904296875,0.701171875,0.66796875,0.6123046875,0.5693359375,0.5595703125,0.5595703125,0.560546875,0.5615234375,0.5625,0.5625,0.560546875,0.5595703125,0.564453125,0.58984375,0.615234375,0.61328125,0.5751953125,0.5107421875,0.439453125,0.361328125,0.2685546875,0.2021484375,0.201171875,0.2666015625,0.3603515625,0.439453125,0.5009765625,0.521484375,0.4970703125,0.453125,0.42578125,0.44140625,0.5,0.576171875,0.66796875,0.7353515625,0.73828125,0.6767578125,0.5869140625,0.509765625,0.451171875,0.44140625,0.482421875,0.5419921875,0.5810546875,0.5693359375,0.509765625,0.4287109375,0.326171875,0.244140625,0.224609375,0.2734375,0.35546875,0.4296875,0.486328125,0.494140625,0.4541015625,0.39453125,0.3564453125,0.369140625,0.4296875,0.4912109375,0.509765625,0.484375,0.4404296875,0.4130859375,0.4296875,0.4892578125,0.546875,0.552734375,0.5029296875,0.431640625,0.380859375,0.3837890625,0.439453125,0.505859375,0.5537109375,0.5615234375,0.52734375,0.4716796875,0.4296875,0.419921875,0.412109375,0.380859375,0.345703125,0.3349609375,0.36328125,0.421875,0.4892578125,0.544921875,0.5478515625,0.49609375,0.4228515625,0.37109375,0.3740234375,0.4296875,0.505859375,0.595703125,0.658203125,0.65625,0.58984375,0.498046875,0.419921875,0.3515625,0.298828125,0.28515625,0.3134765625,0.3662109375,0.408203125,0.419921875,0.4248046875,0.4453125,0.48046875,0.51953125,0.5517578125,0.5673828125,0.5693359375,0.5634765625,0.5439453125,0.5087890625,0.46875,0.4375,0.421875,0.419921875,0.412109375,0.3720703125,0.3212890625,0.29296875,0.3076171875,0.3603515625,0.4296875,0.4931640625,0.5234375,0.517578125,0.4970703125,0.490234375,0.517578125,0.5791015625,0.6435546875,0.67578125,0.6533203125,0.5810546875,0.4931640625,0.43359375,0.419921875,0.4111328125,0.3779296875,0.33984375,0.328125,0.357421875,0.41796875,0.4892578125,0.5615234375,0.6240234375,0.6572265625,0.6484375,0.6123046875,0.5791015625,0.5693359375,0.576171875,0.6083984375,0.6455078125,0.658203125,0.630859375,0.5703125,0.5,0.41796875,0.3154296875,0.232421875,0.2119140625,0.2607421875,0.34375,0.419921875,0.478515625,0.4912109375,0.455078125,0.3994140625,0.3623046875,0.373046875,0.4296875,0.486328125,0.49609375,0.45703125,0.400390625,0.365234375,0.37890625,0.439453125,0.5126953125,0.5791015625,0.6201171875,0.6240234375,0.599609375,0.57421875,0.5693359375,0.5712890625,0.5732421875,0.576171875,0.578125,0.5791015625,0.5791015625,0.5791015625,0.587890625,0.62109375,0.6591796875,0.6708984375,0.6416015625,0.5810546875,0.509765625,0.44140625,0.3955078125,0.39453125,0.439453125,0.5029296875,0.5498046875,0.5595703125,0.5458984375,0.49609375,0.4287109375,0.3837890625,0.384765625,0.4306640625,0.5,0.5791015625,0.6708984375,0.734375,0.73046875,0.662109375,0.568359375,0.4892578125,0.4228515625,0.380859375,0.3837890625,0.4345703125,0.5048828125,0.5556640625,0.5693359375,0.5673828125,0.55078125,0.517578125,0.4775390625,0.4423828125,0.423828125,0.419921875,0.4296875,0.4716796875,0.52734375,0.5615234375,0.5537109375,0.505859375,0.439453125,0.36328125,0.2724609375,0.2080078125,0.20703125,0.271484375,0.3623046875,0.439453125,0.5009765625,0.52734375,0.5185546875,0.4951171875,0.4873046875,0.515625,0.5791015625,0.6484375,0.6982421875,0.70703125,0.671875,0.6142578125,0.5693359375,0.5595703125,0.5498046875,0.5087890625,0.45703125,0.4267578125,0.4404296875,0.4912109375,0.5595703125,0.6279296875,0.6787109375,0.69140625,0.662109375,0.609375,0.5693359375,0.5595703125,0.5498046875,0.5087890625,0.45703125,0.4267578125,0.4404296875,0.4912109375,0.5595703125,0.6279296875,0.6806640625,0.6962890625,0.671875,0.6240234375,0.5869140625,0.5791015625,0.5693359375,0.5185546875,0.4482421875,0.3955078125,0.3896484375,0.431640625,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.431640625,0.388671875,0.392578125,0.44140625,0.5107421875,0.5595703125,0.5693359375,0.5771484375,0.6171875,0.669921875,0.7021484375,0.693359375,0.6455078125,0.5791015625,0.5009765625,0.40234375,0.3212890625,0.302734375,0.3505859375,0.43359375,0.509765625,0.5673828125,0.5751953125,0.5322265625,0.466796875,0.423828125,0.431640625,0.4892578125,0.5654296875,0.6494140625,0.69921875,0.6806640625,0.599609375,0.4990234375,0.419921875,0.365234375,0.3740234375,0.447265625,0.546875,0.619140625,0.6259765625,0.5693359375,0.49609375,0.42578125,0.37890625,0.3701171875,0.3896484375,0.4130859375,0.419921875,0.4208984375,0.423828125,0.4296875,0.435546875,0.439453125,0.4404296875,0.439453125,0.4375,0.4345703125,0.4306640625,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4228515625,0.421875,0.4208984375,0.419921875,0.419921875,0.431640625,0.4833984375,0.5556640625,0.6083984375,0.6162109375,0.5751953125,0.509765625,0.4326171875,0.34765625,0.294921875,0.3095703125,0.384765625,0.4814453125,0.5595703125,0.6220703125,0.654296875,0.634765625,0.568359375,0.486328125,0.4306640625,0.419921875,0.4306640625,0.47265625,0.525390625,0.5546875,0.5400390625,0.48828125,0.419921875,0.365234375,0.3720703125,0.4443359375,0.541015625,0.6103515625,0.6162109375,0.5595703125,0.4765625,0.3662109375,0.271484375,0.2373046875,0.2744140625,0.3525390625,0.4296875,0.5,0.5517578125,0.564453125,0.53125,0.4755859375,0.431640625,0.419921875,0.427734375,0.4677734375,0.5205078125,0.552734375,0.5439453125,0.49609375,0.4296875,0.353515625,0.26171875,0.1943359375,0.19140625,0.2529296875,0.3427734375,0.419921875,0.4912109375,0.5625,0.6103515625,0.623046875,0.6064453125,0.5849609375,0.5791015625,0.5751953125,0.556640625,0.5205078125,0.478515625,0.4423828125,0.423828125,0.419921875,0.4111328125,0.3779296875,0.33984375,0.328125,0.357421875,0.41796875,0.4892578125,0.5673828125,0.6513671875,0.69921875,0.6796875,0.59765625,0.498046875,0.419921875,0.365234375,0.3671875,0.4267578125,0.5087890625,0.56640625,0.56640625,0.509765625,0.439453125,0.3779296875,0.3466796875,0.353515625,0.384765625,0.4140625,0.419921875,0.41015625,0.3798828125,0.3466796875,0.341796875,0.3759765625,0.439453125,0.509765625,0.5869140625,0.677734375,0.7392578125,0.7353515625,0.6650390625,0.5693359375,0.4892578125,0.41015625,0.318359375,0.25390625,0.2548828125,0.3212890625,0.4130859375,0.4892578125,0.544921875,0.5478515625,0.49609375,0.4228515625,0.37109375,0.3740234375,0.4296875,0.49609375,0.546875,0.560546875,0.533203125,0.484375,0.447265625,0.439453125,0.44140625,0.443359375,0.4453125,0.4453125,0.443359375,0.44140625,0.439453125,0.4501953125,0.5048828125,0.5830078125,0.6455078125,0.66015625,0.6240234375,0.5595703125,0.4814453125,0.390625,0.3271484375,0.3271484375,0.392578125,0.4833984375,0.5595703125,0.6142578125,0.615234375,0.5615234375,0.486328125,0.435546875,0.4404296875,0.5,0.578125,0.669921875,0.7314453125,0.7275390625,0.6591796875,0.56640625,0.4892578125,0.4326171875,0.4248046875,0.4658203125,0.5244140625,0.5625,0.5498046875,0.4892578125,0.412109375,0.3291015625,0.2822265625,0.3056640625,0.392578125,0.4970703125,0.5791015625,0.6396484375,0.6513671875,0.6123046875,0.5517578125,0.51171875,0.521484375,0.5791015625,0.6357421875,0.63671875,0.5810546875,0.501953125,0.4482421875,0.451171875,0.509765625,0.5712890625,0.58984375,0.5654296875,0.5234375,0.4990234375,0.517578125,0.5791015625,0.6484375,0.7001953125,0.7099609375,0.6748046875,0.6171875,0.5712890625,0.5595703125,0.5458984375,0.49609375,0.427734375,0.380859375,0.37890625,0.4228515625,0.4892578125,0.5498046875,0.568359375,0.5458984375,0.5068359375,0.486328125,0.5078125,0.5693359375,0.6494140625,0.7431640625,0.8115234375,0.8134765625,0.7490234375,0.6572265625,0.5791015625,0.5107421875,0.4599609375,0.447265625,0.4765625,0.5283203125,0.5693359375,0.5791015625,0.576171875,0.55859375,0.5283203125,0.4912109375,0.4599609375,0.443359375,0.439453125,0.4423828125,0.45703125,0.4853515625,0.5185546875,0.5478515625,0.564453125,0.5693359375,0.560546875,0.5205078125,0.4677734375,0.4365234375,0.4482421875,0.5,0.5693359375,0.6259765625,0.619140625,0.5478515625,0.451171875,0.3798828125,0.373046875,0.4296875,0.5029296875,0.572265625,0.6181640625,0.6259765625,0.6064453125,0.583984375,0.5791015625,0.5693359375,0.521484375,0.4541015625,0.4052734375,0.4013671875,0.443359375,0.509765625,0.576171875,0.619140625,0.6162109375,0.568359375,0.5,0.451171875,0.439453125,0.451171875,0.4990234375,0.5654296875,0.61328125,0.6162109375,0.57421875,0.509765625,0.4345703125,0.3525390625,0.3037109375,0.3212890625,0.400390625,0.5,0.5791015625,0.63671875,0.6435546875,0.5986328125,0.5341796875,0.490234375,0.5,0.5595703125,0.619140625,0.6318359375,0.5947265625,0.53515625,0.494140625,0.5029296875,0.5595703125,0.623046875,0.658203125,0.64453125,0.583984375,0.505859375,0.4521484375,0.439453125,0.439453125,0.4375,0.43359375,0.4306640625,0.4287109375,0.4287109375,0.4296875,0.443359375,0.49609375,0.5673828125,0.6181640625,0.62109375,0.5771484375,0.509765625,0.4384765625,0.376953125,0.3486328125,0.3603515625,0.3984375,0.431640625,0.439453125,0.431640625,0.3994140625,0.361328125,0.3486328125,0.3740234375,0.431640625,0.5,0.5751953125,0.6640625,0.7255859375,0.72265625,0.6572265625,0.5654296875,0.4892578125,0.421875,0.3662109375,0.341796875,0.357421875,0.3974609375,0.431640625,0.439453125,0.443359375,0.4599609375,0.4912109375,0.5283203125,0.55859375,0.576171875,0.5791015625,0.5888671875,0.6298828125,0.681640625,0.7119140625,0.6982421875,0.6474609375,0.5791015625,0.5009765625,0.4072265625,0.337890625,0.3349609375,0.3984375,0.490234375,0.5693359375,0.6259765625,0.6220703125,0.5546875,0.4599609375,0.390625,0.384765625,0.439453125,0.5078125,0.556640625,0.5654296875,0.533203125,0.478515625,0.4384765625,0.4296875,0.421875,0.3837890625,0.333984375,0.306640625,0.3203125,0.37109375,0.439453125,0.5078125,0.55859375,0.572265625,0.5419921875,0.490234375,0.44921875,0.439453125,0.4296875,0.38671875,0.3310546875,0.2978515625,0.30859375,0.3603515625,0.4296875,0.5,0.552734375,0.5673828125,0.5380859375,0.484375,0.44140625,0.4296875,0.419921875,0.3876953125,0.3515625,0.341796875,0.3720703125,0.4306640625,0.5,0.5751953125,0.6650390625,0.728515625,0.728515625,0.6650390625,0.5751953125,0.5,0.431640625,0.3740234375,0.3486328125,0.361328125,0.3994140625,0.431640625,0.439453125,0.44921875,0.490234375,0.5419921875,0.572265625,0.55859375,0.5078125,0.439453125,0.36328125,0.2802734375,0.23046875,0.2490234375,0.3291015625,0.4296875,0.509765625,0.568359375,0.578125,0.5390625,0.4794921875,0.4404296875,0.451171875,0.509765625,0.5888671875,0.6884765625,0.767578125,0.78515625,0.736328125,0.654296875,0.5791015625,0.5185546875,0.490234375,0.494140625,0.5107421875,0.5126953125,0.482421875,0.419921875,0.3544921875,0.3193359375,0.3359375,0.40234375,0.4853515625,0.544921875,0.5595703125,0.5615234375,0.5634765625,0.564453125,0.564453125,0.5634765625,0.5615234375,0.5595703125,0.55859375,0.5595703125,0.5625,0.345703125,0.3408203125,0.3330078125,0.3271484375,0.3251953125,0.33984375,0.40234375,0.498046875,0.583984375,0.623046875,0.60546875,0.55078125,0.4853515625,0.4130859375,0.3671875,0.376953125,0.4365234375,0.51171875,0.5703125,0.6123046875,0.6142578125,0.5615234375,0.470703125,0.3798828125,0.328125,0.3251953125,0.3447265625,0.3876953125,0.435546875,0.45703125,0.4375,0.38671875,0.3251953125,0.28125,0.30859375,0.4052734375,0.525390625,0.6123046875,0.6259765625,0.5703125,0.4853515625,0.3681640625,0.2587890625,0.2080078125,0.2314453125,0.3017578125,0.376953125,0.447265625,0.5,0.5087890625,0.4697265625,0.40234375,0.3466796875,0.3251953125,0.32421875,0.3525390625,0.3994140625,0.439453125,0.44921875,0.423828125,0.376953125,0.318359375,0.2392578125,0.171875,0.154296875,0.1923828125,0.259765625,0.3251953125,0.3935546875,0.48046875,0.5693359375,0.6357421875,0.6669921875,0.673828125,0.673828125,0.6650390625,0.623046875,0.5458984375,0.453125,0.3759765625,0.333984375,0.3251953125,0.318359375,0.2919921875,0.265625,0.267578125,0.3076171875,0.375,0.4482421875,0.521484375,0.5888671875,0.61328125,0.572265625,0.4814453125,0.3876953125,0.3251953125,0.2900390625,0.3154296875,0.40234375,0.509765625,0.5859375,0.5986328125,0.55078125,0.4873046875,0.421875,0.3671875,0.337890625,0.33203125,0.33203125,0.3251953125,0.3125,0.296875,0.298828125,0.3369140625,0.40625,0.484375,0.55078125,0.6181640625,0.6923828125,0.734375,0.7109375,0.62890625,0.5283203125,0.4482421875,0.37109375,0.2890625,0.2373046875,0.24609375,0.3095703125,0.388671875,0.4482421875,0.48828125,0.4873046875,0.443359375,0.3818359375,0.337890625,0.3369140625,0.376953125,0.4267578125,0.4638671875,0.4775390625,0.46484375,0.4404296875,0.4248046875,0.4287109375,0.4404296875,0.4541015625,0.4638671875,0.4638671875,0.4541015625,0.4404296875,0.4287109375,0.4306640625,0.4755859375,0.55078125,0.619140625,0.646484375,0.625,0.5703125,0.5029296875,0.4287109375,0.3798828125,0.3837890625,0.439453125,0.51171875,0.5703125,0.6083984375,0.5947265625,0.53515625,0.46484375,0.423828125,0.4384765625,0.5,0.5751953125,0.6513671875,0.6904296875,0.66796875,0.59375,0.5087890625,0.4482421875,0.408203125,0.4130859375,0.45703125,0.5087890625,0.533203125,0.5107421875,0.4482421875,0.373046875,0.306640625,0.2900390625,0.349609375,0.466796875,0.5888671875,0.673828125,0.734375,0.7509765625,0.71875,0.6630859375,0.6201171875,0.6240234375,0.673828125,0.720703125,0.708984375,0.6396484375,0.55078125,0.4912109375,0.4931640625,0.55078125,0.6142578125,0.6396484375,0.626953125,0.59765625,0.5849609375,0.6103515625,0.673828125,0.7421875,0.7880859375,0.7861328125,0.732421875,0.654296875,0.5927734375,0.5703125,0.548828125,0.490234375,0.416015625,0.361328125,0.353515625,0.3896484375,0.4482421875,0.501953125,0.525390625,0.5224609375,0.51171875,0.5185546875,0.556640625,0.6220703125,0.701171875,0.7958984375,0.8662109375,0.875,0.822265625,0.7421875,0.673828125,0.61328125,0.5693359375,0.5576171875,0.5830078125,0.62890625,0.6650390625,0.673828125,0.66796875,0.6376953125,0.5830078125,0.5185546875,0.46484375,0.4345703125,0.4287109375,0.431640625,0.44921875,0.484375,0.53125,0.576171875,0.607421875,0.6220703125,0.6220703125,0.587890625,0.5361328125,0.5009765625,0.5068359375,0.5537109375,0.6220703125,0.67578125,0.6572265625,0.5625,0.4365234375,0.341796875,0.3232421875,0.376953125,0.4521484375,0.53515625,0.6064453125,0.650390625,0.6640625,0.666015625,0.673828125,0.671875,0.62890625,0.55859375,0.4951171875,0.4716796875,0.49609375,0.55078125,0.6083984375,0.6376953125,0.6220703125,0.5634765625,0.4912109375,0.4404296875,0.4287109375,0.4384765625,0.4833984375,0.548828125,0.6025390625,0.6201171875,0.59765625,0.55078125,0.49609375,0.4375,0.41015625,0.4375,0.5146484375,0.603515625,0.673828125,0.720703125,0.7109375,0.646484375,0.5625,0.5068359375,0.5107421875,0.5703125,0.6328125,0.6552734375,0.630859375,0.5791015625,0.53515625,0.5302734375,0.5703125,0.6162109375,0.63671875,0.6142578125,0.5556640625,0.486328125,0.439453125,0.4287109375,0.4267578125,0.4140625,0.39453125,0.376953125,0.3671875,0.3681640625,0.376953125,0.4013671875,0.4716796875,0.56640625,0.6376953125,0.6552734375,0.6181640625,0.55078125,0.478515625,0.4111328125,0.37109375,0.369140625,0.39453125,0.421875,0.4287109375,0.423828125,0.40234375,0.3798828125,0.376953125,0.40234375,0.4482421875,0.5,0.5546875,0.615234375,0.6513671875,0.6376953125,0.5791015625,0.505859375,0.4482421875,0.3974609375,0.3583984375,0.3447265625,0.361328125,0.39453125,0.421875,0.4287109375,0.4345703125,0.46484375,0.5185546875,0.5830078125,0.6376953125,0.66796875,0.673828125,0.681640625,0.7177734375,0.763671875,0.7890625,0.7783203125,0.7333984375,0.673828125,0.6025390625,0.509765625,0.43359375,0.4150390625,0.462890625,0.544921875,0.6220703125,0.6787109375,0.671875,0.5966796875,0.4892578125,0.404296875,0.3837890625,0.4287109375,0.486328125,0.5185546875,0.5107421875,0.466796875,0.4111328125,0.376953125,0.376953125,0.3798828125,0.3583984375,0.326171875,0.3095703125,0.32421875,0.369140625,0.4287109375,0.48828125,0.533203125,0.544921875,0.5185546875,0.4736328125,0.4375,0.4287109375,0.41796875,0.3701171875,0.3046875,0.2607421875,0.2626953125,0.30859375,0.376953125,0.4482421875,0.5068359375,0.5283203125,0.501953125,0.4462890625,0.3974609375,0.376953125,0.36328125,0.3408203125,0.328125,0.3427734375,0.3876953125,0.4453125,0.5,0.556640625,0.623046875,0.6708984375,0.6708984375,0.623046875,0.556640625,0.5,0.4482421875,0.40234375,0.376953125,0.3798828125,0.40234375,0.423828125,0.4287109375,0.4375,0.4736328125,0.5185546875,0.544921875,0.533203125,0.48828125,0.4287109375,0.36328125,0.2978515625,0.2685546875,0.30078125,0.384765625,0.48046875,0.55078125,0.6025390625,0.611328125,0.5771484375,0.525390625,0.4912109375,0.5,0.55078125,0.62109375,0.7099609375,0.787109375,0.814453125,0.787109375,0.728515625,0.673828125,0.6240234375,0.580078125,0.5390625,0.4951171875,0.443359375,0.38671875,0.3251953125,0.2705078125,0.2490234375,0.2841796875,0.37109375,0.47265625,0.5458984375,0.5703125,0.58203125,0.5947265625,0.6044921875,0.6044921875,0.5947265625,0.58203125,0.5703125,0.5625,0.5673828125,0.5849609375,0.30859375,0.2978515625,0.2783203125,0.2626953125,0.2587890625,0.2734375,0.341796875,0.4521484375,0.5634765625,0.6318359375,0.640625,0.6044921875,0.5556640625,0.5029296875,0.4638671875,0.455078125,0.4755859375,0.5068359375,0.5302734375,0.5380859375,0.50390625,0.427734375,0.3369140625,0.2666015625,0.2421875,0.2587890625,0.291015625,0.3369140625,0.375,0.3828125,0.35546875,0.306640625,0.2587890625,0.2314453125,0.2724609375,0.3779296875,0.4990234375,0.580078125,0.5869140625,0.5302734375,0.4462890625,0.33203125,0.228515625,0.1845703125,0.2138671875,0.2880859375,0.3642578125,0.4345703125,0.490234375,0.5,0.4521484375,0.37109375,0.296875,0.2587890625,0.23828125,0.2431640625,0.275390625,0.322265625,0.3623046875,0.3759765625,0.3642578125,0.3369140625,0.2841796875,0.2236328125,0.1845703125,0.18359375,0.21484375,0.2587890625,0.314453125,0.40625,0.521484375,0.6298828125,0.703125,0.7353515625,0.740234375,0.728515625,0.6708984375,0.5634765625,0.435546875,0.328125,0.2705078125,0.2587890625,0.251953125,0.2265625,0.2041015625,0.208984375,0.2529296875,0.3212890625,0.39453125,0.4638671875,0.5107421875,0.5078125,0.44921875,0.3623046875,0.2900390625,0.2587890625,0.2548828125,0.3095703125,0.4169921875,0.53515625,0.6181640625,0.6376953125,0.6044921875,0.5556640625,0.49609375,0.4306640625,0.369140625,0.3212890625,0.2861328125,0.2587890625,0.2353515625,0.2314453125,0.26953125,0.353515625,0.4580078125,0.548828125,0.6044921875,0.6533203125,0.703125,0.7177734375,0.673828125,0.580078125,0.4755859375,0.39453125,0.322265625,0.2587890625,0.2314453125,0.25390625,0.310546875,0.3662109375,0.39453125,0.4091796875,0.408203125,0.3916015625,0.3671875,0.349609375,0.3486328125,0.3642578125,0.380859375,0.392578125,0.3994140625,0.408203125,0.4228515625,0.443359375,0.46875,0.498046875,0.533203125,0.5576171875,0.5576171875,0.533203125,0.498046875,0.46875,0.451171875,0.4658203125,0.5078125,0.5546875,0.5791015625,0.5693359375,0.5302734375,0.4833984375,0.439453125,0.416015625,0.427734375,0.46484375,0.5048828125,0.5302734375,0.5380859375,0.505859375,0.44921875,0.4033203125,0.3955078125,0.4326171875,0.5,0.5693359375,0.6201171875,0.6240234375,0.57421875,0.4931640625,0.4248046875,0.39453125,0.3857421875,0.4140625,0.4638671875,0.501953125,0.5029296875,0.4619140625,0.39453125,0.322265625,0.2705078125,0.28125,0.3720703125,0.5166015625,0.65234375,0.740234375,0.8037109375,0.830078125,0.8095703125,0.759765625,0.71484375,0.7060546875,0.740234375,0.771484375,0.74609375,0.6708984375,0.5849609375,0.53515625,0.5439453125,0.6044921875,0.66796875,0.6943359375,0.6845703125,0.66015625,0.650390625,0.6767578125,0.740234375,0.80859375,0.8505859375,0.8369140625,0.76171875,0.6572265625,0.5703125,0.5302734375,0.4951171875,0.4326171875,0.36328125,0.3203125,0.3173828125,0.349609375,0.39453125,0.4345703125,0.455078125,0.4638671875,0.4775390625,0.5107421875,0.5654296875,0.634765625,0.7138671875,0.8046875,0.8759765625,0.892578125,0.853515625,0.7919921875,0.740234375,0.6962890625,0.6630859375,0.654296875,0.673828125,0.70703125,0.7333984375,0.740234375,0.7333984375,0.701171875,0.640625,0.568359375,0.5087890625,0.4755859375,0.46875,0.4697265625,0.474609375,0.4912109375,0.5244140625,0.56640625,0.60546875,0.634765625,0.650390625,0.6279296875,0.580078125,0.5380859375,0.5322265625,0.5693359375,0.634765625,0.6884765625,0.666015625,0.5654296875,0.43359375,0.3330078125,0.310546875,0.3642578125,0.4384765625,0.521484375,0.599609375,0.6572265625,0.6923828125,0.7158203125,0.740234375,0.755859375,0.732421875,0.673828125,0.607421875,0.56640625,0.5673828125,0.6044921875,0.6455078125,0.662109375,0.640625,0.5849609375,0.521484375,0.478515625,0.46875,0.474609375,0.501953125,0.546875,0.5908203125,0.6171875,0.6201171875,0.6044921875,0.5830078125,0.5595703125,0.5517578125,0.5771484375,0.6298828125,0.6904296875,0.740234375,0.76953125,0.7353515625,0.6435546875,0.5380859375,0.470703125,0.4716796875,0.5302734375,0.5966796875,0.638671875,0.6376953125,0.599609375,0.548828125,0.521484375,0.5302734375,0.546875,0.5537109375,0.54296875,0.51953125,0.4912109375,0.4736328125,0.46875,0.462890625,0.4345703125,0.3916015625,0.3525390625,0.333984375,0.3408203125,0.3642578125,0.4052734375,0.4951171875,0.607421875,0.6904296875,0.7109375,0.6728515625,0.6044921875,0.53125,0.462890625,0.4189453125,0.4140625,0.4375,0.4619140625,0.46875,0.466796875,0.4599609375,0.4521484375,0.4521484375,0.462890625,0.48046875,0.5,0.5185546875,0.5302734375,0.5244140625,0.4970703125,0.455078125,0.41796875,0.39453125,0.3779296875,0.373046875,0.3857421875,0.4140625,0.4443359375,0.46484375,0.46875,0.4755859375,0.5087890625,0.568359375,0.640625,0.701171875,0.7333984375,0.740234375,0.74609375,0.7724609375,0.806640625,0.826171875,0.8173828125,0.7841796875,0.740234375,0.68359375,0.595703125,0.5107421875,0.4716796875,0.4951171875,0.5615234375,0.634765625,0.6943359375,0.7001953125,0.642578125,0.5498046875,0.4677734375,0.4384765625,0.46875,0.5068359375,0.51171875,0.4775390625,0.4189453125,0.3671875,0.3466796875,0.3642578125,0.3857421875,0.3916015625,0.3857421875,0.3837890625,0.3955078125,0.4267578125,0.46875,0.513671875,0.546875,0.5546875,0.53515625,0.501953125,0.4755859375,0.46875,0.45703125,0.40234375,0.3251953125,0.267578125,0.2568359375,0.296875,0.3642578125,0.4375,0.5048828125,0.5380859375,0.5185546875,0.4609375,0.3994140625,0.3642578125,0.3388671875,0.3251953125,0.3359375,0.375,0.4287109375,0.474609375,0.5,0.5205078125,0.5458984375,0.5634765625,0.5634765625,0.5458984375,0.5205078125,0.5,0.48046875,0.462890625,0.4521484375,0.4521484375,0.4599609375,0.466796875,0.46875,0.4755859375,0.501953125,0.53515625,0.5546875,0.546875,0.513671875,0.46875,0.421875,0.37890625,0.3671875,0.40234375,0.4755859375,0.55078125,0.6044921875,0.642578125,0.6494140625,0.6240234375,0.5849609375,0.5595703125,0.56640625,0.6044921875,0.654296875,0.71484375,0.767578125,0.7919921875,0.78515625,0.76171875,0.740234375,0.716796875,0.6708984375,0.59375,0.494140625,0.392578125,0.3115234375,0.2587890625,0.2177734375,0.2021484375,0.234375,0.3134765625,0.4130859375,0.4912109375,0.5302734375,0.5595703125,0.59375,0.6181640625,0.6181640625,0.59375,0.5595703125,0.5302734375,0.5107421875,0.51953125,0.5576171875,0.3447265625,0.3251953125,0.2919921875,0.265625,0.2587890625,0.271484375,0.33203125,0.435546875,0.546875,0.6259765625,0.65234375,0.634765625,0.6083984375,0.580078125,0.5517578125,0.52734375,0.5068359375,0.4873046875,0.46875,0.439453125,0.3740234375,0.2900390625,0.22265625,0.1982421875,0.216796875,0.2587890625,0.306640625,0.35546875,0.3828125,0.375,0.3369140625,0.291015625,0.2587890625,0.248046875,0.2958984375,0.3916015625,0.48828125,0.5419921875,0.5302734375,0.46875,0.3876953125,0.2841796875,0.201171875,0.181640625,0.2314453125,0.31640625,0.39453125,0.4677734375,0.529296875,0.546875,0.5,0.4072265625,0.31640625,0.2587890625,0.2158203125,0.1875,0.1953125,0.2421875,0.3095703125,0.3662109375,0.39453125,0.40625,0.3876953125,0.341796875,0.287109375,0.2470703125,0.2392578125,0.2587890625,0.2958984375,0.373046875,0.4853515625,0.6015625,0.689453125,0.732421875,0.740234375,0.728515625,0.6708984375,0.5634765625,0.435546875,0.328125,0.2705078125,0.2587890625,0.2509765625,0.22265625,0.1923828125,0.189453125,0.2265625,0.2919921875,0.3642578125,0.4287109375,0.45703125,0.4326171875,0.3671875,0.2939453125,0.2529296875,0.2587890625,0.2900390625,0.3642578125,0.4716796875,0.57421875,0.6396484375,0.654296875,0.634765625,0.6064453125,0.568359375,0.513671875,0.4443359375,0.3720703125,0.30859375,0.2587890625,0.2197265625,0.216796875,0.2734375,0.3798828125,0.5029296875,0.5947265625,0.634765625,0.6640625,0.6923828125,0.6904296875,0.6376953125,0.544921875,0.443359375,0.3642578125,0.296875,0.255859375,0.2568359375,0.294921875,0.3447265625,0.3720703125,0.3642578125,0.3486328125,0.349609375,0.3671875,0.3916015625,0.408203125,0.4091796875,0.39453125,0.373046875,0.3486328125,0.341796875,0.3662109375,0.4189453125,0.4794921875,0.5302734375,0.580078125,0.6396484375,0.681640625,0.681640625,0.6396484375,0.580078125,0.5302734375,0.48828125,0.462890625,0.4609375,0.474609375,0.490234375,0.490234375,0.46875,0.4462890625,0.4375,0.447265625,0.4658203125,0.482421875,0.484375,0.46875,0.44140625,0.3896484375,0.33984375,0.3251953125,0.359375,0.4267578125,0.5,0.5634765625,0.5888671875,0.5576171875,0.4833984375,0.4033203125,0.3583984375,0.3642578125,0.392578125,0.4482421875,0.5048828125,0.52734375,0.5,0.4365234375,0.3642578125,0.29296875,0.244140625,0.26171875,0.361328125,0.51171875,0.6513671875,0.740234375,0.806640625,0.8427734375,0.8369140625,0.794921875,0.7470703125,0.724609375,0.740234375,0.7529296875,0.7177734375,0.646484375,0.5771484375,0.546875,0.5712890625,0.634765625,0.697265625,0.720703125,0.7041015625,0.6708984375,0.654296875,0.677734375,0.740234375,0.8095703125,0.85546875,0.8427734375,0.759765625,0.6376953125,0.529296875,0.46875,0.4189453125,0.357421875,0.306640625,0.2861328125,0.3017578125,0.3349609375,0.3642578125,0.3857421875,0.392578125,0.3974609375,0.4189453125,0.466796875,0.533203125,0.6044921875,0.681640625,0.765625,0.828125,0.8447265625,0.8173828125,0.7724609375,0.740234375,0.71484375,0.6953125,0.6904296875,0.701171875,0.720703125,0.736328125,0.740234375,0.7353515625,0.7099609375,0.6630859375,0.607421875,0.560546875,0.53515625,0.5302734375,0.525390625,0.5078125,0.4912109375,0.4912109375,0.5166015625,0.55859375,0.6044921875,0.638671875,0.6298828125,0.5849609375,0.53515625,0.5146484375,0.541015625,0.6044921875,0.6591796875,0.64453125,0.5576171875,0.44140625,0.3544921875,0.33984375,0.39453125,0.4658203125,0.5341796875,0.5908203125,0.6328125,0.6640625,0.6982421875,0.740234375,0.7783203125,0.783203125,0.748046875,0.6904296875,0.6376953125,0.6181640625,0.634765625,0.658203125,0.6650390625,0.646484375,0.607421875,0.564453125,0.5361328125,0.5302734375,0.529296875,0.53125,0.541015625,0.560546875,0.587890625,0.6142578125,0.634765625,0.65234375,0.6630859375,0.6708984375,0.6796875,0.693359375,0.71484375,0.740234375,0.7490234375,0.6943359375,0.5849609375,0.4716796875,0.4052734375,0.4091796875,0.46875,0.5419921875,0.60546875,0.6328125,0.6103515625,0.552734375,0.498046875,0.46875,0.4521484375,0.4453125,0.4560546875,0.4794921875,0.5078125,0.525390625,0.5302734375,0.5205078125,0.4775390625,0.4140625,0.3583984375,0.3369140625,0.353515625,0.39453125,0.4541015625,0.55859375,0.673828125,0.748046875,0.7548828125,0.705078125,0.634765625,0.5625,0.498046875,0.4609375,0.4638671875,0.4931640625,0.5224609375,0.5302734375,0.5322265625,0.5390625,0.546875,0.546875,0.5361328125,0.5185546875,0.5,0.4755859375,0.43359375,0.3857421875,0.3505859375,0.337890625,0.345703125,0.3642578125,0.38671875,0.419921875,0.4609375,0.4970703125,0.51953125,0.5283203125,0.5302734375,0.53515625,0.560546875,0.607421875,0.6630859375,0.7099609375,0.7353515625,0.740234375,0.744140625,0.7587890625,0.7783203125,0.7900390625,0.78515625,0.765625,0.740234375,0.701171875,0.6240234375,0.53515625,0.48046875,0.4833984375,0.5341796875,0.6044921875,0.6689453125,0.697265625,0.673828125,0.6123046875,0.5478515625,0.515625,0.5302734375,0.5458984375,0.5224609375,0.4638671875,0.3974609375,0.35546875,0.357421875,0.39453125,0.4375,0.47265625,0.4912109375,0.4970703125,0.498046875,0.5078125,0.5302734375,0.5556640625,0.5751953125,0.580078125,0.568359375,0.548828125,0.533203125,0.5302734375,0.5166015625,0.458984375,0.375,0.30859375,0.2919921875,0.328125,0.39453125,0.470703125,0.548828125,0.5966796875,0.5849609375,0.5234375,0.4482421875,0.39453125,0.35546875,0.345703125,0.375,0.4306640625,0.484375,0.5087890625,0.5,0.478515625,0.453125,0.435546875,0.435546875,0.453125,0.478515625,0.5,0.5185546875,0.5361328125,0.546875,0.546875,0.5390625,0.5322265625,0.5302734375,0.533203125,0.548828125,0.568359375,0.580078125,0.5751953125,0.5556640625,0.5302734375,0.5029296875,0.4814453125,0.48046875,0.5078125,0.5556640625,0.603515625,0.634765625,0.6572265625,0.6611328125,0.646484375,0.6240234375,0.609375,0.61328125,0.634765625,0.66015625,0.681640625,0.6953125,0.7041015625,0.7119140625,0.72265625,0.740234375,0.7509765625,0.7216796875,0.6376953125,0.513671875,0.38671875,0.298828125,0.2587890625,0.2314453125,0.2119140625,0.2197265625,0.267578125,0.3427734375,0.4169921875,0.46875,0.51953125,0.5791015625,0.62109375,0.62109375,0.5791015625,0.51953125,0.46875,0.4345703125,0.4443359375,0.5,0.44140625,0.416015625,0.3701171875,0.333984375,0.3251953125,0.333984375,0.3759765625,0.4501953125,0.5322265625,0.5966796875,0.625,0.6220703125,0.6142578125,0.61328125,0.60546875,0.5810546875,0.5361328125,0.4814453125,0.4287109375,0.3681640625,0.283203125,0.205078125,0.1728515625,0.19921875,0.26171875,0.3251953125,0.38671875,0.4375,0.45703125,0.435546875,0.3876953125,0.3447265625,0.3251953125,0.328125,0.375,0.44921875,0.5107421875,0.5283203125,0.4951171875,0.4287109375,0.349609375,0.2578125,0.1953125,0.2001953125,0.271484375,0.3671875,0.4482421875,0.5234375,0.5966796875,0.6279296875,0.591796875,0.5,0.3984375,0.3251953125,0.26171875,0.2021484375,0.1796875,0.216796875,0.298828125,0.38671875,0.4482421875,0.4931640625,0.509765625,0.484375,0.42578125,0.3623046875,0.3251953125,0.3251953125,0.34375,0.3935546875,0.4736328125,0.560546875,0.630859375,0.6669921875,0.673828125,0.6650390625,0.623046875,0.5458984375,0.453125,0.3759765625,0.333984375,0.3251953125,0.31640625,0.28125,0.2392578125,0.22265625,0.248046875,0.306640625,0.376953125,0.4384765625,0.455078125,0.4189453125,0.353515625,0.2978515625,0.287109375,0.3251953125,0.3837890625,0.462890625,0.5458984375,0.607421875,0.6328125,0.6318359375,0.6220703125,0.61328125,0.60546875,0.5830078125,0.53515625,0.4658203125,0.390625,0.3251953125,0.271484375,0.2568359375,0.3037109375,0.4033203125,0.5166015625,0.595703125,0.6220703125,0.6357421875,0.6552734375,0.65625,0.6181640625,0.5419921875,0.4541015625,0.376953125,0.314453125,0.2919921875,0.31640625,0.3681640625,0.412109375,0.4169921875,0.376953125,0.3369140625,0.337890625,0.3818359375,0.443359375,0.4873046875,0.48828125,0.4482421875,0.392578125,0.3349609375,0.306640625,0.3349609375,0.4111328125,0.5,0.5703125,0.638671875,0.71875,0.775390625,0.775390625,0.71875,0.638671875,0.5703125,0.5087890625,0.4521484375,0.41796875,0.41015625,0.4228515625,0.43359375,0.4287109375,0.42578125,0.4482421875,0.484375,0.509765625,0.5087890625,0.4775390625,0.4287109375,0.37109375,0.30078125,0.25390625,0.263671875,0.330078125,0.4208984375,0.5,0.5595703125,0.5673828125,0.515625,0.4306640625,0.359375,0.3408203125,0.376953125,0.4365234375,0.515625,0.5791015625,0.587890625,0.5361328125,0.4541015625,0.376953125,0.3046875,0.24609375,0.24609375,0.32421875,0.45703125,0.5869140625,0.673828125,0.7421875,0.7880859375,0.7939453125,0.7587890625,0.70703125,0.6728515625,0.673828125,0.671875,0.6318359375,0.5693359375,0.5205078125,0.5146484375,0.5546875,0.6220703125,0.6826171875,0.69921875,0.6708984375,0.6240234375,0.595703125,0.6123046875,0.673828125,0.74609375,0.8046875,0.80859375,0.740234375,0.6201171875,0.50390625,0.4287109375,0.3662109375,0.3095703125,0.279296875,0.287109375,0.3232421875,0.3603515625,0.376953125,0.3818359375,0.3681640625,0.35546875,0.3671875,0.4111328125,0.478515625,0.55078125,0.625,0.6982421875,0.7470703125,0.7529296875,0.724609375,0.6904296875,0.673828125,0.6630859375,0.6552734375,0.6533203125,0.658203125,0.666015625,0.671875,0.673828125,0.6708984375,0.658203125,0.6357421875,0.6083984375,0.5849609375,0.572265625,0.5703125,0.5615234375,0.5234375,0.4736328125,0.4423828125,0.44921875,0.4921875,0.55078125,0.6005859375,0.6044921875,0.5615234375,0.505859375,0.4736328125,0.490234375,0.55078125,0.6083984375,0.6064453125,0.5439453125,0.455078125,0.392578125,0.390625,0.4482421875,0.5146484375,0.55859375,0.576171875,0.580078125,0.587890625,0.6181640625,0.673828125,0.73046875,0.7626953125,0.7548828125,0.7109375,0.6552734375,0.62109375,0.6220703125,0.630859375,0.6318359375,0.6220703125,0.6044921875,0.5849609375,0.572265625,0.5703125,0.564453125,0.541015625,0.5146484375,0.5068359375,0.52734375,0.5712890625,0.6220703125,0.6708984375,0.708984375,0.7216796875,0.708984375,0.6845703125,0.6689453125,0.673828125,0.66796875,0.6044921875,0.498046875,0.3984375,0.349609375,0.3662109375,0.4287109375,0.505859375,0.587890625,0.638671875,0.6298828125,0.5673828125,0.48828125,0.4287109375,0.3828125,0.3623046875,0.384765625,0.443359375,0.5126953125,0.5595703125,0.5703125,0.55859375,0.5078125,0.435546875,0.376953125,0.361328125,0.390625,0.4482421875,0.521484375,0.62890625,0.732421875,0.783203125,0.7626953125,0.6962890625,0.6220703125,0.55078125,0.4921875,0.466796875,0.484375,0.525390625,0.5615234375,0.5703125,0.5751953125,0.5966796875,0.619140625,0.6220703125,0.5966796875,0.55078125,0.5,0.4404296875,0.3583984375,0.283203125,0.2509765625,0.271484375,0.3232421875,0.376953125,0.431640625,0.4921875,0.544921875,0.57421875,0.5791015625,0.572265625,0.5703125,0.572265625,0.5849609375,0.6083984375,0.6357421875,0.658203125,0.6708984375,0.673828125,0.6748046875,0.6806640625,0.6884765625,0.693359375,0.69140625,0.68359375,0.673828125,0.650390625,0.5859375,0.50390625,0.4453125,0.439453125,0.482421875,0.55078125,0.6201171875,0.6689453125,0.6787109375,0.6484375,0.6015625,0.5693359375,0.5703125,0.568359375,0.525390625,0.455078125,0.392578125,0.3681640625,0.392578125,0.4482421875,0.5087890625,0.5625,0.59375,0.595703125,0.5791015625,0.5654296875,0.5703125,0.580078125,0.587890625,0.58984375,0.5849609375,0.5771484375,0.5712890625,0.5703125,0.5576171875,0.5009765625,0.419921875,0.357421875,0.34375,0.380859375,0.4482421875,0.5263671875,0.6142578125,0.6728515625,0.6689453125,0.6044921875,0.517578125,0.4482421875,0.396484375,0.3876953125,0.42578125,0.4873046875,0.5341796875,0.5390625,0.5,0.4423828125,0.3759765625,0.328125,0.328125,0.3759765625,0.4423828125,0.5,0.55078125,0.5966796875,0.6220703125,0.619140625,0.5966796875,0.5751953125,0.5703125,0.5712890625,0.5771484375,0.5849609375,0.58984375,0.587890625,0.580078125,0.5703125,0.5595703125,0.552734375,0.5546875,0.568359375,0.5888671875,0.609375,0.6220703125,0.6298828125,0.6318359375,0.6259765625,0.6171875,0.611328125,0.61328125,0.6220703125,0.6259765625,0.6103515625,0.5859375,0.5732421875,0.5869140625,0.6240234375,0.673828125,0.7158203125,0.7177734375,0.6572265625,0.5478515625,0.4306640625,0.3505859375,0.3251953125,0.3095703125,0.2783203125,0.25390625,0.259765625,0.3017578125,0.365234375,0.4287109375,0.4970703125,0.578125,0.634765625,0.634765625,0.578125,0.4970703125,0.4287109375,0.380859375,0.38671875,0.4482421875,0.5517578125,0.5224609375,0.470703125,0.4296875,0.419921875,0.423828125,0.4423828125,0.4775390625,0.517578125,0.55078125,0.5673828125,0.5693359375,0.57421875,0.5966796875,0.619140625,0.6142578125,0.57421875,0.5087890625,0.439453125,0.36328125,0.26953125,0.2001953125,0.1943359375,0.25390625,0.3427734375,0.419921875,0.48828125,0.5400390625,0.5546875,0.525390625,0.47265625,0.4306640625,0.419921875,0.4287109375,0.4716796875,0.529296875,0.5654296875,0.5576171875,0.5087890625,0.439453125,0.361328125,0.2734375,0.2177734375,0.23046875,0.30859375,0.408203125,0.4892578125,0.5673828125,0.65234375,0.7021484375,0.6826171875,0.6005859375,0.5,0.419921875,0.34375,0.26171875,0.212890625,0.232421875,0.3125,0.412109375,0.4892578125,0.5546875,0.5947265625,0.5908203125,0.54296875,0.4765625,0.4296875,0.419921875,0.4248046875,0.4453125,0.4814453125,0.5234375,0.5576171875,0.576171875,0.5791015625,0.5751953125,0.556640625,0.5205078125,0.478515625,0.4423828125,0.423828125,0.419921875,0.41015625,0.369140625,0.318359375,0.291015625,0.3056640625,0.359375,0.4296875,0.490234375,0.5009765625,0.4609375,0.3994140625,0.3564453125,0.36328125,0.419921875,0.490234375,0.5595703125,0.6064453125,0.6171875,0.599609375,0.5771484375,0.5693359375,0.57421875,0.595703125,0.6142578125,0.6044921875,0.5595703125,0.4912109375,0.419921875,0.3544921875,0.3212890625,0.33984375,0.408203125,0.494140625,0.5546875,0.5693359375,0.5771484375,0.603515625,0.6259765625,0.619140625,0.5732421875,0.5029296875,0.4296875,0.369140625,0.3564453125,0.39453125,0.4541015625,0.494140625,0.486328125,0.4296875,0.3740234375,0.37109375,0.4228515625,0.49609375,0.5478515625,0.544921875,0.4892578125,0.4150390625,0.3330078125,0.283203125,0.30078125,0.380859375,0.48046875,0.5595703125,0.63671875,0.7294921875,0.7939453125,0.7939453125,0.7294921875,0.63671875,0.5595703125,0.48828125,0.423828125,0.3857421875,0.3837890625,0.4091796875,0.4345703125,0.439453125,0.447265625,0.486328125,0.537109375,0.56640625,0.5546875,0.505859375,0.439453125,0.3642578125,0.2802734375,0.2275390625,0.2421875,0.3193359375,0.4189453125,0.5,0.55859375,0.5625,0.5087890625,0.431640625,0.375,0.375,0.4296875,0.505859375,0.59765625,0.6640625,0.6650390625,0.6015625,0.5087890625,0.4296875,0.353515625,0.27734375,0.244140625,0.283203125,0.3837890625,0.49609375,0.5791015625,0.6484375,0.7001953125,0.7119140625,0.681640625,0.6279296875,0.587890625,0.5791015625,0.5703125,0.529296875,0.4736328125,0.439453125,0.4501953125,0.5,0.5693359375,0.62890625,0.6416015625,0.603515625,0.544921875,0.5068359375,0.51953125,0.5791015625,0.6552734375,0.7314453125,0.765625,0.728515625,0.630859375,0.521484375,0.439453125,0.37109375,0.3173828125,0.3017578125,0.3271484375,0.3779296875,0.4189453125,0.4296875,0.4228515625,0.392578125,0.357421875,0.3466796875,0.376953125,0.4384765625,0.509765625,0.5810546875,0.642578125,0.6728515625,0.662109375,0.6240234375,0.5888671875,0.5791015625,0.5771484375,0.576171875,0.576171875,0.5771484375,0.578125,0.5791015625,0.5791015625,0.5791015625,0.576171875,0.572265625,0.56640625,0.5625,0.5595703125,0.5595703125,0.548828125,0.501953125,0.4384765625,0.3955078125,0.3974609375,0.4423828125,0.509765625,0.5673828125,0.5771484375,0.537109375,0.4765625,0.4375,0.44921875,0.509765625,0.568359375,0.5771484375,0.5322265625,0.466796875,0.421875,0.4306640625,0.4892578125,0.5517578125,0.57421875,0.5556640625,0.51953125,0.4990234375,0.5185546875,0.5791015625,0.646484375,0.6962890625,0.705078125,0.6728515625,0.6181640625,0.5771484375,0.5693359375,0.5703125,0.5703125,0.568359375,0.5654296875,0.5615234375,0.5595703125,0.5595703125,0.5498046875,0.51171875,0.462890625,0.4365234375,0.451171875,0.5029296875,0.5693359375,0.6357421875,0.685546875,0.69921875,0.6728515625,0.6240234375,0.5869140625,0.5791015625,0.5673828125,0.509765625,0.42578125,0.3583984375,0.3388671875,0.373046875,0.439453125,0.5185546875,0.611328125,0.67578125,0.673828125,0.607421875,0.5166015625,0.439453125,0.3759765625,0.3408203125,0.3544921875,0.4150390625,0.4931640625,0.546875,0.5595703125,0.5478515625,0.4990234375,0.4306640625,0.3828125,0.3798828125,0.4228515625,0.4892578125,0.5693359375,0.671875,0.755859375,0.7783203125,0.73046875,0.646484375,0.5693359375,0.4990234375,0.4453125,0.4296875,0.4580078125,0.5087890625,0.5498046875,0.5595703125,0.5673828125,0.599609375,0.6376953125,0.650390625,0.625,0.5673828125,0.5,0.421875,0.3232421875,0.244140625,0.2255859375,0.2744140625,0.35546875,0.4296875,0.4990234375,0.5654296875,0.6064453125,0.6123046875,0.58984375,0.5654296875,0.5595703125,0.5595703125,0.5625,0.56640625,0.572265625,0.576171875,0.5791015625,0.5791015625,0.5791015625,0.580078125,0.58203125,0.58203125,0.58203125,0.5810546875,0.5791015625,0.56640625,0.5146484375,0.4453125,0.3974609375,0.396484375,0.44140625,0.509765625,0.580078125,0.6376953125,0.6611328125,0.642578125,0.6005859375,0.56640625,0.5595703125,0.5498046875,0.501953125,0.4345703125,0.3857421875,0.3818359375,0.4228515625,0.4892578125,0.55859375,0.6181640625,0.6455078125,0.6328125,0.5966796875,0.5654296875,0.5595703125,0.560546875,0.5625,0.5625,0.5615234375,0.560546875,0.5595703125,0.5595703125,0.5478515625,0.4970703125,0.4287109375,0.3798828125,0.3779296875,0.421875,0.4892578125,0.5693359375,0.662109375,0.7275390625,0.7265625,0.66015625,0.5673828125,0.4892578125,0.4306640625,0.4208984375,0.4609375,0.5224609375,0.564453125,0.5556640625,0.5,0.423828125,0.333984375,0.2705078125,0.2705078125,0.333984375,0.423828125,0.5,0.5673828125,0.625,0.650390625,0.6376953125,0.599609375,0.5673828125,0.5595703125,0.5595703125,0.560546875,0.5615234375,0.5625,0.5625,0.560546875,0.5595703125,0.5576171875,0.556640625,0.5576171875,0.5595703125,0.5634765625,0.5673828125,0.5693359375,0.5703125,0.5712890625,0.5703125,0.568359375,0.5673828125,0.568359375,0.5693359375,0.5615234375,0.5244140625,0.4755859375,0.44921875,0.462890625,0.5126953125,0.5791015625,0.642578125,0.673828125,0.65234375,0.58203125,0.4951171875,0.4345703125,0.419921875,0.4091796875,0.369140625,0.3212890625,0.2978515625,0.31640625,0.37109375,0.439453125,0.517578125,0.609375,0.6748046875,0.6748046875,0.609375,0.517578125,0.439453125,0.3828125,0.380859375,0.435546875,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.69921875,0.6728515625,0.6240234375,0.5869140625,0.5791015625,0.5771484375,0.5576171875,0.521484375,0.4775390625,0.44140625,0.421875,0.419921875,0.4345703125,0.49609375,0.583984375,0.6552734375,0.6767578125,0.6435546875,0.5791015625,0.5009765625,0.408203125,0.341796875,0.3408203125,0.40625,0.5,0.5791015625,0.6484375,0.7001953125,0.7099609375,0.6748046875,0.6171875,0.5712890625,0.5595703125,0.568359375,0.609375,0.6650390625,0.6982421875,0.6884765625,0.638671875,0.5693359375,0.48828125,0.38671875,0.3046875,0.2841796875,0.3330078125,0.4150390625,0.4892578125,0.568359375,0.669921875,0.75390625,0.7783203125,0.7353515625,0.6552734375,0.5791015625,0.5,0.3994140625,0.3173828125,0.296875,0.34375,0.4248046875,0.5,0.5673828125,0.623046875,0.6484375,0.634765625,0.5966796875,0.5654296875,0.5595703125,0.5576171875,0.5419921875,0.5126953125,0.4765625,0.447265625,0.431640625,0.4296875,0.435546875,0.455078125,0.490234375,0.5302734375,0.5615234375,0.5771484375,0.5791015625,0.568359375,0.5263671875,0.4736328125,0.4443359375,0.458984375,0.5107421875,0.5791015625,0.6376953125,0.6494140625,0.611328125,0.552734375,0.513671875,0.5224609375,0.5791015625,0.642578125,0.67578125,0.6572265625,0.5908203125,0.5087890625,0.4521484375,0.439453125,0.4521484375,0.5078125,0.5859375,0.6474609375,0.6611328125,0.625,0.5595703125,0.48828125,0.4228515625,0.3818359375,0.3779296875,0.400390625,0.4248046875,0.4296875,0.4404296875,0.49609375,0.5771484375,0.6416015625,0.6591796875,0.6240234375,0.5595703125,0.501953125,0.494140625,0.5390625,0.6044921875,0.6484375,0.638671875,0.5791015625,0.5166015625,0.4931640625,0.5107421875,0.546875,0.5673828125,0.5478515625,0.4892578125,0.412109375,0.3125,0.2333984375,0.2158203125,0.2666015625,0.3515625,0.4296875,0.5087890625,0.6015625,0.6650390625,0.6640625,0.59765625,0.505859375,0.4296875,0.3662109375,0.3310546875,0.345703125,0.408203125,0.48828125,0.544921875,0.5595703125,0.5712890625,0.615234375,0.6728515625,0.70703125,0.697265625,0.6474609375,0.5791015625,0.4990234375,0.396484375,0.3115234375,0.287109375,0.3330078125,0.4140625,0.4892578125,0.5498046875,0.5712890625,0.5517578125,0.5166015625,0.4970703125,0.5185546875,0.5791015625,0.65625,0.74609375,0.8076171875,0.8046875,0.7373046875,0.6455078125,0.5693359375,0.490234375,0.3837890625,0.2900390625,0.2548828125,0.2900390625,0.365234375,0.439453125,0.5078125,0.55859375,0.5703125,0.5390625,0.484375,0.44140625,0.4296875,0.41796875,0.3759765625,0.322265625,0.2919921875,0.3037109375,0.353515625,0.419921875,0.4775390625,0.490234375,0.4560546875,0.4033203125,0.369140625,0.3818359375,0.439453125,0.5185546875,0.6240234375,0.7158203125,0.748046875,0.7109375,0.6337890625,0.5595703125,0.4912109375,0.4423828125,0.43359375,0.4658203125,0.5205078125,0.560546875,0.5693359375,0.5556640625,0.5029296875,0.431640625,0.380859375,0.3779296875,0.421875,0.4892578125,0.5576171875,0.6005859375,0.5966796875,0.5478515625,0.478515625,0.4296875,0.419921875,0.421875,0.4228515625,0.4228515625,0.421875,0.4208984375,0.419921875,0.419921875,0.419921875,0.419921875,0.419921875,0.419921875,0.419921875,0.419921875,0.419921875,0.412109375,0.37890625,0.3427734375,0.33203125,0.3603515625,0.419921875,0.4892578125,0.548828125,0.5615234375,0.5263671875,0.47265625,0.4375,0.4501953125,0.509765625,0.5673828125,0.5771484375,0.537109375,0.4765625,0.4375,0.44921875,0.509765625,0.5673828125,0.568359375,0.5107421875,0.4287109375,0.37109375,0.3720703125,0.4296875,0.5,0.552734375,0.5673828125,0.5380859375,0.484375,0.44140625,0.4296875,0.427734375,0.4267578125,0.42578125,0.423828125,0.4228515625,0.421875,0.419921875,0.408203125,0.3662109375,0.3154296875,0.2880859375,0.3046875,0.359375,0.4296875,0.5,0.5517578125,0.564453125,0.53125,0.4755859375,0.431640625,0.419921875,0.412109375,0.3876953125,0.3681640625,0.3759765625,0.421875,0.4892578125,0.5595703125,0.6357421875,0.7294921875,0.798828125,0.8046875,0.7451171875,0.65625,0.5791015625,0.5078125,0.439453125,0.3955078125,0.388671875,0.4091796875,0.43359375,0.439453125,0.431640625,0.3984375,0.3603515625,0.3486328125,0.376953125,0.4384765625,0.509765625,0.5869140625,0.6689453125,0.71484375,0.6904296875,0.603515625,0.5,0.419921875,0.3515625,0.30078125,0.2890625,0.3203125,0.375,0.41796875,0.4296875,0.443359375,0.494140625,0.5634765625,0.611328125,0.61328125,0.568359375,0.5,0.421875,0.3369140625,0.2880859375,0.3095703125,0.3935546875,0.498046875,0.5791015625,0.6455078125,0.681640625,0.6630859375,0.595703125,0.51171875,0.453125,0.439453125,0.439453125,0.435546875,0.4296875,0.423828125,0.419921875,0.4189453125,0.419921875,0.4208984375,0.421875,0.4208984375,0.4189453125,0.41796875,0.41796875,0.419921875,0.4130859375,0.3818359375,0.345703125,0.333984375,0.361328125,0.419921875,0.4892578125,0.556640625,0.6015625,0.6025390625,0.5576171875,0.4921875,0.4423828125,0.4296875,0.419921875,0.3857421875,0.3466796875,0.3359375,0.3662109375,0.427734375,0.5,0.5673828125,0.609375,0.603515625,0.55078125,0.48046875,0.4296875,0.419921875,0.421875,0.42578125,0.4306640625,0.4345703125,0.4384765625,0.439453125,0.439453125,0.431640625,0.3974609375,0.357421875,0.341796875,0.3662109375,0.421875,0.4892578125,0.56640625,0.6591796875,0.7275390625,0.7314453125,0.669921875,0.578125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5673828125,0.611328125,0.6083984375,0.5576171875,0.4853515625,0.43359375,0.419921875,0.4189453125,0.419921875,0.423828125,0.4296875,0.435546875,0.439453125,0.439453125,0.439453125,0.439453125,0.4384765625,0.4365234375,0.43359375,0.431640625,0.4296875,0.427734375,0.423828125,0.4208984375,0.41796875,0.4169921875,0.41796875,0.419921875,0.412109375,0.3720703125,0.3203125,0.2900390625,0.3017578125,0.3515625,0.419921875,0.4912109375,0.5615234375,0.609375,0.6201171875,0.6005859375,0.5771484375,0.5693359375,0.5576171875,0.515625,0.4619140625,0.431640625,0.443359375,0.4931640625,0.5595703125,0.6357421875,0.7275390625,0.7939453125,0.794921875,0.73046875,0.638671875,0.5595703125,0.4970703125,0.4765625,0.498046875,0.7216796875,0.708984375,0.6845703125,0.6689453125,0.673828125,0.673828125,0.6328125,0.5498046875,0.44921875,0.3662109375,0.3251953125,0.3251953125,0.3525390625,0.4375,0.5634765625,0.6767578125,0.7353515625,0.7265625,0.673828125,0.603515625,0.517578125,0.4521484375,0.4482421875,0.5068359375,0.5947265625,0.673828125,0.7421875,0.7880859375,0.7861328125,0.732421875,0.654296875,0.5927734375,0.5703125,0.5712890625,0.611328125,0.6748046875,0.72265625,0.728515625,0.6884765625,0.6220703125,0.541015625,0.4375,0.34765625,0.310546875,0.3349609375,0.392578125,0.4482421875,0.5107421875,0.611328125,0.716796875,0.78125,0.7822265625,0.7353515625,0.673828125,0.6025390625,0.5068359375,0.4189453125,0.376953125,0.3935546875,0.4453125,0.5,0.548828125,0.5888671875,0.6064453125,0.599609375,0.5791015625,0.5654296875,0.5703125,0.57421875,0.552734375,0.50390625,0.443359375,0.39453125,0.373046875,0.376953125,0.3955078125,0.4453125,0.521484375,0.599609375,0.6552734375,0.677734375,0.673828125,0.654296875,0.611328125,0.5634765625,0.5419921875,0.5615234375,0.6123046875,0.673828125,0.7255859375,0.7412109375,0.71484375,0.6669921875,0.630859375,0.6328125,0.673828125,0.716796875,0.724609375,0.6796875,0.59375,0.5009765625,0.44140625,0.4287109375,0.4404296875,0.4931640625,0.5703125,0.6337890625,0.654296875,0.6259765625,0.5703125,0.5068359375,0.4453125,0.3984375,0.3779296875,0.37890625,0.3837890625,0.376953125,0.3798828125,0.431640625,0.5185546875,0.599609375,0.6396484375,0.6240234375,0.5703125,0.5224609375,0.5322265625,0.59765625,0.6806640625,0.736328125,0.732421875,0.673828125,0.60546875,0.5556640625,0.529296875,0.521484375,0.515625,0.4931640625,0.4482421875,0.38671875,0.298828125,0.220703125,0.193359375,0.228515625,0.3017578125,0.376953125,0.4541015625,0.5361328125,0.587890625,0.5791015625,0.515625,0.4365234375,0.376953125,0.3310546875,0.310546875,0.3369140625,0.4052734375,0.4873046875,0.548828125,0.5703125,0.5908203125,0.646484375,0.7177734375,0.7666015625,0.7705078125,0.732421875,0.673828125,0.599609375,0.4921875,0.384765625,0.3251953125,0.33203125,0.384765625,0.4482421875,0.50390625,0.541015625,0.556640625,0.564453125,0.580078125,0.6171875,0.673828125,0.7392578125,0.806640625,0.8447265625,0.8271484375,0.759765625,0.6806640625,0.6220703125,0.5595703125,0.462890625,0.3642578125,0.3095703125,0.3154296875,0.3671875,0.4287109375,0.4892578125,0.533203125,0.541015625,0.505859375,0.4462890625,0.3974609375,0.376953125,0.359375,0.3154296875,0.263671875,0.2333984375,0.2392578125,0.275390625,0.3251953125,0.3701171875,0.390625,0.384765625,0.369140625,0.3642578125,0.3837890625,0.4287109375,0.490234375,0.580078125,0.6669921875,0.708984375,0.6904296875,0.6337890625,0.5703125,0.5126953125,0.48046875,0.48828125,0.5322265625,0.587890625,0.6220703125,0.6220703125,0.59765625,0.52734375,0.4326171875,0.361328125,0.34375,0.380859375,0.4482421875,0.513671875,0.544921875,0.5234375,0.4560546875,0.376953125,0.328125,0.3251953125,0.3359375,0.34375,0.345703125,0.3408203125,0.3330078125,0.3271484375,0.3251953125,0.3251953125,0.3251953125,0.3251953125,0.3251953125,0.3251953125,0.3251953125,0.3251953125,0.3203125,0.298828125,0.2802734375,0.287109375,0.3251953125,0.3857421875,0.4482421875,0.5009765625,0.5234375,0.51171875,0.4873046875,0.4755859375,0.498046875,0.55078125,0.6005859375,0.6044921875,0.5615234375,0.505859375,0.4736328125,0.490234375,0.55078125,0.607421875,0.5966796875,0.517578125,0.4111328125,0.33203125,0.3212890625,0.376953125,0.4482421875,0.5068359375,0.5283203125,0.501953125,0.4462890625,0.3974609375,0.376953125,0.3671875,0.359375,0.353515625,0.3486328125,0.34375,0.3359375,0.3251953125,0.306640625,0.263671875,0.2197265625,0.2080078125,0.240234375,0.3046875,0.376953125,0.447265625,0.5,0.5087890625,0.4697265625,0.40234375,0.3466796875,0.3251953125,0.314453125,0.306640625,0.3212890625,0.369140625,0.4404296875,0.513671875,0.5703125,0.630859375,0.7158203125,0.7939453125,0.826171875,0.7998046875,0.7373046875,0.673828125,0.6083984375,0.533203125,0.4677734375,0.4287109375,0.419921875,0.42578125,0.4287109375,0.421875,0.39453125,0.369140625,0.37109375,0.4111328125,0.478515625,0.55078125,0.6240234375,0.6845703125,0.693359375,0.6298828125,0.5146484375,0.400390625,0.3251953125,0.265625,0.220703125,0.2138671875,0.2490234375,0.3076171875,0.357421875,0.376953125,0.400390625,0.46484375,0.546875,0.60546875,0.611328125,0.568359375,0.5,0.423828125,0.3505859375,0.3232421875,0.369140625,0.474609375,0.58984375,0.673828125,0.7373046875,0.759765625,0.71875,0.6240234375,0.515625,0.4443359375,0.4287109375,0.4248046875,0.40625,0.3759765625,0.34375,0.3232421875,0.318359375,0.3251953125,0.333984375,0.3359375,0.330078125,0.3212890625,0.3154296875,0.3173828125,0.3251953125,0.330078125,0.31640625,0.30078125,0.3017578125,0.3330078125,0.38671875,0.4482421875,0.5068359375,0.5498046875,0.552734375,0.5126953125,0.44921875,0.3974609375,0.376953125,0.3603515625,0.3251953125,0.2978515625,0.3037109375,0.3525390625,0.42578125,0.5,0.5634765625,0.5888671875,0.5556640625,0.4755859375,0.384765625,0.3291015625,0.3251953125,0.337890625,0.3583984375,0.3828125,0.40625,0.421875,0.427734375,0.4287109375,0.421875,0.39453125,0.361328125,0.3447265625,0.3583984375,0.3974609375,0.4482421875,0.5087890625,0.59375,0.66796875,0.6904296875,0.6513671875,0.5751953125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.56640625,0.6044921875,0.5859375,0.5146484375,0.419921875,0.349609375,0.3251953125,0.318359375,0.3232421875,0.34375,0.3759765625,0.40625,0.4248046875,0.4287109375,0.4296875,0.4287109375,0.4248046875,0.416015625,0.40234375,0.388671875,0.376953125,0.3642578125,0.3447265625,0.3232421875,0.3095703125,0.3076171875,0.3154296875,0.3251953125,0.3271484375,0.298828125,0.2548828125,0.224609375,0.228515625,0.267578125,0.3251953125,0.3935546875,0.48046875,0.5654296875,0.6220703125,0.640625,0.6337890625,0.6220703125,0.603515625,0.5595703125,0.5087890625,0.4775390625,0.4833984375,0.5205078125,0.5703125,0.6298828125,0.708984375,0.771484375,0.7802734375,0.728515625,0.646484375,0.5703125,0.5048828125,0.466796875,0.4638671875,0.6708984375,0.6796875,0.693359375,0.71484375,0.740234375,0.7509765625,0.6962890625,0.57421875,0.4248046875,0.302734375,0.248046875,0.2587890625,0.3017578125,0.40625,0.5517578125,0.6875,0.7666015625,0.7763671875,0.740234375,0.685546875,0.611328125,0.5498046875,0.5380859375,0.5849609375,0.6640625,0.740234375,0.80859375,0.8505859375,0.8369140625,0.76171875,0.6572265625,0.5703125,0.5302734375,0.5166015625,0.5517578125,0.6240234375,0.693359375,0.72265625,0.6982421875,0.634765625,0.556640625,0.4638671875,0.3828125,0.341796875,0.345703125,0.3720703125,0.39453125,0.4267578125,0.509765625,0.6240234375,0.7265625,0.78125,0.7783203125,0.740234375,0.6875,0.6142578125,0.5380859375,0.4853515625,0.4697265625,0.48046875,0.5,0.5146484375,0.517578125,0.5078125,0.4970703125,0.494140625,0.505859375,0.5302734375,0.5478515625,0.5322265625,0.48046875,0.4140625,0.3623046875,0.345703125,0.3642578125,0.40234375,0.482421875,0.5908203125,0.6904296875,0.75,0.7607421875,0.740234375,0.7080078125,0.662109375,0.6240234375,0.6162109375,0.6435546875,0.6923828125,0.740234375,0.78125,0.8037109375,0.7978515625,0.7705078125,0.740234375,0.7275390625,0.740234375,0.751953125,0.7333984375,0.67578125,0.5966796875,0.5224609375,0.478515625,0.46875,0.4765625,0.5107421875,0.5576171875,0.5927734375,0.5986328125,0.572265625,0.5302734375,0.4853515625,0.447265625,0.421875,0.408203125,0.400390625,0.3876953125,0.3642578125,0.3486328125,0.3759765625,0.44140625,0.515625,0.564453125,0.56640625,0.5302734375,0.5009765625,0.53515625,0.626953125,0.7314453125,0.798828125,0.798828125,0.740234375,0.6650390625,0.5810546875,0.5048828125,0.4521484375,0.4248046875,0.4111328125,0.39453125,0.365234375,0.3056640625,0.2421875,0.2119140625,0.232421875,0.2919921875,0.3642578125,0.4365234375,0.5,0.52734375,0.5048828125,0.4482421875,0.392578125,0.3642578125,0.345703125,0.3369140625,0.3505859375,0.3916015625,0.447265625,0.498046875,0.5302734375,0.56640625,0.6376953125,0.7236328125,0.787109375,0.8056640625,0.783203125,0.740234375,0.681640625,0.580078125,0.4609375,0.369140625,0.3349609375,0.3515625,0.39453125,0.4404296875,0.4892578125,0.541015625,0.59375,0.6455078125,0.6943359375,0.740234375,0.7841796875,0.8154296875,0.814453125,0.775390625,0.71484375,0.662109375,0.634765625,0.6064453125,0.5458984375,0.4716796875,0.4169921875,0.40234375,0.4267578125,0.46875,0.5146484375,0.5498046875,0.5546875,0.5185546875,0.45703125,0.3984375,0.3642578125,0.3330078125,0.2900390625,0.248046875,0.2236328125,0.22265625,0.2392578125,0.2587890625,0.279296875,0.3076171875,0.3447265625,0.3837890625,0.419921875,0.4482421875,0.46875,0.4951171875,0.54296875,0.59375,0.62109375,0.6123046875,0.5751953125,0.5302734375,0.4921875,0.4873046875,0.521484375,0.580078125,0.6318359375,0.65234375,0.634765625,0.59375,0.50390625,0.3916015625,0.30859375,0.2880859375,0.326171875,0.39453125,0.45703125,0.4775390625,0.44140625,0.3642578125,0.28515625,0.24609375,0.2587890625,0.2841796875,0.3037109375,0.30859375,0.2978515625,0.2783203125,0.2626953125,0.2587890625,0.2587890625,0.2587890625,0.2587890625,0.2587890625,0.2587890625,0.2587890625,0.2587890625,0.255859375,0.24609375,0.2421875,0.2587890625,0.2978515625,0.3466796875,0.39453125,0.4375,0.4697265625,0.4912109375,0.5078125,0.529296875,0.5615234375,0.6044921875,0.638671875,0.6298828125,0.5849609375,0.53515625,0.5146484375,0.541015625,0.6044921875,0.6591796875,0.640625,0.546875,0.421875,0.328125,0.3095703125,0.3642578125,0.4375,0.5048828125,0.5380859375,0.5185546875,0.4609375,0.3994140625,0.3642578125,0.33984375,0.3232421875,0.314453125,0.30859375,0.2998046875,0.283203125,0.2587890625,0.2255859375,0.177734375,0.142578125,0.1513671875,0.2080078125,0.2880859375,0.3642578125,0.4345703125,0.490234375,0.4990234375,0.4521484375,0.37109375,0.296875,0.2587890625,0.2373046875,0.2392578125,0.28125,0.35546875,0.439453125,0.5009765625,0.5302734375,0.5595703125,0.625,0.708984375,0.7763671875,0.80078125,0.7822265625,0.740234375,0.689453125,0.6240234375,0.5546875,0.501953125,0.4755859375,0.46875,0.46875,0.4619140625,0.4375,0.4140625,0.4189453125,0.462890625,0.53125,0.6044921875,0.6728515625,0.708984375,0.6796875,0.5771484375,0.4375,0.3212890625,0.2587890625,0.2138671875,0.177734375,0.1728515625,0.208984375,0.271484375,0.330078125,0.3642578125,0.4033203125,0.48046875,0.568359375,0.6240234375,0.62109375,0.5693359375,0.5,0.42578125,0.3603515625,0.34765625,0.4111328125,0.53125,0.654296875,0.740234375,0.8037109375,0.8232421875,0.775390625,0.673828125,0.5595703125,0.4853515625,0.46875,0.4609375,0.419921875,0.353515625,0.2861328125,0.244140625,0.23828125,0.2587890625,0.28125,0.28515625,0.2705078125,0.248046875,0.2333984375,0.2373046875,0.2587890625,0.28125,0.291015625,0.2919921875,0.2978515625,0.31640625,0.3505859375,0.39453125,0.44140625,0.486328125,0.5078125,0.4912109375,0.4462890625,0.396484375,0.3642578125,0.33203125,0.287109375,0.2587890625,0.275390625,0.3388671875,0.4228515625,0.5,0.5595703125,0.568359375,0.5078125,0.40234375,0.30078125,0.2490234375,0.2587890625,0.2890625,0.333984375,0.3857421875,0.4306640625,0.4580078125,0.4677734375,0.46875,0.46484375,0.4443359375,0.4140625,0.3857421875,0.373046875,0.3779296875,0.39453125,0.4248046875,0.4931640625,0.57421875,0.6240234375,0.6201171875,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5673828125,0.60546875,0.5849609375,0.501953125,0.390625,0.2998046875,0.2587890625,0.23828125,0.244140625,0.2861328125,0.353515625,0.419921875,0.4609375,0.46875,0.470703125,0.47265625,0.46875,0.4521484375,0.423828125,0.392578125,0.3642578125,0.33203125,0.28515625,0.2373046875,0.208984375,0.2099609375,0.232421875,0.2587890625,0.2783203125,0.271484375,0.2421875,0.2119140625,0.201171875,0.21875,0.2587890625,0.3154296875,0.4091796875,0.521484375,0.61328125,0.658203125,0.658203125,0.634765625,0.6044921875,0.5615234375,0.5185546875,0.494140625,0.494140625,0.509765625,0.5302734375,0.55859375,0.6142578125,0.6708984375,0.693359375,0.666015625,0.6025390625,0.5302734375,0.4599609375,0.4013671875,0.3720703125,0.5517578125,0.5771484375,0.6298828125,0.6904296875,0.740234375,0.7666015625,0.71484375,0.58203125,0.4169921875,0.2841796875,0.232421875,0.2587890625,0.318359375,0.4248046875,0.560546875,0.6796875,0.748046875,0.7607421875,0.740234375,0.7041015625,0.6435546875,0.5849609375,0.56640625,0.5986328125,0.6669921875,0.740234375,0.8095703125,0.85546875,0.8427734375,0.759765625,0.6376953125,0.529296875,0.46875,0.4384765625,0.462890625,0.5380859375,0.6240234375,0.6748046875,0.6650390625,0.6044921875,0.5322265625,0.4609375,0.408203125,0.3828125,0.3798828125,0.3779296875,0.3642578125,0.3583984375,0.4052734375,0.5048828125,0.6240234375,0.716796875,0.75390625,0.740234375,0.7119140625,0.673828125,0.6298828125,0.5849609375,0.5478515625,0.51953125,0.5,0.4736328125,0.4296875,0.3857421875,0.3671875,0.3828125,0.4228515625,0.46875,0.5048828125,0.5029296875,0.4609375,0.40234375,0.3603515625,0.3583984375,0.39453125,0.453125,0.5546875,0.673828125,0.7646484375,0.7998046875,0.7822265625,0.740234375,0.6923828125,0.6435546875,0.6162109375,0.6240234375,0.662109375,0.7080078125,0.740234375,0.7685546875,0.798828125,0.8173828125,0.814453125,0.791015625,0.76171875,0.740234375,0.716796875,0.677734375,0.626953125,0.5791015625,0.546875,0.5322265625,0.5302734375,0.5322265625,0.5400390625,0.5458984375,0.541015625,0.5224609375,0.49609375,0.46875,0.4482421875,0.4462890625,0.4580078125,0.46875,0.4638671875,0.4365234375,0.39453125,0.35546875,0.3466796875,0.375,0.4248046875,0.470703125,0.486328125,0.46875,0.4599609375,0.5146484375,0.6240234375,0.7373046875,0.8037109375,0.7998046875,0.740234375,0.6591796875,0.5498046875,0.4384765625,0.361328125,0.3349609375,0.3447265625,0.3642578125,0.373046875,0.3486328125,0.3056640625,0.275390625,0.28125,0.326171875,0.39453125,0.4619140625,0.5029296875,0.501953125,0.4638671875,0.4140625,0.3857421875,0.39453125,0.408203125,0.4052734375,0.3916015625,0.3837890625,0.39453125,0.42578125,0.46875,0.5234375,0.6044921875,0.693359375,0.7568359375,0.7783203125,0.765625,0.740234375,0.7021484375,0.6220703125,0.513671875,0.4140625,0.3544921875,0.34375,0.3642578125,0.39453125,0.4443359375,0.513671875,0.5908203125,0.66015625,0.708984375,0.740234375,0.759765625,0.751953125,0.7119140625,0.6572265625,0.611328125,0.5927734375,0.6044921875,0.6171875,0.607421875,0.57421875,0.53515625,0.509765625,0.5087890625,0.5302734375,0.55859375,0.587890625,0.5966796875,0.568359375,0.509765625,0.4453125,0.39453125,0.349609375,0.3115234375,0.287109375,0.2783203125,0.2783203125,0.2744140625,0.2587890625,0.2490234375,0.279296875,0.3505859375,0.4384765625,0.509765625,0.5390625,0.5302734375,0.513671875,0.5078125,0.5107421875,0.513671875,0.5087890625,0.4931640625,0.46875,0.453125,0.4765625,0.53515625,0.6015625,0.6435546875,0.6416015625,0.6044921875,0.544921875,0.4404296875,0.3251953125,0.2509765625,0.244140625,0.2939453125,0.3642578125,0.4248046875,0.4384765625,0.39453125,0.3173828125,0.2490234375,0.2275390625,0.2587890625,0.302734375,0.3359375,0.3447265625,0.3251953125,0.2919921875,0.265625,0.2587890625,0.2587890625,0.2587890625,0.2587890625,0.2587890625,0.2587890625,0.2587890625,0.2587890625,0.2578125,0.2548828125,0.2587890625,0.275390625,0.3037109375,0.3359375,0.3642578125,0.392578125,0.4287109375,0.474609375,0.5244140625,0.5703125,0.6064453125,0.634765625,0.650390625,0.6279296875,0.580078125,0.5380859375,0.5322265625,0.5693359375,0.634765625,0.689453125,0.6708984375,0.5771484375,0.4521484375,0.3583984375,0.33984375,0.39453125,0.470703125,0.548828125,0.5966796875,0.5849609375,0.5234375,0.4482421875,0.39453125,0.353515625,0.330078125,0.3251953125,0.328125,0.3232421875,0.2998046875,0.2587890625,0.2080078125,0.1494140625,0.1181640625,0.142578125,0.2197265625,0.3154296875,0.39453125,0.4677734375,0.529296875,0.546875,0.5,0.4072265625,0.31640625,0.2587890625,0.22265625,0.2255859375,0.2783203125,0.361328125,0.4384765625,0.4765625,0.46875,0.4609375,0.4951171875,0.5712890625,0.662109375,0.732421875,0.7568359375,0.740234375,0.7099609375,0.6650390625,0.61328125,0.568359375,0.541015625,0.53125,0.5302734375,0.5224609375,0.4931640625,0.4638671875,0.4609375,0.498046875,0.5625,0.634765625,0.69921875,0.7216796875,0.6708984375,0.5517578125,0.41015625,0.3037109375,0.2587890625,0.23046875,0.201171875,0.1923828125,0.220703125,0.2783203125,0.34375,0.39453125,0.451171875,0.5380859375,0.6240234375,0.6630859375,0.638671875,0.5732421875,0.5,0.42578125,0.3603515625,0.34765625,0.4111328125,0.53125,0.654296875,0.740234375,0.8046875,0.83203125,0.7978515625,0.7119140625,0.6123046875,0.544921875,0.5302734375,0.517578125,0.4580078125,0.36328125,0.2734375,0.220703125,0.220703125,0.2587890625,0.296875,0.3037109375,0.2783203125,0.240234375,0.21484375,0.220703125,0.2587890625,0.3017578125,0.33203125,0.3447265625,0.341796875,0.3369140625,0.341796875,0.3642578125,0.396484375,0.4462890625,0.4912109375,0.5078125,0.486328125,0.44140625,0.39453125,0.3427734375,0.2802734375,0.2421875,0.2587890625,0.3291015625,0.4208984375,0.5,0.5576171875,0.5546875,0.48046875,0.3671875,0.2685546875,0.23046875,0.2587890625,0.3095703125,0.375,0.4443359375,0.4970703125,0.5234375,0.5302734375,0.5302734375,0.5283203125,0.51953125,0.4970703125,0.4609375,0.419921875,0.38671875,0.3642578125,0.3583984375,0.4033203125,0.4833984375,0.5576171875,0.5888671875,0.5634765625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5703125,0.619140625,0.61328125,0.5380859375,0.4228515625,0.318359375,0.2587890625,0.220703125,0.220703125,0.2734375,0.36328125,0.4580078125,0.517578125,0.5302734375,0.533203125,0.54296875,0.546875,0.5302734375,0.4912109375,0.44140625,0.39453125,0.3408203125,0.2646484375,0.1923828125,0.15625,0.1689453125,0.2119140625,0.2587890625,0.2998046875,0.3173828125,0.3056640625,0.275390625,0.2470703125,0.2392578125,0.2587890625,0.298828125,0.38671875,0.501953125,0.6015625,0.650390625,0.64453125,0.6044921875,0.5595703125,0.521484375,0.4970703125,0.48828125,0.48828125,0.484375,0.46875,0.4609375,0.48828125,0.5380859375,0.5771484375,0.578125,0.5361328125,0.46875,0.39453125,0.318359375,0.267578125,0.41015625,0.4375,0.5146484375,0.603515625,0.673828125,0.716796875,0.68359375,0.5712890625,0.427734375,0.3154296875,0.2822265625,0.3251953125,0.39453125,0.48828125,0.5849609375,0.6552734375,0.6845703125,0.68359375,0.673828125,0.6533203125,0.6044921875,0.548828125,0.5224609375,0.5439453125,0.6025390625,0.673828125,0.74609375,0.8046875,0.80859375,0.740234375,0.6201171875,0.50390625,0.4287109375,0.3818359375,0.3935546875,0.462890625,0.5517578125,0.611328125,0.609375,0.55078125,0.484375,0.4404296875,0.4267578125,0.4326171875,0.4375,0.4208984375,0.376953125,0.3359375,0.3408203125,0.4052734375,0.509765625,0.611328125,0.669921875,0.673828125,0.666015625,0.6669921875,0.6640625,0.64453125,0.6044921875,0.5517578125,0.5,0.439453125,0.3583984375,0.287109375,0.2646484375,0.2978515625,0.3642578125,0.4287109375,0.48046875,0.4921875,0.4619140625,0.4150390625,0.384765625,0.396484375,0.4482421875,0.521484375,0.62890625,0.736328125,0.7958984375,0.7890625,0.736328125,0.673828125,0.6123046875,0.5615234375,0.5419921875,0.5634765625,0.611328125,0.654296875,0.673828125,0.6904296875,0.7275390625,0.767578125,0.78515625,0.767578125,0.724609375,0.673828125,0.62109375,0.5712890625,0.5390625,0.533203125,0.5478515625,0.5654296875,0.5703125,0.568359375,0.556640625,0.533203125,0.5,0.466796875,0.4423828125,0.4287109375,0.427734375,0.4580078125,0.505859375,0.5419921875,0.5419921875,0.505859375,0.4482421875,0.3896484375,0.34765625,0.33984375,0.365234375,0.4052734375,0.4306640625,0.4287109375,0.4345703125,0.498046875,0.6044921875,0.7041015625,0.7529296875,0.736328125,0.673828125,0.58984375,0.4716796875,0.3544921875,0.28515625,0.28125,0.32421875,0.376953125,0.4189453125,0.4228515625,0.39453125,0.361328125,0.3525390625,0.3837890625,0.4482421875,0.5107421875,0.533203125,0.5087890625,0.45703125,0.4130859375,0.408203125,0.4482421875,0.48828125,0.4873046875,0.447265625,0.39453125,0.3642578125,0.376953125,0.4287109375,0.49609375,0.576171875,0.650390625,0.693359375,0.7001953125,0.6865234375,0.673828125,0.6552734375,0.60546875,0.529296875,0.451171875,0.39453125,0.373046875,0.376953125,0.392578125,0.4306640625,0.490234375,0.560546875,0.6201171875,0.658203125,0.673828125,0.673828125,0.63671875,0.5732421875,0.5146484375,0.4892578125,0.505859375,0.55078125,0.599609375,0.6328125,0.6396484375,0.6181640625,0.5859375,0.56640625,0.5703125,0.5859375,0.6142578125,0.634765625,0.6240234375,0.5771484375,0.51171875,0.4482421875,0.392578125,0.3623046875,0.361328125,0.376953125,0.3857421875,0.369140625,0.3251953125,0.2890625,0.310546875,0.3935546875,0.501953125,0.5849609375,0.6064453125,0.5703125,0.5185546875,0.470703125,0.4375,0.42578125,0.4306640625,0.435546875,0.4287109375,0.4306640625,0.4736328125,0.5439453125,0.6064453125,0.630859375,0.6064453125,0.55078125,0.4775390625,0.3701171875,0.2666015625,0.2158203125,0.236328125,0.302734375,0.376953125,0.4375,0.4482421875,0.404296875,0.333984375,0.2802734375,0.27734375,0.3251953125,0.3857421875,0.4296875,0.44140625,0.416015625,0.3701171875,0.333984375,0.3251953125,0.3251953125,0.3251953125,0.3251953125,0.3251953125,0.3251953125,0.3251953125,0.3251953125,0.3251953125,0.3251953125,0.3291015625,0.3388671875,0.3525390625,0.3662109375,0.376953125,0.3916015625,0.4228515625,0.4716796875,0.52734375,0.576171875,0.607421875,0.6220703125,0.6220703125,0.587890625,0.5361328125,0.5009765625,0.5068359375,0.5537109375,0.6220703125,0.677734375,0.6669921875,0.587890625,0.4814453125,0.40234375,0.3916015625,0.4482421875,0.5263671875,0.6142578125,0.6728515625,0.6689453125,0.6044921875,0.517578125,0.4482421875,0.3935546875,0.3701171875,0.376953125,0.396484375,0.4033203125,0.3798828125,0.3251953125,0.2587890625,0.1875,0.1494140625,0.177734375,0.263671875,0.3662109375,0.4482421875,0.5234375,0.5966796875,0.6279296875,0.591796875,0.5,0.3984375,0.3251953125,0.275390625,0.2724609375,0.322265625,0.3974609375,0.45703125,0.4677734375,0.4287109375,0.38671875,0.384765625,0.4375,0.5283203125,0.619140625,0.6708984375,0.673828125,0.6611328125,0.640625,0.6162109375,0.5927734375,0.5771484375,0.5712890625,0.5703125,0.5615234375,0.525390625,0.484375,0.466796875,0.4921875,0.55078125,0.6220703125,0.685546875,0.708984375,0.6630859375,0.5595703125,0.4375,0.3525390625,0.3251953125,0.3095703125,0.28125,0.2607421875,0.271484375,0.318359375,0.3837890625,0.4482421875,0.5185546875,0.611328125,0.6875,0.7060546875,0.658203125,0.576171875,0.5,0.423828125,0.3505859375,0.3232421875,0.369140625,0.474609375,0.58984375,0.673828125,0.7412109375,0.7802734375,0.7705078125,0.712890625,0.63671875,0.58203125,0.5703125,0.5556640625,0.490234375,0.390625,0.2998046875,0.2568359375,0.271484375,0.3251953125,0.376953125,0.3857421875,0.3515625,0.2998046875,0.265625,0.2744140625,0.3251953125,0.384765625,0.4296875,0.4453125,0.4287109375,0.396484375,0.375,0.376953125,0.3974609375,0.44921875,0.5126953125,0.552734375,0.5498046875,0.5068359375,0.4482421875,0.37890625,0.298828125,0.24609375,0.2548828125,0.3251953125,0.419921875,0.5,0.556640625,0.552734375,0.4814453125,0.37890625,0.2978515625,0.2802734375,0.3251953125,0.390625,0.4658203125,0.53125,0.5703125,0.5791015625,0.5732421875,0.5703125,0.572265625,0.5791015625,0.57421875,0.544921875,0.4921875,0.431640625,0.376953125,0.3408203125,0.359375,0.4306640625,0.515625,0.5673828125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.57421875,0.640625,0.6611328125,0.6103515625,0.5068359375,0.3994140625,0.3251953125,0.271484375,0.2568359375,0.2998046875,0.390625,0.490234375,0.5556640625,0.5703125,0.576171875,0.5966796875,0.615234375,0.6083984375,0.5703125,0.5107421875,0.4482421875,0.376953125,0.28125,0.197265625,0.1650390625,0.1943359375,0.2607421875,0.3251953125,0.3837890625,0.4228515625,0.4267578125,0.3955078125,0.3525390625,0.32421875,0.3251953125,0.349609375,0.419921875,0.5185546875,0.599609375,0.630859375,0.607421875,0.55078125,0.49609375,0.4658203125,0.46484375,0.48046875,0.4892578125,0.47265625,0.4287109375,0.3896484375,0.3935546875,0.4375,0.490234375,0.5146484375,0.4912109375,0.4287109375,0.3505859375,0.2626953125,0.2001953125,0.3037109375,0.3212890625,0.400390625,0.5,0.5791015625,0.6337890625,0.625,0.5498046875,0.44921875,0.3740234375,0.365234375,0.419921875,0.4921875,0.5634765625,0.61328125,0.6259765625,0.609375,0.5869140625,0.5791015625,0.5673828125,0.5244140625,0.470703125,0.44140625,0.4560546875,0.5087890625,0.5791015625,0.6552734375,0.7314453125,0.765625,0.728515625,0.630859375,0.521484375,0.439453125,0.3828125,0.3818359375,0.4384765625,0.5166015625,0.5712890625,0.568359375,0.509765625,0.447265625,0.4248046875,0.4453125,0.4833984375,0.505859375,0.48828125,0.4296875,0.3671875,0.3359375,0.3583984375,0.4267578125,0.5107421875,0.568359375,0.5791015625,0.5849609375,0.6142578125,0.6474609375,0.6552734375,0.6259765625,0.5673828125,0.5,0.421875,0.32421875,0.24609375,0.2294921875,0.279296875,0.36328125,0.439453125,0.4990234375,0.515625,0.4873046875,0.44140625,0.4130859375,0.4296875,0.4892578125,0.5693359375,0.671875,0.7578125,0.78125,0.736328125,0.6552734375,0.5791015625,0.5107421875,0.458984375,0.4443359375,0.4736328125,0.5263671875,0.568359375,0.5791015625,0.5908203125,0.6318359375,0.6826171875,0.7109375,0.697265625,0.646484375,0.5791015625,0.5126953125,0.4599609375,0.4423828125,0.466796875,0.5126953125,0.5498046875,0.5595703125,0.556640625,0.54296875,0.517578125,0.4873046875,0.4599609375,0.4443359375,0.439453125,0.44921875,0.494140625,0.5576171875,0.6005859375,0.6005859375,0.556640625,0.4892578125,0.4208984375,0.3642578125,0.341796875,0.3583984375,0.3994140625,0.4326171875,0.439453125,0.451171875,0.5087890625,0.5927734375,0.6611328125,0.6796875,0.6455078125,0.5791015625,0.49609375,0.3857421875,0.2890625,0.25,0.283203125,0.3564453125,0.4296875,0.4873046875,0.5029296875,0.4755859375,0.4326171875,0.408203125,0.427734375,0.4892578125,0.5498046875,0.5625,0.5244140625,0.4658203125,0.4248046875,0.4326171875,0.4892578125,0.544921875,0.548828125,0.498046875,0.42578125,0.376953125,0.3818359375,0.439453125,0.51171875,0.580078125,0.6259765625,0.6337890625,0.6123046875,0.5869140625,0.5791015625,0.57421875,0.5537109375,0.5185546875,0.4794921875,0.447265625,0.431640625,0.4296875,0.4345703125,0.453125,0.4853515625,0.5234375,0.5556640625,0.57421875,0.5791015625,0.5693359375,0.5224609375,0.4560546875,0.408203125,0.404296875,0.4443359375,0.509765625,0.5771484375,0.6318359375,0.654296875,0.6376953125,0.5986328125,0.56640625,0.5595703125,0.5693359375,0.6025390625,0.6396484375,0.650390625,0.6201171875,0.5595703125,0.4892578125,0.4296875,0.4091796875,0.431640625,0.4716796875,0.49609375,0.478515625,0.419921875,0.3662109375,0.373046875,0.4423828125,0.537109375,0.6064453125,0.61328125,0.5595703125,0.490234375,0.4267578125,0.388671875,0.38671875,0.41015625,0.4345703125,0.439453125,0.44921875,0.4970703125,0.564453125,0.61328125,0.6171875,0.576171875,0.509765625,0.4296875,0.3271484375,0.2431640625,0.220703125,0.2685546875,0.3525390625,0.4296875,0.4892578125,0.5,0.458984375,0.396484375,0.353515625,0.3623046875,0.419921875,0.48828125,0.5390625,0.5517578125,0.5224609375,0.470703125,0.4296875,0.419921875,0.419921875,0.419921875,0.419921875,0.419921875,0.419921875,0.419921875,0.419921875,0.419921875,0.419921875,0.4208984375,0.4228515625,0.42578125,0.427734375,0.4296875,0.4345703125,0.451171875,0.4814453125,0.517578125,0.5478515625,0.564453125,0.5693359375,0.560546875,0.5205078125,0.4677734375,0.4365234375,0.4482421875,0.5,0.5693359375,0.626953125,0.6279296875,0.5703125,0.48828125,0.4306640625,0.431640625,0.4892578125,0.5693359375,0.662109375,0.7275390625,0.7265625,0.66015625,0.5673828125,0.4892578125,0.4296875,0.41015625,0.4345703125,0.474609375,0.4990234375,0.4794921875,0.419921875,0.34375,0.2587890625,0.2080078125,0.2255859375,0.306640625,0.408203125,0.4892578125,0.5673828125,0.65234375,0.7021484375,0.6826171875,0.6005859375,0.5,0.419921875,0.361328125,0.3525390625,0.3955078125,0.458984375,0.5029296875,0.49609375,0.439453125,0.376953125,0.3447265625,0.3642578125,0.4306640625,0.5126953125,0.568359375,0.5791015625,0.5771484375,0.5732421875,0.568359375,0.564453125,0.560546875,0.5595703125,0.5595703125,0.5498046875,0.5087890625,0.4580078125,0.4296875,0.4453125,0.4990234375,0.5693359375,0.6357421875,0.6708984375,0.65234375,0.5830078125,0.49609375,0.4345703125,0.419921875,0.41015625,0.376953125,0.33984375,0.3291015625,0.359375,0.419921875,0.4892578125,0.568359375,0.662109375,0.73046875,0.734375,0.6708984375,0.5791015625,0.5,0.421875,0.3369140625,0.2880859375,0.3095703125,0.3935546875,0.498046875,0.5791015625,0.6484375,0.6982421875,0.70703125,0.671875,0.6142578125,0.5693359375,0.5595703125,0.5458984375,0.48828125,0.4052734375,0.3388671875,0.3203125,0.3544921875,0.419921875,0.478515625,0.48828125,0.44921875,0.3896484375,0.3505859375,0.361328125,0.419921875,0.48828125,0.5390625,0.5537109375,0.525390625,0.4755859375,0.4375,0.4296875,0.4423828125,0.4921875,0.5576171875,0.6025390625,0.6015625,0.556640625,0.4892578125,0.412109375,0.3203125,0.255859375,0.2578125,0.3251953125,0.419921875,0.5,0.5576171875,0.5595703125,0.5029296875,0.421875,0.36328125,0.36328125,0.419921875,0.4912109375,0.5595703125,0.603515625,0.6103515625,0.58984375,0.5654296875,0.5595703125,0.5654296875,0.58984375,0.6123046875,0.6064453125,0.5654296875,0.4990234375,0.4296875,0.375,0.375,0.431640625,0.5087890625,0.5625,0.55859375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5771484375,0.66015625,0.7080078125,0.6865234375,0.6025390625,0.5,0.419921875,0.3544921875,0.3203125,0.3388671875,0.4052734375,0.48828125,0.5458984375,0.5595703125,0.5673828125,0.599609375,0.63671875,0.6474609375,0.619140625,0.5595703125,0.4892578125,0.41015625,0.3095703125,0.228515625,0.2109375,0.259765625,0.34375,0.419921875,0.4873046875,0.5380859375,0.5498046875,0.51953125,0.4677734375,0.427734375,0.419921875,0.43359375,0.486328125,0.55859375,0.611328125,0.6171875,0.576171875,0.509765625,0.44921875,0.4296875,0.4521484375,0.4921875,0.515625,0.498046875,0.439453125,0.3828125,0.375,0.416015625,0.474609375,0.5126953125,0.5,0.439453125,0.3603515625,0.2666015625,0.2001953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.23828125,0.2265625,0.2802734375,0.3642578125,0.439453125,0.5,0.5263671875,0.517578125,0.49609375,0.4892578125,0.517578125,0.5791015625,0.6435546875,0.67578125,0.654296875,0.583984375,0.4990234375,0.44140625,0.4296875,0.421875,0.380859375,0.326171875,0.2939453125,0.302734375,0.3525390625,0.419921875,0.5009765625,0.611328125,0.708984375,0.74609375,0.7119140625,0.6357421875,0.5595703125,0.498046875,0.48046875,0.5078125,0.5546875,0.583984375,0.568359375,0.509765625,0.453125,0.4521484375,0.5078125,0.5859375,0.640625,0.6376953125,0.5791015625,0.505859375,0.435546875,0.3896484375,0.3828125,0.4052734375,0.431640625,0.439453125,0.453125,0.5029296875,0.5712890625,0.6181640625,0.6201171875,0.576171875,0.509765625,0.4326171875,0.345703125,0.2900390625,0.302734375,0.3798828125,0.478515625,0.5595703125,0.6181640625,0.6240234375,0.57421875,0.5009765625,0.44921875,0.4521484375,0.509765625,0.5859375,0.6689453125,0.71875,0.7001953125,0.6201171875,0.51953125,0.439453125,0.37109375,0.3203125,0.306640625,0.333984375,0.3837890625,0.421875,0.4296875,0.4384765625,0.478515625,0.533203125,0.5654296875,0.556640625,0.5078125,0.439453125,0.37109375,0.3173828125,0.2998046875,0.32421875,0.3720703125,0.41015625,0.419921875,0.4228515625,0.44140625,0.4736328125,0.5107421875,0.5419921875,0.5576171875,0.5595703125,0.5654296875,0.595703125,0.630859375,0.6416015625,0.615234375,0.5576171875,0.4892578125,0.4248046875,0.3857421875,0.3935546875,0.4462890625,0.5166015625,0.5673828125,0.5791015625,0.5849609375,0.60546875,0.62109375,0.607421875,0.5595703125,0.490234375,0.419921875,0.3466796875,0.271484375,0.2373046875,0.2724609375,0.3671875,0.4765625,0.5595703125,0.6181640625,0.62109375,0.5673828125,0.4912109375,0.4375,0.44140625,0.5,0.5595703125,0.572265625,0.53515625,0.4755859375,0.4345703125,0.443359375,0.5,0.5576171875,0.57421875,0.548828125,0.5087890625,0.486328125,0.5078125,0.5693359375,0.6357421875,0.6689453125,0.6474609375,0.5771484375,0.490234375,0.431640625,0.419921875,0.4248046875,0.4453125,0.48046875,0.51953125,0.5517578125,0.5673828125,0.5693359375,0.564453125,0.544921875,0.5107421875,0.47265625,0.4404296875,0.4228515625,0.419921875,0.412109375,0.3818359375,0.3505859375,0.34375,0.376953125,0.439453125,0.509765625,0.576171875,0.6181640625,0.615234375,0.564453125,0.494140625,0.443359375,0.4296875,0.439453125,0.4892578125,0.55859375,0.6103515625,0.6162109375,0.5751953125,0.509765625,0.4521484375,0.4482421875,0.4990234375,0.57421875,0.626953125,0.625,0.5693359375,0.509765625,0.4853515625,0.498046875,0.5224609375,0.53125,0.5029296875,0.439453125,0.3720703125,0.333984375,0.345703125,0.4072265625,0.4873046875,0.544921875,0.5595703125,0.5693359375,0.6025390625,0.640625,0.6533203125,0.6259765625,0.5673828125,0.5,0.4248046875,0.34375,0.2958984375,0.314453125,0.3935546875,0.4912109375,0.5693359375,0.6259765625,0.6357421875,0.5966796875,0.5400390625,0.5048828125,0.5185546875,0.5791015625,0.6484375,0.7001953125,0.7119140625,0.681640625,0.6279296875,0.587890625,0.5791015625,0.5810546875,0.580078125,0.5771484375,0.572265625,0.56640625,0.5615234375,0.5595703125,0.55859375,0.5595703125,0.5634765625,0.5693359375,0.5751953125,0.578125,0.5791015625,0.576171875,0.55859375,0.5263671875,0.48828125,0.4541015625,0.4345703125,0.4296875,0.4189453125,0.3779296875,0.326171875,0.2978515625,0.3125,0.36328125,0.4296875,0.48828125,0.505859375,0.4833984375,0.4453125,0.4248046875,0.447265625,0.509765625,0.5888671875,0.6826171875,0.748046875,0.7470703125,0.6806640625,0.587890625,0.509765625,0.453125,0.4501953125,0.50390625,0.580078125,0.6328125,0.6279296875,0.5693359375,0.48828125,0.3876953125,0.3095703125,0.2939453125,0.3466796875,0.4326171875,0.509765625,0.5888671875,0.6884765625,0.767578125,0.78515625,0.736328125,0.654296875,0.5791015625,0.5224609375,0.513671875,0.552734375,0.611328125,0.6494140625,0.6376953125,0.5791015625,0.5078125,0.4384765625,0.3935546875,0.384765625,0.40625,0.431640625,0.439453125,0.44140625,0.4423828125,0.4423828125,0.4423828125,0.4404296875,0.4404296875,0.439453125,0.4296875,0.3876953125,0.33203125,0.2978515625,0.306640625,0.353515625,0.419921875,0.490234375,0.5595703125,0.6064453125,0.6171875,0.599609375,0.5771484375,0.5693359375,0.5556640625,0.5048828125,0.435546875,0.3876953125,0.3857421875,0.4306640625,0.5,0.5791015625,0.673828125,0.7412109375,0.7431640625,0.6787109375,0.5869140625,0.509765625,0.4296875,0.3291015625,0.2490234375,0.23046875,0.2802734375,0.36328125,0.439453125,0.5078125,0.55859375,0.572265625,0.5419921875,0.490234375,0.44921875,0.439453125,0.4326171875,0.4052734375,0.37890625,0.3798828125,0.419921875,0.486328125,0.5595703125,0.6201171875,0.6337890625,0.5986328125,0.5419921875,0.5029296875,0.5126953125,0.5693359375,0.6357421875,0.6865234375,0.701171875,0.6728515625,0.62109375,0.580078125,0.5693359375,0.576171875,0.6083984375,0.646484375,0.6611328125,0.63671875,0.5791015625,0.509765625,0.431640625,0.33984375,0.2734375,0.271484375,0.333984375,0.423828125,0.5,0.55859375,0.5771484375,0.5556640625,0.517578125,0.498046875,0.5185546875,0.5791015625,0.6435546875,0.6767578125,0.6552734375,0.583984375,0.49609375,0.4345703125,0.419921875,0.431640625,0.490234375,0.5771484375,0.6474609375,0.6689453125,0.6357421875,0.5693359375,0.5078125,0.486328125,0.5087890625,0.548828125,0.57421875,0.5576171875,0.5,0.443359375,0.4345703125,0.4755859375,0.53515625,0.572265625,0.5595703125,0.5,0.419921875,0.3251953125,0.2578125,0.255859375,0.3203125,0.412109375,0.4892578125,0.5693359375,0.669921875,0.75,0.7685546875,0.71875,0.6357421875,0.5595703125,0.48828125,0.419921875,0.376953125,0.3720703125,0.3955078125,0.421875,0.4296875,0.443359375,0.494140625,0.564453125,0.615234375,0.6181640625,0.576171875,0.509765625,0.43359375,0.349609375,0.2998046875,0.318359375,0.3994140625,0.5,0.5791015625,0.646484375,0.6943359375,0.7021484375,0.666015625,0.609375,0.568359375,0.5595703125,0.5693359375,0.603515625,0.6416015625,0.6533203125,0.623046875,0.5615234375,0.4892578125,0.4306640625,0.4267578125,0.4794921875,0.5576171875,0.6142578125,0.6142578125,0.5595703125,0.501953125,0.4921875,0.5302734375,0.587890625,0.626953125,0.6162109375,0.5595703125,0.482421875,0.3916015625,0.3251953125,0.25,0.25,0.30078125,0.37109375,0.4287109375,0.4755859375,0.5068359375,0.525390625,0.5419921875,0.5703125,0.615234375,0.673828125,0.724609375,0.7275390625,0.6650390625,0.556640625,0.4462890625,0.3828125,0.376953125,0.3779296875,0.34375,0.2880859375,0.244140625,0.236328125,0.2685546875,0.3251953125,0.4013671875,0.517578125,0.63671875,0.705078125,0.701171875,0.642578125,0.5703125,0.5087890625,0.4892578125,0.517578125,0.5693359375,0.6064453125,0.6015625,0.55078125,0.50390625,0.515625,0.5849609375,0.673828125,0.7333984375,0.7314453125,0.673828125,0.5966796875,0.5087890625,0.4326171875,0.39453125,0.39453125,0.4150390625,0.4287109375,0.4501953125,0.5087890625,0.5830078125,0.6376953125,0.6455078125,0.609375,0.55078125,0.482421875,0.3974609375,0.3369140625,0.337890625,0.4013671875,0.4912109375,0.5703125,0.630859375,0.6455078125,0.6083984375,0.5478515625,0.5009765625,0.501953125,0.55078125,0.6162109375,0.6826171875,0.7119140625,0.6796875,0.595703125,0.5,0.4287109375,0.369140625,0.32421875,0.3095703125,0.326171875,0.3583984375,0.3798828125,0.376953125,0.376953125,0.4111328125,0.466796875,0.5107421875,0.5185546875,0.486328125,0.4287109375,0.3671875,0.3095703125,0.275390625,0.2734375,0.296875,0.3193359375,0.3251953125,0.3330078125,0.3681640625,0.4306640625,0.5,0.552734375,0.57421875,0.5703125,0.564453125,0.5712890625,0.580078125,0.57421875,0.544921875,0.4990234375,0.4482421875,0.4033203125,0.3935546875,0.4345703125,0.515625,0.6044921875,0.6611328125,0.673828125,0.6728515625,0.66015625,0.6201171875,0.5498046875,0.462890625,0.3837890625,0.3251953125,0.271484375,0.22265625,0.2138671875,0.26953125,0.3759765625,0.4873046875,0.5703125,0.6279296875,0.6298828125,0.57421875,0.4951171875,0.439453125,0.44140625,0.5,0.5625,0.5849609375,0.560546875,0.5087890625,0.46484375,0.4599609375,0.5,0.5419921875,0.552734375,0.53515625,0.515625,0.5185546875,0.556640625,0.6220703125,0.68359375,0.693359375,0.6328125,0.5205078125,0.40234375,0.33203125,0.3251953125,0.34375,0.3935546875,0.4697265625,0.5478515625,0.6044921875,0.6259765625,0.6220703125,0.6044921875,0.5615234375,0.4931640625,0.4189453125,0.361328125,0.3310546875,0.3251953125,0.322265625,0.314453125,0.318359375,0.3525390625,0.4140625,0.486328125,0.55078125,0.6083984375,0.6376953125,0.6181640625,0.55078125,0.46484375,0.400390625,0.376953125,0.3798828125,0.4287109375,0.51171875,0.587890625,0.623046875,0.60546875,0.55078125,0.5,0.4931640625,0.5361328125,0.6025390625,0.654296875,0.6611328125,0.6220703125,0.5771484375,0.55859375,0.5595703125,0.560546875,0.5419921875,0.49609375,0.4287109375,0.361328125,0.3193359375,0.330078125,0.3935546875,0.48046875,0.546875,0.5703125,0.5859375,0.6142578125,0.638671875,0.63671875,0.6044921875,0.5517578125,0.5,0.4453125,0.3935546875,0.373046875,0.40625,0.48046875,0.5625,0.6220703125,0.662109375,0.6640625,0.6318359375,0.59375,0.580078125,0.609375,0.673828125,0.7421875,0.7880859375,0.7939453125,0.7587890625,0.70703125,0.6728515625,0.673828125,0.6826171875,0.68359375,0.669921875,0.642578125,0.6103515625,0.583984375,0.5703125,0.5625,0.5673828125,0.5888671875,0.6201171875,0.6513671875,0.669921875,0.673828125,0.66796875,0.6376953125,0.580078125,0.505859375,0.4375,0.39453125,0.376953125,0.3603515625,0.3232421875,0.283203125,0.265625,0.283203125,0.326171875,0.376953125,0.4208984375,0.4375,0.4326171875,0.4267578125,0.4404296875,0.484375,0.55078125,0.6298828125,0.7177734375,0.7763671875,0.7724609375,0.70703125,0.62109375,0.55078125,0.5029296875,0.5087890625,0.56640625,0.6416015625,0.689453125,0.681640625,0.6220703125,0.5419921875,0.4453125,0.3701171875,0.3564453125,0.4052734375,0.4833984375,0.55078125,0.62109375,0.7099609375,0.787109375,0.814453125,0.787109375,0.728515625,0.673828125,0.6328125,0.630859375,0.6669921875,0.71484375,0.7412109375,0.7255859375,0.673828125,0.6064453125,0.5263671875,0.4521484375,0.4091796875,0.40234375,0.416015625,0.4287109375,0.439453125,0.4462890625,0.4482421875,0.4443359375,0.4365234375,0.4306640625,0.4287109375,0.419921875,0.376953125,0.31640625,0.267578125,0.25390625,0.2783203125,0.3251953125,0.3837890625,0.462890625,0.5458984375,0.607421875,0.6328125,0.6318359375,0.6220703125,0.5986328125,0.5341796875,0.4521484375,0.3935546875,0.3876953125,0.4306640625,0.5,0.5791015625,0.673828125,0.744140625,0.7529296875,0.7001953125,0.6201171875,0.55078125,0.48046875,0.384765625,0.30078125,0.2685546875,0.2978515625,0.36328125,0.4287109375,0.48828125,0.533203125,0.544921875,0.5185546875,0.4736328125,0.4375,0.4287109375,0.421875,0.3974609375,0.3759765625,0.3828125,0.427734375,0.4970703125,0.5703125,0.6337890625,0.6630859375,0.6494140625,0.611328125,0.5791015625,0.5810546875,0.6220703125,0.6728515625,0.7158203125,0.7333984375,0.7158203125,0.67578125,0.638671875,0.6220703125,0.6181640625,0.6376953125,0.666015625,0.677734375,0.658203125,0.611328125,0.55078125,0.4833984375,0.40234375,0.341796875,0.33203125,0.3759765625,0.4423828125,0.5,0.544921875,0.5673828125,0.5703125,0.568359375,0.580078125,0.6171875,0.673828125,0.7265625,0.7353515625,0.6767578125,0.5634765625,0.4375,0.3525390625,0.3251953125,0.33203125,0.40234375,0.5205078125,0.6328125,0.693359375,0.68359375,0.6220703125,0.556640625,0.5185546875,0.515625,0.53515625,0.552734375,0.5419921875,0.5,0.4599609375,0.46484375,0.5087890625,0.560546875,0.5849609375,0.5625,0.5,0.419921875,0.3251953125,0.2548828125,0.24609375,0.298828125,0.37890625,0.4482421875,0.5185546875,0.6142578125,0.6982421875,0.73046875,0.701171875,0.6357421875,0.5703125,0.5048828125,0.4296875,0.3681640625,0.3388671875,0.34375,0.36328125,0.376953125,0.400390625,0.46484375,0.55078125,0.6181640625,0.6376953125,0.6083984375,0.55078125,0.4853515625,0.419921875,0.390625,0.4228515625,0.5068359375,0.6025390625,0.673828125,0.7294921875,0.755859375,0.736328125,0.6787109375,0.611328125,0.5712890625,0.5703125,0.5869140625,0.6220703125,0.6494140625,0.6435546875,0.5947265625,0.521484375,0.4482421875,0.3876953125,0.3798828125,0.431640625,0.5166015625,0.587890625,0.6064453125,0.5703125,0.52734375,0.51953125,0.548828125,0.591796875,0.6201171875,0.6123046875,0.5703125,0.5107421875,0.431640625,0.369140625,0.30859375,0.33984375,0.3935546875,0.4423828125,0.46875,0.4873046875,0.5078125,0.5380859375,0.5830078125,0.6376953125,0.6923828125,0.740234375,0.771484375,0.744140625,0.6484375,0.5185546875,0.40625,0.353515625,0.3642578125,0.380859375,0.361328125,0.30859375,0.2509765625,0.2158203125,0.220703125,0.2587890625,0.3193359375,0.4267578125,0.5498046875,0.6318359375,0.6455078125,0.599609375,0.5302734375,0.4677734375,0.451171875,0.48828125,0.5576171875,0.619140625,0.63671875,0.6044921875,0.5732421875,0.5986328125,0.673828125,0.7587890625,0.8095703125,0.80078125,0.740234375,0.66015625,0.5595703125,0.4658203125,0.4140625,0.412109375,0.439453125,0.46875,0.50390625,0.56640625,0.6357421875,0.6787109375,0.681640625,0.6494140625,0.6044921875,0.548828125,0.46484375,0.38671875,0.35546875,0.3857421875,0.455078125,0.5302734375,0.5947265625,0.6298828125,0.6259765625,0.5966796875,0.568359375,0.568359375,0.6044921875,0.65234375,0.6953125,0.70703125,0.6708984375,0.5986328125,0.5224609375,0.46875,0.4267578125,0.3955078125,0.3837890625,0.3857421875,0.3916015625,0.3857421875,0.3642578125,0.3466796875,0.3671875,0.4189453125,0.4775390625,0.51171875,0.5068359375,0.46875,0.419921875,0.361328125,0.306640625,0.26953125,0.2568359375,0.2578125,0.2587890625,0.2685546875,0.3173828125,0.3974609375,0.48046875,0.53515625,0.548828125,0.5302734375,0.50390625,0.478515625,0.4580078125,0.44140625,0.427734375,0.412109375,0.39453125,0.3837890625,0.412109375,0.4853515625,0.5849609375,0.6767578125,0.7294921875,0.740234375,0.7314453125,0.6845703125,0.5908203125,0.4716796875,0.361328125,0.2890625,0.2587890625,0.2373046875,0.2138671875,0.2177734375,0.2666015625,0.3544921875,0.451171875,0.5302734375,0.5888671875,0.595703125,0.548828125,0.48046875,0.43359375,0.4404296875,0.5,0.56640625,0.6083984375,0.607421875,0.568359375,0.5185546875,0.4912109375,0.5,0.5107421875,0.5,0.48046875,0.4775390625,0.5068359375,0.564453125,0.634765625,0.6923828125,0.68359375,0.59375,0.4521484375,0.3203125,0.251953125,0.2587890625,0.296875,0.376953125,0.4853515625,0.5849609375,0.64453125,0.6552734375,0.634765625,0.6005859375,0.53515625,0.447265625,0.3583984375,0.2939453125,0.263671875,0.2587890625,0.2607421875,0.2763671875,0.3193359375,0.3916015625,0.4775390625,0.552734375,0.6044921875,0.646484375,0.666015625,0.640625,0.568359375,0.4765625,0.4013671875,0.3642578125,0.3505859375,0.38671875,0.46875,0.5634765625,0.6279296875,0.6396484375,0.6044921875,0.5634765625,0.5458984375,0.5576171875,0.5927734375,0.6298828125,0.646484375,0.634765625,0.623046875,0.6298828125,0.6435546875,0.6376953125,0.6015625,0.5400390625,0.46875,0.3974609375,0.3369140625,0.3173828125,0.3525390625,0.4248046875,0.4931640625,0.5302734375,0.5576171875,0.583984375,0.5966796875,0.5849609375,0.5556640625,0.5224609375,0.5,0.4814453125,0.4736328125,0.4853515625,0.521484375,0.5693359375,0.6103515625,0.634765625,0.6455078125,0.630859375,0.6044921875,0.59375,0.6162109375,0.6708984375,0.740234375,0.806640625,0.8427734375,0.8369140625,0.794921875,0.7470703125,0.724609375,0.740234375,0.7646484375,0.7734375,0.7509765625,0.6953125,0.6240234375,0.564453125,0.5302734375,0.5087890625,0.515625,0.5576171875,0.6240234375,0.6904296875,0.7314453125,0.740234375,0.7353515625,0.705078125,0.640625,0.5517578125,0.4638671875,0.3984375,0.3642578125,0.3359375,0.3056640625,0.2861328125,0.2900390625,0.3125,0.341796875,0.3642578125,0.3779296875,0.3798828125,0.3828125,0.408203125,0.4609375,0.5322265625,0.6044921875,0.6806640625,0.759765625,0.806640625,0.794921875,0.7333984375,0.6591796875,0.6044921875,0.5712890625,0.5830078125,0.6357421875,0.6923828125,0.7197265625,0.697265625,0.634765625,0.55859375,0.4755859375,0.421875,0.4248046875,0.48046875,0.55078125,0.6044921875,0.654296875,0.71484375,0.767578125,0.7919921875,0.78515625,0.76171875,0.740234375,0.7275390625,0.740234375,0.7705078125,0.7978515625,0.8037109375,0.78125,0.740234375,0.685546875,0.6044921875,0.5166015625,0.4521484375,0.4306640625,0.443359375,0.46875,0.4951171875,0.513671875,0.5185546875,0.5078125,0.48828125,0.47265625,0.46875,0.4619140625,0.4248046875,0.3642578125,0.30078125,0.2568359375,0.2451171875,0.2587890625,0.2900390625,0.3642578125,0.4716796875,0.57421875,0.6396484375,0.654296875,0.634765625,0.595703125,0.5185546875,0.4306640625,0.375,0.3779296875,0.4296875,0.5,0.578125,0.669921875,0.740234375,0.7568359375,0.71875,0.65625,0.6044921875,0.55078125,0.4755859375,0.40234375,0.3671875,0.37890625,0.421875,0.46875,0.513671875,0.546875,0.5546875,0.53515625,0.501953125,0.4755859375,0.46875,0.4609375,0.4267578125,0.38671875,0.3720703125,0.3984375,0.458984375,0.5302734375,0.599609375,0.6533203125,0.67578125,0.666015625,0.638671875,0.6240234375,0.634765625,0.6572265625,0.6865234375,0.708984375,0.712890625,0.693359375,0.6630859375,0.634765625,0.615234375,0.6181640625,0.640625,0.6630859375,0.6669921875,0.6455078125,0.6044921875,0.5556640625,0.498046875,0.4521484375,0.435546875,0.4501953125,0.4775390625,0.5,0.517578125,0.5341796875,0.5576171875,0.59375,0.6416015625,0.693359375,0.740234375,0.7763671875,0.7666015625,0.6875,0.5517578125,0.40625,0.3017578125,0.2587890625,0.251953125,0.3203125,0.4521484375,0.59375,0.68359375,0.6923828125,0.634765625,0.564453125,0.5068359375,0.4775390625,0.48046875,0.5,0.5107421875,0.5,0.4912109375,0.5185546875,0.568359375,0.607421875,0.6083984375,0.56640625,0.5,0.4208984375,0.3291015625,0.2587890625,0.2421875,0.2802734375,0.3427734375,0.39453125,0.4482421875,0.5234375,0.5966796875,0.6318359375,0.6201171875,0.5771484375,0.5302734375,0.478515625,0.4091796875,0.3447265625,0.30859375,0.310546875,0.3359375,0.3642578125,0.4013671875,0.4765625,0.568359375,0.640625,0.666015625,0.646484375,0.6044921875,0.5576171875,0.5146484375,0.501953125,0.5380859375,0.6103515625,0.6865234375,0.740234375,0.775390625,0.767578125,0.7099609375,0.6240234375,0.5478515625,0.515625,0.5302734375,0.5625,0.6064453125,0.634765625,0.6181640625,0.5556640625,0.470703125,0.39453125,0.330078125,0.3056640625,0.3369140625,0.4111328125,0.4912109375,0.53515625,0.5302734375,0.513671875,0.5107421875,0.521484375,0.5380859375,0.548828125,0.5458984375,0.5302734375,0.5009765625,0.4462890625,0.388671875,0.4033203125,0.4658203125,0.51953125,0.541015625,0.5302734375,0.5126953125,0.5087890625,0.533203125,0.5849609375,0.6513671875,0.70703125,0.740234375,0.7509765625,0.7021484375,0.5966796875,0.474609375,0.3857421875,0.3623046875,0.39453125,0.431640625,0.4326171875,0.3916015625,0.3251953125,0.2666015625,0.2431640625,0.2587890625,0.2998046875,0.3857421875,0.4912109375,0.56640625,0.580078125,0.5380859375,0.46875,0.4072265625,0.3896484375,0.43359375,0.5185546875,0.6044921875,0.646484375,0.634765625,0.6220703125,0.6572265625,0.728515625,0.7978515625,0.828125,0.8037109375,0.740234375,0.6591796875,0.5546875,0.4609375,0.416015625,0.431640625,0.48046875,0.5302734375,0.580078125,0.6416015625,0.6923828125,0.712890625,0.697265625,0.6640625,0.634765625,0.595703125,0.5146484375,0.4189453125,0.3564453125,0.3515625,0.3994140625,0.46875,0.5390625,0.5966796875,0.626953125,0.62890625,0.6181640625,0.615234375,0.634765625,0.662109375,0.68359375,0.6845703125,0.6572265625,0.609375,0.5615234375,0.5302734375,0.5078125,0.498046875,0.4970703125,0.4912109375,0.47265625,0.4375,0.39453125,0.357421875,0.35546875,0.3974609375,0.4638671875,0.5224609375,0.5458984375,0.5302734375,0.498046875,0.4453125,0.3798828125,0.3203125,0.279296875,0.26171875,0.2587890625,0.2705078125,0.322265625,0.40234375,0.4775390625,0.515625,0.5087890625,0.46875,0.419921875,0.36328125,0.3173828125,0.30078125,0.314453125,0.341796875,0.3642578125,0.3916015625,0.451171875,0.5380859375,0.6298828125,0.69921875,0.734375,0.740234375,0.7265625,0.6572265625,0.53515625,0.400390625,0.2958984375,0.251953125,0.2587890625,0.2724609375,0.26953125,0.2666015625,0.2841796875,0.330078125,0.3974609375,0.46875,0.529296875,0.5439453125,0.5107421875,0.4580078125,0.4248046875,0.439453125,0.5,0.572265625,0.6357421875,0.6630859375,0.640625,0.5830078125,0.5283203125,0.5,0.4736328125,0.4306640625,0.3974609375,0.40234375,0.453125,0.529296875,0.6044921875,0.66015625,0.64453125,0.546875,0.4052734375,0.283203125,0.232421875,0.2587890625,0.3173828125,0.4189453125,0.5380859375,0.6298828125,0.6640625,0.6474609375,0.6044921875,0.552734375,0.4775390625,0.3916015625,0.3193359375,0.2763671875,0.2607421875,0.2587890625,0.263671875,0.2939453125,0.3583984375,0.447265625,0.53515625,0.6005859375,0.634765625,0.6611328125,0.677734375,0.6630859375,0.607421875,0.525390625,0.4482421875,0.39453125,0.359375,0.37109375,0.435546875,0.5302734375,0.6123046875,0.6484375,0.634765625,0.6064453125,0.572265625,0.5458984375,0.541015625,0.5576171875,0.5830078125,0.6044921875,0.630859375,0.677734375,0.7177734375,0.720703125,0.6767578125,0.603515625,0.5302734375,0.4521484375,0.3662109375,0.3056640625,0.30078125,0.3486328125,0.4169921875,0.46875,0.51171875,0.537109375,0.5380859375,0.5185546875,0.4951171875,0.486328125,0.5,0.5234375,0.560546875,0.6015625,0.6298828125,0.6357421875,0.623046875,0.6044921875,0.5791015625,0.5400390625,0.513671875,0.52734375,0.5849609375,0.6640625,0.740234375,0.8037109375,0.830078125,0.8095703125,0.759765625,0.71484375,0.7060546875,0.740234375,0.7841796875,0.810546875,0.7919921875,0.720703125,0.6181640625,0.525390625,0.46875,0.431640625,0.4306640625,0.4833984375,0.57421875,0.66796875,0.7275390625,0.740234375,0.73828125,0.72265625,0.6796875,0.607421875,0.521484375,0.4462890625,0.39453125,0.3525390625,0.3310546875,0.3369140625,0.36328125,0.3935546875,0.40625,0.39453125,0.3720703125,0.345703125,0.341796875,0.3828125,0.4638671875,0.556640625,0.634765625,0.7080078125,0.7763671875,0.8095703125,0.7900390625,0.7314453125,0.6708984375,0.634765625,0.6181640625,0.6376953125,0.6787109375,0.712890625,0.7119140625,0.671875,0.6044921875,0.5322265625,0.4677734375,0.44140625,0.46875,0.5341796875,0.5986328125,0.634765625,0.66015625,0.681640625,0.6953125,0.7041015625,0.7119140625,0.72265625,0.740234375,0.76171875,0.791015625,0.814453125,0.8173828125,0.798828125,0.7685546875,0.740234375,0.703125,0.6318359375,0.546875,0.482421875,0.4638671875,0.4873046875,0.5302734375,0.57421875,0.607421875,0.615234375,0.5966796875,0.5625,0.5361328125,0.5302734375,0.5263671875,0.50390625,0.4580078125,0.39453125,0.330078125,0.283203125,0.2587890625,0.2548828125,0.3095703125,0.4169921875,0.53515625,0.6181640625,0.6376953125,0.6044921875,0.5478515625,0.4609375,0.375,0.3359375,0.3603515625,0.42578125,0.5,0.576171875,0.66015625,0.7236328125,0.740234375,0.7119140625,0.6669921875,0.634765625,0.603515625,0.5556640625,0.5078125,0.48046875,0.4814453125,0.5029296875,0.5302734375,0.5556640625,0.5751953125,0.580078125,0.568359375,0.548828125,0.533203125,0.5302734375,0.5185546875,0.4697265625,0.40234375,0.3564453125,0.35546875,0.400390625,0.46875,0.544921875,0.625,0.6826171875,0.6953125,0.6689453125,0.6298828125,0.6044921875,0.5927734375,0.60546875,0.6357421875,0.662109375,0.66796875,0.646484375,0.6044921875,0.564453125,0.55078125,0.568359375,0.607421875,0.642578125,0.6533203125,0.634765625,0.6083984375,0.583984375,0.5634765625,0.546875,0.5322265625,0.517578125,0.5,0.4833984375,0.4833984375,0.513671875,0.57421875,0.646484375,0.7060546875,0.740234375,0.7607421875,0.748046875,0.6796875,0.560546875,0.4248046875,0.318359375,0.2587890625,0.232421875,0.283203125,0.4052734375,0.546875,0.64453125,0.66015625,0.6044921875,0.529296875,0.453125,0.40234375,0.3974609375,0.4306640625,0.4736328125,0.5,0.5283203125,0.5830078125,0.640625,0.6630859375,0.6357421875,0.572265625,0.5,0.4228515625,0.3388671875,0.275390625,0.2587890625,0.287109375,0.33203125,0.3642578125,0.3955078125,0.443359375,0.4912109375,0.5185546875,0.517578125,0.49609375,0.46875,0.435546875,0.380859375,0.3251953125,0.2978515625,0.30859375,0.3486328125,0.39453125,0.4482421875,0.525390625,0.607421875,0.6630859375,0.677734375,0.6611328125,0.634765625,0.6083984375,0.5859375,0.5849609375,0.61328125,0.6611328125,0.7080078125,0.740234375,0.7529296875,0.712890625,0.6240234375,0.521484375,0.4501953125,0.4345703125,0.46875,0.5205078125,0.5830078125,0.62109375,0.6044921875,0.5341796875,0.4423828125,0.3642578125,0.2939453125,0.2431640625,0.2392578125,0.2900390625,0.3701171875,0.4384765625,0.46875,0.4853515625,0.48828125,0.4775390625,0.4609375,0.4501953125,0.453125,0.46875,0.4775390625,0.4501953125,0.3994140625,0.5029296875,0.580078125,0.62109375,0.61328125,0.5703125,0.521484375,0.490234375,0.49609375,0.541015625,0.6044921875,0.6533203125,0.673828125,0.669921875,0.6142578125,0.5205078125,0.4296875,0.3837890625,0.39453125,0.4482421875,0.5029296875,0.52734375,0.50390625,0.4404296875,0.3701171875,0.3271484375,0.3251953125,0.34765625,0.41015625,0.48828125,0.5419921875,0.5439453125,0.498046875,0.4287109375,0.365234375,0.341796875,0.3798828125,0.46484375,0.5595703125,0.6171875,0.6220703125,0.623046875,0.6630859375,0.7265625,0.7744140625,0.7802734375,0.740234375,0.673828125,0.5927734375,0.4921875,0.41015625,0.38671875,0.4287109375,0.5029296875,0.5703125,0.6328125,0.689453125,0.7197265625,0.7119140625,0.67578125,0.638671875,0.6220703125,0.5966796875,0.5244140625,0.42578125,0.349609375,0.3271484375,0.3623046875,0.4287109375,0.501953125,0.5712890625,0.6201171875,0.63671875,0.6279296875,0.6171875,0.6220703125,0.6318359375,0.6396484375,0.6376953125,0.6240234375,0.6025390625,0.5830078125,0.5703125,0.5654296875,0.5791015625,0.595703125,0.59375,0.5625,0.5087890625,0.4482421875,0.392578125,0.3681640625,0.392578125,0.455078125,0.525390625,0.568359375,0.5703125,0.5546875,0.5166015625,0.4609375,0.400390625,0.353515625,0.330078125,0.3251953125,0.3369140625,0.384765625,0.453125,0.5068359375,0.5185546875,0.486328125,0.4287109375,0.361328125,0.2802734375,0.2197265625,0.2099609375,0.25390625,0.3203125,0.376953125,0.43359375,0.5068359375,0.58203125,0.638671875,0.6669921875,0.673828125,0.673828125,0.658203125,0.5859375,0.470703125,0.357421875,0.2890625,0.2841796875,0.3251953125,0.3671875,0.3759765625,0.3544921875,0.330078125,0.328125,0.3642578125,0.4287109375,0.490234375,0.509765625,0.4853515625,0.443359375,0.4189453125,0.4384765625,0.5,0.576171875,0.658203125,0.7099609375,0.701171875,0.6376953125,0.55859375,0.5,0.44140625,0.3681640625,0.3173828125,0.322265625,0.384765625,0.47265625,0.55078125,0.607421875,0.5966796875,0.513671875,0.3974609375,0.3056640625,0.28125,0.3251953125,0.3994140625,0.5068359375,0.6142578125,0.673828125,0.6669921875,0.6142578125,0.55078125,0.486328125,0.4140625,0.3525390625,0.318359375,0.314453125,0.322265625,0.3251953125,0.3310546875,0.361328125,0.4189453125,0.4931640625,0.5615234375,0.6044921875,0.6220703125,0.63671875,0.658203125,0.6669921875,0.642578125,0.5849609375,0.5126953125,0.4482421875,0.3935546875,0.3759765625,0.4111328125,0.4873046875,0.5703125,0.619140625,0.6220703125,0.6025390625,0.556640625,0.501953125,0.4658203125,0.466796875,0.501953125,0.55078125,0.611328125,0.6923828125,0.759765625,0.7734375,0.7265625,0.646484375,0.5703125,0.48828125,0.3828125,0.29296875,0.259765625,0.29296875,0.3623046875,0.4287109375,0.4833984375,0.5068359375,0.49609375,0.466796875,0.4462890625,0.45703125,0.5,0.5576171875,0.630859375,0.689453125,0.703125,0.6669921875,0.6064453125,0.55078125,0.494140625,0.4306640625,0.39453125,0.41796875,0.4970703125,0.59375,0.673828125,0.734375,0.7509765625,0.71875,0.6630859375,0.6201171875,0.6240234375,0.673828125,0.736328125,0.787109375,0.7890625,0.724609375,0.61328125,0.5029296875,0.4287109375,0.375,0.359375,0.4033203125,0.4931640625,0.59375,0.6591796875,0.673828125,0.6767578125,0.6845703125,0.6806640625,0.646484375,0.5849609375,0.5126953125,0.4482421875,0.3955078125,0.3798828125,0.40625,0.4541015625,0.490234375,0.4892578125,0.4482421875,0.392578125,0.3349609375,0.310546875,0.34765625,0.4375,0.541015625,0.6220703125,0.693359375,0.7509765625,0.7724609375,0.74609375,0.69140625,0.6416015625,0.6220703125,0.6201171875,0.6455078125,0.681640625,0.697265625,0.67578125,0.62109375,0.55078125,0.4814453125,0.431640625,0.4267578125,0.470703125,0.5419921875,0.599609375,0.6220703125,0.6259765625,0.6103515625,0.5859375,0.5732421875,0.5869140625,0.6240234375,0.673828125,0.724609375,0.767578125,0.78515625,0.767578125,0.7275390625,0.6904296875,0.673828125,0.65234375,0.5966796875,0.525390625,0.4765625,0.47265625,0.51171875,0.5703125,0.6298828125,0.6748046875,0.685546875,0.66015625,0.6142578125,0.578125,0.5703125,0.5712890625,0.5712890625,0.5546875,0.51171875,0.4482421875,0.380859375,0.3251953125,0.2900390625,0.3154296875,0.40234375,0.509765625,0.5859375,0.5986328125,0.55078125,0.48046875,0.3876953125,0.3115234375,0.29296875,0.3408203125,0.4228515625,0.5,0.5732421875,0.646484375,0.6953125,0.701171875,0.673828125,0.638671875,0.6220703125,0.609375,0.5888671875,0.568359375,0.5546875,0.552734375,0.5595703125,0.5703125,0.580078125,0.587890625,0.58984375,0.5849609375,0.5771484375,0.5712890625,0.5703125,0.556640625,0.498046875,0.4130859375,0.345703125,0.3271484375,0.3623046875,0.4287109375,0.5087890625,0.60546875,0.6845703125,0.7080078125,0.671875,0.607421875,0.55078125,0.509765625,0.5087890625,0.544921875,0.5927734375,0.619140625,0.603515625,0.55078125,0.494140625,0.46484375,0.4765625,0.525390625,0.5849609375,0.6220703125,0.6220703125,0.6162109375,0.623046875,0.6318359375,0.6259765625,0.5966796875,0.55078125,0.5,0.4521484375,0.4306640625,0.4521484375,0.5146484375,0.59375,0.65234375,0.673828125,0.68359375,0.6845703125,0.6552734375,0.5849609375,0.48828125,0.39453125,0.3251953125,0.28125,0.3056640625,0.3974609375,0.513671875,0.5966796875,0.607421875,0.55078125,0.47265625,0.384765625,0.322265625,0.3173828125,0.3681640625,0.44140625,0.5,0.55859375,0.6376953125,0.701171875,0.7099609375,0.658203125,0.576171875,0.5,0.42578125,0.3525390625,0.3037109375,0.2978515625,0.3251953125,0.3603515625,0.376953125,0.3896484375,0.41015625,0.4306640625,0.4443359375,0.4462890625,0.439453125,0.4287109375,0.4111328125,0.3701171875,0.326171875,0.3095703125,0.3330078125,0.38671875,0.4482421875,0.5126953125,0.5849609375,0.642578125,0.6669921875,0.658203125,0.63671875,0.6220703125,0.611328125,0.6044921875,0.60546875,0.619140625,0.640625,0.66015625,0.673828125,0.6689453125,0.611328125,0.5126953125,0.41796875,0.3671875,0.3759765625,0.4287109375,0.4970703125,0.578125,0.630859375,0.6220703125,0.55078125,0.45703125,0.376953125,0.3017578125,0.2255859375,0.1865234375,0.208984375,0.283203125,0.3681640625,0.4287109375,0.4716796875,0.4794921875,0.4501953125,0.4072265625,0.37890625,0.38671875,0.4287109375,0.46875,0.4638671875,0.419921875,0.57421875,0.638671875,0.65625,0.623046875,0.5595703125,0.4931640625,0.4443359375,0.4345703125,0.46875,0.5244140625,0.5673828125,0.5791015625,0.5693359375,0.5185546875,0.4462890625,0.392578125,0.384765625,0.423828125,0.4892578125,0.5556640625,0.59765625,0.59375,0.544921875,0.4775390625,0.4296875,0.419921875,0.431640625,0.4775390625,0.53515625,0.5703125,0.560546875,0.5087890625,0.439453125,0.373046875,0.337890625,0.3544921875,0.419921875,0.501953125,0.5576171875,0.5693359375,0.578125,0.619140625,0.6748046875,0.708984375,0.69921875,0.6484375,0.5791015625,0.4990234375,0.4033203125,0.333984375,0.3291015625,0.3916015625,0.4814453125,0.5595703125,0.6279296875,0.681640625,0.697265625,0.671875,0.62109375,0.580078125,0.5693359375,0.5546875,0.49609375,0.4130859375,0.349609375,0.3349609375,0.373046875,0.439453125,0.5126953125,0.5791015625,0.6201171875,0.6240234375,0.599609375,0.57421875,0.5693359375,0.5712890625,0.572265625,0.5712890625,0.568359375,0.564453125,0.5615234375,0.5595703125,0.5654296875,0.5966796875,0.6328125,0.6455078125,0.6181640625,0.55859375,0.4892578125,0.4228515625,0.3818359375,0.3857421875,0.4345703125,0.501953125,0.5498046875,0.5595703125,0.5546875,0.5361328125,0.5048828125,0.46875,0.4384765625,0.4228515625,0.419921875,0.4296875,0.47265625,0.529296875,0.564453125,0.556640625,0.5078125,0.439453125,0.3623046875,0.26953125,0.203125,0.201171875,0.2646484375,0.353515625,0.4296875,0.5,0.568359375,0.6142578125,0.6240234375,0.6064453125,0.5849609375,0.5791015625,0.56640625,0.5068359375,0.419921875,0.349609375,0.326171875,0.357421875,0.419921875,0.4765625,0.4873046875,0.451171875,0.3974609375,0.3642578125,0.37890625,0.439453125,0.5009765625,0.5185546875,0.4921875,0.447265625,0.419921875,0.4384765625,0.5,0.5791015625,0.6708984375,0.7353515625,0.7333984375,0.66796875,0.576171875,0.5,0.4228515625,0.3330078125,0.2685546875,0.2705078125,0.3369140625,0.4296875,0.509765625,0.5673828125,0.568359375,0.5087890625,0.42578125,0.365234375,0.36328125,0.419921875,0.5,0.6025390625,0.6875,0.7119140625,0.666015625,0.5849609375,0.509765625,0.439453125,0.376953125,0.34375,0.3505859375,0.3818359375,0.412109375,0.419921875,0.4228515625,0.4404296875,0.47265625,0.5107421875,0.544921875,0.564453125,0.5693359375,0.5791015625,0.611328125,0.6455078125,0.6533203125,0.6220703125,0.5595703125,0.4892578125,0.423828125,0.3828125,0.388671875,0.4404296875,0.509765625,0.5595703125,0.5693359375,0.556640625,0.5087890625,0.4443359375,0.3994140625,0.400390625,0.4443359375,0.509765625,0.5869140625,0.6845703125,0.76171875,0.7763671875,0.7236328125,0.6376953125,0.5595703125,0.4765625,0.369140625,0.27734375,0.24609375,0.2861328125,0.3642578125,0.439453125,0.5,0.5185546875,0.494140625,0.451171875,0.4248046875,0.44140625,0.5,0.576171875,0.6669921875,0.732421875,0.7353515625,0.673828125,0.5849609375,0.509765625,0.4345703125,0.3515625,0.30078125,0.318359375,0.3974609375,0.498046875,0.5791015625,0.6396484375,0.6513671875,0.6123046875,0.5517578125,0.51171875,0.521484375,0.5791015625,0.654296875,0.728515625,0.7626953125,0.7255859375,0.6298828125,0.5205078125,0.439453125,0.375,0.3408203125,0.3583984375,0.4248046875,0.5087890625,0.56640625,0.5791015625,0.5869140625,0.6171875,0.6484375,0.6552734375,0.6220703125,0.5595703125,0.4892578125,0.4306640625,0.419921875,0.45703125,0.515625,0.5556640625,0.5458984375,0.4892578125,0.4150390625,0.3330078125,0.2841796875,0.3046875,0.38671875,0.48828125,0.5693359375,0.6396484375,0.6923828125,0.70703125,0.677734375,0.6240234375,0.5810546875,0.5693359375,0.576171875,0.609375,0.6494140625,0.6640625,0.638671875,0.580078125,0.509765625,0.4404296875,0.39453125,0.3935546875,0.439453125,0.505859375,0.556640625,0.5693359375,0.5615234375,0.5244140625,0.4755859375,0.44921875,0.462890625,0.5126953125,0.5791015625,0.646484375,0.697265625,0.7109375,0.6826171875,0.6318359375,0.5908203125,0.5791015625,0.5673828125,0.5234375,0.4658203125,0.431640625,0.44140625,0.4912109375,0.5595703125,0.6279296875,0.6787109375,0.69140625,0.662109375,0.609375,0.5693359375,0.5595703125,0.5654296875,0.5888671875,0.6083984375,0.6005859375,0.556640625,0.4892578125,0.419921875,0.365234375,0.3671875,0.4267578125,0.5087890625,0.56640625,0.56640625,0.509765625,0.4306640625,0.3369140625,0.2685546875,0.2646484375,0.328125,0.419921875,0.5,0.5712890625,0.6328125,0.6630859375,0.65234375,0.61328125,0.5791015625,0.5693359375,0.5673828125,0.5634765625,0.5595703125,0.5576171875,0.556640625,0.5576171875,0.5595703125,0.560546875,0.5625,0.5625,0.5615234375,0.560546875,0.5595703125,0.5595703125,0.546875,0.490234375,0.41015625,0.3486328125,0.3349609375,0.373046875,0.439453125,0.5205078125,0.62109375,0.701171875,0.7177734375,0.66796875,0.583984375,0.509765625,0.453125,0.443359375,0.4833984375,0.5419921875,0.5791015625,0.568359375,0.509765625,0.443359375,0.400390625,0.4013671875,0.4482421875,0.5126953125,0.5595703125,0.5693359375,0.5751953125,0.60546875,0.640625,0.65234375,0.625,0.5673828125,0.5,0.4345703125,0.3935546875,0.3974609375,0.4462890625,0.515625,0.56640625,0.5791015625,0.5869140625,0.609375,0.6259765625,0.61328125,0.5634765625,0.4921875,0.419921875,0.36328125,0.365234375,0.42578125,0.5087890625,0.568359375,0.5673828125,0.509765625,0.4296875,0.3369140625,0.2705078125,0.2685546875,0.3330078125,0.4228515625,0.5,0.576171875,0.66796875,0.7333984375,0.7353515625,0.6708984375,0.5791015625,0.5,0.427734375,0.3662109375,0.3359375,0.3466796875,0.3857421875,0.419921875,0.4296875,0.431640625,0.435546875,0.439453125,0.44140625,0.4423828125,0.44140625,0.439453125,0.4296875,0.3935546875,0.3525390625,0.3369140625,0.361328125,0.419921875,0.4892578125,0.5595703125,0.6220703125,0.6533203125,0.6455078125,0.611328125,0.5791015625,0.5693359375,0.5673828125,0.56640625,0.5673828125,0.5703125,0.57421875,0.5771484375,0.5791015625,0.568359375,0.51171875,0.4287109375,0.361328125,0.341796875,0.375,0.439453125,0.517578125,0.609375,0.673828125,0.671875,0.603515625,0.509765625,0.4296875,0.3505859375,0.259765625,0.197265625,0.2021484375,0.2705078125,0.36328125,0.439453125,0.4970703125,0.5068359375,0.46875,0.4111328125,0.3720703125,0.3828125,0.439453125,0.49609375,0.5048828125,0.4638671875,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.6201171875,0.609375,0.5615234375,0.4912109375,0.419921875,0.3515625,0.3017578125,0.2900390625,0.3203125,0.3720703125,0.412109375,0.419921875,0.41015625,0.3798828125,0.3466796875,0.341796875,0.3759765625,0.439453125,0.509765625,0.5791015625,0.63671875,0.6611328125,0.646484375,0.6083984375,0.576171875,0.5693359375,0.5810546875,0.625,0.681640625,0.7138671875,0.701171875,0.6494140625,0.5791015625,0.505859375,0.435546875,0.3876953125,0.376953125,0.3935546875,0.4150390625,0.419921875,0.427734375,0.4658203125,0.5166015625,0.546875,0.53515625,0.486328125,0.419921875,0.34375,0.2529296875,0.1875,0.1875,0.2509765625,0.341796875,0.419921875,0.48828125,0.5419921875,0.5595703125,0.53515625,0.4873046875,0.44921875,0.439453125,0.4326171875,0.4052734375,0.37890625,0.3798828125,0.419921875,0.486328125,0.5595703125,0.6259765625,0.6640625,0.650390625,0.5888671875,0.5087890625,0.4521484375,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.439453125,0.451171875,0.5,0.568359375,0.6162109375,0.619140625,0.576171875,0.509765625,0.439453125,0.3798828125,0.3515625,0.3623046875,0.3994140625,0.431640625,0.439453125,0.4423828125,0.4580078125,0.486328125,0.5185546875,0.544921875,0.55859375,0.5595703125,0.5673828125,0.6083984375,0.6611328125,0.6923828125,0.6806640625,0.62890625,0.5595703125,0.48046875,0.388671875,0.326171875,0.3310546875,0.40234375,0.4990234375,0.5791015625,0.6455078125,0.6796875,0.6611328125,0.5927734375,0.5087890625,0.451171875,0.439453125,0.4345703125,0.4091796875,0.3837890625,0.3857421875,0.423828125,0.48828125,0.5595703125,0.6181640625,0.62890625,0.591796875,0.533203125,0.4931640625,0.5029296875,0.5595703125,0.615234375,0.6181640625,0.56640625,0.4921875,0.44140625,0.4443359375,0.5,0.576171875,0.66796875,0.7353515625,0.73828125,0.6767578125,0.5869140625,0.509765625,0.4306640625,0.3369140625,0.267578125,0.26171875,0.322265625,0.412109375,0.4892578125,0.5498046875,0.5712890625,0.55078125,0.513671875,0.4921875,0.5107421875,0.5693359375,0.6435546875,0.7236328125,0.76953125,0.748046875,0.6669921875,0.5673828125,0.4892578125,0.4248046875,0.3818359375,0.3837890625,0.4306640625,0.4970703125,0.546875,0.5595703125,0.5576171875,0.5419921875,0.5126953125,0.4765625,0.447265625,0.431640625,0.4296875,0.443359375,0.494140625,0.564453125,0.615234375,0.6181640625,0.576171875,0.509765625,0.439453125,0.3798828125,0.3515625,0.3623046875,0.3994140625,0.431640625,0.439453125,0.431640625,0.3994140625,0.361328125,0.3486328125,0.3740234375,0.431640625,0.5,0.5732421875,0.6533203125,0.69921875,0.6787109375,0.5966796875,0.498046875,0.419921875,0.3466796875,0.2734375,0.240234375,0.2783203125,0.3759765625,0.486328125,0.5693359375,0.6279296875,0.630859375,0.5751953125,0.4951171875,0.4365234375,0.4345703125,0.4892578125,0.56640625,0.6591796875,0.728515625,0.734375,0.6748046875,0.5869140625,0.509765625,0.4296875,0.3271484375,0.2412109375,0.2177734375,0.2626953125,0.34375,0.419921875,0.478515625,0.4931640625,0.458984375,0.40625,0.37109375,0.3828125,0.439453125,0.51953125,0.626953125,0.72265625,0.7607421875,0.7275390625,0.6533203125,0.5791015625,0.5078125,0.439453125,0.39453125,0.384765625,0.4033203125,0.4248046875,0.4296875,0.439453125,0.484375,0.548828125,0.5947265625,0.595703125,0.5546875,0.4892578125,0.4326171875,0.421875,0.4609375,0.5185546875,0.556640625,0.546875,0.4892578125,0.412109375,0.3154296875,0.23828125,0.22265625,0.2724609375,0.35546875,0.4296875,0.49609375,0.5439453125,0.552734375,0.5205078125,0.4677734375,0.427734375,0.419921875,0.4326171875,0.484375,0.5537109375,0.6015625,0.6025390625,0.5576171875,0.4892578125,0.4189453125,0.3603515625,0.3349609375,0.349609375,0.3896484375,0.4228515625,0.4296875,0.41796875,0.375,0.3212890625,0.2919921875,0.306640625,0.359375,0.4296875,0.5,0.5517578125,0.56640625,0.5380859375,0.4873046875,0.4482421875,0.439453125,0.431640625,0.3916015625,0.33984375,0.3095703125,0.3212890625,0.3720703125,0.439453125,0.5078125,0.55859375,0.572265625,0.5419921875,0.490234375,0.44921875,0.439453125,0.4521484375,0.5078125,0.587890625,0.650390625,0.6669921875,0.6328125,0.5693359375,0.5107421875,0.4931640625,0.515625,0.5537109375,0.57421875,0.5517578125,0.4892578125,0.41015625,0.3193359375,0.2578125,0.26171875,0.330078125,0.4228515625,0.5,0.564453125,0.6044921875,0.599609375,0.5498046875,0.48046875,0.4306640625,0.419921875,0.419921875,0.4228515625,0.42578125,0.4296875,0.4306640625,0.4306640625,0.4296875,0.427734375,0.4267578125,0.42578125,0.423828125,0.4228515625,0.421875,0.419921875,0.412109375,0.3876953125,0.3681640625,0.3759765625,0.421875,0.4892578125,0.5595703125,0.6337890625,0.7158203125,0.765625,0.748046875,0.66796875,0.568359375,0.4892578125,0.4306640625,0.419921875,0.45703125,0.515625,0.5556640625,0.5458984375,0.4892578125,0.421875,0.36328125,0.3349609375,0.345703125,0.380859375,0.412109375,0.419921875,0.431640625,0.4833984375,0.5546875,0.60546875,0.6103515625,0.5673828125,0.5,0.427734375,0.3662109375,0.3349609375,0.34375,0.3798828125,0.412109375,0.419921875,0.4326171875,0.490234375,0.57421875,0.640625,0.658203125,0.6240234375,0.5595703125,0.5,0.4814453125,0.5068359375,0.5478515625,0.5712890625,0.55078125,0.4892578125,0.41015625,0.3173828125,0.2529296875,0.2548828125,0.32421875,0.419921875,0.5,0.5791015625,0.6728515625,0.7392578125,0.740234375,0.67578125,0.5859375,0.509765625,0.4443359375,0.4033203125,0.404296875,0.4501953125,0.5146484375,0.5595703125,0.5693359375,0.568359375,0.568359375,0.5693359375,0.5732421875,0.576171875,0.5791015625,0.5791015625,0.5673828125,0.515625,0.4443359375,0.3935546875,0.388671875,0.431640625,0.5,0.568359375,0.61328125,0.61328125,0.56640625,0.5,0.451171875,0.439453125,0.439453125,0.4375,0.43359375,0.4306640625,0.4287109375,0.4287109375,0.4296875,0.4248046875,0.3994140625,0.375,0.37890625,0.419921875,0.486328125,0.5595703125,0.638671875,0.732421875,0.7978515625,0.796875,0.73046875,0.6376953125,0.5595703125,0.4814453125,0.3916015625,0.3291015625,0.333984375,0.4033203125,0.4990234375,0.5791015625,0.6396484375,0.65234375,0.6142578125,0.5556640625,0.5146484375,0.5224609375,0.5791015625,0.6357421875,0.6435546875,0.6005859375,0.6220703125,0.5654296875,0.48046875,0.3935546875,0.3251953125,0.267578125,0.228515625,0.224609375,0.2548828125,0.298828125,0.3271484375,0.3251953125,0.3125,0.296875,0.298828125,0.3369140625,0.40625,0.484375,0.55078125,0.611328125,0.658203125,0.677734375,0.666015625,0.6376953125,0.6181640625,0.6220703125,0.642578125,0.6982421875,0.765625,0.8046875,0.7958984375,0.7431640625,0.673828125,0.5966796875,0.5087890625,0.4248046875,0.3681640625,0.341796875,0.333984375,0.3251953125,0.322265625,0.3447265625,0.380859375,0.40625,0.4052734375,0.3740234375,0.3251953125,0.267578125,0.1943359375,0.1396484375,0.134765625,0.1845703125,0.2587890625,0.3251953125,0.3876953125,0.4453125,0.4794921875,0.48046875,0.4580078125,0.435546875,0.4287109375,0.421875,0.3974609375,0.3759765625,0.3828125,0.427734375,0.4970703125,0.5703125,0.63671875,0.671875,0.6533203125,0.5859375,0.5009765625,0.4423828125,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4287109375,0.4404296875,0.4912109375,0.5634765625,0.6220703125,0.6376953125,0.6083984375,0.55078125,0.48828125,0.4287109375,0.390625,0.3837890625,0.40234375,0.4228515625,0.4287109375,0.43359375,0.45703125,0.49609375,0.5380859375,0.5673828125,0.5771484375,0.5703125,0.5703125,0.6044921875,0.6552734375,0.6904296875,0.6845703125,0.638671875,0.5703125,0.4931640625,0.4111328125,0.3671875,0.39453125,0.484375,0.5908203125,0.673828125,0.736328125,0.7529296875,0.7041015625,0.6044921875,0.498046875,0.4345703125,0.4287109375,0.43359375,0.4228515625,0.41015625,0.41796875,0.4521484375,0.5087890625,0.5703125,0.623046875,0.6376953125,0.611328125,0.5634765625,0.52734375,0.529296875,0.5703125,0.611328125,0.6103515625,0.5654296875,0.50390625,0.4599609375,0.458984375,0.5,0.55859375,0.6376953125,0.705078125,0.72265625,0.6845703125,0.6171875,0.55078125,0.48046875,0.3876953125,0.3076171875,0.2802734375,0.314453125,0.3818359375,0.4482421875,0.5048828125,0.541015625,0.552734375,0.5517578125,0.5537109375,0.576171875,0.6220703125,0.673828125,0.7197265625,0.728515625,0.6826171875,0.5966796875,0.5087890625,0.4482421875,0.3994140625,0.37109375,0.380859375,0.4306640625,0.498046875,0.5498046875,0.5703125,0.57421875,0.552734375,0.50390625,0.443359375,0.39453125,0.373046875,0.376953125,0.400390625,0.46484375,0.55078125,0.6181640625,0.6376953125,0.6083984375,0.55078125,0.48828125,0.4287109375,0.390625,0.3837890625,0.40234375,0.4228515625,0.4287109375,0.423828125,0.40234375,0.3798828125,0.376953125,0.40234375,0.4482421875,0.5,0.5517578125,0.59765625,0.6064453125,0.560546875,0.474609375,0.38671875,0.3251953125,0.2734375,0.23046875,0.2333984375,0.302734375,0.419921875,0.5380859375,0.6220703125,0.6806640625,0.681640625,0.6181640625,0.5205078125,0.4375,0.412109375,0.4482421875,0.5087890625,0.59375,0.671875,0.7041015625,0.677734375,0.615234375,0.55078125,0.4775390625,0.3701171875,0.2626953125,0.203125,0.2099609375,0.2626953125,0.3251953125,0.380859375,0.408203125,0.4052734375,0.384765625,0.37109375,0.3857421875,0.4287109375,0.4931640625,0.595703125,0.705078125,0.7744140625,0.779296875,0.734375,0.673828125,0.6083984375,0.533203125,0.4638671875,0.416015625,0.3935546875,0.3857421875,0.376953125,0.3759765625,0.40625,0.4580078125,0.5029296875,0.5166015625,0.494140625,0.4482421875,0.4052734375,0.3974609375,0.4267578125,0.4697265625,0.498046875,0.490234375,0.4482421875,0.3896484375,0.314453125,0.2509765625,0.232421875,0.263671875,0.322265625,0.376953125,0.423828125,0.44921875,0.439453125,0.3994140625,0.3525390625,0.32421875,0.3251953125,0.3486328125,0.4130859375,0.4951171875,0.5537109375,0.5595703125,0.5166015625,0.4482421875,0.3779296875,0.3232421875,0.3017578125,0.3173828125,0.353515625,0.37890625,0.376953125,0.357421875,0.3076171875,0.2529296875,0.2265625,0.248046875,0.3056640625,0.376953125,0.447265625,0.5,0.5166015625,0.4951171875,0.455078125,0.427734375,0.4287109375,0.4306640625,0.40234375,0.3583984375,0.328125,0.33203125,0.37109375,0.4287109375,0.48828125,0.533203125,0.544921875,0.5185546875,0.4736328125,0.4375,0.4287109375,0.4404296875,0.4931640625,0.57421875,0.6474609375,0.6806640625,0.6669921875,0.6220703125,0.578125,0.5615234375,0.56640625,0.572265625,0.55859375,0.5146484375,0.4482421875,0.3720703125,0.296875,0.2568359375,0.279296875,0.353515625,0.4384765625,0.5,0.544921875,0.5615234375,0.5322265625,0.4638671875,0.3876953125,0.3369140625,0.3251953125,0.328125,0.3408203125,0.3603515625,0.3779296875,0.3876953125,0.3857421875,0.376953125,0.3671875,0.359375,0.353515625,0.3486328125,0.34375,0.3359375,0.3251953125,0.314453125,0.306640625,0.3212890625,0.369140625,0.4404296875,0.513671875,0.5703125,0.625,0.68359375,0.7109375,0.68359375,0.6064453125,0.517578125,0.4482421875,0.3955078125,0.3798828125,0.40625,0.4541015625,0.490234375,0.4892578125,0.4482421875,0.3955078125,0.34375,0.306640625,0.2958984375,0.306640625,0.3212890625,0.3251953125,0.33984375,0.40234375,0.4951171875,0.5712890625,0.5966796875,0.5654296875,0.5,0.42578125,0.3525390625,0.2998046875,0.2841796875,0.298828125,0.3193359375,0.3251953125,0.33984375,0.4052734375,0.505859375,0.595703125,0.6396484375,0.6240234375,0.5703125,0.517578125,0.5,0.5146484375,0.5380859375,0.5439453125,0.51171875,0.4482421875,0.369140625,0.28125,0.2265625,0.240234375,0.318359375,0.4189453125,0.5,0.5771484375,0.666015625,0.728515625,0.7333984375,0.6826171875,0.609375,0.55078125,0.5048828125,0.482421875,0.49609375,0.541015625,0.5927734375,0.623046875,0.6220703125,0.61328125,0.611328125,0.62109375,0.638671875,0.658203125,0.6708984375,0.673828125,0.6591796875,0.5966796875,0.50390625,0.427734375,0.40234375,0.43359375,0.5,0.5673828125,0.611328125,0.609375,0.5595703125,0.4912109375,0.4404296875,0.4287109375,0.4267578125,0.4140625,0.39453125,0.376953125,0.3671875,0.3681640625,0.376953125,0.3818359375,0.37109375,0.3623046875,0.37890625,0.427734375,0.4970703125,0.5703125,0.6484375,0.736328125,0.794921875,0.791015625,0.7265625,0.6396484375,0.5703125,0.5029296875,0.4287109375,0.38671875,0.41015625,0.4921875,0.5927734375,0.673828125,0.736328125,0.7587890625,0.734375,0.6826171875,0.638671875,0.6337890625,0.673828125,0.7138671875,0.708984375,0.6572265625,0.61328125,0.521484375,0.4091796875,0.3154296875,0.2587890625,0.21875,0.201171875,0.2119140625,0.2421875,0.271484375,0.2783203125,0.2587890625,0.2353515625,0.2314453125,0.26953125,0.353515625,0.4580078125,0.548828125,0.6044921875,0.6455078125,0.6669921875,0.6630859375,0.640625,0.6181640625,0.615234375,0.634765625,0.6728515625,0.7470703125,0.828125,0.8759765625,0.8662109375,0.8115234375,0.740234375,0.6630859375,0.5673828125,0.4658203125,0.380859375,0.322265625,0.2861328125,0.2587890625,0.236328125,0.2275390625,0.2373046875,0.255859375,0.2724609375,0.2734375,0.2587890625,0.234375,0.1943359375,0.15625,0.1455078125,0.16796875,0.2119140625,0.2587890625,0.3076171875,0.3662109375,0.421875,0.4580078125,0.4716796875,0.470703125,0.46875,0.4609375,0.4267578125,0.38671875,0.3720703125,0.3984375,0.458984375,0.5302734375,0.5986328125,0.6435546875,0.642578125,0.5966796875,0.529296875,0.48046875,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.46875,0.478515625,0.521484375,0.5849609375,0.640625,0.662109375,0.6455078125,0.6044921875,0.5576171875,0.5078125,0.46875,0.4521484375,0.4560546875,0.4658203125,0.46875,0.474609375,0.4970703125,0.5302734375,0.5576171875,0.56640625,0.5537109375,0.5302734375,0.5146484375,0.5361328125,0.5849609375,0.626953125,0.6328125,0.595703125,0.5302734375,0.455078125,0.38671875,0.3662109375,0.421875,0.5361328125,0.6552734375,0.740234375,0.7998046875,0.8037109375,0.7373046875,0.6240234375,0.5146484375,0.4599609375,0.46875,0.490234375,0.490234375,0.474609375,0.4609375,0.462890625,0.48828125,0.5302734375,0.5712890625,0.59375,0.587890625,0.560546875,0.5302734375,0.517578125,0.5302734375,0.544921875,0.5439453125,0.5263671875,0.5029296875,0.4853515625,0.484375,0.5,0.5263671875,0.580078125,0.640625,0.6796875,0.6806640625,0.6484375,0.6044921875,0.5498046875,0.4638671875,0.375,0.3193359375,0.314453125,0.3486328125,0.39453125,0.44140625,0.4931640625,0.541015625,0.5771484375,0.6005859375,0.6171875,0.634765625,0.650390625,0.646484375,0.6103515625,0.546875,0.4755859375,0.4208984375,0.39453125,0.375,0.3623046875,0.3701171875,0.40234375,0.451171875,0.498046875,0.5302734375,0.5478515625,0.5322265625,0.48046875,0.4140625,0.3623046875,0.345703125,0.3642578125,0.4013671875,0.4765625,0.568359375,0.640625,0.666015625,0.646484375,0.6044921875,0.5576171875,0.5078125,0.46875,0.4521484375,0.4560546875,0.4658203125,0.46875,0.466796875,0.4599609375,0.4521484375,0.4521484375,0.462890625,0.48046875,0.5,0.5146484375,0.5107421875,0.474609375,0.4111328125,0.33984375,0.28515625,0.2587890625,0.2392578125,0.2294921875,0.2568359375,0.3330078125,0.4443359375,0.5537109375,0.634765625,0.6962890625,0.708984375,0.654296875,0.5517578125,0.4482421875,0.3916015625,0.39453125,0.423828125,0.490234375,0.57421875,0.640625,0.6650390625,0.646484375,0.6044921875,0.5458984375,0.4443359375,0.3251953125,0.234375,0.19921875,0.216796875,0.2587890625,0.3056640625,0.3525390625,0.39453125,0.4228515625,0.439453125,0.4521484375,0.46875,0.5,0.5732421875,0.6708984375,0.75390625,0.7919921875,0.7802734375,0.740234375,0.6904296875,0.626953125,0.5546875,0.4853515625,0.4306640625,0.392578125,0.3642578125,0.341796875,0.3369140625,0.353515625,0.3798828125,0.4033203125,0.408203125,0.39453125,0.37890625,0.3759765625,0.38671875,0.40234375,0.4130859375,0.41015625,0.39453125,0.373046875,0.34375,0.3193359375,0.3115234375,0.322265625,0.34375,0.3642578125,0.3759765625,0.3623046875,0.322265625,0.275390625,0.2431640625,0.23828125,0.2587890625,0.2978515625,0.375,0.4638671875,0.5185546875,0.515625,0.46484375,0.39453125,0.3271484375,0.287109375,0.2861328125,0.3203125,0.361328125,0.380859375,0.3642578125,0.328125,0.267578125,0.208984375,0.189453125,0.22265625,0.291015625,0.3642578125,0.4326171875,0.482421875,0.5,0.4853515625,0.4609375,0.451171875,0.46875,0.48828125,0.4814453125,0.4521484375,0.421875,0.4111328125,0.4287109375,0.46875,0.513671875,0.546875,0.5546875,0.53515625,0.501953125,0.4755859375,0.46875,0.4755859375,0.5068359375,0.5576171875,0.609375,0.6435546875,0.6494140625,0.634765625,0.62109375,0.619140625,0.6162109375,0.5908203125,0.5380859375,0.466796875,0.39453125,0.32421875,0.2734375,0.26953125,0.3203125,0.400390625,0.46875,0.5,0.5126953125,0.4970703125,0.447265625,0.375,0.3076171875,0.267578125,0.2587890625,0.2646484375,0.29296875,0.3359375,0.375,0.3935546875,0.3876953125,0.3642578125,0.33984375,0.3232421875,0.314453125,0.30859375,0.2998046875,0.283203125,0.2587890625,0.2373046875,0.2392578125,0.28125,0.35546875,0.439453125,0.5009765625,0.5302734375,0.5517578125,0.5751953125,0.58203125,0.5576171875,0.5048828125,0.4443359375,0.39453125,0.3525390625,0.3310546875,0.3369140625,0.36328125,0.3935546875,0.40625,0.39453125,0.373046875,0.3427734375,0.30859375,0.28125,0.2646484375,0.259765625,0.2587890625,0.2744140625,0.345703125,0.4521484375,0.546875,0.5869140625,0.5634765625,0.5,0.423828125,0.3427734375,0.275390625,0.2421875,0.2421875,0.2548828125,0.2587890625,0.271484375,0.3310546875,0.4248046875,0.515625,0.568359375,0.5673828125,0.5302734375,0.4921875,0.484375,0.5,0.513671875,0.50390625,0.4609375,0.39453125,0.3173828125,0.2353515625,0.1923828125,0.220703125,0.310546875,0.4169921875,0.5,0.57421875,0.650390625,0.701171875,0.70703125,0.673828125,0.630859375,0.6044921875,0.5908203125,0.595703125,0.619140625,0.6455078125,0.662109375,0.6572265625,0.634765625,0.611328125,0.60546875,0.6240234375,0.6630859375,0.7060546875,0.734375,0.740234375,0.724609375,0.6533203125,0.546875,0.4521484375,0.412109375,0.435546875,0.5,0.568359375,0.6171875,0.6240234375,0.5849609375,0.525390625,0.4794921875,0.46875,0.462890625,0.4345703125,0.3916015625,0.3525390625,0.333984375,0.3408203125,0.3642578125,0.3837890625,0.380859375,0.3701171875,0.3720703125,0.40234375,0.4599609375,0.5302734375,0.60546875,0.6845703125,0.7314453125,0.720703125,0.6591796875,0.583984375,0.5302734375,0.48046875,0.431640625,0.416015625,0.4609375,0.5546875,0.6591796875,0.740234375,0.8076171875,0.8486328125,0.84765625,0.8095703125,0.759765625,0.7314453125,0.740234375,0.7509765625,0.728515625,0.6708984375,0.6015625,0.501953125,0.38671875,0.298828125,0.2587890625,0.2392578125,0.2470703125,0.275390625,0.3056640625,0.3173828125,0.2998046875,0.2587890625,0.2197265625,0.216796875,0.2734375,0.3798828125,0.5029296875,0.5947265625,0.634765625,0.6533203125,0.642578125,0.607421875,0.568359375,0.55078125,0.564453125,0.6044921875,0.662109375,0.7529296875,0.8447265625,0.892578125,0.875,0.8134765625,0.740234375,0.6650390625,0.5810546875,0.494140625,0.416015625,0.3544921875,0.3046875,0.2587890625,0.2119140625,0.16796875,0.1455078125,0.15625,0.1943359375,0.234375,0.2587890625,0.2734375,0.2724609375,0.255859375,0.2373046875,0.2275390625,0.236328125,0.2587890625,0.291015625,0.3427734375,0.408203125,0.46875,0.509765625,0.52734375,0.5302734375,0.5185546875,0.4697265625,0.40234375,0.3564453125,0.35546875,0.400390625,0.46875,0.5400390625,0.6005859375,0.626953125,0.6123046875,0.572265625,0.5380859375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5302734375,0.5361328125,0.564453125,0.607421875,0.646484375,0.6650390625,0.658203125,0.634765625,0.6064453125,0.5751953125,0.546875,0.5302734375,0.5263671875,0.5283203125,0.5302734375,0.53515625,0.5537109375,0.57421875,0.5771484375,0.5556640625,0.5146484375,0.46875,0.4345703125,0.443359375,0.48828125,0.5380859375,0.55859375,0.5322265625,0.46875,0.3955078125,0.3349609375,0.328125,0.3994140625,0.52734375,0.654296875,0.740234375,0.798828125,0.798828125,0.7314453125,0.626953125,0.53515625,0.5009765625,0.5302734375,0.5693359375,0.5791015625,0.5546875,0.5078125,0.4658203125,0.451171875,0.46875,0.4970703125,0.52734375,0.546875,0.5439453125,0.5205078125,0.4912109375,0.46875,0.4541015625,0.455078125,0.47265625,0.49609375,0.513671875,0.5146484375,0.5,0.48828125,0.505859375,0.5517578125,0.607421875,0.646484375,0.6552734375,0.634765625,0.599609375,0.5322265625,0.447265625,0.375,0.3388671875,0.3408203125,0.3642578125,0.3984375,0.45703125,0.5302734375,0.5908203125,0.62109375,0.62109375,0.6044921875,0.578125,0.5234375,0.4521484375,0.388671875,0.3525390625,0.3486328125,0.3642578125,0.37890625,0.37890625,0.3720703125,0.373046875,0.390625,0.4248046875,0.46875,0.5048828125,0.5029296875,0.4609375,0.40234375,0.3603515625,0.3583984375,0.39453125,0.4482421875,0.525390625,0.607421875,0.6630859375,0.677734375,0.6611328125,0.634765625,0.6064453125,0.5751953125,0.546875,0.5302734375,0.5263671875,0.5283203125,0.5302734375,0.5322265625,0.5390625,0.546875,0.546875,0.5361328125,0.5185546875,0.5,0.47265625,0.4189453125,0.34765625,0.2841796875,0.248046875,0.2431640625,0.2587890625,0.275390625,0.2900390625,0.31640625,0.3701171875,0.4462890625,0.529296875,0.6044921875,0.671875,0.7060546875,0.6796875,0.59375,0.482421875,0.3984375,0.3642578125,0.35546875,0.3896484375,0.466796875,0.5576171875,0.626953125,0.6513671875,0.634765625,0.5966796875,0.5166015625,0.408203125,0.30859375,0.2490234375,0.23828125,0.2587890625,0.2939453125,0.3564453125,0.4365234375,0.5048828125,0.5419921875,0.5458984375,0.5302734375,0.51953125,0.546875,0.6103515625,0.6845703125,0.7412109375,0.7578125,0.740234375,0.712890625,0.677734375,0.6298828125,0.568359375,0.5029296875,0.443359375,0.39453125,0.3466796875,0.298828125,0.26953125,0.2734375,0.3037109375,0.33984375,0.3642578125,0.3798828125,0.3828125,0.3720703125,0.3564453125,0.345703125,0.3486328125,0.3642578125,0.3857421875,0.4140625,0.4384765625,0.447265625,0.435546875,0.4150390625,0.39453125,0.3662109375,0.3095703125,0.2421875,0.1953125,0.1875,0.2158203125,0.2587890625,0.3154296875,0.4033203125,0.48828125,0.52734375,0.50390625,0.4375,0.3642578125,0.3017578125,0.279296875,0.306640625,0.36328125,0.416015625,0.427734375,0.39453125,0.33984375,0.265625,0.2041015625,0.1923828125,0.2392578125,0.318359375,0.39453125,0.4609375,0.50390625,0.513671875,0.5,0.484375,0.4921875,0.5302734375,0.5703125,0.587890625,0.5771484375,0.546875,0.517578125,0.5107421875,0.5302734375,0.5556640625,0.5751953125,0.580078125,0.568359375,0.548828125,0.533203125,0.5302734375,0.529296875,0.52734375,0.529296875,0.541015625,0.5615234375,0.583984375,0.6044921875,0.626953125,0.6533203125,0.6572265625,0.6162109375,0.53515625,0.4423828125,0.3642578125,0.2998046875,0.275390625,0.306640625,0.3798828125,0.4609375,0.5048828125,0.5,0.4755859375,0.4326171875,0.375,0.3193359375,0.2802734375,0.26171875,0.2587890625,0.2685546875,0.3115234375,0.375,0.4306640625,0.4521484375,0.435546875,0.39453125,0.353515625,0.330078125,0.3251953125,0.328125,0.3232421875,0.2998046875,0.2587890625,0.22265625,0.2255859375,0.2783203125,0.361328125,0.4384765625,0.4765625,0.46875,0.4521484375,0.4404296875,0.43359375,0.4248046875,0.41015625,0.3896484375,0.3642578125,0.3359375,0.3056640625,0.2861328125,0.2900390625,0.3125,0.341796875,0.3642578125,0.3798828125,0.380859375,0.361328125,0.3251953125,0.2880859375,0.263671875,0.2587890625,0.2744140625,0.345703125,0.4521484375,0.546875,0.5869140625,0.5634765625,0.5,0.423828125,0.3427734375,0.275390625,0.2421875,0.2421875,0.2548828125,0.2587890625,0.267578125,0.30859375,0.375,0.44140625,0.4833984375,0.490234375,0.46875,0.451171875,0.4609375,0.4853515625,0.5,0.482421875,0.4326171875,0.3642578125,0.287109375,0.2099609375,0.1728515625,0.208984375,0.3056640625,0.4169921875,0.5,0.5693359375,0.6279296875,0.6572265625,0.654296875,0.634765625,0.623046875,0.634765625,0.6591796875,0.6953125,0.7255859375,0.7294921875,0.7001953125,0.65234375,0.6044921875,0.5634765625,0.546875,0.568359375,0.6240234375,0.6875,0.73046875,0.740234375,0.724609375,0.6533203125,0.546875,0.4521484375,0.412109375,0.435546875,0.5,0.5703125,0.6259765625,0.646484375,0.6240234375,0.5771484375,0.5390625,0.5302734375,0.5205078125,0.4775390625,0.4140625,0.3583984375,0.3369140625,0.353515625,0.39453125,0.4306640625,0.4306640625,0.40234375,0.373046875,0.369140625,0.404296875,0.46875,0.54296875,0.6103515625,0.6435546875,0.6240234375,0.5654296875,0.5048828125,0.46875,0.439453125,0.412109375,0.4140625,0.4658203125,0.5595703125,0.66015625,0.740234375,0.8125,0.8759765625,0.9033203125,0.880859375,0.82421875,0.7685546875,0.740234375,0.7177734375,0.6826171875,0.6328125,0.599609375,0.5185546875,0.419921875,0.349609375,0.3251953125,0.32421875,0.3525390625,0.3955078125,0.4267578125,0.4228515625,0.3837890625,0.3251953125,0.271484375,0.2568359375,0.3037109375,0.4033203125,0.5166015625,0.595703125,0.6220703125,0.6220703125,0.5849609375,0.525390625,0.4765625,0.46484375,0.494140625,0.55078125,0.6240234375,0.724609375,0.8173828125,0.853515625,0.822265625,0.7490234375,0.673828125,0.6044921875,0.544921875,0.5,0.4638671875,0.4287109375,0.3837890625,0.3251953125,0.2587890625,0.1845703125,0.134765625,0.1396484375,0.1943359375,0.267578125,0.3251953125,0.3740234375,0.4052734375,0.40625,0.380859375,0.3447265625,0.322265625,0.3251953125,0.341796875,0.37890625,0.435546875,0.4951171875,0.5419921875,0.5654296875,0.5703125,0.556640625,0.498046875,0.4130859375,0.345703125,0.3271484375,0.3623046875,0.4287109375,0.501953125,0.5712890625,0.6162109375,0.623046875,0.6015625,0.5771484375,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.5703125,0.572265625,0.5849609375,0.6044921875,0.6220703125,0.6318359375,0.630859375,0.6220703125,0.6103515625,0.5966796875,0.5830078125,0.57421875,0.5703125,0.5693359375,0.5703125,0.5751953125,0.59375,0.6083984375,0.5966796875,0.5537109375,0.4921875,0.4287109375,0.37890625,0.3759765625,0.41796875,0.474609375,0.5068359375,0.490234375,0.4287109375,0.3544921875,0.2900390625,0.2783203125,0.3427734375,0.4638671875,0.587890625,0.673828125,0.732421875,0.736328125,0.6806640625,0.59765625,0.5322265625,0.5224609375,0.5703125,0.625,0.646484375,0.619140625,0.55078125,0.4755859375,0.4306640625,0.4287109375,0.4462890625,0.4833984375,0.5234375,0.5400390625,0.5234375,0.48046875,0.4287109375,0.3876953125,0.388671875,0.43359375,0.4951171875,0.5390625,0.5400390625,0.5,0.4541015625,0.4375,0.4638671875,0.521484375,0.5849609375,0.6220703125,0.6220703125,0.6044921875,0.5615234375,0.4970703125,0.4326171875,0.3876953125,0.37109375,0.376953125,0.3984375,0.45703125,0.53515625,0.5986328125,0.6201171875,0.5986328125,0.55078125,0.490234375,0.40234375,0.31640625,0.2705078125,0.279296875,0.3251953125,0.376953125,0.419921875,0.427734375,0.40234375,0.369140625,0.353515625,0.375,0.4287109375,0.48046875,0.4921875,0.4619140625,0.4150390625,0.384765625,0.396484375,0.4482421875,0.5126953125,0.5849609375,0.642578125,0.6669921875,0.658203125,0.63671875,0.6220703125,0.6103515625,0.5966796875,0.5830078125,0.57421875,0.5703125,0.5693359375,0.5703125,0.5751953125,0.5966796875,0.619140625,0.6220703125,0.5966796875,0.55078125,0.5,0.4384765625,0.3505859375,0.2646484375,0.21875,0.2275390625,0.2734375,0.3251953125,0.3701171875,0.3935546875,0.3994140625,0.4072265625,0.4326171875,0.4833984375,0.55078125,0.6240234375,0.6845703125,0.697265625,0.642578125,0.541015625,0.4404296875,0.376953125,0.3349609375,0.3330078125,0.3857421875,0.4765625,0.5673828125,0.619140625,0.6220703125,0.603515625,0.5537109375,0.4775390625,0.3994140625,0.34375,0.3212890625,0.3251953125,0.3486328125,0.4150390625,0.509765625,0.591796875,0.62890625,0.615234375,0.5703125,0.5244140625,0.505859375,0.52734375,0.580078125,0.6396484375,0.673828125,0.673828125,0.6669921875,0.6669921875,0.6611328125,0.6318359375,0.5771484375,0.51171875,0.4482421875,0.3798828125,0.296875,0.2314453125,0.216796875,0.2568359375,0.3212890625,0.376953125,0.419921875,0.427734375,0.3984375,0.35546875,0.3271484375,0.3349609375,0.376953125,0.435546875,0.5107421875,0.57421875,0.5927734375,0.5615234375,0.5029296875,0.4482421875,0.38671875,0.298828125,0.216796875,0.1796875,0.2021484375,0.26171875,0.3251953125,0.396484375,0.4892578125,0.5654296875,0.583984375,0.5361328125,0.4541015625,0.376953125,0.3173828125,0.3095703125,0.357421875,0.4326171875,0.490234375,0.49609375,0.4482421875,0.3779296875,0.2919921875,0.2265625,0.22265625,0.28125,0.369140625,0.4482421875,0.51171875,0.5439453125,0.5380859375,0.5146484375,0.4990234375,0.517578125,0.5703125,0.6279296875,0.6669921875,0.6708984375,0.640625,0.5966796875,0.568359375,0.5703125,0.580078125,0.587890625,0.58984375,0.5849609375,0.5771484375,0.5712890625,0.5703125,0.5625,0.5302734375,0.48828125,0.4619140625,0.466796875,0.501953125,0.55078125,0.6064453125,0.6640625,0.6884765625,0.6513671875,0.5615234375,0.4580078125,0.376953125,0.3173828125,0.3095703125,0.361328125,0.4453125,0.5166015625,0.5361328125,0.5,0.4462890625,0.3876953125,0.3388671875,0.314453125,0.314453125,0.322265625,0.3251953125,0.3369140625,0.3876953125,0.4609375,0.5185546875,0.5341796875,0.5048828125,0.4482421875,0.3935546875,0.3701171875,0.376953125,0.396484375,0.4033203125,0.3798828125,0.3251953125,0.275390625,0.2724609375,0.322265625,0.3974609375,0.45703125,0.4677734375,0.4287109375,0.3798828125,0.341796875,0.3291015625,0.3408203125,0.3662109375,0.3818359375,0.376953125,0.3603515625,0.3232421875,0.283203125,0.265625,0.283203125,0.326171875,0.376953125,0.42578125,0.45703125,0.4541015625,0.4189453125,0.3701171875,0.333984375,0.3251953125,0.33984375,0.40234375,0.4951171875,0.5712890625,0.5966796875,0.5654296875,0.5,0.42578125,0.3525390625,0.2998046875,0.2841796875,0.298828125,0.3193359375,0.3251953125,0.3291015625,0.34765625,0.37890625,0.41015625,0.431640625,0.4365234375,0.4287109375,0.427734375,0.455078125,0.4951171875,0.5166015625,0.5,0.447265625,0.376953125,0.30078125,0.220703125,0.181640625,0.2138671875,0.3076171875,0.4169921875,0.5,0.5654296875,0.6025390625,0.60546875,0.5859375,0.5693359375,0.5791015625,0.6220703125,0.677734375,0.7421875,0.7822265625,0.767578125,0.7021484375,0.619140625,0.55078125,0.494140625,0.46484375,0.48046875,0.5380859375,0.611328125,0.662109375,0.673828125,0.6591796875,0.5966796875,0.50390625,0.427734375,0.40234375,0.43359375,0.5,0.5712890625,0.6318359375,0.6611328125,0.6494140625,0.611328125,0.578125,0.5703125,0.55859375,0.5078125,0.435546875,0.376953125,0.361328125,0.390625,0.4482421875,0.4970703125,0.498046875,0.451171875,0.390625,0.353515625,0.3681640625,0.4287109375,0.5,0.55859375,0.580078125,0.5537109375,0.498046875,0.44921875,0.4287109375,0.4150390625,0.39453125,0.39453125,0.4326171875,0.5087890625,0.5966796875,0.673828125,0.75,0.83203125,0.8837890625,0.875,0.8115234375,0.7333984375,0.673828125,0.625,0.587890625,0.5615234375,0.611328125,0.55859375,0.486328125,0.43359375,0.419921875,0.427734375,0.4677734375,0.51953125,0.5498046875,0.5380859375,0.4873046875,0.419921875,0.3544921875,0.3212890625,0.33984375,0.408203125,0.494140625,0.5546875,0.5693359375,0.5595703125,0.5126953125,0.4482421875,0.4013671875,0.400390625,0.443359375,0.509765625,0.5888671875,0.6904296875,0.7724609375,0.7919921875,0.7421875,0.6572265625,0.5791015625,0.515625,0.484375,0.4873046875,0.505859375,0.5107421875,0.4814453125,0.419921875,0.341796875,0.2509765625,0.1875,0.1875,0.2529296875,0.34375,0.419921875,0.486328125,0.53515625,0.546875,0.5166015625,0.4658203125,0.427734375,0.419921875,0.4248046875,0.4423828125,0.474609375,0.5107421875,0.5400390625,0.556640625,0.5595703125,0.546875,0.490234375,0.41015625,0.3486328125,0.3349609375,0.373046875,0.439453125,0.5126953125,0.5791015625,0.619140625,0.6201171875,0.59375,0.56640625,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5615234375,0.5654296875,0.568359375,0.5703125,0.5703125,0.5693359375,0.5673828125,0.5654296875,0.5625,0.560546875,0.5595703125,0.5595703125,0.5595703125,0.56640625,0.5927734375,0.6181640625,0.6162109375,0.576171875,0.5107421875,0.439453125,0.3818359375,0.3720703125,0.412109375,0.47265625,0.51171875,0.5,0.439453125,0.36328125,0.2861328125,0.25,0.287109375,0.384765625,0.49609375,0.5791015625,0.638671875,0.6484375,0.6044921875,0.5390625,0.494140625,0.501953125,0.5595703125,0.6240234375,0.66015625,0.6455078125,0.5830078125,0.5048828125,0.4501953125,0.439453125,0.451171875,0.4921875,0.54296875,0.5712890625,0.5576171875,0.5068359375,0.439453125,0.3837890625,0.380859375,0.4326171875,0.5068359375,0.5576171875,0.5546875,0.5,0.4345703125,0.39453125,0.3984375,0.4462890625,0.5126953125,0.5595703125,0.5693359375,0.564453125,0.544921875,0.5126953125,0.4755859375,0.4462890625,0.4306640625,0.4296875,0.4423828125,0.4931640625,0.5625,0.611328125,0.615234375,0.57421875,0.509765625,0.431640625,0.33203125,0.2509765625,0.2294921875,0.275390625,0.35546875,0.4296875,0.486328125,0.4970703125,0.4599609375,0.404296875,0.3681640625,0.380859375,0.439453125,0.4990234375,0.515625,0.4873046875,0.44140625,0.4130859375,0.4296875,0.4892578125,0.5595703125,0.6220703125,0.6533203125,0.6455078125,0.611328125,0.5791015625,0.5693359375,0.5673828125,0.5654296875,0.5625,0.560546875,0.5595703125,0.5595703125,0.5595703125,0.5673828125,0.599609375,0.6376953125,0.650390625,0.625,0.5673828125,0.5,0.421875,0.322265625,0.2412109375,0.2197265625,0.265625,0.345703125,0.419921875,0.478515625,0.498046875,0.4765625,0.44140625,0.423828125,0.447265625,0.509765625,0.5869140625,0.6689453125,0.7158203125,0.693359375,0.609375,0.5078125,0.4296875,0.3671875,0.3349609375,0.3544921875,0.4208984375,0.5029296875,0.55859375,0.5693359375,0.5634765625,0.5439453125,0.5087890625,0.46875,0.4375,0.421875,0.419921875,0.4345703125,0.4921875,0.57421875,0.6396484375,0.6572265625,0.623046875,0.5595703125,0.4931640625,0.447265625,0.439453125,0.474609375,0.5302734375,0.5712890625,0.5791015625,0.5849609375,0.6142578125,0.6455078125,0.65234375,0.62109375,0.5595703125,0.4892578125,0.41015625,0.3125,0.2353515625,0.2197265625,0.271484375,0.3544921875,0.4296875,0.486328125,0.4970703125,0.458984375,0.400390625,0.3623046875,0.373046875,0.4296875,0.5068359375,0.6044921875,0.6806640625,0.697265625,0.646484375,0.564453125,0.4892578125,0.412109375,0.3125,0.232421875,0.212890625,0.26171875,0.34375,0.419921875,0.498046875,0.591796875,0.6611328125,0.6640625,0.6005859375,0.5087890625,0.4296875,0.37109375,0.3662109375,0.4189453125,0.4951171875,0.548828125,0.5458984375,0.4892578125,0.4111328125,0.318359375,0.251953125,0.2509765625,0.31640625,0.41015625,0.4892578125,0.55078125,0.5712890625,0.5478515625,0.5068359375,0.4814453125,0.5,0.5595703125,0.626953125,0.677734375,0.689453125,0.6591796875,0.607421875,0.5673828125,0.5595703125,0.560546875,0.5625,0.5625,0.5615234375,0.560546875,0.5595703125,0.5595703125,0.548828125,0.5029296875,0.4404296875,0.3984375,0.400390625,0.4443359375,0.509765625,0.583984375,0.666015625,0.71484375,0.6943359375,0.6123046875,0.5107421875,0.4296875,0.37109375,0.3671875,0.419921875,0.498046875,0.5546875,0.5546875,0.5,0.4306640625,0.37109375,0.3408203125,0.3486328125,0.3818359375,0.412109375,0.419921875,0.4306640625,0.48046875,0.5478515625,0.595703125,0.5986328125,0.5556640625,0.4892578125,0.4296875,0.41015625,0.4345703125,0.474609375,0.4990234375,0.4794921875,0.419921875,0.361328125,0.3525390625,0.3955078125,0.458984375,0.5029296875,0.49609375,0.439453125,0.373046875,0.3232421875,0.3095703125,0.3359375,0.384765625,0.421875,0.4296875,0.4189453125,0.3779296875,0.326171875,0.2978515625,0.3125,0.36328125,0.4296875,0.49609375,0.544921875,0.5556640625,0.5234375,0.470703125,0.4296875,0.419921875,0.431640625,0.4833984375,0.5546875,0.60546875,0.6103515625,0.5673828125,0.5,0.427734375,0.3662109375,0.3349609375,0.34375,0.3798828125,0.412109375,0.419921875,0.4208984375,0.423828125,0.4296875,0.435546875,0.439453125,0.4404296875,0.439453125,0.4482421875,0.4873046875,0.5380859375,0.56640625,0.5517578125,0.5,0.4296875,0.3515625,0.265625,0.21484375,0.2333984375,0.3154296875,0.41796875,0.5,0.5615234375,0.58203125,0.560546875,0.51953125,0.494140625,0.5107421875,0.5693359375,0.64453125,0.7275390625,0.779296875,0.763671875,0.6865234375,0.5888671875,0.509765625,0.443359375,0.400390625,0.4033203125,0.451171875,0.5185546875,0.568359375,0.5791015625,0.5673828125,0.515625,0.4443359375,0.3935546875,0.388671875,0.431640625,0.5,0.5703125,0.6298828125,0.6572265625,0.642578125,0.6025390625,0.568359375,0.5595703125,0.5478515625,0.4990234375,0.4306640625,0.3828125,0.3798828125,0.4228515625,0.4892578125,0.546875,0.5498046875,0.498046875,0.4248046875,0.375,0.380859375,0.439453125,0.509765625,0.5634765625,0.5771484375,0.5478515625,0.494140625,0.451171875,0.439453125,0.431640625,0.4052734375,0.3828125,0.3896484375,0.435546875,0.505859375,0.5791015625,0.658203125,0.7509765625,0.814453125,0.8134765625,0.7470703125,0.6552734375,0.5791015625,0.5185546875,0.4921875,0.4990234375,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.662109375,0.646484375,0.60546875,0.5693359375,0.5595703125,0.5673828125,0.6083984375,0.6640625,0.6982421875,0.69140625,0.6455078125,0.5791015625,0.5087890625,0.4384765625,0.388671875,0.375,0.390625,0.412109375,0.419921875,0.4130859375,0.3818359375,0.345703125,0.333984375,0.361328125,0.419921875,0.4892578125,0.56640625,0.65234375,0.705078125,0.689453125,0.611328125,0.5107421875,0.4296875,0.373046875,0.3798828125,0.4521484375,0.5517578125,0.625,0.6337890625,0.5791015625,0.5009765625,0.40625,0.3369140625,0.33203125,0.392578125,0.4814453125,0.5595703125,0.6279296875,0.681640625,0.69921875,0.6748046875,0.626953125,0.5888671875,0.5791015625,0.576171875,0.5576171875,0.5234375,0.4814453125,0.4453125,0.4248046875,0.419921875,0.412109375,0.3896484375,0.373046875,0.3857421875,0.435546875,0.5068359375,0.5791015625,0.64453125,0.6787109375,0.66015625,0.59375,0.5107421875,0.453125,0.439453125,0.439453125,0.4365234375,0.4326171875,0.4267578125,0.4228515625,0.419921875,0.419921875,0.419921875,0.4228515625,0.4267578125,0.4326171875,0.4365234375,0.439453125,0.439453125,0.439453125,0.4375,0.43359375,0.4306640625,0.4287109375,0.4287109375,0.4296875,0.4443359375,0.5048828125,0.5908203125,0.6591796875,0.677734375,0.64453125,0.5791015625,0.5205078125,0.505859375,0.5400390625,0.5927734375,0.6279296875,0.6162109375,0.5595703125,0.48046875,0.375,0.283203125,0.2509765625,0.2880859375,0.365234375,0.439453125,0.498046875,0.505859375,0.462890625,0.400390625,0.359375,0.3701171875,0.4296875,0.5029296875,0.5703125,0.61328125,0.6171875,0.591796875,0.56640625,0.5595703125,0.5693359375,0.6123046875,0.6689453125,0.7041015625,0.6953125,0.646484375,0.5791015625,0.51953125,0.5,0.5224609375,0.5615234375,0.5830078125,0.5615234375,0.5,0.4287109375,0.369140625,0.341796875,0.3564453125,0.396484375,0.4306640625,0.439453125,0.443359375,0.4599609375,0.490234375,0.5244140625,0.5537109375,0.568359375,0.5693359375,0.5751953125,0.60546875,0.6396484375,0.6484375,0.619140625,0.5595703125,0.4892578125,0.4130859375,0.3291015625,0.27734375,0.2958984375,0.376953125,0.478515625,0.5595703125,0.619140625,0.6318359375,0.5947265625,0.53515625,0.494140625,0.5029296875,0.5595703125,0.615234375,0.6181640625,0.5673828125,0.49609375,0.4462890625,0.4521484375,0.509765625,0.5751953125,0.6162109375,0.6083984375,0.5556640625,0.4833984375,0.431640625,0.419921875,0.419921875,0.4208984375,0.421875,0.4228515625,0.4228515625,0.421875,0.419921875,0.4296875,0.48046875,0.552734375,0.6064453125,0.6142578125,0.5751953125,0.509765625,0.4326171875,0.3466796875,0.29296875,0.3056640625,0.3818359375,0.48046875,0.5595703125,0.6162109375,0.6181640625,0.5634765625,0.4853515625,0.4306640625,0.4326171875,0.4892578125,0.5693359375,0.671875,0.755859375,0.7783203125,0.73046875,0.646484375,0.5693359375,0.49609375,0.42578125,0.37890625,0.3701171875,0.3896484375,0.4130859375,0.419921875,0.4228515625,0.4404296875,0.47265625,0.5107421875,0.544921875,0.564453125,0.5693359375,0.5771484375,0.6005859375,0.6201171875,0.609375,0.5615234375,0.4912109375,0.419921875,0.3515625,0.3017578125,0.2900390625,0.3203125,0.3720703125,0.412109375,0.419921875,0.4296875,0.478515625,0.5478515625,0.5966796875,0.6005859375,0.5576171875,0.4892578125,0.412109375,0.3291015625,0.2822265625,0.3056640625,0.392578125,0.4970703125,0.5791015625,0.638671875,0.646484375,0.6025390625,0.5361328125,0.4912109375,0.5,0.5595703125,0.63671875,0.720703125,0.76953125,0.7490234375,0.66796875,0.5673828125,0.4892578125,0.4150390625,0.3310546875,0.28125,0.2978515625,0.3779296875,0.478515625,0.5595703125,0.638671875,0.732421875,0.798828125,0.7998046875,0.736328125,0.6455078125,0.5693359375,0.5107421875,0.494140625,0.5205078125,0.5634765625,0.587890625,0.5693359375,0.509765625,0.431640625,0.337890625,0.26953125,0.2646484375,0.3251953125,0.4140625,0.4892578125,0.544921875,0.548828125,0.498046875,0.42578125,0.376953125,0.3818359375,0.439453125,0.5068359375,0.5546875,0.5625,0.5263671875,0.470703125,0.4287109375,0.419921875,0.421875,0.42578125,0.4306640625,0.4345703125,0.4384765625,0.439453125,0.439453125,0.431640625,0.3994140625,0.361328125,0.3486328125,0.3740234375,0.431640625,0.5,0.5771484375,0.6748046875,0.7529296875,0.76953125,0.7197265625,0.6357421875,0.5595703125,0.5,0.4833984375,0.509765625,0.5546875,0.580078125,0.560546875,0.5,0.431640625,0.388671875,0.3935546875,0.4443359375,0.515625,0.5673828125,0.5791015625,0.5869140625,0.6201171875,0.65625,0.6669921875,0.638671875,0.5791015625,0.509765625,0.4521484375,0.4482421875,0.498046875,0.5703125,0.62109375,0.6162109375,0.5595703125,0.5009765625,0.4931640625,0.537109375,0.6015625,0.6455078125,0.63671875,0.5791015625,0.5107421875,0.45703125,0.4404296875,0.466796875,0.517578125,0.55859375,0.5693359375,0.5615234375,0.5234375,0.4736328125,0.4453125,0.4599609375,0.5107421875,0.5791015625,0.646484375,0.6953125,0.7041015625,0.6689453125,0.6123046875,0.5693359375,0.5595703125,0.568359375,0.6025390625,0.642578125,0.6572265625,0.6298828125,0.5703125,0.5,0.431640625,0.388671875,0.3935546875,0.4443359375,0.515625,0.5673828125,0.5791015625,0.5791015625,0.576171875,0.5732421875,0.5693359375,0.568359375,0.568359375,0.5693359375,0.580078125,0.62109375,0.6728515625,0.701171875,0.6865234375,0.6357421875,0.5693359375,0.4912109375,0.390625,0.30859375,0.2861328125,0.33203125,0.4140625,0.4892578125,0.5458984375,0.548828125,0.4951171875,0.4189453125,0.3662109375,0.37109375,0.4296875,0.5107421875,0.609375,0.6875,0.7021484375,0.6494140625,0.564453125,0.4892578125,0.421875,0.36328125,0.3359375,0.3486328125,0.38671875,0.419921875,0.4296875,0.423828125,0.3935546875,0.3583984375,0.3466796875,0.3740234375,0.431640625,0.5,0.564453125,0.6044921875,0.599609375,0.5498046875,0.48046875,0.4306640625,0.419921875,0.4111328125,0.3779296875,0.33984375,0.328125,0.357421875,0.41796875,0.4892578125,0.55078125,0.5703125,0.5458984375,0.5029296875,0.478515625,0.498046875,0.5595703125,0.6298828125,0.6845703125,0.7021484375,0.6767578125,0.6279296875,0.5888671875,0.5791015625,0.56640625,0.509765625,0.427734375,0.3623046875,0.34375,0.3759765625,0.439453125,0.515625,0.6025390625,0.662109375,0.65625,0.5888671875,0.49609375,0.419921875,0.3671875,0.376953125,0.4521484375,0.689453125,0.6728515625,0.62890625,0.587890625,0.5703125,0.5693359375,0.6044921875,0.6630859375,0.716796875,0.7373046875,0.71875,0.673828125,0.6142578125,0.5283203125,0.43359375,0.359375,0.3212890625,0.31640625,0.3251953125,0.330078125,0.31640625,0.30078125,0.3017578125,0.3330078125,0.38671875,0.4482421875,0.515625,0.59375,0.642578125,0.62890625,0.5537109375,0.45703125,0.376953125,0.3232421875,0.341796875,0.4404296875,0.5751953125,0.68359375,0.7158203125,0.673828125,0.6025390625,0.509765625,0.4296875,0.40234375,0.4365234375,0.50390625,0.5703125,0.6318359375,0.689453125,0.7236328125,0.7255859375,0.7021484375,0.6796875,0.673828125,0.6669921875,0.630859375,0.560546875,0.4736328125,0.3935546875,0.34375,0.3251953125,0.3154296875,0.314453125,0.34375,0.4140625,0.5107421875,0.6044921875,0.673828125,0.7275390625,0.7421875,0.69921875,0.6083984375,0.5087890625,0.443359375,0.4287109375,0.4267578125,0.4140625,0.390625,0.36328125,0.3408203125,0.328125,0.3251953125,0.328125,0.3408203125,0.36328125,0.390625,0.4140625,0.4267578125,0.4287109375,0.4267578125,0.4140625,0.39453125,0.376953125,0.3671875,0.3681640625,0.376953125,0.4033203125,0.482421875,0.595703125,0.6953125,0.7421875,0.7275390625,0.673828125,0.6181640625,0.5908203125,0.59375,0.6142578125,0.6279296875,0.61328125,0.5703125,0.5087890625,0.4189453125,0.33203125,0.2900390625,0.30859375,0.365234375,0.4287109375,0.4775390625,0.474609375,0.4208984375,0.3505859375,0.306640625,0.3173828125,0.376953125,0.451171875,0.52734375,0.583984375,0.6044921875,0.59375,0.5751953125,0.5703125,0.5810546875,0.62890625,0.6982421875,0.7509765625,0.7626953125,0.73046875,0.673828125,0.6201171875,0.595703125,0.5986328125,0.609375,0.6025390625,0.564453125,0.5,0.427734375,0.3671875,0.337890625,0.349609375,0.3876953125,0.4208984375,0.4287109375,0.4345703125,0.46484375,0.5146484375,0.5703125,0.611328125,0.626953125,0.6220703125,0.6162109375,0.623046875,0.6279296875,0.6123046875,0.5703125,0.509765625,0.4482421875,0.380859375,0.3095703125,0.271484375,0.2998046875,0.3857421875,0.4892578125,0.5703125,0.6328125,0.6552734375,0.630859375,0.5791015625,0.53515625,0.5302734375,0.5703125,0.6103515625,0.6103515625,0.5693359375,0.5166015625,0.486328125,0.4990234375,0.55078125,0.60546875,0.623046875,0.583984375,0.498046875,0.40234375,0.33984375,0.3251953125,0.3271484375,0.3330078125,0.3408203125,0.345703125,0.34375,0.3359375,0.3251953125,0.3291015625,0.384765625,0.478515625,0.5693359375,0.615234375,0.6044921875,0.55078125,0.4833984375,0.4052734375,0.3525390625,0.357421875,0.4189453125,0.5009765625,0.5703125,0.6181640625,0.6123046875,0.55078125,0.466796875,0.4052734375,0.3994140625,0.4482421875,0.521484375,0.62890625,0.732421875,0.783203125,0.7626953125,0.6962890625,0.6220703125,0.544921875,0.45703125,0.376953125,0.3291015625,0.31640625,0.322265625,0.3251953125,0.3310546875,0.361328125,0.4189453125,0.4931640625,0.5615234375,0.6044921875,0.6220703125,0.6337890625,0.640625,0.6220703125,0.5654296875,0.48046875,0.3935546875,0.3251953125,0.267578125,0.228515625,0.224609375,0.2548828125,0.298828125,0.3271484375,0.3251953125,0.328125,0.376953125,0.4560546875,0.5234375,0.544921875,0.513671875,0.4482421875,0.373046875,0.306640625,0.2900390625,0.349609375,0.466796875,0.5888671875,0.673828125,0.73046875,0.728515625,0.666015625,0.578125,0.5146484375,0.5126953125,0.5703125,0.6435546875,0.7109375,0.7353515625,0.6943359375,0.6044921875,0.509765625,0.4482421875,0.3916015625,0.3271484375,0.291015625,0.314453125,0.3935546875,0.490234375,0.5703125,0.6484375,0.736328125,0.798828125,0.8037109375,0.7529296875,0.6796875,0.6220703125,0.5791015625,0.5693359375,0.58984375,0.6181640625,0.62890625,0.60546875,0.55078125,0.482421875,0.39453125,0.322265625,0.2998046875,0.33203125,0.392578125,0.4482421875,0.48828125,0.4873046875,0.447265625,0.39453125,0.3642578125,0.376953125,0.4287109375,0.484375,0.5107421875,0.4912109375,0.43359375,0.3671875,0.326171875,0.3251953125,0.337890625,0.3583984375,0.3828125,0.40625,0.421875,0.427734375,0.4287109375,0.423828125,0.40234375,0.3798828125,0.376953125,0.40234375,0.4482421875,0.5,0.5595703125,0.640625,0.7119140625,0.734375,0.701171875,0.634765625,0.5703125,0.5185546875,0.5068359375,0.533203125,0.5712890625,0.587890625,0.5625,0.5,0.43359375,0.40234375,0.427734375,0.50390625,0.5966796875,0.6591796875,0.673828125,0.6787109375,0.7001953125,0.71875,0.7119140625,0.673828125,0.61328125,0.55078125,0.5,0.4931640625,0.5322265625,0.5888671875,0.6279296875,0.62109375,0.5703125,0.521484375,0.5244140625,0.58203125,0.6611328125,0.71875,0.7216796875,0.673828125,0.611328125,0.5537109375,0.5234375,0.53125,0.5673828125,0.6044921875,0.6220703125,0.6240234375,0.6025390625,0.5703125,0.5537109375,0.5693359375,0.6142578125,0.673828125,0.73046875,0.7626953125,0.7509765625,0.6982421875,0.62890625,0.5810546875,0.5703125,0.578125,0.611328125,0.6494140625,0.6611328125,0.6318359375,0.5712890625,0.5,0.43359375,0.40234375,0.427734375,0.50390625,0.5966796875,0.6591796875,0.673828125,0.6708984375,0.658203125,0.638671875,0.62109375,0.611328125,0.61328125,0.6220703125,0.638671875,0.67578125,0.7158203125,0.7333984375,0.7158203125,0.6728515625,0.6220703125,0.5595703125,0.4658203125,0.3720703125,0.3212890625,0.33203125,0.384765625,0.4482421875,0.49609375,0.490234375,0.4326171875,0.357421875,0.3095703125,0.3173828125,0.376953125,0.4560546875,0.546875,0.61328125,0.623046875,0.576171875,0.505859375,0.4482421875,0.3955078125,0.34375,0.310546875,0.30859375,0.3330078125,0.361328125,0.376953125,0.3828125,0.3759765625,0.3671875,0.373046875,0.40234375,0.4482421875,0.5,0.544921875,0.5615234375,0.5322265625,0.4638671875,0.3876953125,0.3369140625,0.3251953125,0.318359375,0.2919921875,0.265625,0.267578125,0.3076171875,0.375,0.4482421875,0.5107421875,0.5361328125,0.5234375,0.4951171875,0.4814453125,0.5078125,0.5703125,0.642578125,0.70703125,0.7431640625,0.740234375,0.7099609375,0.6806640625,0.673828125,0.66015625,0.6015625,0.5087890625,0.4228515625,0.3779296875,0.384765625,0.4287109375,0.4833984375,0.537109375,0.5615234375,0.5341796875,0.4638671875,0.384765625,0.3251953125,0.29296875,0.3330078125,0.447265625,0.701171875,0.673828125,0.6181640625,0.5634765625,0.5302734375,0.51171875,0.529296875,0.5849609375,0.66015625,0.72265625,0.75,0.740234375,0.70703125,0.619140625,0.48828125,0.3583984375,0.26953125,0.2421875,0.2587890625,0.28125,0.291015625,0.2919921875,0.2978515625,0.31640625,0.3505859375,0.39453125,0.4482421875,0.5185546875,0.57421875,0.5771484375,0.5234375,0.4404296875,0.3642578125,0.3095703125,0.3291015625,0.43359375,0.58203125,0.7109375,0.765625,0.740234375,0.6845703125,0.599609375,0.5107421875,0.455078125,0.4501953125,0.484375,0.5302734375,0.5791015625,0.6376953125,0.6923828125,0.7294921875,0.7421875,0.7412109375,0.740234375,0.732421875,0.689453125,0.6015625,0.4853515625,0.373046875,0.2958984375,0.2587890625,0.23828125,0.2509765625,0.3193359375,0.4384765625,0.57421875,0.6806640625,0.740234375,0.7783203125,0.7783203125,0.7255859375,0.6357421875,0.541015625,0.4814453125,0.46875,0.4638671875,0.4384765625,0.3916015625,0.3359375,0.2890625,0.263671875,0.2587890625,0.263671875,0.2890625,0.3359375,0.3916015625,0.4384765625,0.4638671875,0.46875,0.462890625,0.4345703125,0.3916015625,0.3525390625,0.333984375,0.3408203125,0.3642578125,0.404296875,0.49609375,0.619140625,0.7255859375,0.7822265625,0.779296875,0.740234375,0.693359375,0.646484375,0.6044921875,0.576171875,0.5595703125,0.546875,0.5302734375,0.50390625,0.4560546875,0.4052734375,0.3779296875,0.38671875,0.423828125,0.46875,0.5009765625,0.4794921875,0.4111328125,0.333984375,0.2900390625,0.302734375,0.3642578125,0.4375,0.509765625,0.560546875,0.57421875,0.5576171875,0.5361328125,0.5302734375,0.541015625,0.5927734375,0.673828125,0.748046875,0.787109375,0.779296875,0.740234375,0.7001953125,0.6796875,0.6708984375,0.6572265625,0.6240234375,0.568359375,0.5,0.4287109375,0.373046875,0.3525390625,0.375,0.421875,0.4599609375,0.46875,0.4765625,0.51171875,0.568359375,0.6240234375,0.65625,0.6572265625,0.634765625,0.6103515625,0.587890625,0.5634765625,0.5302734375,0.4873046875,0.4404296875,0.39453125,0.34375,0.28515625,0.25390625,0.2783203125,0.35546875,0.4501953125,0.5302734375,0.5966796875,0.638671875,0.6376953125,0.599609375,0.548828125,0.521484375,0.5302734375,0.5439453125,0.5400390625,0.5263671875,0.51953125,0.5302734375,0.5615234375,0.6044921875,0.640625,0.6318359375,0.5634765625,0.4521484375,0.341796875,0.2734375,0.2587890625,0.2626953125,0.2783203125,0.2978515625,0.30859375,0.3037109375,0.2841796875,0.2587890625,0.248046875,0.296875,0.40234375,0.5244140625,0.61328125,0.63671875,0.6044921875,0.552734375,0.484375,0.4248046875,0.4052734375,0.4306640625,0.4814453125,0.5302734375,0.564453125,0.5546875,0.4990234375,0.4248046875,0.369140625,0.359375,0.39453125,0.4541015625,0.55859375,0.673828125,0.748046875,0.7548828125,0.705078125,0.634765625,0.556640625,0.4580078125,0.361328125,0.2919921875,0.26171875,0.2578125,0.2587890625,0.263671875,0.2939453125,0.3583984375,0.447265625,0.53515625,0.6005859375,0.634765625,0.658203125,0.658203125,0.61328125,0.521484375,0.4091796875,0.3154296875,0.2587890625,0.21875,0.201171875,0.2119140625,0.2421875,0.271484375,0.2783203125,0.2587890625,0.24609375,0.28515625,0.3642578125,0.44140625,0.4775390625,0.45703125,0.39453125,0.322265625,0.2705078125,0.28125,0.3720703125,0.5166015625,0.65234375,0.740234375,0.794921875,0.7802734375,0.693359375,0.5771484375,0.490234375,0.474609375,0.5302734375,0.5986328125,0.646484375,0.6435546875,0.5849609375,0.498046875,0.42578125,0.39453125,0.369140625,0.330078125,0.3037109375,0.31640625,0.3740234375,0.4541015625,0.5302734375,0.6044921875,0.6806640625,0.7314453125,0.7373046875,0.7041015625,0.6611328125,0.634765625,0.6220703125,0.630859375,0.654296875,0.673828125,0.6728515625,0.646484375,0.6044921875,0.552734375,0.4833984375,0.4140625,0.369140625,0.3603515625,0.375,0.39453125,0.408203125,0.4052734375,0.3916015625,0.3837890625,0.39453125,0.42578125,0.46875,0.5048828125,0.4970703125,0.4384765625,0.3525390625,0.27734375,0.244140625,0.2587890625,0.2890625,0.333984375,0.3857421875,0.4306640625,0.4580078125,0.4677734375,0.46875,0.466796875,0.4599609375,0.4521484375,0.4521484375,0.462890625,0.48046875,0.5,0.525390625,0.5693359375,0.61328125,0.6318359375,0.6162109375,0.576171875,0.5302734375,0.4951171875,0.5,0.5380859375,0.580078125,0.59375,0.5634765625,0.5,0.435546875,0.412109375,0.4521484375,0.546875,0.6533203125,0.724609375,0.740234375,0.7431640625,0.7529296875,0.7568359375,0.740234375,0.701171875,0.65234375,0.6044921875,0.5654296875,0.548828125,0.5576171875,0.576171875,0.5849609375,0.5693359375,0.5302734375,0.4970703125,0.515625,0.587890625,0.681640625,0.75390625,0.7734375,0.740234375,0.689453125,0.62890625,0.5771484375,0.5576171875,0.572265625,0.60546875,0.634765625,0.6572265625,0.662109375,0.6572265625,0.654296875,0.6669921875,0.697265625,0.740234375,0.779296875,0.787109375,0.748046875,0.673828125,0.5927734375,0.541015625,0.5302734375,0.5390625,0.5771484375,0.6240234375,0.646484375,0.6259765625,0.5703125,0.5,0.435546875,0.412109375,0.4521484375,0.546875,0.6533203125,0.724609375,0.740234375,0.734375,0.7060546875,0.6630859375,0.6240234375,0.60546875,0.611328125,0.634765625,0.6630859375,0.693359375,0.712890625,0.708984375,0.6865234375,0.6572265625,0.634765625,0.6044921875,0.53515625,0.4443359375,0.369140625,0.337890625,0.353515625,0.39453125,0.427734375,0.416015625,0.36328125,0.306640625,0.279296875,0.3017578125,0.3642578125,0.4375,0.50390625,0.5380859375,0.5244140625,0.4736328125,0.421875,0.39453125,0.3720703125,0.3388671875,0.30859375,0.2978515625,0.3095703125,0.3369140625,0.3642578125,0.390625,0.4150390625,0.435546875,0.4521484375,0.466796875,0.4814453125,0.5,0.5126953125,0.4970703125,0.447265625,0.375,0.3076171875,0.267578125,0.2587890625,0.251953125,0.2265625,0.2041015625,0.208984375,0.2529296875,0.3212890625,0.39453125,0.45703125,0.484375,0.474609375,0.44921875,0.439453125,0.466796875,0.5302734375,0.6044921875,0.6826171875,0.7421875,0.767578125,0.76171875,0.7451171875,0.740234375,0.7314453125,0.6875,0.6123046875,0.533203125,0.4765625,0.45703125,0.46875,0.4853515625,0.484375,0.455078125,0.3994140625,0.3349609375,0.28515625,0.2587890625,0.2578125,0.3291015625,0.466796875,0.6904296875,0.654296875,0.58984375,0.5205078125,0.46875,0.4287109375,0.4169921875,0.455078125,0.5380859375,0.6357421875,0.708984375,0.740234375,0.7412109375,0.669921875,0.5322265625,0.3779296875,0.2646484375,0.228515625,0.2587890625,0.3017578125,0.33203125,0.3447265625,0.341796875,0.3369140625,0.341796875,0.3642578125,0.400390625,0.46484375,0.5302734375,0.5576171875,0.53125,0.466796875,0.39453125,0.3359375,0.3408203125,0.4248046875,0.5576171875,0.68359375,0.748046875,0.740234375,0.7041015625,0.63671875,0.5517578125,0.48046875,0.4443359375,0.4462890625,0.46875,0.5009765625,0.5537109375,0.619140625,0.6787109375,0.7197265625,0.7373046875,0.740234375,0.7353515625,0.703125,0.6298828125,0.521484375,0.40625,0.314453125,0.2587890625,0.22265625,0.232421875,0.3115234375,0.447265625,0.5927734375,0.697265625,0.740234375,0.7607421875,0.7548828125,0.712890625,0.6455078125,0.5791015625,0.5380859375,0.5302734375,0.5234375,0.490234375,0.4306640625,0.3583984375,0.2978515625,0.265625,0.2587890625,0.265625,0.2978515625,0.3583984375,0.4306640625,0.490234375,0.5234375,0.5302734375,0.5205078125,0.4775390625,0.4140625,0.3583984375,0.3369140625,0.353515625,0.39453125,0.4501953125,0.541015625,0.6455078125,0.7294921875,0.767578125,0.763671875,0.740234375,0.705078125,0.642578125,0.5625,0.494140625,0.45703125,0.453125,0.46875,0.4853515625,0.4912109375,0.48828125,0.4853515625,0.490234375,0.505859375,0.5302734375,0.5419921875,0.50390625,0.4248046875,0.34765625,0.310546875,0.3310546875,0.39453125,0.4658203125,0.52734375,0.5576171875,0.546875,0.509765625,0.4775390625,0.46875,0.4794921875,0.52734375,0.607421875,0.6904296875,0.74609375,0.759765625,0.740234375,0.71875,0.7119140625,0.70703125,0.6845703125,0.6376953125,0.5712890625,0.5,0.4306640625,0.3818359375,0.375,0.4140625,0.4736328125,0.51953125,0.5302734375,0.5380859375,0.5732421875,0.6240234375,0.6630859375,0.6708984375,0.6474609375,0.6044921875,0.55859375,0.51171875,0.46875,0.435546875,0.4111328125,0.388671875,0.3642578125,0.3310546875,0.2822265625,0.248046875,0.2568359375,0.3125,0.3935546875,0.46875,0.5419921875,0.60546875,0.6328125,0.6103515625,0.552734375,0.498046875,0.46875,0.451171875,0.44140625,0.4560546875,0.49609375,0.552734375,0.6025390625,0.634765625,0.65234375,0.6259765625,0.546875,0.435546875,0.33203125,0.271484375,0.2587890625,0.265625,0.2919921875,0.3251953125,0.3447265625,0.3359375,0.302734375,0.2587890625,0.2275390625,0.2548828125,0.3505859375,0.48046875,0.5927734375,0.6455078125,0.634765625,0.6015625,0.546875,0.4853515625,0.44140625,0.4287109375,0.443359375,0.46875,0.48828125,0.4794921875,0.44140625,0.3916015625,0.353515625,0.3447265625,0.3642578125,0.4052734375,0.4951171875,0.607421875,0.6904296875,0.7109375,0.6728515625,0.6044921875,0.5263671875,0.4326171875,0.341796875,0.28125,0.2568359375,0.2568359375,0.2587890625,0.2607421875,0.2763671875,0.3193359375,0.3916015625,0.4775390625,0.552734375,0.6044921875,0.64453125,0.650390625,0.6015625,0.501953125,0.38671875,0.298828125,0.2587890625,0.2392578125,0.2470703125,0.275390625,0.3056640625,0.3173828125,0.2998046875,0.2587890625,0.2275390625,0.2490234375,0.3173828125,0.39453125,0.4384765625,0.4248046875,0.3642578125,0.29296875,0.244140625,0.26171875,0.361328125,0.51171875,0.6513671875,0.740234375,0.7939453125,0.771484375,0.6708984375,0.5380859375,0.4375,0.416015625,0.46875,0.5341796875,0.5625,0.5380859375,0.4716796875,0.3984375,0.3583984375,0.3642578125,0.375,0.3603515625,0.3330078125,0.3232421875,0.345703125,0.3994140625,0.46875,0.5390625,0.59765625,0.626953125,0.6240234375,0.6044921875,0.5927734375,0.6044921875,0.626953125,0.66015625,0.6904296875,0.701171875,0.689453125,0.662109375,0.634765625,0.60546875,0.564453125,0.513671875,0.4609375,0.4169921875,0.384765625,0.3642578125,0.345703125,0.3369140625,0.3505859375,0.3916015625,0.447265625,0.498046875,0.5302734375,0.54296875,0.5029296875,0.4140625,0.3115234375,0.240234375,0.224609375,0.2587890625,0.3095703125,0.375,0.4443359375,0.4970703125,0.5234375,0.5302734375,0.5302734375,0.5322265625,0.5390625,0.546875,0.546875,0.5361328125,0.5185546875,0.5,0.484375,0.4814453125,0.4912109375,0.501953125,0.5048828125,0.4931640625,0.46875,0.4541015625,0.48046875,0.53515625,0.5849609375,0.5986328125,0.564453125,0.5,0.435546875,0.412109375,0.4521484375,0.546875,0.6533203125,0.724609375,0.740234375,0.7412109375,0.744140625,0.740234375,0.7236328125,0.6953125,0.6630859375,0.634765625,0.609375,0.5849609375,0.5625,0.541015625,0.51953125,0.4951171875,0.46875,0.453125,0.482421875,0.5576171875,0.6513671875,0.7265625,0.755859375,0.740234375,0.705078125,0.642578125,0.57421875,0.5302734375,0.5283203125,0.5595703125,0.6044921875,0.6484375,0.6826171875,0.701171875,0.70703125,0.7080078125,0.7177734375,0.740234375,0.759765625,0.74609375,0.6904296875,0.607421875,0.52734375,0.4794921875,0.46875,0.4794921875,0.525390625,0.5849609375,0.6240234375,0.6171875,0.568359375,0.5,0.435546875,0.412109375,0.4521484375,0.546875,0.6533203125,0.724609375,0.740234375,0.73046875,0.6875,0.6240234375,0.568359375,0.546875,0.5634765625,0.6044921875,0.646484375,0.66796875,0.662109375,0.6357421875,0.60546875,0.5927734375,0.6044921875,0.6142578125,0.5830078125,0.513671875,0.4306640625,0.3671875,0.3466796875,0.3642578125,0.380859375,0.361328125,0.3203125,0.2861328125,0.287109375,0.3271484375,0.39453125,0.4609375,0.4990234375,0.4912109375,0.4443359375,0.3876953125,0.3564453125,0.3642578125,0.376953125,0.3681640625,0.3447265625,0.3251953125,0.326171875,0.3525390625,0.39453125,0.443359375,0.5009765625,0.546875,0.5634765625,0.548828125,0.521484375,0.5,0.4755859375,0.4326171875,0.375,0.3193359375,0.2802734375,0.26171875,0.2587890625,0.2509765625,0.22265625,0.1923828125,0.189453125,0.2265625,0.2919921875,0.3642578125,0.4267578125,0.4501953125,0.4326171875,0.400390625,0.3837890625,0.4072265625,0.46875,0.544921875,0.630859375,0.7041015625,0.7451171875,0.7529296875,0.744140625,0.740234375,0.73828125,0.7236328125,0.6904296875,0.642578125,0.5927734375,0.552734375,0.5302734375,0.5029296875,0.4443359375,0.3662109375,0.294921875,0.251953125,0.244140625,0.2587890625,0.2919921875,0.3798828125,0.5107421875,0.66015625,0.630859375,0.5693359375,0.494140625,0.4287109375,0.3681640625,0.3232421875,0.328125,0.3974609375,0.5068359375,0.609375,0.673828125,0.7060546875,0.666015625,0.5517578125,0.412109375,0.30859375,0.28125,0.3251953125,0.384765625,0.4296875,0.4453125,0.4287109375,0.396484375,0.375,0.376953125,0.3994140625,0.45703125,0.5283203125,0.572265625,0.5673828125,0.517578125,0.4482421875,0.384765625,0.3662109375,0.41015625,0.5048828125,0.6064453125,0.66796875,0.673828125,0.65625,0.61328125,0.548828125,0.484375,0.439453125,0.4228515625,0.4287109375,0.4443359375,0.482421875,0.5380859375,0.5986328125,0.6455078125,0.6689453125,0.673828125,0.673828125,0.6669921875,0.6357421875,0.5693359375,0.48046875,0.3935546875,0.3251953125,0.2724609375,0.263671875,0.322265625,0.435546875,0.5615234375,0.646484375,0.673828125,0.6806640625,0.67578125,0.6552734375,0.623046875,0.5927734375,0.57421875,0.5703125,0.564453125,0.5341796875,0.48046875,0.416015625,0.361328125,0.3310546875,0.3251953125,0.3310546875,0.361328125,0.416015625,0.48046875,0.5341796875,0.564453125,0.5703125,0.55859375,0.5078125,0.435546875,0.376953125,0.361328125,0.390625,0.4482421875,0.5146484375,0.5927734375,0.662109375,0.7001953125,0.7021484375,0.6865234375,0.673828125,0.650390625,0.583984375,0.4892578125,0.4072265625,0.3701171875,0.3837890625,0.4287109375,0.48046875,0.5283203125,0.5615234375,0.5732421875,0.568359375,0.5634765625,0.5703125,0.5673828125,0.5185546875,0.439453125,0.3720703125,0.3505859375,0.3828125,0.4482421875,0.517578125,0.5673828125,0.576171875,0.541015625,0.4833984375,0.439453125,0.4287109375,0.4365234375,0.4716796875,0.5341796875,0.603515625,0.6552734375,0.677734375,0.673828125,0.6689453125,0.6826171875,0.6953125,0.68359375,0.6396484375,0.572265625,0.5,0.431640625,0.3876953125,0.3896484375,0.439453125,0.5078125,0.55859375,0.5703125,0.578125,0.611328125,0.6533203125,0.673828125,0.658203125,0.611328125,0.55078125,0.4892578125,0.4287109375,0.38671875,0.37109375,0.3759765625,0.3828125,0.376953125,0.3583984375,0.3154296875,0.271484375,0.259765625,0.2919921875,0.3564453125,0.4287109375,0.505859375,0.587890625,0.638671875,0.6298828125,0.5673828125,0.48828125,0.4287109375,0.3828125,0.3623046875,0.388671875,0.4560546875,0.5390625,0.599609375,0.6220703125,0.625,0.5966796875,0.5322265625,0.4501953125,0.3759765625,0.333984375,0.3251953125,0.333984375,0.3701171875,0.416015625,0.44140625,0.4296875,0.3857421875,0.3251953125,0.2744140625,0.271484375,0.333984375,0.4423828125,0.552734375,0.6162109375,0.6220703125,0.60546875,0.568359375,0.515625,0.46484375,0.431640625,0.421875,0.4287109375,0.4365234375,0.431640625,0.4140625,0.3916015625,0.375,0.3701171875,0.376953125,0.4013671875,0.4716796875,0.56640625,0.6376953125,0.6552734375,0.6181640625,0.55078125,0.4765625,0.396484375,0.3330078125,0.3037109375,0.306640625,0.3212890625,0.3251953125,0.322265625,0.314453125,0.318359375,0.3525390625,0.4140625,0.486328125,0.55078125,0.607421875,0.630859375,0.599609375,0.5185546875,0.419921875,0.349609375,0.3251953125,0.32421875,0.3525390625,0.3955078125,0.4267578125,0.4228515625,0.3837890625,0.3251953125,0.27734375,0.2802734375,0.333984375,0.404296875,0.4482421875,0.4375,0.376953125,0.3046875,0.24609375,0.24609375,0.32421875,0.45703125,0.5869140625,0.673828125,0.7275390625,0.708984375,0.6142578125,0.48828125,0.3935546875,0.375,0.4287109375,0.490234375,0.5068359375,0.470703125,0.4052734375,0.349609375,0.3388671875,0.376953125,0.41796875,0.419921875,0.3876953125,0.349609375,0.3359375,0.365234375,0.4287109375,0.494140625,0.5322265625,0.53515625,0.5146484375,0.498046875,0.5087890625,0.55078125,0.603515625,0.6552734375,0.6884765625,0.6904296875,0.666015625,0.6376953125,0.6220703125,0.61328125,0.60546875,0.5869140625,0.5478515625,0.4921875,0.4306640625,0.376953125,0.3310546875,0.310546875,0.3369140625,0.4052734375,0.4873046875,0.548828125,0.5703125,0.5654296875,0.5078125,0.41015625,0.314453125,0.263671875,0.2734375,0.3251953125,0.390625,0.4658203125,0.53125,0.5703125,0.5791015625,0.5732421875,0.5703125,0.5751953125,0.5966796875,0.619140625,0.6220703125,0.5966796875,0.55078125,0.5,0.4501953125,0.41015625,0.392578125,0.3994140625,0.419921875,0.43359375,0.4287109375,0.4306640625,0.4736328125,0.5400390625,0.59375,0.6044921875,0.56640625,0.5,0.43359375,0.40234375,0.427734375,0.50390625,0.5966796875,0.6591796875,0.673828125,0.673828125,0.673828125,0.669921875,0.66015625,0.646484375,0.6328125,0.6220703125,0.6083984375,0.583984375,0.546875,0.50390625,0.466796875,0.4423828125,0.4287109375,0.42578125,0.4541015625,0.5146484375,0.587890625,0.6484375,0.6767578125,0.673828125,0.65234375,0.59375,0.5185546875,0.46484375,0.45703125,0.4931640625,0.55078125,0.6123046875,0.666015625,0.697265625,0.6982421875,0.6826171875,0.6689453125,0.673828125,0.677734375,0.6552734375,0.603515625,0.5341796875,0.4716796875,0.4365234375,0.4287109375,0.4404296875,0.4912109375,0.5595703125,0.609375,0.611328125,0.5673828125,0.5,0.43359375,0.40234375,0.427734375,0.50390625,0.5966796875,0.6591796875,0.673828125,0.662109375,0.611328125,0.5380859375,0.48046875,0.46484375,0.494140625,0.55078125,0.603515625,0.619140625,0.5927734375,0.544921875,0.5087890625,0.509765625,0.55078125,0.595703125,0.60546875,0.568359375,0.49609375,0.421875,0.3779296875,0.376953125,0.37890625,0.353515625,0.3173828125,0.3017578125,0.3232421875,0.3779296875,0.4482421875,0.5087890625,0.5234375,0.482421875,0.412109375,0.3525390625,0.33984375,0.376953125,0.419921875,0.4296875,0.4091796875,0.380859375,0.3701171875,0.3935546875,0.4482421875,0.515625,0.5966796875,0.6572265625,0.6669921875,0.623046875,0.556640625,0.5,0.4462890625,0.3876953125,0.3388671875,0.314453125,0.314453125,0.322265625,0.3251953125,0.31640625,0.28125,0.2392578125,0.22265625,0.248046875,0.306640625,0.376953125,0.4384765625,0.455078125,0.4267578125,0.3798828125,0.3505859375,0.3681640625,0.4287109375,0.5048828125,0.5869140625,0.654296875,0.6884765625,0.689453125,0.677734375,0.673828125,0.677734375,0.6953125,0.7099609375,0.7041015625,0.671875,0.6220703125,0.5703125,0.5078125,0.4111328125,0.3095703125,0.244140625,0.2373046875,0.2744140625,0.3251953125,0.384765625,0.470703125,0.5654296875,0.626953125,0.6220703125,0.5791015625,0.5107421875,0.439453125,0.365234375,0.291015625,0.2587890625,0.2958984375,0.3916015625,0.5,0.5791015625,0.6318359375,0.6220703125,0.546875,0.4462890625,0.373046875,0.365234375,0.419921875,0.48828125,0.5390625,0.5537109375,0.525390625,0.4755859375,0.4375,0.4296875,0.4423828125,0.4931640625,0.5595703125,0.60546875,0.6044921875,0.55859375,0.4892578125,0.421875,0.3818359375,0.3896484375,0.4443359375,0.517578125,0.568359375,0.5791015625,0.57421875,0.5546875,0.5224609375,0.4853515625,0.4560546875,0.44140625,0.439453125,0.4443359375,0.462890625,0.494140625,0.5302734375,0.560546875,0.576171875,0.5791015625,0.5849609375,0.6064453125,0.623046875,0.6103515625,0.5625,0.4912109375,0.419921875,0.35546875,0.322265625,0.34375,0.4150390625,0.5029296875,0.564453125,0.5791015625,0.580078125,0.5791015625,0.5751953125,0.5693359375,0.5634765625,0.5595703125,0.5595703125,0.5556640625,0.5390625,0.5078125,0.470703125,0.4404296875,0.4228515625,0.419921875,0.4228515625,0.4404296875,0.470703125,0.5078125,0.5390625,0.5556640625,0.5595703125,0.5478515625,0.4990234375,0.4306640625,0.3828125,0.3798828125,0.4228515625,0.4892578125,0.5595703125,0.623046875,0.6572265625,0.65234375,0.619140625,0.5888671875,0.5791015625,0.564453125,0.5068359375,0.4248046875,0.359375,0.341796875,0.3759765625,0.439453125,0.5087890625,0.572265625,0.6103515625,0.6123046875,0.5888671875,0.564453125,0.5595703125,0.5498046875,0.5,0.431640625,0.3818359375,0.37890625,0.421875,0.4892578125,0.55859375,0.6044921875,0.6064453125,0.5634765625,0.4990234375,0.451171875,0.439453125,0.443359375,0.4609375,0.4931640625,0.53125,0.5615234375,0.5771484375,0.5791015625,0.5859375,0.6162109375,0.65234375,0.662109375,0.6318359375,0.5712890625,0.5,0.4306640625,0.3857421875,0.3857421875,0.4326171875,0.4990234375,0.5478515625,0.5595703125,0.568359375,0.6025390625,0.6435546875,0.66015625,0.6357421875,0.5791015625,0.509765625,0.439453125,0.3798828125,0.3505859375,0.359375,0.3935546875,0.423828125,0.4296875,0.41796875,0.376953125,0.3251953125,0.2978515625,0.314453125,0.369140625,0.439453125,0.5185546875,0.611328125,0.67578125,0.673828125,0.607421875,0.5166015625,0.439453125,0.3759765625,0.3408203125,0.35546875,0.41796875,0.498046875,0.5546875,0.5693359375,0.5673828125,0.55078125,0.517578125,0.4775390625,0.4423828125,0.423828125,0.419921875,0.4296875,0.470703125,0.5224609375,0.5517578125,0.5390625,0.48828125,0.419921875,0.35546875,0.3232421875,0.3447265625,0.4150390625,0.5,0.5576171875,0.5693359375,0.564453125,0.546875,0.515625,0.4814453125,0.4541015625,0.4404296875,0.439453125,0.4404296875,0.439453125,0.4365234375,0.4326171875,0.4296875,0.4287109375,0.4296875,0.443359375,0.49609375,0.5673828125,0.6181640625,0.62109375,0.5771484375,0.509765625,0.4375,0.3740234375,0.3408203125,0.34765625,0.380859375,0.412109375,0.419921875,0.412109375,0.3818359375,0.3505859375,0.34375,0.376953125,0.439453125,0.509765625,0.576171875,0.6171875,0.611328125,0.55859375,0.486328125,0.43359375,0.419921875,0.427734375,0.4677734375,0.51953125,0.5498046875,0.5380859375,0.4873046875,0.419921875,0.3623046875,0.353515625,0.396484375,0.458984375,0.5,0.4892578125,0.4296875,0.353515625,0.27734375,0.244140625,0.283203125,0.3837890625,0.49609375,0.5791015625,0.6357421875,0.6298828125,0.55859375,0.4609375,0.3896484375,0.3828125,0.439453125,0.5,0.5107421875,0.4716796875,0.4091796875,0.3662109375,0.373046875,0.4296875,0.486328125,0.49609375,0.45703125,0.400390625,0.365234375,0.37890625,0.439453125,0.501953125,0.5224609375,0.5009765625,0.4599609375,0.4345703125,0.451171875,0.509765625,0.5771484375,0.6357421875,0.6630859375,0.650390625,0.6123046875,0.5791015625,0.5693359375,0.57421875,0.595703125,0.615234375,0.607421875,0.5654296875,0.4990234375,0.4296875,0.3662109375,0.3310546875,0.345703125,0.408203125,0.48828125,0.544921875,0.5595703125,0.5478515625,0.4912109375,0.408203125,0.3408203125,0.322265625,0.35546875,0.419921875,0.4912109375,0.5595703125,0.603515625,0.6103515625,0.58984375,0.5654296875,0.5595703125,0.5673828125,0.599609375,0.6376953125,0.650390625,0.625,0.5673828125,0.5,0.431640625,0.3759765625,0.3505859375,0.3642578125,0.40234375,0.43359375,0.439453125,0.44921875,0.4970703125,0.5634765625,0.6103515625,0.6123046875,0.5673828125,0.5,0.431640625,0.388671875,0.3935546875,0.4443359375,0.515625,0.5673828125,0.5791015625,0.5791015625,0.5791015625,0.578125,0.576171875,0.5732421875,0.5712890625,0.5693359375,0.564453125,0.548828125,0.5205078125,0.48828125,0.4599609375,0.4443359375,0.439453125,0.44140625,0.4580078125,0.490234375,0.5283203125,0.560546875,0.5771484375,0.5791015625,0.56640625,0.515625,0.4482421875,0.400390625,0.3994140625,0.4423828125,0.509765625,0.5791015625,0.6376953125,0.6650390625,0.6533203125,0.6171875,0.5859375,0.5791015625,0.5771484375,0.5615234375,0.53125,0.4931640625,0.4609375,0.443359375,0.439453125,0.451171875,0.5,0.56640625,0.61328125,0.61328125,0.568359375,0.5,0.431640625,0.388671875,0.3935546875,0.4443359375,0.515625,0.5673828125,0.5791015625,0.568359375,0.5185546875,0.451171875,0.4033203125,0.400390625,0.443359375,0.509765625,0.568359375,0.5791015625,0.5419921875,0.4833984375,0.443359375,0.453125,0.509765625,0.57421875,0.61328125,0.6064453125,0.5556640625,0.4873046875,0.439453125,0.4296875,0.4228515625,0.3896484375,0.349609375,0.3349609375,0.3603515625,0.4189453125,0.4892578125,0.548828125,0.5537109375,0.5029296875,0.427734375,0.3740234375,0.375,0.4296875,0.48828125,0.5048828125,0.478515625,0.435546875,0.4111328125,0.4296875,0.4892578125,0.5673828125,0.6591796875,0.7255859375,0.7275390625,0.6650390625,0.5751953125,0.5,0.4306640625,0.37109375,0.3408203125,0.3486328125,0.3818359375,0.412109375,0.419921875,0.41015625,0.369140625,0.318359375,0.291015625,0.3056640625,0.359375,0.4296875,0.490234375,0.501953125,0.4638671875,0.4052734375,0.3681640625,0.3798828125,0.439453125,0.5126953125,0.58203125,0.626953125,0.6328125,0.6103515625,0.5859375,0.5791015625,0.587890625,0.6259765625,0.671875,0.6953125,0.6787109375,0.6259765625,0.5595703125,0.48046875,0.373046875,0.2783203125,0.2421875,0.2744140625,0.3466796875,0.419921875,0.490234375,0.560546875,0.6103515625,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.5888671875,0.650390625,0.6640625,0.6259765625,0.5595703125,0.4765625,0.3662109375,0.271484375,0.2373046875,0.2744140625,0.3525390625,0.4296875,0.4931640625,0.5224609375,0.5166015625,0.494140625,0.484375,0.509765625,0.5693359375,0.6357421875,0.6875,0.7021484375,0.67578125,0.626953125,0.5888671875,0.5791015625,0.5869140625,0.6201171875,0.65625,0.6669921875,0.638671875,0.5791015625,0.509765625,0.439453125,0.376953125,0.34375,0.3505859375,0.3818359375,0.412109375,0.419921875,0.4228515625,0.4404296875,0.470703125,0.5078125,0.5390625,0.5556640625,0.5595703125,0.5556640625,0.5390625,0.5078125,0.470703125,0.4404296875,0.4228515625,0.419921875,0.4326171875,0.4921875,0.5791015625,0.6494140625,0.6728515625,0.6416015625,0.5791015625,0.5087890625,0.439453125,0.392578125,0.3818359375,0.3994140625,0.421875,0.4296875,0.431640625,0.43359375,0.4365234375,0.4384765625,0.439453125,0.439453125,0.439453125,0.443359375,0.4599609375,0.4912109375,0.5283203125,0.55859375,0.576171875,0.5791015625,0.576171875,0.5576171875,0.5234375,0.4814453125,0.4453125,0.4248046875,0.419921875,0.41015625,0.376953125,0.3408203125,0.33203125,0.3642578125,0.427734375,0.5,0.5673828125,0.611328125,0.6083984375,0.5576171875,0.4853515625,0.43359375,0.419921875,0.412109375,0.390625,0.375,0.388671875,0.4384765625,0.5087890625,0.5791015625,0.642578125,0.67578125,0.65625,0.587890625,0.50390625,0.4443359375,0.4296875,0.419921875,0.38671875,0.3486328125,0.3359375,0.36328125,0.421875,0.4892578125,0.5576171875,0.615234375,0.6416015625,0.630859375,0.595703125,0.5654296875,0.5595703125,0.5576171875,0.5439453125,0.515625,0.4833984375,0.455078125,0.44140625,0.439453125,0.453125,0.5029296875,0.5712890625,0.6181640625,0.6201171875,0.576171875,0.509765625,0.439453125,0.3779296875,0.3466796875,0.353515625,0.384765625,0.4140625,0.419921875,0.4296875,0.4765625,0.54296875,0.5908203125,0.5947265625,0.5546875,0.4892578125,0.4248046875,0.3837890625,0.3876953125,0.4365234375,0.505859375,0.556640625,0.5693359375,0.5615234375,0.521484375,0.46875,0.4365234375,0.4453125,0.4931640625,0.5595703125,0.6357421875,0.724609375,0.7890625,0.7890625,0.724609375,0.6357421875,0.5595703125,0.4892578125,0.421875,0.3759765625,0.3681640625,0.3876953125,0.412109375,0.419921875,0.4248046875,0.4423828125,0.474609375,0.5107421875,0.5400390625,0.556640625,0.5595703125,0.5693359375,0.6123046875,0.66796875,0.701171875,0.6904296875,0.638671875,0.5693359375,0.49609375,0.423828125,0.3759765625,0.3662109375,0.38671875,0.412109375,0.419921875,0.4248046875,0.4443359375,0.4765625,0.513671875,0.54296875,0.5576171875,0.5595703125,0.55859375,0.5595703125,0.5625,0.56640625,0.5693359375,0.5703125,0.5693359375,0.576171875,0.6083984375,0.646484375,0.6611328125,0.63671875,0.5791015625,0.509765625,0.4423828125,0.3984375,0.3984375,0.44140625,0.5048828125,0.5498046875,0.5595703125,0.5458984375,0.49609375,0.427734375,0.380859375,0.37890625,0.4228515625,0.4892578125,0.5595703125,0.6201171875,0.650390625,0.6396484375,0.6025390625,0.5693359375,0.5595703125,0.568359375,0.609375,0.666015625,0.7021484375,0.6943359375,0.646484375,0.5791015625,0.5205078125,0.5078125,0.5419921875,0.5966796875,0.630859375,0.6181640625,0.5595703125,0.478515625,0.3720703125,0.2802734375,0.2490234375,0.287109375,0.3642578125,0.439453125,0.5009765625,0.52734375,0.515625,0.4892578125,0.4755859375,0.5,0.5595703125,0.6162109375,0.6240234375,0.5830078125,0.5244140625,0.486328125,0.4990234375,0.5595703125,0.6201171875,0.6337890625,0.599609375,0.544921875,0.5087890625,0.5205078125,0.5791015625,0.6357421875,0.6337890625,0.5732421875,0.490234375,0.4306640625,0.431640625,0.4892578125,0.5576171875,0.6005859375,0.5966796875,0.5478515625,0.478515625,0.4296875,0.419921875,0.435546875,0.4970703125,0.5869140625,0.658203125,0.6796875,0.6455078125,0.5791015625,0.505859375,0.4326171875,0.3828125,0.3701171875,0.388671875,0.412109375,0.419921875,0.4150390625,0.3955078125,0.37890625,0.390625,0.4384765625,0.5078125,0.5791015625,0.6435546875,0.6767578125,0.658203125,0.5908203125,0.5078125,0.451171875,0.439453125,0.453125,0.5029296875,0.5712890625,0.6181640625,0.6201171875,0.576171875,0.509765625,0.443359375,0.400390625,0.4033203125,0.451171875,0.5185546875,0.568359375,0.5791015625,0.5869140625,0.619140625,0.6552734375,0.6640625,0.6328125,0.5712890625,0.5,0.4287109375,0.3701171875,0.3447265625,0.359375,0.3994140625,0.4326171875,0.439453125,0.4375,0.43359375,0.4296875,0.4248046875,0.421875,0.419921875,0.419921875,0.4228515625,0.4404296875,0.47265625,0.5107421875,0.544921875,0.564453125,0.5693359375,0.5673828125,0.55078125,0.5185546875,0.48046875,0.4482421875,0.431640625,0.4296875,0.423828125,0.3935546875,0.359375,0.3505859375,0.3798828125,0.439453125,0.509765625,0.5751953125,0.6162109375,0.6083984375,0.5556640625,0.4833984375,0.431640625,0.419921875,0.4228515625,0.4404296875,0.47265625,0.5107421875,0.544921875,0.564453125,0.5693359375,0.5791015625,0.6123046875,0.650390625,0.6630859375,0.6357421875,0.5771484375,0.509765625,0.4404296875,0.37890625,0.3447265625,0.349609375,0.380859375,0.4111328125,0.419921875,0.4140625,0.384765625,0.3515625,0.34375,0.373046875,0.431640625,0.5,0.556640625,0.5673828125,0.529296875,0.4736328125,0.4375,0.4501953125,0.509765625,0.5791015625,0.638671875,0.666015625,0.6533203125,0.6142578125,0.5791015625,0.5693359375,0.556640625,0.5068359375,0.44140625,0.396484375,0.3974609375,0.4423828125,0.509765625,0.568359375,0.583984375,0.5546875,0.5078125,0.48046875,0.498046875,0.5595703125,0.6181640625,0.623046875,0.5712890625,0.4970703125,0.4462890625,0.451171875,0.509765625,0.5888671875,0.681640625,0.74609375,0.744140625,0.6748046875,0.5791015625,0.5,0.431640625,0.38671875,0.388671875,0.435546875,0.501953125,0.5498046875,0.5595703125,0.548828125,0.5087890625,0.4599609375,0.43359375,0.4501953125,0.501953125,0.5693359375,0.6259765625,0.63671875,0.599609375,0.5439453125,0.5078125,0.5205078125,0.5791015625,0.6435546875,0.6767578125,0.658203125,0.5908203125,0.5078125,0.451171875,0.439453125,0.451171875,0.494140625,0.5478515625,0.5771484375,0.5634765625,0.509765625,0.439453125,0.36328125,0.2880859375,0.255859375,0.2939453125,0.390625,0.4990234375,0.5791015625,0.6416015625,0.671875,0.6474609375,0.5859375,0.6533203125,0.671875,0.63671875,0.5703125,0.4853515625,0.3681640625,0.2587890625,0.2080078125,0.2314453125,0.3017578125,0.376953125,0.4453125,0.498046875,0.5283203125,0.541015625,0.55078125,0.576171875,0.6220703125,0.6728515625,0.7158203125,0.7373046875,0.7294921875,0.7021484375,0.6796875,0.673828125,0.6787109375,0.7001953125,0.71875,0.7119140625,0.673828125,0.61328125,0.55078125,0.486328125,0.4140625,0.3525390625,0.318359375,0.314453125,0.322265625,0.3251953125,0.3310546875,0.361328125,0.416015625,0.48046875,0.5341796875,0.564453125,0.5703125,0.564453125,0.5341796875,0.48046875,0.416015625,0.361328125,0.3310546875,0.3251953125,0.3408203125,0.4130859375,0.5283203125,0.6416015625,0.7099609375,0.71484375,0.673828125,0.615234375,0.5361328125,0.453125,0.3916015625,0.3662109375,0.3671875,0.376953125,0.388671875,0.40234375,0.416015625,0.4248046875,0.4287109375,0.4296875,0.4287109375,0.4345703125,0.46484375,0.5185546875,0.5830078125,0.6376953125,0.66796875,0.673828125,0.6669921875,0.630859375,0.560546875,0.4736328125,0.3935546875,0.34375,0.3251953125,0.3095703125,0.28125,0.2646484375,0.28515625,0.3447265625,0.423828125,0.5,0.56640625,0.6044921875,0.5859375,0.5146484375,0.419921875,0.349609375,0.3251953125,0.31640625,0.3212890625,0.359375,0.43359375,0.5283203125,0.6142578125,0.673828125,0.7177734375,0.724609375,0.67578125,0.580078125,0.474609375,0.4013671875,0.376953125,0.361328125,0.3330078125,0.30859375,0.310546875,0.34375,0.3955078125,0.4482421875,0.4990234375,0.544921875,0.57421875,0.580078125,0.5712890625,0.564453125,0.5703125,0.5751953125,0.5595703125,0.5224609375,0.4765625,0.439453125,0.423828125,0.4287109375,0.4501953125,0.5087890625,0.5830078125,0.6376953125,0.6455078125,0.609375,0.55078125,0.4873046875,0.421875,0.3671875,0.337890625,0.33203125,0.33203125,0.3251953125,0.3251953125,0.3623046875,0.42578125,0.484375,0.509765625,0.4931640625,0.4482421875,0.400390625,0.37890625,0.400390625,0.4638671875,0.5419921875,0.6005859375,0.6220703125,0.623046875,0.5947265625,0.5478515625,0.5078125,0.498046875,0.5234375,0.5703125,0.626953125,0.693359375,0.7412109375,0.7412109375,0.693359375,0.626953125,0.5703125,0.513671875,0.4404296875,0.369140625,0.3212890625,0.306640625,0.314453125,0.3251953125,0.341796875,0.37890625,0.435546875,0.4951171875,0.5419921875,0.5654296875,0.5703125,0.5810546875,0.62890625,0.6943359375,0.73828125,0.736328125,0.6904296875,0.6220703125,0.5439453125,0.44921875,0.3623046875,0.3095703125,0.298828125,0.3125,0.3251953125,0.3427734375,0.3857421875,0.4501953125,0.5146484375,0.5595703125,0.576171875,0.5703125,0.5625,0.5673828125,0.5849609375,0.607421875,0.6240234375,0.62890625,0.6220703125,0.6181640625,0.6376953125,0.666015625,0.677734375,0.658203125,0.611328125,0.55078125,0.4931640625,0.45703125,0.45703125,0.4931640625,0.541015625,0.5712890625,0.5703125,0.548828125,0.490234375,0.416015625,0.361328125,0.353515625,0.3896484375,0.4482421875,0.51171875,0.5771484375,0.6240234375,0.634765625,0.6142578125,0.5859375,0.5703125,0.5712890625,0.611328125,0.6787109375,0.736328125,0.755859375,0.7294921875,0.673828125,0.6201171875,0.59765625,0.609375,0.6337890625,0.6455078125,0.6240234375,0.5703125,0.4990234375,0.4013671875,0.3125,0.275390625,0.30078125,0.3642578125,0.4287109375,0.4853515625,0.517578125,0.5224609375,0.51171875,0.5068359375,0.525390625,0.5703125,0.609375,0.60546875,0.5615234375,0.5087890625,0.484375,0.5078125,0.5703125,0.6337890625,0.6630859375,0.6533203125,0.625,0.60546875,0.62109375,0.673828125,0.7177734375,0.693359375,0.6015625,0.4853515625,0.40234375,0.3916015625,0.4482421875,0.513671875,0.544921875,0.5234375,0.4560546875,0.376953125,0.328125,0.3251953125,0.353515625,0.4453125,0.578125,0.6962890625,0.7529296875,0.736328125,0.673828125,0.59375,0.4931640625,0.39453125,0.3291015625,0.306640625,0.3134765625,0.3251953125,0.3349609375,0.349609375,0.3828125,0.4443359375,0.5263671875,0.607421875,0.673828125,0.7255859375,0.7353515625,0.6845703125,0.5888671875,0.4912109375,0.43359375,0.4287109375,0.4501953125,0.5087890625,0.5830078125,0.6376953125,0.6455078125,0.609375,0.55078125,0.494140625,0.46484375,0.48046875,0.5380859375,0.611328125,0.662109375,0.673828125,0.6796875,0.7001953125,0.71484375,0.69921875,0.646484375,0.5732421875,0.5,0.4296875,0.375,0.353515625,0.369140625,0.4052734375,0.4306640625,0.4287109375,0.4169921875,0.396484375,0.37109375,0.3486328125,0.3330078125,0.326171875,0.3251953125,0.3310546875,0.361328125,0.4189453125,0.4931640625,0.5615234375,0.6044921875,0.6220703125,0.625,0.5966796875,0.5361328125,0.462890625,0.40234375,0.3740234375,0.376953125,0.3828125,0.3759765625,0.37109375,0.38671875,0.4287109375,0.4892578125,0.55078125,0.60546875,0.623046875,0.583984375,0.498046875,0.40234375,0.33984375,0.3251953125,0.3310546875,0.361328125,0.4189453125,0.4931640625,0.5615234375,0.6044921875,0.6220703125,0.6376953125,0.666015625,0.6904296875,0.6884765625,0.6552734375,0.603515625,0.55078125,0.4951171875,0.423828125,0.3564453125,0.314453125,0.3037109375,0.3134765625,0.3251953125,0.3330078125,0.33203125,0.3349609375,0.3544921875,0.39453125,0.447265625,0.5,0.5419921875,0.5498046875,0.5244140625,0.4912109375,0.4755859375,0.4970703125,0.55078125,0.6142578125,0.673828125,0.7080078125,0.705078125,0.673828125,0.638671875,0.6220703125,0.6015625,0.5498046875,0.486328125,0.4462890625,0.44921875,0.4921875,0.55078125,0.6015625,0.6064453125,0.5693359375,0.517578125,0.4892578125,0.5087890625,0.5703125,0.62890625,0.6376953125,0.59375,0.52734375,0.4833984375,0.4921875,0.55078125,0.6298828125,0.7177734375,0.7724609375,0.7587890625,0.6806640625,0.580078125,0.5,0.4326171875,0.39453125,0.4052734375,0.458984375,0.525390625,0.568359375,0.5703125,0.5537109375,0.5234375,0.4951171875,0.4912109375,0.51953125,0.5693359375,0.6220703125,0.6640625,0.671875,0.6474609375,0.61328125,0.59765625,0.619140625,0.673828125,0.7255859375,0.7353515625,0.6845703125,0.5888671875,0.4912109375,0.43359375,0.4287109375,0.44921875,0.498046875,0.5537109375,0.580078125,0.55859375,0.5,0.4287109375,0.357421875,0.3056640625,0.30859375,0.3818359375,0.4990234375,0.6083984375,0.673828125,0.7138671875,0.7021484375,0.626953125,0.5966796875,0.642578125,0.6435546875,0.5986328125,0.5302734375,0.4462890625,0.33203125,0.228515625,0.1845703125,0.2138671875,0.2880859375,0.3642578125,0.4375,0.51171875,0.5712890625,0.6044921875,0.615234375,0.6201171875,0.634765625,0.65625,0.6826171875,0.708984375,0.7294921875,0.73828125,0.740234375,0.740234375,0.7431640625,0.7529296875,0.7568359375,0.740234375,0.701171875,0.65234375,0.6044921875,0.552734375,0.4775390625,0.3916015625,0.3193359375,0.2763671875,0.2607421875,0.2587890625,0.265625,0.2978515625,0.3583984375,0.4306640625,0.490234375,0.5234375,0.5302734375,0.5234375,0.490234375,0.4306640625,0.3583984375,0.2978515625,0.265625,0.2587890625,0.2724609375,0.341796875,0.4638671875,0.5986328125,0.703125,0.7470703125,0.740234375,0.708984375,0.634765625,0.52734375,0.4248046875,0.359375,0.3447265625,0.3642578125,0.392578125,0.423828125,0.4521484375,0.46875,0.47265625,0.470703125,0.46875,0.4755859375,0.5087890625,0.568359375,0.640625,0.701171875,0.7333984375,0.740234375,0.732421875,0.689453125,0.6015625,0.4853515625,0.373046875,0.2958984375,0.2587890625,0.228515625,0.197265625,0.1923828125,0.2373046875,0.3232421875,0.4208984375,0.5,0.5673828125,0.60546875,0.5849609375,0.501953125,0.390625,0.2998046875,0.2587890625,0.2421875,0.26953125,0.3583984375,0.48828125,0.619140625,0.70703125,0.740234375,0.75390625,0.7373046875,0.67578125,0.580078125,0.4775390625,0.4013671875,0.3642578125,0.3369140625,0.3095703125,0.2978515625,0.30859375,0.3388671875,0.3720703125,0.39453125,0.412109375,0.427734375,0.44140625,0.4580078125,0.478515625,0.50390625,0.5302734375,0.55078125,0.546875,0.5185546875,0.48046875,0.4521484375,0.4482421875,0.46875,0.50390625,0.56640625,0.6357421875,0.6787109375,0.681640625,0.6494140625,0.6044921875,0.5556640625,0.49609375,0.4306640625,0.369140625,0.3212890625,0.2861328125,0.2587890625,0.2392578125,0.2470703125,0.287109375,0.341796875,0.3876953125,0.40625,0.39453125,0.3779296875,0.3779296875,0.408203125,0.46875,0.5419921875,0.6005859375,0.634765625,0.6552734375,0.6513671875,0.6181640625,0.5712890625,0.5322265625,0.517578125,0.5302734375,0.55078125,0.576171875,0.59375,0.59375,0.576171875,0.55078125,0.5302734375,0.5009765625,0.439453125,0.35546875,0.28125,0.2392578125,0.2373046875,0.2587890625,0.291015625,0.3427734375,0.408203125,0.46875,0.509765625,0.52734375,0.5302734375,0.5419921875,0.5966796875,0.673828125,0.7314453125,0.7421875,0.7021484375,0.634765625,0.552734375,0.439453125,0.322265625,0.2421875,0.216796875,0.232421875,0.2587890625,0.294921875,0.3623046875,0.447265625,0.5185546875,0.5546875,0.552734375,0.5302734375,0.5107421875,0.51953125,0.5576171875,0.607421875,0.6455078125,0.654296875,0.634765625,0.615234375,0.6181640625,0.640625,0.6630859375,0.6669921875,0.6455078125,0.6044921875,0.5625,0.53515625,0.5302734375,0.541015625,0.552734375,0.55078125,0.5302734375,0.4951171875,0.4326171875,0.36328125,0.3203125,0.3173828125,0.349609375,0.39453125,0.4453125,0.509765625,0.568359375,0.5966796875,0.587890625,0.55859375,0.5302734375,0.515625,0.5478515625,0.6240234375,0.7099609375,0.767578125,0.775390625,0.740234375,0.697265625,0.6650390625,0.6435546875,0.6259765625,0.6044921875,0.572265625,0.5302734375,0.478515625,0.4111328125,0.35546875,0.33984375,0.3681640625,0.419921875,0.46875,0.51171875,0.5419921875,0.5498046875,0.5380859375,0.521484375,0.5166015625,0.5302734375,0.5380859375,0.5107421875,0.4609375,0.421875,0.4208984375,0.462890625,0.5302734375,0.5986328125,0.6494140625,0.67578125,0.6826171875,0.6845703125,0.701171875,0.740234375,0.7666015625,0.7158203125,0.59375,0.4521484375,0.3544921875,0.3388671875,0.39453125,0.45703125,0.4775390625,0.44140625,0.3642578125,0.28515625,0.24609375,0.2587890625,0.3056640625,0.4248046875,0.5908203125,0.7373046875,0.8115234375,0.802734375,0.740234375,0.6552734375,0.529296875,0.388671875,0.28125,0.232421875,0.234375,0.2587890625,0.2890625,0.3408203125,0.4189453125,0.5166015625,0.6123046875,0.6884765625,0.740234375,0.7744140625,0.7587890625,0.6875,0.5849609375,0.49609375,0.4560546875,0.46875,0.50390625,0.56640625,0.6357421875,0.6787109375,0.681640625,0.6494140625,0.6044921875,0.5634765625,0.546875,0.568359375,0.6240234375,0.6875,0.73046875,0.740234375,0.744140625,0.7568359375,0.7568359375,0.7236328125,0.65625,0.5751953125,0.5,0.4326171875,0.3916015625,0.3916015625,0.4248046875,0.466796875,0.4853515625,0.46875,0.4384765625,0.3935546875,0.341796875,0.2978515625,0.2705078125,0.259765625,0.2587890625,0.263671875,0.2939453125,0.3583984375,0.447265625,0.53515625,0.6005859375,0.634765625,0.650390625,0.6220703125,0.546875,0.4521484375,0.376953125,0.3486328125,0.3642578125,0.388671875,0.4111328125,0.435546875,0.46875,0.51171875,0.55859375,0.6044921875,0.640625,0.6318359375,0.5634765625,0.4521484375,0.341796875,0.2734375,0.2587890625,0.263671875,0.2939453125,0.3583984375,0.447265625,0.53515625,0.6005859375,0.634765625,0.662109375,0.689453125,0.701171875,0.6904296875,0.66015625,0.626953125,0.6044921875,0.57421875,0.5029296875,0.4033203125,0.30859375,0.25,0.23828125,0.2587890625,0.287109375,0.3251953125,0.369140625,0.4140625,0.451171875,0.4794921875,0.5,0.513671875,0.5146484375,0.5078125,0.5078125,0.525390625,0.560546875,0.6044921875,0.6533203125,0.705078125,0.740234375,0.740234375,0.7080078125,0.666015625,0.634765625,0.6025390625,0.552734375,0.5078125,0.4912109375,0.5126953125,0.5576171875,0.6044921875,0.63671875,0.619140625,0.5576171875,0.48828125,0.451171875,0.4677734375,0.5302734375,0.591796875,0.611328125,0.587890625,0.546875,0.5234375,0.54296875,0.6044921875,0.681640625,0.763671875,0.806640625,0.7783203125,0.6884765625,0.58203125,0.5,0.4345703125,0.400390625,0.4140625,0.4638671875,0.5185546875,0.544921875,0.5302734375,0.50390625,0.486328125,0.4912109375,0.521484375,0.568359375,0.6103515625,0.634765625,0.6494140625,0.6494140625,0.642578125,0.6435546875,0.6611328125,0.6962890625,0.740234375,0.7744140625,0.7587890625,0.6875,0.5849609375,0.49609375,0.4560546875,0.46875,0.5048828125,0.5654296875,0.6240234375,0.6435546875,0.6103515625,0.54296875,0.46875,0.4033203125,0.3720703125,0.4052734375,0.4990234375,0.6171875,0.705078125,0.740234375,0.7431640625,0.68359375,0.560546875,0.6123046875,0.626953125,0.6005859375,0.5400390625,0.46875,0.3876953125,0.2841796875,0.201171875,0.181640625,0.2314453125,0.31640625,0.39453125,0.4716796875,0.560546875,0.634765625,0.66796875,0.658203125,0.6279296875,0.6044921875,0.5888671875,0.591796875,0.619140625,0.662109375,0.70703125,0.734375,0.740234375,0.7412109375,0.744140625,0.740234375,0.7236328125,0.6953125,0.6630859375,0.634765625,0.6005859375,0.53515625,0.447265625,0.3583984375,0.2939453125,0.263671875,0.2587890625,0.263671875,0.2890625,0.3359375,0.3916015625,0.4384765625,0.4638671875,0.46875,0.4638671875,0.4384765625,0.3916015625,0.3359375,0.2890625,0.263671875,0.2587890625,0.267578125,0.314453125,0.408203125,0.52734375,0.6376953125,0.7099609375,0.740234375,0.744140625,0.689453125,0.58203125,0.4638671875,0.380859375,0.361328125,0.39453125,0.44140625,0.4912109375,0.5302734375,0.546875,0.54296875,0.533203125,0.5302734375,0.53515625,0.560546875,0.607421875,0.6630859375,0.7099609375,0.7353515625,0.740234375,0.7353515625,0.703125,0.6298828125,0.521484375,0.40625,0.314453125,0.2587890625,0.2109375,0.1650390625,0.15625,0.208984375,0.3095703125,0.41796875,0.5,0.5703125,0.619140625,0.61328125,0.5380859375,0.4228515625,0.318359375,0.2587890625,0.228515625,0.2646484375,0.3779296875,0.5322265625,0.669921875,0.7412109375,0.740234375,0.7197265625,0.6904296875,0.6435546875,0.5791015625,0.5078125,0.4443359375,0.39453125,0.3525390625,0.326171875,0.3251953125,0.3447265625,0.3681640625,0.376953125,0.3642578125,0.341796875,0.314453125,0.30078125,0.3173828125,0.36328125,0.419921875,0.46875,0.5087890625,0.5224609375,0.5107421875,0.48828125,0.4765625,0.490234375,0.5302734375,0.580078125,0.6416015625,0.6923828125,0.712890625,0.697265625,0.6640625,0.634765625,0.6064453125,0.568359375,0.513671875,0.4443359375,0.3720703125,0.30859375,0.2587890625,0.21484375,0.18359375,0.1845703125,0.2236328125,0.2841796875,0.3369140625,0.3642578125,0.3818359375,0.3984375,0.421875,0.4580078125,0.505859375,0.5576171875,0.6044921875,0.6484375,0.67578125,0.66796875,0.62109375,0.5537109375,0.4970703125,0.46875,0.4482421875,0.4228515625,0.4052734375,0.4052734375,0.4228515625,0.4482421875,0.46875,0.4765625,0.4384765625,0.361328125,0.2783203125,0.2255859375,0.22265625,0.2587890625,0.3076171875,0.3662109375,0.421875,0.4580078125,0.4716796875,0.470703125,0.46875,0.482421875,0.5400390625,0.6240234375,0.6904296875,0.70703125,0.6708984375,0.6044921875,0.5205078125,0.3994140625,0.275390625,0.1953125,0.1796875,0.212890625,0.2587890625,0.314453125,0.3994140625,0.48828125,0.5439453125,0.548828125,0.5146484375,0.46875,0.4345703125,0.4443359375,0.5,0.57421875,0.6298828125,0.6396484375,0.6044921875,0.564453125,0.55078125,0.568359375,0.607421875,0.642578125,0.6533203125,0.634765625,0.611328125,0.5986328125,0.5908203125,0.5771484375,0.5517578125,0.513671875,0.46875,0.4189453125,0.357421875,0.306640625,0.2861328125,0.3017578125,0.3349609375,0.3642578125,0.3984375,0.45703125,0.5185546875,0.5546875,0.5498046875,0.5146484375,0.46875,0.4345703125,0.4501953125,0.521484375,0.6240234375,0.712890625,0.7529296875,0.740234375,0.7119140625,0.6748046875,0.62890625,0.580078125,0.5341796875,0.4970703125,0.46875,0.44140625,0.4140625,0.4033203125,0.4189453125,0.45703125,0.4990234375,0.5302734375,0.556640625,0.580078125,0.5849609375,0.56640625,0.529296875,0.4931640625,0.46875,0.4404296875,0.384765625,0.328125,0.3056640625,0.3330078125,0.396484375,0.46875,0.5419921875,0.611328125,0.666015625,0.6953125,0.7080078125,0.7177734375,0.740234375,0.7470703125,0.6787109375,0.546875,0.4052734375,0.3154296875,0.306640625,0.3642578125,0.4248046875,0.4384765625,0.39453125,0.3173828125,0.2490234375,0.2275390625,0.2587890625,0.32421875,0.45703125,0.626953125,0.7646484375,0.8251953125,0.8046875,0.740234375,0.65234375,0.515625,0.361328125,0.2451171875,0.19921875,0.2158203125,0.2587890625,0.310546875,0.38671875,0.482421875,0.580078125,0.658203125,0.7099609375,0.740234375,0.7548828125,0.7216796875,0.646484375,0.560546875,0.501953125,0.494140625,0.5302734375,0.580078125,0.6416015625,0.6923828125,0.712890625,0.697265625,0.6640625,0.634765625,0.611328125,0.60546875,0.6240234375,0.6630859375,0.7060546875,0.734375,0.740234375,0.744140625,0.7568359375,0.7568359375,0.7236328125,0.65625,0.5751953125,0.5,0.4365234375,0.4140625,0.44140625,0.4990234375,0.55078125,0.5634765625,0.5302734375,0.4794921875,0.4130859375,0.3447265625,0.2919921875,0.265625,0.2587890625,0.2587890625,0.2607421875,0.2763671875,0.3193359375,0.3916015625,0.4775390625,0.552734375,0.6044921875,0.6376953125,0.619140625,0.546875,0.4521484375,0.3798828125,0.361328125,0.39453125,0.4404296875,0.4873046875,0.5302734375,0.5634765625,0.587890625,0.6103515625,0.634765625,0.65234375,0.6259765625,0.546875,0.435546875,0.33203125,0.271484375,0.2587890625,0.2607421875,0.2763671875,0.3193359375,0.3916015625,0.4775390625,0.552734375,0.6044921875,0.646484375,0.6728515625,0.673828125,0.654296875,0.630859375,0.6220703125,0.634765625,0.638671875,0.580078125,0.4658203125,0.33984375,0.25,0.2265625,0.2587890625,0.3115234375,0.384765625,0.4609375,0.513671875,0.529296875,0.5185546875,0.5,0.48046875,0.4677734375,0.474609375,0.5078125,0.556640625,0.603515625,0.634765625,0.666015625,0.7080078125,0.740234375,0.740234375,0.705078125,0.6533203125,0.6044921875,0.5576171875,0.5126953125,0.4912109375,0.5078125,0.552734375,0.6025390625,0.634765625,0.646484375,0.6044921875,0.5185546875,0.43359375,0.3896484375,0.4072265625,0.46875,0.533203125,0.5634765625,0.560546875,0.5439453125,0.5400390625,0.5712890625,0.634765625,0.7119140625,0.7890625,0.826171875,0.7900390625,0.693359375,0.58203125,0.5,0.435546875,0.4052734375,0.4189453125,0.4609375,0.4990234375,0.50390625,0.46875,0.4306640625,0.4248046875,0.4609375,0.5244140625,0.5849609375,0.61328125,0.6044921875,0.5859375,0.5732421875,0.580078125,0.6123046875,0.662109375,0.708984375,0.740234375,0.7548828125,0.7216796875,0.646484375,0.560546875,0.501953125,0.494140625,0.5302734375,0.583984375,0.6591796875,0.720703125,0.7314453125,0.6845703125,0.60546875,0.5302734375,0.4677734375,0.4521484375,0.5,0.59375,0.6904296875,0.7431640625,0.740234375,0.7041015625,0.60546875,0.4609375,0.623046875,0.6162109375,0.5712890625,0.501953125,0.4287109375,0.349609375,0.2578125,0.1953125,0.2001953125,0.271484375,0.3671875,0.4482421875,0.52734375,0.6220703125,0.6962890625,0.71484375,0.6748046875,0.6083984375,0.55078125,0.5048828125,0.482421875,0.5,0.5537109375,0.619140625,0.6630859375,0.673828125,0.673828125,0.673828125,0.669921875,0.66015625,0.646484375,0.6328125,0.6220703125,0.6044921875,0.5615234375,0.4931640625,0.4189453125,0.361328125,0.3310546875,0.3251953125,0.328125,0.3408203125,0.36328125,0.390625,0.4140625,0.4267578125,0.4287109375,0.4267578125,0.4140625,0.390625,0.36328125,0.3408203125,0.328125,0.3251953125,0.326171875,0.3388671875,0.37890625,0.44921875,0.5361328125,0.615234375,0.673828125,0.708984375,0.68359375,0.5966796875,0.4892578125,0.4130859375,0.400390625,0.4482421875,0.5107421875,0.5703125,0.6083984375,0.615234375,0.5966796875,0.576171875,0.5703125,0.572265625,0.5849609375,0.6083984375,0.6357421875,0.658203125,0.6708984375,0.673828125,0.673828125,0.6669921875,0.6357421875,0.5693359375,0.48046875,0.3935546875,0.3251953125,0.259765625,0.1943359375,0.1689453125,0.2099609375,0.3076171875,0.4169921875,0.5,0.57421875,0.640625,0.6611328125,0.6103515625,0.5068359375,0.3994140625,0.3251953125,0.28125,0.30859375,0.412109375,0.5517578125,0.666015625,0.7060546875,0.673828125,0.626953125,0.59765625,0.583984375,0.572265625,0.5478515625,0.505859375,0.4482421875,0.3935546875,0.3701171875,0.380859375,0.4091796875,0.4296875,0.419921875,0.376953125,0.3203125,0.25390625,0.2099609375,0.2197265625,0.2802734375,0.361328125,0.4287109375,0.4833984375,0.509765625,0.5068359375,0.4921875,0.4892578125,0.515625,0.5703125,0.6328125,0.689453125,0.7197265625,0.7119140625,0.67578125,0.638671875,0.6220703125,0.61328125,0.60546875,0.5830078125,0.53515625,0.4658203125,0.390625,0.3251953125,0.259765625,0.1923828125,0.154296875,0.171875,0.2392578125,0.318359375,0.376953125,0.4228515625,0.4453125,0.447265625,0.4462890625,0.4580078125,0.494140625,0.55078125,0.615234375,0.6748046875,0.697265625,0.66015625,0.578125,0.490234375,0.4287109375,0.3720703125,0.3056640625,0.2578125,0.2578125,0.3056640625,0.3720703125,0.4287109375,0.4677734375,0.45703125,0.3974609375,0.322265625,0.2724609375,0.275390625,0.3251953125,0.3876953125,0.4453125,0.4794921875,0.48046875,0.4580078125,0.435546875,0.4287109375,0.44140625,0.498046875,0.5791015625,0.6416015625,0.6552734375,0.6181640625,0.55078125,0.4677734375,0.3525390625,0.2431640625,0.1875,0.2021484375,0.26171875,0.3251953125,0.396484375,0.4892578125,0.5693359375,0.5966796875,0.5625,0.4951171875,0.4287109375,0.380859375,0.38671875,0.4482421875,0.5322265625,0.59375,0.599609375,0.55078125,0.494140625,0.46484375,0.4765625,0.525390625,0.5849609375,0.6220703125,0.6220703125,0.615234375,0.6201171875,0.62109375,0.6005859375,0.5537109375,0.4921875,0.4287109375,0.3662109375,0.3095703125,0.279296875,0.287109375,0.3232421875,0.3603515625,0.376953125,0.3974609375,0.4462890625,0.505859375,0.541015625,0.533203125,0.4892578125,0.4287109375,0.3759765625,0.3671875,0.41796875,0.5126953125,0.611328125,0.6689453125,0.673828125,0.6591796875,0.6279296875,0.5791015625,0.5234375,0.474609375,0.443359375,0.4287109375,0.4208984375,0.423828125,0.4462890625,0.4833984375,0.5244140625,0.5556640625,0.5703125,0.583984375,0.6044921875,0.6123046875,0.5927734375,0.5439453125,0.4833984375,0.4287109375,0.369140625,0.2900390625,0.2275390625,0.21875,0.2705078125,0.3525390625,0.4287109375,0.5029296875,0.5791015625,0.638671875,0.6689453125,0.671875,0.66796875,0.673828125,0.6669921875,0.5966796875,0.478515625,0.3662109375,0.3056640625,0.3154296875,0.376953125,0.4375,0.4482421875,0.404296875,0.333984375,0.2802734375,0.27734375,0.3251953125,0.4033203125,0.5322265625,0.6748046875,0.7705078125,0.7890625,0.7431640625,0.673828125,0.5869140625,0.45703125,0.3203125,0.232421875,0.2197265625,0.263671875,0.3251953125,0.3916015625,0.47265625,0.5546875,0.6162109375,0.6494140625,0.6640625,0.673828125,0.6728515625,0.6318359375,0.5654296875,0.5078125,0.48828125,0.5146484375,0.5703125,0.6328125,0.689453125,0.7197265625,0.7119140625,0.67578125,0.638671875,0.6220703125,0.61328125,0.611328125,0.62109375,0.638671875,0.658203125,0.6708984375,0.673828125,0.6796875,0.7001953125,0.71484375,0.69921875,0.646484375,0.5732421875,0.5,0.439453125,0.431640625,0.4794921875,0.5546875,0.6123046875,0.6181640625,0.5703125,0.5048828125,0.4296875,0.3642578125,0.3251953125,0.31640625,0.3232421875,0.3251953125,0.322265625,0.314453125,0.318359375,0.3525390625,0.4140625,0.486328125,0.55078125,0.599609375,0.5966796875,0.5390625,0.4599609375,0.40234375,0.3994140625,0.4482421875,0.509765625,0.5703125,0.6123046875,0.6279296875,0.623046875,0.6162109375,0.6220703125,0.625,0.5966796875,0.5322265625,0.4501953125,0.3759765625,0.333984375,0.3251953125,0.322265625,0.314453125,0.318359375,0.3525390625,0.4140625,0.486328125,0.55078125,0.60546875,0.62890625,0.6181640625,0.58984375,0.5693359375,0.5791015625,0.6220703125,0.65625,0.62109375,0.51953125,0.3935546875,0.30078125,0.2802734375,0.3251953125,0.396484375,0.4921875,0.580078125,0.6220703125,0.60546875,0.5537109375,0.5,0.451171875,0.4228515625,0.4326171875,0.482421875,0.5498046875,0.6015625,0.6220703125,0.638671875,0.673828125,0.705078125,0.7080078125,0.673828125,0.6142578125,0.55078125,0.4921875,0.44921875,0.4462890625,0.486328125,0.5498046875,0.6015625,0.6220703125,0.6171875,0.5595703125,0.46484375,0.3798828125,0.341796875,0.365234375,0.4287109375,0.4931640625,0.52734375,0.5302734375,0.5205078125,0.5234375,0.5576171875,0.6220703125,0.6982421875,0.7783203125,0.8173828125,0.78515625,0.69140625,0.58203125,0.5,0.4365234375,0.4111328125,0.427734375,0.4658203125,0.4921875,0.48046875,0.4287109375,0.37890625,0.37890625,0.4326171875,0.5126953125,0.576171875,0.58984375,0.55078125,0.5029296875,0.474609375,0.484375,0.5341796875,0.6015625,0.6533203125,0.673828125,0.6728515625,0.6318359375,0.5654296875,0.5078125,0.48828125,0.5146484375,0.5703125,0.6396484375,0.7265625,0.791015625,0.794921875,0.736328125,0.6484375,0.5703125,0.509765625,0.4990234375,0.546875,0.626953125,0.693359375,0.7109375,0.673828125,0.607421875,0.4921875,0.359375,0.6201171875,0.619140625,0.5791015625,0.5126953125,0.439453125,0.361328125,0.2734375,0.2177734375,0.23046875,0.30859375,0.408203125,0.4892578125,0.5693359375,0.6640625,0.732421875,0.736328125,0.6748046875,0.5859375,0.509765625,0.4443359375,0.4033203125,0.40625,0.453125,0.51953125,0.568359375,0.5791015625,0.5791015625,0.5791015625,0.578125,0.576171875,0.5732421875,0.5712890625,0.5693359375,0.564453125,0.544921875,0.5107421875,0.47265625,0.4404296875,0.4228515625,0.419921875,0.419921875,0.4228515625,0.4267578125,0.4326171875,0.4365234375,0.439453125,0.439453125,0.439453125,0.4365234375,0.4326171875,0.4267578125,0.4228515625,0.419921875,0.419921875,0.4140625,0.3935546875,0.3779296875,0.3916015625,0.439453125,0.5087890625,0.5791015625,0.6337890625,0.6318359375,0.572265625,0.490234375,0.4326171875,0.4326171875,0.4892578125,0.5595703125,0.619140625,0.6474609375,0.63671875,0.599609375,0.5673828125,0.5595703125,0.5595703125,0.5625,0.56640625,0.572265625,0.576171875,0.5791015625,0.5791015625,0.5849609375,0.6064453125,0.623046875,0.6103515625,0.5625,0.4912109375,0.419921875,0.34375,0.2607421875,0.2119140625,0.232421875,0.3154296875,0.41796875,0.5,0.5771484375,0.66015625,0.7080078125,0.6865234375,0.6025390625,0.5,0.419921875,0.365234375,0.373046875,0.4462890625,0.546875,0.6220703125,0.6318359375,0.5791015625,0.5205078125,0.5,0.51953125,0.5546875,0.572265625,0.5498046875,0.4892578125,0.4296875,0.4111328125,0.435546875,0.478515625,0.5048828125,0.48828125,0.4296875,0.353515625,0.2646484375,0.201171875,0.203125,0.26953125,0.3623046875,0.439453125,0.5009765625,0.5263671875,0.513671875,0.4853515625,0.47265625,0.498046875,0.5595703125,0.6279296875,0.681640625,0.697265625,0.671875,0.62109375,0.580078125,0.5693359375,0.57421875,0.595703125,0.6142578125,0.6044921875,0.5595703125,0.4912109375,0.419921875,0.3427734375,0.2529296875,0.19140625,0.1943359375,0.26171875,0.353515625,0.4296875,0.48828125,0.5068359375,0.4853515625,0.4482421875,0.427734375,0.44921875,0.509765625,0.5859375,0.66796875,0.716796875,0.697265625,0.6171875,0.517578125,0.439453125,0.36328125,0.2744140625,0.2099609375,0.2099609375,0.2744140625,0.36328125,0.439453125,0.49609375,0.5029296875,0.458984375,0.3955078125,0.3525390625,0.361328125,0.419921875,0.48828125,0.5419921875,0.5595703125,0.53515625,0.4873046875,0.44921875,0.439453125,0.451171875,0.501953125,0.5703125,0.619140625,0.62109375,0.5771484375,0.509765625,0.427734375,0.32421875,0.23828125,0.2158203125,0.26171875,0.34375,0.419921875,0.498046875,0.5927734375,0.662109375,0.6669921875,0.6064453125,0.517578125,0.439453125,0.3828125,0.380859375,0.435546875,0.513671875,0.568359375,0.56640625,0.509765625,0.443359375,0.400390625,0.4013671875,0.4482421875,0.5126953125,0.5595703125,0.5693359375,0.57421875,0.5986328125,0.62109375,0.6171875,0.576171875,0.5107421875,0.439453125,0.37109375,0.3173828125,0.3017578125,0.3271484375,0.3779296875,0.4189453125,0.4296875,0.44140625,0.484375,0.5390625,0.5703125,0.55859375,0.5078125,0.439453125,0.375,0.341796875,0.361328125,0.4287109375,0.51171875,0.568359375,0.5791015625,0.57421875,0.5576171875,0.52734375,0.4921875,0.4619140625,0.4443359375,0.439453125,0.4404296875,0.453125,0.478515625,0.509765625,0.5380859375,0.5546875,0.5595703125,0.5673828125,0.59375,0.619140625,0.615234375,0.5751953125,0.5087890625,0.439453125,0.36328125,0.271484375,0.205078125,0.2041015625,0.2685546875,0.3603515625,0.439453125,0.5126953125,0.5810546875,0.6240234375,0.6298828125,0.607421875,0.583984375,0.5791015625,0.5673828125,0.5087890625,0.421875,0.3515625,0.330078125,0.36328125,0.4296875,0.4892578125,0.5,0.458984375,0.396484375,0.353515625,0.3623046875,0.419921875,0.501953125,0.6142578125,0.7158203125,0.7587890625,0.728515625,0.6552734375,0.5791015625,0.49609375,0.3837890625,0.2822265625,0.2412109375,0.271484375,0.345703125,0.419921875,0.4912109375,0.560546875,0.6083984375,0.6201171875,0.603515625,0.583984375,0.5791015625,0.5703125,0.5283203125,0.47265625,0.4365234375,0.4443359375,0.4921875,0.5595703125,0.6279296875,0.681640625,0.697265625,0.671875,0.62109375,0.580078125,0.5693359375,0.568359375,0.568359375,0.5693359375,0.5732421875,0.576171875,0.5791015625,0.5791015625,0.5869140625,0.619140625,0.6552734375,0.6640625,0.6328125,0.5712890625,0.5,0.4404296875,0.4365234375,0.48828125,0.564453125,0.6181640625,0.6162109375,0.5595703125,0.48828125,0.419921875,0.3759765625,0.3681640625,0.3896484375,0.4130859375,0.419921875,0.412109375,0.3818359375,0.3505859375,0.34375,0.376953125,0.439453125,0.509765625,0.5673828125,0.5751953125,0.5322265625,0.466796875,0.423828125,0.431640625,0.4892578125,0.5595703125,0.619140625,0.6484375,0.6396484375,0.60546875,0.5751953125,0.5693359375,0.5673828125,0.55078125,0.517578125,0.4775390625,0.4423828125,0.423828125,0.419921875,0.412109375,0.3818359375,0.3505859375,0.34375,0.376953125,0.439453125,0.509765625,0.5693359375,0.587890625,0.5634765625,0.5205078125,0.494140625,0.5107421875,0.5693359375,0.623046875,0.61328125,0.541015625,0.4423828125,0.37109375,0.3642578125,0.419921875,0.4990234375,0.599609375,0.681640625,0.7021484375,0.6552734375,0.57421875,0.5,0.4345703125,0.3916015625,0.3935546875,0.4404296875,0.5068359375,0.556640625,0.5693359375,0.5791015625,0.6142578125,0.6533203125,0.666015625,0.638671875,0.5791015625,0.509765625,0.4423828125,0.3974609375,0.396484375,0.44140625,0.5068359375,0.556640625,0.5693359375,0.5576171875,0.501953125,0.419921875,0.3544921875,0.337890625,0.373046875,0.439453125,0.5029296875,0.529296875,0.517578125,0.4912109375,0.48046875,0.5068359375,0.5693359375,0.6474609375,0.7333984375,0.7841796875,0.765625,0.68359375,0.5810546875,0.5,0.4384765625,0.4189453125,0.4443359375,0.4892578125,0.515625,0.4990234375,0.439453125,0.3828125,0.3798828125,0.43359375,0.5107421875,0.5654296875,0.564453125,0.509765625,0.4443359375,0.40234375,0.4033203125,0.4501953125,0.5166015625,0.56640625,0.5791015625,0.5703125,0.5283203125,0.47265625,0.4365234375,0.4443359375,0.4921875,0.5595703125,0.6376953125,0.73046875,0.796875,0.7978515625,0.732421875,0.638671875,0.5595703125,0.4990234375,0.4892578125,0.53125,0.595703125,0.6416015625,0.6357421875,0.5791015625,0.4990234375,0.3896484375,0.2890625,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.595703125,0.6630859375,0.681640625,0.6455078125,0.5791015625,0.498046875,0.39453125,0.310546875,0.2880859375,0.333984375,0.4150390625,0.4892578125,0.56640625,0.66015625,0.7314453125,0.73828125,0.677734375,0.587890625,0.509765625,0.4384765625,0.376953125,0.3466796875,0.357421875,0.392578125,0.4228515625,0.4296875,0.4287109375,0.4287109375,0.4306640625,0.43359375,0.4375,0.439453125,0.439453125,0.4423828125,0.458984375,0.48828125,0.5244140625,0.556640625,0.57421875,0.5791015625,0.580078125,0.578125,0.572265625,0.56640625,0.560546875,0.55859375,0.5595703125,0.5615234375,0.5634765625,0.5673828125,0.5712890625,0.5751953125,0.5771484375,0.5791015625,0.5673828125,0.5087890625,0.4208984375,0.3486328125,0.3251953125,0.35546875,0.419921875,0.4794921875,0.4970703125,0.47265625,0.4306640625,0.408203125,0.427734375,0.4892578125,0.55859375,0.6044921875,0.6064453125,0.5634765625,0.4990234375,0.451171875,0.439453125,0.439453125,0.4375,0.43359375,0.4306640625,0.4287109375,0.4287109375,0.4296875,0.4443359375,0.5048828125,0.5888671875,0.65625,0.6728515625,0.6357421875,0.5693359375,0.48828125,0.3876953125,0.3076171875,0.291015625,0.341796875,0.4248046875,0.5,0.5771484375,0.677734375,0.7607421875,0.7822265625,0.736328125,0.6552734375,0.5791015625,0.5166015625,0.486328125,0.48828125,0.5048828125,0.5087890625,0.48046875,0.419921875,0.365234375,0.3671875,0.4267578125,0.5087890625,0.56640625,0.56640625,0.509765625,0.453125,0.4501953125,0.50390625,0.580078125,0.6328125,0.6279296875,0.5693359375,0.4892578125,0.3955078125,0.3291015625,0.3291015625,0.3955078125,0.4892578125,0.5693359375,0.6259765625,0.6220703125,0.5546875,0.4599609375,0.390625,0.384765625,0.439453125,0.5078125,0.556640625,0.564453125,0.529296875,0.47265625,0.4296875,0.419921875,0.4326171875,0.4921875,0.5791015625,0.6494140625,0.6728515625,0.6416015625,0.5791015625,0.5029296875,0.412109375,0.34765625,0.3466796875,0.41015625,0.501953125,0.5791015625,0.6357421875,0.6376953125,0.5830078125,0.505859375,0.451171875,0.453125,0.509765625,0.5888671875,0.689453125,0.7705078125,0.7880859375,0.7392578125,0.6552734375,0.5791015625,0.5009765625,0.408203125,0.341796875,0.3408203125,0.40625,0.5,0.5791015625,0.6396484375,0.6513671875,0.6123046875,0.5517578125,0.51171875,0.521484375,0.5791015625,0.646484375,0.6962890625,0.705078125,0.6728515625,0.6181640625,0.5771484375,0.5693359375,0.5791015625,0.6123046875,0.6484375,0.6572265625,0.6240234375,0.5615234375,0.4892578125,0.412109375,0.330078125,0.2841796875,0.30859375,0.3955078125,0.4990234375,0.5791015625,0.6572265625,0.7470703125,0.8095703125,0.8046875,0.734375,0.6396484375,0.5595703125,0.4970703125,0.4765625,0.498046875,0.5390625,0.564453125,0.5478515625,0.4892578125,0.421875,0.3662109375,0.341796875,0.357421875,0.3974609375,0.431640625,0.439453125,0.4521484375,0.5078125,0.5859375,0.6474609375,0.6611328125,0.625,0.5595703125,0.4912109375,0.4423828125,0.4345703125,0.4697265625,0.5263671875,0.5693359375,0.5791015625,0.5888671875,0.6279296875,0.6767578125,0.7021484375,0.6845703125,0.6298828125,0.5595703125,0.486328125,0.416015625,0.3701171875,0.36328125,0.3857421875,0.4111328125,0.419921875,0.4248046875,0.4443359375,0.4765625,0.513671875,0.54296875,0.5576171875,0.5595703125,0.5546875,0.5390625,0.5107421875,0.478515625,0.4501953125,0.4345703125,0.4296875,0.44140625,0.4990234375,0.583984375,0.654296875,0.67578125,0.6435546875,0.5791015625,0.5009765625,0.408203125,0.33984375,0.3349609375,0.3955078125,0.4833984375,0.5595703125,0.623046875,0.658203125,0.6435546875,0.5810546875,0.5009765625,0.4443359375,0.4296875,0.421875,0.3955078125,0.373046875,0.3798828125,0.42578125,0.49609375,0.5693359375,0.62890625,0.638671875,0.595703125,0.5322265625,0.490234375,0.5,0.5595703125,0.6357421875,0.7109375,0.7431640625,0.705078125,0.6083984375,0.5,0.419921875,0.34765625,0.275390625,0.2470703125,0.2880859375,0.3876953125,0.498046875,0.5791015625,0.6435546875,0.67578125,0.6533203125,0.5810546875,0.4931640625,0.43359375,0.419921875,0.41015625,0.3720703125,0.3232421875,0.296875,0.3115234375,0.36328125,0.4296875,0.49609375,0.5439453125,0.552734375,0.5205078125,0.4677734375,0.427734375,0.419921875,0.421875,0.423828125,0.427734375,0.431640625,0.435546875,0.4375,0.439453125,0.4521484375,0.501953125,0.568359375,0.615234375,0.6171875,0.57421875,0.509765625,0.451171875,0.431640625,0.4521484375,0.48828125,0.505859375,0.482421875,0.419921875,0.353515625,0.3173828125,0.3359375,0.4033203125,0.4873046875,0.5458984375,0.5595703125,0.548828125,0.5009765625,0.4375,0.392578125,0.3916015625,0.4345703125,0.5,0.556640625,0.5673828125,0.529296875,0.4736328125,0.4375,0.4501953125,0.509765625,0.576171875,0.619140625,0.6162109375,0.568359375,0.5,0.451171875,0.439453125,0.4423828125,0.4560546875,0.4814453125,0.51171875,0.5390625,0.5546875,0.5595703125,0.5498046875,0.5048828125,0.44140625,0.3984375,0.3984375,0.4423828125,0.509765625,0.5654296875,0.5654296875,0.5078125,0.4267578125,0.369140625,0.37109375,0.4296875,0.4921875,0.5185546875,0.5078125,0.4814453125,0.4697265625,0.49609375,0.5595703125,0.6376953125,0.72265625,0.7744140625,0.755859375,0.673828125,0.5712890625,0.4892578125,0.41796875,0.357421875,0.330078125,0.34375,0.3837890625,0.419921875,0.4296875,0.4423828125,0.490234375,0.5546875,0.599609375,0.5986328125,0.5546875,0.4892578125,0.421875,0.365234375,0.3408203125,0.3544921875,0.3916015625,0.4228515625,0.4296875,0.421875,0.396484375,0.3740234375,0.3798828125,0.4228515625,0.4892578125,0.5595703125,0.61328125,0.6064453125,0.537109375,0.4423828125,0.373046875,0.3662109375,0.419921875,0.498046875,0.599609375,0.68359375,0.7060546875,0.6591796875,0.5771484375,0.5,0.44140625,0.439453125,0.49609375,0.5771484375,0.6357421875,0.6357421875,0.5791015625,0.51953125,0.5,0.5244140625,0.564453125,0.5888671875,0.5693359375,0.509765625,0.439453125,0.376953125,0.345703125,0.353515625,0.3876953125,0.419921875,0.4296875,0.421875,0.380859375,0.328125,0.296875,0.30859375,0.3603515625,0.4296875,0.5087890625,0.599609375,0.662109375,0.6572265625,0.58984375,0.49609375,0.419921875,0.36328125,0.3564453125,0.400390625,0.46484375,0.5068359375,0.498046875,0.439453125,0.365234375,0.2900390625,0.2548828125,0.6240234375,0.71875,0.759765625,0.7373046875,0.673828125,0.5908203125,0.4814453125,0.3798828125,0.3291015625,0.341796875,0.3935546875,0.4482421875,0.509765625,0.6015625,0.6875,0.7236328125,0.6953125,0.6259765625,0.55078125,0.478515625,0.4111328125,0.3671875,0.35546875,0.3681640625,0.3818359375,0.376953125,0.3681640625,0.3671875,0.376953125,0.39453125,0.4140625,0.4267578125,0.4287109375,0.43359375,0.45703125,0.50390625,0.5634765625,0.6201171875,0.6572265625,0.673828125,0.6796875,0.6689453125,0.6396484375,0.603515625,0.5751953125,0.5634765625,0.5703125,0.5810546875,0.5947265625,0.6123046875,0.630859375,0.6484375,0.662109375,0.673828125,0.6669921875,0.5966796875,0.4755859375,0.3525390625,0.279296875,0.275390625,0.3251953125,0.3779296875,0.396484375,0.380859375,0.357421875,0.3525390625,0.3837890625,0.4482421875,0.517578125,0.5673828125,0.576171875,0.541015625,0.4833984375,0.439453125,0.4287109375,0.4267578125,0.4140625,0.39453125,0.376953125,0.3671875,0.3681640625,0.376953125,0.4033203125,0.482421875,0.591796875,0.6826171875,0.7158203125,0.6875,0.6220703125,0.5419921875,0.4453125,0.3662109375,0.3427734375,0.37890625,0.4423828125,0.5,0.5615234375,0.6552734375,0.75,0.7998046875,0.7890625,0.736328125,0.673828125,0.6123046875,0.5556640625,0.50390625,0.4599609375,0.4189453125,0.375,0.3251953125,0.2900390625,0.3154296875,0.40234375,0.509765625,0.5859375,0.5986328125,0.55078125,0.5029296875,0.5087890625,0.56640625,0.6416015625,0.689453125,0.681640625,0.6220703125,0.5419921875,0.4482421875,0.380859375,0.380859375,0.4482421875,0.5419921875,0.6220703125,0.6787109375,0.671875,0.5966796875,0.4892578125,0.404296875,0.3837890625,0.4287109375,0.486328125,0.5185546875,0.5068359375,0.453125,0.384765625,0.3369140625,0.3251953125,0.3408203125,0.4130859375,0.5283203125,0.6416015625,0.7099609375,0.71484375,0.673828125,0.615234375,0.5419921875,0.4873046875,0.482421875,0.5322265625,0.6064453125,0.673828125,0.7216796875,0.7158203125,0.654296875,0.5703125,0.5087890625,0.5029296875,0.55078125,0.6220703125,0.7177734375,0.8017578125,0.833984375,0.8046875,0.73828125,0.673828125,0.603515625,0.517578125,0.4521484375,0.4482421875,0.5068359375,0.5947265625,0.673828125,0.734375,0.7509765625,0.71875,0.6630859375,0.6201171875,0.6240234375,0.673828125,0.73046875,0.7626953125,0.7548828125,0.7109375,0.6552734375,0.62109375,0.6220703125,0.6376953125,0.666015625,0.6826171875,0.662109375,0.6025390625,0.5234375,0.4482421875,0.375,0.314453125,0.3056640625,0.369140625,0.484375,0.5986328125,0.673828125,0.740234375,0.814453125,0.8564453125,0.8330078125,0.7509765625,0.650390625,0.5703125,0.5048828125,0.466796875,0.4638671875,0.484375,0.5009765625,0.490234375,0.4482421875,0.3974609375,0.3583984375,0.3447265625,0.361328125,0.39453125,0.421875,0.4287109375,0.4404296875,0.4931640625,0.5703125,0.6337890625,0.654296875,0.6259765625,0.5703125,0.5126953125,0.48046875,0.4921875,0.5458984375,0.6142578125,0.662109375,0.673828125,0.6806640625,0.7099609375,0.740234375,0.7431640625,0.70703125,0.642578125,0.5703125,0.4931640625,0.4052734375,0.3291015625,0.291015625,0.2919921875,0.3115234375,0.3251953125,0.3427734375,0.3857421875,0.4501953125,0.5146484375,0.5595703125,0.576171875,0.5703125,0.556640625,0.5322265625,0.4951171875,0.4521484375,0.4150390625,0.390625,0.376953125,0.3828125,0.4462890625,0.556640625,0.6650390625,0.7275390625,0.724609375,0.673828125,0.6044921875,0.517578125,0.4443359375,0.421875,0.4541015625,0.5146484375,0.5703125,0.6162109375,0.63671875,0.6103515625,0.54296875,0.4599609375,0.3994140625,0.376953125,0.36328125,0.34375,0.3427734375,0.380859375,0.45703125,0.544921875,0.6220703125,0.6806640625,0.6845703125,0.6328125,0.55859375,0.5068359375,0.51171875,0.5703125,0.6416015625,0.693359375,0.6904296875,0.6171875,0.5,0.390625,0.3251953125,0.275390625,0.2451171875,0.267578125,0.3544921875,0.4814453125,0.5986328125,0.673828125,0.724609375,0.7275390625,0.6611328125,0.5439453125,0.419921875,0.341796875,0.3251953125,0.3193359375,0.296875,0.26953125,0.26171875,0.283203125,0.326171875,0.376953125,0.423828125,0.44921875,0.439453125,0.3994140625,0.3525390625,0.32421875,0.3251953125,0.3369140625,0.3505859375,0.3681640625,0.38671875,0.404296875,0.41796875,0.4287109375,0.44921875,0.5009765625,0.568359375,0.6181640625,0.6279296875,0.599609375,0.55078125,0.505859375,0.4833984375,0.4775390625,0.4697265625,0.443359375,0.3935546875,0.3251953125,0.26171875,0.2392578125,0.2802734375,0.375,0.4833984375,0.5546875,0.5703125,0.5615234375,0.5234375,0.4697265625,0.4287109375,0.4228515625,0.451171875,0.5,0.5419921875,0.5498046875,0.5244140625,0.4912109375,0.4755859375,0.4970703125,0.55078125,0.6083984375,0.6376953125,0.6220703125,0.5634765625,0.4912109375,0.4404296875,0.4287109375,0.4306640625,0.4423828125,0.4658203125,0.4990234375,0.5322265625,0.556640625,0.5703125,0.5712890625,0.541015625,0.4931640625,0.45703125,0.45703125,0.4931640625,0.55078125,0.5966796875,0.5791015625,0.498046875,0.3955078125,0.32421875,0.3203125,0.376953125,0.44140625,0.4755859375,0.478515625,0.46875,0.4716796875,0.505859375,0.5703125,0.646484375,0.7265625,0.765625,0.7333984375,0.6396484375,0.5302734375,0.4482421875,0.375,0.3076171875,0.271484375,0.2783203125,0.318359375,0.359375,0.376953125,0.396484375,0.4423828125,0.4970703125,0.533203125,0.5322265625,0.4970703125,0.4482421875,0.3984375,0.3583984375,0.3408203125,0.3486328125,0.3681640625,0.3818359375,0.376953125,0.3642578125,0.3505859375,0.353515625,0.3876953125,0.4482421875,0.5146484375,0.5703125,0.6064453125,0.5849609375,0.501953125,0.3935546875,0.310546875,0.2890625,0.3251953125,0.3896484375,0.4892578125,0.5908203125,0.6455078125,0.6328125,0.572265625,0.5,0.4423828125,0.4462890625,0.517578125,0.6201171875,0.701171875,0.71875,0.673828125,0.619140625,0.595703125,0.6025390625,0.6220703125,0.62890625,0.60546875,0.55078125,0.486328125,0.4140625,0.3564453125,0.33203125,0.3408203125,0.3623046875,0.376953125,0.3779296875,0.34375,0.2919921875,0.2568359375,0.2626953125,0.30859375,0.376953125,0.453125,0.5283203125,0.568359375,0.5458984375,0.4716796875,0.38671875,0.3251953125,0.287109375,0.2978515625,0.357421875,0.4326171875,0.4814453125,0.4794921875,0.4287109375,0.3671875,0.3154296875,0.3095703125,0.673828125,0.775390625,0.8232421875,0.8037109375,0.740234375,0.6591796875,0.5546875,0.44921875,0.380859375,0.3603515625,0.3740234375,0.39453125,0.427734375,0.5087890625,0.6123046875,0.6904296875,0.7099609375,0.671875,0.6044921875,0.533203125,0.466796875,0.4189453125,0.3974609375,0.392578125,0.3857421875,0.3642578125,0.3408203125,0.333984375,0.3525390625,0.3916015625,0.4345703125,0.462890625,0.46875,0.4716796875,0.4892578125,0.5302734375,0.5908203125,0.65625,0.7080078125,0.740234375,0.7568359375,0.7353515625,0.673828125,0.595703125,0.5341796875,0.5126953125,0.5302734375,0.556640625,0.5859375,0.6181640625,0.6513671875,0.68359375,0.712890625,0.740234375,0.748046875,0.6826171875,0.546875,0.388671875,0.2705078125,0.2294921875,0.2587890625,0.2958984375,0.3037109375,0.2890625,0.275390625,0.28515625,0.328125,0.39453125,0.4658203125,0.52734375,0.5576171875,0.546875,0.509765625,0.4775390625,0.46875,0.462890625,0.4345703125,0.3916015625,0.3525390625,0.333984375,0.3408203125,0.3642578125,0.40625,0.5,0.619140625,0.708984375,0.7373046875,0.7021484375,0.634765625,0.5595703125,0.4794921875,0.421875,0.408203125,0.435546875,0.474609375,0.5,0.5302734375,0.599609375,0.6904296875,0.7646484375,0.7958984375,0.78125,0.740234375,0.6875,0.6064453125,0.5048828125,0.4052734375,0.328125,0.2822265625,0.2587890625,0.2548828125,0.3095703125,0.4169921875,0.53515625,0.6181640625,0.6376953125,0.6044921875,0.5712890625,0.5830078125,0.6357421875,0.6923828125,0.7197265625,0.697265625,0.634765625,0.5556640625,0.4609375,0.39453125,0.39453125,0.4609375,0.5556640625,0.634765625,0.6943359375,0.7001953125,0.642578125,0.5498046875,0.4677734375,0.4384765625,0.46875,0.5087890625,0.515625,0.4775390625,0.40234375,0.322265625,0.2705078125,0.2587890625,0.2724609375,0.341796875,0.4638671875,0.5986328125,0.703125,0.7470703125,0.740234375,0.7158203125,0.6748046875,0.6376953125,0.626953125,0.6494140625,0.693359375,0.740234375,0.7744140625,0.7646484375,0.708984375,0.6357421875,0.580078125,0.5703125,0.6044921875,0.658203125,0.734375,0.806640625,0.8427734375,0.830078125,0.787109375,0.740234375,0.685546875,0.611328125,0.5498046875,0.5380859375,0.5849609375,0.6640625,0.740234375,0.8037109375,0.830078125,0.8095703125,0.759765625,0.71484375,0.7060546875,0.740234375,0.7783203125,0.783203125,0.748046875,0.6904296875,0.6376953125,0.6181640625,0.634765625,0.6650390625,0.697265625,0.701171875,0.6572265625,0.5703125,0.4736328125,0.39453125,0.326171875,0.2900390625,0.3193359375,0.421875,0.5615234375,0.677734375,0.740234375,0.7890625,0.8388671875,0.853515625,0.8095703125,0.71484375,0.6103515625,0.5302734375,0.4599609375,0.4013671875,0.3720703125,0.375,0.39453125,0.40625,0.39453125,0.3779296875,0.373046875,0.3857421875,0.4140625,0.4443359375,0.46484375,0.46875,0.4765625,0.5107421875,0.5576171875,0.5927734375,0.5986328125,0.572265625,0.5302734375,0.490234375,0.4833984375,0.521484375,0.5966796875,0.6767578125,0.728515625,0.740234375,0.7451171875,0.76171875,0.767578125,0.7421875,0.6826171875,0.6044921875,0.5302734375,0.4501953125,0.349609375,0.255859375,0.2041015625,0.201171875,0.2294921875,0.2587890625,0.294921875,0.3623046875,0.447265625,0.5185546875,0.5546875,0.552734375,0.5302734375,0.50390625,0.4794921875,0.4580078125,0.4365234375,0.4140625,0.3896484375,0.3642578125,0.353515625,0.40625,0.5185546875,0.6484375,0.744140625,0.771484375,0.740234375,0.6884765625,0.619140625,0.5498046875,0.5048828125,0.4951171875,0.509765625,0.5302734375,0.5478515625,0.5576171875,0.54296875,0.5029296875,0.4462890625,0.396484375,0.3642578125,0.3349609375,0.306640625,0.30859375,0.361328125,0.4541015625,0.5556640625,0.634765625,0.6923828125,0.6904296875,0.626953125,0.5380859375,0.474609375,0.47265625,0.5302734375,0.595703125,0.626953125,0.59375,0.5,0.3818359375,0.2939453125,0.2587890625,0.2451171875,0.263671875,0.333984375,0.44921875,0.5791015625,0.6826171875,0.740234375,0.7734375,0.748046875,0.6484375,0.501953125,0.361328125,0.2763671875,0.2587890625,0.2587890625,0.2607421875,0.26953125,0.2900390625,0.31640625,0.3427734375,0.3642578125,0.3759765625,0.3623046875,0.322265625,0.275390625,0.2431640625,0.23828125,0.2587890625,0.2861328125,0.3154296875,0.34765625,0.380859375,0.4130859375,0.4423828125,0.46875,0.5009765625,0.5478515625,0.5966796875,0.62890625,0.63671875,0.6240234375,0.6044921875,0.587890625,0.57421875,0.546875,0.494140625,0.41796875,0.333984375,0.2587890625,0.1953125,0.17578125,0.2236328125,0.3251953125,0.439453125,0.513671875,0.5302734375,0.5263671875,0.51171875,0.4912109375,0.474609375,0.4716796875,0.4814453125,0.5,0.513671875,0.5146484375,0.5078125,0.5078125,0.525390625,0.560546875,0.6044921875,0.6455078125,0.662109375,0.640625,0.5849609375,0.521484375,0.478515625,0.46875,0.466796875,0.458984375,0.453125,0.4580078125,0.4765625,0.5029296875,0.5302734375,0.55078125,0.552734375,0.541015625,0.5302734375,0.53515625,0.5625,0.6044921875,0.6328125,0.595703125,0.4970703125,0.3837890625,0.3095703125,0.306640625,0.3642578125,0.427734375,0.458984375,0.455078125,0.4384765625,0.435546875,0.4658203125,0.5302734375,0.6064453125,0.6845703125,0.720703125,0.6845703125,0.587890625,0.4775390625,0.39453125,0.3203125,0.2490234375,0.208984375,0.220703125,0.271484375,0.3291015625,0.3642578125,0.392578125,0.4267578125,0.453125,0.4580078125,0.44140625,0.416015625,0.39453125,0.37890625,0.376953125,0.3857421875,0.3974609375,0.3994140625,0.3876953125,0.3642578125,0.33984375,0.3291015625,0.34765625,0.39453125,0.4541015625,0.50390625,0.5302734375,0.5390625,0.509765625,0.4384765625,0.3505859375,0.279296875,0.2490234375,0.2587890625,0.29296875,0.3779296875,0.48828125,0.57421875,0.6005859375,0.56640625,0.5,0.44140625,0.4443359375,0.5185546875,0.6318359375,0.73046875,0.7685546875,0.740234375,0.69921875,0.67578125,0.6708984375,0.673828125,0.6689453125,0.6455078125,0.6044921875,0.55078125,0.4736328125,0.3916015625,0.3359375,0.3212890625,0.337890625,0.3642578125,0.3798828125,0.357421875,0.30859375,0.267578125,0.2607421875,0.2978515625,0.3642578125,0.43359375,0.484375,0.48828125,0.4384765625,0.3583984375,0.2900390625,0.2587890625,0.251953125,0.2900390625,0.3671875,0.44921875,0.501953125,0.505859375,0.46875,0.4267578125,0.40234375,0.4169921875,0.7119140625,0.7978515625,0.83203125,0.8046875,0.740234375,0.6640625,0.5771484375,0.494140625,0.4326171875,0.3994140625,0.380859375,0.3642578125,0.3623046875,0.4228515625,0.533203125,0.642578125,0.7041015625,0.6953125,0.634765625,0.5654296875,0.5107421875,0.4775390625,0.4638671875,0.455078125,0.4345703125,0.39453125,0.353515625,0.3369140625,0.3583984375,0.4140625,0.4775390625,0.5205078125,0.5302734375,0.5283203125,0.52734375,0.541015625,0.5771484375,0.6328125,0.69140625,0.740234375,0.771484375,0.7451171875,0.6591796875,0.5498046875,0.4638671875,0.4375,0.46875,0.513671875,0.552734375,0.587890625,0.62109375,0.65625,0.6962890625,0.740234375,0.76953125,0.728515625,0.6103515625,0.4521484375,0.31640625,0.2509765625,0.2587890625,0.27734375,0.267578125,0.2421875,0.228515625,0.24609375,0.2958984375,0.3642578125,0.4375,0.509765625,0.560546875,0.57421875,0.5576171875,0.5361328125,0.5302734375,0.5205078125,0.4775390625,0.4140625,0.3583984375,0.3369140625,0.353515625,0.39453125,0.453125,0.5537109375,0.662109375,0.7294921875,0.7294921875,0.67578125,0.6044921875,0.53515625,0.48046875,0.4580078125,0.46875,0.4951171875,0.5107421875,0.5,0.490234375,0.521484375,0.5908203125,0.673828125,0.736328125,0.7578125,0.740234375,0.7001953125,0.6123046875,0.4853515625,0.361328125,0.27734375,0.248046875,0.2587890625,0.2900390625,0.3642578125,0.4716796875,0.57421875,0.6396484375,0.654296875,0.634765625,0.6181640625,0.6376953125,0.6787109375,0.712890625,0.7119140625,0.671875,0.6044921875,0.5244140625,0.4306640625,0.3642578125,0.3642578125,0.4306640625,0.5244140625,0.6044921875,0.6689453125,0.697265625,0.673828125,0.6123046875,0.5478515625,0.515625,0.5302734375,0.548828125,0.53515625,0.48046875,0.3974609375,0.3173828125,0.2685546875,0.2587890625,0.267578125,0.314453125,0.408203125,0.52734375,0.6376953125,0.7099609375,0.740234375,0.7548828125,0.7529296875,0.7373046875,0.7177734375,0.708984375,0.716796875,0.740234375,0.759765625,0.7509765625,0.712890625,0.662109375,0.6240234375,0.615234375,0.634765625,0.6669921875,0.7138671875,0.76171875,0.7900390625,0.7890625,0.7666015625,0.740234375,0.7041015625,0.6435546875,0.5849609375,0.56640625,0.5986328125,0.6669921875,0.740234375,0.806640625,0.8427734375,0.8369140625,0.794921875,0.7470703125,0.724609375,0.740234375,0.755859375,0.732421875,0.673828125,0.607421875,0.56640625,0.5673828125,0.6044921875,0.6533203125,0.6982421875,0.70703125,0.654296875,0.5537109375,0.4453125,0.3642578125,0.2998046875,0.27734375,0.328125,0.447265625,0.5888671875,0.6953125,0.740234375,0.76953125,0.7978515625,0.794921875,0.7431640625,0.6494140625,0.548828125,0.46875,0.39453125,0.318359375,0.267578125,0.26171875,0.294921875,0.337890625,0.3642578125,0.38671875,0.419921875,0.4609375,0.4970703125,0.51953125,0.5283203125,0.5302734375,0.5322265625,0.5400390625,0.5458984375,0.541015625,0.5224609375,0.49609375,0.46875,0.4501953125,0.4638671875,0.5185546875,0.6015625,0.681640625,0.73046875,0.740234375,0.744140625,0.7529296875,0.7451171875,0.7041015625,0.630859375,0.544921875,0.46875,0.388671875,0.2841796875,0.189453125,0.1455078125,0.16015625,0.2099609375,0.2587890625,0.314453125,0.3994140625,0.48828125,0.5439453125,0.548828125,0.5146484375,0.46875,0.4296875,0.4140625,0.4228515625,0.44140625,0.4501953125,0.43359375,0.39453125,0.3623046875,0.3857421875,0.474609375,0.5966796875,0.7021484375,0.7509765625,0.740234375,0.7109375,0.669921875,0.6181640625,0.56640625,0.521484375,0.490234375,0.46875,0.455078125,0.458984375,0.47265625,0.4794921875,0.46875,0.4375,0.39453125,0.345703125,0.2958984375,0.28125,0.3251953125,0.4189453125,0.5234375,0.6044921875,0.6611328125,0.6552734375,0.5849609375,0.48828125,0.41796875,0.412109375,0.46875,0.53125,0.546875,0.4990234375,0.4052734375,0.30859375,0.255859375,0.2587890625,0.28515625,0.341796875,0.4326171875,0.541015625,0.6396484375,0.7060546875,0.740234375,0.7548828125,0.7158203125,0.61328125,0.474609375,0.34765625,0.2734375,0.2587890625,0.2646484375,0.2919921875,0.3369140625,0.3798828125,0.4072265625,0.41015625,0.39453125,0.3662109375,0.3095703125,0.2421875,0.1953125,0.1875,0.2158203125,0.2587890625,0.302734375,0.3427734375,0.3779296875,0.4111328125,0.4462890625,0.4853515625,0.5302734375,0.57421875,0.6083984375,0.6259765625,0.626953125,0.6201171875,0.6201171875,0.634765625,0.654296875,0.6640625,0.6376953125,0.560546875,0.44921875,0.33984375,0.2587890625,0.1943359375,0.1669921875,0.201171875,0.287109375,0.38671875,0.4541015625,0.46875,0.47265625,0.4873046875,0.5078125,0.5244140625,0.52734375,0.517578125,0.5,0.48046875,0.4677734375,0.474609375,0.5078125,0.556640625,0.603515625,0.634765625,0.658203125,0.6650390625,0.646484375,0.607421875,0.564453125,0.5361328125,0.5302734375,0.5224609375,0.48828125,0.44140625,0.40625,0.400390625,0.4267578125,0.46875,0.513671875,0.5517578125,0.5771484375,0.5908203125,0.5986328125,0.611328125,0.634765625,0.6455078125,0.59375,0.4912109375,0.3857421875,0.326171875,0.333984375,0.39453125,0.4560546875,0.4755859375,0.4521484375,0.4111328125,0.3876953125,0.4072265625,0.46875,0.546875,0.6279296875,0.6708984375,0.6435546875,0.552734375,0.4462890625,0.3642578125,0.2890625,0.2138671875,0.1728515625,0.1923828125,0.2607421875,0.33984375,0.39453125,0.435546875,0.453125,0.44140625,0.40625,0.369140625,0.3525390625,0.3642578125,0.3896484375,0.43359375,0.4775390625,0.4970703125,0.48046875,0.4404296875,0.39453125,0.3544921875,0.341796875,0.3642578125,0.4111328125,0.4580078125,0.4794921875,0.46875,0.4482421875,0.419921875,0.3837890625,0.3447265625,0.3076171875,0.279296875,0.2587890625,0.255859375,0.3134765625,0.4169921875,0.5185546875,0.5732421875,0.5615234375,0.5,0.439453125,0.4306640625,0.4912109375,0.5966796875,0.6982421875,0.75,0.740234375,0.7158203125,0.69921875,0.6904296875,0.6845703125,0.67578125,0.6591796875,0.634765625,0.59765625,0.5224609375,0.4306640625,0.3583984375,0.3330078125,0.3525390625,0.39453125,0.4287109375,0.419921875,0.375,0.3251953125,0.3046875,0.3310546875,0.39453125,0.4580078125,0.4833984375,0.4521484375,0.3779296875,0.2978515625,0.25390625,0.2587890625,0.287109375,0.349609375,0.4326171875,0.5078125,0.548828125,0.5517578125,0.5302734375,0.5087890625,0.509765625,0.53515625,0.712890625,0.7705078125,0.7802734375,0.7412109375,0.673828125,0.603515625,0.544921875,0.50390625,0.4775390625,0.455078125,0.423828125,0.376953125,0.34375,0.3779296875,0.4765625,0.5927734375,0.671875,0.6787109375,0.6220703125,0.556640625,0.5185546875,0.51171875,0.5224609375,0.525390625,0.501953125,0.4482421875,0.390625,0.361328125,0.376953125,0.435546875,0.5078125,0.55859375,0.5703125,0.5634765625,0.541015625,0.5185546875,0.51953125,0.5537109375,0.611328125,0.673828125,0.71875,0.6982421875,0.609375,0.4931640625,0.404296875,0.3837890625,0.4287109375,0.4853515625,0.5244140625,0.544921875,0.5576171875,0.578125,0.6162109375,0.673828125,0.7236328125,0.7197265625,0.646484375,0.5234375,0.40234375,0.33203125,0.3251953125,0.3271484375,0.298828125,0.2587890625,0.23828125,0.2548828125,0.3076171875,0.376953125,0.451171875,0.52734375,0.583984375,0.6044921875,0.59375,0.5751953125,0.5703125,0.55859375,0.5078125,0.435546875,0.376953125,0.361328125,0.390625,0.4482421875,0.51953125,0.619140625,0.70703125,0.73828125,0.7021484375,0.626953125,0.55078125,0.4873046875,0.4580078125,0.4716796875,0.509765625,0.5419921875,0.5400390625,0.5,0.455078125,0.4453125,0.482421875,0.5546875,0.62890625,0.671875,0.673828125,0.6484375,0.568359375,0.451171875,0.341796875,0.28125,0.283203125,0.3251953125,0.3837890625,0.462890625,0.5458984375,0.607421875,0.6328125,0.6318359375,0.6220703125,0.6201171875,0.6455078125,0.681640625,0.697265625,0.67578125,0.62109375,0.55078125,0.4716796875,0.376953125,0.310546875,0.310546875,0.376953125,0.4716796875,0.55078125,0.6201171875,0.6689453125,0.6787109375,0.6484375,0.6015625,0.5693359375,0.5703125,0.57421875,0.552734375,0.5,0.4306640625,0.3681640625,0.3330078125,0.3251953125,0.326171875,0.3388671875,0.37890625,0.44921875,0.5361328125,0.615234375,0.673828125,0.7216796875,0.7529296875,0.7548828125,0.728515625,0.6923828125,0.669921875,0.673828125,0.6806640625,0.67578125,0.6591796875,0.63671875,0.619140625,0.6142578125,0.6220703125,0.634765625,0.654296875,0.67578125,0.689453125,0.69140625,0.68359375,0.673828125,0.6533203125,0.6044921875,0.548828125,0.5224609375,0.5439453125,0.6025390625,0.673828125,0.7421875,0.7880859375,0.7939453125,0.7587890625,0.70703125,0.6728515625,0.673828125,0.671875,0.62890625,0.55859375,0.4951171875,0.4716796875,0.49609375,0.55078125,0.6171875,0.6826171875,0.7080078125,0.6669921875,0.5693359375,0.4599609375,0.376953125,0.3134765625,0.2900390625,0.3359375,0.439453125,0.5615234375,0.646484375,0.673828125,0.6875,0.70703125,0.7080078125,0.669921875,0.59375,0.505859375,0.4287109375,0.3505859375,0.2626953125,0.2001953125,0.1953125,0.24609375,0.3193359375,0.376953125,0.431640625,0.4921875,0.544921875,0.57421875,0.5791015625,0.572265625,0.5703125,0.568359375,0.556640625,0.533203125,0.5,0.466796875,0.4423828125,0.4287109375,0.4248046875,0.4462890625,0.4990234375,0.568359375,0.630859375,0.666015625,0.673828125,0.677734375,0.689453125,0.6884765625,0.654296875,0.5869140625,0.5048828125,0.4287109375,0.3486328125,0.248046875,0.166015625,0.142578125,0.1845703125,0.2587890625,0.3251953125,0.396484375,0.4892578125,0.5693359375,0.5966796875,0.5625,0.4951171875,0.4287109375,0.3779296875,0.37109375,0.41015625,0.466796875,0.505859375,0.4990234375,0.4482421875,0.39453125,0.3837890625,0.4296875,0.5205078125,0.6142578125,0.669921875,0.673828125,0.6650390625,0.6572265625,0.638671875,0.599609375,0.5439453125,0.482421875,0.4287109375,0.388671875,0.388671875,0.4296875,0.482421875,0.5126953125,0.5,0.4482421875,0.380859375,0.306640625,0.2646484375,0.2880859375,0.3701171875,0.470703125,0.55078125,0.6083984375,0.6044921875,0.5361328125,0.443359375,0.3759765625,0.3720703125,0.4287109375,0.4892578125,0.5,0.4521484375,0.3720703125,0.3056640625,0.2880859375,0.3251953125,0.3818359375,0.455078125,0.5341796875,0.6005859375,0.642578125,0.662109375,0.673828125,0.67578125,0.640625,0.5654296875,0.46875,0.3837890625,0.3349609375,0.3251953125,0.3359375,0.3798828125,0.4453125,0.4990234375,0.5166015625,0.494140625,0.4482421875,0.38671875,0.298828125,0.216796875,0.1796875,0.2021484375,0.26171875,0.3251953125,0.3828125,0.4208984375,0.44140625,0.4541015625,0.474609375,0.513671875,0.5703125,0.6240234375,0.6455078125,0.6298828125,0.5966796875,0.5712890625,0.5791015625,0.6220703125,0.6748046875,0.7177734375,0.7138671875,0.64453125,0.52734375,0.4091796875,0.3251953125,0.2578125,0.21875,0.228515625,0.2861328125,0.3623046875,0.4169921875,0.4287109375,0.4375,0.4755859375,0.529296875,0.5703125,0.576171875,0.5478515625,0.5,0.451171875,0.4228515625,0.4326171875,0.482421875,0.5498046875,0.6015625,0.6220703125,0.630859375,0.6318359375,0.6220703125,0.6044921875,0.5849609375,0.572265625,0.5703125,0.55859375,0.505859375,0.4287109375,0.365234375,0.3447265625,0.373046875,0.4287109375,0.4921875,0.5537109375,0.6005859375,0.62109375,0.6201171875,0.615234375,0.6220703125,0.6181640625,0.5625,0.47265625,0.3916015625,0.3583984375,0.3837890625,0.4482421875,0.5068359375,0.515625,0.4716796875,0.4052734375,0.361328125,0.3701171875,0.4287109375,0.5078125,0.595703125,0.650390625,0.63671875,0.55859375,0.4580078125,0.376953125,0.30078125,0.220703125,0.177734375,0.201171875,0.28125,0.376953125,0.4482421875,0.4990234375,0.505859375,0.462890625,0.396484375,0.3447265625,0.337890625,0.376953125,0.4375,0.5185546875,0.58984375,0.6123046875,0.5791015625,0.5126953125,0.4482421875,0.39453125,0.376953125,0.3994140625,0.4423828125,0.474609375,0.470703125,0.4287109375,0.3837890625,0.3642578125,0.369140625,0.384765625,0.390625,0.3701171875,0.3251953125,0.2900390625,0.3154296875,0.3984375,0.49609375,0.5595703125,0.55859375,0.5,0.435546875,0.41015625,0.443359375,0.5234375,0.6142578125,0.669921875,0.673828125,0.6630859375,0.6552734375,0.650390625,0.6455078125,0.6396484375,0.6318359375,0.6220703125,0.5986328125,0.5341796875,0.4482421875,0.380859375,0.361328125,0.390625,0.4482421875,0.4970703125,0.5009765625,0.458984375,0.40234375,0.3701171875,0.38671875,0.4482421875,0.5078125,0.515625,0.4638671875,0.3798828125,0.30859375,0.2890625,0.3251953125,0.3828125,0.455078125,0.52734375,0.57421875,0.5888671875,0.5810546875,0.5703125,0.56640625,0.5859375,0.6181640625,0.671875,0.70703125,0.6982421875,0.6484375,0.5791015625,0.515625,0.484375,0.4892578125,0.5087890625,0.5166015625,0.490234375,0.4296875,0.3759765625,0.384765625,0.45703125,0.552734375,0.6220703125,0.6259765625,0.5693359375,0.5078125,0.486328125,0.5068359375,0.5458984375,0.568359375,0.5498046875,0.4892578125,0.4228515625,0.3798828125,0.3828125,0.4306640625,0.4990234375,0.5478515625,0.5595703125,0.5498046875,0.51171875,0.4638671875,0.439453125,0.45703125,0.5107421875,0.5791015625,0.634765625,0.6279296875,0.5576171875,0.4609375,0.390625,0.384765625,0.439453125,0.5009765625,0.5283203125,0.5205078125,0.498046875,0.490234375,0.517578125,0.5791015625,0.6435546875,0.673828125,0.650390625,0.578125,0.490234375,0.431640625,0.419921875,0.412109375,0.3720703125,0.3212890625,0.29296875,0.3076171875,0.3603515625,0.4296875,0.5029296875,0.5703125,0.61328125,0.6171875,0.591796875,0.56640625,0.5595703125,0.5478515625,0.4990234375,0.4306640625,0.3828125,0.3798828125,0.4228515625,0.4892578125,0.568359375,0.6630859375,0.734375,0.740234375,0.6796875,0.5888671875,0.509765625,0.44921875,0.435546875,0.470703125,0.52734375,0.5654296875,0.556640625,0.5,0.435546875,0.3955078125,0.40234375,0.453125,0.521484375,0.5693359375,0.5791015625,0.564453125,0.50390625,0.4169921875,0.3466796875,0.3251953125,0.3564453125,0.419921875,0.490234375,0.5595703125,0.6064453125,0.6171875,0.599609375,0.5771484375,0.5693359375,0.576171875,0.609375,0.6494140625,0.6640625,0.638671875,0.580078125,0.509765625,0.4296875,0.3359375,0.2685546875,0.2685546875,0.3359375,0.4296875,0.509765625,0.580078125,0.6376953125,0.6611328125,0.642578125,0.6005859375,0.56640625,0.5595703125,0.5576171875,0.5419921875,0.5107421875,0.4736328125,0.44140625,0.4228515625,0.419921875,0.4140625,0.3935546875,0.3779296875,0.3916015625,0.439453125,0.5087890625,0.5791015625,0.6455078125,0.6943359375,0.7060546875,0.6767578125,0.6259765625,0.5869140625,0.5791015625,0.580078125,0.5791015625,0.576171875,0.572265625,0.5693359375,0.568359375,0.5693359375,0.5712890625,0.5751953125,0.578125,0.5810546875,0.58203125,0.5810546875,0.5791015625,0.5673828125,0.5244140625,0.470703125,0.44140625,0.4560546875,0.5087890625,0.5791015625,0.6484375,0.7001953125,0.7119140625,0.681640625,0.6279296875,0.587890625,0.5791015625,0.5693359375,0.521484375,0.4541015625,0.4052734375,0.4013671875,0.443359375,0.509765625,0.5859375,0.6689453125,0.7177734375,0.697265625,0.6142578125,0.5107421875,0.4296875,0.36328125,0.328125,0.3466796875,0.416015625,0.5029296875,0.564453125,0.5791015625,0.587890625,0.61328125,0.6357421875,0.62890625,0.5830078125,0.5126953125,0.439453125,0.3603515625,0.2666015625,0.2001953125,0.19921875,0.2626953125,0.353515625,0.4296875,0.4990234375,0.5654296875,0.6064453125,0.6123046875,0.58984375,0.5654296875,0.5595703125,0.556640625,0.54296875,0.517578125,0.4873046875,0.4599609375,0.4443359375,0.439453125,0.44140625,0.45703125,0.48828125,0.525390625,0.5576171875,0.576171875,0.5791015625,0.5859375,0.6103515625,0.6328125,0.626953125,0.58203125,0.5126953125,0.439453125,0.359375,0.2646484375,0.1943359375,0.189453125,0.251953125,0.341796875,0.419921875,0.498046875,0.5927734375,0.662109375,0.6669921875,0.6064453125,0.517578125,0.439453125,0.3828125,0.3779296875,0.4287109375,0.5009765625,0.55078125,0.546875,0.4892578125,0.423828125,0.384765625,0.392578125,0.4462890625,0.5185546875,0.5693359375,0.5791015625,0.583984375,0.60546875,0.625,0.6181640625,0.5751953125,0.5087890625,0.439453125,0.3837890625,0.380859375,0.431640625,0.5029296875,0.552734375,0.546875,0.4892578125,0.412109375,0.3212890625,0.259765625,0.263671875,0.333984375,0.4296875,0.509765625,0.5673828125,0.5703125,0.5146484375,0.4345703125,0.37890625,0.3818359375,0.439453125,0.5,0.509765625,0.4677734375,0.4033203125,0.357421875,0.36328125,0.419921875,0.490234375,0.55859375,0.60546875,0.6171875,0.6025390625,0.5830078125,0.5791015625,0.5771484375,0.55859375,0.5234375,0.48046875,0.4443359375,0.423828125,0.419921875,0.4306640625,0.4794921875,0.5458984375,0.5927734375,0.595703125,0.5546875,0.4892578125,0.412109375,0.3125,0.232421875,0.212890625,0.26171875,0.34375,0.419921875,0.4814453125,0.5087890625,0.5009765625,0.478515625,0.470703125,0.498046875,0.5595703125,0.6181640625,0.630859375,0.5947265625,0.5390625,0.501953125,0.5126953125,0.5693359375,0.642578125,0.7158203125,0.7490234375,0.7099609375,0.61328125,0.5029296875,0.419921875,0.3505859375,0.30078125,0.2919921875,0.3271484375,0.384765625,0.4296875,0.439453125,0.4501953125,0.498046875,0.5615234375,0.6064453125,0.607421875,0.564453125,0.5,0.4345703125,0.3916015625,0.3935546875,0.4404296875,0.5068359375,0.556640625,0.5693359375,0.5703125,0.5703125,0.568359375,0.5654296875,0.5615234375,0.5595703125,0.5595703125,0.546875,0.4912109375,0.4130859375,0.3515625,0.337890625,0.3740234375,0.439453125,0.5107421875,0.576171875,0.6171875,0.62109375,0.5986328125,0.57421875,0.5693359375,0.55859375,0.5087890625,0.4375,0.3857421875,0.3798828125,0.421875,0.4892578125,0.5478515625,0.552734375,0.501953125,0.427734375,0.3759765625,0.380859375,0.439453125,0.51953125,0.6123046875,0.6767578125,0.673828125,0.60546875,0.509765625,0.4296875,0.3515625,0.265625,0.2138671875,0.23046875,0.3095703125,0.41015625,0.4892578125,0.546875,0.55078125,0.5,0.4248046875,0.3720703125,0.3740234375,0.4296875,0.5078125,0.60546875,0.68359375,0.7001953125,0.6494140625,0.5654296875,0.4892578125,0.4296875,0.412109375,0.439453125,0.484375,0.5126953125,0.498046875,0.439453125,0.3818359375,0.369140625,0.4033203125,0.4560546875,0.490234375,0.4775390625,0.419921875,0.365234375,0.3662109375,0.4248046875,0.505859375,0.560546875,0.5576171875,0.5,0.431640625,0.3896484375,0.3955078125,0.4482421875,0.5185546875,0.5693359375,0.5791015625,0.5771484375,0.576171875,0.5751953125,0.5732421875,0.572265625,0.5712890625,0.5693359375,0.5556640625,0.5048828125,0.4345703125,0.3837890625,0.380859375,0.4228515625,0.4892578125,0.5478515625,0.5576171875,0.5166015625,0.45703125,0.41796875,0.4296875,0.4892578125,0.5478515625,0.552734375,0.4990234375,0.421875,0.365234375,0.365234375,0.419921875,0.490234375,0.5576171875,0.6025390625,0.611328125,0.5908203125,0.5673828125,0.5595703125,0.56640625,0.5986328125,0.6376953125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.541015625,0.5693359375,0.5537109375,0.5,0.4296875,0.373046875,0.380859375,0.4541015625,0.5546875,0.6279296875,0.6357421875,0.5791015625,0.515625,0.4873046875,0.4951171875,0.5185546875,0.52734375,0.5009765625,0.439453125,0.3828125,0.37890625,0.4306640625,0.50390625,0.5537109375,0.548828125,0.4892578125,0.41796875,0.3583984375,0.3310546875,0.34375,0.380859375,0.4130859375,0.419921875,0.408203125,0.3662109375,0.3154296875,0.2880859375,0.3046875,0.359375,0.4296875,0.4931640625,0.5205078125,0.51171875,0.4873046875,0.478515625,0.505859375,0.5693359375,0.626953125,0.623046875,0.556640625,0.462890625,0.3935546875,0.3857421875,0.439453125,0.5087890625,0.572265625,0.6103515625,0.6123046875,0.5888671875,0.564453125,0.5595703125,0.5517578125,0.5146484375,0.466796875,0.4423828125,0.4580078125,0.5107421875,0.5791015625,0.64453125,0.6787109375,0.66015625,0.59375,0.5107421875,0.453125,0.439453125,0.431640625,0.3994140625,0.3623046875,0.3515625,0.3798828125,0.439453125,0.509765625,0.5869140625,0.677734375,0.7392578125,0.7353515625,0.6650390625,0.5693359375,0.4892578125,0.4296875,0.4208984375,0.462890625,0.5263671875,0.568359375,0.55859375,0.5,0.427734375,0.3642578125,0.33203125,0.3408203125,0.376953125,0.41015625,0.419921875,0.416015625,0.396484375,0.3818359375,0.3935546875,0.4404296875,0.5087890625,0.5791015625,0.6416015625,0.6728515625,0.6494140625,0.5791015625,0.4921875,0.4326171875,0.419921875,0.431640625,0.4814453125,0.55078125,0.599609375,0.6015625,0.5576171875,0.4892578125,0.41015625,0.31640625,0.2509765625,0.251953125,0.318359375,0.4111328125,0.4892578125,0.5556640625,0.59765625,0.59375,0.544921875,0.4775390625,0.4296875,0.419921875,0.4248046875,0.4453125,0.4814453125,0.5234375,0.5576171875,0.576171875,0.5791015625,0.5654296875,0.505859375,0.41796875,0.345703125,0.3232421875,0.35546875,0.419921875,0.48828125,0.5390625,0.5517578125,0.5224609375,0.470703125,0.4296875,0.419921875,0.419921875,0.4228515625,0.4267578125,0.4326171875,0.4365234375,0.439453125,0.439453125,0.439453125,0.435546875,0.4296875,0.423828125,0.419921875,0.4189453125,0.419921875,0.412109375,0.3759765625,0.330078125,0.3056640625,0.3212890625,0.373046875,0.439453125,0.505859375,0.5537109375,0.5625,0.5302734375,0.4775390625,0.4375,0.4296875,0.423828125,0.3935546875,0.359375,0.3505859375,0.3798828125,0.439453125,0.509765625,0.5888671875,0.6865234375,0.763671875,0.779296875,0.7275390625,0.64453125,0.5693359375,0.4990234375,0.4326171875,0.3876953125,0.3779296875,0.39453125,0.4150390625,0.419921875,0.431640625,0.490234375,0.5771484375,0.6474609375,0.6689453125,0.6357421875,0.5693359375,0.490234375,0.3984375,0.3349609375,0.337890625,0.4072265625,0.5009765625,0.5791015625,0.6435546875,0.6767578125,0.658203125,0.5908203125,0.5078125,0.451171875,0.439453125,0.4443359375,0.458984375,0.484375,0.5146484375,0.5400390625,0.5546875,0.5595703125,0.55859375,0.544921875,0.517578125,0.4833984375,0.4521484375,0.4345703125,0.4296875,0.44140625,0.5,0.5869140625,0.6572265625,0.6787109375,0.6455078125,0.5791015625,0.4990234375,0.4052734375,0.3388671875,0.3388671875,0.4052734375,0.4990234375,0.5791015625,0.658203125,0.7490234375,0.8115234375,0.8076171875,0.7392578125,0.646484375,0.5693359375,0.5107421875,0.494140625,0.5205078125,0.5634765625,0.587890625,0.5693359375,0.509765625,0.439453125,0.37890625,0.3486328125,0.359375,0.396484375,0.4296875,0.439453125,0.4541015625,0.513671875,0.5966796875,0.6630859375,0.6796875,0.64453125,0.5791015625,0.51953125,0.5,0.5224609375,0.5615234375,0.5830078125,0.5615234375,0.5,0.419921875,0.328125,0.2646484375,0.2685546875,0.3369140625,0.4306640625,0.509765625,0.5693359375,0.5888671875,0.564453125,0.5244140625,0.5,0.51953125,0.5791015625,0.63671875,0.6455078125,0.6015625,0.537109375,0.4931640625,0.5009765625,0.5595703125,0.6240234375,0.658203125,0.640625,0.57421875,0.490234375,0.4326171875,0.419921875,0.423828125,0.4423828125,0.478515625,0.5205078125,0.556640625,0.5751953125,0.5791015625,0.5869140625,0.615234375,0.646484375,0.6513671875,0.619140625,0.55859375,0.4892578125,0.4150390625,0.3359375,0.291015625,0.3134765625,0.3974609375,0.4990234375,0.5791015625,0.6337890625,0.625,0.5517578125,0.4521484375,0.3798828125,0.373046875,0.4296875,0.4892578125,0.5,0.4599609375,0.3994140625,0.359375,0.3701171875,0.4296875,0.5126953125,0.6240234375,0.7216796875,0.7587890625,0.72265625,0.6455078125,0.5693359375,0.4990234375,0.4462890625,0.431640625,0.4609375,0.5146484375,0.5576171875,0.5693359375,0.5791015625,0.6123046875,0.6484375,0.6572265625,0.6240234375,0.5615234375,0.4892578125,0.41796875,0.3564453125,0.326171875,0.3369140625,0.375,0.41015625,0.419921875,0.421875,0.42578125,0.4306640625,0.4345703125,0.4384765625,0.439453125,0.439453125,0.4326171875,0.408203125,0.3837890625,0.3857421875,0.42578125,0.490234375,0.5595703125,0.623046875,0.658203125,0.6435546875,0.5810546875,0.5009765625,0.4443359375,0.4296875,0.419921875,0.3876953125,0.353515625,0.345703125,0.376953125,0.439453125,0.509765625,0.5693359375,0.5869140625,0.5595703125,0.5146484375,0.486328125,0.5009765625,0.5595703125,0.6357421875,0.7294921875,0.798828125,0.8046875,0.7451171875,0.65625,0.5791015625,0.5,0.3994140625,0.318359375,0.2998046875,0.349609375,0.43359375,0.509765625,0.568359375,0.583984375,0.5546875,0.5078125,0.48046875,0.498046875,0.5595703125,0.6376953125,0.724609375,0.779296875,0.765625,0.6875,0.5888671875,0.509765625,0.453125,0.451171875,0.505859375,0.5830078125,0.6376953125,0.6357421875,0.5791015625,0.5205078125,0.5078125,0.5439453125,0.599609375,0.63671875,0.6259765625,0.5693359375,0.5107421875,0.4931640625,0.5185546875,0.560546875,0.5849609375,0.568359375,0.509765625,0.44140625,0.380859375,0.349609375,0.35546875,0.38671875,0.4140625,0.419921875,0.41796875,0.41796875,0.4189453125,0.4208984375,0.421875,0.4208984375,0.419921875,0.41015625,0.375,0.3369140625,0.326171875,0.3564453125,0.41796875,0.4892578125,0.5498046875,0.5625,0.5244140625,0.4658203125,0.4248046875,0.4326171875,0.4892578125,0.5478515625,0.5654296875,0.5419921875,0.501953125,0.4794921875,0.4990234375,0.5595703125,0.625,0.6611328125,0.6474609375,0.5859375,0.5078125,0.4521484375,0.439453125,0.4501953125,0.4970703125,0.560546875,0.5146484375,0.5322265625,0.5068359375,0.4482421875,0.376953125,0.32421875,0.349609375,0.4560546875,0.5947265625,0.701171875,0.7265625,0.673828125,0.6064453125,0.5595703125,0.5380859375,0.529296875,0.517578125,0.484375,0.4287109375,0.3798828125,0.37890625,0.4248046875,0.486328125,0.5234375,0.5087890625,0.4482421875,0.376953125,0.3154296875,0.2822265625,0.28515625,0.3095703125,0.3291015625,0.3251953125,0.306640625,0.263671875,0.2197265625,0.2080078125,0.240234375,0.3046875,0.376953125,0.4423828125,0.4833984375,0.498046875,0.5009765625,0.515625,0.556640625,0.6220703125,0.6796875,0.6796875,0.611328125,0.5087890625,0.421875,0.3935546875,0.4287109375,0.48046875,0.5283203125,0.5615234375,0.5732421875,0.568359375,0.5634765625,0.5703125,0.57421875,0.55859375,0.5380859375,0.53515625,0.5615234375,0.6123046875,0.673828125,0.7275390625,0.7421875,0.69921875,0.6083984375,0.5087890625,0.443359375,0.4287109375,0.4228515625,0.40234375,0.3837890625,0.390625,0.4287109375,0.48828125,0.55078125,0.6181640625,0.6923828125,0.734375,0.7109375,0.62890625,0.5283203125,0.4482421875,0.3896484375,0.384765625,0.4365234375,0.5107421875,0.5625,0.55859375,0.5,0.423828125,0.3447265625,0.28515625,0.2646484375,0.28125,0.3095703125,0.3251953125,0.3369140625,0.3564453125,0.3984375,0.46484375,0.5439453125,0.6171875,0.673828125,0.71484375,0.7099609375,0.6416015625,0.5283203125,0.4130859375,0.3408203125,0.3251953125,0.3388671875,0.39453125,0.4755859375,0.5380859375,0.552734375,0.5146484375,0.4482421875,0.369140625,0.28125,0.22265625,0.2265625,0.2919921875,0.3779296875,0.4482421875,0.5029296875,0.52734375,0.50390625,0.4404296875,0.3701171875,0.3271484375,0.3251953125,0.34375,0.3935546875,0.4736328125,0.560546875,0.630859375,0.6669921875,0.673828125,0.6572265625,0.5791015625,0.455078125,0.337890625,0.271484375,0.2744140625,0.3251953125,0.3857421875,0.4296875,0.44140625,0.416015625,0.3701171875,0.333984375,0.3251953125,0.328125,0.3408203125,0.36328125,0.390625,0.4140625,0.4267578125,0.4287109375,0.4248046875,0.40625,0.3759765625,0.34375,0.3232421875,0.318359375,0.3251953125,0.3310546875,0.3212890625,0.30859375,0.3095703125,0.3349609375,0.37890625,0.4287109375,0.4755859375,0.5009765625,0.4912109375,0.451171875,0.404296875,0.3759765625,0.376953125,0.3828125,0.3759765625,0.37109375,0.38671875,0.4287109375,0.4892578125,0.55078125,0.619140625,0.7021484375,0.767578125,0.7822265625,0.7421875,0.677734375,0.6220703125,0.56640625,0.4990234375,0.431640625,0.3798828125,0.349609375,0.3359375,0.3251953125,0.33203125,0.40234375,0.5205078125,0.6328125,0.693359375,0.68359375,0.6220703125,0.544921875,0.462890625,0.4150390625,0.43359375,0.509765625,0.6025390625,0.673828125,0.7255859375,0.7353515625,0.6845703125,0.5888671875,0.4912109375,0.43359375,0.4287109375,0.44140625,0.4599609375,0.4853515625,0.513671875,0.5390625,0.5576171875,0.5703125,0.5771484375,0.5673828125,0.5341796875,0.4833984375,0.4306640625,0.3935546875,0.376953125,0.3837890625,0.4541015625,0.5712890625,0.6845703125,0.7451171875,0.734375,0.673828125,0.59375,0.4990234375,0.4326171875,0.4326171875,0.4990234375,0.59375,0.673828125,0.7490234375,0.8251953125,0.8642578125,0.841796875,0.767578125,0.6826171875,0.6220703125,0.5791015625,0.5693359375,0.58984375,0.6181640625,0.62890625,0.60546875,0.55078125,0.4873046875,0.421875,0.375,0.3642578125,0.384765625,0.4130859375,0.4287109375,0.453125,0.5263671875,0.6279296875,0.71484375,0.75,0.728515625,0.673828125,0.6201171875,0.595703125,0.5986328125,0.609375,0.6025390625,0.564453125,0.5,0.4228515625,0.3408203125,0.29296875,0.3115234375,0.3876953125,0.48046875,0.55078125,0.60546875,0.62890625,0.6220703125,0.6025390625,0.595703125,0.619140625,0.673828125,0.7216796875,0.71875,0.6611328125,0.58203125,0.5244140625,0.521484375,0.5703125,0.6240234375,0.6396484375,0.595703125,0.505859375,0.4052734375,0.33984375,0.3251953125,0.333984375,0.3759765625,0.453125,0.5458984375,0.623046875,0.6650390625,0.673828125,0.6748046875,0.677734375,0.6650390625,0.626953125,0.5673828125,0.5029296875,0.4482421875,0.39453125,0.349609375,0.3447265625,0.3994140625,0.4990234375,0.6015625,0.673828125,0.7158203125,0.68359375,0.5751953125,0.4404296875,0.341796875,0.3232421875,0.376953125,0.4375,0.4482421875,0.4072265625,0.3466796875,0.306640625,0.3173828125,0.376953125,0.462890625,0.5869140625,0.7080078125,0.7724609375,0.759765625,0.6953125,0.6220703125,0.55078125,0.4921875,0.470703125,0.4970703125,0.552734375,0.6015625,0.6220703125,0.6376953125,0.666015625,0.6826171875,0.662109375,0.6025390625,0.5234375,0.4482421875,0.3740234375,0.30078125,0.251953125,0.24609375,0.2744140625,0.30859375,0.3251953125,0.337890625,0.3583984375,0.3828125,0.40625,0.421875,0.427734375,0.4287109375,0.4248046875,0.4130859375,0.40625,0.421875,0.462890625,0.517578125,0.5703125,0.6162109375,0.63671875,0.6103515625,0.54296875,0.4599609375,0.3994140625,0.376953125,0.3623046875,0.3408203125,0.33203125,0.3564453125,0.4140625,0.486328125,0.55078125,0.6044921875,0.6220703125,0.599609375,0.556640625,0.5244140625,0.5283203125,0.5703125,0.630859375,0.7158203125,0.7939453125,0.826171875,0.7998046875,0.7373046875,0.673828125,0.6025390625,0.5068359375,0.4228515625,0.390625,0.419921875,0.4853515625,0.55078125,0.6015625,0.6064453125,0.5693359375,0.517578125,0.4892578125,0.5087890625,0.5703125,0.6474609375,0.7333984375,0.7880859375,0.779296875,0.7099609375,0.62109375,0.55078125,0.5029296875,0.5087890625,0.5703125,0.654296875,0.7158203125,0.7216796875,0.673828125,0.619140625,0.59765625,0.61328125,0.6474609375,0.671875,0.6640625,0.6220703125,0.5771484375,0.5615234375,0.57421875,0.5986328125,0.611328125,0.595703125,0.55078125,0.498046875,0.439453125,0.38671875,0.353515625,0.3388671875,0.333984375,0.3251953125,0.3173828125,0.3154296875,0.3212890625,0.330078125,0.3359375,0.333984375,0.3251953125,0.30859375,0.2744140625,0.24609375,0.251953125,0.30078125,0.3740234375,0.4482421875,0.5107421875,0.533203125,0.5087890625,0.45703125,0.4130859375,0.408203125,0.4482421875,0.4921875,0.5078125,0.4990234375,0.484375,0.484375,0.5146484375,0.5703125,0.6259765625,0.654296875,0.6337890625,0.5703125,0.4931640625,0.4404296875,0.4287109375,0.4375,0.4755859375,0.525390625,0.53515625,0.5380859375,0.5009765625,0.4365234375,0.3642578125,0.3134765625,0.34765625,0.4716796875,0.6318359375,0.755859375,0.791015625,0.740234375,0.669921875,0.611328125,0.5712890625,0.5498046875,0.5341796875,0.509765625,0.46875,0.43359375,0.4326171875,0.4609375,0.4912109375,0.4951171875,0.4599609375,0.39453125,0.3251953125,0.271484375,0.248046875,0.25390625,0.271484375,0.27734375,0.2587890625,0.2255859375,0.177734375,0.142578125,0.1513671875,0.2080078125,0.2880859375,0.3642578125,0.4296875,0.4736328125,0.494140625,0.5048828125,0.525390625,0.5693359375,0.634765625,0.6982421875,0.7197265625,0.681640625,0.599609375,0.5126953125,0.46484375,0.46875,0.4853515625,0.4912109375,0.48828125,0.4853515625,0.490234375,0.505859375,0.5302734375,0.5537109375,0.572265625,0.5908203125,0.6162109375,0.6513671875,0.6943359375,0.740234375,0.7783203125,0.7783203125,0.7255859375,0.6357421875,0.541015625,0.4814453125,0.46875,0.4658203125,0.4560546875,0.4521484375,0.46875,0.5078125,0.5576171875,0.6044921875,0.6533203125,0.703125,0.7177734375,0.673828125,0.580078125,0.4755859375,0.39453125,0.3369140625,0.3388671875,0.40234375,0.4912109375,0.5546875,0.556640625,0.5,0.4208984375,0.3232421875,0.2373046875,0.1923828125,0.197265625,0.228515625,0.2587890625,0.29296875,0.359375,0.4580078125,0.56640625,0.6572265625,0.7138671875,0.740234375,0.7470703125,0.703125,0.5986328125,0.4638671875,0.341796875,0.2724609375,0.2587890625,0.2724609375,0.330078125,0.4140625,0.48046875,0.4970703125,0.4609375,0.39453125,0.318359375,0.2392578125,0.1923828125,0.2041015625,0.265625,0.33984375,0.39453125,0.431640625,0.4326171875,0.3916015625,0.3251953125,0.2666015625,0.2431640625,0.2587890625,0.2958984375,0.373046875,0.4853515625,0.6015625,0.689453125,0.732421875,0.740234375,0.72265625,0.6376953125,0.4970703125,0.3505859375,0.2509765625,0.2255859375,0.2587890625,0.302734375,0.3359375,0.3447265625,0.3251953125,0.2919921875,0.265625,0.2587890625,0.263671875,0.2890625,0.3359375,0.3916015625,0.4384765625,0.4638671875,0.46875,0.4609375,0.419921875,0.353515625,0.2861328125,0.244140625,0.23828125,0.2587890625,0.287109375,0.3203125,0.3583984375,0.39453125,0.42578125,0.44921875,0.46875,0.4814453125,0.466796875,0.427734375,0.380859375,0.34765625,0.34375,0.3642578125,0.388671875,0.4111328125,0.435546875,0.46875,0.51171875,0.55859375,0.6044921875,0.65234375,0.7001953125,0.7294921875,0.7255859375,0.6953125,0.6591796875,0.634765625,0.611328125,0.5673828125,0.4990234375,0.4189453125,0.3447265625,0.291015625,0.2587890625,0.251953125,0.3203125,0.4521484375,0.59375,0.68359375,0.6923828125,0.634765625,0.5615234375,0.4951171875,0.4716796875,0.5107421875,0.595703125,0.68359375,0.740234375,0.7744140625,0.7587890625,0.6875,0.5849609375,0.49609375,0.4560546875,0.46875,0.4921875,0.50390625,0.5029296875,0.49609375,0.4951171875,0.5068359375,0.5302734375,0.5556640625,0.5703125,0.5576171875,0.513671875,0.4521484375,0.3974609375,0.3642578125,0.357421875,0.4248046875,0.5576171875,0.6982421875,0.7890625,0.7978515625,0.740234375,0.66015625,0.56640625,0.4990234375,0.4990234375,0.56640625,0.66015625,0.740234375,0.8095703125,0.8603515625,0.8642578125,0.814453125,0.734375,0.666015625,0.634765625,0.6220703125,0.630859375,0.654296875,0.673828125,0.6728515625,0.646484375,0.6044921875,0.5537109375,0.4892578125,0.4306640625,0.40234375,0.4111328125,0.4404296875,0.46875,0.5078125,0.5859375,0.685546875,0.7646484375,0.796875,0.78125,0.740234375,0.7001953125,0.6796875,0.6708984375,0.6572265625,0.6240234375,0.568359375,0.5,0.42578125,0.3603515625,0.3359375,0.375,0.4609375,0.5478515625,0.6044921875,0.6455078125,0.6689453125,0.673828125,0.6708984375,0.67578125,0.69921875,0.740234375,0.7734375,0.75390625,0.681640625,0.587890625,0.515625,0.4970703125,0.5302734375,0.5673828125,0.568359375,0.515625,0.4248046875,0.3310546875,0.271484375,0.2587890625,0.2705078125,0.328125,0.435546875,0.5634765625,0.6708984375,0.728515625,0.740234375,0.734375,0.7041015625,0.640625,0.5576171875,0.4765625,0.4208984375,0.39453125,0.3779296875,0.3798828125,0.4189453125,0.4990234375,0.599609375,0.685546875,0.740234375,0.765625,0.7109375,0.58203125,0.43359375,0.3291015625,0.3095703125,0.3642578125,0.423828125,0.4345703125,0.39453125,0.333984375,0.2939453125,0.3046875,0.3642578125,0.4501953125,0.5771484375,0.7041015625,0.775390625,0.76953125,0.7080078125,0.634765625,0.5615234375,0.494140625,0.4609375,0.48046875,0.5380859375,0.599609375,0.634765625,0.6650390625,0.697265625,0.701171875,0.6572265625,0.5703125,0.4736328125,0.39453125,0.3173828125,0.2333984375,0.1708984375,0.154296875,0.181640625,0.2265625,0.2587890625,0.2890625,0.333984375,0.3857421875,0.4306640625,0.4580078125,0.4677734375,0.46875,0.4677734375,0.4638671875,0.4638671875,0.4716796875,0.4892578125,0.509765625,0.5302734375,0.5478515625,0.5576171875,0.54296875,0.5029296875,0.4462890625,0.396484375,0.3642578125,0.337890625,0.3212890625,0.3359375,0.3916015625,0.4736328125,0.55078125,0.6044921875,0.64453125,0.6572265625,0.634765625,0.587890625,0.541015625,0.51953125,0.5302734375,0.5595703125,0.625,0.708984375,0.7763671875,0.80078125,0.7822265625,0.740234375,0.6865234375,0.6103515625,0.5380859375,0.501953125,0.5146484375,0.5576171875,0.6044921875,0.63671875,0.619140625,0.5576171875,0.48828125,0.451171875,0.4677734375,0.5302734375,0.607421875,0.6953125,0.7587890625,0.767578125,0.72265625,0.6572265625,0.6044921875,0.5703125,0.580078125,0.6357421875,0.708984375,0.7646484375,0.7744140625,0.740234375,0.6962890625,0.6611328125,0.6435546875,0.642578125,0.6494140625,0.6494140625,0.634765625,0.6181640625,0.6123046875,0.6162109375,0.6240234375,0.6279296875,0.62109375,0.6044921875,0.58203125,0.541015625,0.48046875,0.408203125,0.33984375,0.2900390625,0.2587890625,0.2373046875,0.2333984375,0.248046875,0.2705078125,0.28515625,0.28125,0.2587890625,0.2265625,0.181640625,0.154296875,0.1708984375,0.2333984375,0.3173828125,0.39453125,0.4619140625,0.5029296875,0.501953125,0.4638671875,0.4140625,0.3857421875,0.39453125,0.41015625,0.4140625,0.4140625,0.421875,0.4462890625,0.4853515625,0.5302734375,0.572265625,0.5986328125,0.5927734375,0.5576171875,0.5107421875,0.4765625,0.46875,0.4736328125,0.4912109375,0.5078125,0.5849609375,0.580078125,0.5361328125,0.4677734375,0.39453125,0.3427734375,0.3740234375,0.4912109375,0.6435546875,0.7607421875,0.7919921875,0.740234375,0.6689453125,0.6064453125,0.56640625,0.5517578125,0.5537109375,0.55078125,0.5302734375,0.5107421875,0.5126953125,0.5244140625,0.521484375,0.4912109375,0.43359375,0.3642578125,0.2978515625,0.259765625,0.2568359375,0.2783203125,0.2998046875,0.2958984375,0.2587890625,0.2080078125,0.1494140625,0.1181640625,0.142578125,0.2197265625,0.3154296875,0.39453125,0.458984375,0.4951171875,0.501953125,0.4970703125,0.50390625,0.5400390625,0.6044921875,0.6748046875,0.7294921875,0.740234375,0.6982421875,0.625,0.5595703125,0.5302734375,0.50390625,0.4560546875,0.4052734375,0.3779296875,0.38671875,0.423828125,0.46875,0.515625,0.56640625,0.6162109375,0.6572265625,0.6884765625,0.71484375,0.740234375,0.7607421875,0.7548828125,0.712890625,0.6455078125,0.5791015625,0.5380859375,0.5302734375,0.5283203125,0.5263671875,0.5302734375,0.546875,0.5751953125,0.6064453125,0.634765625,0.6640625,0.6923828125,0.6904296875,0.6376953125,0.544921875,0.443359375,0.3642578125,0.3076171875,0.3134765625,0.3837890625,0.48046875,0.55078125,0.556640625,0.5,0.41796875,0.3095703125,0.208984375,0.15625,0.1650390625,0.2109375,0.2587890625,0.31640625,0.419921875,0.5498046875,0.6650390625,0.7353515625,0.75390625,0.740234375,0.7099609375,0.6376953125,0.52734375,0.408203125,0.314453125,0.267578125,0.2587890625,0.271484375,0.326171875,0.40234375,0.4609375,0.470703125,0.431640625,0.3642578125,0.291015625,0.22265625,0.189453125,0.208984375,0.267578125,0.328125,0.3642578125,0.380859375,0.361328125,0.30859375,0.2509765625,0.2158203125,0.220703125,0.2587890625,0.314453125,0.40625,0.521484375,0.6298828125,0.703125,0.7353515625,0.740234375,0.7255859375,0.6513671875,0.5244140625,0.3857421875,0.283203125,0.244140625,0.2587890625,0.2841796875,0.3037109375,0.30859375,0.2978515625,0.2783203125,0.2626953125,0.2587890625,0.265625,0.2978515625,0.3583984375,0.4306640625,0.490234375,0.5234375,0.5302734375,0.517578125,0.4580078125,0.36328125,0.2734375,0.220703125,0.220703125,0.2587890625,0.3115234375,0.388671875,0.4716796875,0.5322265625,0.5556640625,0.5478515625,0.5302734375,0.501953125,0.4453125,0.3779296875,0.3310546875,0.3232421875,0.3505859375,0.39453125,0.4404296875,0.4873046875,0.5302734375,0.5634765625,0.587890625,0.6103515625,0.634765625,0.6572265625,0.662109375,0.6455078125,0.619140625,0.595703125,0.5908203125,0.6044921875,0.62109375,0.619140625,0.580078125,0.5,0.3994140625,0.3134765625,0.2587890625,0.232421875,0.283203125,0.4052734375,0.546875,0.64453125,0.66015625,0.6044921875,0.5341796875,0.4833984375,0.48046875,0.53515625,0.6240234375,0.701171875,0.740234375,0.7548828125,0.7216796875,0.646484375,0.560546875,0.501953125,0.494140625,0.5302734375,0.56640625,0.5654296875,0.5263671875,0.47265625,0.43359375,0.4326171875,0.46875,0.517578125,0.568359375,0.59375,0.57421875,0.5146484375,0.4462890625,0.39453125,0.3681640625,0.4189453125,0.541015625,0.681640625,0.779296875,0.7958984375,0.740234375,0.66015625,0.56640625,0.4990234375,0.4990234375,0.56640625,0.66015625,0.740234375,0.8037109375,0.8291015625,0.7978515625,0.7236328125,0.6435546875,0.599609375,0.6044921875,0.626953125,0.66015625,0.6904296875,0.701171875,0.689453125,0.662109375,0.634765625,0.6005859375,0.5419921875,0.48046875,0.4443359375,0.44921875,0.484375,0.5302734375,0.58203125,0.65625,0.7314453125,0.779296875,0.787109375,0.767578125,0.740234375,0.71875,0.7119140625,0.70703125,0.6845703125,0.6376953125,0.5712890625,0.5,0.4296875,0.3779296875,0.375,0.4306640625,0.5185546875,0.595703125,0.634765625,0.6591796875,0.67578125,0.6845703125,0.6904296875,0.69921875,0.7158203125,0.740234375,0.755859375,0.7265625,0.6513671875,0.5576171875,0.482421875,0.453125,0.46875,0.490234375,0.4833984375,0.44140625,0.375,0.30859375,0.267578125,0.2587890625,0.2705078125,0.328125,0.435546875,0.5634765625,0.6708984375,0.728515625,0.740234375,0.728515625,0.671875,0.57421875,0.466796875,0.3857421875,0.3544921875,0.3642578125,0.3876953125,0.431640625,0.5,0.580078125,0.654296875,0.7080078125,0.740234375,0.748046875,0.68359375,0.5576171875,0.4248046875,0.3408203125,0.3359375,0.39453125,0.4541015625,0.46484375,0.4248046875,0.3642578125,0.32421875,0.3349609375,0.39453125,0.4794921875,0.5986328125,0.7119140625,0.767578125,0.748046875,0.6796875,0.6044921875,0.5283203125,0.4501953125,0.40234375,0.4140625,0.4755859375,0.55078125,0.6044921875,0.6533203125,0.6982421875,0.70703125,0.654296875,0.5537109375,0.4453125,0.3642578125,0.28515625,0.1943359375,0.123046875,0.1064453125,0.1455078125,0.20703125,0.2587890625,0.3095703125,0.375,0.4443359375,0.4970703125,0.5234375,0.5302734375,0.5302734375,0.53125,0.53515625,0.53515625,0.52734375,0.509765625,0.4892578125,0.46875,0.455078125,0.458984375,0.47265625,0.4794921875,0.46875,0.4375,0.39453125,0.3525390625,0.3330078125,0.3583984375,0.4306640625,0.5224609375,0.59765625,0.634765625,0.6591796875,0.669921875,0.6513671875,0.6044921875,0.544921875,0.4951171875,0.46875,0.4609375,0.4951171875,0.5712890625,0.662109375,0.732421875,0.7568359375,0.740234375,0.7080078125,0.6611328125,0.61328125,0.5849609375,0.5859375,0.6083984375,0.634765625,0.646484375,0.6044921875,0.5185546875,0.43359375,0.3896484375,0.4072265625,0.46875,0.546875,0.634765625,0.7041015625,0.728515625,0.7080078125,0.6669921875,0.634765625,0.615234375,0.6240234375,0.662109375,0.712890625,0.7509765625,0.759765625,0.740234375,0.708984375,0.662109375,0.6123046875,0.580078125,0.5732421875,0.5859375,0.6044921875,0.62109375,0.6279296875,0.6240234375,0.6162109375,0.6123046875,0.6181640625,0.634765625,0.6513671875,0.6455078125,0.5986328125,0.5107421875,0.404296875,0.314453125,0.2587890625,0.220703125,0.21484375,0.240234375,0.2783203125,0.3037109375,0.296875,0.2587890625,0.20703125,0.1455078125,0.1064453125,0.123046875,0.1943359375,0.28515625,0.3642578125,0.4365234375,0.5,0.52734375,0.5048828125,0.4482421875,0.392578125,0.3642578125,0.3447265625,0.328125,0.328125,0.3525390625,0.3955078125,0.4384765625,0.46875,0.49609375,0.5224609375,0.541015625,0.5458984375,0.5400390625,0.5322265625,0.5302734375,0.529296875,0.5244140625,0.5078125,0.6298828125,0.6279296875,0.587890625,0.5205078125,0.4482421875,0.3935546875,0.41015625,0.5,0.62109375,0.7109375,0.7275390625,0.673828125,0.6025390625,0.5439453125,0.5146484375,0.5224609375,0.55078125,0.572265625,0.5703125,0.5654296875,0.576171875,0.5849609375,0.568359375,0.51953125,0.4501953125,0.376953125,0.314453125,0.2919921875,0.3125,0.35546875,0.3857421875,0.376953125,0.3251953125,0.2587890625,0.1875,0.1494140625,0.177734375,0.263671875,0.3662109375,0.4482421875,0.509765625,0.533203125,0.5166015625,0.482421875,0.4658203125,0.4892578125,0.55078125,0.62890625,0.712890625,0.7685546875,0.7646484375,0.7060546875,0.62890625,0.5703125,0.5087890625,0.4189453125,0.33203125,0.2900390625,0.30859375,0.365234375,0.4287109375,0.4931640625,0.5615234375,0.619140625,0.6533203125,0.6640625,0.666015625,0.673828125,0.6806640625,0.67578125,0.6552734375,0.623046875,0.5927734375,0.57421875,0.5703125,0.5693359375,0.5703125,0.57421875,0.5830078125,0.5966796875,0.6103515625,0.6220703125,0.6357421875,0.6552734375,0.65625,0.6181640625,0.5419921875,0.4541015625,0.376953125,0.3203125,0.32421875,0.3916015625,0.4853515625,0.552734375,0.556640625,0.5,0.4169921875,0.3076171875,0.2099609375,0.1689453125,0.1943359375,0.259765625,0.3251953125,0.400390625,0.517578125,0.64453125,0.7314453125,0.75390625,0.7236328125,0.673828125,0.615234375,0.5361328125,0.44921875,0.37890625,0.3388671875,0.326171875,0.3251953125,0.3369140625,0.384765625,0.4501953125,0.494140625,0.4921875,0.4462890625,0.376953125,0.3056640625,0.248046875,0.2265625,0.2529296875,0.3076171875,0.357421875,0.376953125,0.3779296875,0.34375,0.2880859375,0.244140625,0.236328125,0.2685546875,0.3251953125,0.3935546875,0.48046875,0.5693359375,0.6357421875,0.6669921875,0.673828125,0.673828125,0.6640625,0.615234375,0.5302734375,0.43359375,0.3583984375,0.3232421875,0.3251953125,0.3359375,0.34375,0.345703125,0.3408203125,0.3330078125,0.3271484375,0.3251953125,0.3310546875,0.361328125,0.416015625,0.48046875,0.5341796875,0.564453125,0.5703125,0.5556640625,0.490234375,0.390625,0.2998046875,0.2568359375,0.271484375,0.3251953125,0.3984375,0.501953125,0.6064453125,0.666015625,0.666015625,0.6220703125,0.5703125,0.5087890625,0.4208984375,0.3388671875,0.3017578125,0.32421875,0.3837890625,0.4482421875,0.509765625,0.5703125,0.6123046875,0.6279296875,0.623046875,0.6162109375,0.6220703125,0.623046875,0.5927734375,0.541015625,0.49609375,0.482421875,0.5048828125,0.55078125,0.6044921875,0.6494140625,0.654296875,0.599609375,0.5,0.3974609375,0.3251953125,0.28125,0.3056640625,0.3974609375,0.513671875,0.5966796875,0.607421875,0.55078125,0.482421875,0.439453125,0.4453125,0.50390625,0.5859375,0.650390625,0.673828125,0.6728515625,0.6318359375,0.5654296875,0.5078125,0.48828125,0.5146484375,0.5703125,0.6181640625,0.6103515625,0.5439453125,0.455078125,0.388671875,0.380859375,0.4287109375,0.498046875,0.580078125,0.6416015625,0.646484375,0.59375,0.515625,0.4482421875,0.4033203125,0.427734375,0.5205078125,0.6357421875,0.71875,0.7294921875,0.673828125,0.59375,0.4990234375,0.4326171875,0.4326171875,0.4990234375,0.59375,0.673828125,0.7333984375,0.7412109375,0.689453125,0.60546875,0.5341796875,0.5146484375,0.55078125,0.603515625,0.6552734375,0.6884765625,0.6904296875,0.666015625,0.6376953125,0.6220703125,0.6015625,0.552734375,0.4931640625,0.4580078125,0.4658203125,0.509765625,0.5703125,0.6337890625,0.697265625,0.7392578125,0.7451171875,0.720703125,0.689453125,0.673828125,0.6689453125,0.6826171875,0.6953125,0.68359375,0.6396484375,0.572265625,0.5,0.4306640625,0.3876953125,0.3935546875,0.4521484375,0.5341796875,0.5986328125,0.6220703125,0.6318359375,0.6396484375,0.6455078125,0.650390625,0.6552734375,0.6630859375,0.673828125,0.6767578125,0.6484375,0.587890625,0.5146484375,0.4541015625,0.42578125,0.4287109375,0.4365234375,0.431640625,0.41015625,0.37890625,0.34765625,0.3291015625,0.3251953125,0.333984375,0.3759765625,0.453125,0.5458984375,0.623046875,0.6650390625,0.673828125,0.6591796875,0.59375,0.490234375,0.3896484375,0.3330078125,0.3349609375,0.376953125,0.4326171875,0.5,0.5673828125,0.619140625,0.6494140625,0.6630859375,0.673828125,0.66796875,0.6064453125,0.5048828125,0.41015625,0.3662109375,0.384765625,0.4482421875,0.5078125,0.5185546875,0.478515625,0.41796875,0.376953125,0.3876953125,0.4482421875,0.5302734375,0.63671875,0.7265625,0.75390625,0.7099609375,0.62890625,0.55078125,0.47265625,0.384765625,0.326171875,0.330078125,0.39453125,0.4814453125,0.55078125,0.6171875,0.6826171875,0.7080078125,0.6669921875,0.5693359375,0.4599609375,0.376953125,0.2978515625,0.203125,0.1328125,0.1240234375,0.1767578125,0.2568359375,0.3251953125,0.390625,0.4658203125,0.53125,0.5703125,0.5791015625,0.5732421875,0.5703125,0.57421875,0.5859375,0.5927734375,0.5771484375,0.5361328125,0.4814453125,0.4287109375,0.388671875,0.388671875,0.4296875,0.482421875,0.5126953125,0.5,0.4482421875,0.390625,0.361328125,0.380859375,0.4482421875,0.5341796875,0.5986328125,0.6220703125,0.634765625,0.6484375,0.6455078125,0.611328125,0.55078125,0.484375,0.4287109375,0.38671875,0.384765625,0.4375,0.5283203125,0.619140625,0.6708984375,0.673828125,0.66015625,0.640625,0.619140625,0.60546875,0.6044921875,0.611328125,0.6220703125,0.6171875,0.5595703125,0.46484375,0.3798828125,0.341796875,0.365234375,0.4287109375,0.5048828125,0.5869140625,0.650390625,0.67578125,0.6630859375,0.6376953125,0.6220703125,0.6142578125,0.619140625,0.63671875,0.6591796875,0.67578125,0.6806640625,0.673828125,0.6533203125,0.6015625,0.5341796875,0.484375,0.474609375,0.5029296875,0.55078125,0.595703125,0.611328125,0.5986328125,0.57421875,0.5615234375,0.5771484375,0.6220703125,0.6728515625,0.7099609375,0.69921875,0.625,0.509765625,0.3994140625,0.3251953125,0.2744140625,0.265625,0.2998046875,0.3515625,0.3857421875,0.376953125,0.3251953125,0.2568359375,0.1767578125,0.1240234375,0.1328125,0.203125,0.2978515625,0.376953125,0.4541015625,0.5361328125,0.587890625,0.5791015625,0.515625,0.4365234375,0.376953125,0.3271484375,0.2900390625,0.28515625,0.3154296875,0.3671875,0.41015625,0.4287109375,0.4423828125,0.466796875,0.5,0.533203125,0.556640625,0.568359375,0.5703125,0.5673828125,0.5498046875,0.5146484375,0.638671875,0.650390625,0.6220703125,0.560546875,0.4892578125,0.431640625,0.431640625,0.4921875,0.576171875,0.63671875,0.63671875,0.5791015625,0.5087890625,0.455078125,0.4384765625,0.46484375,0.513671875,0.5517578125,0.5595703125,0.564453125,0.58984375,0.61328125,0.6103515625,0.5693359375,0.501953125,0.4296875,0.369140625,0.3564453125,0.3935546875,0.4501953125,0.4892578125,0.478515625,0.419921875,0.34375,0.2587890625,0.2080078125,0.2255859375,0.306640625,0.408203125,0.4892578125,0.5498046875,0.5625,0.52734375,0.4716796875,0.4365234375,0.44921875,0.509765625,0.58984375,0.6884765625,0.763671875,0.775390625,0.720703125,0.634765625,0.5595703125,0.48046875,0.375,0.283203125,0.2509765625,0.2880859375,0.365234375,0.439453125,0.5107421875,0.578125,0.62109375,0.626953125,0.6064453125,0.583984375,0.5791015625,0.580078125,0.5791015625,0.5751953125,0.5693359375,0.5634765625,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.560546875,0.5625,0.5654296875,0.5673828125,0.5693359375,0.5771484375,0.603515625,0.6259765625,0.619140625,0.5732421875,0.5029296875,0.4296875,0.37109375,0.369140625,0.4248046875,0.50390625,0.5595703125,0.5576171875,0.5,0.41796875,0.3154296875,0.232421875,0.2119140625,0.2607421875,0.34375,0.419921875,0.5009765625,0.611328125,0.7109375,0.751953125,0.7236328125,0.6513671875,0.5791015625,0.5087890625,0.439453125,0.3916015625,0.3779296875,0.3935546875,0.4140625,0.419921875,0.4296875,0.47265625,0.5283203125,0.5615234375,0.55078125,0.4990234375,0.4296875,0.359375,0.306640625,0.2919921875,0.3212890625,0.375,0.41796875,0.4296875,0.421875,0.380859375,0.326171875,0.2939453125,0.302734375,0.3525390625,0.419921875,0.4912109375,0.5625,0.6103515625,0.623046875,0.6064453125,0.5849609375,0.5791015625,0.5751953125,0.5546875,0.5185546875,0.4755859375,0.4404296875,0.421875,0.419921875,0.421875,0.4228515625,0.4228515625,0.421875,0.4208984375,0.419921875,0.419921875,0.4228515625,0.4404296875,0.470703125,0.5078125,0.5390625,0.5556640625,0.5595703125,0.5458984375,0.48828125,0.4052734375,0.3388671875,0.3203125,0.3544921875,0.419921875,0.5009765625,0.6083984375,0.7041015625,0.740234375,0.7060546875,0.6318359375,0.5595703125,0.4814453125,0.3818359375,0.3017578125,0.2822265625,0.3310546875,0.4130859375,0.4892578125,0.5595703125,0.619140625,0.6484375,0.6396484375,0.60546875,0.5751953125,0.5693359375,0.5595703125,0.5146484375,0.4501953125,0.404296875,0.4033203125,0.4443359375,0.509765625,0.583984375,0.6630859375,0.7080078125,0.685546875,0.6015625,0.5,0.419921875,0.36328125,0.365234375,0.42578125,0.5087890625,0.568359375,0.5673828125,0.509765625,0.44140625,0.396484375,0.3974609375,0.4453125,0.5146484375,0.56640625,0.5791015625,0.5703125,0.5283203125,0.47265625,0.4365234375,0.4443359375,0.4921875,0.5595703125,0.615234375,0.611328125,0.544921875,0.4541015625,0.3876953125,0.3837890625,0.439453125,0.5185546875,0.6171875,0.693359375,0.7060546875,0.65234375,0.56640625,0.4892578125,0.43359375,0.4345703125,0.4951171875,0.5791015625,0.6376953125,0.63671875,0.5791015625,0.4990234375,0.4052734375,0.3388671875,0.3388671875,0.4052734375,0.4990234375,0.5791015625,0.6376953125,0.6416015625,0.5888671875,0.5107421875,0.455078125,0.4541015625,0.509765625,0.5771484375,0.6357421875,0.6630859375,0.650390625,0.6123046875,0.5791015625,0.5693359375,0.5576171875,0.5146484375,0.4599609375,0.4287109375,0.4404296875,0.4912109375,0.5595703125,0.6279296875,0.6826171875,0.701171875,0.677734375,0.6298828125,0.58984375,0.5791015625,0.5859375,0.6162109375,0.65234375,0.662109375,0.6318359375,0.5712890625,0.5,0.4306640625,0.3857421875,0.3876953125,0.435546875,0.5048828125,0.5556640625,0.5693359375,0.5712890625,0.572265625,0.5732421875,0.5751953125,0.576171875,0.5771484375,0.5791015625,0.5771484375,0.560546875,0.5283203125,0.490234375,0.4580078125,0.44140625,0.439453125,0.4404296875,0.439453125,0.435546875,0.4296875,0.423828125,0.4208984375,0.419921875,0.423828125,0.4423828125,0.478515625,0.5205078125,0.556640625,0.5751953125,0.5791015625,0.56640625,0.5087890625,0.423828125,0.35546875,0.3349609375,0.3671875,0.4296875,0.5,0.56640625,0.611328125,0.62109375,0.6044921875,0.583984375,0.5791015625,0.568359375,0.517578125,0.4443359375,0.3896484375,0.3818359375,0.421875,0.4892578125,0.5498046875,0.5595703125,0.51953125,0.458984375,0.4189453125,0.4296875,0.4892578125,0.5693359375,0.666015625,0.7373046875,0.7431640625,0.6806640625,0.5888671875,0.509765625,0.4296875,0.3369140625,0.271484375,0.2724609375,0.3388671875,0.431640625,0.509765625,0.5859375,0.6689453125,0.7177734375,0.697265625,0.6142578125,0.5107421875,0.4296875,0.349609375,0.255859375,0.1875,0.185546875,0.25,0.341796875,0.419921875,0.4912109375,0.5595703125,0.603515625,0.6103515625,0.58984375,0.5654296875,0.5595703125,0.56640625,0.5908203125,0.615234375,0.61328125,0.5732421875,0.5087890625,0.439453125,0.3837890625,0.380859375,0.431640625,0.5029296875,0.552734375,0.546875,0.4892578125,0.4228515625,0.380859375,0.3837890625,0.4345703125,0.5048828125,0.5556640625,0.5693359375,0.5771484375,0.6025390625,0.625,0.619140625,0.576171875,0.509765625,0.439453125,0.376953125,0.3447265625,0.3642578125,0.4306640625,0.5126953125,0.568359375,0.5791015625,0.5771484375,0.57421875,0.5703125,0.5673828125,0.56640625,0.5673828125,0.5693359375,0.5576171875,0.501953125,0.419921875,0.3544921875,0.337890625,0.373046875,0.439453125,0.5126953125,0.58203125,0.625,0.6298828125,0.60546875,0.578125,0.5693359375,0.568359375,0.5693359375,0.572265625,0.576171875,0.5791015625,0.580078125,0.5791015625,0.56640625,0.5166015625,0.4501953125,0.4033203125,0.40234375,0.4443359375,0.509765625,0.568359375,0.5849609375,0.560546875,0.5185546875,0.4931640625,0.5107421875,0.5693359375,0.6416015625,0.71484375,0.74609375,0.70703125,0.6103515625,0.5009765625,0.419921875,0.361328125,0.3505859375,0.3896484375,0.44921875,0.48828125,0.478515625,0.419921875,0.341796875,0.25,0.185546875,0.1875,0.255859375,0.349609375,0.4296875,0.5087890625,0.6015625,0.6650390625,0.6640625,0.59765625,0.505859375,0.4296875,0.36328125,0.3134765625,0.3017578125,0.3330078125,0.3857421875,0.4287109375,0.439453125,0.4443359375,0.4599609375,0.4873046875,0.517578125,0.54296875,0.556640625,0.5595703125,0.556640625,0.5419921875,0.513671875,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.552734375,0.6064453125,0.6142578125,0.5751953125,0.509765625,0.44921875,0.4267578125,0.4443359375,0.4794921875,0.4990234375,0.478515625,0.419921875,0.353515625,0.3076171875,0.30078125,0.3349609375,0.390625,0.431640625,0.439453125,0.4501953125,0.5048828125,0.5830078125,0.6455078125,0.66015625,0.6240234375,0.5595703125,0.5009765625,0.490234375,0.529296875,0.5888671875,0.6279296875,0.6181640625,0.5595703125,0.48046875,0.380859375,0.3037109375,0.2900390625,0.34375,0.4306640625,0.509765625,0.5693359375,0.578125,0.53515625,0.4697265625,0.4248046875,0.431640625,0.4892578125,0.5654296875,0.6494140625,0.69921875,0.6806640625,0.599609375,0.4990234375,0.419921875,0.3447265625,0.2685546875,0.2333984375,0.26953125,0.3662109375,0.4765625,0.5595703125,0.6259765625,0.6640625,0.6494140625,0.5859375,0.5029296875,0.4443359375,0.4296875,0.427734375,0.4267578125,0.427734375,0.4306640625,0.4345703125,0.4375,0.439453125,0.44140625,0.4423828125,0.4423828125,0.4423828125,0.4404296875,0.4404296875,0.439453125,0.4521484375,0.5078125,0.587890625,0.650390625,0.6669921875,0.6328125,0.5693359375,0.5107421875,0.494140625,0.51953125,0.560546875,0.58203125,0.5615234375,0.5,0.421875,0.3369140625,0.2880859375,0.3095703125,0.3935546875,0.498046875,0.5791015625,0.6552734375,0.7314453125,0.765625,0.728515625,0.630859375,0.521484375,0.439453125,0.3740234375,0.337890625,0.3515625,0.4130859375,0.4912109375,0.546875,0.5595703125,0.5693359375,0.6103515625,0.6630859375,0.6943359375,0.6845703125,0.6357421875,0.5693359375,0.5029296875,0.455078125,0.4462890625,0.478515625,0.53125,0.5712890625,0.5791015625,0.568359375,0.5263671875,0.4736328125,0.4443359375,0.458984375,0.5107421875,0.5791015625,0.64453125,0.6796875,0.6630859375,0.5966796875,0.513671875,0.4541015625,0.439453125,0.4404296875,0.453125,0.478515625,0.509765625,0.5380859375,0.5546875,0.5595703125,0.560546875,0.560546875,0.5595703125,0.55859375,0.5576171875,0.5576171875,0.5595703125,0.55859375,0.544921875,0.5185546875,0.486328125,0.4580078125,0.4423828125,0.439453125,0.43359375,0.4091796875,0.38671875,0.392578125,0.43359375,0.5,0.5693359375,0.642578125,0.71875,0.755859375,0.72265625,0.6298828125,0.5224609375,0.439453125,0.361328125,0.2734375,0.2177734375,0.23046875,0.30859375,0.408203125,0.4892578125,0.55859375,0.6044921875,0.60546875,0.5595703125,0.4931640625,0.4423828125,0.4296875,0.419921875,0.3837890625,0.34375,0.330078125,0.357421875,0.41796875,0.4892578125,0.5712890625,0.673828125,0.7578125,0.7802734375,0.734375,0.6533203125,0.5791015625,0.5205078125,0.5029296875,0.52734375,0.5673828125,0.58984375,0.5693359375,0.509765625,0.439453125,0.376953125,0.34375,0.3505859375,0.3818359375,0.412109375,0.419921875,0.41015625,0.369140625,0.318359375,0.291015625,0.3056640625,0.359375,0.4296875,0.4931640625,0.5205078125,0.51171875,0.4873046875,0.478515625,0.505859375,0.5693359375,0.6474609375,0.7314453125,0.7802734375,0.759765625,0.6748046875,0.5712890625,0.4892578125,0.4287109375,0.41015625,0.4375,0.482421875,0.5087890625,0.4912109375,0.4296875,0.349609375,0.255859375,0.1875,0.185546875,0.25,0.341796875,0.419921875,0.48046875,0.5029296875,0.484375,0.4501953125,0.4306640625,0.4501953125,0.509765625,0.57421875,0.61328125,0.60546875,0.552734375,0.482421875,0.431640625,0.419921875,0.41015625,0.3720703125,0.32421875,0.2998046875,0.3173828125,0.37109375,0.439453125,0.5078125,0.5576171875,0.5693359375,0.5390625,0.4873046875,0.4482421875,0.439453125,0.4521484375,0.5,0.5654296875,0.609375,0.6083984375,0.564453125,0.5,0.431640625,0.3740234375,0.3466796875,0.3583984375,0.3935546875,0.423828125,0.4296875,0.4287109375,0.427734375,0.4287109375,0.4306640625,0.431640625,0.4306640625,0.4296875,0.4306640625,0.4453125,0.474609375,0.5087890625,0.5390625,0.5556640625,0.5595703125,0.5595703125,0.5625,0.56640625,0.572265625,0.576171875,0.5791015625,0.5791015625,0.5751953125,0.5546875,0.5185546875,0.4755859375,0.4404296875,0.421875,0.419921875,0.4150390625,0.392578125,0.373046875,0.380859375,0.4267578125,0.49609375,0.5693359375,0.6357421875,0.6708984375,0.65234375,0.5830078125,0.49609375,0.4345703125,0.419921875,0.41015625,0.3779296875,0.341796875,0.33203125,0.361328125,0.4208984375,0.4892578125,0.546875,0.55859375,0.5234375,0.4697265625,0.4365234375,0.4501953125,0.509765625,0.587890625,0.6806640625,0.7470703125,0.748046875,0.6826171875,0.5888671875,0.509765625,0.4296875,0.3369140625,0.271484375,0.2724609375,0.3388671875,0.431640625,0.509765625,0.5888671875,0.689453125,0.7705078125,0.7880859375,0.7392578125,0.6552734375,0.5791015625,0.5009765625,0.4091796875,0.3427734375,0.3408203125,0.4033203125,0.4931640625,0.5693359375,0.6328125,0.6669921875,0.650390625,0.587890625,0.5078125,0.4521484375,0.439453125,0.4521484375,0.505859375,0.583984375,0.64453125,0.658203125,0.623046875,0.5595703125,0.5009765625,0.486328125,0.5146484375,0.5595703125,0.5869140625,0.5693359375,0.509765625,0.439453125,0.3798828125,0.3505859375,0.359375,0.3935546875,0.423828125,0.4296875,0.44140625,0.4990234375,0.583984375,0.654296875,0.67578125,0.6435546875,0.5791015625,0.5078125,0.4365234375,0.388671875,0.3759765625,0.392578125,0.4140625,0.419921875,0.419921875,0.4189453125,0.4169921875,0.4169921875,0.4169921875,0.41796875,0.419921875,0.4150390625,0.3935546875,0.3740234375,0.380859375,0.423828125,0.490234375,0.5595703125,0.6220703125,0.654296875,0.634765625,0.568359375,0.486328125,0.4306640625,0.419921875,0.4208984375,0.421875,0.4208984375,0.4189453125,0.41796875,0.41796875,0.419921875,0.4140625,0.384765625,0.3515625,0.34375,0.373046875,0.431640625,0.5,0.5546875,0.5546875,0.498046875,0.419921875,0.3671875,0.37109375,0.4296875,0.5126953125,0.6240234375,0.72265625,0.76171875,0.728515625,0.654296875,0.5791015625,0.5205078125,0.5078125,0.5419921875,0.5966796875,0.630859375,0.6181640625,0.5595703125,0.4814453125,0.392578125,0.33203125,0.3369140625,0.40625,0.5009765625,0.5791015625,0.6572265625,0.7490234375,0.8134765625,0.8115234375,0.7431640625,0.6494140625,0.5693359375,0.5,0.447265625,0.4326171875,0.4609375,0.51171875,0.55078125,0.5595703125,0.5546875,0.5361328125,0.505859375,0.4716796875,0.4443359375,0.4306640625,0.4296875,0.4345703125,0.451171875,0.4814453125,0.478515625,0.5693359375,0.615234375,0.6044921875,0.55078125,0.4931640625,0.451171875,0.4267578125,0.4150390625,0.4013671875,0.3720703125,0.3251953125,0.2802734375,0.26171875,0.2822265625,0.3359375,0.39453125,0.4296875,0.4287109375,0.4306640625,0.4755859375,0.55078125,0.619140625,0.646484375,0.625,0.5703125,0.5185546875,0.509765625,0.5439453125,0.595703125,0.6298828125,0.62109375,0.5703125,0.5,0.4111328125,0.341796875,0.3330078125,0.3876953125,0.4736328125,0.55078125,0.6103515625,0.6142578125,0.55859375,0.4755859375,0.41015625,0.400390625,0.4482421875,0.513671875,0.5791015625,0.6083984375,0.576171875,0.4921875,0.396484375,0.3251953125,0.26171875,0.205078125,0.1943359375,0.2548828125,0.3681640625,0.486328125,0.5703125,0.63671875,0.671875,0.6494140625,0.5732421875,0.474609375,0.40234375,0.376953125,0.3671875,0.359375,0.361328125,0.375,0.396484375,0.416015625,0.4287109375,0.439453125,0.4462890625,0.4482421875,0.4443359375,0.4365234375,0.4306640625,0.4287109375,0.4404296875,0.4931640625,0.57421875,0.6474609375,0.6806640625,0.6669921875,0.6220703125,0.5791015625,0.5693359375,0.5859375,0.60546875,0.6025390625,0.5654296875,0.5,0.423828125,0.3505859375,0.3232421875,0.369140625,0.474609375,0.58984375,0.673828125,0.74609375,0.8046875,0.80859375,0.740234375,0.6201171875,0.50390625,0.4287109375,0.373046875,0.3447265625,0.365234375,0.4287109375,0.505859375,0.55859375,0.5703125,0.578125,0.6142578125,0.6640625,0.69921875,0.701171875,0.669921875,0.6220703125,0.5751953125,0.5498046875,0.5595703125,0.599609375,0.646484375,0.6748046875,0.673828125,0.654296875,0.611328125,0.5634765625,0.5419921875,0.5615234375,0.6123046875,0.673828125,0.728515625,0.75,0.71484375,0.6279296875,0.5263671875,0.453125,0.4287109375,0.4208984375,0.423828125,0.4462890625,0.4833984375,0.5244140625,0.5556640625,0.5703125,0.5791015625,0.580078125,0.57421875,0.5654296875,0.5595703125,0.5615234375,0.5703125,0.5771484375,0.5673828125,0.5380859375,0.49609375,0.45703125,0.43359375,0.4287109375,0.4267578125,0.419921875,0.4248046875,0.4541015625,0.5068359375,0.5673828125,0.6220703125,0.6767578125,0.732421875,0.751953125,0.7099609375,0.6162109375,0.5107421875,0.4287109375,0.349609375,0.2578125,0.1953125,0.2001953125,0.271484375,0.3671875,0.4482421875,0.517578125,0.5673828125,0.572265625,0.5283203125,0.45703125,0.3994140625,0.376953125,0.359375,0.318359375,0.2783203125,0.271484375,0.3076171875,0.375,0.4482421875,0.5302734375,0.6396484375,0.7412109375,0.7919921875,0.779296875,0.7275390625,0.673828125,0.6298828125,0.61328125,0.6220703125,0.6376953125,0.63671875,0.6064453125,0.55078125,0.486328125,0.4140625,0.3525390625,0.318359375,0.314453125,0.322265625,0.3251953125,0.31640625,0.28125,0.2392578125,0.22265625,0.248046875,0.306640625,0.376953125,0.4423828125,0.4833984375,0.498046875,0.5009765625,0.515625,0.556640625,0.6220703125,0.697265625,0.7705078125,0.7978515625,0.751953125,0.646484375,0.53125,0.4482421875,0.38671875,0.3671875,0.3916015625,0.43359375,0.4580078125,0.4384765625,0.376953125,0.2978515625,0.203125,0.1328125,0.1240234375,0.1767578125,0.2568359375,0.3251953125,0.3837890625,0.42578125,0.4501953125,0.4619140625,0.4755859375,0.5048828125,0.55078125,0.595703125,0.60546875,0.564453125,0.4833984375,0.39453125,0.337890625,0.3251953125,0.3193359375,0.296875,0.2734375,0.275390625,0.3095703125,0.3671875,0.4287109375,0.4873046875,0.5263671875,0.529296875,0.4990234375,0.455078125,0.427734375,0.4287109375,0.4482421875,0.4931640625,0.548828125,0.5849609375,0.583984375,0.548828125,0.5,0.4482421875,0.40234375,0.373046875,0.3671875,0.3759765625,0.3828125,0.376953125,0.369140625,0.3671875,0.373046875,0.3818359375,0.3876953125,0.3857421875,0.376953125,0.3720703125,0.3876953125,0.4287109375,0.484375,0.5341796875,0.564453125,0.5703125,0.572265625,0.5849609375,0.6083984375,0.6357421875,0.658203125,0.6708984375,0.673828125,0.6640625,0.615234375,0.5302734375,0.43359375,0.3583984375,0.3232421875,0.3251953125,0.3330078125,0.3349609375,0.3486328125,0.392578125,0.4638671875,0.546875,0.6220703125,0.685546875,0.708984375,0.6630859375,0.5595703125,0.4375,0.3525390625,0.3251953125,0.3115234375,0.2890625,0.2763671875,0.291015625,0.3359375,0.3935546875,0.4482421875,0.4912109375,0.505859375,0.4921875,0.4716796875,0.46875,0.49609375,0.55078125,0.62109375,0.70703125,0.7724609375,0.7763671875,0.7177734375,0.6298828125,0.55078125,0.47265625,0.384765625,0.326171875,0.330078125,0.39453125,0.4814453125,0.55078125,0.6220703125,0.7177734375,0.8017578125,0.833984375,0.8046875,0.73828125,0.673828125,0.60546875,0.5244140625,0.4638671875,0.4541015625,0.498046875,0.564453125,0.6220703125,0.6669921875,0.6806640625,0.6474609375,0.57421875,0.4931640625,0.4404296875,0.4287109375,0.439453125,0.486328125,0.5556640625,0.6142578125,0.63671875,0.6162109375,0.5703125,0.5283203125,0.5244140625,0.556640625,0.599609375,0.6220703125,0.6044921875,0.55078125,0.4892578125,0.4287109375,0.38671875,0.37109375,0.3759765625,0.3828125,0.376953125,0.3828125,0.4462890625,0.556640625,0.6650390625,0.7275390625,0.724609375,0.673828125,0.60546875,0.5185546875,0.4296875,0.36328125,0.33203125,0.3251953125,0.3251953125,0.32421875,0.318359375,0.310546875,0.3056640625,0.3076171875,0.3154296875,0.3251953125,0.333984375,0.341796875,0.3603515625,0.3994140625,0.455078125,0.5166015625,0.5703125,0.6123046875,0.6142578125,0.5615234375,0.470703125,0.3798828125,0.328125,0.3251953125,0.333984375,0.3359375,0.330078125,0.3212890625,0.3154296875,0.3173828125,0.3251953125,0.3330078125,0.33203125,0.3349609375,0.3544921875,0.39453125,0.447265625,0.5,0.5361328125,0.5166015625,0.4453125,0.361328125,0.3095703125,0.3173828125,0.376953125,0.462890625,0.5869140625,0.7119140625,0.78515625,0.787109375,0.736328125,0.673828125,0.6201171875,0.59765625,0.609375,0.6337890625,0.6455078125,0.6240234375,0.5703125,0.50390625,0.4365234375,0.40234375,0.4296875,0.509765625,0.6025390625,0.673828125,0.7421875,0.822265625,0.875,0.8662109375,0.7958984375,0.701171875,0.6220703125,0.5517578125,0.5,0.482421875,0.50390625,0.5439453125,0.5712890625,0.5703125,0.5537109375,0.5166015625,0.4638671875,0.4130859375,0.3798828125,0.3701171875,0.376953125,0.3916015625,0.4228515625,0.4716796875,0.40234375,0.5244140625,0.61328125,0.63671875,0.6044921875,0.5546875,0.4912109375,0.419921875,0.35546875,0.30859375,0.279296875,0.2587890625,0.2490234375,0.2763671875,0.3388671875,0.4140625,0.4697265625,0.4873046875,0.46875,0.451171875,0.4658203125,0.5078125,0.5546875,0.5791015625,0.5693359375,0.5302734375,0.4921875,0.4853515625,0.5107421875,0.548828125,0.57421875,0.5673828125,0.5302734375,0.4775390625,0.412109375,0.3662109375,0.375,0.4384765625,0.5263671875,0.6044921875,0.6630859375,0.6640625,0.5966796875,0.4912109375,0.3994140625,0.365234375,0.39453125,0.44140625,0.484375,0.4970703125,0.4609375,0.388671875,0.3125,0.2587890625,0.2109375,0.1689453125,0.16796875,0.228515625,0.3359375,0.447265625,0.5302734375,0.599609375,0.6474609375,0.642578125,0.580078125,0.484375,0.4033203125,0.3642578125,0.3369140625,0.3154296875,0.314453125,0.341796875,0.3896484375,0.4375,0.46875,0.4951171875,0.513671875,0.5185546875,0.5078125,0.48828125,0.47265625,0.46875,0.4755859375,0.5068359375,0.5576171875,0.609375,0.6435546875,0.6494140625,0.634765625,0.623046875,0.634765625,0.654296875,0.6572265625,0.6279296875,0.5693359375,0.5,0.42578125,0.3603515625,0.34765625,0.4111328125,0.53125,0.654296875,0.740234375,0.8095703125,0.85546875,0.8427734375,0.759765625,0.6376953125,0.529296875,0.46875,0.4267578125,0.400390625,0.40625,0.44140625,0.48828125,0.5224609375,0.5302734375,0.53515625,0.55859375,0.5966796875,0.6318359375,0.65234375,0.6513671875,0.634765625,0.623046875,0.63671875,0.6767578125,0.7236328125,0.755859375,0.7607421875,0.740234375,0.7080078125,0.662109375,0.6240234375,0.6162109375,0.6435546875,0.6923828125,0.740234375,0.78125,0.796875,0.7646484375,0.685546875,0.5859375,0.5078125,0.46875,0.44140625,0.4140625,0.4033203125,0.4189453125,0.45703125,0.4990234375,0.5302734375,0.5517578125,0.5556640625,0.541015625,0.5185546875,0.50390625,0.5078125,0.5302734375,0.5537109375,0.56640625,0.5576171875,0.5302734375,0.4970703125,0.474609375,0.46875,0.470703125,0.4794921875,0.501953125,0.5380859375,0.5791015625,0.6123046875,0.634765625,0.6591796875,0.6953125,0.71484375,0.693359375,0.62890625,0.5458984375,0.46875,0.3876953125,0.2841796875,0.201171875,0.181640625,0.2314453125,0.31640625,0.39453125,0.466796875,0.53125,0.5576171875,0.5302734375,0.46484375,0.400390625,0.3642578125,0.3291015625,0.271484375,0.220703125,0.208984375,0.2490234375,0.3203125,0.39453125,0.474609375,0.580078125,0.6845703125,0.75390625,0.7744140625,0.7607421875,0.740234375,0.724609375,0.720703125,0.720703125,0.7119140625,0.6875,0.6494140625,0.6044921875,0.552734375,0.4775390625,0.3916015625,0.3193359375,0.2763671875,0.2607421875,0.2587890625,0.2509765625,0.22265625,0.1923828125,0.189453125,0.2265625,0.2919921875,0.3642578125,0.4296875,0.4736328125,0.494140625,0.5048828125,0.525390625,0.5693359375,0.634765625,0.708984375,0.7744140625,0.787109375,0.7236328125,0.603515625,0.4794921875,0.39453125,0.333984375,0.3193359375,0.3525390625,0.4052734375,0.4384765625,0.4248046875,0.3642578125,0.28515625,0.1943359375,0.123046875,0.1064453125,0.1455078125,0.20703125,0.2587890625,0.30859375,0.3720703125,0.4443359375,0.5078125,0.5546875,0.583984375,0.6044921875,0.615234375,0.5869140625,0.513671875,0.4140625,0.322265625,0.26953125,0.2587890625,0.2578125,0.2568359375,0.26953125,0.306640625,0.361328125,0.419921875,0.46875,0.509765625,0.52734375,0.5166015625,0.4853515625,0.45703125,0.4501953125,0.46875,0.498046875,0.5322265625,0.5576171875,0.5625,0.546875,0.5205078125,0.5,0.4814453125,0.466796875,0.4521484375,0.435546875,0.4150390625,0.390625,0.3642578125,0.341796875,0.337890625,0.3525390625,0.375,0.3896484375,0.3857421875,0.3642578125,0.341796875,0.3427734375,0.375,0.4306640625,0.4873046875,0.5224609375,0.5302734375,0.53515625,0.560546875,0.607421875,0.6630859375,0.7099609375,0.7353515625,0.740234375,0.7255859375,0.6513671875,0.5244140625,0.3857421875,0.283203125,0.244140625,0.2587890625,0.283203125,0.306640625,0.341796875,0.3994140625,0.4775390625,0.560546875,0.634765625,0.69921875,0.7216796875,0.6708984375,0.5517578125,0.41015625,0.3037109375,0.2587890625,0.2333984375,0.2197265625,0.2314453125,0.2705078125,0.3232421875,0.369140625,0.39453125,0.4111328125,0.4248046875,0.44140625,0.4697265625,0.5107421875,0.55859375,0.6044921875,0.6591796875,0.7333984375,0.794921875,0.806640625,0.759765625,0.6806640625,0.6044921875,0.5283203125,0.4501953125,0.40234375,0.4140625,0.4755859375,0.55078125,0.6044921875,0.658203125,0.734375,0.806640625,0.8427734375,0.830078125,0.787109375,0.740234375,0.6904296875,0.6337890625,0.587890625,0.5712890625,0.5849609375,0.6123046875,0.634765625,0.6494140625,0.6435546875,0.609375,0.5576171875,0.5068359375,0.4755859375,0.46875,0.4736328125,0.4912109375,0.51953125,0.54296875,0.5537109375,0.546875,0.5302734375,0.51953125,0.541015625,0.587890625,0.634765625,0.6572265625,0.64453125,0.6044921875,0.55859375,0.51171875,0.46875,0.435546875,0.4111328125,0.388671875,0.3642578125,0.353515625,0.40625,0.5185546875,0.6484375,0.744140625,0.771484375,0.740234375,0.6845703125,0.5927734375,0.4775390625,0.369140625,0.2958984375,0.263671875,0.2587890625,0.2548828125,0.240234375,0.220703125,0.208984375,0.2138671875,0.2333984375,0.2587890625,0.2880859375,0.3291015625,0.380859375,0.4326171875,0.4775390625,0.5087890625,0.5302734375,0.5380859375,0.50390625,0.427734375,0.3369140625,0.2666015625,0.2421875,0.2587890625,0.28125,0.28515625,0.2705078125,0.248046875,0.2333984375,0.2373046875,0.2587890625,0.287109375,0.3251953125,0.369140625,0.4140625,0.451171875,0.4794921875,0.5,0.5048828125,0.4609375,0.3798828125,0.306640625,0.275390625,0.2998046875,0.3642578125,0.44921875,0.5732421875,0.7041015625,0.7919921875,0.814453125,0.78515625,0.740234375,0.697265625,0.6650390625,0.6435546875,0.6259765625,0.6044921875,0.572265625,0.5302734375,0.484375,0.4501953125,0.455078125,0.5107421875,0.599609375,0.6845703125,0.740234375,0.7919921875,0.853515625,0.892578125,0.8759765625,0.8046875,0.7138671875,0.634765625,0.56640625,0.5166015625,0.5,0.513671875,0.5380859375,0.5478515625,0.5302734375,0.4970703125,0.4423828125,0.3798828125,0.3369140625,0.32421875,0.3388671875,0.3642578125,0.392578125,0.4287109375,0.474609375,0.3505859375,0.48046875,0.5927734375,0.6455078125,0.634765625,0.59765625,0.521484375,0.4189453125,0.3232421875,0.26171875,0.2451171875,0.2587890625,0.2900390625,0.36328125,0.4609375,0.5439453125,0.58203125,0.5703125,0.5302734375,0.48828125,0.462890625,0.4609375,0.474609375,0.490234375,0.490234375,0.46875,0.447265625,0.443359375,0.4580078125,0.48046875,0.4951171875,0.4912109375,0.46875,0.4375,0.396484375,0.375,0.3994140625,0.4697265625,0.5576171875,0.634765625,0.6943359375,0.69921875,0.6318359375,0.5185546875,0.41015625,0.3544921875,0.3642578125,0.390625,0.4130859375,0.4140625,0.3857421875,0.337890625,0.291015625,0.2587890625,0.228515625,0.1923828125,0.181640625,0.2177734375,0.2978515625,0.390625,0.46875,0.5439453125,0.61328125,0.6435546875,0.6123046875,0.5341796875,0.4501953125,0.39453125,0.3466796875,0.3037109375,0.2919921875,0.328125,0.400390625,0.4765625,0.5302734375,0.57421875,0.607421875,0.615234375,0.5966796875,0.5625,0.5361328125,0.5302734375,0.529296875,0.52734375,0.529296875,0.541015625,0.5615234375,0.583984375,0.6044921875,0.630859375,0.673828125,0.70703125,0.701171875,0.650390625,0.57421875,0.5,0.42578125,0.3603515625,0.34765625,0.4111328125,0.53125,0.654296875,0.740234375,0.80859375,0.8505859375,0.8369140625,0.76171875,0.6572265625,0.5703125,0.5302734375,0.5029296875,0.4765625,0.4580078125,0.453125,0.458984375,0.466796875,0.46875,0.4697265625,0.4755859375,0.4912109375,0.5185546875,0.552734375,0.5830078125,0.6044921875,0.6328125,0.689453125,0.7568359375,0.8037109375,0.8115234375,0.783203125,0.740234375,0.6923828125,0.6435546875,0.6162109375,0.6240234375,0.662109375,0.7080078125,0.740234375,0.767578125,0.787109375,0.779296875,0.7314453125,0.65625,0.58203125,0.5302734375,0.478515625,0.4111328125,0.35546875,0.33984375,0.3681640625,0.419921875,0.46875,0.5068359375,0.513671875,0.48828125,0.4501953125,0.4248046875,0.431640625,0.46875,0.5146484375,0.5556640625,0.5771484375,0.57421875,0.5537109375,0.53515625,0.5302734375,0.5341796875,0.5546875,0.5849609375,0.61328125,0.6259765625,0.62109375,0.6044921875,0.5947265625,0.61328125,0.646484375,0.6650390625,0.6494140625,0.5986328125,0.5302734375,0.4462890625,0.33203125,0.228515625,0.1845703125,0.2138671875,0.2880859375,0.3642578125,0.4404296875,0.5234375,0.5771484375,0.57421875,0.5185546875,0.4482421875,0.39453125,0.33984375,0.2607421875,0.1923828125,0.1728515625,0.2138671875,0.2890625,0.3642578125,0.439453125,0.52734375,0.6103515625,0.6708984375,0.705078125,0.72265625,0.740234375,0.759765625,0.7763671875,0.775390625,0.7509765625,0.708984375,0.666015625,0.634765625,0.6005859375,0.53515625,0.447265625,0.3583984375,0.2939453125,0.263671875,0.2587890625,0.251953125,0.2265625,0.2041015625,0.208984375,0.2529296875,0.3212890625,0.39453125,0.458984375,0.4951171875,0.501953125,0.4970703125,0.50390625,0.5400390625,0.6044921875,0.6787109375,0.744140625,0.7568359375,0.693359375,0.572265625,0.44921875,0.3642578125,0.3046875,0.2978515625,0.3447265625,0.4140625,0.4609375,0.453125,0.39453125,0.3173828125,0.2333984375,0.1708984375,0.154296875,0.181640625,0.2265625,0.2587890625,0.2958984375,0.3720703125,0.474609375,0.5712890625,0.6318359375,0.6484375,0.634765625,0.607421875,0.5478515625,0.4609375,0.369140625,0.2998046875,0.2646484375,0.2587890625,0.26171875,0.279296875,0.3203125,0.3798828125,0.4453125,0.498046875,0.5302734375,0.548828125,0.5419921875,0.513671875,0.482421875,0.4716796875,0.4892578125,0.5302734375,0.5703125,0.5888671875,0.576171875,0.541015625,0.50390625,0.48828125,0.5,0.521484375,0.548828125,0.5634765625,0.546875,0.5009765625,0.443359375,0.39453125,0.3564453125,0.349609375,0.375,0.4140625,0.439453125,0.4326171875,0.39453125,0.3515625,0.328125,0.3359375,0.375,0.42578125,0.4609375,0.46875,0.4755859375,0.5087890625,0.568359375,0.640625,0.701171875,0.7333984375,0.740234375,0.72265625,0.6376953125,0.4970703125,0.3505859375,0.2509765625,0.2255859375,0.2587890625,0.30078125,0.3349609375,0.3662109375,0.408203125,0.46484375,0.533203125,0.6044921875,0.6728515625,0.708984375,0.6796875,0.5771484375,0.4375,0.3212890625,0.2587890625,0.2197265625,0.2109375,0.240234375,0.294921875,0.3486328125,0.3740234375,0.3642578125,0.3486328125,0.3515625,0.3896484375,0.4580078125,0.537109375,0.6005859375,0.634765625,0.6708984375,0.7314453125,0.7900390625,0.8095703125,0.7763671875,0.7080078125,0.634765625,0.5615234375,0.494140625,0.4609375,0.48046875,0.5380859375,0.599609375,0.634765625,0.6669921875,0.7138671875,0.76171875,0.7900390625,0.7890625,0.7666015625,0.740234375,0.7138671875,0.689453125,0.66796875,0.6513671875,0.6376953125,0.6220703125,0.6044921875,0.583984375,0.5615234375,0.541015625,0.529296875,0.52734375,0.529296875,0.5302734375,0.525390625,0.5078125,0.4794921875,0.4560546875,0.4453125,0.4521484375,0.46875,0.4951171875,0.544921875,0.6044921875,0.6513671875,0.669921875,0.6591796875,0.634765625,0.6103515625,0.587890625,0.5634765625,0.5302734375,0.4873046875,0.4404296875,0.39453125,0.3623046875,0.3857421875,0.474609375,0.5966796875,0.7021484375,0.7509765625,0.740234375,0.703125,0.6259765625,0.513671875,0.3974609375,0.3095703125,0.2666015625,0.2587890625,0.2529296875,0.2265625,0.1923828125,0.1728515625,0.181640625,0.21484375,0.2587890625,0.310546875,0.3798828125,0.44921875,0.494140625,0.50390625,0.4892578125,0.46875,0.439453125,0.3740234375,0.2900390625,0.22265625,0.1982421875,0.216796875,0.2587890625,0.296875,0.3037109375,0.2783203125,0.240234375,0.21484375,0.220703125,0.2587890625,0.3115234375,0.384765625,0.4609375,0.513671875,0.529296875,0.5185546875,0.5,0.46875,0.400390625,0.3203125,0.26953125,0.2734375,0.32421875,0.39453125,0.4755859375,0.5859375,0.6953125,0.767578125,0.787109375,0.767578125,0.740234375,0.7119140625,0.6748046875,0.62890625,0.580078125,0.5341796875,0.4970703125,0.46875,0.4462890625,0.4443359375,0.48046875,0.5517578125,0.63671875,0.7041015625,0.740234375,0.7724609375,0.8173828125,0.8447265625,0.828125,0.765625,0.681640625,0.6044921875,0.5380859375,0.4951171875,0.4853515625,0.5,0.5146484375,0.5068359375,0.46875,0.4169921875,0.3486328125,0.2900390625,0.26953125,0.294921875,0.345703125,0.39453125,0.4375,0.4697265625,0.4912109375,0.333984375,0.4423828125,0.552734375,0.6162109375,0.6220703125,0.59765625,0.5244140625,0.4189453125,0.3232421875,0.2744140625,0.28125,0.3251953125,0.3896484375,0.4921875,0.6015625,0.6708984375,0.67578125,0.630859375,0.5703125,0.5087890625,0.4521484375,0.41796875,0.41015625,0.4228515625,0.43359375,0.4287109375,0.419921875,0.4189453125,0.4248046875,0.43359375,0.439453125,0.4375,0.4287109375,0.4130859375,0.3876953125,0.375,0.400390625,0.4638671875,0.5458984375,0.6220703125,0.6845703125,0.701171875,0.65234375,0.552734375,0.4462890625,0.3828125,0.376953125,0.3876953125,0.39453125,0.3935546875,0.3798828125,0.3583984375,0.3388671875,0.3251953125,0.3076171875,0.271484375,0.2392578125,0.240234375,0.2841796875,0.35546875,0.4287109375,0.5078125,0.59765625,0.6611328125,0.662109375,0.6015625,0.5166015625,0.4482421875,0.3828125,0.31640625,0.287109375,0.3193359375,0.4033203125,0.4990234375,0.5703125,0.6298828125,0.6748046875,0.685546875,0.66015625,0.6142578125,0.578125,0.5703125,0.5625,0.5302734375,0.48828125,0.4619140625,0.466796875,0.501953125,0.55078125,0.609375,0.6826171875,0.7333984375,0.728515625,0.666015625,0.5771484375,0.5,0.423828125,0.3505859375,0.3232421875,0.369140625,0.474609375,0.58984375,0.673828125,0.7421875,0.7880859375,0.7861328125,0.732421875,0.654296875,0.5927734375,0.5703125,0.556640625,0.5322265625,0.4990234375,0.4658203125,0.4423828125,0.4306640625,0.4287109375,0.4248046875,0.41015625,0.3994140625,0.41015625,0.4462890625,0.4990234375,0.55078125,0.6123046875,0.7001953125,0.7822265625,0.8193359375,0.796875,0.7373046875,0.673828125,0.6123046875,0.5615234375,0.5419921875,0.5634765625,0.611328125,0.654296875,0.673828125,0.689453125,0.720703125,0.7451171875,0.7392578125,0.697265625,0.6337890625,0.5703125,0.4990234375,0.4013671875,0.3125,0.275390625,0.30078125,0.3642578125,0.4287109375,0.48046875,0.4892578125,0.455078125,0.4033203125,0.369140625,0.3779296875,0.4287109375,0.4921875,0.5537109375,0.5966796875,0.6083984375,0.59375,0.5751953125,0.5703125,0.5771484375,0.6044921875,0.6376953125,0.654296875,0.640625,0.6015625,0.55078125,0.51171875,0.5185546875,0.5673828125,0.6240234375,0.65234375,0.6318359375,0.5703125,0.4853515625,0.3681640625,0.2587890625,0.2080078125,0.2314453125,0.3017578125,0.376953125,0.45703125,0.5537109375,0.62890625,0.642578125,0.59375,0.515625,0.4482421875,0.376953125,0.28125,0.201171875,0.177734375,0.220703125,0.30078125,0.376953125,0.447265625,0.505859375,0.546875,0.5732421875,0.595703125,0.626953125,0.673828125,0.7236328125,0.759765625,0.765625,0.7353515625,0.68359375,0.6396484375,0.6220703125,0.6044921875,0.5615234375,0.4931640625,0.4189453125,0.361328125,0.3310546875,0.3251953125,0.318359375,0.2919921875,0.265625,0.267578125,0.3076171875,0.375,0.4482421875,0.509765625,0.533203125,0.5166015625,0.482421875,0.4658203125,0.4892578125,0.55078125,0.626953125,0.7001953125,0.7275390625,0.681640625,0.576171875,0.4609375,0.376953125,0.3193359375,0.3173828125,0.373046875,0.4521484375,0.5078125,0.505859375,0.4482421875,0.3740234375,0.30078125,0.251953125,0.24609375,0.2744140625,0.30859375,0.3251953125,0.349609375,0.4228515625,0.529296875,0.6240234375,0.6728515625,0.666015625,0.6220703125,0.5654296875,0.4921875,0.4169921875,0.3603515625,0.33203125,0.3251953125,0.3251953125,0.330078125,0.353515625,0.400390625,0.4609375,0.5166015625,0.5546875,0.5703125,0.5712890625,0.5439453125,0.5,0.4697265625,0.47265625,0.51171875,0.5703125,0.62109375,0.6279296875,0.5849609375,0.51953125,0.466796875,0.4599609375,0.5,0.556640625,0.623046875,0.6669921875,0.6572265625,0.5966796875,0.515625,0.4482421875,0.396484375,0.3876953125,0.421875,0.4736328125,0.5078125,0.4990234375,0.4482421875,0.3876953125,0.3408203125,0.3251953125,0.345703125,0.3876953125,0.4208984375,0.4287109375,0.4345703125,0.46484375,0.5185546875,0.5830078125,0.6376953125,0.66796875,0.673828125,0.6572265625,0.5791015625,0.455078125,0.337890625,0.271484375,0.2744140625,0.3251953125,0.380859375,0.4111328125,0.4189453125,0.4228515625,0.4404296875,0.484375,0.55078125,0.6240234375,0.6845703125,0.693359375,0.6298828125,0.5146484375,0.400390625,0.3251953125,0.2744140625,0.265625,0.3037109375,0.3642578125,0.412109375,0.4169921875,0.376953125,0.33203125,0.318359375,0.35546875,0.4375,0.5322265625,0.5986328125,0.6220703125,0.6416015625,0.69140625,0.74609375,0.7724609375,0.7509765625,0.693359375,0.6220703125,0.55078125,0.4921875,0.470703125,0.4970703125,0.552734375,0.6015625,0.6220703125,0.634765625,0.654296875,0.67578125,0.689453125,0.69140625,0.68359375,0.673828125,0.66796875,0.6748046875,0.68359375,0.6767578125,0.6484375,0.6025390625,0.55078125,0.501953125,0.466796875,0.4619140625,0.48828125,0.5302734375,0.5625,0.5703125,0.5595703125,0.5126953125,0.443359375,0.384765625,0.3623046875,0.3828125,0.4287109375,0.484375,0.55078125,0.611328125,0.6455078125,0.6484375,0.634765625,0.6220703125,0.6162109375,0.623046875,0.6279296875,0.6123046875,0.5703125,0.509765625,0.4482421875,0.39453125,0.3837890625,0.4296875,0.5205078125,0.6142578125,0.669921875,0.673828125,0.6552734375,0.60546875,0.525390625,0.4384765625,0.3681640625,0.33203125,0.3251953125,0.3173828125,0.28125,0.2353515625,0.2099609375,0.220703125,0.265625,0.3251953125,0.39453125,0.4814453125,0.5546875,0.5771484375,0.544921875,0.484375,0.4287109375,0.3681640625,0.283203125,0.205078125,0.1728515625,0.19921875,0.26171875,0.3251953125,0.376953125,0.3857421875,0.3515625,0.2998046875,0.265625,0.2744140625,0.3251953125,0.396484375,0.4921875,0.580078125,0.6220703125,0.60546875,0.5537109375,0.5,0.4384765625,0.353515625,0.279296875,0.2568359375,0.296875,0.3720703125,0.4482421875,0.5244140625,0.6103515625,0.681640625,0.71484375,0.7099609375,0.6884765625,0.673828125,0.6591796875,0.6279296875,0.5791015625,0.5234375,0.474609375,0.443359375,0.4287109375,0.4228515625,0.439453125,0.484375,0.548828125,0.61328125,0.65625,0.673828125,0.6904296875,0.724609375,0.7529296875,0.7470703125,0.6982421875,0.625,0.55078125,0.4873046875,0.455078125,0.4609375,0.484375,0.5,0.4814453125,0.4287109375,0.361328125,0.283203125,0.23046875,0.2353515625,0.296875,0.37890625,0.4482421875,0.5009765625,0.5234375,0.51171875,0.3447265625,0.4150390625,0.5,0.5576171875,0.5693359375,0.5546875,0.4951171875,0.4111328125,0.3427734375,0.3232421875,0.3564453125,0.419921875,0.4990234375,0.607421875,0.703125,0.740234375,0.7080078125,0.6337890625,0.5595703125,0.48828125,0.423828125,0.3857421875,0.3837890625,0.4091796875,0.4345703125,0.439453125,0.4384765625,0.4384765625,0.439453125,0.4404296875,0.44140625,0.44140625,0.439453125,0.4306640625,0.404296875,0.37890625,0.3837890625,0.4267578125,0.49609375,0.5693359375,0.6357421875,0.669921875,0.6513671875,0.5830078125,0.4990234375,0.44140625,0.4296875,0.431640625,0.4326171875,0.431640625,0.4287109375,0.4248046875,0.421875,0.419921875,0.408203125,0.3681640625,0.3193359375,0.294921875,0.3134765625,0.369140625,0.439453125,0.5205078125,0.619140625,0.6962890625,0.708984375,0.6533203125,0.56640625,0.4892578125,0.4130859375,0.330078125,0.2802734375,0.298828125,0.37890625,0.4794921875,0.5595703125,0.6279296875,0.6787109375,0.69140625,0.662109375,0.609375,0.5693359375,0.5595703125,0.548828125,0.5029296875,0.4404296875,0.3984375,0.400390625,0.4443359375,0.509765625,0.5859375,0.67578125,0.740234375,0.7392578125,0.6728515625,0.5791015625,0.5,0.421875,0.3369140625,0.2880859375,0.3095703125,0.3935546875,0.498046875,0.5791015625,0.6484375,0.7001953125,0.7099609375,0.6748046875,0.6171875,0.5712890625,0.5595703125,0.5546875,0.5390625,0.51171875,0.4814453125,0.4560546875,0.4423828125,0.439453125,0.431640625,0.400390625,0.365234375,0.3544921875,0.3828125,0.44140625,0.509765625,0.5869140625,0.6865234375,0.7666015625,0.7861328125,0.7373046875,0.6552734375,0.5791015625,0.5107421875,0.458984375,0.4443359375,0.4736328125,0.5263671875,0.568359375,0.5791015625,0.58984375,0.6298828125,0.677734375,0.701171875,0.6826171875,0.6279296875,0.5595703125,0.478515625,0.3720703125,0.2802734375,0.2490234375,0.287109375,0.3642578125,0.439453125,0.498046875,0.5087890625,0.4697265625,0.41015625,0.37109375,0.380859375,0.439453125,0.5107421875,0.576171875,0.6162109375,0.6181640625,0.5927734375,0.56640625,0.5595703125,0.5673828125,0.6015625,0.6416015625,0.6572265625,0.6328125,0.5771484375,0.509765625,0.4541015625,0.4521484375,0.50390625,0.576171875,0.625,0.6181640625,0.5595703125,0.4765625,0.3662109375,0.271484375,0.2373046875,0.2744140625,0.3525390625,0.4296875,0.5107421875,0.611328125,0.689453125,0.705078125,0.65234375,0.56640625,0.4892578125,0.41015625,0.3095703125,0.23046875,0.2138671875,0.265625,0.3515625,0.4296875,0.4931640625,0.5244140625,0.51953125,0.5,0.4931640625,0.51953125,0.5791015625,0.6455078125,0.6953125,0.70703125,0.6767578125,0.623046875,0.5810546875,0.5693359375,0.564453125,0.544921875,0.5107421875,0.47265625,0.4404296875,0.4228515625,0.419921875,0.4111328125,0.3779296875,0.33984375,0.328125,0.357421875,0.41796875,0.4892578125,0.5498046875,0.5625,0.52734375,0.4716796875,0.4365234375,0.44921875,0.509765625,0.5869140625,0.671875,0.720703125,0.69921875,0.615234375,0.51171875,0.4296875,0.37109375,0.3681640625,0.421875,0.498046875,0.5517578125,0.5478515625,0.4892578125,0.41796875,0.3564453125,0.326171875,0.3369140625,0.375,0.41015625,0.419921875,0.4345703125,0.4931640625,0.578125,0.6455078125,0.6650390625,0.6328125,0.5693359375,0.4990234375,0.4306640625,0.384765625,0.375,0.392578125,0.4140625,0.419921875,0.4228515625,0.4384765625,0.46875,0.5048828125,0.5361328125,0.5546875,0.5595703125,0.55078125,0.51171875,0.4599609375,0.4296875,0.44140625,0.4912109375,0.5595703125,0.6162109375,0.62109375,0.5693359375,0.4951171875,0.4423828125,0.4443359375,0.5,0.5751953125,0.6650390625,0.7275390625,0.7255859375,0.6591796875,0.5673828125,0.4892578125,0.4306640625,0.4208984375,0.4599609375,0.51953125,0.55859375,0.5478515625,0.4892578125,0.419921875,0.36328125,0.3388671875,0.35546875,0.396484375,0.4306640625,0.439453125,0.443359375,0.4599609375,0.4912109375,0.5283203125,0.55859375,0.576171875,0.5791015625,0.5654296875,0.505859375,0.41796875,0.345703125,0.3232421875,0.35546875,0.419921875,0.48046875,0.5,0.4794921875,0.443359375,0.4248046875,0.447265625,0.509765625,0.5869140625,0.6689453125,0.71484375,0.6904296875,0.603515625,0.5,0.419921875,0.361328125,0.3515625,0.3916015625,0.4521484375,0.494140625,0.486328125,0.4296875,0.3662109375,0.33203125,0.349609375,0.4150390625,0.4970703125,0.5546875,0.5693359375,0.5810546875,0.6240234375,0.677734375,0.70703125,0.6923828125,0.6396484375,0.5693359375,0.4990234375,0.4462890625,0.431640625,0.4609375,0.5146484375,0.5576171875,0.5693359375,0.5712890625,0.5751953125,0.578125,0.5810546875,0.58203125,0.5810546875,0.5791015625,0.5859375,0.615234375,0.650390625,0.662109375,0.634765625,0.5771484375,0.509765625,0.4443359375,0.400390625,0.3984375,0.4404296875,0.5029296875,0.548828125,0.5595703125,0.546875,0.4931640625,0.4150390625,0.3544921875,0.3408203125,0.3759765625,0.439453125,0.509765625,0.576171875,0.619140625,0.625,0.6025390625,0.5771484375,0.5693359375,0.5751953125,0.60546875,0.6396484375,0.6484375,0.619140625,0.5595703125,0.4892578125,0.423828125,0.384765625,0.392578125,0.4462890625,0.5185546875,0.5693359375,0.5791015625,0.57421875,0.5537109375,0.517578125,0.4755859375,0.44140625,0.4228515625,0.419921875,0.41015625,0.369140625,0.3173828125,0.287109375,0.30078125,0.3515625,0.419921875,0.498046875,0.5908203125,0.6591796875,0.6640625,0.603515625,0.515625,0.439453125,0.36328125,0.26953125,0.2001953125,0.1943359375,0.25390625,0.3427734375,0.419921875,0.478515625,0.48828125,0.44921875,0.3896484375,0.3505859375,0.361328125,0.419921875,0.4990234375,0.599609375,0.681640625,0.7021484375,0.6552734375,0.57421875,0.5,0.4228515625,0.330078125,0.26171875,0.2578125,0.3193359375,0.41015625,0.4892578125,0.5615234375,0.6259765625,0.66015625,0.654296875,0.62109375,0.5888671875,0.5791015625,0.57421875,0.5576171875,0.52734375,0.4921875,0.4619140625,0.4443359375,0.439453125,0.44140625,0.4560546875,0.4853515625,0.5224609375,0.5546875,0.57421875,0.5791015625,0.5888671875,0.6240234375,0.662109375,0.6728515625,0.642578125,0.5810546875,0.509765625,0.4482421875,0.427734375,0.451171875,0.4921875,0.517578125,0.5,0.439453125,0.36328125,0.27734375,0.22265625,0.236328125,0.3125,0.41015625,0.4892578125,0.548828125,0.5615234375,0.5263671875,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.3828125,0.380859375,0.40625,0.4326171875,0.439453125,0.4326171875,0.40625,0.380859375,0.3828125,0.4228515625,0.48828125,0.5595703125,0.6337890625,0.708984375,0.744140625,0.708984375,0.615234375,0.5087890625,0.4296875,0.3662109375,0.3330078125,0.3505859375,0.4150390625,0.494140625,0.548828125,0.5595703125,0.55859375,0.5595703125,0.5634765625,0.5693359375,0.5751953125,0.578125,0.5791015625,0.56640625,0.5087890625,0.423828125,0.35546875,0.3349609375,0.3671875,0.4296875,0.5,0.5693359375,0.6162109375,0.6279296875,0.609375,0.5869140625,0.5791015625,0.5771484375,0.5751953125,0.5712890625,0.5673828125,0.5634765625,0.5615234375,0.5595703125,0.5478515625,0.5048828125,0.451171875,0.421875,0.435546875,0.4892578125,0.5595703125,0.6376953125,0.724609375,0.779296875,0.765625,0.6875,0.5888671875,0.509765625,0.4296875,0.3291015625,0.248046875,0.2275390625,0.2744140625,0.35546875,0.4296875,0.49609375,0.5478515625,0.5625,0.5361328125,0.4873046875,0.44921875,0.439453125,0.4306640625,0.3955078125,0.3525390625,0.3359375,0.3603515625,0.4189453125,0.4892578125,0.5693359375,0.6640625,0.732421875,0.736328125,0.6748046875,0.5859375,0.509765625,0.4306640625,0.3291015625,0.2451171875,0.220703125,0.263671875,0.34375,0.419921875,0.48828125,0.5419921875,0.5595703125,0.53515625,0.4873046875,0.44921875,0.439453125,0.4423828125,0.45703125,0.4853515625,0.5185546875,0.5478515625,0.564453125,0.5693359375,0.5595703125,0.5126953125,0.4482421875,0.4013671875,0.400390625,0.443359375,0.509765625,0.5849609375,0.6669921875,0.712890625,0.6904296875,0.6083984375,0.5078125,0.4296875,0.36328125,0.3115234375,0.296875,0.3232421875,0.3720703125,0.41015625,0.419921875,0.4296875,0.4716796875,0.5244140625,0.5556640625,0.5419921875,0.4892578125,0.419921875,0.34375,0.265625,0.23046875,0.267578125,0.365234375,0.4765625,0.5595703125,0.619140625,0.6318359375,0.5947265625,0.53515625,0.494140625,0.5029296875,0.5595703125,0.623046875,0.658203125,0.64453125,0.583984375,0.505859375,0.4521484375,0.439453125,0.4501953125,0.4970703125,0.560546875,0.603515625,0.6015625,0.556640625,0.4892578125,0.4296875,0.4091796875,0.431640625,0.4716796875,0.49609375,0.478515625,0.419921875,0.34765625,0.275390625,0.2451171875,0.28515625,0.3818359375,0.490234375,0.5693359375,0.64453125,0.7275390625,0.779296875,0.763671875,0.6865234375,0.5888671875,0.509765625,0.4326171875,0.3466796875,0.2939453125,0.3095703125,0.3876953125,0.48828125,0.5693359375,0.6259765625,0.619140625,0.5478515625,0.451171875,0.3798828125,0.373046875,0.4296875,0.4990234375,0.5517578125,0.564453125,0.53125,0.4755859375,0.431640625,0.419921875,0.4208984375,0.435546875,0.4658203125,0.501953125,0.53515625,0.5546875,0.5595703125,0.5498046875,0.501953125,0.435546875,0.388671875,0.38671875,0.431640625,0.5,0.5595703125,0.5693359375,0.5283203125,0.4658203125,0.4228515625,0.431640625,0.4892578125,0.5693359375,0.669921875,0.75,0.7685546875,0.71875,0.6357421875,0.5595703125,0.5,0.4833984375,0.51171875,0.5576171875,0.5859375,0.5693359375,0.509765625,0.4423828125,0.3974609375,0.396484375,0.44140625,0.5068359375,0.556640625,0.5693359375,0.5771484375,0.603515625,0.626953125,0.6220703125,0.5791015625,0.5107421875,0.439453125,0.3740234375,0.337890625,0.3515625,0.4130859375,0.4912109375,0.546875,0.5595703125,0.5556640625,0.5380859375,0.505859375,0.4677734375,0.4375,0.421875,0.419921875,0.412109375,0.375,0.3271484375,0.302734375,0.318359375,0.37109375,0.439453125,0.4990234375,0.515625,0.4892578125,0.4443359375,0.4189453125,0.4384765625,0.5,0.578125,0.669921875,0.7314453125,0.7275390625,0.6591796875,0.56640625,0.4892578125,0.43359375,0.42578125,0.46875,0.53125,0.5712890625,0.5595703125,0.5,0.4306640625,0.384765625,0.3837890625,0.4287109375,0.49609375,0.5458984375,0.5595703125,0.5576171875,0.541015625,0.5087890625,0.470703125,0.4384765625,0.421875,0.419921875,0.4150390625,0.3916015625,0.369140625,0.375,0.41796875,0.486328125,0.5595703125,0.6171875,0.6201171875,0.564453125,0.484375,0.4287109375,0.431640625,0.4892578125,0.5712890625,0.673828125,0.7578125,0.7802734375,0.734375,0.6533203125,0.5791015625,0.5224609375,0.5126953125,0.5517578125,0.6083984375,0.6435546875,0.6298828125,0.5693359375,0.49609375,0.427734375,0.384765625,0.37890625,0.4013671875,0.4248046875,0.4296875,0.4375,0.4755859375,0.525390625,0.5537109375,0.5390625,0.48828125,0.419921875,0.3525390625,0.302734375,0.2939453125,0.326171875,0.380859375,0.421875,0.4296875,0.427734375,0.42578125,0.4228515625,0.4208984375,0.419921875,0.419921875,0.419921875,0.431640625,0.484375,0.5576171875,0.6123046875,0.619140625,0.5771484375,0.509765625,0.4375,0.3759765625,0.34375,0.3505859375,0.3837890625,0.4130859375,0.419921875,0.412109375,0.388671875,0.3701171875,0.3828125,0.4326171875,0.505859375,0.5791015625,0.6455078125,0.681640625,0.6630859375,0.595703125,0.51171875,0.453125,0.439453125,0.451171875,0.5,0.568359375,0.6162109375,0.619140625,0.576171875,0.509765625,0.439453125,0.376953125,0.345703125,0.353515625,0.3876953125,0.419921875,0.4296875,0.435546875,0.455078125,0.490234375,0.5302734375,0.5615234375,0.5771484375,0.5791015625,0.568359375,0.5263671875,0.4736328125,0.4443359375,0.458984375,0.5107421875,0.5791015625,0.6572265625,0.7490234375,0.814453125,0.814453125,0.7490234375,0.6572265625,0.5791015625,0.5009765625,0.4052734375,0.3349609375,0.328125,0.3896484375,0.48046875,0.5595703125,0.6201171875,0.6337890625,0.5986328125,0.5419921875,0.5029296875,0.5126953125,0.5693359375,0.64453125,0.7275390625,0.779296875,0.763671875,0.6865234375,0.5888671875,0.509765625,0.431640625,0.33984375,0.2744140625,0.2744140625,0.33984375,0.431640625,0.509765625,0.5751953125,0.6142578125,0.6064453125,0.552734375,0.48046875,0.4296875,0.419921875,0.4248046875,0.4443359375,0.4765625,0.513671875,0.54296875,0.5576171875,0.5595703125,0.5546875,0.5390625,0.5107421875,0.478515625,0.4501953125,0.4345703125,0.4296875,0.439453125,0.4873046875,0.5537109375,0.6005859375,0.6015625,0.5576171875,0.4892578125,0.431640625,0.4287109375,0.484375,0.564453125,0.6201171875,0.6171875,0.5595703125,0.478515625,0.376953125,0.296875,0.28125,0.333984375,0.4208984375,0.5,0.5595703125,0.572265625,0.5361328125,0.40234375,0.390625,0.4052734375,0.423828125,0.4287109375,0.423828125,0.4052734375,0.390625,0.40234375,0.4453125,0.5068359375,0.5703125,0.6318359375,0.68359375,0.689453125,0.634765625,0.5361328125,0.439453125,0.376953125,0.333984375,0.326171875,0.3671875,0.4443359375,0.5234375,0.568359375,0.5703125,0.5625,0.5673828125,0.5888671875,0.6201171875,0.6513671875,0.669921875,0.673828125,0.6591796875,0.59375,0.490234375,0.3896484375,0.3330078125,0.3349609375,0.376953125,0.435546875,0.5146484375,0.59765625,0.6591796875,0.6845703125,0.68359375,0.673828125,0.662109375,0.6484375,0.630859375,0.6123046875,0.5947265625,0.5810546875,0.5703125,0.5498046875,0.5009765625,0.4453125,0.4189453125,0.4404296875,0.4990234375,0.5703125,0.6474609375,0.7333984375,0.7880859375,0.779296875,0.7099609375,0.62109375,0.55078125,0.48046875,0.384765625,0.296875,0.2548828125,0.271484375,0.3232421875,0.376953125,0.427734375,0.4716796875,0.4921875,0.484375,0.4580078125,0.4345703125,0.4287109375,0.419921875,0.3798828125,0.3310546875,0.3056640625,0.3232421875,0.3779296875,0.4482421875,0.52734375,0.6220703125,0.6962890625,0.71484375,0.6748046875,0.6083984375,0.55078125,0.48828125,0.3876953125,0.2822265625,0.2177734375,0.216796875,0.263671875,0.3251953125,0.3876953125,0.4453125,0.4794921875,0.48046875,0.4580078125,0.435546875,0.4287109375,0.431640625,0.44921875,0.484375,0.53125,0.576171875,0.607421875,0.6220703125,0.6220703125,0.5849609375,0.525390625,0.4765625,0.46484375,0.494140625,0.55078125,0.6142578125,0.6669921875,0.677734375,0.626953125,0.533203125,0.439453125,0.376953125,0.326171875,0.283203125,0.26171875,0.26953125,0.296875,0.3193359375,0.3251953125,0.3359375,0.376953125,0.4306640625,0.4609375,0.4482421875,0.3955078125,0.3251953125,0.251953125,0.1875,0.1748046875,0.2392578125,0.3603515625,0.484375,0.5703125,0.6328125,0.6552734375,0.630859375,0.5791015625,0.53515625,0.5302734375,0.5703125,0.6162109375,0.63671875,0.6142578125,0.5556640625,0.486328125,0.439453125,0.4287109375,0.4375,0.4755859375,0.525390625,0.556640625,0.5498046875,0.5068359375,0.4482421875,0.392578125,0.3623046875,0.361328125,0.376953125,0.3857421875,0.369140625,0.3251953125,0.275390625,0.2451171875,0.263671875,0.341796875,0.455078125,0.55859375,0.6220703125,0.677734375,0.7421875,0.7822265625,0.767578125,0.7021484375,0.619140625,0.55078125,0.4833984375,0.4052734375,0.3564453125,0.3701171875,0.4453125,0.5419921875,0.6220703125,0.67578125,0.6572265625,0.5625,0.4365234375,0.341796875,0.3232421875,0.376953125,0.447265625,0.5,0.5087890625,0.4697265625,0.40234375,0.3466796875,0.3251953125,0.3193359375,0.3359375,0.380859375,0.4453125,0.509765625,0.552734375,0.5703125,0.568359375,0.525390625,0.458984375,0.4052734375,0.39453125,0.4326171875,0.5,0.5595703125,0.5703125,0.5263671875,0.4560546875,0.40234375,0.3994140625,0.4482421875,0.5185546875,0.6142578125,0.6982421875,0.73046875,0.701171875,0.6357421875,0.5703125,0.5185546875,0.5068359375,0.537109375,0.583984375,0.6142578125,0.6025390625,0.55078125,0.4921875,0.44921875,0.4462890625,0.486328125,0.5498046875,0.6015625,0.6220703125,0.6357421875,0.6552734375,0.66015625,0.630859375,0.5693359375,0.494140625,0.4287109375,0.373046875,0.3447265625,0.365234375,0.4287109375,0.505859375,0.55859375,0.5703125,0.5625,0.52734375,0.46484375,0.3955078125,0.34375,0.3212890625,0.3251953125,0.330078125,0.314453125,0.29296875,0.2900390625,0.3173828125,0.3681640625,0.4287109375,0.48046875,0.4921875,0.4658203125,0.427734375,0.4111328125,0.4365234375,0.5,0.5751953125,0.6513671875,0.6904296875,0.66796875,0.59375,0.5087890625,0.4482421875,0.4091796875,0.419921875,0.4755859375,0.541015625,0.5771484375,0.560546875,0.5,0.4296875,0.3798828125,0.375,0.4189453125,0.490234375,0.5478515625,0.5703125,0.5732421875,0.544921875,0.484375,0.4111328125,0.3505859375,0.322265625,0.3251953125,0.3310546875,0.3271484375,0.330078125,0.3603515625,0.419921875,0.49609375,0.5703125,0.626953125,0.623046875,0.5556640625,0.462890625,0.39453125,0.390625,0.4482421875,0.5302734375,0.6396484375,0.7412109375,0.7919921875,0.779296875,0.7275390625,0.673828125,0.6328125,0.630859375,0.6630859375,0.701171875,0.71484375,0.685546875,0.6220703125,0.5478515625,0.4716796875,0.4111328125,0.3818359375,0.37890625,0.3828125,0.376953125,0.375,0.396484375,0.4287109375,0.4453125,0.4296875,0.384765625,0.3251953125,0.2685546875,0.236328125,0.244140625,0.2880859375,0.34375,0.3779296875,0.376953125,0.3662109375,0.3525390625,0.3388671875,0.3291015625,0.3251953125,0.3251953125,0.3251953125,0.3408203125,0.41015625,0.513671875,0.603515625,0.640625,0.615234375,0.55078125,0.4775390625,0.404296875,0.34765625,0.3232421875,0.32421875,0.3310546875,0.3251953125,0.3134765625,0.306640625,0.3291015625,0.39453125,0.4931640625,0.59375,0.673828125,0.7373046875,0.759765625,0.71875,0.6240234375,0.515625,0.4443359375,0.4287109375,0.4404296875,0.4912109375,0.5634765625,0.6220703125,0.6376953125,0.6083984375,0.55078125,0.486328125,0.4140625,0.3564453125,0.33203125,0.3408203125,0.3623046875,0.376953125,0.3955078125,0.4453125,0.521484375,0.599609375,0.6552734375,0.677734375,0.673828125,0.654296875,0.611328125,0.5634765625,0.5419921875,0.5615234375,0.6123046875,0.673828125,0.7412109375,0.822265625,0.87890625,0.87890625,0.822265625,0.7412109375,0.673828125,0.6015625,0.501953125,0.4140625,0.3828125,0.4189453125,0.494140625,0.5703125,0.6337890625,0.6630859375,0.6494140625,0.611328125,0.5791015625,0.5810546875,0.6220703125,0.677734375,0.7421875,0.7822265625,0.767578125,0.7021484375,0.619140625,0.55078125,0.4833984375,0.40234375,0.345703125,0.345703125,0.40234375,0.4833984375,0.55078125,0.6044921875,0.615234375,0.5693359375,0.478515625,0.384765625,0.3291015625,0.3251953125,0.3427734375,0.3857421875,0.4501953125,0.5146484375,0.5595703125,0.576171875,0.5703125,0.556640625,0.5322265625,0.4951171875,0.4521484375,0.4150390625,0.390625,0.376953125,0.37890625,0.421875,0.4892578125,0.5419921875,0.552734375,0.5146484375,0.4482421875,0.390625,0.39453125,0.462890625,0.5556640625,0.623046875,0.626953125,0.5703125,0.48828125,0.3857421875,0.3037109375,0.28515625,0.3359375,0.421875,0.5,0.5615234375,0.5849609375,0.564453125,0.421875,0.4248046875,0.4453125,0.4638671875,0.46875,0.4638671875,0.4453125,0.4248046875,0.421875,0.443359375,0.484375,0.5302734375,0.572265625,0.5966796875,0.58203125,0.52734375,0.453125,0.392578125,0.3642578125,0.353515625,0.375,0.427734375,0.4912109375,0.537109375,0.548828125,0.5302734375,0.5087890625,0.515625,0.5576171875,0.6240234375,0.6904296875,0.7314453125,0.740234375,0.728515625,0.671875,0.57421875,0.466796875,0.3857421875,0.3544921875,0.3642578125,0.39453125,0.4697265625,0.5771484375,0.6796875,0.744140625,0.759765625,0.740234375,0.712890625,0.68359375,0.6513671875,0.6181640625,0.5859375,0.556640625,0.5302734375,0.494140625,0.43359375,0.375,0.35546875,0.388671875,0.4560546875,0.5302734375,0.607421875,0.6953125,0.7587890625,0.767578125,0.72265625,0.6572265625,0.6044921875,0.552734375,0.478515625,0.40234375,0.3505859375,0.333984375,0.3447265625,0.3642578125,0.384765625,0.4111328125,0.4384765625,0.4580078125,0.4677734375,0.4697265625,0.46875,0.45703125,0.40625,0.3369140625,0.2861328125,0.283203125,0.326171875,0.39453125,0.4716796875,0.560546875,0.634765625,0.66796875,0.658203125,0.6279296875,0.6044921875,0.572265625,0.4892578125,0.375,0.2724609375,0.2177734375,0.220703125,0.2587890625,0.3076171875,0.3662109375,0.421875,0.4580078125,0.4716796875,0.470703125,0.46875,0.4697265625,0.474609375,0.4912109375,0.5244140625,0.56640625,0.60546875,0.634765625,0.6533203125,0.642578125,0.607421875,0.568359375,0.55078125,0.564453125,0.6044921875,0.6455078125,0.6611328125,0.6298828125,0.5546875,0.4638671875,0.39453125,0.3642578125,0.3427734375,0.31640625,0.2900390625,0.26953125,0.2607421875,0.2587890625,0.2587890625,0.2685546875,0.310546875,0.3642578125,0.39453125,0.380859375,0.3291015625,0.2587890625,0.185546875,0.1240234375,0.1181640625,0.189453125,0.31640625,0.443359375,0.5302734375,0.5966796875,0.638671875,0.6376953125,0.599609375,0.548828125,0.521484375,0.5302734375,0.546875,0.5537109375,0.54296875,0.51953125,0.4912109375,0.4736328125,0.46875,0.4736328125,0.4912109375,0.5078125,0.5078125,0.482421875,0.4404296875,0.39453125,0.349609375,0.3115234375,0.287109375,0.2783203125,0.2783203125,0.2744140625,0.2587890625,0.2470703125,0.267578125,0.333984375,0.4326171875,0.5341796875,0.60546875,0.634765625,0.6591796875,0.6953125,0.7255859375,0.7294921875,0.7001953125,0.65234375,0.6044921875,0.55078125,0.48046875,0.4248046875,0.421875,0.4755859375,0.55859375,0.634765625,0.6884765625,0.666015625,0.5654296875,0.43359375,0.3330078125,0.310546875,0.3642578125,0.4345703125,0.490234375,0.5,0.4521484375,0.37109375,0.296875,0.2587890625,0.236328125,0.234375,0.2705078125,0.341796875,0.4267578125,0.494140625,0.5302734375,0.544921875,0.5185546875,0.4638671875,0.4140625,0.400390625,0.4345703125,0.5,0.560546875,0.57421875,0.5302734375,0.4521484375,0.3837890625,0.3623046875,0.39453125,0.4482421875,0.5234375,0.5966796875,0.6318359375,0.6201171875,0.5771484375,0.5302734375,0.494140625,0.49609375,0.5380859375,0.5966796875,0.638671875,0.640625,0.6044921875,0.5576171875,0.5126953125,0.4912109375,0.5078125,0.552734375,0.6025390625,0.634765625,0.6630859375,0.6884765625,0.6904296875,0.654296875,0.58984375,0.5205078125,0.46875,0.4267578125,0.400390625,0.40625,0.44140625,0.48828125,0.5224609375,0.5302734375,0.51953125,0.4716796875,0.3916015625,0.30859375,0.2529296875,0.2392578125,0.2587890625,0.283203125,0.3017578125,0.3193359375,0.3447265625,0.380859375,0.423828125,0.46875,0.50390625,0.4990234375,0.4609375,0.4189453125,0.4052734375,0.435546875,0.5,0.5693359375,0.6201171875,0.6240234375,0.57421875,0.4931640625,0.4248046875,0.39453125,0.388671875,0.4287109375,0.501953125,0.568359375,0.5927734375,0.564453125,0.5,0.4267578125,0.3623046875,0.3369140625,0.36328125,0.4287109375,0.4931640625,0.5302734375,0.5458984375,0.5166015625,0.44140625,0.34765625,0.2724609375,0.2431640625,0.2587890625,0.28125,0.291015625,0.3037109375,0.3330078125,0.3876953125,0.45703125,0.5302734375,0.5869140625,0.5810546875,0.5107421875,0.4140625,0.34375,0.337890625,0.39453125,0.474609375,0.580078125,0.6845703125,0.75390625,0.7744140625,0.7607421875,0.740234375,0.7294921875,0.744140625,0.7705078125,0.78125,0.7587890625,0.7041015625,0.634765625,0.5625,0.4921875,0.4384765625,0.408203125,0.396484375,0.3857421875,0.3642578125,0.341796875,0.3369140625,0.341796875,0.3447265625,0.33203125,0.3017578125,0.2587890625,0.220703125,0.2158203125,0.2509765625,0.30859375,0.361328125,0.380859375,0.3642578125,0.3359375,0.3037109375,0.275390625,0.2587890625,0.2548828125,0.2578125,0.2587890625,0.27734375,0.3603515625,0.4912109375,0.61328125,0.6767578125,0.666015625,0.6044921875,0.5302734375,0.451171875,0.380859375,0.3310546875,0.3017578125,0.2822265625,0.2587890625,0.234375,0.232421875,0.28125,0.388671875,0.529296875,0.6552734375,0.740234375,0.8037109375,0.8232421875,0.775390625,0.673828125,0.5595703125,0.4853515625,0.46875,0.478515625,0.521484375,0.5849609375,0.640625,0.662109375,0.6455078125,0.6044921875,0.55078125,0.4736328125,0.3916015625,0.3359375,0.3212890625,0.337890625,0.3642578125,0.40234375,0.482421875,0.5908203125,0.6904296875,0.75,0.7607421875,0.740234375,0.7080078125,0.662109375,0.6240234375,0.6162109375,0.6435546875,0.6923828125,0.740234375,0.7900390625,0.849609375,0.892578125,0.892578125,0.849609375,0.7900390625,0.740234375,0.6806640625,0.5810546875,0.4716796875,0.4052734375,0.4052734375,0.458984375,0.5302734375,0.599609375,0.6533203125,0.67578125,0.666015625,0.638671875,0.6240234375,0.634765625,0.6591796875,0.6953125,0.7255859375,0.7294921875,0.7001953125,0.65234375,0.6044921875,0.5546875,0.4951171875,0.4521484375,0.4521484375,0.4951171875,0.5546875,0.6044921875,0.63671875,0.61328125,0.5244140625,0.40234375,0.296875,0.248046875,0.2587890625,0.294921875,0.3623046875,0.447265625,0.5185546875,0.5546875,0.552734375,0.5302734375,0.50390625,0.4794921875,0.4580078125,0.4365234375,0.4140625,0.3896484375,0.3642578125,0.3486328125,0.375,0.4306640625,0.48046875,0.4931640625,0.4599609375,0.39453125,0.337890625,0.34375,0.4140625,0.5107421875,0.5810546875,0.5869140625,0.5302734375,0.44921875,0.3515625,0.2783203125,0.2705078125,0.330078125,0.4208984375,0.5,0.5654296875,0.6044921875,0.607421875,0.44140625,0.46875,0.501953125,0.5244140625,0.5302734375,0.5244140625,0.501953125,0.46875,0.44140625,0.4326171875,0.4453125,0.46875,0.490234375,0.4892578125,0.4638671875,0.4248046875,0.3916015625,0.3818359375,0.39453125,0.4208984375,0.4697265625,0.5244140625,0.5546875,0.548828125,0.5146484375,0.46875,0.431640625,0.4306640625,0.4833984375,0.57421875,0.66796875,0.7275390625,0.740234375,0.734375,0.7041015625,0.640625,0.5576171875,0.4765625,0.4208984375,0.39453125,0.390625,0.4443359375,0.5517578125,0.6708984375,0.75390625,0.7734375,0.740234375,0.6962890625,0.65625,0.62109375,0.587890625,0.552734375,0.513671875,0.46875,0.4150390625,0.33984375,0.2783203125,0.267578125,0.314453125,0.3935546875,0.46875,0.546875,0.634765625,0.7041015625,0.728515625,0.7080078125,0.6669921875,0.634765625,0.6064453125,0.5693359375,0.5244140625,0.48046875,0.4423828125,0.4150390625,0.39453125,0.37890625,0.3818359375,0.408203125,0.4521484375,0.4970703125,0.5244140625,0.5302734375,0.515625,0.4541015625,0.36328125,0.2900390625,0.265625,0.2978515625,0.3642578125,0.4375,0.51171875,0.5712890625,0.6044921875,0.615234375,0.6201171875,0.634765625,0.640625,0.59375,0.494140625,0.375,0.2822265625,0.2451171875,0.2587890625,0.291015625,0.3427734375,0.408203125,0.46875,0.509765625,0.52734375,0.5302734375,0.525390625,0.5078125,0.4912109375,0.4912109375,0.5166015625,0.55859375,0.6044921875,0.6455078125,0.6669921875,0.6630859375,0.640625,0.6181640625,0.615234375,0.634765625,0.65234375,0.6318359375,0.568359375,0.4853515625,0.416015625,0.384765625,0.39453125,0.41015625,0.4072265625,0.3798828125,0.3369140625,0.2919921875,0.2646484375,0.2587890625,0.2685546875,0.310546875,0.3642578125,0.39453125,0.380859375,0.3291015625,0.2587890625,0.1845703125,0.115234375,0.095703125,0.1513671875,0.2646484375,0.384765625,0.46875,0.5419921875,0.60546875,0.6328125,0.6103515625,0.552734375,0.498046875,0.46875,0.4521484375,0.4453125,0.4560546875,0.4794921875,0.5078125,0.525390625,0.5302734375,0.529296875,0.5244140625,0.5078125,0.474609375,0.4326171875,0.3935546875,0.3642578125,0.3330078125,0.2900390625,0.248046875,0.2236328125,0.22265625,0.2392578125,0.2587890625,0.2880859375,0.3544921875,0.44921875,0.541015625,0.6005859375,0.6171875,0.6044921875,0.5908203125,0.595703125,0.619140625,0.6455078125,0.662109375,0.6572265625,0.634765625,0.5986328125,0.5341796875,0.46875,0.44140625,0.4677734375,0.5322265625,0.6044921875,0.6591796875,0.64453125,0.5576171875,0.44140625,0.3544921875,0.33984375,0.39453125,0.4677734375,0.529296875,0.546875,0.4990234375,0.4072265625,0.31640625,0.2587890625,0.2138671875,0.1796875,0.1845703125,0.240234375,0.3291015625,0.4140625,0.46875,0.50390625,0.4990234375,0.4609375,0.4189453125,0.4052734375,0.435546875,0.5,0.5625,0.5830078125,0.546875,0.46875,0.390625,0.3515625,0.3642578125,0.3955078125,0.443359375,0.4912109375,0.5185546875,0.517578125,0.49609375,0.46875,0.451171875,0.466796875,0.5185546875,0.5849609375,0.63671875,0.6533203125,0.634765625,0.6025390625,0.552734375,0.5078125,0.4912109375,0.5126953125,0.5576171875,0.6044921875,0.650390625,0.6904296875,0.701171875,0.673828125,0.6181640625,0.5634765625,0.5302734375,0.5029296875,0.4765625,0.4580078125,0.453125,0.458984375,0.466796875,0.46875,0.4580078125,0.40625,0.3251953125,0.2509765625,0.2119140625,0.2197265625,0.2587890625,0.3056640625,0.3564453125,0.4052734375,0.447265625,0.478515625,0.50390625,0.5302734375,0.544921875,0.5185546875,0.4638671875,0.4140625,0.400390625,0.4345703125,0.5,0.5634765625,0.5888671875,0.5576171875,0.4833984375,0.4033203125,0.3583984375,0.3642578125,0.3955078125,0.4677734375,0.5546875,0.61328125,0.6162109375,0.568359375,0.5,0.4228515625,0.33984375,0.2861328125,0.2900390625,0.3447265625,0.416015625,0.46875,0.501953125,0.4833984375,0.4111328125,0.3173828125,0.2451171875,0.2255859375,0.2587890625,0.2978515625,0.314453125,0.31640625,0.3232421875,0.349609375,0.400390625,0.46875,0.5263671875,0.5244140625,0.4609375,0.3720703125,0.30859375,0.306640625,0.3642578125,0.439453125,0.52734375,0.6103515625,0.6708984375,0.705078125,0.72265625,0.740234375,0.765625,0.8046875,0.8310546875,0.8173828125,0.759765625,0.6796875,0.6044921875,0.5361328125,0.484375,0.4580078125,0.4521484375,0.4501953125,0.43359375,0.39453125,0.3505859375,0.31640625,0.2978515625,0.2919921875,0.291015625,0.28125,0.2587890625,0.2431640625,0.2666015625,0.3251953125,0.3916015625,0.4326171875,0.431640625,0.39453125,0.3466796875,0.2978515625,0.2587890625,0.2421875,0.24609375,0.255859375,0.2587890625,0.27734375,0.365234375,0.501953125,0.6318359375,0.703125,0.6962890625,0.634765625,0.5625,0.4912109375,0.427734375,0.3779296875,0.3388671875,0.3017578125,0.2587890625,0.2158203125,0.19921875,0.2451171875,0.361328125,0.515625,0.65234375,0.740234375,0.8046875,0.83203125,0.7978515625,0.7119140625,0.6123046875,0.544921875,0.5302734375,0.5361328125,0.564453125,0.607421875,0.646484375,0.6650390625,0.658203125,0.634765625,0.59765625,0.5224609375,0.4306640625,0.3583984375,0.3330078125,0.3525390625,0.39453125,0.453125,0.5546875,0.673828125,0.7646484375,0.7998046875,0.7822265625,0.740234375,0.6923828125,0.6435546875,0.6162109375,0.6240234375,0.662109375,0.7080078125,0.740234375,0.76953125,0.8037109375,0.828125,0.828125,0.8037109375,0.76953125,0.740234375,0.6982421875,0.6044921875,0.4853515625,0.39453125,0.3671875,0.40234375,0.46875,0.544921875,0.625,0.6826171875,0.6953125,0.6689453125,0.6298828125,0.6044921875,0.5908203125,0.595703125,0.619140625,0.6455078125,0.662109375,0.6572265625,0.634765625,0.60546875,0.5712890625,0.546875,0.546875,0.5712890625,0.60546875,0.634765625,0.6455078125,0.5927734375,0.48046875,0.3505859375,0.2548828125,0.2275390625,0.2587890625,0.314453125,0.3994140625,0.48828125,0.5439453125,0.548828125,0.5146484375,0.46875,0.4296875,0.4140625,0.4228515625,0.44140625,0.4501953125,0.43359375,0.39453125,0.359375,0.3642578125,0.40234375,0.4443359375,0.4580078125,0.4287109375,0.3642578125,0.306640625,0.30859375,0.3720703125,0.4609375,0.5244140625,0.5263671875,0.46875,0.3896484375,0.2998046875,0.240234375,0.248046875,0.3212890625,0.4189453125,0.5,0.568359375,0.6220703125,0.646484375,0.4609375,0.5029296875,0.5419921875,0.5654296875,0.5703125,0.5654296875,0.5419921875,0.5029296875,0.4609375,0.431640625,0.421875,0.4287109375,0.4326171875,0.4130859375,0.380859375,0.359375,0.3662109375,0.3994140625,0.4482421875,0.505859375,0.576171875,0.626953125,0.626953125,0.5732421875,0.49609375,0.4287109375,0.375,0.359375,0.4033203125,0.4931640625,0.59375,0.6591796875,0.673828125,0.6748046875,0.677734375,0.6650390625,0.626953125,0.5673828125,0.5029296875,0.4482421875,0.412109375,0.4375,0.5244140625,0.6318359375,0.708984375,0.720703125,0.673828125,0.6162109375,0.578125,0.5576171875,0.544921875,0.5244140625,0.4853515625,0.4287109375,0.359375,0.2724609375,0.2080078125,0.2041015625,0.2626953125,0.3505859375,0.4287109375,0.5048828125,0.5869140625,0.650390625,0.67578125,0.6630859375,0.6376953125,0.6220703125,0.6142578125,0.615234375,0.61328125,0.5927734375,0.552734375,0.5,0.4482421875,0.4013671875,0.37890625,0.396484375,0.4501953125,0.515625,0.560546875,0.5703125,0.5556640625,0.490234375,0.3935546875,0.3125,0.283203125,0.3125,0.376953125,0.4453125,0.498046875,0.5283203125,0.541015625,0.55078125,0.576171875,0.6220703125,0.6630859375,0.658203125,0.59375,0.4892578125,0.3876953125,0.3291015625,0.3251953125,0.341796875,0.37890625,0.435546875,0.4951171875,0.5419921875,0.5654296875,0.5703125,0.5615234375,0.5234375,0.4736328125,0.4423828125,0.44921875,0.4921875,0.55078125,0.611328125,0.658203125,0.677734375,0.666015625,0.6376953125,0.6181640625,0.6220703125,0.62109375,0.5771484375,0.5029296875,0.4306640625,0.3935546875,0.4033203125,0.4482421875,0.494140625,0.5166015625,0.4990234375,0.4453125,0.3798828125,0.3359375,0.3251953125,0.3359375,0.376953125,0.4306640625,0.4609375,0.4482421875,0.3955078125,0.3251953125,0.248046875,0.1669921875,0.123046875,0.150390625,0.240234375,0.3466796875,0.4287109375,0.505859375,0.587890625,0.638671875,0.6298828125,0.5673828125,0.48828125,0.4287109375,0.3828125,0.3623046875,0.384765625,0.443359375,0.5126953125,0.5595703125,0.5703125,0.5673828125,0.5498046875,0.5146484375,0.4677734375,0.4228515625,0.3916015625,0.376953125,0.359375,0.3154296875,0.263671875,0.2333984375,0.2392578125,0.275390625,0.3251953125,0.3876953125,0.4814453125,0.5791015625,0.6396484375,0.642578125,0.6025390625,0.55078125,0.5048828125,0.482421875,0.49609375,0.541015625,0.5927734375,0.623046875,0.6220703125,0.599609375,0.5419921875,0.470703125,0.4267578125,0.431640625,0.4814453125,0.55078125,0.6083984375,0.6064453125,0.5439453125,0.455078125,0.392578125,0.390625,0.4482421875,0.5234375,0.5966796875,0.6279296875,0.591796875,0.5,0.3984375,0.3251953125,0.259765625,0.1923828125,0.158203125,0.185546875,0.265625,0.3583984375,0.4287109375,0.48046875,0.4921875,0.4658203125,0.427734375,0.4111328125,0.4365234375,0.5,0.5654296875,0.5966796875,0.5751953125,0.5078125,0.4287109375,0.3798828125,0.376953125,0.3896484375,0.41015625,0.4306640625,0.4443359375,0.4462890625,0.439453125,0.4287109375,0.4248046875,0.4462890625,0.4951171875,0.5556640625,0.6044921875,0.6259765625,0.6220703125,0.6015625,0.5498046875,0.486328125,0.4462890625,0.44921875,0.4921875,0.55078125,0.6123046875,0.666015625,0.689453125,0.6728515625,0.62890625,0.587890625,0.5703125,0.556640625,0.5322265625,0.4990234375,0.4658203125,0.4423828125,0.4306640625,0.4287109375,0.41796875,0.3701171875,0.30078125,0.248046875,0.236328125,0.2685546875,0.3251953125,0.3896484375,0.4580078125,0.5166015625,0.55078125,0.5615234375,0.5625,0.5703125,0.568359375,0.525390625,0.458984375,0.4052734375,0.39453125,0.4326171875,0.5,0.5595703125,0.5673828125,0.515625,0.4306640625,0.359375,0.3408203125,0.376953125,0.439453125,0.533203125,0.6240234375,0.6650390625,0.640625,0.5732421875,0.5,0.419921875,0.3232421875,0.248046875,0.234375,0.283203125,0.361328125,0.4287109375,0.4775390625,0.474609375,0.4169921875,0.337890625,0.2802734375,0.27734375,0.3251953125,0.3779296875,0.3935546875,0.3740234375,0.345703125,0.3359375,0.365234375,0.4287109375,0.4873046875,0.4921875,0.4404296875,0.3662109375,0.314453125,0.318359375,0.376953125,0.447265625,0.505859375,0.546875,0.5732421875,0.595703125,0.626953125,0.673828125,0.73046875,0.7939453125,0.830078125,0.806640625,0.7275390625,0.630859375,0.55078125,0.4873046875,0.4580078125,0.4677734375,0.4970703125,0.515625,0.5,0.4482421875,0.38671875,0.3330078125,0.3017578125,0.30078125,0.31640625,0.330078125,0.3251953125,0.3271484375,0.3701171875,0.4404296875,0.50390625,0.52734375,0.5029296875,0.4482421875,0.3857421875,0.3251953125,0.287109375,0.2802734375,0.298828125,0.3203125,0.3251953125,0.3427734375,0.419921875,0.5400390625,0.6484375,0.701171875,0.6845703125,0.6220703125,0.5537109375,0.5009765625,0.466796875,0.4453125,0.4208984375,0.3818359375,0.3251953125,0.263671875,0.2197265625,0.232421875,0.3203125,0.45703125,0.5869140625,0.673828125,0.7412109375,0.7802734375,0.7705078125,0.712890625,0.63671875,0.58203125,0.5703125,0.572265625,0.5849609375,0.6044921875,0.6220703125,0.6318359375,0.630859375,0.6220703125,0.5986328125,0.5341796875,0.4482421875,0.380859375,0.361328125,0.390625,0.4482421875,0.521484375,0.62890625,0.736328125,0.7958984375,0.7890625,0.736328125,0.673828125,0.6123046875,0.5615234375,0.5419921875,0.5634765625,0.611328125,0.654296875,0.673828125,0.6845703125,0.6982421875,0.7080078125,0.7080078125,0.6982421875,0.6845703125,0.673828125,0.6474609375,0.568359375,0.458984375,0.3681640625,0.3349609375,0.36328125,0.4287109375,0.5087890625,0.60546875,0.6845703125,0.7080078125,0.671875,0.607421875,0.55078125,0.5048828125,0.482421875,0.49609375,0.541015625,0.5927734375,0.623046875,0.6220703125,0.6103515625,0.5966796875,0.5869140625,0.5869140625,0.5966796875,0.6103515625,0.6220703125,0.6162109375,0.552734375,0.4423828125,0.333984375,0.271484375,0.2744140625,0.3251953125,0.396484375,0.4892578125,0.5693359375,0.5966796875,0.5625,0.4951171875,0.4287109375,0.3779296875,0.37109375,0.41015625,0.466796875,0.505859375,0.4990234375,0.4482421875,0.396484375,0.384765625,0.4111328125,0.44921875,0.4658203125,0.4404296875,0.376953125,0.318359375,0.314453125,0.3662109375,0.4404296875,0.4921875,0.4873046875,0.4287109375,0.3505859375,0.265625,0.21484375,0.2333984375,0.3154296875,0.41796875,0.5,0.5703125,0.6318359375,0.6650390625,0.48046875,0.5126953125,0.541015625,0.556640625,0.5595703125,0.556640625,0.541015625,0.5126953125,0.48046875,0.4541015625,0.4404296875,0.439453125,0.4326171875,0.400390625,0.361328125,0.3447265625,0.3671875,0.421875,0.4892578125,0.564453125,0.6494140625,0.703125,0.6904296875,0.615234375,0.5185546875,0.439453125,0.375,0.3408203125,0.3583984375,0.4248046875,0.5087890625,0.56640625,0.5791015625,0.5869140625,0.615234375,0.646484375,0.6513671875,0.619140625,0.55859375,0.4892578125,0.4345703125,0.4365234375,0.49609375,0.578125,0.63671875,0.6357421875,0.5791015625,0.517578125,0.490234375,0.498046875,0.5205078125,0.5283203125,0.5009765625,0.439453125,0.361328125,0.2685546875,0.2021484375,0.201171875,0.2666015625,0.3603515625,0.439453125,0.5126953125,0.58203125,0.625,0.6298828125,0.60546875,0.578125,0.5693359375,0.5751953125,0.6044921875,0.63671875,0.6455078125,0.6162109375,0.5576171875,0.4892578125,0.4248046875,0.3828125,0.3857421875,0.43359375,0.5,0.5478515625,0.5595703125,0.5458984375,0.4892578125,0.40625,0.341796875,0.326171875,0.36328125,0.4296875,0.4931640625,0.5224609375,0.5166015625,0.494140625,0.484375,0.509765625,0.5693359375,0.6318359375,0.6630859375,0.640625,0.572265625,0.48828125,0.4306640625,0.419921875,0.4248046875,0.4423828125,0.474609375,0.5107421875,0.5400390625,0.556640625,0.5595703125,0.548828125,0.501953125,0.4384765625,0.3955078125,0.3974609375,0.4423828125,0.509765625,0.5791015625,0.63671875,0.6611328125,0.646484375,0.6083984375,0.576171875,0.5693359375,0.5595703125,0.51171875,0.443359375,0.392578125,0.3857421875,0.4248046875,0.4892578125,0.5546875,0.595703125,0.5927734375,0.5458984375,0.4794921875,0.4306640625,0.419921875,0.4296875,0.4716796875,0.5244140625,0.5556640625,0.5419921875,0.4892578125,0.419921875,0.3408203125,0.2490234375,0.1865234375,0.19140625,0.2626953125,0.359375,0.439453125,0.5185546875,0.611328125,0.67578125,0.673828125,0.607421875,0.5166015625,0.439453125,0.3759765625,0.3408203125,0.3544921875,0.4150390625,0.4931640625,0.546875,0.5595703125,0.556640625,0.5419921875,0.513671875,0.48046875,0.451171875,0.4345703125,0.4296875,0.41796875,0.3759765625,0.322265625,0.2919921875,0.3037109375,0.353515625,0.419921875,0.498046875,0.5986328125,0.6826171875,0.7060546875,0.662109375,0.5830078125,0.509765625,0.4443359375,0.4033203125,0.404296875,0.4501953125,0.5146484375,0.5595703125,0.5693359375,0.556640625,0.505859375,0.439453125,0.3935546875,0.39453125,0.4404296875,0.509765625,0.568359375,0.5771484375,0.5322265625,0.466796875,0.421875,0.4306640625,0.4892578125,0.5673828125,0.65234375,0.7021484375,0.6826171875,0.6005859375,0.4990234375,0.419921875,0.3427734375,0.2529296875,0.1923828125,0.197265625,0.2666015625,0.361328125,0.439453125,0.4990234375,0.515625,0.4892578125,0.4443359375,0.4189453125,0.4384765625,0.5,0.5673828125,0.6103515625,0.6064453125,0.5576171875,0.48828125,0.439453125,0.4296875,0.431640625,0.435546875,0.439453125,0.44140625,0.4423828125,0.44140625,0.439453125,0.44140625,0.45703125,0.486328125,0.5224609375,0.5517578125,0.5673828125,0.5693359375,0.556640625,0.5068359375,0.44140625,0.396484375,0.3974609375,0.4423828125,0.509765625,0.5791015625,0.6376953125,0.662109375,0.646484375,0.60546875,0.5693359375,0.5595703125,0.5546875,0.5390625,0.51171875,0.4814453125,0.4560546875,0.4423828125,0.439453125,0.4296875,0.38671875,0.330078125,0.294921875,0.3037109375,0.3525390625,0.419921875,0.4912109375,0.55859375,0.6005859375,0.607421875,0.5869140625,0.564453125,0.5595703125,0.5498046875,0.501953125,0.435546875,0.388671875,0.38671875,0.431640625,0.5,0.55859375,0.5625,0.5087890625,0.431640625,0.375,0.375,0.4296875,0.5078125,0.6083984375,0.689453125,0.7099609375,0.6611328125,0.5771484375,0.5,0.4189453125,0.318359375,0.2392578125,0.224609375,0.27734375,0.36328125,0.439453125,0.498046875,0.505859375,0.4619140625,0.3974609375,0.353515625,0.3623046875,0.419921875,0.478515625,0.490234375,0.4541015625,0.3994140625,0.365234375,0.37890625,0.439453125,0.4990234375,0.5087890625,0.466796875,0.4033203125,0.3603515625,0.3701171875,0.4296875,0.4931640625,0.5244140625,0.51953125,0.5,0.4931640625,0.51953125,0.5791015625,0.654296875,0.7373046875,0.7880859375,0.7705078125,0.69140625,0.5908203125,0.509765625,0.44921875,0.4345703125,0.4697265625,0.5244140625,0.560546875,0.5478515625,0.4892578125,0.419921875,0.361328125,0.333984375,0.345703125,0.3818359375,0.4130859375,0.419921875,0.4296875,0.4775390625,0.544921875,0.59375,0.59765625,0.5556640625,0.4892578125,0.419921875,0.3603515625,0.33203125,0.3427734375,0.37890625,0.412109375,0.419921875,0.43359375,0.4931640625,0.580078125,0.6494140625,0.669921875,0.6357421875,0.5693359375,0.505859375,0.4755859375,0.4814453125,0.501953125,0.5087890625,0.4814453125,0.419921875,0.345703125,0.271484375,0.2412109375,0.2822265625,0.3837890625,0.49609375,0.5791015625,0.6484375,0.6982421875,0.70703125,0.671875,0.6142578125,0.5693359375,0.5595703125,0.5595703125,0.5615234375,0.5654296875,0.568359375,0.5703125,0.5703125,0.5693359375,0.5556640625,0.5048828125,0.4345703125,0.3837890625,0.380859375,0.4228515625,0.4892578125,0.5693359375,0.671875,0.7578125,0.78125,0.736328125,0.6552734375,0.5791015625,0.5107421875,0.458984375,0.4443359375,0.4736328125,0.5263671875,0.568359375,0.5791015625,0.5810546875,0.5830078125,0.5849609375,0.5849609375,0.5830078125,0.5810546875,0.5791015625,0.564453125,0.5048828125,0.419921875,0.353515625,0.3369140625,0.373046875,0.439453125,0.5205078125,0.62109375,0.701171875,0.7177734375,0.66796875,0.583984375,0.509765625,0.4443359375,0.4033203125,0.404296875,0.4501953125,0.5146484375,0.5595703125,0.5693359375,0.5673828125,0.5654296875,0.5634765625,0.5634765625,0.5654296875,0.5673828125,0.5693359375,0.5576171875,0.5,0.4150390625,0.3447265625,0.3232421875,0.35546875,0.419921875,0.498046875,0.5927734375,0.662109375,0.6669921875,0.6064453125,0.517578125,0.439453125,0.3828125,0.3779296875,0.4287109375,0.5009765625,0.55078125,0.546875,0.4892578125,0.4296875,0.4130859375,0.4404296875,0.484375,0.509765625,0.4912109375,0.4296875,0.3701171875,0.3603515625,0.4033203125,0.466796875,0.5087890625,0.4990234375,0.439453125,0.361328125,0.2744140625,0.220703125,0.2373046875,0.3173828125,0.41796875,0.5,0.5703125,0.630859375,0.658203125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.51953125,0.48046875,0.4453125,0.4248046875,0.419921875,0.421875,0.4375,0.4677734375,0.505859375,0.5380859375,0.5556640625,0.5595703125,0.548828125,0.5009765625,0.4375,0.392578125,0.3916015625,0.4345703125,0.5,0.5771484375,0.67578125,0.7548828125,0.7734375,0.724609375,0.6435546875,0.5693359375,0.4990234375,0.431640625,0.38671875,0.3779296875,0.3974609375,0.421875,0.4296875,0.4423828125,0.490234375,0.5546875,0.599609375,0.5986328125,0.5546875,0.4892578125,0.4306640625,0.4140625,0.4384765625,0.48046875,0.505859375,0.48828125,0.4296875,0.3759765625,0.3837890625,0.453125,0.546875,0.61328125,0.6162109375,0.5595703125,0.48046875,0.3896484375,0.328125,0.3349609375,0.4052734375,0.5009765625,0.5791015625,0.64453125,0.6787109375,0.66015625,0.59375,0.5107421875,0.453125,0.439453125,0.4501953125,0.49609375,0.55859375,0.6005859375,0.5986328125,0.5546875,0.4892578125,0.421875,0.3662109375,0.341796875,0.357421875,0.3974609375,0.431640625,0.439453125,0.4326171875,0.4072265625,0.3818359375,0.3857421875,0.4287109375,0.49609375,0.5693359375,0.6259765625,0.619140625,0.5478515625,0.451171875,0.3798828125,0.373046875,0.4296875,0.5029296875,0.5712890625,0.6142578125,0.6201171875,0.59765625,0.57421875,0.5693359375,0.5673828125,0.55078125,0.5185546875,0.48046875,0.4482421875,0.431640625,0.4296875,0.423828125,0.3935546875,0.359375,0.3505859375,0.3798828125,0.439453125,0.509765625,0.5751953125,0.6162109375,0.6103515625,0.55859375,0.4892578125,0.439453125,0.4296875,0.4228515625,0.390625,0.3525390625,0.337890625,0.3623046875,0.419921875,0.4892578125,0.5595703125,0.6220703125,0.6552734375,0.6484375,0.6171875,0.5869140625,0.5791015625,0.5888671875,0.6298828125,0.6806640625,0.7080078125,0.693359375,0.6396484375,0.5693359375,0.4892578125,0.3935546875,0.3251953125,0.322265625,0.38671875,0.4794921875,0.5595703125,0.638671875,0.73046875,0.794921875,0.7939453125,0.7275390625,0.6357421875,0.5595703125,0.490234375,0.423828125,0.380859375,0.3740234375,0.3935546875,0.4150390625,0.419921875,0.421875,0.4375,0.46875,0.5087890625,0.5439453125,0.5634765625,0.5693359375,0.560546875,0.5205078125,0.4658203125,0.43359375,0.4423828125,0.4912109375,0.5595703125,0.6357421875,0.7216796875,0.7763671875,0.7626953125,0.6865234375,0.5888671875,0.509765625,0.439453125,0.3798828125,0.3515625,0.3623046875,0.3994140625,0.431640625,0.439453125,0.431640625,0.3994140625,0.3623046875,0.3515625,0.3798828125,0.439453125,0.509765625,0.5673828125,0.5771484375,0.5341796875,0.470703125,0.4267578125,0.43359375,0.4892578125,0.568359375,0.669921875,0.75390625,0.7783203125,0.7353515625,0.6552734375,0.5791015625,0.5009765625,0.408203125,0.33984375,0.3349609375,0.3955078125,0.4833984375,0.5595703125,0.615234375,0.6181640625,0.56640625,0.4921875,0.44140625,0.4443359375,0.5,0.568359375,0.626953125,0.6572265625,0.6474609375,0.611328125,0.5791015625,0.5693359375,0.5673828125,0.56640625,0.564453125,0.5634765625,0.5625,0.560546875,0.5595703125,0.5546875,0.5390625,0.51171875,0.4814453125,0.4560546875,0.4423828125,0.439453125,0.4306640625,0.396484375,0.35546875,0.3388671875,0.36328125,0.419921875,0.4892578125,0.556640625,0.6025390625,0.6064453125,0.5634765625,0.5,0.4521484375,0.439453125,0.4404296875,0.4541015625,0.4814453125,0.515625,0.546875,0.564453125,0.5693359375,0.5615234375,0.5234375,0.4736328125,0.4453125,0.4599609375,0.5107421875,0.5791015625,0.6435546875,0.673828125,0.650390625,0.578125,0.490234375,0.431640625,0.419921875,0.4130859375,0.3818359375,0.345703125,0.333984375,0.361328125,0.419921875,0.4892578125,0.5498046875,0.5703125,0.5498046875,0.513671875,0.494140625,0.517578125,0.5791015625,0.65625,0.7392578125,0.78515625,0.7626953125,0.6796875,0.578125,0.5,0.4248046875,0.341796875,0.291015625,0.3076171875,0.3876953125,0.48828125,0.5693359375,0.62890625,0.638671875,0.595703125,0.5322265625,0.490234375,0.5,0.5595703125,0.619140625,0.6318359375,0.5947265625,0.53515625,0.494140625,0.5029296875,0.5595703125,0.6162109375,0.6279296875,0.591796875,0.537109375,0.5009765625,0.51171875,0.5693359375,0.623046875,0.6142578125,0.5419921875,0.4462890625,0.376953125,0.373046875,0.4296875,0.5107421875,0.6123046875,0.6923828125,0.7080078125,0.654296875,0.568359375,0.4892578125,0.4296875,0.4208984375,0.4638671875,0.529296875,0.57421875,0.5673828125,0.509765625,0.443359375,0.400390625,0.4013671875,0.4482421875,0.5126953125,0.5595703125,0.5693359375,0.576171875,0.6083984375,0.646484375,0.6611328125,0.63671875,0.5791015625,0.509765625,0.443359375,0.4013671875,0.4052734375,0.4541015625,0.521484375,0.5693359375,0.5791015625,0.583984375,0.6064453125,0.626953125,0.62109375,0.578125,0.5107421875,0.439453125,0.3837890625,0.3876953125,0.4541015625,0.544921875,0.611328125,0.615234375,0.5595703125,0.478515625,0.373046875,0.283203125,0.251953125,0.2900390625,0.3662109375,0.439453125,0.505859375,0.5537109375,0.5615234375,0.52734375,0.4716796875,0.4296875,0.419921875,0.419921875,0.4189453125,0.4169921875,0.4169921875,0.4169921875,0.41796875,0.419921875,0.4140625,0.384765625,0.353515625,0.3466796875,0.3779296875,0.439453125,0.509765625,0.5859375,0.6689453125,0.71875,0.7001953125,0.6201171875,0.51953125,0.439453125,0.37109375,0.3173828125,0.3017578125,0.3271484375,0.3779296875,0.4189453125,0.4296875,0.4306640625,0.4296875,0.4267578125,0.4228515625,0.419921875,0.4189453125,0.419921875,0.4150390625,0.3955078125,0.37890625,0.390625,0.4384765625,0.5078125,0.5791015625,0.6552734375,0.736328125,0.78125,0.7578125,0.671875,0.5693359375,0.4892578125,0.419921875,0.359375,0.3291015625,0.33984375,0.376953125,0.41015625,0.419921875,0.421875,0.4248046875,0.4287109375,0.431640625,0.4326171875,0.431640625,0.4296875,0.421875,0.396484375,0.376953125,0.38671875,0.4345703125,0.505859375,0.5791015625,0.658203125,0.75,0.8125,0.8076171875,0.736328125,0.6396484375,0.5595703125,0.498046875,0.48046875,0.5078125,0.5546875,0.583984375,0.568359375,0.509765625,0.4521484375,0.4482421875,0.4990234375,0.57421875,0.626953125,0.625,0.5693359375,0.5126953125,0.5048828125,0.544921875,0.6044921875,0.642578125,0.6298828125,0.5693359375,0.48828125,0.3876953125,0.3076171875,0.291015625,0.341796875,0.4248046875,0.5,0.564453125,0.607421875,0.6064453125,0.5478515625,0.4697265625,0.3935546875,0.34375,0.3251953125,0.3212890625,0.34375,0.3955078125,0.46484375,0.52734375,0.5625,0.5703125,0.5615234375,0.5234375,0.4697265625,0.4287109375,0.4228515625,0.451171875,0.5,0.55859375,0.640625,0.7158203125,0.748046875,0.7275390625,0.67578125,0.6220703125,0.5654296875,0.4921875,0.419921875,0.373046875,0.3583984375,0.3662109375,0.376953125,0.396484375,0.4423828125,0.4970703125,0.533203125,0.5322265625,0.4970703125,0.4482421875,0.4033203125,0.3876953125,0.400390625,0.4248046875,0.4375,0.421875,0.376953125,0.341796875,0.3701171875,0.45703125,0.5595703125,0.6279296875,0.6279296875,0.5703125,0.494140625,0.4189453125,0.3828125,0.4140625,0.501953125,0.6015625,0.673828125,0.7275390625,0.7421875,0.69921875,0.6083984375,0.5087890625,0.443359375,0.4287109375,0.4365234375,0.46875,0.5107421875,0.537109375,0.5322265625,0.4970703125,0.4482421875,0.3974609375,0.3583984375,0.3447265625,0.361328125,0.39453125,0.421875,0.4287109375,0.423828125,0.4052734375,0.39453125,0.4150390625,0.4716796875,0.5478515625,0.6220703125,0.67578125,0.6572265625,0.5625,0.4365234375,0.341796875,0.3232421875,0.376953125,0.451171875,0.52734375,0.587890625,0.6171875,0.6201171875,0.6162109375,0.6220703125,0.625,0.5966796875,0.5361328125,0.462890625,0.40234375,0.3740234375,0.376953125,0.3828125,0.3759765625,0.37109375,0.38671875,0.4287109375,0.4892578125,0.55078125,0.60546875,0.623046875,0.587890625,0.51171875,0.4287109375,0.3798828125,0.376953125,0.380859375,0.361328125,0.3330078125,0.3212890625,0.3408203125,0.3876953125,0.4482421875,0.5126953125,0.5849609375,0.646484375,0.6806640625,0.6845703125,0.6767578125,0.673828125,0.6826171875,0.7177734375,0.759765625,0.7763671875,0.7509765625,0.6923828125,0.6220703125,0.541015625,0.4404296875,0.3623046875,0.3486328125,0.4033203125,0.4912109375,0.5703125,0.646484375,0.728515625,0.7802734375,0.771484375,0.708984375,0.6298828125,0.5703125,0.5166015625,0.455078125,0.3994140625,0.3603515625,0.341796875,0.333984375,0.3251953125,0.3212890625,0.34375,0.3994140625,0.4775390625,0.5537109375,0.603515625,0.6220703125,0.6220703125,0.587890625,0.5322265625,0.48828125,0.48046875,0.5126953125,0.5703125,0.6376953125,0.7158203125,0.7685546875,0.763671875,0.7021484375,0.6201171875,0.55078125,0.48828125,0.4287109375,0.390625,0.3837890625,0.40234375,0.4228515625,0.4287109375,0.4228515625,0.40234375,0.3837890625,0.390625,0.4287109375,0.48828125,0.55078125,0.6015625,0.6044921875,0.5546875,0.4794921875,0.419921875,0.4091796875,0.4482421875,0.5107421875,0.611328125,0.716796875,0.78125,0.7822265625,0.7353515625,0.673828125,0.6044921875,0.517578125,0.4443359375,0.421875,0.4541015625,0.5146484375,0.5703125,0.611328125,0.6103515625,0.5654296875,0.50390625,0.4599609375,0.458984375,0.5,0.5537109375,0.611328125,0.65625,0.6708984375,0.658203125,0.6357421875,0.6220703125,0.6123046875,0.6044921875,0.5986328125,0.59375,0.587890625,0.580078125,0.5703125,0.556640625,0.5322265625,0.4990234375,0.4658203125,0.4423828125,0.4306640625,0.4287109375,0.4208984375,0.3876953125,0.345703125,0.3251953125,0.3408203125,0.3876953125,0.4482421875,0.5087890625,0.556640625,0.572265625,0.5458984375,0.4931640625,0.4482421875,0.4287109375,0.421875,0.431640625,0.46484375,0.515625,0.568359375,0.60546875,0.6220703125,0.6240234375,0.6025390625,0.5703125,0.5537109375,0.5693359375,0.6142578125,0.673828125,0.7236328125,0.7197265625,0.646484375,0.5234375,0.40234375,0.33203125,0.3251953125,0.330078125,0.31640625,0.30078125,0.3017578125,0.3330078125,0.38671875,0.4482421875,0.5029296875,0.533203125,0.5419921875,0.544921875,0.5625,0.6064453125,0.673828125,0.74609375,0.806640625,0.8193359375,0.7646484375,0.6630859375,0.5634765625,0.5,0.4423828125,0.37890625,0.3427734375,0.3662109375,0.4453125,0.5419921875,0.6220703125,0.6806640625,0.6845703125,0.6328125,0.55859375,0.5068359375,0.51171875,0.5703125,0.6328125,0.6552734375,0.630859375,0.5791015625,0.53515625,0.5302734375,0.5703125,0.61328125,0.6279296875,0.6103515625,0.5810546875,0.564453125,0.578125,0.6220703125,0.6552734375,0.62109375,0.5224609375,0.40625,0.3271484375,0.3203125,0.376953125,0.458984375,0.5615234375,0.6435546875,0.662109375,0.611328125,0.5263671875,0.4482421875,0.388671875,0.384765625,0.4404296875,0.5234375,0.5888671875,0.5986328125,0.55078125,0.494140625,0.46484375,0.4765625,0.525390625,0.5849609375,0.6220703125,0.6220703125,0.6181640625,0.6376953125,0.666015625,0.677734375,0.658203125,0.611328125,0.55078125,0.49609375,0.4716796875,0.4951171875,0.55859375,0.62890625,0.671875,0.673828125,0.666015625,0.6640625,0.6533203125,0.619140625,0.5615234375,0.4931640625,0.4287109375,0.380859375,0.388671875,0.455078125,0.5439453125,0.6103515625,0.6181640625,0.5703125,0.5,0.408203125,0.3271484375,0.294921875,0.318359375,0.3740234375,0.4287109375,0.4765625,0.5009765625,0.4873046875,0.4384765625,0.376953125,0.3349609375,0.3251953125,0.32421875,0.318359375,0.310546875,0.3056640625,0.3076171875,0.3154296875,0.3251953125,0.33203125,0.33203125,0.337890625,0.3671875,0.421875,0.4873046875,0.55078125,0.6162109375,0.6826171875,0.7119140625,0.6796875,0.595703125,0.5,0.4287109375,0.3662109375,0.3095703125,0.279296875,0.287109375,0.3232421875,0.3603515625,0.376953125,0.384765625,0.3798828125,0.3623046875,0.33984375,0.3232421875,0.318359375,0.3251953125,0.3349609375,0.349609375,0.3828125,0.4443359375,0.5263671875,0.607421875,0.673828125,0.736328125,0.7890625,0.7958984375,0.736328125,0.62890625,0.521484375,0.4482421875,0.3837890625,0.318359375,0.271484375,0.2607421875,0.28125,0.3095703125,0.3251953125,0.3388671875,0.3583984375,0.3798828125,0.3935546875,0.39453125,0.3876953125,0.376953125,0.3642578125,0.3505859375,0.361328125,0.4140625,0.5009765625,0.595703125,0.673828125,0.7509765625,0.83203125,0.8759765625,0.8486328125,0.7587890625,0.65234375,0.5703125,0.5087890625,0.4892578125,0.517578125,0.5693359375,0.6064453125,0.6015625,0.55078125,0.5,0.4931640625,0.5361328125,0.6025390625,0.654296875,0.6611328125,0.6220703125,0.58203125,0.5869140625,0.630859375,0.6826171875,0.70703125,0.6845703125,0.6220703125,0.5419921875,0.4453125,0.3662109375,0.3427734375,0.37890625,0.4423828125,0.5,0.5478515625,0.576171875,0.5703125,0.5849609375,0.4853515625,0.376953125,0.296875,0.2587890625,0.2392578125,0.2529296875,0.30859375,0.3916015625,0.4716796875,0.51953125,0.5302734375,0.5263671875,0.51171875,0.4912109375,0.474609375,0.4716796875,0.4814453125,0.5,0.5234375,0.5654296875,0.61328125,0.6484375,0.6611328125,0.6533203125,0.634765625,0.6064453125,0.544921875,0.4609375,0.3857421875,0.3447265625,0.341796875,0.3642578125,0.392578125,0.4267578125,0.453125,0.4580078125,0.44140625,0.416015625,0.39453125,0.3779296875,0.37109375,0.375,0.3828125,0.38671875,0.380859375,0.3642578125,0.359375,0.4072265625,0.494140625,0.576171875,0.6142578125,0.5927734375,0.5302734375,0.458984375,0.4052734375,0.4052734375,0.4716796875,0.5810546875,0.6806640625,0.740234375,0.7783203125,0.7783203125,0.7255859375,0.6357421875,0.541015625,0.4814453125,0.46875,0.4697265625,0.4716796875,0.4697265625,0.4580078125,0.4375,0.4150390625,0.39453125,0.3779296875,0.373046875,0.3857421875,0.4140625,0.4443359375,0.46484375,0.46875,0.462890625,0.44140625,0.4248046875,0.4384765625,0.4892578125,0.5615234375,0.634765625,0.6884765625,0.666015625,0.5654296875,0.43359375,0.3330078125,0.310546875,0.3642578125,0.4365234375,0.5068359375,0.560546875,0.5908203125,0.6025390625,0.61328125,0.634765625,0.650390625,0.6220703125,0.546875,0.4521484375,0.376953125,0.3486328125,0.3642578125,0.388671875,0.4111328125,0.435546875,0.46875,0.51171875,0.55859375,0.6044921875,0.6396484375,0.6279296875,0.5634765625,0.46875,0.38671875,0.3505859375,0.3642578125,0.3837890625,0.380859375,0.3583984375,0.3359375,0.33203125,0.353515625,0.39453125,0.4462890625,0.521484375,0.607421875,0.6796875,0.72265625,0.73828125,0.740234375,0.748046875,0.7763671875,0.806640625,0.8095703125,0.7724609375,0.70703125,0.634765625,0.552734375,0.4462890625,0.35546875,0.328125,0.37109375,0.4521484375,0.5302734375,0.6025390625,0.666015625,0.693359375,0.6708984375,0.6142578125,0.55859375,0.5302734375,0.5087890625,0.4775390625,0.4326171875,0.380859375,0.3291015625,0.2880859375,0.2587890625,0.23828125,0.2490234375,0.30859375,0.408203125,0.5166015625,0.5966796875,0.634765625,0.65234375,0.6318359375,0.580078125,0.521484375,0.4873046875,0.4921875,0.5302734375,0.58203125,0.650390625,0.708984375,0.7294921875,0.7041015625,0.6533203125,0.6044921875,0.5576171875,0.5078125,0.46875,0.4521484375,0.4560546875,0.4658203125,0.46875,0.4658203125,0.4560546875,0.4521484375,0.46875,0.5078125,0.5576171875,0.6044921875,0.6416015625,0.6376953125,0.5849609375,0.501953125,0.4248046875,0.38671875,0.39453125,0.4267578125,0.509765625,0.6240234375,0.7265625,0.78125,0.7783203125,0.740234375,0.6884765625,0.619140625,0.5498046875,0.5048828125,0.4951171875,0.509765625,0.5302734375,0.544921875,0.5439453125,0.5263671875,0.5029296875,0.4853515625,0.484375,0.5,0.5244140625,0.5703125,0.6240234375,0.6630859375,0.673828125,0.66015625,0.634765625,0.6103515625,0.59375,0.5849609375,0.580078125,0.5712890625,0.5546875,0.5302734375,0.5029296875,0.4765625,0.4580078125,0.453125,0.458984375,0.466796875,0.46875,0.4609375,0.42578125,0.375,0.3359375,0.328125,0.3515625,0.39453125,0.4443359375,0.501953125,0.5458984375,0.5576171875,0.5361328125,0.4990234375,0.46875,0.443359375,0.4287109375,0.44140625,0.4853515625,0.546875,0.6015625,0.634765625,0.6572265625,0.662109375,0.6572265625,0.654296875,0.6669921875,0.697265625,0.740234375,0.76953125,0.728515625,0.6103515625,0.4521484375,0.31640625,0.2509765625,0.2587890625,0.28125,0.291015625,0.2919921875,0.2978515625,0.31640625,0.3505859375,0.39453125,0.4365234375,0.4697265625,0.501953125,0.5439453125,0.6005859375,0.6689453125,0.740234375,0.806640625,0.8408203125,0.814453125,0.728515625,0.6181640625,0.533203125,0.5,0.474609375,0.435546875,0.408203125,0.421875,0.4794921875,0.5595703125,0.634765625,0.6923828125,0.6904296875,0.626953125,0.5380859375,0.474609375,0.47265625,0.5302734375,0.5966796875,0.638671875,0.6376953125,0.599609375,0.548828125,0.521484375,0.5302734375,0.5478515625,0.5634765625,0.576171875,0.587890625,0.6015625,0.6171875,0.634765625,0.63671875,0.576171875,0.4658203125,0.3564453125,0.294921875,0.3037109375,0.3642578125,0.4443359375,0.5419921875,0.6162109375,0.6240234375,0.5634765625,0.4736328125,0.39453125,0.3359375,0.3349609375,0.40234375,0.5078125,0.599609375,0.6337890625,0.6044921875,0.564453125,0.55078125,0.568359375,0.607421875,0.642578125,0.6533203125,0.634765625,0.615234375,0.6181640625,0.640625,0.6630859375,0.6669921875,0.6455078125,0.6044921875,0.5673828125,0.56640625,0.607421875,0.673828125,0.732421875,0.755859375,0.740234375,0.71484375,0.6884765625,0.6572265625,0.6162109375,0.56640625,0.515625,0.46875,0.4326171875,0.43359375,0.47265625,0.5263671875,0.5654296875,0.56640625,0.5302734375,0.4814453125,0.4306640625,0.39453125,0.3896484375,0.4130859375,0.4462890625,0.46875,0.482421875,0.470703125,0.427734375,0.3642578125,0.302734375,0.2666015625,0.2587890625,0.2548828125,0.240234375,0.220703125,0.208984375,0.2138671875,0.2333984375,0.2587890625,0.2861328125,0.3212890625,0.369140625,0.4306640625,0.49609375,0.5556640625,0.6044921875,0.65234375,0.6953125,0.70703125,0.6708984375,0.5986328125,0.5224609375,0.46875,0.4189453125,0.357421875,0.306640625,0.2861328125,0.3017578125,0.3349609375,0.3642578125,0.3837890625,0.375,0.3369140625,0.2861328125,0.248046875,0.2392578125,0.2587890625,0.2890625,0.3408203125,0.4189453125,0.5166015625,0.6123046875,0.6884765625,0.740234375,0.7822265625,0.7998046875,0.7646484375,0.673828125,0.5546875,0.453125,0.39453125,0.34375,0.2783203125,0.220703125,0.1923828125,0.201171875,0.23046875,0.2587890625,0.291015625,0.337890625,0.3857421875,0.4140625,0.4130859375,0.390625,0.3642578125,0.3369140625,0.322265625,0.34765625,0.427734375,0.544921875,0.658203125,0.740234375,0.814453125,0.8837890625,0.9033203125,0.84765625,0.734375,0.6142578125,0.5302734375,0.4677734375,0.451171875,0.48828125,0.5576171875,0.619140625,0.63671875,0.6044921875,0.5634765625,0.5458984375,0.5576171875,0.5927734375,0.6298828125,0.646484375,0.634765625,0.626953125,0.654296875,0.7041015625,0.7421875,0.7431640625,0.7021484375,0.634765625,0.5595703125,0.4794921875,0.421875,0.408203125,0.435546875,0.474609375,0.5,0.517578125,0.52734375,0.5244140625,0.6298828125,0.5380859375,0.4189453125,0.3173828125,0.2587890625,0.2197265625,0.2119140625,0.2509765625,0.3251953125,0.40625,0.4580078125,0.46875,0.47265625,0.4873046875,0.5078125,0.5244140625,0.52734375,0.517578125,0.5,0.48046875,0.46875,0.474609375,0.501953125,0.5439453125,0.5810546875,0.6044921875,0.6123046875,0.57421875,0.4970703125,0.4140625,0.361328125,0.357421875,0.39453125,0.435546875,0.453125,0.44140625,0.40625,0.369140625,0.3525390625,0.3642578125,0.380859375,0.38671875,0.3828125,0.375,0.37109375,0.3779296875,0.39453125,0.4248046875,0.4892578125,0.5625,0.6044921875,0.59375,0.5400390625,0.46875,0.40234375,0.3671875,0.39453125,0.4853515625,0.6044921875,0.6982421875,0.740234375,0.7607421875,0.7548828125,0.712890625,0.6455078125,0.5791015625,0.5380859375,0.5302734375,0.5234375,0.4921875,0.44140625,0.3896484375,0.35546875,0.349609375,0.3642578125,0.38671875,0.419921875,0.4609375,0.4970703125,0.51953125,0.5283203125,0.5302734375,0.521484375,0.4892578125,0.4521484375,0.44140625,0.4716796875,0.533203125,0.6044921875,0.6591796875,0.64453125,0.5576171875,0.44140625,0.3544921875,0.33984375,0.39453125,0.462890625,0.5146484375,0.541015625,0.546875,0.548828125,0.5654296875,0.6044921875,0.6376953125,0.619140625,0.546875,0.4521484375,0.3798828125,0.361328125,0.39453125,0.4404296875,0.4873046875,0.5302734375,0.5634765625,0.587890625,0.6103515625,0.634765625,0.6484375,0.6123046875,0.5302734375,0.435546875,0.37109375,0.359375,0.39453125,0.4345703125,0.4482421875,0.4306640625,0.3916015625,0.3564453125,0.345703125,0.3642578125,0.3984375,0.4638671875,0.5517578125,0.640625,0.705078125,0.7353515625,0.740234375,0.7470703125,0.7724609375,0.794921875,0.7900390625,0.74609375,0.677734375,0.6044921875,0.521484375,0.4111328125,0.314453125,0.2783203125,0.314453125,0.392578125,0.46875,0.5361328125,0.578125,0.5771484375,0.5380859375,0.48828125,0.4609375,0.46875,0.4892578125,0.50390625,0.494140625,0.44921875,0.3798828125,0.310546875,0.2587890625,0.216796875,0.19921875,0.234375,0.3251953125,0.4443359375,0.5458984375,0.6044921875,0.6416015625,0.6435546875,0.6015625,0.53515625,0.4765625,0.453125,0.46875,0.501953125,0.556640625,0.619140625,0.662109375,0.6748046875,0.66015625,0.634765625,0.6064453125,0.5751953125,0.546875,0.5302734375,0.5263671875,0.5283203125,0.5302734375,0.5283203125,0.5263671875,0.5302734375,0.546875,0.5751953125,0.6064453125,0.634765625,0.6572265625,0.654296875,0.61328125,0.5380859375,0.4541015625,0.392578125,0.3642578125,0.3583984375,0.4052734375,0.5048828125,0.6240234375,0.716796875,0.75390625,0.740234375,0.7109375,0.669921875,0.6181640625,0.56640625,0.521484375,0.490234375,0.46875,0.4541015625,0.455078125,0.47265625,0.49609375,0.513671875,0.5146484375,0.5,0.490234375,0.5146484375,0.568359375,0.6240234375,0.6533203125,0.6435546875,0.6044921875,0.5634765625,0.5400390625,0.53515625,0.5380859375,0.533203125,0.509765625,0.46875,0.4267578125,0.400390625,0.40625,0.44140625,0.48828125,0.5224609375,0.5302734375,0.5224609375,0.4873046875,0.4306640625,0.375,0.3427734375,0.341796875,0.3642578125,0.3994140625,0.4658203125,0.541015625,0.5927734375,0.6025390625,0.57421875,0.5302734375,0.4814453125,0.4306640625,0.4052734375,0.4248046875,0.484375,0.552734375,0.6044921875,0.6484375,0.6826171875,0.701171875,0.70703125,0.7080078125,0.7177734375,0.740234375,0.748046875,0.6826171875,0.546875,0.388671875,0.2705078125,0.2294921875,0.2587890625,0.3017578125,0.33203125,0.3447265625,0.341796875,0.3369140625,0.341796875,0.3642578125,0.388671875,0.412109375,0.447265625,0.5048828125,0.58203125,0.6650390625,0.740234375,0.8017578125,0.8134765625,0.7587890625,0.6572265625,0.5537109375,0.4970703125,0.5,0.5107421875,0.4951171875,0.46875,0.4580078125,0.48046875,0.53515625,0.6044921875,0.6611328125,0.6552734375,0.5849609375,0.48828125,0.41796875,0.412109375,0.46875,0.5419921875,0.60546875,0.6328125,0.6103515625,0.552734375,0.498046875,0.46875,0.4560546875,0.4697265625,0.5107421875,0.5625,0.603515625,0.6171875,0.6044921875,0.5712890625,0.490234375,0.38671875,0.30859375,0.2890625,0.3271484375,0.39453125,0.4736328125,0.5634765625,0.6240234375,0.6162109375,0.5419921875,0.4443359375,0.3642578125,0.3046875,0.2998046875,0.3671875,0.48046875,0.5888671875,0.64453125,0.634765625,0.615234375,0.6181640625,0.640625,0.6630859375,0.6669921875,0.6455078125,0.6044921875,0.564453125,0.55078125,0.568359375,0.607421875,0.642578125,0.6533203125,0.634765625,0.6181640625,0.6376953125,0.6904296875,0.748046875,0.783203125,0.7783203125,0.740234375,0.6943359375,0.6513671875,0.6162109375,0.5908203125,0.572265625,0.5537109375,0.5302734375,0.5068359375,0.4951171875,0.49609375,0.5029296875,0.50390625,0.4921875,0.46875,0.447265625,0.4462890625,0.4697265625,0.5048828125,0.5341796875,0.54296875,0.5302734375,0.5048828125,0.4580078125,0.39453125,0.3310546875,0.2841796875,0.2626953125,0.2587890625,0.2529296875,0.2265625,0.1923828125,0.1728515625,0.181640625,0.21484375,0.2587890625,0.30859375,0.3720703125,0.4443359375,0.513671875,0.568359375,0.6064453125,0.634765625,0.662109375,0.68359375,0.6845703125,0.6572265625,0.609375,0.5615234375,0.5302734375,0.4951171875,0.4326171875,0.36328125,0.3203125,0.3173828125,0.349609375,0.39453125,0.4287109375,0.4189453125,0.36328125,0.2900390625,0.234375,0.224609375,0.2587890625,0.310546875,0.38671875,0.482421875,0.580078125,0.658203125,0.7099609375,0.740234375,0.7607421875,0.75,0.6904296875,0.5908203125,0.482421875,0.40234375,0.3642578125,0.330078125,0.271484375,0.208984375,0.1728515625,0.177734375,0.2138671875,0.2587890625,0.3125,0.388671875,0.4609375,0.4970703125,0.484375,0.44140625,0.39453125,0.3486328125,0.3154296875,0.3310546875,0.4111328125,0.53515625,0.65625,0.740234375,0.8134765625,0.875,0.880859375,0.8095703125,0.6826171875,0.5556640625,0.46875,0.4072265625,0.3896484375,0.43359375,0.5185546875,0.6044921875,0.646484375,0.634765625,0.6064453125,0.572265625,0.5458984375,0.541015625,0.5576171875,0.5830078125,0.6044921875,0.6328125,0.6884765625,0.7451171875,0.767578125,0.740234375,0.6767578125,0.6044921875,0.53515625,0.48046875,0.4580078125,0.46875,0.4951171875,0.5107421875,0.5,0.4814453125,0.4716796875,0.474609375,0.673828125,0.6142578125,0.5068359375,0.3994140625,0.3251953125,0.2685546875,0.236328125,0.248046875,0.30078125,0.3701171875,0.41796875,0.4287109375,0.4375,0.4755859375,0.529296875,0.5703125,0.576171875,0.5478515625,0.5,0.4443359375,0.3837890625,0.34765625,0.361328125,0.419921875,0.4931640625,0.55078125,0.58984375,0.5791015625,0.51953125,0.4443359375,0.39453125,0.3974609375,0.4482421875,0.4990234375,0.505859375,0.462890625,0.396484375,0.3447265625,0.337890625,0.376953125,0.421875,0.4375,0.4248046875,0.400390625,0.3876953125,0.4033203125,0.4482421875,0.5068359375,0.583984375,0.642578125,0.646484375,0.5908203125,0.505859375,0.4287109375,0.36328125,0.3349609375,0.3681640625,0.458984375,0.568359375,0.6474609375,0.673828125,0.6806640625,0.67578125,0.6552734375,0.623046875,0.5927734375,0.57421875,0.5703125,0.55859375,0.505859375,0.4248046875,0.3515625,0.318359375,0.33203125,0.376953125,0.431640625,0.4921875,0.544921875,0.57421875,0.5791015625,0.572265625,0.5703125,0.5595703125,0.515625,0.4580078125,0.4228515625,0.431640625,0.4814453125,0.55078125,0.6083984375,0.6064453125,0.5439453125,0.455078125,0.392578125,0.390625,0.4482421875,0.51171875,0.541015625,0.53125,0.501953125,0.4833984375,0.4990234375,0.55078125,0.599609375,0.5966796875,0.5390625,0.4599609375,0.40234375,0.3994140625,0.4482421875,0.509765625,0.5703125,0.6123046875,0.6279296875,0.623046875,0.6162109375,0.6220703125,0.619140625,0.5703125,0.4873046875,0.4111328125,0.3759765625,0.3935546875,0.4482421875,0.5048828125,0.5341796875,0.5224609375,0.4736328125,0.4140625,0.376953125,0.376953125,0.39453125,0.4375,0.505859375,0.580078125,0.6376953125,0.66796875,0.673828125,0.6806640625,0.70703125,0.7333984375,0.7314453125,0.69140625,0.6240234375,0.55078125,0.46875,0.359375,0.265625,0.2333984375,0.2724609375,0.3525390625,0.4287109375,0.4912109375,0.5146484375,0.490234375,0.4375,0.3935546875,0.3896484375,0.4287109375,0.484375,0.544921875,0.5771484375,0.5546875,0.4814453125,0.39453125,0.3251953125,0.2626953125,0.2099609375,0.203125,0.2626953125,0.3701171875,0.4775390625,0.55078125,0.6064453125,0.630859375,0.6064453125,0.5439453125,0.4736328125,0.4306640625,0.4287109375,0.4453125,0.482421875,0.53515625,0.5859375,0.619140625,0.62890625,0.6220703125,0.6103515625,0.5966796875,0.5830078125,0.57421875,0.5703125,0.5693359375,0.5703125,0.5693359375,0.5703125,0.57421875,0.5830078125,0.5966796875,0.6103515625,0.6220703125,0.6328125,0.640625,0.6259765625,0.5791015625,0.5068359375,0.43359375,0.376953125,0.3359375,0.3408203125,0.4052734375,0.509765625,0.611328125,0.669921875,0.673828125,0.6650390625,0.6572265625,0.638671875,0.599609375,0.5439453125,0.482421875,0.4287109375,0.3876953125,0.388671875,0.43359375,0.4951171875,0.5390625,0.5400390625,0.5,0.4599609375,0.46484375,0.51171875,0.5732421875,0.611328125,0.6025390625,0.55078125,0.4970703125,0.4736328125,0.48046875,0.5,0.5068359375,0.4833984375,0.4287109375,0.373046875,0.3447265625,0.365234375,0.4287109375,0.505859375,0.55859375,0.5703125,0.564453125,0.5341796875,0.484375,0.4287109375,0.3876953125,0.3720703125,0.376953125,0.400390625,0.466796875,0.5576171875,0.6298828125,0.654296875,0.626953125,0.5703125,0.5009765625,0.4189453125,0.357421875,0.3525390625,0.4052734375,0.4833984375,0.55078125,0.6123046875,0.666015625,0.697265625,0.6982421875,0.6826171875,0.6689453125,0.673828125,0.6669921875,0.5966796875,0.4755859375,0.3525390625,0.279296875,0.275390625,0.3251953125,0.384765625,0.4296875,0.4453125,0.4287109375,0.396484375,0.375,0.376953125,0.384765625,0.3857421875,0.400390625,0.4443359375,0.515625,0.5986328125,0.673828125,0.732421875,0.7333984375,0.669921875,0.572265625,0.4892578125,0.4638671875,0.5,0.5400390625,0.5419921875,0.509765625,0.4716796875,0.4580078125,0.4873046875,0.55078125,0.6083984375,0.6044921875,0.5361328125,0.443359375,0.3759765625,0.3720703125,0.4287109375,0.505859375,0.587890625,0.638671875,0.6298828125,0.5673828125,0.48828125,0.4287109375,0.3896484375,0.396484375,0.4521484375,0.52734375,0.583984375,0.5908203125,0.55078125,0.4892578125,0.3974609375,0.3115234375,0.275390625,0.3037109375,0.373046875,0.4482421875,0.5263671875,0.611328125,0.662109375,0.6435546875,0.5615234375,0.458984375,0.376953125,0.314453125,0.2978515625,0.3466796875,0.4462890625,0.552734375,0.6162109375,0.6220703125,0.6181640625,0.6376953125,0.666015625,0.677734375,0.658203125,0.611328125,0.55078125,0.494140625,0.46484375,0.4765625,0.525390625,0.5849609375,0.6220703125,0.6220703125,0.62109375,0.6552734375,0.7109375,0.7548828125,0.7626953125,0.73046875,0.673828125,0.6123046875,0.5615234375,0.53515625,0.5380859375,0.55859375,0.57421875,0.5703125,0.5576171875,0.5390625,0.513671875,0.4853515625,0.4599609375,0.44140625,0.4287109375,0.4296875,0.46875,0.5361328125,0.599609375,0.62890625,0.615234375,0.5703125,0.5146484375,0.4482421875,0.3837890625,0.3408203125,0.32421875,0.32421875,0.3251953125,0.3173828125,0.28125,0.2353515625,0.2099609375,0.220703125,0.265625,0.3251953125,0.390625,0.4658203125,0.53515625,0.5830078125,0.60546875,0.61328125,0.6220703125,0.6318359375,0.6396484375,0.6376953125,0.6240234375,0.6025390625,0.5830078125,0.5703125,0.548828125,0.490234375,0.416015625,0.361328125,0.353515625,0.3896484375,0.4482421875,0.49609375,0.490234375,0.4287109375,0.3447265625,0.283203125,0.27734375,0.3251953125,0.3916015625,0.47265625,0.5546875,0.6162109375,0.6494140625,0.6640625,0.673828125,0.677734375,0.6552734375,0.599609375,0.521484375,0.4453125,0.3955078125,0.376953125,0.357421875,0.3076171875,0.2490234375,0.2138671875,0.220703125,0.265625,0.3251953125,0.396484375,0.4921875,0.576171875,0.6083984375,0.5791015625,0.513671875,0.4482421875,0.3837890625,0.32421875,0.3095703125,0.365234375,0.474609375,0.58984375,0.673828125,0.7470703125,0.8115234375,0.82421875,0.759765625,0.638671875,0.5146484375,0.4287109375,0.365234375,0.341796875,0.3798828125,0.46484375,0.5595703125,0.6171875,0.6220703125,0.6025390625,0.556640625,0.501953125,0.4658203125,0.466796875,0.501953125,0.55078125,0.6103515625,0.689453125,0.7529296875,0.76171875,0.7099609375,0.6279296875,0.55078125,0.4873046875,0.4580078125,0.4716796875,0.509765625,0.5419921875,0.5400390625,0.5,0.451171875,0.4228515625,0.4287109375,0.7119140625,0.6875,0.6025390625,0.5,0.419921875,0.3525390625,0.3037109375,0.294921875,0.330078125,0.38671875,0.4296875,0.439453125,0.4501953125,0.498046875,0.5615234375,0.6064453125,0.607421875,0.564453125,0.5,0.423828125,0.3349609375,0.2734375,0.2763671875,0.341796875,0.43359375,0.509765625,0.5654296875,0.572265625,0.5283203125,0.46484375,0.421875,0.431640625,0.4892578125,0.546875,0.55078125,0.5,0.4248046875,0.3720703125,0.3740234375,0.4296875,0.48828125,0.505859375,0.48046875,0.4384765625,0.4140625,0.4306640625,0.4892578125,0.564453125,0.650390625,0.705078125,0.693359375,0.6181640625,0.5205078125,0.439453125,0.373046875,0.3369140625,0.353515625,0.419921875,0.5048828125,0.564453125,0.5791015625,0.580078125,0.5791015625,0.5751953125,0.5693359375,0.5634765625,0.5595703125,0.5595703125,0.546875,0.4912109375,0.4111328125,0.3486328125,0.33203125,0.3662109375,0.4296875,0.4990234375,0.5654296875,0.6064453125,0.6123046875,0.58984375,0.5654296875,0.5595703125,0.5478515625,0.5,0.435546875,0.392578125,0.39453125,0.4404296875,0.509765625,0.568359375,0.5771484375,0.5322265625,0.466796875,0.421875,0.4306640625,0.4892578125,0.5498046875,0.564453125,0.529296875,0.474609375,0.4384765625,0.451171875,0.509765625,0.5673828125,0.5751953125,0.5322265625,0.466796875,0.423828125,0.431640625,0.4892578125,0.5595703125,0.619140625,0.6484375,0.6396484375,0.60546875,0.5751953125,0.5693359375,0.5595703125,0.509765625,0.4404296875,0.388671875,0.3828125,0.423828125,0.4892578125,0.5556640625,0.5986328125,0.59765625,0.55078125,0.486328125,0.439453125,0.4296875,0.4345703125,0.4541015625,0.48828125,0.5263671875,0.55859375,0.576171875,0.5791015625,0.587890625,0.62109375,0.6591796875,0.6708984375,0.6416015625,0.5810546875,0.509765625,0.427734375,0.3251953125,0.2431640625,0.224609375,0.2763671875,0.361328125,0.439453125,0.5,0.5126953125,0.474609375,0.416015625,0.375,0.3828125,0.439453125,0.515625,0.603515625,0.6640625,0.6591796875,0.5908203125,0.498046875,0.419921875,0.34375,0.2626953125,0.2177734375,0.2412109375,0.3271484375,0.4296875,0.509765625,0.576171875,0.6171875,0.61328125,0.564453125,0.4970703125,0.44921875,0.439453125,0.4443359375,0.462890625,0.4931640625,0.52734375,0.5546875,0.568359375,0.5693359375,0.5673828125,0.5654296875,0.5625,0.560546875,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.5595703125,0.560546875,0.5625,0.5654296875,0.5673828125,0.5693359375,0.5771484375,0.6015625,0.62109375,0.6123046875,0.5673828125,0.5,0.4296875,0.3671875,0.3359375,0.3583984375,0.4267578125,0.5107421875,0.568359375,0.5791015625,0.583984375,0.60546875,0.625,0.6181640625,0.5751953125,0.5087890625,0.439453125,0.3837890625,0.380859375,0.4326171875,0.5068359375,0.5576171875,0.5546875,0.5,0.443359375,0.4345703125,0.4765625,0.5380859375,0.578125,0.568359375,0.509765625,0.44921875,0.4306640625,0.4541015625,0.4951171875,0.5185546875,0.5,0.439453125,0.3740234375,0.337890625,0.3515625,0.4130859375,0.4912109375,0.546875,0.5595703125,0.5556640625,0.5390625,0.5087890625,0.474609375,0.4453125,0.4306640625,0.4296875,0.4443359375,0.501953125,0.5830078125,0.646484375,0.6611328125,0.625,0.5595703125,0.48046875,0.3818359375,0.3056640625,0.29296875,0.3466796875,0.4326171875,0.509765625,0.5791015625,0.6376953125,0.6650390625,0.6533203125,0.6171875,0.5859375,0.5791015625,0.5673828125,0.5087890625,0.4208984375,0.3486328125,0.3251953125,0.35546875,0.419921875,0.48828125,0.5390625,0.5537109375,0.525390625,0.4755859375,0.4375,0.4296875,0.4248046875,0.40234375,0.3828125,0.3916015625,0.4365234375,0.505859375,0.5791015625,0.6376953125,0.640625,0.5849609375,0.5048828125,0.4462890625,0.4443359375,0.5,0.556640625,0.5654296875,0.52734375,0.470703125,0.435546875,0.44921875,0.509765625,0.5673828125,0.5703125,0.5146484375,0.4345703125,0.37890625,0.3818359375,0.439453125,0.5185546875,0.611328125,0.67578125,0.673828125,0.607421875,0.5166015625,0.439453125,0.384765625,0.3828125,0.4365234375,0.5126953125,0.56640625,0.564453125,0.509765625,0.4326171875,0.3388671875,0.267578125,0.2607421875,0.3212890625,0.4111328125,0.4892578125,0.568359375,0.654296875,0.7080078125,0.6923828125,0.6123046875,0.5107421875,0.4296875,0.36328125,0.3291015625,0.34765625,0.416015625,0.5,0.5576171875,0.5693359375,0.576171875,0.6083984375,0.646484375,0.6611328125,0.63671875,0.5791015625,0.509765625,0.443359375,0.400390625,0.4013671875,0.4482421875,0.5126953125,0.5595703125,0.5693359375,0.5771484375,0.6181640625,0.6728515625,0.705078125,0.6962890625,0.646484375,0.5791015625,0.5107421875,0.4580078125,0.4423828125,0.466796875,0.5146484375,0.5517578125,0.5595703125,0.5546875,0.5400390625,0.5146484375,0.484375,0.458984375,0.4443359375,0.439453125,0.4501953125,0.50390625,0.5810546875,0.6416015625,0.6572265625,0.623046875,0.5595703125,0.4892578125,0.4228515625,0.37890625,0.37109375,0.390625,0.4130859375,0.419921875,0.41015625,0.369140625,0.3173828125,0.287109375,0.30078125,0.3515625,0.419921875,0.4912109375,0.5595703125,0.6044921875,0.6142578125,0.595703125,0.57421875,0.5693359375,0.5712890625,0.572265625,0.5712890625,0.568359375,0.564453125,0.5615234375,0.5595703125,0.5458984375,0.49609375,0.427734375,0.380859375,0.37890625,0.4228515625,0.4892578125,0.5458984375,0.5478515625,0.4931640625,0.416015625,0.361328125,0.36328125,0.419921875,0.4912109375,0.560546875,0.6083984375,0.6201171875,0.603515625,0.583984375,0.5791015625,0.5771484375,0.5615234375,0.5302734375,0.490234375,0.455078125,0.435546875,0.4296875,0.41796875,0.375,0.3203125,0.2890625,0.30078125,0.3515625,0.419921875,0.4990234375,0.599609375,0.6806640625,0.69921875,0.6494140625,0.5654296875,0.4892578125,0.4130859375,0.3310546875,0.28515625,0.30859375,0.3935546875,0.498046875,0.5791015625,0.6552734375,0.7333984375,0.7685546875,0.7314453125,0.6337890625,0.5224609375,0.439453125,0.373046875,0.337890625,0.3544921875,0.419921875,0.501953125,0.5576171875,0.5693359375,0.556640625,0.5087890625,0.4443359375,0.3994140625,0.400390625,0.4443359375,0.509765625,0.5859375,0.677734375,0.744140625,0.7451171875,0.6806640625,0.5888671875,0.509765625,0.44921875,0.435546875,0.470703125,0.52734375,0.5654296875,0.556640625,0.5,0.4345703125,0.3916015625,0.392578125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.7529296875,0.76953125,0.7197265625,0.6357421875,0.5595703125,0.4912109375,0.4384765625,0.4248046875,0.453125,0.505859375,0.5478515625,0.5595703125,0.5693359375,0.60546875,0.646484375,0.662109375,0.6376953125,0.5791015625,0.509765625,0.431640625,0.3408203125,0.27734375,0.27734375,0.3427734375,0.43359375,0.509765625,0.56640625,0.57421875,0.533203125,0.474609375,0.4365234375,0.44921875,0.509765625,0.5703125,0.5869140625,0.55859375,0.5107421875,0.4814453125,0.498046875,0.5595703125,0.6181640625,0.62109375,0.56640625,0.48828125,0.431640625,0.4326171875,0.4892578125,0.5693359375,0.673828125,0.759765625,0.7841796875,0.7392578125,0.65625,0.5791015625,0.505859375,0.4345703125,0.38671875,0.376953125,0.396484375,0.421875,0.4296875,0.431640625,0.4326171875,0.431640625,0.4287109375,0.4248046875,0.421875,0.419921875,0.412109375,0.38671875,0.3662109375,0.3759765625,0.423828125,0.49609375,0.5693359375,0.6357421875,0.6728515625,0.6572265625,0.5927734375,0.509765625,0.453125,0.439453125,0.431640625,0.3994140625,0.3623046875,0.3515625,0.3798828125,0.439453125,0.509765625,0.568359375,0.578125,0.5390625,0.4794921875,0.4404296875,0.451171875,0.509765625,0.5673828125,0.5751953125,0.5322265625,0.466796875,0.423828125,0.431640625,0.4892578125,0.5478515625,0.55859375,0.5205078125,0.462890625,0.4267578125,0.439453125,0.5,0.568359375,0.61328125,0.611328125,0.5634765625,0.494140625,0.443359375,0.4296875,0.419921875,0.3876953125,0.353515625,0.345703125,0.376953125,0.439453125,0.509765625,0.5791015625,0.638671875,0.666015625,0.6533203125,0.6142578125,0.5791015625,0.5693359375,0.5634765625,0.5439453125,0.5087890625,0.46875,0.4375,0.421875,0.419921875,0.43359375,0.4873046875,0.5615234375,0.6142578125,0.6201171875,0.5771484375,0.509765625,0.431640625,0.3466796875,0.296875,0.31640625,0.3984375,0.5,0.5791015625,0.6376953125,0.646484375,0.6064453125,0.546875,0.5078125,0.51953125,0.5791015625,0.658203125,0.7490234375,0.8095703125,0.8037109375,0.7333984375,0.6376953125,0.5595703125,0.48046875,0.3818359375,0.3056640625,0.29296875,0.3466796875,0.4326171875,0.509765625,0.5791015625,0.6376953125,0.662109375,0.646484375,0.60546875,0.5693359375,0.5595703125,0.5546875,0.537109375,0.5068359375,0.4716796875,0.44140625,0.4248046875,0.419921875,0.41796875,0.4169921875,0.4169921875,0.4169921875,0.4189453125,0.419921875,0.419921875,0.419921875,0.4228515625,0.42578125,0.4296875,0.4306640625,0.4306640625,0.4296875,0.44140625,0.5,0.5869140625,0.6572265625,0.6787109375,0.6455078125,0.5791015625,0.505859375,0.43359375,0.384765625,0.373046875,0.3916015625,0.4130859375,0.419921875,0.4326171875,0.4892578125,0.5712890625,0.63671875,0.6552734375,0.623046875,0.5595703125,0.5009765625,0.4853515625,0.513671875,0.556640625,0.5810546875,0.5615234375,0.5,0.439453125,0.4248046875,0.4609375,0.517578125,0.5556640625,0.5458984375,0.4892578125,0.4345703125,0.43359375,0.490234375,0.5693359375,0.625,0.6240234375,0.5693359375,0.5,0.4326171875,0.3876953125,0.3779296875,0.39453125,0.4150390625,0.419921875,0.421875,0.4404296875,0.4755859375,0.5185546875,0.5546875,0.5751953125,0.5791015625,0.5859375,0.6083984375,0.6279296875,0.6201171875,0.576171875,0.509765625,0.439453125,0.365234375,0.283203125,0.2333984375,0.2509765625,0.3310546875,0.4306640625,0.509765625,0.5751953125,0.6162109375,0.6083984375,0.5556640625,0.4833984375,0.431640625,0.419921875,0.4140625,0.392578125,0.3759765625,0.388671875,0.4365234375,0.5078125,0.5791015625,0.6474609375,0.6982421875,0.7099609375,0.6787109375,0.6240234375,0.5810546875,0.5693359375,0.5546875,0.4970703125,0.416015625,0.3525390625,0.337890625,0.3740234375,0.439453125,0.4990234375,0.515625,0.4892578125,0.4443359375,0.4189453125,0.4384765625,0.5,0.5595703125,0.5693359375,0.5283203125,0.4658203125,0.4228515625,0.431640625,0.4892578125,0.5498046875,0.5693359375,0.546875,0.5068359375,0.4833984375,0.5009765625,0.5595703125,0.6357421875,0.7294921875,0.798828125,0.8046875,0.7451171875,0.65625,0.5791015625,0.51953125,0.5,0.5244140625,0.564453125,0.5888671875,0.5693359375,0.509765625,0.431640625,0.337890625,0.26953125,0.2646484375,0.3251953125,0.4140625,0.4892578125,0.5673828125,0.6669921875,0.748046875,0.76953125,0.7236328125,0.6435546875,0.5693359375,0.4990234375,0.4296875,0.3828125,0.37109375,0.3896484375,0.412109375,0.419921875,0.4326171875,0.484375,0.5537109375,0.6015625,0.6025390625,0.5576171875,0.4892578125,0.4189453125,0.3603515625,0.3359375,0.3525390625,0.3955078125,0.4306640625,0.439453125,0.44921875,0.490234375,0.5419921875,0.572265625,0.55859375,0.5078125,0.439453125,0.3720703125,0.3212890625,0.3095703125,0.33984375,0.3916015625,0.431640625,0.439453125,0.4404296875,0.4541015625,0.4814453125,0.515625,0.546875,0.564453125,0.5693359375,0.578125,0.60546875,0.6298828125,0.625,0.58203125,0.5126953125,0.439453125,0.373046875,0.3359375,0.3505859375,0.4130859375,0.4931640625,0.5478515625,0.5595703125,0.5478515625,0.5048828125,0.451171875,0.421875,0.435546875,0.4892578125,0.5595703125,0.6259765625,0.66015625,0.640625,0.5732421875,0.4892578125,0.431640625,0.419921875,0.421875,0.42578125,0.4306640625,0.4345703125,0.4384765625,0.439453125,0.439453125,0.4306640625,0.3955078125,0.3525390625,0.3359375,0.3603515625,0.4189453125,0.4892578125,0.5517578125,0.57421875,0.5537109375,0.515625,0.4931640625,0.5107421875,0.5693359375,0.6328125,0.6669921875,0.6494140625,0.583984375,0.501953125,0.4443359375,0.4296875,0.4306640625,0.4462890625,0.4755859375,0.5126953125,0.544921875,0.564453125,0.5693359375,0.5615234375,0.5234375,0.4736328125,0.4453125,0.4599609375,0.5107421875,0.5791015625,0.6552734375,0.7392578125,0.7880859375,0.7705078125,0.689453125,0.5888671875,0.509765625,0.4296875,0.3271484375,0.2412109375,0.2177734375,0.2626953125,0.34375,0.419921875,0.5009765625,0.6083984375,0.7041015625,0.740234375,0.7060546875,0.6318359375,0.5595703125,0.490234375,0.42578125,0.3857421875,0.3837890625,0.408203125,0.4326171875,0.439453125,0.431640625,0.3994140625,0.3623046875,0.3515625,0.3798828125,0.439453125,0.509765625,0.5869140625,0.6796875,0.744140625,0.744140625,0.6796875,0.5869140625,0.509765625,0.451171875,0.4404296875,0.478515625,0.5361328125,0.572265625,0.5595703125,0.5,0.4287109375,0.369140625,0.341796875,0.7119140625,0.734375,0.701171875,0.634765625,0.5703125,0.5087890625,0.4580078125,0.4384765625,0.4609375,0.5078125,0.5517578125,0.5703125,0.587890625,0.62890625,0.6728515625,0.689453125,0.666015625,0.6123046875,0.55078125,0.484375,0.41015625,0.3603515625,0.365234375,0.419921875,0.4931640625,0.55078125,0.5908203125,0.5859375,0.5419921875,0.490234375,0.4658203125,0.48828125,0.55078125,0.611328125,0.6240234375,0.5888671875,0.533203125,0.4970703125,0.509765625,0.5703125,0.6279296875,0.6298828125,0.5703125,0.482421875,0.4130859375,0.4013671875,0.4482421875,0.5224609375,0.63671875,0.751953125,0.8154296875,0.806640625,0.74609375,0.673828125,0.595703125,0.5009765625,0.4140625,0.361328125,0.3505859375,0.3642578125,0.376953125,0.3876953125,0.39453125,0.3935546875,0.3798828125,0.3583984375,0.3388671875,0.3251953125,0.3125,0.298828125,0.3095703125,0.3623046875,0.44921875,0.5439453125,0.6220703125,0.6865234375,0.7158203125,0.6865234375,0.60546875,0.5087890625,0.443359375,0.4287109375,0.4228515625,0.40234375,0.3837890625,0.390625,0.4287109375,0.48828125,0.55078125,0.6025390625,0.611328125,0.5771484375,0.525390625,0.4912109375,0.5,0.55078125,0.599609375,0.5966796875,0.5390625,0.4599609375,0.40234375,0.3994140625,0.4482421875,0.4990234375,0.5078125,0.4775390625,0.4345703125,0.4140625,0.4375,0.5,0.568359375,0.611328125,0.60546875,0.546875,0.46484375,0.400390625,0.376953125,0.3623046875,0.3408203125,0.33203125,0.3564453125,0.4140625,0.486328125,0.55078125,0.6142578125,0.673828125,0.7080078125,0.705078125,0.673828125,0.638671875,0.6220703125,0.603515625,0.5537109375,0.4775390625,0.3994140625,0.34375,0.3212890625,0.3251953125,0.3505859375,0.427734375,0.533203125,0.619140625,0.6484375,0.6171875,0.55078125,0.4755859375,0.40234375,0.37109375,0.4072265625,0.4990234375,0.6005859375,0.673828125,0.72265625,0.7265625,0.6845703125,0.6279296875,0.595703125,0.6123046875,0.673828125,0.7490234375,0.8251953125,0.8603515625,0.8291015625,0.7412109375,0.6416015625,0.5703125,0.5009765625,0.4189453125,0.357421875,0.3525390625,0.4052734375,0.4833984375,0.55078125,0.6123046875,0.666015625,0.689453125,0.6728515625,0.62890625,0.587890625,0.5703125,0.5556640625,0.5244140625,0.4755859375,0.419921875,0.37109375,0.33984375,0.3251953125,0.3154296875,0.3076171875,0.3056640625,0.310546875,0.318359375,0.32421875,0.3251953125,0.328125,0.3408203125,0.3603515625,0.3779296875,0.3876953125,0.3857421875,0.376953125,0.3837890625,0.4541015625,0.5712890625,0.6845703125,0.7451171875,0.734375,0.673828125,0.595703125,0.5009765625,0.41015625,0.3486328125,0.32421875,0.32421875,0.3251953125,0.3388671875,0.3974609375,0.490234375,0.576171875,0.62109375,0.6142578125,0.5703125,0.5283203125,0.5244140625,0.552734375,0.5859375,0.5947265625,0.5634765625,0.5,0.435546875,0.40625,0.419921875,0.4580078125,0.490234375,0.48828125,0.4482421875,0.4091796875,0.4228515625,0.490234375,0.5791015625,0.646484375,0.66015625,0.6220703125,0.56640625,0.4990234375,0.431640625,0.3798828125,0.349609375,0.3359375,0.3251953125,0.3232421875,0.3583984375,0.43359375,0.5302734375,0.615234375,0.6640625,0.673828125,0.6748046875,0.6748046875,0.658203125,0.615234375,0.55078125,0.484375,0.4287109375,0.3740234375,0.3154296875,0.2880859375,0.3154296875,0.392578125,0.4814453125,0.55078125,0.60546875,0.623046875,0.583984375,0.498046875,0.40234375,0.33984375,0.3251953125,0.3251953125,0.33203125,0.36328125,0.4296875,0.5185546875,0.60546875,0.673828125,0.7333984375,0.7783203125,0.78515625,0.75,0.69140625,0.6416015625,0.6220703125,0.5986328125,0.5322265625,0.44140625,0.369140625,0.3447265625,0.3720703125,0.4287109375,0.48046875,0.4921875,0.4658203125,0.427734375,0.4111328125,0.4365234375,0.5,0.5595703125,0.5703125,0.5263671875,0.4560546875,0.40234375,0.3994140625,0.4482421875,0.5029296875,0.533203125,0.5341796875,0.5185546875,0.509765625,0.5263671875,0.5703125,0.630859375,0.7158203125,0.7939453125,0.826171875,0.7998046875,0.7373046875,0.673828125,0.619140625,0.595703125,0.6025390625,0.6220703125,0.62890625,0.60546875,0.55078125,0.482421875,0.39453125,0.322265625,0.2998046875,0.33203125,0.392578125,0.4482421875,0.5087890625,0.5966796875,0.6826171875,0.728515625,0.7197265625,0.673828125,0.6220703125,0.5634765625,0.484375,0.4013671875,0.33984375,0.314453125,0.3154296875,0.3251953125,0.3486328125,0.4130859375,0.4951171875,0.5537109375,0.5595703125,0.5166015625,0.4482421875,0.3779296875,0.3232421875,0.3056640625,0.3310546875,0.3798828125,0.419921875,0.4287109375,0.4375,0.4736328125,0.5185546875,0.544921875,0.533203125,0.48828125,0.4287109375,0.37109375,0.33203125,0.328125,0.3583984375,0.40234375,0.4306640625,0.4287109375,0.421875,0.431640625,0.46484375,0.515625,0.568359375,0.60546875,0.6220703125,0.6376953125,0.6630859375,0.67578125,0.650390625,0.5869140625,0.5048828125,0.4287109375,0.3642578125,0.3349609375,0.3603515625,0.4326171875,0.515625,0.56640625,0.5703125,0.5498046875,0.5009765625,0.4453125,0.4189453125,0.4404296875,0.4990234375,0.5703125,0.6328125,0.6494140625,0.6005859375,0.5009765625,0.39453125,0.3310546875,0.3251953125,0.337890625,0.3583984375,0.3828125,0.40625,0.421875,0.427734375,0.4287109375,0.419921875,0.3798828125,0.3310546875,0.3056640625,0.3232421875,0.3779296875,0.4482421875,0.5146484375,0.55859375,0.572265625,0.56640625,0.5615234375,0.578125,0.6220703125,0.6669921875,0.6806640625,0.6435546875,0.5615234375,0.466796875,0.400390625,0.376953125,0.37109375,0.3876953125,0.4326171875,0.4970703125,0.5615234375,0.6044921875,0.6220703125,0.6240234375,0.6025390625,0.5703125,0.5537109375,0.5693359375,0.6142578125,0.673828125,0.73828125,0.8046875,0.833984375,0.8017578125,0.7177734375,0.6220703125,0.55078125,0.4775390625,0.3701171875,0.2626953125,0.203125,0.2099609375,0.2626953125,0.3251953125,0.3984375,0.501953125,0.6064453125,0.666015625,0.666015625,0.6220703125,0.5703125,0.517578125,0.462890625,0.421875,0.40625,0.4130859375,0.4248046875,0.4287109375,0.4228515625,0.40234375,0.3837890625,0.390625,0.4287109375,0.48828125,0.55078125,0.619140625,0.7001953125,0.7568359375,0.7568359375,0.7001953125,0.619140625,0.55078125,0.5,0.4912109375,0.521484375,0.564453125,0.5849609375,0.5615234375,0.5,0.427734375,0.3671875,0.337890625,0.61328125,0.6318359375,0.6162109375,0.576171875,0.5302734375,0.482421875,0.43359375,0.4052734375,0.4140625,0.4521484375,0.498046875,0.5302734375,0.5634765625,0.6181640625,0.673828125,0.701171875,0.6904296875,0.650390625,0.6044921875,0.5576171875,0.513671875,0.4912109375,0.501953125,0.5400390625,0.580078125,0.6044921875,0.61328125,0.5849609375,0.53515625,0.4970703125,0.49609375,0.537109375,0.6044921875,0.6630859375,0.6640625,0.607421875,0.52734375,0.4697265625,0.4716796875,0.5302734375,0.58984375,0.599609375,0.548828125,0.4638671875,0.388671875,0.36328125,0.39453125,0.4560546875,0.5732421875,0.7119140625,0.814453125,0.8447265625,0.8076171875,0.740234375,0.658203125,0.544921875,0.427734375,0.34765625,0.322265625,0.3369140625,0.3642578125,0.390625,0.4130859375,0.4140625,0.3857421875,0.337890625,0.291015625,0.2587890625,0.232421875,0.216796875,0.2421875,0.322265625,0.439453125,0.552734375,0.634765625,0.701171875,0.7333984375,0.708984375,0.6357421875,0.544921875,0.4833984375,0.46875,0.4658203125,0.4560546875,0.4521484375,0.46875,0.5078125,0.5576171875,0.6044921875,0.642578125,0.6494140625,0.6240234375,0.5849609375,0.5595703125,0.56640625,0.6044921875,0.6376953125,0.619140625,0.546875,0.4521484375,0.3798828125,0.361328125,0.39453125,0.4306640625,0.435546875,0.4140625,0.3916015625,0.39453125,0.43359375,0.5,0.5693359375,0.62109375,0.6240234375,0.568359375,0.48046875,0.4033203125,0.3642578125,0.337890625,0.3212890625,0.3359375,0.3916015625,0.4736328125,0.55078125,0.6044921875,0.6533203125,0.705078125,0.740234375,0.740234375,0.7080078125,0.666015625,0.634765625,0.5966796875,0.5166015625,0.408203125,0.30859375,0.2490234375,0.23828125,0.2587890625,0.302734375,0.4052734375,0.541015625,0.6513671875,0.6953125,0.669921875,0.6044921875,0.53125,0.4697265625,0.4521484375,0.5,0.591796875,0.6826171875,0.740234375,0.7744140625,0.765625,0.720703125,0.6708984375,0.650390625,0.6767578125,0.740234375,0.8115234375,0.8642578125,0.8642578125,0.7978515625,0.689453125,0.5888671875,0.5302734375,0.4814453125,0.4306640625,0.4052734375,0.4248046875,0.484375,0.552734375,0.6044921875,0.650390625,0.6904296875,0.701171875,0.673828125,0.6181640625,0.5634765625,0.5302734375,0.501953125,0.46484375,0.4189453125,0.3701171875,0.32421875,0.287109375,0.2587890625,0.2333984375,0.2138671875,0.208984375,0.220703125,0.240234375,0.2548828125,0.2587890625,0.2646484375,0.29296875,0.3359375,0.375,0.3935546875,0.3876953125,0.3642578125,0.357421875,0.4248046875,0.5576171875,0.6982421875,0.7890625,0.7978515625,0.740234375,0.6591796875,0.5478515625,0.427734375,0.3310546875,0.27734375,0.259765625,0.2587890625,0.267578125,0.3115234375,0.38671875,0.4658203125,0.5224609375,0.5419921875,0.5302734375,0.5205078125,0.544921875,0.587890625,0.6181640625,0.6123046875,0.5673828125,0.5,0.4296875,0.3759765625,0.353515625,0.36328125,0.390625,0.4052734375,0.39453125,0.3837890625,0.41015625,0.474609375,0.5546875,0.619140625,0.6455078125,0.634765625,0.611328125,0.5673828125,0.5,0.4189453125,0.3447265625,0.291015625,0.2587890625,0.244140625,0.283203125,0.3857421875,0.5244140625,0.6513671875,0.7255859375,0.740234375,0.736328125,0.71484375,0.66796875,0.6044921875,0.541015625,0.494140625,0.46875,0.447265625,0.423828125,0.4169921875,0.44140625,0.494140625,0.5546875,0.6044921875,0.640625,0.6318359375,0.5634765625,0.4521484375,0.341796875,0.2734375,0.2587890625,0.263671875,0.2958984375,0.369140625,0.4775390625,0.5927734375,0.6845703125,0.740234375,0.78515625,0.8212890625,0.826171875,0.7900390625,0.7275390625,0.6689453125,0.634765625,0.599609375,0.533203125,0.4580078125,0.40625,0.396484375,0.4248046875,0.46875,0.50390625,0.4990234375,0.4609375,0.4189453125,0.4052734375,0.435546875,0.5,0.560546875,0.57421875,0.5302734375,0.4521484375,0.3837890625,0.3623046875,0.39453125,0.439453125,0.4775390625,0.501953125,0.5107421875,0.5107421875,0.5146484375,0.5302734375,0.5595703125,0.625,0.708984375,0.7763671875,0.80078125,0.7822265625,0.740234375,0.69921875,0.67578125,0.6708984375,0.673828125,0.6689453125,0.6455078125,0.6044921875,0.552734375,0.4833984375,0.4140625,0.369140625,0.3603515625,0.375,0.39453125,0.4208984375,0.4755859375,0.546875,0.6103515625,0.646484375,0.650390625,0.634765625,0.6044921875,0.529296875,0.421875,0.3193359375,0.2548828125,0.2392578125,0.2587890625,0.2978515625,0.375,0.4638671875,0.5185546875,0.515625,0.46484375,0.39453125,0.326171875,0.283203125,0.2861328125,0.3369140625,0.40625,0.45703125,0.46875,0.4755859375,0.501953125,0.53515625,0.5546875,0.546875,0.513671875,0.46875,0.4287109375,0.4111328125,0.421875,0.4521484375,0.4814453125,0.48828125,0.46875,0.443359375,0.4287109375,0.44140625,0.4853515625,0.546875,0.6015625,0.634765625,0.6669921875,0.7080078125,0.728515625,0.7041015625,0.634765625,0.546875,0.46875,0.404296875,0.375,0.39453125,0.4521484375,0.5146484375,0.5439453125,0.5302734375,0.494140625,0.43359375,0.375,0.35546875,0.388671875,0.4560546875,0.5302734375,0.58984375,0.59375,0.52734375,0.4140625,0.3046875,0.25,0.2587890625,0.2890625,0.333984375,0.3857421875,0.4306640625,0.4580078125,0.4677734375,0.46875,0.45703125,0.40625,0.3369140625,0.2861328125,0.283203125,0.326171875,0.39453125,0.466796875,0.5380859375,0.5908203125,0.6162109375,0.619140625,0.62109375,0.634765625,0.650390625,0.6474609375,0.609375,0.541015625,0.4619140625,0.3984375,0.3642578125,0.3408203125,0.3388671875,0.375,0.447265625,0.5322265625,0.599609375,0.634765625,0.6572265625,0.662109375,0.6572265625,0.654296875,0.6669921875,0.697265625,0.740234375,0.787109375,0.830078125,0.8427734375,0.806640625,0.734375,0.658203125,0.6044921875,0.5458984375,0.4443359375,0.3251953125,0.234375,0.19921875,0.216796875,0.2587890625,0.3115234375,0.388671875,0.4716796875,0.5322265625,0.5556640625,0.5478515625,0.5302734375,0.509765625,0.4892578125,0.4716796875,0.4638671875,0.4638671875,0.4677734375,0.46875,0.4658203125,0.4560546875,0.4521484375,0.46875,0.5078125,0.5576171875,0.6044921875,0.6552734375,0.71484375,0.7568359375,0.7568359375,0.71484375,0.6552734375,0.6044921875,0.568359375,0.5634765625,0.5849609375,0.607421875,0.6044921875,0.5654296875,0.5,0.4287109375,0.373046875,0.3525390625,0.4912109375,0.501953125,0.5048828125,0.4931640625,0.46875,0.4375,0.3916015625,0.3525390625,0.3447265625,0.373046875,0.421875,0.46875,0.5205078125,0.58984375,0.654296875,0.6904296875,0.6884765625,0.6630859375,0.634765625,0.6123046875,0.603515625,0.61328125,0.6318359375,0.6484375,0.6494140625,0.634765625,0.6064453125,0.55078125,0.494140625,0.4716796875,0.4990234375,0.5625,0.634765625,0.6904296875,0.681640625,0.6044921875,0.5,0.4228515625,0.4130859375,0.46875,0.533203125,0.5576171875,0.52734375,0.4580078125,0.3857421875,0.3505859375,0.3642578125,0.408203125,0.5146484375,0.6572265625,0.775390625,0.8271484375,0.8046875,0.740234375,0.65625,0.53515625,0.4111328125,0.3310546875,0.3154296875,0.3486328125,0.39453125,0.44140625,0.484375,0.4970703125,0.4609375,0.388671875,0.3125,0.2587890625,0.212890625,0.1796875,0.1953125,0.275390625,0.3994140625,0.5205078125,0.6044921875,0.6728515625,0.7158203125,0.712890625,0.662109375,0.5927734375,0.5419921875,0.5302734375,0.5283203125,0.5263671875,0.5302734375,0.546875,0.5751953125,0.6064453125,0.634765625,0.6572265625,0.6611328125,0.646484375,0.6240234375,0.609375,0.61328125,0.634765625,0.650390625,0.6220703125,0.546875,0.4521484375,0.376953125,0.3486328125,0.3642578125,0.3828125,0.376953125,0.3583984375,0.3525390625,0.376953125,0.4306640625,0.5,0.5732421875,0.638671875,0.6630859375,0.6240234375,0.5380859375,0.451171875,0.39453125,0.3525390625,0.3330078125,0.3583984375,0.4306640625,0.5224609375,0.59765625,0.634765625,0.666015625,0.7080078125,0.740234375,0.740234375,0.705078125,0.6533203125,0.6044921875,0.5458984375,0.4443359375,0.3251953125,0.234375,0.19921875,0.216796875,0.2587890625,0.3212890625,0.4423828125,0.587890625,0.6982421875,0.7353515625,0.7021484375,0.634765625,0.564453125,0.5087890625,0.4990234375,0.546875,0.6279296875,0.7021484375,0.740234375,0.755859375,0.7333984375,0.6845703125,0.6435546875,0.63671875,0.673828125,0.740234375,0.8076171875,0.841796875,0.814453125,0.7236328125,0.60546875,0.5107421875,0.46875,0.443359375,0.4287109375,0.44140625,0.4853515625,0.546875,0.6015625,0.634765625,0.6630859375,0.6884765625,0.6904296875,0.654296875,0.58984375,0.5205078125,0.46875,0.4267578125,0.39453125,0.373046875,0.35546875,0.333984375,0.3017578125,0.2587890625,0.21484375,0.181640625,0.1728515625,0.1923828125,0.2265625,0.2529296875,0.2587890625,0.2685546875,0.3115234375,0.375,0.4306640625,0.4521484375,0.435546875,0.39453125,0.3681640625,0.4189453125,0.541015625,0.681640625,0.779296875,0.7958984375,0.740234375,0.6591796875,0.5478515625,0.427734375,0.3310546875,0.27734375,0.259765625,0.2587890625,0.2607421875,0.275390625,0.30859375,0.3564453125,0.40625,0.4462890625,0.46875,0.498046875,0.5576171875,0.62109375,0.6513671875,0.630859375,0.5712890625,0.5,0.423828125,0.34375,0.2861328125,0.2734375,0.2998046875,0.3388671875,0.3642578125,0.3857421875,0.41796875,0.4609375,0.5078125,0.55078125,0.5830078125,0.6044921875,0.62109375,0.619140625,0.580078125,0.4990234375,0.3994140625,0.3134765625,0.2587890625,0.2255859375,0.2509765625,0.3505859375,0.4970703125,0.6376953125,0.72265625,0.740234375,0.732421875,0.6962890625,0.634765625,0.5712890625,0.5283203125,0.5166015625,0.5302734375,0.546875,0.55859375,0.5654296875,0.57421875,0.5888671875,0.609375,0.634765625,0.65234375,0.6259765625,0.546875,0.435546875,0.33203125,0.271484375,0.2587890625,0.2666015625,0.3095703125,0.3974609375,0.513671875,0.6259765625,0.703125,0.740234375,0.7685546875,0.7978515625,0.806640625,0.7783203125,0.720703125,0.6552734375,0.6044921875,0.5546875,0.4970703125,0.453125,0.44140625,0.462890625,0.5,0.5302734375,0.544921875,0.5185546875,0.4638671875,0.4140625,0.400390625,0.4345703125,0.5,0.5625,0.5830078125,0.546875,0.46875,0.390625,0.3515625,0.3642578125,0.39453125,0.4375,0.48046875,0.5048828125,0.5048828125,0.4892578125,0.46875,0.4609375,0.4951171875,0.5712890625,0.662109375,0.732421875,0.7568359375,0.740234375,0.7158203125,0.69921875,0.6904296875,0.6845703125,0.67578125,0.6591796875,0.634765625,0.60546875,0.564453125,0.513671875,0.4609375,0.4169921875,0.384765625,0.3642578125,0.3486328125,0.3525390625,0.388671875,0.4521484375,0.5234375,0.578125,0.6044921875,0.6083984375,0.5546875,0.447265625,0.328125,0.2451171875,0.2255859375,0.2587890625,0.3154296875,0.4033203125,0.48828125,0.52734375,0.50390625,0.4375,0.3642578125,0.2978515625,0.265625,0.2900390625,0.36328125,0.4541015625,0.515625,0.5302734375,0.533203125,0.548828125,0.568359375,0.580078125,0.5751953125,0.5556640625,0.5302734375,0.5107421875,0.517578125,0.546875,0.5771484375,0.587890625,0.5703125,0.5302734375,0.4814453125,0.4306640625,0.4052734375,0.4248046875,0.484375,0.552734375,0.6044921875,0.6572265625,0.72265625,0.767578125,0.7587890625,0.6953125,0.607421875,0.5302734375,0.46484375,0.431640625,0.4384765625,0.4716796875,0.50390625,0.5048828125,0.46875,0.4150390625,0.33984375,0.2783203125,0.267578125,0.314453125,0.3935546875,0.46875,0.52734375,0.5283203125,0.4609375,0.35546875,0.263671875,0.2294921875,0.2587890625,0.3095703125,0.375,0.4443359375,0.4970703125,0.5234375,0.5302734375,0.5302734375,0.515625,0.4541015625,0.36328125,0.2900390625,0.265625,0.2978515625,0.3642578125,0.4423828125,0.53515625,0.6162109375,0.6572265625,0.6533203125,0.626953125,0.6044921875,0.587890625,0.57421875,0.5576171875,0.529296875,0.48828125,0.4404296875,0.39453125,0.3486328125,0.314453125,0.3193359375,0.375,0.4638671875,0.5498046875,0.6044921875,0.6484375,0.6826171875,0.701171875,0.70703125,0.7080078125,0.7177734375,0.740234375,0.7666015625,0.7890625,0.7900390625,0.76171875,0.7138671875,0.6669921875,0.634765625,0.5966796875,0.5166015625,0.408203125,0.30859375,0.2490234375,0.23828125,0.2587890625,0.287109375,0.3203125,0.3583984375,0.39453125,0.42578125,0.44921875,0.46875,0.4892578125,0.509765625,0.52734375,0.53515625,0.53515625,0.53125,0.5302734375,0.5283203125,0.5263671875,0.5302734375,0.546875,0.5751953125,0.6064453125,0.634765625,0.6640625,0.69921875,0.7236328125,0.7236328125,0.69921875,0.6640625,0.634765625,0.6162109375,0.6220703125,0.640625,0.646484375,0.6220703125,0.568359375,0.5,0.4306640625,0.3818359375,0.375,0.392578125,0.3994140625,0.419921875,0.43359375,0.4287109375,0.41015625,0.3671875,0.3193359375,0.2978515625,0.3173828125,0.3681640625,0.4287109375,0.494140625,0.5693359375,0.630859375,0.66015625,0.6552734375,0.6357421875,0.6220703125,0.619140625,0.640625,0.6767578125,0.703125,0.701171875,0.669921875,0.6220703125,0.5625,0.4833984375,0.419921875,0.4111328125,0.462890625,0.544921875,0.6220703125,0.6767578125,0.6640625,0.5810546875,0.4697265625,0.38671875,0.3740234375,0.4287109375,0.49609375,0.5361328125,0.5302734375,0.4814453125,0.4189453125,0.3779296875,0.376953125,0.404296875,0.4892578125,0.611328125,0.71484375,0.759765625,0.7373046875,0.673828125,0.58984375,0.474609375,0.365234375,0.3095703125,0.32421875,0.3837890625,0.4482421875,0.513671875,0.5791015625,0.6083984375,0.576171875,0.4921875,0.396484375,0.3251953125,0.26171875,0.2021484375,0.1875,0.2431640625,0.3525390625,0.4677734375,0.55078125,0.62109375,0.67578125,0.693359375,0.66796875,0.619140625,0.5791015625,0.5703125,0.5693359375,0.5703125,0.57421875,0.5830078125,0.5966796875,0.6103515625,0.6220703125,0.6298828125,0.6318359375,0.6259765625,0.6171875,0.611328125,0.61328125,0.6220703125,0.625,0.5966796875,0.5361328125,0.462890625,0.40234375,0.3740234375,0.376953125,0.3798828125,0.361328125,0.3369140625,0.333984375,0.3671875,0.4287109375,0.5,0.576171875,0.658203125,0.7060546875,0.6875,0.611328125,0.5185546875,0.4482421875,0.390625,0.361328125,0.380859375,0.4482421875,0.5341796875,0.5986328125,0.6220703125,0.638671875,0.673828125,0.705078125,0.7080078125,0.673828125,0.6142578125,0.55078125,0.4775390625,0.3701171875,0.2626953125,0.203125,0.2099609375,0.2626953125,0.3251953125,0.40234375,0.5244140625,0.6552734375,0.73828125,0.7451171875,0.693359375,0.6220703125,0.5517578125,0.4990234375,0.490234375,0.529296875,0.5966796875,0.65234375,0.673828125,0.673828125,0.6396484375,0.587890625,0.552734375,0.55859375,0.60546875,0.673828125,0.7392578125,0.767578125,0.734375,0.6435546875,0.5341796875,0.455078125,0.4287109375,0.421875,0.431640625,0.46484375,0.515625,0.568359375,0.60546875,0.6220703125,0.6357421875,0.6552734375,0.66015625,0.630859375,0.5693359375,0.494140625,0.4287109375,0.375,0.353515625,0.365234375,0.3896484375,0.4013671875,0.37890625,0.3251953125,0.265625,0.220703125,0.2099609375,0.2353515625,0.28125,0.3173828125,0.3251953125,0.3369140625,0.3876953125,0.4609375,0.5185546875,0.5341796875,0.5048828125,0.4482421875,0.4033203125,0.427734375,0.5205078125,0.6357421875,0.71875,0.7294921875,0.673828125,0.595703125,0.5009765625,0.41015625,0.3486328125,0.32421875,0.32421875,0.3251953125,0.3212890625,0.3037109375,0.2890625,0.294921875,0.3271484375,0.376953125,0.4287109375,0.490234375,0.578125,0.65625,0.68359375,0.6484375,0.5751953125,0.5,0.419921875,0.3232421875,0.244140625,0.220703125,0.2568359375,0.3203125,0.376953125,0.423828125,0.4521484375,0.462890625,0.4658203125,0.4755859375,0.5048828125,0.55078125,0.6044921875,0.6494140625,0.654296875,0.599609375,0.5,0.3974609375,0.3251953125,0.2744140625,0.271484375,0.337890625,0.455078125,0.5791015625,0.6572265625,0.673828125,0.6640625,0.6220703125,0.560546875,0.51171875,0.498046875,0.5224609375,0.5703125,0.619140625,0.6572265625,0.669921875,0.658203125,0.6328125,0.6171875,0.6220703125,0.625,0.5966796875,0.5322265625,0.4501953125,0.3759765625,0.333984375,0.3251953125,0.33203125,0.3681640625,0.4384765625,0.525390625,0.60546875,0.6552734375,0.673828125,0.689453125,0.7177734375,0.73828125,0.7275390625,0.6806640625,0.615234375,0.55078125,0.490234375,0.4423828125,0.4267578125,0.453125,0.505859375,0.55078125,0.5703125,0.568359375,0.525390625,0.458984375,0.4052734375,0.39453125,0.4326171875,0.5,0.5654296875,0.5966796875,0.5751953125,0.5078125,0.4287109375,0.3798828125,0.376953125,0.3955078125,0.439453125,0.490234375,0.521484375,0.515625,0.478515625,0.4287109375,0.38671875,0.384765625,0.4375,0.5283203125,0.619140625,0.6708984375,0.673828125,0.6630859375,0.6552734375,0.650390625,0.6455078125,0.6396484375,0.6318359375,0.6220703125,0.61328125,0.60546875,0.5869140625,0.5478515625,0.4921875,0.4306640625,0.376953125,0.3251953125,0.279296875,0.2705078125,0.31640625,0.40234375,0.490234375,0.55078125,0.5869140625,0.5615234375,0.474609375,0.3671875,0.2900390625,0.2783203125,0.3251953125,0.396484375,0.4892578125,0.5654296875,0.583984375,0.5361328125,0.4541015625,0.376953125,0.3125,0.283203125,0.3125,0.3935546875,0.490234375,0.5556640625,0.5703125,0.5712890625,0.5771484375,0.5849609375,0.58984375,0.587890625,0.580078125,0.5703125,0.568359375,0.5966796875,0.640625,0.6708984375,0.6669921875,0.6279296875,0.5703125,0.5009765625,0.4189453125,0.357421875,0.3525390625,0.4052734375,0.4833984375,0.55078125,0.62109375,0.7099609375,0.779296875,0.7880859375,0.7333984375,0.6474609375,0.5703125,0.505859375,0.4716796875,0.47265625,0.4912109375,0.501953125,0.482421875,0.4287109375,0.359375,0.2724609375,0.2080078125,0.2041015625,0.2626953125,0.3505859375,0.4287109375,0.48828125,0.4921875,0.4365234375,0.3525390625,0.2880859375,0.2783203125,0.3251953125,0.390625,0.4658203125,0.53125,0.5703125,0.5791015625,0.5732421875,0.5703125,0.5556640625,0.490234375,0.3935546875,0.3125,0.283203125,0.3125,0.376953125,0.4580078125,0.5615234375,0.6513671875,0.6884765625,0.6640625,0.6064453125,0.55078125,0.5078125,0.4931640625,0.5068359375,0.52734375,0.5302734375,0.5029296875,0.4482421875,0.3818359375,0.314453125,0.2802734375,0.3076171875,0.3876953125,0.48046875,0.55078125,0.6123046875,0.666015625,0.697265625,0.6982421875,0.6826171875,0.6689453125,0.673828125,0.68359375,0.69140625,0.689453125,0.67578125,0.654296875,0.634765625,0.6220703125,0.603515625,0.5537109375,0.4775390625,0.3994140625,0.34375,0.3212890625,0.3251953125,0.3310546875,0.3212890625,0.30859375,0.3095703125,0.3349609375,0.37890625,0.4287109375,0.4814453125,0.5361328125,0.5771484375,0.5927734375,0.5859375,0.57421875,0.5703125,0.5693359375,0.5703125,0.57421875,0.5830078125,0.5966796875,0.6103515625,0.6220703125,0.6328125,0.646484375,0.65625,0.65625,0.646484375,0.6328125,0.6220703125,0.619140625,0.6376953125,0.662109375,0.6650390625,0.6318359375,0.5703125,0.5,0.431640625,0.3876953125,0.3896484375,0.3505859375,0.3642578125,0.40234375,0.43359375,0.439453125,0.4287109375,0.38671875,0.333984375,0.3046875,0.3193359375,0.37109375,0.439453125,0.5107421875,0.5791015625,0.6220703125,0.626953125,0.603515625,0.5771484375,0.5693359375,0.5771484375,0.615234375,0.666015625,0.6962890625,0.6845703125,0.6357421875,0.5693359375,0.4931640625,0.4013671875,0.3349609375,0.333984375,0.3974609375,0.490234375,0.5693359375,0.6259765625,0.62109375,0.5517578125,0.45703125,0.3876953125,0.3828125,0.439453125,0.5087890625,0.5595703125,0.5693359375,0.53515625,0.48046875,0.4384765625,0.4296875,0.4443359375,0.505859375,0.5927734375,0.662109375,0.6806640625,0.6455078125,0.5791015625,0.498046875,0.3935546875,0.30859375,0.28515625,0.3310546875,0.4130859375,0.4892578125,0.5654296875,0.6494140625,0.69921875,0.6806640625,0.599609375,0.4990234375,0.419921875,0.34375,0.26171875,0.2158203125,0.23828125,0.32421875,0.427734375,0.509765625,0.580078125,0.638671875,0.6630859375,0.646484375,0.603515625,0.568359375,0.5595703125,0.5595703125,0.5595703125,0.560546875,0.5625,0.5654296875,0.5673828125,0.5693359375,0.5703125,0.5712890625,0.5703125,0.568359375,0.5673828125,0.568359375,0.5693359375,0.5673828125,0.55078125,0.5185546875,0.48046875,0.4482421875,0.431640625,0.4296875,0.4228515625,0.390625,0.353515625,0.3408203125,0.3681640625,0.4287109375,0.5,0.5791015625,0.6708984375,0.734375,0.73046875,0.662109375,0.568359375,0.4892578125,0.4228515625,0.380859375,0.3837890625,0.4345703125,0.5048828125,0.5556640625,0.5693359375,0.5791015625,0.6142578125,0.6533203125,0.666015625,0.638671875,0.5791015625,0.509765625,0.4296875,0.3271484375,0.2412109375,0.2177734375,0.2626953125,0.34375,0.419921875,0.5009765625,0.6123046875,0.7119140625,0.751953125,0.720703125,0.6455078125,0.5693359375,0.5,0.447265625,0.4345703125,0.4677734375,0.5234375,0.5673828125,0.5791015625,0.5712890625,0.5302734375,0.4775390625,0.4462890625,0.4580078125,0.509765625,0.5791015625,0.646484375,0.6826171875,0.666015625,0.599609375,0.5146484375,0.4541015625,0.439453125,0.4404296875,0.4541015625,0.4814453125,0.515625,0.546875,0.564453125,0.5693359375,0.5771484375,0.603515625,0.626953125,0.6220703125,0.5791015625,0.5107421875,0.439453125,0.380859375,0.3681640625,0.40234375,0.45703125,0.4912109375,0.478515625,0.419921875,0.3515625,0.30078125,0.287109375,0.3173828125,0.369140625,0.41015625,0.419921875,0.4306640625,0.48046875,0.5478515625,0.595703125,0.5986328125,0.5556640625,0.4892578125,0.43359375,0.4345703125,0.4951171875,0.5791015625,0.6376953125,0.63671875,0.5791015625,0.505859375,0.43359375,0.384765625,0.373046875,0.3916015625,0.4130859375,0.419921875,0.4111328125,0.373046875,0.3271484375,0.3037109375,0.3203125,0.373046875,0.439453125,0.517578125,0.6162109375,0.6962890625,0.712890625,0.662109375,0.5771484375,0.5,0.4189453125,0.318359375,0.23828125,0.220703125,0.271484375,0.3544921875,0.4296875,0.48828125,0.5087890625,0.48828125,0.451171875,0.4306640625,0.4501953125,0.509765625,0.583984375,0.6630859375,0.7080078125,0.685546875,0.6015625,0.4990234375,0.419921875,0.35546875,0.3232421875,0.345703125,0.41796875,0.505859375,0.5654296875,0.5791015625,0.5693359375,0.52734375,0.4716796875,0.4375,0.4453125,0.4931640625,0.5595703125,0.6259765625,0.67578125,0.689453125,0.6630859375,0.6142578125,0.5771484375,0.5693359375,0.5673828125,0.55078125,0.517578125,0.4775390625,0.4423828125,0.423828125,0.419921875,0.4228515625,0.44140625,0.4755859375,0.517578125,0.5537109375,0.57421875,0.5791015625,0.5888671875,0.6220703125,0.6591796875,0.669921875,0.6396484375,0.5791015625,0.509765625,0.4423828125,0.396484375,0.392578125,0.435546875,0.4990234375,0.546875,0.5595703125,0.5498046875,0.501953125,0.435546875,0.388671875,0.38671875,0.431640625,0.5,0.5673828125,0.6103515625,0.6064453125,0.5576171875,0.48828125,0.439453125,0.4296875,0.44140625,0.4833984375,0.537109375,0.5673828125,0.5556640625,0.505859375,0.439453125,0.376953125,0.3447265625,0.3642578125,0.4306640625,0.5126953125,0.568359375,0.5791015625,0.5771484375,0.576171875,0.5751953125,0.5732421875,0.572265625,0.5712890625,0.5693359375,0.57421875,0.595703125,0.615234375,0.607421875,0.5654296875,0.4990234375,0.4296875,0.35546875,0.275390625,0.2294921875,0.2509765625,0.33203125,0.431640625,0.509765625,0.564453125,0.5625,0.5029296875,0.4208984375,0.3623046875,0.36328125,0.419921875,0.498046875,0.591796875,0.6611328125,0.6640625,0.6005859375,0.5087890625,0.4296875,0.36328125,0.326171875,0.341796875,0.40625,0.4892578125,0.5458984375,0.5595703125,0.5595703125,0.560546875,0.5615234375,0.5625,0.5625,0.560546875,0.5595703125,0.5673828125,0.607421875,0.6591796875,0.689453125,0.677734375,0.626953125,0.5595703125,0.48046875,0.3818359375,0.3056640625,0.29296875,0.3466796875,0.4326171875,0.509765625,0.5888671875,0.6875,0.765625,0.779296875,0.724609375,0.6376953125,0.5595703125,0.49609375,0.470703125,0.482421875,0.5107421875,0.5244140625,0.5009765625,0.439453125,0.361328125,0.2685546875,0.2021484375,0.201171875,0.2666015625,0.3603515625,0.439453125,0.4990234375,0.5087890625,0.46484375,0.400390625,0.35546875,0.3623046875,0.419921875,0.4912109375,0.5595703125,0.603515625,0.6103515625,0.58984375,0.5654296875,0.5595703125,0.5458984375,0.4892578125,0.40625,0.341796875,0.326171875,0.36328125,0.4296875,0.5107421875,0.6123046875,0.6943359375,0.71484375,0.666015625,0.583984375,0.509765625,0.4521484375,0.4404296875,0.4755859375,0.529296875,0.5625,0.548828125,0.4892578125,0.412109375,0.322265625,0.26171875,0.267578125,0.3369140625,0.4306640625,0.509765625,0.5791015625,0.6376953125,0.6650390625,0.6533203125,0.6171875,0.5859375,0.5791015625,0.5810546875,0.58203125,0.5810546875,0.578125,0.5751953125,0.5712890625,0.5693359375,0.5634765625,0.5439453125,0.5087890625,0.46875,0.4375,0.421875,0.419921875,0.412109375,0.3759765625,0.330078125,0.3056640625,0.3212890625,0.373046875,0.439453125,0.5087890625,0.5732421875,0.61328125,0.615234375,0.5908203125,0.56640625,0.5595703125,0.5595703125,0.5595703125,0.560546875,0.5625,0.5654296875,0.5673828125,0.5693359375,0.5712890625,0.5732421875,0.5751953125,0.5751953125,0.5732421875,0.5712890625,0.5693359375,0.576171875,0.6083984375,0.6455078125,0.658203125,0.630859375,0.5703125,0.5,0.4306640625,0.3857421875,0.3857421875,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.4296875,0.376953125,0.3642578125,0.39453125,0.4482421875,0.4892578125,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5595703125,0.5703125,0.5302734375,0.46875,0.4287109375,0.439453125,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5791015625,0.673828125,0.740234375,0.740234375,0.673828125,0.5791015625,0.5,0.439453125,0.4287109375,0.46875,0.5302734375,0.5703125,0.5595703125,0.5,0.419921875,0.3251953125,0.2587890625,0.2587890625,0.3251953125,0.419921875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4892578125,0.4482421875,0.39453125,0.3642578125,0.376953125,0.4296875,0.5,0.5693359375,0.6220703125,0.634765625,0.6044921875,0.55078125,0.509765625,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.509765625,0.55078125,0.6044921875,0.634765625,0.6220703125,0.5693359375,0.5,0.4296875,0.376953125,0.3642578125,0.38671875,0.44140625,0.5146484375,0.5673828125,0.5791015625,0.5693359375,0.5263671875,0.470703125,0.4375,0.4482421875,0.5,0.5693359375,0.6357421875,0.6728515625,0.6572265625,0.5927734375,0.509765625,0.453125,0.439453125,0.44921875,0.490234375,0.5419921875,0.572265625,0.55859375,0.5078125,0.439453125,0.361328125,0.2685546875,0.2001953125,0.1953125,0.255859375,0.34375,0.419921875,0.48046875,0.5068359375,0.5,0.4794921875,0.4716796875,0.4990234375,0.5595703125,0.6259765625,0.6787109375,0.6943359375,0.6689453125,0.6201171875,0.580078125,0.5693359375,0.57421875,0.59765625,0.6201171875,0.6142578125,0.5712890625,0.5029296875,0.4296875,0.3515625,0.2646484375,0.2109375,0.2265625,0.306640625,0.408203125,0.4892578125,0.5712890625,0.6748046875,0.759765625,0.7802734375,0.7314453125,0.6474609375,0.5693359375,0.4873046875,0.3837890625,0.2998046875,0.2783203125,0.3271484375,0.412109375,0.4892578125,0.55859375,0.6044921875,0.6064453125,0.5634765625,0.4990234375,0.451171875,0.439453125,0.439453125,0.439453125,0.4384765625,0.4365234375,0.43359375,0.431640625,0.4296875,0.4287109375,0.427734375,0.4287109375,0.4306640625,0.431640625,0.4306640625,0.4296875,0.431640625,0.4482421875,0.4814453125,0.521484375,0.556640625,0.5751953125,0.5791015625,0.568359375,0.5185546875,0.44921875,0.3994140625,0.39453125,0.4345703125,0.5,0.576171875,0.66796875,0.7353515625,0.73828125,0.6767578125,0.5869140625,0.509765625,0.439453125,0.3759765625,0.341796875,0.3466796875,0.3798828125,0.41015625,0.419921875,0.4326171875,0.4833984375,0.552734375,0.6015625,0.60546875,0.564453125,0.5,0.4248046875,0.33984375,0.287109375,0.3017578125,0.37890625,0.478515625,0.5595703125,0.6357421875,0.7119140625,0.74609375,0.708984375,0.611328125,0.5009765625,0.419921875,0.3515625,0.30078125,0.2890625,0.3203125,0.375,0.41796875,0.4296875,0.421875,0.384765625,0.3359375,0.3095703125,0.3232421875,0.373046875,0.439453125,0.5087890625,0.57421875,0.6142578125,0.619140625,0.5966796875,0.57421875,0.5693359375,0.568359375,0.5537109375,0.5244140625,0.490234375,0.4599609375,0.443359375,0.439453125,0.4521484375,0.5087890625,0.5888671875,0.650390625,0.6640625,0.6259765625,0.5595703125,0.4990234375,0.4873046875,0.5263671875,0.5869140625,0.626953125,0.6171875,0.5595703125,0.4912109375,0.44140625,0.4296875,0.4599609375,0.51171875,0.55078125,0.5595703125,0.5654296875,0.595703125,0.630859375,0.6416015625,0.615234375,0.5576171875,0.4892578125,0.4306640625,0.412109375,0.4345703125,0.474609375,0.4970703125,0.478515625,0.419921875,0.3564453125,0.3251953125,0.3466796875,0.4169921875,0.50390625,0.564453125,0.5791015625,0.5712890625,0.5302734375,0.4775390625,0.4462890625,0.4580078125,0.509765625,0.5791015625,0.6572265625,0.7421875,0.7919921875,0.7724609375,0.6904296875,0.5888671875,0.509765625,0.43359375,0.349609375,0.2998046875,0.318359375,0.3994140625,0.5,0.5791015625,0.63671875,0.6396484375,0.5859375,0.5087890625,0.453125,0.4541015625,0.509765625,0.5869140625,0.68359375,0.759765625,0.7734375,0.720703125,0.6357421875,0.5595703125,0.48828125,0.4228515625,0.3818359375,0.3779296875,0.400390625,0.4248046875,0.4296875,0.41796875,0.375,0.3203125,0.2890625,0.30078125,0.3515625,0.419921875,0.48828125,0.5419921875,0.55859375,0.5322265625,0.4814453125,0.4404296875,0.4296875,0.431640625,0.4482421875,0.4814453125,0.521484375,0.556640625,0.5751953125,0.5791015625,0.5751953125,0.556640625,0.5205078125,0.478515625,0.4423828125,0.423828125,0.419921875,0.4306640625,0.4794921875,0.5458984375,0.5927734375,0.595703125,0.5546875,0.4892578125,0.421875,0.365234375,0.3408203125,0.3544921875,0.3916015625,0.4228515625,0.4296875,0.419921875,0.384765625,0.345703125,0.3330078125,0.3603515625,0.419921875,0.4892578125,0.5595703125,0.623046875,0.6572265625,0.65234375,0.619140625,0.5888671875,0.5791015625,0.5869140625,0.626953125,0.6787109375,0.708984375,0.697265625,0.6474609375,0.5791015625,0.5078125,0.4375,0.3896484375,0.37890625,0.3984375,0.421875,0.4296875,0.4306640625,0.4306640625,0.4296875,0.42578125,0.4228515625,0.419921875,0.419921875,0.43359375,0.494140625,0.583984375,0.65625,0.6787109375,0.6455078125,0.5791015625,0.498046875,0.396484375,0.3154296875,0.2978515625,0.3486328125,0.4326171875,0.509765625,0.568359375,0.583984375,0.5546875,0.5078125,0.48046875,0.498046875,0.5595703125,0.638671875,0.732421875,0.7978515625,0.796875,0.73046875,0.6376953125,0.5595703125,0.48828125,0.419921875,0.3759765625,0.3681640625,0.3896484375,0.4130859375,0.419921875,0.419921875,0.4228515625,0.4267578125,0.4326171875,0.4365234375,0.439453125,0.439453125,0.44921875,0.4873046875,0.5361328125,0.5625,0.5478515625,0.49609375,0.4296875,0.35546875,0.2744140625,0.2255859375,0.244140625,0.3232421875,0.421875,0.5,0.5732421875,0.6533203125,0.69921875,0.6787109375,0.5966796875,0.498046875,0.419921875,0.3671875,0.376953125,0.4521484375,0.552734375,0.6259765625,0.6337890625,0.5791015625,0.5009765625,0.4091796875,0.3447265625,0.3447265625,0.4091796875,0.5009765625,0.5791015625,0.6376953125,0.6474609375,0.607421875,0.546875,0.5048828125,0.5126953125,0.5693359375,0.6318359375,0.6640625,0.6435546875,0.5751953125,0.490234375,0.4326171875,0.419921875,0.4140625,0.392578125,0.375,0.384765625,0.4306640625,0.4990234375,0.5693359375,0.6435546875,0.724609375,0.771484375,0.7509765625,0.669921875,0.5693359375,0.4892578125,0.431640625,0.4228515625,0.4658203125,0.5283203125,0.5693359375,0.5595703125,0.5,0.419921875,0.328125,0.2646484375,0.2685546875,0.3369140625,0.4306640625,0.509765625,0.576171875,0.6171875,0.611328125,0.55859375,0.486328125,0.43359375,0.419921875,0.41796875,0.416015625,0.4140625,0.4140625,0.416015625,0.41796875,0.419921875,0.4248046875,0.443359375,0.4755859375,0.513671875,0.5458984375,0.564453125,0.5693359375,0.5615234375,0.5244140625,0.4755859375,0.44921875,0.462890625,0.5126953125,0.5791015625,0.642578125,0.673828125,0.65234375,0.58203125,0.4951171875,0.4345703125,0.419921875,0.41796875,0.4169921875,0.41796875,0.4208984375,0.423828125,0.427734375,0.4296875,0.431640625,0.4326171875,0.431640625,0.4287109375,0.4248046875,0.421875,0.419921875,0.4296875,0.48046875,0.55078125,0.603515625,0.609375,0.5673828125,0.5,0.4287109375,0.369140625,0.341796875,0.3955078125,0.4853515625,0.5888671875,0.658203125,0.673828125,0.662109375,0.6142578125,0.548828125,0.5048828125,0.5068359375,0.552734375,0.6220703125,0.6865234375,0.7158203125,0.6865234375,0.60546875,0.5087890625,0.443359375,0.4287109375,0.4375,0.4736328125,0.5185546875,0.544921875,0.533203125,0.48828125,0.4287109375,0.359375,0.2724609375,0.2001953125,0.177734375,0.2099609375,0.26953125,0.3251953125,0.3740234375,0.4111328125,0.4375,0.458984375,0.484375,0.521484375,0.5703125,0.6220703125,0.671875,0.7001953125,0.697265625,0.6689453125,0.6376953125,0.6220703125,0.6162109375,0.6201171875,0.6171875,0.587890625,0.52734375,0.451171875,0.376953125,0.298828125,0.2138671875,0.1630859375,0.181640625,0.263671875,0.3662109375,0.4482421875,0.53125,0.646484375,0.751953125,0.7978515625,0.7705078125,0.697265625,0.6220703125,0.5380859375,0.4228515625,0.3173828125,0.271484375,0.298828125,0.3720703125,0.4482421875,0.517578125,0.5673828125,0.576171875,0.541015625,0.4833984375,0.439453125,0.4287109375,0.4296875,0.4287109375,0.4248046875,0.416015625,0.40234375,0.388671875,0.376953125,0.369140625,0.3671875,0.373046875,0.3818359375,0.3876953125,0.3857421875,0.376953125,0.3740234375,0.40234375,0.466796875,0.548828125,0.623046875,0.6650390625,0.673828125,0.662109375,0.611328125,0.53515625,0.466796875,0.4375,0.4541015625,0.5,0.55859375,0.6376953125,0.705078125,0.72265625,0.6845703125,0.6171875,0.55078125,0.484375,0.40625,0.3369140625,0.298828125,0.296875,0.3125,0.3251953125,0.3466796875,0.4052734375,0.484375,0.546875,0.568359375,0.546875,0.5,0.44140625,0.37109375,0.32421875,0.333984375,0.4013671875,0.4912109375,0.5703125,0.642578125,0.701171875,0.705078125,0.63671875,0.517578125,0.4013671875,0.3251953125,0.265625,0.220703125,0.2138671875,0.2490234375,0.3076171875,0.357421875,0.376953125,0.3818359375,0.3662109375,0.3408203125,0.3291015625,0.341796875,0.3798828125,0.4287109375,0.4814453125,0.5361328125,0.5810546875,0.60546875,0.61328125,0.6142578125,0.6220703125,0.626953125,0.611328125,0.5703125,0.5146484375,0.46484375,0.4345703125,0.4287109375,0.4423828125,0.5009765625,0.5859375,0.6533203125,0.671875,0.63671875,0.5703125,0.5087890625,0.4921875,0.5244140625,0.5810546875,0.623046875,0.6201171875,0.5703125,0.51171875,0.47265625,0.4697265625,0.5,0.5439453125,0.5712890625,0.5703125,0.564453125,0.5712890625,0.580078125,0.57421875,0.544921875,0.4990234375,0.4482421875,0.40234375,0.3798828125,0.380859375,0.392578125,0.3935546875,0.37109375,0.3251953125,0.283203125,0.28125,0.341796875,0.451171875,0.568359375,0.6484375,0.673828125,0.673828125,0.6396484375,0.587890625,0.552734375,0.55859375,0.60546875,0.673828125,0.7490234375,0.822265625,0.853515625,0.8173828125,0.724609375,0.6240234375,0.55078125,0.4853515625,0.419921875,0.390625,0.4228515625,0.5068359375,0.6025390625,0.673828125,0.72265625,0.7236328125,0.669921875,0.58984375,0.5263671875,0.5126953125,0.55078125,0.609375,0.6845703125,0.744140625,0.75390625,0.708984375,0.63671875,0.5703125,0.5068359375,0.4453125,0.3984375,0.3779296875,0.37890625,0.3837890625,0.376953125,0.357421875,0.3076171875,0.2490234375,0.2138671875,0.220703125,0.265625,0.3251953125,0.3876953125,0.4453125,0.4755859375,0.4677734375,0.431640625,0.39453125,0.376953125,0.3740234375,0.40234375,0.466796875,0.548828125,0.623046875,0.6650390625,0.673828125,0.6650390625,0.623046875,0.5458984375,0.453125,0.3759765625,0.333984375,0.3251953125,0.3359375,0.3798828125,0.4453125,0.4990234375,0.5166015625,0.494140625,0.4482421875,0.3984375,0.3583984375,0.3408203125,0.3486328125,0.3681640625,0.3818359375,0.376953125,0.3603515625,0.3251953125,0.2939453125,0.291015625,0.3251953125,0.384765625,0.4482421875,0.5146484375,0.5927734375,0.662109375,0.7001953125,0.7021484375,0.6865234375,0.673828125,0.671875,0.7001953125,0.744140625,0.7744140625,0.7705078125,0.7314453125,0.673828125,0.60546875,0.5185546875,0.43359375,0.376953125,0.3583984375,0.365234375,0.376953125,0.3857421875,0.3876953125,0.3779296875,0.3603515625,0.3408203125,0.328125,0.3251953125,0.34375,0.427734375,0.55859375,0.6806640625,0.7451171875,0.7353515625,0.673828125,0.591796875,0.4892578125,0.4033203125,0.375,0.4130859375,0.484375,0.55078125,0.6015625,0.6064453125,0.5693359375,0.517578125,0.4892578125,0.5087890625,0.5703125,0.6484375,0.736328125,0.794921875,0.791015625,0.7265625,0.6396484375,0.5703125,0.5048828125,0.4296875,0.3642578125,0.3251953125,0.31640625,0.3232421875,0.3251953125,0.328125,0.3408203125,0.36328125,0.390625,0.4140625,0.4267578125,0.4287109375,0.4345703125,0.4580078125,0.484375,0.4921875,0.4716796875,0.427734375,0.376953125,0.3232421875,0.271484375,0.2509765625,0.283203125,0.3583984375,0.4404296875,0.5,0.5517578125,0.59765625,0.6064453125,0.560546875,0.474609375,0.38671875,0.3251953125,0.29296875,0.3330078125,0.447265625,0.5869140625,0.6904296875,0.7177734375,0.673828125,0.60546875,0.5244140625,0.4677734375,0.4677734375,0.5244140625,0.60546875,0.673828125,0.724609375,0.7333984375,0.6953125,0.634765625,0.5869140625,0.58203125,0.6220703125,0.6640625,0.666015625,0.609375,0.5087890625,0.4052734375,0.33984375,0.3251953125,0.3251953125,0.33203125,0.3603515625,0.4169921875,0.4921875,0.5654296875,0.6220703125,0.67578125,0.7275390625,0.744140625,0.7021484375,0.6142578125,0.5185546875,0.4482421875,0.3994140625,0.40234375,0.4560546875,0.5263671875,0.5703125,0.5595703125,0.5,0.4228515625,0.3408203125,0.29296875,0.3115234375,0.3876953125,0.48046875,0.55078125,0.607421875,0.630859375,0.599609375,0.5185546875,0.419921875,0.349609375,0.3251953125,0.314453125,0.30078125,0.291015625,0.291015625,0.30078125,0.314453125,0.3251953125,0.3408203125,0.37890625,0.4384765625,0.5087890625,0.568359375,0.6064453125,0.6220703125,0.6259765625,0.6103515625,0.5859375,0.5732421875,0.5869140625,0.6240234375,0.673828125,0.7158203125,0.7177734375,0.6572265625,0.5478515625,0.4306640625,0.3505859375,0.3251953125,0.3154296875,0.3076171875,0.3095703125,0.3232421875,0.3447265625,0.3642578125,0.376953125,0.3876953125,0.39453125,0.3935546875,0.3798828125,0.3583984375,0.3388671875,0.3251953125,0.3291015625,0.384765625,0.4755859375,0.5556640625,0.5888671875,0.5634765625,0.5,0.427734375,0.3671875,0.337890625,0.3857421875,0.5078125,0.638671875,0.7216796875,0.740234375,0.7275390625,0.6728515625,0.5966796875,0.5380859375,0.5283203125,0.5673828125,0.634765625,0.701171875,0.7333984375,0.708984375,0.6357421875,0.544921875,0.4833984375,0.46875,0.4755859375,0.501953125,0.53515625,0.5546875,0.546875,0.513671875,0.46875,0.41796875,0.34765625,0.2783203125,0.234375,0.224609375,0.2392578125,0.2587890625,0.28125,0.31640625,0.3662109375,0.421875,0.4716796875,0.5078125,0.5302734375,0.5546875,0.5966796875,0.642578125,0.673828125,0.6787109375,0.6611328125,0.634765625,0.61328125,0.6025390625,0.5908203125,0.560546875,0.5068359375,0.4365234375,0.3642578125,0.28515625,0.1943359375,0.134765625,0.142578125,0.2158203125,0.3134765625,0.39453125,0.4794921875,0.603515625,0.7236328125,0.787109375,0.7744140625,0.708984375,0.634765625,0.5498046875,0.4267578125,0.3056640625,0.2421875,0.2548828125,0.3203125,0.39453125,0.4658203125,0.52734375,0.5576171875,0.546875,0.509765625,0.4775390625,0.46875,0.470703125,0.47265625,0.46875,0.4521484375,0.423828125,0.392578125,0.3642578125,0.341796875,0.337890625,0.3525390625,0.375,0.3896484375,0.3857421875,0.3642578125,0.3466796875,0.373046875,0.4521484375,0.5634765625,0.6669921875,0.7275390625,0.740234375,0.7314453125,0.69140625,0.6240234375,0.5517578125,0.501953125,0.486328125,0.5,0.5263671875,0.580078125,0.640625,0.6796875,0.6806640625,0.6484375,0.6044921875,0.548828125,0.4580078125,0.353515625,0.26953125,0.2314453125,0.2353515625,0.2587890625,0.29296875,0.3525390625,0.4248046875,0.4853515625,0.515625,0.515625,0.5,0.4716796875,0.419921875,0.3701171875,0.35546875,0.3896484375,0.45703125,0.5302734375,0.599609375,0.6455078125,0.6318359375,0.5498046875,0.4267578125,0.3193359375,0.2587890625,0.2138671875,0.177734375,0.1728515625,0.208984375,0.271484375,0.330078125,0.3642578125,0.3896484375,0.41015625,0.4248046875,0.43359375,0.4404296875,0.4521484375,0.46875,0.4873046875,0.5068359375,0.52734375,0.5517578125,0.580078125,0.6083984375,0.634765625,0.6572265625,0.65625,0.6240234375,0.568359375,0.51171875,0.4765625,0.46875,0.48046875,0.529296875,0.5966796875,0.642578125,0.6435546875,0.5986328125,0.5302734375,0.466796875,0.4404296875,0.4609375,0.5107421875,0.5556640625,0.564453125,0.5302734375,0.4892578125,0.4716796875,0.482421875,0.513671875,0.5419921875,0.548828125,0.5302734375,0.50390625,0.478515625,0.4580078125,0.44140625,0.427734375,0.412109375,0.39453125,0.375,0.3564453125,0.3369140625,0.31640625,0.296875,0.2783203125,0.2587890625,0.248046875,0.27734375,0.361328125,0.4853515625,0.6123046875,0.7001953125,0.740234375,0.755859375,0.7333984375,0.6845703125,0.6435546875,0.63671875,0.673828125,0.740234375,0.8134765625,0.875,0.892578125,0.8447265625,0.7529296875,0.662109375,0.6044921875,0.5576171875,0.5146484375,0.501953125,0.5380859375,0.6103515625,0.6865234375,0.740234375,0.7783203125,0.7841796875,0.748046875,0.685546875,0.625,0.595703125,0.6044921875,0.6279296875,0.6591796875,0.6796875,0.6708984375,0.6318359375,0.578125,0.5302734375,0.4853515625,0.447265625,0.421875,0.408203125,0.400390625,0.3876953125,0.3642578125,0.330078125,0.271484375,0.208984375,0.1728515625,0.177734375,0.2138671875,0.2587890625,0.3095703125,0.3701171875,0.421875,0.44140625,0.4267578125,0.3935546875,0.3642578125,0.3466796875,0.373046875,0.4521484375,0.5634765625,0.6669921875,0.7275390625,0.740234375,0.728515625,0.6708984375,0.5634765625,0.435546875,0.328125,0.2705078125,0.2587890625,0.2646484375,0.2919921875,0.3369140625,0.3798828125,0.4072265625,0.41015625,0.39453125,0.37890625,0.376953125,0.3857421875,0.3974609375,0.3994140625,0.3876953125,0.3642578125,0.3330078125,0.291015625,0.2587890625,0.2587890625,0.2939453125,0.345703125,0.39453125,0.4501953125,0.541015625,0.6455078125,0.7294921875,0.767578125,0.763671875,0.740234375,0.720703125,0.7275390625,0.7568359375,0.787109375,0.7978515625,0.7802734375,0.740234375,0.68359375,0.58984375,0.4775390625,0.3857421875,0.3408203125,0.3408203125,0.3642578125,0.3876953125,0.3935546875,0.375,0.3359375,0.29296875,0.2646484375,0.2587890625,0.2802734375,0.3798828125,0.541015625,0.6982421875,0.79296875,0.798828125,0.740234375,0.6611328125,0.5654296875,0.48828125,0.4638671875,0.4951171875,0.5537109375,0.6044921875,0.63671875,0.619140625,0.5576171875,0.48828125,0.451171875,0.4677734375,0.5302734375,0.60546875,0.6845703125,0.7314453125,0.720703125,0.6591796875,0.583984375,0.5302734375,0.4794921875,0.4130859375,0.3447265625,0.2919921875,0.265625,0.2587890625,0.2587890625,0.263671875,0.2890625,0.3359375,0.3916015625,0.4384765625,0.4638671875,0.46875,0.4697265625,0.4677734375,0.4580078125,0.4384765625,0.4111328125,0.384765625,0.3642578125,0.345703125,0.337890625,0.3505859375,0.3857421875,0.43359375,0.4755859375,0.5,0.5146484375,0.5107421875,0.474609375,0.4111328125,0.33984375,0.28515625,0.2587890625,0.2578125,0.3291015625,0.466796875,0.62109375,0.734375,0.7705078125,0.740234375,0.689453125,0.6298828125,0.587890625,0.587890625,0.6298828125,0.689453125,0.740234375,0.779296875,0.7880859375,0.7587890625,0.7041015625,0.650390625,0.625,0.634765625,0.64453125,0.61328125,0.5322265625,0.4248046875,0.3271484375,0.2705078125,0.2587890625,0.2646484375,0.2998046875,0.369140625,0.4609375,0.5478515625,0.607421875,0.634765625,0.654296875,0.6650390625,0.6484375,0.5966796875,0.5205078125,0.4462890625,0.39453125,0.3623046875,0.3837890625,0.4521484375,0.5302734375,0.57421875,0.560546875,0.5,0.42578125,0.3603515625,0.3359375,0.375,0.4609375,0.5478515625,0.6044921875,0.64453125,0.650390625,0.6015625,0.501953125,0.38671875,0.298828125,0.2587890625,0.2294921875,0.1953125,0.1708984375,0.1708984375,0.1953125,0.2294921875,0.2587890625,0.2900390625,0.3388671875,0.408203125,0.4853515625,0.5546875,0.6044921875,0.634765625,0.66015625,0.681640625,0.6953125,0.7041015625,0.7119140625,0.72265625,0.740234375,0.7509765625,0.7216796875,0.6376953125,0.513671875,0.38671875,0.298828125,0.2587890625,0.232421875,0.2099609375,0.208984375,0.2373046875,0.28515625,0.33203125,0.3642578125,0.390625,0.4130859375,0.4140625,0.3857421875,0.337890625,0.291015625,0.2587890625,0.2490234375,0.30078125,0.40234375,0.5078125,0.568359375,0.5595703125,0.5,0.4287109375,0.373046875,0.3525390625] \ No newline at end of file diff --git a/packages/store-indexer/bin/parseEnv.ts b/packages/store-indexer/bin/parseEnv.ts index 2720f1b9d4..085069b111 100644 --- a/packages/store-indexer/bin/parseEnv.ts +++ b/packages/store-indexer/bin/parseEnv.ts @@ -45,4 +45,4 @@ export function parseEnv(envSchema: TSchema): z.infe } throw error; } -} +} \ No newline at end of file diff --git a/packages/store-indexer/bin/postgres-decoded-indexer.ts b/packages/store-indexer/bin/postgres-decoded-indexer.ts index 19909ca995..64f2321eae 100644 --- a/packages/store-indexer/bin/postgres-decoded-indexer.ts +++ b/packages/store-indexer/bin/postgres-decoded-indexer.ts @@ -23,8 +23,8 @@ import { helloWorld } from "../src/koa-middleware/helloWorld"; HEALTHCHECK_HOST: z.string().optional(), HEALTHCHECK_PORT: z.coerce.number().optional(), SENTRY_DSN: z.string().optional(), - }) - ) + }), + ), ); const transports: Transport[] = [ @@ -34,62 +34,9 @@ import { helloWorld } from "../src/koa-middleware/helloWorld"; env.RPC_HTTP_URL ? http(env.RPC_HTTP_URL) : undefined, ].filter(isDefined); -const publicClient = createPublicClient({ - transport: fallback(transports), - pollingInterval: env.POLLING_INTERVAL, -}); - -const chainId = await publicClient.getChainId(); -const database = drizzle(postgres(env.DATABASE_URL, { prepare: false })); - -const { storageAdapter, tables } = await createStorageAdapter({ database, publicClient }); - -let startBlock = env.START_BLOCK; - -// Resume from latest block stored in DB. This will throw if the DB doesn't exist yet, so we wrap in a try/catch and ignore the error. -// TODO: query if the DB exists instead of try/catch -try { - const chainState = await database - .select() - .from(tables.configTable) - .where(eq(tables.configTable.chainId, chainId)) - .limit(1) - .execute() - // Get the first record in a way that returns a possible `undefined` - // TODO: move this to `.findFirst` after upgrading drizzle or `rows[0]` after enabling `noUncheckedIndexedAccess: true` - .then((rows) => rows.find(() => true)); - - if (chainState?.blockNumber != null) { - startBlock = chainState.blockNumber + 1n; - console.log("resuming from block number", startBlock); - } -} catch (error) { - // ignore errors for now -} - -const { latestBlockNumber$, storedBlockLogs$ } = await createStoreSync({ - storageAdapter, - publicClient, - followBlockTag: env.FOLLOW_BLOCK_TAG, - startBlock, - maxBlockRange: env.MAX_BLOCK_RANGE, - address: env.STORE_ADDRESS, -}); - -storedBlockLogs$.subscribe(); - -let isCaughtUp = false; -combineLatest([latestBlockNumber$, storedBlockLogs$]) - .pipe( - filter( - ([latestBlockNumber, { blockNumber: lastBlockNumberProcessed }]) => - latestBlockNumber === lastBlockNumberProcessed, - ), - first(), - ) - .subscribe(() => { - isCaughtUp = true; - console.log("all caught up"); + const publicClient = createPublicClient({ + transport: fallback(transports), + pollingInterval: env.POLLING_INTERVAL, }); const chainId = await publicClient.getChainId(); @@ -120,16 +67,52 @@ combineLatest([latestBlockNumber$, storedBlockLogs$]) // ignore errors for now } - server.use(cors()); - server.use( - healthcheck({ - isReady: () => isCaughtUp, - }), - ); - server.use(helloWorld()); + const { latestBlockNumber$, storedBlockLogs$ } = await createStoreSync({ + storageAdapter, + publicClient, + followBlockTag: env.FOLLOW_BLOCK_TAG, + startBlock, + maxBlockRange: env.MAX_BLOCK_RANGE, + address: env.STORE_ADDRESS, + }); - server.listen({ host: env.HEALTHCHECK_HOST, port: env.HEALTHCHECK_PORT }); - console.log( - `postgres indexer healthcheck server listening on http://${env.HEALTHCHECK_HOST}:${env.HEALTHCHECK_PORT}`, - ); -})(); \ No newline at end of file + storedBlockLogs$.subscribe(); + + let isCaughtUp = false; + combineLatest([latestBlockNumber$, storedBlockLogs$]) + .pipe( + filter( + ([latestBlockNumber, { blockNumber: lastBlockNumberProcessed }]) => + latestBlockNumber === lastBlockNumberProcessed, + ), + first(), + ) + .subscribe(() => { + isCaughtUp = true; + console.log("all caught up"); + }); + + if (env.HEALTHCHECK_HOST != null || env.HEALTHCHECK_PORT != null) { + const { default: Koa } = await import("koa"); + const { default: cors } = await import("@koa/cors"); + + const server = new Koa(); + + if (env.SENTRY_DSN) { + server.use(sentry(env.SENTRY_DSN)); + } + + server.use(cors()); + server.use( + healthcheck({ + isReady: () => isCaughtUp, + }), + ); + server.use(helloWorld()); + + server.listen({ host: env.HEALTHCHECK_HOST, port: env.HEALTHCHECK_PORT }); + console.log( + `postgres indexer healthcheck server listening on http://${env.HEALTHCHECK_HOST}:${env.HEALTHCHECK_PORT}`, + ); + } +})(); diff --git a/packages/store-indexer/bin/sqlite-indexer.ts b/packages/store-indexer/bin/sqlite-indexer.ts index 3e79e61e42..4de9c83599 100644 --- a/packages/store-indexer/bin/sqlite-indexer.ts +++ b/packages/store-indexer/bin/sqlite-indexer.ts @@ -22,15 +22,15 @@ import { sentry } from "../src/koa-middleware/sentry"; import { metrics } from "../src/koa-middleware/metrics"; (async (): Promise => { -const env = parseEnv( - z.intersection( - z.intersection(indexerEnvSchema, frontendEnvSchema), - z.object({ - SQLITE_FILENAME: z.string().default("indexer.db"), - SENTRY_DSN: z.string().optional(), - }), - ), -); + const env = parseEnv( + z.intersection( + z.intersection(indexerEnvSchema, frontendEnvSchema), + z.object({ + SQLITE_FILENAME: z.string().default("indexer.db"), + SENTRY_DSN: z.string().optional(), + }), + ), + ); const transports: Transport[] = [ // prefer WS when specified @@ -39,81 +39,9 @@ const env = parseEnv( env.RPC_HTTP_URL ? http(env.RPC_HTTP_URL) : undefined, ].filter(isDefined); -const publicClient = createPublicClient({ - transport: fallback(transports), - pollingInterval: env.POLLING_INTERVAL, -}); - -const chainId = await publicClient.getChainId(); -const database = drizzle(new Database(env.SQLITE_FILENAME)); - -let startBlock = env.START_BLOCK; - -async function getCurrentChainState(): Promise< - | { - schemaVersion: number; - chainId: number; - lastUpdatedBlockNumber: bigint | null; - lastError: string | null; - } - | undefined -> { - // This will throw if the DB doesn't exist yet, so we wrap in a try/catch and ignore the error. - try { - const currentChainStates = database.select().from(chainState).where(eq(chainState.chainId, chainId)).all(); - // TODO: replace this type workaround with `noUncheckedIndexedAccess: true` when we can fix all the issues related (https://github.com/latticexyz/mud/issues/1212) - const currentChainState: (typeof currentChainStates)[number] | undefined = currentChainStates[0]; - return currentChainState; - } catch (error) { - // ignore errors, this is optional - } -} - -async function getLatestStoredBlockNumber(): Promise { - const currentChainState = await getCurrentChainState(); - return currentChainState?.lastUpdatedBlockNumber ?? undefined; -} - -const currentChainState = await getCurrentChainState(); -if (currentChainState) { - // Reset the db if the version changed - if (currentChainState.schemaVersion != schemaVersion) { - console.log( - "schema version changed from", - currentChainState.schemaVersion, - "to", - schemaVersion, - "recreating database", - ); - fs.truncateSync(env.SQLITE_FILENAME); - } else if (currentChainState.lastUpdatedBlockNumber != null) { - // Resume from latest block stored in DB. This will throw if the DB doesn't exist yet, so we wrap in a try/catch and ignore the error. - console.log("resuming from block number", currentChainState.lastUpdatedBlockNumber + 1n); - startBlock = currentChainState.lastUpdatedBlockNumber + 1n; - } -} - -const { latestBlockNumber$, storedBlockLogs$ } = await syncToSqlite({ - database, - publicClient, - followBlockTag: env.FOLLOW_BLOCK_TAG, - startBlock, - maxBlockRange: env.MAX_BLOCK_RANGE, - address: env.STORE_ADDRESS, -}); - -let isCaughtUp = false; -combineLatest([latestBlockNumber$, storedBlockLogs$]) - .pipe( - filter( - ([latestBlockNumber, { blockNumber: lastBlockNumberProcessed }]) => - latestBlockNumber === lastBlockNumberProcessed, - ), - first(), - ) - .subscribe(() => { - isCaughtUp = true; - console.log("all caught up"); + const publicClient = createPublicClient({ + transport: fallback(transports), + pollingInterval: env.POLLING_INTERVAL, }); const chainId = await publicClient.getChainId(); @@ -121,36 +49,54 @@ combineLatest([latestBlockNumber$, storedBlockLogs$]) let startBlock = env.START_BLOCK; -server.use(cors()); -server.use( - healthcheck({ - isReady: () => isCaughtUp, - }), -); -server.use( - metrics({ - isHealthy: () => true, - isReady: () => isCaughtUp, - getLatestStoredBlockNumber, - followBlockTag: env.FOLLOW_BLOCK_TAG, - }), -); -server.use(helloWorld()); -server.use(apiRoutes(database)); + async function getCurrentChainState(): Promise< + | { + schemaVersion: number; + chainId: number; + lastUpdatedBlockNumber: bigint | null; + lastError: string | null; + } + | undefined + > { + // This will throw if the DB doesn't exist yet, so we wrap in a try/catch and ignore the error. + try { + const currentChainStates = database.select().from(chainState).where(eq(chainState.chainId, chainId)).all(); + // TODO: replace this type workaround with `noUncheckedIndexedAccess: true` when we can fix all the issues related (https://github.com/latticexyz/mud/issues/1212) + const currentChainState: (typeof currentChainStates)[number] | undefined = currentChainStates[0]; + return currentChainState; + } catch (error) { + // ignore errors, this is optional + } + } -server.use( - createKoaMiddleware({ - prefix: "/trpc", - router: createAppRouter(), - createContext: async () => ({ - queryAdapter: await createQueryAdapter(database), - }), - }), -); + async function getLatestStoredBlockNumber(): Promise { + const currentChainState = await getCurrentChainState(); + return currentChainState?.lastUpdatedBlockNumber ?? undefined; + } + + const currentChainState = await getCurrentChainState(); + if (currentChainState) { + // Reset the db if the version changed + if (currentChainState.schemaVersion != schemaVersion) { + console.log( + "schema version changed from", + currentChainState.schemaVersion, + "to", + schemaVersion, + "recreating database", + ); + fs.truncateSync(env.SQLITE_FILENAME); + } else if (currentChainState.lastUpdatedBlockNumber != null) { + // Resume from latest block stored in DB. This will throw if the DB doesn't exist yet, so we wrap in a try/catch and ignore the error. + console.log("resuming from block number", currentChainState.lastUpdatedBlockNumber + 1n); + startBlock = currentChainState.lastUpdatedBlockNumber + 1n; + } + } const { latestBlockNumber$, storedBlockLogs$ } = await syncToSqlite({ database, publicClient, + followBlockTag: env.FOLLOW_BLOCK_TAG, startBlock, maxBlockRange: env.MAX_BLOCK_RANGE, address: env.STORE_ADDRESS, @@ -161,9 +107,9 @@ server.use( .pipe( filter( ([latestBlockNumber, { blockNumber: lastBlockNumberProcessed }]) => - latestBlockNumber === lastBlockNumberProcessed + latestBlockNumber === lastBlockNumberProcessed, ), - first() + first(), ) .subscribe(() => { isCaughtUp = true; @@ -180,7 +126,15 @@ server.use( server.use( healthcheck({ isReady: () => isCaughtUp, - }) + }), + ); + server.use( + metrics({ + isHealthy: () => true, + isReady: () => isCaughtUp, + getLatestStoredBlockNumber, + followBlockTag: env.FOLLOW_BLOCK_TAG, + }), ); server.use(helloWorld()); server.use(apiRoutes(database)); @@ -192,9 +146,9 @@ server.use( createContext: async () => ({ queryAdapter: await createQueryAdapter(database), }), - }) + }), ); server.listen({ host: env.HOST, port: env.PORT }); console.log(`sqlite indexer frontend listening on http://${env.HOST}:${env.PORT}`); -})(); +})(); \ No newline at end of file diff --git a/packages/world-modules/src/index.sol b/packages/world-modules/src/index.sol index 59ecd8a60d..fc57fd688c 100644 --- a/packages/world-modules/src/index.sol +++ b/packages/world-modules/src/index.sol @@ -6,8 +6,8 @@ pragma solidity >=0.8.24; import { KeysWithValue } from "./modules/keyswithvalue/tables/KeysWithValue.sol"; import { KeysInTable, KeysInTableData } from "./modules/keysintable/tables/KeysInTable.sol"; import { UsedKeysIndex } from "./modules/keysintable/tables/UsedKeysIndex.sol"; -import { UniqueEntity } from "./modules/uniqueentity/tables/UniqueEntity.sol"; import { HasKeys } from "./modules/haskeys/tables/HasKeys.sol"; +import { UniqueEntity } from "./modules/uniqueentity/tables/UniqueEntity.sol"; import { CallboundDelegations } from "./modules/std-delegations/tables/CallboundDelegations.sol"; import { SystemboundDelegations } from "./modules/std-delegations/tables/SystemboundDelegations.sol"; import { TimeboundDelegations } from "./modules/std-delegations/tables/TimeboundDelegations.sol"; diff --git a/packages/world-modules/src/modules/haskeys/HasKeysModule.sol b/packages/world-modules/src/modules/haskeys/HasKeysModule.sol index b48712ad9f..0a02b9b787 100644 --- a/packages/world-modules/src/modules/haskeys/HasKeysModule.sol +++ b/packages/world-modules/src/modules/haskeys/HasKeysModule.sol @@ -13,7 +13,7 @@ import { ResourceId, WorldResourceIdInstance } from "@latticexyz/world/src/World import { revertWithBytes } from "@latticexyz/world/src/revertWithBytes.sol"; import { HasKeysHook } from "./HasKeysHook.sol"; -import { HasKeys, HasKeysTableId } from "./tables/HasKeys.sol"; +import { HasKeys } from "./tables/HasKeys.sol"; /** * This module deploys a hook that is called when a value is set in the `sourceTableId` @@ -44,16 +44,16 @@ contract HasKeysModule is Module { bool success; bytes memory returnData; - if (!ResourceIds._getExists(HasKeysTableId)) { + if (!ResourceIds._getExists(HasKeys._tableId)) { // Register the tables (success, returnData) = address(world).delegatecall( abi.encodeCall( world.registerTable, ( - HasKeysTableId, - HasKeys.getFieldLayout(), - HasKeys.getKeySchema(), - HasKeys.getValueSchema(), + HasKeys._tableId, + HasKeys._fieldLayout, + HasKeys._keySchema, + HasKeys._valueSchema, HasKeys.getKeyNames(), HasKeys.getFieldNames() ) @@ -63,7 +63,7 @@ contract HasKeysModule is Module { // Grant the hook access to the tables (success, returnData) = address(world).delegatecall( - abi.encodeCall(world.grantAccess, (HasKeysTableId, address(hook))) + abi.encodeCall(world.grantAccess, (HasKeys._tableId, address(hook))) ); if (!success) revertWithBytes(returnData); } diff --git a/packages/world-modules/src/modules/haskeys/tables/HasKeys.sol b/packages/world-modules/src/modules/haskeys/tables/HasKeys.sol index 9bffb7f14f..82ac3c8d40 100644 --- a/packages/world-modules/src/modules/haskeys/tables/HasKeys.sol +++ b/packages/world-modules/src/modules/haskeys/tables/HasKeys.sol @@ -3,9 +3,6 @@ pragma solidity >=0.8.24; /* Autogenerated file. Do not edit manually. */ -// Import schema type -import { SchemaType } from "@latticexyz/schema-type/src/solidity/SchemaType.sol"; - // Import store internals import { IStore } from "@latticexyz/store/src/IStore.sol"; import { StoreSwitch } from "@latticexyz/store/src/StoreSwitch.sol"; @@ -14,53 +11,25 @@ import { Bytes } from "@latticexyz/store/src/Bytes.sol"; import { Memory } from "@latticexyz/store/src/Memory.sol"; import { SliceLib } from "@latticexyz/store/src/Slice.sol"; import { EncodeArray } from "@latticexyz/store/src/tightcoder/EncodeArray.sol"; -import { FieldLayout, FieldLayoutLib } from "@latticexyz/store/src/FieldLayout.sol"; -import { Schema, SchemaLib } from "@latticexyz/store/src/Schema.sol"; +import { FieldLayout } from "@latticexyz/store/src/FieldLayout.sol"; +import { Schema } from "@latticexyz/store/src/Schema.sol"; import { PackedCounter, PackedCounterLib } from "@latticexyz/store/src/PackedCounter.sol"; import { ResourceId } from "@latticexyz/store/src/ResourceId.sol"; // Import user types import { ResourceId } from "@latticexyz/store/src/ResourceId.sol"; -// Hex below is the result of `WorldResourceIdLib.encode({ namespace: "", name: "HasKeys", typeId: RESOURCE_TABLE });` -ResourceId constant _tableId = ResourceId.wrap(0x746200000000000000000000000000004861734b657973000000000000000000); -ResourceId constant HasKeysTableId = _tableId; - -FieldLayout constant _fieldLayout = FieldLayout.wrap( - 0x0001010001000000000000000000000000000000000000000000000000000000 -); - library HasKeys { - /** - * @notice Get the table values' field layout. - * @return _fieldLayout The field layout for the table. - */ - function getFieldLayout() internal pure returns (FieldLayout) { - return _fieldLayout; - } - - /** - * @notice Get the table's key schema. - * @return _keySchema The key schema for the table. - */ - function getKeySchema() internal pure returns (Schema) { - SchemaType[] memory _keySchema = new SchemaType[](2); - _keySchema[0] = SchemaType.BYTES32; - _keySchema[1] = SchemaType.BYTES32; + // Hex below is the result of `WorldResourceIdLib.encode({ namespace: "", name: "HasKeys", typeId: RESOURCE_TABLE });` + ResourceId constant _tableId = ResourceId.wrap(0x746200000000000000000000000000004861734b657973000000000000000000); - return SchemaLib.encode(_keySchema); - } + FieldLayout constant _fieldLayout = + FieldLayout.wrap(0x0001010001000000000000000000000000000000000000000000000000000000); - /** - * @notice Get the table's value schema. - * @return _valueSchema The value schema for the table. - */ - function getValueSchema() internal pure returns (Schema) { - SchemaType[] memory _valueSchema = new SchemaType[](1); - _valueSchema[0] = SchemaType.BOOL; - - return SchemaLib.encode(_valueSchema); - } + // Hex-encoded key schema of (bytes32, bytes32) + Schema constant _keySchema = Schema.wrap(0x004002005f5f0000000000000000000000000000000000000000000000000000); + // Hex-encoded value schema of (bool) + Schema constant _valueSchema = Schema.wrap(0x0001010060000000000000000000000000000000000000000000000000000000); /** * @notice Get the table's key field names. @@ -85,21 +54,21 @@ library HasKeys { * @notice Register the table with its config. */ function register() internal { - StoreSwitch.registerTable(_tableId, _fieldLayout, getKeySchema(), getValueSchema(), getKeyNames(), getFieldNames()); + StoreSwitch.registerTable(_tableId, _fieldLayout, _keySchema, _valueSchema, getKeyNames(), getFieldNames()); } /** * @notice Register the table with its config. */ function _register() internal { - StoreCore.registerTable(_tableId, _fieldLayout, getKeySchema(), getValueSchema(), getKeyNames(), getFieldNames()); + StoreCore.registerTable(_tableId, _fieldLayout, _keySchema, _valueSchema, getKeyNames(), getFieldNames()); } /** * @notice Register the table with its config (using the specified store). */ function register(IStore _store) internal { - _store.registerTable(_tableId, _fieldLayout, getKeySchema(), getValueSchema(), getKeyNames(), getFieldNames()); + _store.registerTable(_tableId, _fieldLayout, _keySchema, _valueSchema, getKeyNames(), getFieldNames()); } /** diff --git a/templates/phaser/packages/client/.env b/templates/phaser/packages/client/.env deleted file mode 100644 index 3528db8807..0000000000 --- a/templates/phaser/packages/client/.env +++ /dev/null @@ -1 +0,0 @@ -VITE_CHAIN_ID=31337 diff --git a/templates/phaser/packages/contracts/.env b/templates/phaser/packages/contracts/.env deleted file mode 100644 index 4aa7957312..0000000000 --- a/templates/phaser/packages/contracts/.env +++ /dev/null @@ -1,11 +0,0 @@ -# This .env file is for demonstration purposes only. -# -# This should usually be excluded via .gitignore and the env vars attached to -# your deployment enviroment, but we're including this here for ease of local -# development. Please do not commit changes to this file! -# -# Enable debug logs for MUD CLI -DEBUG=mud:* -# -# Anvil default private key: -PRIVATE_KEY=0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 diff --git a/templates/react-ecs/packages/client/.env b/templates/react-ecs/packages/client/.env deleted file mode 100644 index 3528db8807..0000000000 --- a/templates/react-ecs/packages/client/.env +++ /dev/null @@ -1 +0,0 @@ -VITE_CHAIN_ID=31337 diff --git a/templates/react-ecs/packages/contracts/.env b/templates/react-ecs/packages/contracts/.env deleted file mode 100644 index 4aa7957312..0000000000 --- a/templates/react-ecs/packages/contracts/.env +++ /dev/null @@ -1,11 +0,0 @@ -# This .env file is for demonstration purposes only. -# -# This should usually be excluded via .gitignore and the env vars attached to -# your deployment enviroment, but we're including this here for ease of local -# development. Please do not commit changes to this file! -# -# Enable debug logs for MUD CLI -DEBUG=mud:* -# -# Anvil default private key: -PRIVATE_KEY=0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 diff --git a/templates/react/packages/client/.env b/templates/react/packages/client/.env deleted file mode 100644 index 3528db8807..0000000000 --- a/templates/react/packages/client/.env +++ /dev/null @@ -1 +0,0 @@ -VITE_CHAIN_ID=31337 diff --git a/templates/react/packages/contracts/.env b/templates/react/packages/contracts/.env deleted file mode 100644 index 4aa7957312..0000000000 --- a/templates/react/packages/contracts/.env +++ /dev/null @@ -1,11 +0,0 @@ -# This .env file is for demonstration purposes only. -# -# This should usually be excluded via .gitignore and the env vars attached to -# your deployment enviroment, but we're including this here for ease of local -# development. Please do not commit changes to this file! -# -# Enable debug logs for MUD CLI -DEBUG=mud:* -# -# Anvil default private key: -PRIVATE_KEY=0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 diff --git a/templates/threejs/packages/client/.env b/templates/threejs/packages/client/.env deleted file mode 100644 index 3528db8807..0000000000 --- a/templates/threejs/packages/client/.env +++ /dev/null @@ -1 +0,0 @@ -VITE_CHAIN_ID=31337 diff --git a/templates/threejs/packages/contracts/.env b/templates/threejs/packages/contracts/.env deleted file mode 100644 index 4aa7957312..0000000000 --- a/templates/threejs/packages/contracts/.env +++ /dev/null @@ -1,11 +0,0 @@ -# This .env file is for demonstration purposes only. -# -# This should usually be excluded via .gitignore and the env vars attached to -# your deployment enviroment, but we're including this here for ease of local -# development. Please do not commit changes to this file! -# -# Enable debug logs for MUD CLI -DEBUG=mud:* -# -# Anvil default private key: -PRIVATE_KEY=0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 diff --git a/templates/vanilla/packages/client/.env b/templates/vanilla/packages/client/.env deleted file mode 100644 index 3528db8807..0000000000 --- a/templates/vanilla/packages/client/.env +++ /dev/null @@ -1 +0,0 @@ -VITE_CHAIN_ID=31337 diff --git a/templates/vanilla/packages/contracts/.env b/templates/vanilla/packages/contracts/.env deleted file mode 100644 index 4aa7957312..0000000000 --- a/templates/vanilla/packages/contracts/.env +++ /dev/null @@ -1,11 +0,0 @@ -# This .env file is for demonstration purposes only. -# -# This should usually be excluded via .gitignore and the env vars attached to -# your deployment enviroment, but we're including this here for ease of local -# development. Please do not commit changes to this file! -# -# Enable debug logs for MUD CLI -DEBUG=mud:* -# -# Anvil default private key: -PRIVATE_KEY=0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 From 94e9dc79fdb7852a0d961bad17a2dd8b4f43fa14 Mon Sep 17 00:00:00 2001 From: Dhvani Patel Date: Thu, 14 Mar 2024 21:33:29 +0000 Subject: [PATCH 11/32] fix: noise cjs --- packages/noise/package.json | 1 - packages/noise/ts/index.ts | 9 +++++++-- packages/noise/tsup.config.ts | 2 +- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/packages/noise/package.json b/packages/noise/package.json index d09d623a97..da10af978c 100644 --- a/packages/noise/package.json +++ b/packages/noise/package.json @@ -2,7 +2,6 @@ "name": "@latticexyz/noise", "version": "2.0.0-next.17", "license": "MIT", - "type": "module", "exports": { ".": "./dist/index.js" }, diff --git a/packages/noise/ts/index.ts b/packages/noise/ts/index.ts index 00ec42ec5e..5f7a28124d 100644 --- a/packages/noise/ts/index.ts +++ b/packages/noise/ts/index.ts @@ -1,4 +1,5 @@ import fs from "fs"; +import path from "path"; // import * as buffer from "buffer"; // const { Buffer } = buffer; @@ -7,7 +8,7 @@ import fs from "fs"; // return buffer; // } -export async function fetchAndCompileWasmModule(url: URL) { +export async function fetchAndCompileWasmModule(url: URL | string) { try { return await WebAssembly.compileStreaming(fetch(url)); } catch { @@ -41,7 +42,11 @@ export function createSplines(splines: [number, number][]): (x: number) => numbe type Perlin = (_x: number, _y: number, _z: number, denom: number) => number; export async function createPerlin(): Promise { - const wasmModule = await fetchAndCompileWasmModule(new URL("../build/release.wasm", import.meta.url)); + const wasmModule = await fetchAndCompileWasmModule( + import.meta.url + ? new URL("../build/release.wasm", import.meta.url) + : path.resolve(__dirname, "../build/release.wasm"), + ); const wasmInstance = await WebAssembly.instantiate(wasmModule, { env: { abort: (e: string) => { diff --git a/packages/noise/tsup.config.ts b/packages/noise/tsup.config.ts index 5837375692..59f79395cc 100644 --- a/packages/noise/tsup.config.ts +++ b/packages/noise/tsup.config.ts @@ -3,7 +3,7 @@ import { defineConfig } from "tsup"; export default defineConfig({ entry: ["ts/index.ts"], target: "esnext", - format: ["esm"], + format: ["esm", "cjs"], dts: true, sourcemap: true, clean: true, From 1f94e959be3d8b07fe15badd6573afc042a4f28b Mon Sep 17 00:00:00 2001 From: Dhvani Patel Date: Mon, 18 Mar 2024 13:41:31 +0000 Subject: [PATCH 12/32] fix: remove module type from query package --- packages/query/package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/query/package.json b/packages/query/package.json index dac560e541..3f1ce0f4a5 100644 --- a/packages/query/package.json +++ b/packages/query/package.json @@ -8,7 +8,6 @@ "directory": "packages/query" }, "license": "MIT", - "type": "module", "exports": { ".": "./dist/index.js", "./internal": "./dist/internal.js" From 741d4effbf452f64274d412e150bef497c6c0689 Mon Sep 17 00:00:00 2001 From: Dhvani Patel Date: Mon, 18 Mar 2024 14:48:07 +0000 Subject: [PATCH 13/32] feat: call unregister hook if exists on delegatee --- packages/world/src/ICustomUnregisterDelegation.sol | 8 ++++++++ packages/world/src/IWorldErrors.sol | 6 ++++++ .../init/implementations/WorldRegistrationSystem.sol | 11 +++++++++++ 3 files changed, 25 insertions(+) create mode 100644 packages/world/src/ICustomUnregisterDelegation.sol diff --git a/packages/world/src/ICustomUnregisterDelegation.sol b/packages/world/src/ICustomUnregisterDelegation.sol new file mode 100644 index 0000000000..80fc597355 --- /dev/null +++ b/packages/world/src/ICustomUnregisterDelegation.sol @@ -0,0 +1,8 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.8.24; + +import { IERC165 } from "./IERC165.sol"; + +interface ICustomUnregisterDelegation is IERC165 { + function canUnregister() external returns (bool); +} diff --git a/packages/world/src/IWorldErrors.sol b/packages/world/src/IWorldErrors.sol index e702f86695..c0167a89dc 100644 --- a/packages/world/src/IWorldErrors.sol +++ b/packages/world/src/IWorldErrors.sol @@ -80,6 +80,12 @@ interface IWorldErrors { */ error World_UnlimitedDelegationNotAllowed(); + /** + * @notice Raised when unregister delegation is called but a custom unregister delegation blocks it + * e.g. if the delegation agreement wanted to enforce some conditions before allowing the delegation to be removed + */ + error World_CustomUnregisterDelegationNotAllowed(); + /** * @notice Raised when there's an insufficient balance for a particular operation. * @param balance The current balance. diff --git a/packages/world/src/modules/init/implementations/WorldRegistrationSystem.sol b/packages/world/src/modules/init/implementations/WorldRegistrationSystem.sol index bd91822a85..73ea7fbb2d 100644 --- a/packages/world/src/modules/init/implementations/WorldRegistrationSystem.sol +++ b/packages/world/src/modules/init/implementations/WorldRegistrationSystem.sol @@ -21,6 +21,8 @@ import { NamespaceDelegationControl } from "../../../codegen/tables/NamespaceDel import { ISystemHook } from "../../../ISystemHook.sol"; import { IWorldErrors } from "../../../IWorldErrors.sol"; import { IDelegationControl } from "../../../IDelegationControl.sol"; +import { ICustomUnregisterDelegation } from "../../../ICustomUnregisterDelegation.sol"; +import { ERC165Checker } from "../../../ERC165Checker.sol"; import { SystemHooks } from "../../../codegen/tables/SystemHooks.sol"; import { SystemRegistry } from "../../../codegen/tables/SystemRegistry.sol"; @@ -274,6 +276,15 @@ contract WorldRegistrationSystem is System, IWorldErrors, LimitedCallContext { * @param delegatee The address of the delegatee */ function unregisterDelegation(address delegatee) public onlyDelegatecall { + if (ERC165Checker.supportsInterface(delegatee, type(ICustomUnregisterDelegation).interfaceId)) { + (bool canUnregisterSuccess, bytes memory canUnregisterReturnData) = delegatee.call( + abi.encodeCall(ICustomUnregisterDelegation.canUnregister, ()) + ); + if (!canUnregisterSuccess) revert World_CustomUnregisterDelegationNotAllowed(); + canUnregisterSuccess = abi.decode(canUnregisterReturnData, (bool)); + if (!canUnregisterSuccess) revert World_CustomUnregisterDelegationNotAllowed(); + } + // Delete the delegation control contract address UserDelegationControl.deleteRecord({ delegator: _msgSender(), delegatee: delegatee }); } From b7e98b3b112bd50a941e408eb2d76dc9d7d99ac5 Mon Sep 17 00:00:00 2001 From: Dhvani Patel Date: Mon, 18 Mar 2024 17:20:37 +0000 Subject: [PATCH 14/32] feat: add optional system hooks --- packages/world/mud.config.ts | 10 + packages/world/src/IOptionalSystemHook.sol | 24 + packages/world/src/SystemCall.sol | 34 + packages/world/src/codegen/index.sol | 1 + .../src/codegen/interfaces/IBaseWorld.sol | 2 + .../IExtendedWorldRegistrationSystem.sol | 23 + .../codegen/tables/OptionalSystemHooks.sol | 580 ++++++++++++++++++ .../world/src/modules/init/InitModule.sol | 2 + .../ExtendedWorldRegistrationSystem.sol | 124 ++++ 9 files changed, 800 insertions(+) create mode 100644 packages/world/src/IOptionalSystemHook.sol create mode 100644 packages/world/src/codegen/interfaces/IExtendedWorldRegistrationSystem.sol create mode 100644 packages/world/src/codegen/tables/OptionalSystemHooks.sol create mode 100644 packages/world/src/modules/init/implementations/ExtendedWorldRegistrationSystem.sol diff --git a/packages/world/mud.config.ts b/packages/world/mud.config.ts index 882c4599a3..4798a08957 100644 --- a/packages/world/mud.config.ts +++ b/packages/world/mud.config.ts @@ -81,6 +81,16 @@ export default defineWorld({ }, key: ["systemId"], }, + OptionalSystemHooks: { + keySchema: { + player: "address", + systemId: "ResourceId", + callDataHash: "bytes32", + }, + valueSchema: { + hooks: "bytes21[]", + }, + }, FunctionSelectors: { schema: { worldFunctionSelector: "bytes4", diff --git a/packages/world/src/IOptionalSystemHook.sol b/packages/world/src/IOptionalSystemHook.sol new file mode 100644 index 0000000000..5efdcf9912 --- /dev/null +++ b/packages/world/src/IOptionalSystemHook.sol @@ -0,0 +1,24 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.8.24; + +import { ISystemHook } from "./ISystemHook.sol"; + +/** + * @title IOptionalSystemHook + * @dev Interface defining optional hooks for external functionality. + * Provides pre and post hooks that can be triggered before and after a system call respectively. + * This interface adheres to the ERC-165 standard for determining interface support. + */ +interface IOptionalSystemHook is ISystemHook { + /** + * @notice Executes when a system hook is registered by the user. + * @dev Provides the ability to add custom logic or checks when a system hook is registered. + */ + function onRegisterHook() external; + + /** + * @notice Executes when a system hook is unregistered by the user. + * @dev Provides the ability to add custom logic or checks when a system hook is unregistered. + */ + function onUnregisterHook() external; +} diff --git a/packages/world/src/SystemCall.sol b/packages/world/src/SystemCall.sol index a60ffe579e..47e89e5a10 100644 --- a/packages/world/src/SystemCall.sol +++ b/packages/world/src/SystemCall.sol @@ -12,9 +12,11 @@ import { BEFORE_CALL_SYSTEM, AFTER_CALL_SYSTEM } from "./systemHookTypes.sol"; import { IWorldErrors } from "./IWorldErrors.sol"; import { ISystemHook } from "./ISystemHook.sol"; +import { IOptionalSystemHook } from "./IOptionalSystemHook.sol"; import { Systems } from "./codegen/tables/Systems.sol"; import { SystemHooks } from "./codegen/tables/SystemHooks.sol"; +import { OptionalSystemHooks } from "./codegen/tables/OptionalSystemHooks.sol"; import { Balances } from "./codegen/tables/Balances.sol"; /** @@ -93,6 +95,10 @@ library SystemCall { // Get system hooks bytes21[] memory hooks = SystemHooks._get(systemId); + // Get optional hooks specified by the caller + bytes21[] memory optionalSystemHooks = OptionalSystemHooks._get(caller, systemId, bytes32(0)); + bytes21[] memory optionalSystemHooksWithCallData = OptionalSystemHooks._get(caller, systemId, keccak256(callData)); + // Call onBeforeCallSystem hooks (before calling the system) for (uint256 i; i < hooks.length; i++) { Hook hook = Hook.wrap(hooks[i]); @@ -101,6 +107,20 @@ library SystemCall { } } + // Call optional onBeforeCallSystem hooks (before calling the system) + for (uint256 i; i < optionalSystemHooks.length; i++) { + Hook hook = Hook.wrap(optionalSystemHooks[i]); + if (hook.isEnabled(BEFORE_CALL_SYSTEM)) { + IOptionalSystemHook(hook.getAddress()).onBeforeCallSystem(caller, systemId, callData); + } + } + for (uint256 i; i < optionalSystemHooksWithCallData.length; i++) { + Hook hook = Hook.wrap(optionalSystemHooksWithCallData[i]); + if (hook.isEnabled(BEFORE_CALL_SYSTEM)) { + IOptionalSystemHook(hook.getAddress()).onBeforeCallSystem(caller, systemId, callData); + } + } + // Call the system and forward any return data (success, data) = call({ caller: caller, value: value, systemId: systemId, callData: callData }); @@ -111,6 +131,20 @@ library SystemCall { ISystemHook(hook.getAddress()).onAfterCallSystem(caller, systemId, callData); } } + + // Call optional onAfterCallSystem hooks (after calling the system) + for (uint256 i; i < optionalSystemHooks.length; i++) { + Hook hook = Hook.wrap(optionalSystemHooks[i]); + if (hook.isEnabled(AFTER_CALL_SYSTEM)) { + IOptionalSystemHook(hook.getAddress()).onAfterCallSystem(caller, systemId, callData); + } + } + for (uint256 i; i < optionalSystemHooksWithCallData.length; i++) { + Hook hook = Hook.wrap(optionalSystemHooksWithCallData[i]); + if (hook.isEnabled(AFTER_CALL_SYSTEM)) { + IOptionalSystemHook(hook.getAddress()).onAfterCallSystem(caller, systemId, callData); + } + } } /** diff --git a/packages/world/src/codegen/index.sol b/packages/world/src/codegen/index.sol index b00d58a490..1b9586c5b7 100644 --- a/packages/world/src/codegen/index.sol +++ b/packages/world/src/codegen/index.sol @@ -12,6 +12,7 @@ import { Balances } from "./tables/Balances.sol"; import { Systems } from "./tables/Systems.sol"; import { SystemRegistry } from "./tables/SystemRegistry.sol"; import { SystemHooks } from "./tables/SystemHooks.sol"; +import { OptionalSystemHooks } from "./tables/OptionalSystemHooks.sol"; import { FunctionSelectors } from "./tables/FunctionSelectors.sol"; import { FunctionSignatures } from "./tables/FunctionSignatures.sol"; import { InitModuleAddress } from "./tables/InitModuleAddress.sol"; diff --git a/packages/world/src/codegen/interfaces/IBaseWorld.sol b/packages/world/src/codegen/interfaces/IBaseWorld.sol index a30241297a..37fc82ada5 100644 --- a/packages/world/src/codegen/interfaces/IBaseWorld.sol +++ b/packages/world/src/codegen/interfaces/IBaseWorld.sol @@ -9,6 +9,7 @@ import { IWorldKernel } from "../../IWorldKernel.sol"; import { IAccessManagementSystem } from "./IAccessManagementSystem.sol"; import { IBalanceTransferSystem } from "./IBalanceTransferSystem.sol"; import { IBatchCallSystem } from "./IBatchCallSystem.sol"; +import { IExtendedWorldRegistrationSystem } from "./IExtendedWorldRegistrationSystem.sol"; import { IModuleInstallationSystem } from "./IModuleInstallationSystem.sol"; import { IWorldRegistrationSystem } from "./IWorldRegistrationSystem.sol"; import { IRegistrationSystem } from "./IRegistrationSystem.sol"; @@ -26,6 +27,7 @@ interface IBaseWorld is IAccessManagementSystem, IBalanceTransferSystem, IBatchCallSystem, + IExtendedWorldRegistrationSystem, IModuleInstallationSystem, IWorldRegistrationSystem, IRegistrationSystem diff --git a/packages/world/src/codegen/interfaces/IExtendedWorldRegistrationSystem.sol b/packages/world/src/codegen/interfaces/IExtendedWorldRegistrationSystem.sol new file mode 100644 index 0000000000..04d8ea133f --- /dev/null +++ b/packages/world/src/codegen/interfaces/IExtendedWorldRegistrationSystem.sol @@ -0,0 +1,23 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.8.24; + +/* Autogenerated file. Do not edit manually. */ + +import { ResourceId } from "@latticexyz/store/src/ResourceId.sol"; +import { ISystemHook } from "./../../ISystemHook.sol"; + +/** + * @title IExtendedWorldRegistrationSystem + * @author MUD (https://mud.dev) by Lattice (https://lattice.xyz) + * @dev This interface is automatically generated from the corresponding system contract. Do not edit manually. + */ +interface IExtendedWorldRegistrationSystem { + function registerOptionalSystemHook( + ResourceId systemId, + ISystemHook hookAddress, + uint8 enabledHooksBitmap, + bytes32 callDataHash + ) external; + + function unregisterOptionalSystemHook(ResourceId systemId, ISystemHook hookAddress, bytes32 callDataHash) external; +} diff --git a/packages/world/src/codegen/tables/OptionalSystemHooks.sol b/packages/world/src/codegen/tables/OptionalSystemHooks.sol new file mode 100644 index 0000000000..8c77954264 --- /dev/null +++ b/packages/world/src/codegen/tables/OptionalSystemHooks.sol @@ -0,0 +1,580 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.8.24; + +/* Autogenerated file. Do not edit manually. */ + +// Import store internals +import { IStore } from "@latticexyz/store/src/IStore.sol"; +import { StoreSwitch } from "@latticexyz/store/src/StoreSwitch.sol"; +import { StoreCore } from "@latticexyz/store/src/StoreCore.sol"; +import { Bytes } from "@latticexyz/store/src/Bytes.sol"; +import { Memory } from "@latticexyz/store/src/Memory.sol"; +import { SliceLib } from "@latticexyz/store/src/Slice.sol"; +import { EncodeArray } from "@latticexyz/store/src/tightcoder/EncodeArray.sol"; +import { FieldLayout } from "@latticexyz/store/src/FieldLayout.sol"; +import { Schema } from "@latticexyz/store/src/Schema.sol"; +import { PackedCounter, PackedCounterLib } from "@latticexyz/store/src/PackedCounter.sol"; +import { ResourceId } from "@latticexyz/store/src/ResourceId.sol"; + +// Import user types +import { ResourceId } from "@latticexyz/store/src/ResourceId.sol"; + +library OptionalSystemHooks { + // Hex below is the result of `WorldResourceIdLib.encode({ namespace: "world", name: "OptionalSystemHo", typeId: RESOURCE_TABLE });` + ResourceId constant _tableId = ResourceId.wrap(0x7462776f726c640000000000000000004f7074696f6e616c53797374656d486f); + + FieldLayout constant _fieldLayout = + FieldLayout.wrap(0x0000000100000000000000000000000000000000000000000000000000000000); + + // Hex-encoded key schema of (address, bytes32, bytes32) + Schema constant _keySchema = Schema.wrap(0x00540300615f5f00000000000000000000000000000000000000000000000000); + // Hex-encoded value schema of (bytes21[]) + Schema constant _valueSchema = Schema.wrap(0x00000001b6000000000000000000000000000000000000000000000000000000); + + /** + * @notice Get the table's key field names. + * @return keyNames An array of strings with the names of key fields. + */ + function getKeyNames() internal pure returns (string[] memory keyNames) { + keyNames = new string[](3); + keyNames[0] = "player"; + keyNames[1] = "systemId"; + keyNames[2] = "callDataHash"; + } + + /** + * @notice Get the table's value field names. + * @return fieldNames An array of strings with the names of value fields. + */ + function getFieldNames() internal pure returns (string[] memory fieldNames) { + fieldNames = new string[](1); + fieldNames[0] = "hooks"; + } + + /** + * @notice Register the table with its config. + */ + function register() internal { + StoreSwitch.registerTable(_tableId, _fieldLayout, _keySchema, _valueSchema, getKeyNames(), getFieldNames()); + } + + /** + * @notice Register the table with its config. + */ + function _register() internal { + StoreCore.registerTable(_tableId, _fieldLayout, _keySchema, _valueSchema, getKeyNames(), getFieldNames()); + } + + /** + * @notice Get hooks. + */ + function getHooks( + address player, + ResourceId systemId, + bytes32 callDataHash + ) internal view returns (bytes21[] memory hooks) { + bytes32[] memory _keyTuple = new bytes32[](3); + _keyTuple[0] = bytes32(uint256(uint160(player))); + _keyTuple[1] = ResourceId.unwrap(systemId); + _keyTuple[2] = callDataHash; + + bytes memory _blob = StoreSwitch.getDynamicField(_tableId, _keyTuple, 0); + return (SliceLib.getSubslice(_blob, 0, _blob.length).decodeArray_bytes21()); + } + + /** + * @notice Get hooks. + */ + function _getHooks( + address player, + ResourceId systemId, + bytes32 callDataHash + ) internal view returns (bytes21[] memory hooks) { + bytes32[] memory _keyTuple = new bytes32[](3); + _keyTuple[0] = bytes32(uint256(uint160(player))); + _keyTuple[1] = ResourceId.unwrap(systemId); + _keyTuple[2] = callDataHash; + + bytes memory _blob = StoreCore.getDynamicField(_tableId, _keyTuple, 0); + return (SliceLib.getSubslice(_blob, 0, _blob.length).decodeArray_bytes21()); + } + + /** + * @notice Get hooks. + */ + function get( + address player, + ResourceId systemId, + bytes32 callDataHash + ) internal view returns (bytes21[] memory hooks) { + bytes32[] memory _keyTuple = new bytes32[](3); + _keyTuple[0] = bytes32(uint256(uint160(player))); + _keyTuple[1] = ResourceId.unwrap(systemId); + _keyTuple[2] = callDataHash; + + bytes memory _blob = StoreSwitch.getDynamicField(_tableId, _keyTuple, 0); + return (SliceLib.getSubslice(_blob, 0, _blob.length).decodeArray_bytes21()); + } + + /** + * @notice Get hooks. + */ + function _get( + address player, + ResourceId systemId, + bytes32 callDataHash + ) internal view returns (bytes21[] memory hooks) { + bytes32[] memory _keyTuple = new bytes32[](3); + _keyTuple[0] = bytes32(uint256(uint160(player))); + _keyTuple[1] = ResourceId.unwrap(systemId); + _keyTuple[2] = callDataHash; + + bytes memory _blob = StoreCore.getDynamicField(_tableId, _keyTuple, 0); + return (SliceLib.getSubslice(_blob, 0, _blob.length).decodeArray_bytes21()); + } + + /** + * @notice Set hooks. + */ + function setHooks(address player, ResourceId systemId, bytes32 callDataHash, bytes21[] memory hooks) internal { + bytes32[] memory _keyTuple = new bytes32[](3); + _keyTuple[0] = bytes32(uint256(uint160(player))); + _keyTuple[1] = ResourceId.unwrap(systemId); + _keyTuple[2] = callDataHash; + + StoreSwitch.setDynamicField(_tableId, _keyTuple, 0, EncodeArray.encode((hooks))); + } + + /** + * @notice Set hooks. + */ + function _setHooks(address player, ResourceId systemId, bytes32 callDataHash, bytes21[] memory hooks) internal { + bytes32[] memory _keyTuple = new bytes32[](3); + _keyTuple[0] = bytes32(uint256(uint160(player))); + _keyTuple[1] = ResourceId.unwrap(systemId); + _keyTuple[2] = callDataHash; + + StoreCore.setDynamicField(_tableId, _keyTuple, 0, EncodeArray.encode((hooks))); + } + + /** + * @notice Set hooks. + */ + function set(address player, ResourceId systemId, bytes32 callDataHash, bytes21[] memory hooks) internal { + bytes32[] memory _keyTuple = new bytes32[](3); + _keyTuple[0] = bytes32(uint256(uint160(player))); + _keyTuple[1] = ResourceId.unwrap(systemId); + _keyTuple[2] = callDataHash; + + StoreSwitch.setDynamicField(_tableId, _keyTuple, 0, EncodeArray.encode((hooks))); + } + + /** + * @notice Set hooks. + */ + function _set(address player, ResourceId systemId, bytes32 callDataHash, bytes21[] memory hooks) internal { + bytes32[] memory _keyTuple = new bytes32[](3); + _keyTuple[0] = bytes32(uint256(uint160(player))); + _keyTuple[1] = ResourceId.unwrap(systemId); + _keyTuple[2] = callDataHash; + + StoreCore.setDynamicField(_tableId, _keyTuple, 0, EncodeArray.encode((hooks))); + } + + /** + * @notice Get the length of hooks. + */ + function lengthHooks(address player, ResourceId systemId, bytes32 callDataHash) internal view returns (uint256) { + bytes32[] memory _keyTuple = new bytes32[](3); + _keyTuple[0] = bytes32(uint256(uint160(player))); + _keyTuple[1] = ResourceId.unwrap(systemId); + _keyTuple[2] = callDataHash; + + uint256 _byteLength = StoreSwitch.getDynamicFieldLength(_tableId, _keyTuple, 0); + unchecked { + return _byteLength / 21; + } + } + + /** + * @notice Get the length of hooks. + */ + function _lengthHooks(address player, ResourceId systemId, bytes32 callDataHash) internal view returns (uint256) { + bytes32[] memory _keyTuple = new bytes32[](3); + _keyTuple[0] = bytes32(uint256(uint160(player))); + _keyTuple[1] = ResourceId.unwrap(systemId); + _keyTuple[2] = callDataHash; + + uint256 _byteLength = StoreCore.getDynamicFieldLength(_tableId, _keyTuple, 0); + unchecked { + return _byteLength / 21; + } + } + + /** + * @notice Get the length of hooks. + */ + function length(address player, ResourceId systemId, bytes32 callDataHash) internal view returns (uint256) { + bytes32[] memory _keyTuple = new bytes32[](3); + _keyTuple[0] = bytes32(uint256(uint160(player))); + _keyTuple[1] = ResourceId.unwrap(systemId); + _keyTuple[2] = callDataHash; + + uint256 _byteLength = StoreSwitch.getDynamicFieldLength(_tableId, _keyTuple, 0); + unchecked { + return _byteLength / 21; + } + } + + /** + * @notice Get the length of hooks. + */ + function _length(address player, ResourceId systemId, bytes32 callDataHash) internal view returns (uint256) { + bytes32[] memory _keyTuple = new bytes32[](3); + _keyTuple[0] = bytes32(uint256(uint160(player))); + _keyTuple[1] = ResourceId.unwrap(systemId); + _keyTuple[2] = callDataHash; + + uint256 _byteLength = StoreCore.getDynamicFieldLength(_tableId, _keyTuple, 0); + unchecked { + return _byteLength / 21; + } + } + + /** + * @notice Get an item of hooks. + * @dev Reverts with Store_IndexOutOfBounds if `_index` is out of bounds for the array. + */ + function getItemHooks( + address player, + ResourceId systemId, + bytes32 callDataHash, + uint256 _index + ) internal view returns (bytes21) { + bytes32[] memory _keyTuple = new bytes32[](3); + _keyTuple[0] = bytes32(uint256(uint160(player))); + _keyTuple[1] = ResourceId.unwrap(systemId); + _keyTuple[2] = callDataHash; + + unchecked { + bytes memory _blob = StoreSwitch.getDynamicFieldSlice(_tableId, _keyTuple, 0, _index * 21, (_index + 1) * 21); + return (bytes21(_blob)); + } + } + + /** + * @notice Get an item of hooks. + * @dev Reverts with Store_IndexOutOfBounds if `_index` is out of bounds for the array. + */ + function _getItemHooks( + address player, + ResourceId systemId, + bytes32 callDataHash, + uint256 _index + ) internal view returns (bytes21) { + bytes32[] memory _keyTuple = new bytes32[](3); + _keyTuple[0] = bytes32(uint256(uint160(player))); + _keyTuple[1] = ResourceId.unwrap(systemId); + _keyTuple[2] = callDataHash; + + unchecked { + bytes memory _blob = StoreCore.getDynamicFieldSlice(_tableId, _keyTuple, 0, _index * 21, (_index + 1) * 21); + return (bytes21(_blob)); + } + } + + /** + * @notice Get an item of hooks. + * @dev Reverts with Store_IndexOutOfBounds if `_index` is out of bounds for the array. + */ + function getItem( + address player, + ResourceId systemId, + bytes32 callDataHash, + uint256 _index + ) internal view returns (bytes21) { + bytes32[] memory _keyTuple = new bytes32[](3); + _keyTuple[0] = bytes32(uint256(uint160(player))); + _keyTuple[1] = ResourceId.unwrap(systemId); + _keyTuple[2] = callDataHash; + + unchecked { + bytes memory _blob = StoreSwitch.getDynamicFieldSlice(_tableId, _keyTuple, 0, _index * 21, (_index + 1) * 21); + return (bytes21(_blob)); + } + } + + /** + * @notice Get an item of hooks. + * @dev Reverts with Store_IndexOutOfBounds if `_index` is out of bounds for the array. + */ + function _getItem( + address player, + ResourceId systemId, + bytes32 callDataHash, + uint256 _index + ) internal view returns (bytes21) { + bytes32[] memory _keyTuple = new bytes32[](3); + _keyTuple[0] = bytes32(uint256(uint160(player))); + _keyTuple[1] = ResourceId.unwrap(systemId); + _keyTuple[2] = callDataHash; + + unchecked { + bytes memory _blob = StoreCore.getDynamicFieldSlice(_tableId, _keyTuple, 0, _index * 21, (_index + 1) * 21); + return (bytes21(_blob)); + } + } + + /** + * @notice Push an element to hooks. + */ + function pushHooks(address player, ResourceId systemId, bytes32 callDataHash, bytes21 _element) internal { + bytes32[] memory _keyTuple = new bytes32[](3); + _keyTuple[0] = bytes32(uint256(uint160(player))); + _keyTuple[1] = ResourceId.unwrap(systemId); + _keyTuple[2] = callDataHash; + + StoreSwitch.pushToDynamicField(_tableId, _keyTuple, 0, abi.encodePacked((_element))); + } + + /** + * @notice Push an element to hooks. + */ + function _pushHooks(address player, ResourceId systemId, bytes32 callDataHash, bytes21 _element) internal { + bytes32[] memory _keyTuple = new bytes32[](3); + _keyTuple[0] = bytes32(uint256(uint160(player))); + _keyTuple[1] = ResourceId.unwrap(systemId); + _keyTuple[2] = callDataHash; + + StoreCore.pushToDynamicField(_tableId, _keyTuple, 0, abi.encodePacked((_element))); + } + + /** + * @notice Push an element to hooks. + */ + function push(address player, ResourceId systemId, bytes32 callDataHash, bytes21 _element) internal { + bytes32[] memory _keyTuple = new bytes32[](3); + _keyTuple[0] = bytes32(uint256(uint160(player))); + _keyTuple[1] = ResourceId.unwrap(systemId); + _keyTuple[2] = callDataHash; + + StoreSwitch.pushToDynamicField(_tableId, _keyTuple, 0, abi.encodePacked((_element))); + } + + /** + * @notice Push an element to hooks. + */ + function _push(address player, ResourceId systemId, bytes32 callDataHash, bytes21 _element) internal { + bytes32[] memory _keyTuple = new bytes32[](3); + _keyTuple[0] = bytes32(uint256(uint160(player))); + _keyTuple[1] = ResourceId.unwrap(systemId); + _keyTuple[2] = callDataHash; + + StoreCore.pushToDynamicField(_tableId, _keyTuple, 0, abi.encodePacked((_element))); + } + + /** + * @notice Pop an element from hooks. + */ + function popHooks(address player, ResourceId systemId, bytes32 callDataHash) internal { + bytes32[] memory _keyTuple = new bytes32[](3); + _keyTuple[0] = bytes32(uint256(uint160(player))); + _keyTuple[1] = ResourceId.unwrap(systemId); + _keyTuple[2] = callDataHash; + + StoreSwitch.popFromDynamicField(_tableId, _keyTuple, 0, 21); + } + + /** + * @notice Pop an element from hooks. + */ + function _popHooks(address player, ResourceId systemId, bytes32 callDataHash) internal { + bytes32[] memory _keyTuple = new bytes32[](3); + _keyTuple[0] = bytes32(uint256(uint160(player))); + _keyTuple[1] = ResourceId.unwrap(systemId); + _keyTuple[2] = callDataHash; + + StoreCore.popFromDynamicField(_tableId, _keyTuple, 0, 21); + } + + /** + * @notice Pop an element from hooks. + */ + function pop(address player, ResourceId systemId, bytes32 callDataHash) internal { + bytes32[] memory _keyTuple = new bytes32[](3); + _keyTuple[0] = bytes32(uint256(uint160(player))); + _keyTuple[1] = ResourceId.unwrap(systemId); + _keyTuple[2] = callDataHash; + + StoreSwitch.popFromDynamicField(_tableId, _keyTuple, 0, 21); + } + + /** + * @notice Pop an element from hooks. + */ + function _pop(address player, ResourceId systemId, bytes32 callDataHash) internal { + bytes32[] memory _keyTuple = new bytes32[](3); + _keyTuple[0] = bytes32(uint256(uint160(player))); + _keyTuple[1] = ResourceId.unwrap(systemId); + _keyTuple[2] = callDataHash; + + StoreCore.popFromDynamicField(_tableId, _keyTuple, 0, 21); + } + + /** + * @notice Update an element of hooks at `_index`. + */ + function updateHooks( + address player, + ResourceId systemId, + bytes32 callDataHash, + uint256 _index, + bytes21 _element + ) internal { + bytes32[] memory _keyTuple = new bytes32[](3); + _keyTuple[0] = bytes32(uint256(uint160(player))); + _keyTuple[1] = ResourceId.unwrap(systemId); + _keyTuple[2] = callDataHash; + + unchecked { + bytes memory _encoded = abi.encodePacked((_element)); + StoreSwitch.spliceDynamicData(_tableId, _keyTuple, 0, uint40(_index * 21), uint40(_encoded.length), _encoded); + } + } + + /** + * @notice Update an element of hooks at `_index`. + */ + function _updateHooks( + address player, + ResourceId systemId, + bytes32 callDataHash, + uint256 _index, + bytes21 _element + ) internal { + bytes32[] memory _keyTuple = new bytes32[](3); + _keyTuple[0] = bytes32(uint256(uint160(player))); + _keyTuple[1] = ResourceId.unwrap(systemId); + _keyTuple[2] = callDataHash; + + unchecked { + bytes memory _encoded = abi.encodePacked((_element)); + StoreCore.spliceDynamicData(_tableId, _keyTuple, 0, uint40(_index * 21), uint40(_encoded.length), _encoded); + } + } + + /** + * @notice Update an element of hooks at `_index`. + */ + function update( + address player, + ResourceId systemId, + bytes32 callDataHash, + uint256 _index, + bytes21 _element + ) internal { + bytes32[] memory _keyTuple = new bytes32[](3); + _keyTuple[0] = bytes32(uint256(uint160(player))); + _keyTuple[1] = ResourceId.unwrap(systemId); + _keyTuple[2] = callDataHash; + + unchecked { + bytes memory _encoded = abi.encodePacked((_element)); + StoreSwitch.spliceDynamicData(_tableId, _keyTuple, 0, uint40(_index * 21), uint40(_encoded.length), _encoded); + } + } + + /** + * @notice Update an element of hooks at `_index`. + */ + function _update( + address player, + ResourceId systemId, + bytes32 callDataHash, + uint256 _index, + bytes21 _element + ) internal { + bytes32[] memory _keyTuple = new bytes32[](3); + _keyTuple[0] = bytes32(uint256(uint160(player))); + _keyTuple[1] = ResourceId.unwrap(systemId); + _keyTuple[2] = callDataHash; + + unchecked { + bytes memory _encoded = abi.encodePacked((_element)); + StoreCore.spliceDynamicData(_tableId, _keyTuple, 0, uint40(_index * 21), uint40(_encoded.length), _encoded); + } + } + + /** + * @notice Delete all data for given keys. + */ + function deleteRecord(address player, ResourceId systemId, bytes32 callDataHash) internal { + bytes32[] memory _keyTuple = new bytes32[](3); + _keyTuple[0] = bytes32(uint256(uint160(player))); + _keyTuple[1] = ResourceId.unwrap(systemId); + _keyTuple[2] = callDataHash; + + StoreSwitch.deleteRecord(_tableId, _keyTuple); + } + + /** + * @notice Delete all data for given keys. + */ + function _deleteRecord(address player, ResourceId systemId, bytes32 callDataHash) internal { + bytes32[] memory _keyTuple = new bytes32[](3); + _keyTuple[0] = bytes32(uint256(uint160(player))); + _keyTuple[1] = ResourceId.unwrap(systemId); + _keyTuple[2] = callDataHash; + + StoreCore.deleteRecord(_tableId, _keyTuple, _fieldLayout); + } + + /** + * @notice Tightly pack dynamic data lengths using this table's schema. + * @return _encodedLengths The lengths of the dynamic fields (packed into a single bytes32 value). + */ + function encodeLengths(bytes21[] memory hooks) internal pure returns (PackedCounter _encodedLengths) { + // Lengths are effectively checked during copy by 2**40 bytes exceeding gas limits + unchecked { + _encodedLengths = PackedCounterLib.pack(hooks.length * 21); + } + } + + /** + * @notice Tightly pack dynamic (variable length) data using this table's schema. + * @return The dynamic data, encoded into a sequence of bytes. + */ + function encodeDynamic(bytes21[] memory hooks) internal pure returns (bytes memory) { + return abi.encodePacked(EncodeArray.encode((hooks))); + } + + /** + * @notice Encode all of a record's fields. + * @return The static (fixed length) data, encoded into a sequence of bytes. + * @return The lengths of the dynamic fields (packed into a single bytes32 value). + * @return The dynamic (variable length) data, encoded into a sequence of bytes. + */ + function encode(bytes21[] memory hooks) internal pure returns (bytes memory, PackedCounter, bytes memory) { + bytes memory _staticData; + PackedCounter _encodedLengths = encodeLengths(hooks); + bytes memory _dynamicData = encodeDynamic(hooks); + + return (_staticData, _encodedLengths, _dynamicData); + } + + /** + * @notice Encode keys as a bytes32 array using this table's field layout. + */ + function encodeKeyTuple( + address player, + ResourceId systemId, + bytes32 callDataHash + ) internal pure returns (bytes32[] memory) { + bytes32[] memory _keyTuple = new bytes32[](3); + _keyTuple[0] = bytes32(uint256(uint160(player))); + _keyTuple[1] = ResourceId.unwrap(systemId); + _keyTuple[2] = callDataHash; + + return _keyTuple; + } +} diff --git a/packages/world/src/modules/init/InitModule.sol b/packages/world/src/modules/init/InitModule.sol index f2085d0c34..e581afcee5 100644 --- a/packages/world/src/modules/init/InitModule.sol +++ b/packages/world/src/modules/init/InitModule.sol @@ -28,6 +28,7 @@ import { Systems } from "../../codegen/tables/Systems.sol"; import { FunctionSelectors } from "../../codegen/tables/FunctionSelectors.sol"; import { FunctionSignatures } from "../../codegen/tables/FunctionSignatures.sol"; import { SystemHooks } from "../../codegen/tables/SystemHooks.sol"; +import { OptionalSystemHooks } from "../../codegen/tables/OptionalSystemHooks.sol"; import { SystemRegistry } from "../../codegen/tables/SystemRegistry.sol"; import { InitModuleAddress } from "../../codegen/tables/InitModuleAddress.sol"; import { Balances } from "../../codegen/tables/Balances.sol"; @@ -92,6 +93,7 @@ contract InitModule is Module { FunctionSelectors.register(); FunctionSignatures.register(); SystemHooks.register(); + OptionalSystemHooks.register(); SystemRegistry.register(); InitModuleAddress.register(); diff --git a/packages/world/src/modules/init/implementations/ExtendedWorldRegistrationSystem.sol b/packages/world/src/modules/init/implementations/ExtendedWorldRegistrationSystem.sol new file mode 100644 index 0000000000..6240958dd9 --- /dev/null +++ b/packages/world/src/modules/init/implementations/ExtendedWorldRegistrationSystem.sol @@ -0,0 +1,124 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.8.24; + +import { Hook, HookLib } from "@latticexyz/store/src/Hook.sol"; +import { ResourceId } from "@latticexyz/store/src/ResourceId.sol"; +import { ResourceIds } from "@latticexyz/store/src/codegen/tables/ResourceIds.sol"; + +import { System } from "../../../System.sol"; +import { WorldContextConsumer, IWorldContextConsumer } from "../../../WorldContext.sol"; +import { WorldResourceIdLib, WorldResourceIdInstance } from "../../../WorldResourceId.sol"; +import { SystemCall } from "../../../SystemCall.sol"; +import { ROOT_NAMESPACE_ID, ROOT_NAME } from "../../../constants.sol"; +import { RESOURCE_NAMESPACE, RESOURCE_SYSTEM } from "../../../worldResourceTypes.sol"; +import { AccessControl } from "../../../AccessControl.sol"; +import { Delegation } from "../../../Delegation.sol"; +import { requireInterface } from "../../../requireInterface.sol"; +import { NamespaceOwner } from "../../../codegen/tables/NamespaceOwner.sol"; +import { ResourceAccess } from "../../../codegen/tables/ResourceAccess.sol"; +import { UserDelegationControl } from "../../../codegen/tables/UserDelegationControl.sol"; +import { NamespaceDelegationControl } from "../../../codegen/tables/NamespaceDelegationControl.sol"; +import { ISystemHook } from "../../../ISystemHook.sol"; +import { IOptionalSystemHook } from "../../../IOptionalSystemHook.sol"; +import { IWorldErrors } from "../../../IWorldErrors.sol"; +import { IDelegationControl } from "../../../IDelegationControl.sol"; +import { ICustomUnregisterDelegation } from "../../../ICustomUnregisterDelegation.sol"; +import { ERC165Checker } from "../../../ERC165Checker.sol"; + +import { SystemHooks } from "../../../codegen/tables/SystemHooks.sol"; +import { OptionalSystemHooks } from "../../../codegen/tables/OptionalSystemHooks.sol"; +import { SystemRegistry } from "../../../codegen/tables/SystemRegistry.sol"; +import { Systems } from "../../../codegen/tables/Systems.sol"; +import { FunctionSelectors } from "../../../codegen/tables/FunctionSelectors.sol"; +import { FunctionSignatures } from "../../../codegen/tables/FunctionSignatures.sol"; +import { requireNamespace } from "../../../requireNamespace.sol"; +import { requireValidNamespace } from "../../../requireValidNamespace.sol"; + +import { LimitedCallContext } from "../LimitedCallContext.sol"; + +/** + * @title ExtendedWorldRegistrationSystem + * @dev This contract provides extended functions related to registering resources other than tables in the World. + */ +contract ExtendedWorldRegistrationSystem is System, IWorldErrors, LimitedCallContext { + using WorldResourceIdInstance for ResourceId; + + /** + * @notice Registers a new optional system hook for the user + * @dev Adds a new hook for the system at the provided user, system, and call data hash (optional) + * @param systemId The ID of the system + * @param hookAddress The address of the hook being registered + * @param enabledHooksBitmap Bitmap indicating which hooks are enabled + * @param callDataHash The hash of the call data for the system hook + */ + function registerOptionalSystemHook( + ResourceId systemId, + ISystemHook hookAddress, + uint8 enabledHooksBitmap, + bytes32 callDataHash + ) public onlyDelegatecall { + // Require the provided system ID to have type RESOURCE_SYSTEM + if (systemId.getType() != RESOURCE_SYSTEM) { + revert World_InvalidResourceType(RESOURCE_SYSTEM, systemId, systemId.toString()); + } + + // Require the provided address to implement the ISystemHook interface + requireInterface(address(hookAddress), type(IOptionalSystemHook).interfaceId); + + // Require the system to exist + AccessControl.requireExistence(systemId); + + // Require the system's namespace to exist + AccessControl.requireExistence(systemId.getNamespaceId()); + + IOptionalSystemHook(address(hookAddress)).onRegisterHook(); + + // Register the hook + OptionalSystemHooks.push( + _msgSender(), + systemId, + callDataHash, + Hook.unwrap(HookLib.encode(address(hookAddress), enabledHooksBitmap)) + ); + } + + /** + * @notice Unregisters an optional system hook + * @dev Removes a hook for the system at the provided user, system, and call data hash (optional) + * @param systemId The ID of the system + * @param hookAddress The address of the hook being unregistered + */ + function unregisterOptionalSystemHook( + ResourceId systemId, + ISystemHook hookAddress, + bytes32 callDataHash + ) public virtual onlyDelegatecall { + // Remove the hook from the list of hooks for this system in the optional system hooks table + bytes21[] memory currentHooks = OptionalSystemHooks._get(_msgSender(), systemId, callDataHash); + + // Initialize the new hooks array with the same length because we don't know if the hook is registered yet + bytes21[] memory newHooks = new bytes21[](currentHooks.length); + + // Filter the array of current hooks + uint256 newHooksIndex; + unchecked { + for (uint256 currentHooksIndex; currentHooksIndex < currentHooks.length; currentHooksIndex++) { + if (Hook.wrap(currentHooks[currentHooksIndex]).getAddress() != address(hookAddress)) { + newHooks[newHooksIndex] = currentHooks[currentHooksIndex]; + newHooksIndex++; + } else { + IOptionalSystemHook(address(hookAddress)).onUnregisterHook(); + } + } + } + + // Set the new hooks table length in place + // (Note: this does not update the free memory pointer) + assembly { + mstore(newHooks, newHooksIndex) + } + + // Set the new hooks table + OptionalSystemHooks._set(_msgSender(), systemId, callDataHash, newHooks); + } +} From 45e679fc061051412c1cd73144d31d679dee0e96 Mon Sep 17 00:00:00 2001 From: Dhvani Patel Date: Mon, 18 Mar 2024 17:35:26 +0000 Subject: [PATCH 15/32] feat: change block time to 2 --- packages/cli/src/commands/dev-contracts.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/cli/src/commands/dev-contracts.ts b/packages/cli/src/commands/dev-contracts.ts index 8069ea93f3..d9e8621975 100644 --- a/packages/cli/src/commands/dev-contracts.ts +++ b/packages/cli/src/commands/dev-contracts.ts @@ -47,7 +47,7 @@ const commandModule: CommandModule Date: Thu, 21 Mar 2024 18:35:10 +0000 Subject: [PATCH 16/32] fix: merge removed files --- .../packages/plugin-example/package.json | 40 ------------------- .../packages/plugin-example/tsup.config.ts | 11 ----- 2 files changed, 51 deletions(-) delete mode 100644 examples/minimal/packages/plugin-example/package.json delete mode 100644 examples/minimal/packages/plugin-example/tsup.config.ts diff --git a/examples/minimal/packages/plugin-example/package.json b/examples/minimal/packages/plugin-example/package.json deleted file mode 100644 index 58aba3402a..0000000000 --- a/examples/minimal/packages/plugin-example/package.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "name": "plugin-example", - "version": "0.0.0", - "private": true, - "license": "MIT", - "exports": { - ".": "./dist/ts/library/index.js", - "./register": "./dist/ts/register/index.js" - }, - "typesVersions": { - "*": { - "index": [ - "./ts/library/index.ts" - ], - "register": [ - "./ts/register/index.ts" - ] - } - }, - "scripts": { - "build": "pnpm run build:js", - "build:js": "tsup", - "clean": "pnpm run clean:js", - "clean:js": "rimraf dist", - "test": "tsc --noEmit" - }, - "dependencies": { - "@latticexyz/common": "link:../../../../packages/common", - "@latticexyz/config": "link:../../../../packages/config", - "@latticexyz/store": "link:../../../../packages/store", - "@latticexyz/world": "link:../../../../packages/world", - "zod": "^3.21.4" - }, - "devDependencies": { - "@types/node": "^18.15.11", - "rimraf": "^3.0.2", - "tsup": "^6.7.0", - "typescript": "5.4.2" - } -} diff --git a/examples/minimal/packages/plugin-example/tsup.config.ts b/examples/minimal/packages/plugin-example/tsup.config.ts deleted file mode 100644 index 2a36085c5b..0000000000 --- a/examples/minimal/packages/plugin-example/tsup.config.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { defineConfig } from "tsup"; - -export default defineConfig({ - entry: ["ts/library/index.ts", "ts/register/index.ts"], - target: "esnext", - format: ["esm", "cjs"], - dts: false, - sourcemap: true, - clean: true, - minify: true, -}); From db5e325c23afcca17839123cbf5db05ab821009d Mon Sep 17 00:00:00 2001 From: Dhvani Patel Date: Thu, 21 Mar 2024 18:49:22 +0000 Subject: [PATCH 17/32] fix: update for new mud changes --- package.json | 2 +- packages/store-sync/src/createStoreSync.ts | 32 ++++--------------- packages/world-modules/mud.config.ts | 13 +++++--- .../src/modules/haskeys/HasKeysHook.sol | 6 ++-- .../src/modules/haskeys/tables/HasKeys.sol | 6 ++-- packages/world/mud.config.ts | 5 ++- .../IExtendedWorldRegistrationSystem.sol | 10 ++++-- .../codegen/tables/OptionalSystemHooks.sol | 10 +++--- .../ExtendedWorldRegistrationSystem.sol | 7 ++-- 9 files changed, 38 insertions(+), 53 deletions(-) diff --git a/package.json b/package.json index 1ee9112164..2f96976993 100644 --- a/package.json +++ b/package.json @@ -12,8 +12,8 @@ "all-install": "for dir in . docs e2e examples/* templates/*; do (cd \"$dir\" && pwd && pnpm install); done", "bench": "pnpm run --recursive bench", "build": "turbo run build", - "clean": "turbo run clean", "changelog:generate": "bun scripts/changelog.ts", + "clean": "turbo run clean", "dev": "TSUP_SKIP_DTS=true turbo run dev --concurrency 100", "dist-tag-rm": "pnpm recursive exec -- sh -c 'npm dist-tag rm $(cat package.json | jq -r \".name\") $TAG || true'", "docs:generate:api": "bun scripts/render-api-docs.ts", diff --git a/packages/store-sync/src/createStoreSync.ts b/packages/store-sync/src/createStoreSync.ts index e64d3d5d0c..ad058c335d 100644 --- a/packages/store-sync/src/createStoreSync.ts +++ b/packages/store-sync/src/createStoreSync.ts @@ -1,5 +1,3 @@ -import { createBlockStream } from "@latticexyz/block-logs-stream"; -import { bigIntMax, chunk, isDefined, waitForIdle } from "@latticexyz/common/utils"; import { storeEventsAbi } from "@latticexyz/store"; import { catchError, @@ -20,7 +18,6 @@ import { mergeMap, } from "rxjs"; import { Hex, TransactionReceiptNotFoundError } from "viem"; -import { SyncStep } from "./SyncStep"; import { StorageAdapter, StorageAdapterBlock, @@ -32,27 +29,12 @@ import { WaitForTransactionResult, } from "./common"; import { createBlockStream } from "@latticexyz/block-logs-stream"; -import { - filter, - map, - tap, - from, - concat, - concatMap, - share, - firstValueFrom, - defer, - of, - catchError, - shareReplay, - combineLatest, - scan, - mergeMap, -} from "rxjs"; import { debug as parentDebug } from "./debug"; +import { SyncStep } from "./SyncStep"; +import { bigIntMax, chunk, isDefined, waitForIdle } from "@latticexyz/common/utils"; +import { getSnapshot } from "./getSnapshot"; import { fetchAndStoreLogs } from "./fetchAndStoreLogs"; import { Store as StoreConfig } from "@latticexyz/store"; -import { getSnapshot } from "./getSnapshot"; const debug = parentDebug.extend("createStoreSync"); @@ -297,11 +279,9 @@ export async function createStoreSync( try { const lastBlock = blocks[0]; debug("fetching tx receipt for block", lastBlock.blockNumber); - const { status, blockNumber, transactionHash } = await publicClient.getTransactionReceipt({ hash: tx }); - if (lastBlock.blockNumber >= blockNumber) { - return { status, blockNumber, transactionHash }; - } - } catch (error: any) { + const receipt = await publicClient.getTransactionReceipt({ hash: tx }); + return lastBlock.blockNumber >= receipt.blockNumber; + } catch (error: unknown) { if (error instanceof TransactionReceiptNotFoundError || error.name === "TransactionReceiptNotFoundError") { return; } diff --git a/packages/world-modules/mud.config.ts b/packages/world-modules/mud.config.ts index 875ca1656a..c81247c76e 100644 --- a/packages/world-modules/mud.config.ts +++ b/packages/world-modules/mud.config.ts @@ -67,14 +67,17 @@ export default defineWorld({ * ************************************************************************/ HasKeys: { - directory: "modules/haskeys/tables", - keySchema: { + schema: { sourceTable: "ResourceId", keysHash: "bytes32", + has: "bool", + }, + key: ["sourceTable", "keysHash"], + codegen: { + outputDirectory: "modules/haskeys/tables", + dataStruct: false, + storeArgument: true, }, - valueSchema: { has: "bool" }, - dataStruct: false, - storeArgument: true, }, /************************************************************************ * diff --git a/packages/world-modules/src/modules/haskeys/HasKeysHook.sol b/packages/world-modules/src/modules/haskeys/HasKeysHook.sol index 6e9b01ad80..8e82dbe80a 100644 --- a/packages/world-modules/src/modules/haskeys/HasKeysHook.sol +++ b/packages/world-modules/src/modules/haskeys/HasKeysHook.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity >=0.8.24; -import { PackedCounter } from "@latticexyz/store/src/PackedCounter.sol"; +import { EncodedLengths } from "@latticexyz/store/src/EncodedLengths.sol"; import { FieldLayout } from "@latticexyz/store/src/FieldLayout.sol"; import { StoreHook } from "@latticexyz/store/src/StoreHook.sol"; import { ResourceId } from "@latticexyz/store/src/ResourceId.sol"; @@ -25,7 +25,7 @@ contract HasKeysHook is StoreHook { ResourceId tableId, bytes32[] memory keyTuple, bytes memory, - PackedCounter, + EncodedLengths, bytes memory, FieldLayout ) public override { @@ -47,7 +47,7 @@ contract HasKeysHook is StoreHook { uint8, uint40, uint40, - PackedCounter, + EncodedLengths, bytes memory ) public override { handleSet(tableId, keyTuple); diff --git a/packages/world-modules/src/modules/haskeys/tables/HasKeys.sol b/packages/world-modules/src/modules/haskeys/tables/HasKeys.sol index 82ac3c8d40..084e1ac99f 100644 --- a/packages/world-modules/src/modules/haskeys/tables/HasKeys.sol +++ b/packages/world-modules/src/modules/haskeys/tables/HasKeys.sol @@ -13,7 +13,7 @@ import { SliceLib } from "@latticexyz/store/src/Slice.sol"; import { EncodeArray } from "@latticexyz/store/src/tightcoder/EncodeArray.sol"; import { FieldLayout } from "@latticexyz/store/src/FieldLayout.sol"; import { Schema } from "@latticexyz/store/src/Schema.sol"; -import { PackedCounter, PackedCounterLib } from "@latticexyz/store/src/PackedCounter.sol"; +import { EncodedLengths, EncodedLengthsLib } from "@latticexyz/store/src/EncodedLengths.sol"; import { ResourceId } from "@latticexyz/store/src/ResourceId.sol"; // Import user types @@ -256,10 +256,10 @@ library HasKeys { * @return The lengths of the dynamic fields (packed into a single bytes32 value). * @return The dynamic (variable length) data, encoded into a sequence of bytes. */ - function encode(bool has) internal pure returns (bytes memory, PackedCounter, bytes memory) { + function encode(bool has) internal pure returns (bytes memory, EncodedLengths, bytes memory) { bytes memory _staticData = encodeStatic(has); - PackedCounter _encodedLengths; + EncodedLengths _encodedLengths; bytes memory _dynamicData; return (_staticData, _encodedLengths, _dynamicData); diff --git a/packages/world/mud.config.ts b/packages/world/mud.config.ts index 4798a08957..079e187c35 100644 --- a/packages/world/mud.config.ts +++ b/packages/world/mud.config.ts @@ -82,14 +82,13 @@ export default defineWorld({ key: ["systemId"], }, OptionalSystemHooks: { - keySchema: { + schema: { player: "address", systemId: "ResourceId", callDataHash: "bytes32", - }, - valueSchema: { hooks: "bytes21[]", }, + key: ["player", "systemId", "callDataHash"], }, FunctionSelectors: { schema: { diff --git a/packages/world/src/codegen/interfaces/IExtendedWorldRegistrationSystem.sol b/packages/world/src/codegen/interfaces/IExtendedWorldRegistrationSystem.sol index 04d8ea133f..e53c51643a 100644 --- a/packages/world/src/codegen/interfaces/IExtendedWorldRegistrationSystem.sol +++ b/packages/world/src/codegen/interfaces/IExtendedWorldRegistrationSystem.sol @@ -4,7 +4,7 @@ pragma solidity >=0.8.24; /* Autogenerated file. Do not edit manually. */ import { ResourceId } from "@latticexyz/store/src/ResourceId.sol"; -import { ISystemHook } from "./../../ISystemHook.sol"; +import { IOptionalSystemHook } from "./../../IOptionalSystemHook.sol"; /** * @title IExtendedWorldRegistrationSystem @@ -14,10 +14,14 @@ import { ISystemHook } from "./../../ISystemHook.sol"; interface IExtendedWorldRegistrationSystem { function registerOptionalSystemHook( ResourceId systemId, - ISystemHook hookAddress, + IOptionalSystemHook hookAddress, uint8 enabledHooksBitmap, bytes32 callDataHash ) external; - function unregisterOptionalSystemHook(ResourceId systemId, ISystemHook hookAddress, bytes32 callDataHash) external; + function unregisterOptionalSystemHook( + ResourceId systemId, + IOptionalSystemHook hookAddress, + bytes32 callDataHash + ) external; } diff --git a/packages/world/src/codegen/tables/OptionalSystemHooks.sol b/packages/world/src/codegen/tables/OptionalSystemHooks.sol index 8c77954264..5247f928a6 100644 --- a/packages/world/src/codegen/tables/OptionalSystemHooks.sol +++ b/packages/world/src/codegen/tables/OptionalSystemHooks.sol @@ -13,7 +13,7 @@ import { SliceLib } from "@latticexyz/store/src/Slice.sol"; import { EncodeArray } from "@latticexyz/store/src/tightcoder/EncodeArray.sol"; import { FieldLayout } from "@latticexyz/store/src/FieldLayout.sol"; import { Schema } from "@latticexyz/store/src/Schema.sol"; -import { PackedCounter, PackedCounterLib } from "@latticexyz/store/src/PackedCounter.sol"; +import { EncodedLengths, EncodedLengthsLib } from "@latticexyz/store/src/EncodedLengths.sol"; import { ResourceId } from "@latticexyz/store/src/ResourceId.sol"; // Import user types @@ -533,10 +533,10 @@ library OptionalSystemHooks { * @notice Tightly pack dynamic data lengths using this table's schema. * @return _encodedLengths The lengths of the dynamic fields (packed into a single bytes32 value). */ - function encodeLengths(bytes21[] memory hooks) internal pure returns (PackedCounter _encodedLengths) { + function encodeLengths(bytes21[] memory hooks) internal pure returns (EncodedLengths _encodedLengths) { // Lengths are effectively checked during copy by 2**40 bytes exceeding gas limits unchecked { - _encodedLengths = PackedCounterLib.pack(hooks.length * 21); + _encodedLengths = EncodedLengthsLib.pack(hooks.length * 21); } } @@ -554,9 +554,9 @@ library OptionalSystemHooks { * @return The lengths of the dynamic fields (packed into a single bytes32 value). * @return The dynamic (variable length) data, encoded into a sequence of bytes. */ - function encode(bytes21[] memory hooks) internal pure returns (bytes memory, PackedCounter, bytes memory) { + function encode(bytes21[] memory hooks) internal pure returns (bytes memory, EncodedLengths, bytes memory) { bytes memory _staticData; - PackedCounter _encodedLengths = encodeLengths(hooks); + EncodedLengths _encodedLengths = encodeLengths(hooks); bytes memory _dynamicData = encodeDynamic(hooks); return (_staticData, _encodedLengths, _dynamicData); diff --git a/packages/world/src/modules/init/implementations/ExtendedWorldRegistrationSystem.sol b/packages/world/src/modules/init/implementations/ExtendedWorldRegistrationSystem.sol index 6240958dd9..ff01ddea32 100644 --- a/packages/world/src/modules/init/implementations/ExtendedWorldRegistrationSystem.sol +++ b/packages/world/src/modules/init/implementations/ExtendedWorldRegistrationSystem.sol @@ -18,7 +18,6 @@ import { NamespaceOwner } from "../../../codegen/tables/NamespaceOwner.sol"; import { ResourceAccess } from "../../../codegen/tables/ResourceAccess.sol"; import { UserDelegationControl } from "../../../codegen/tables/UserDelegationControl.sol"; import { NamespaceDelegationControl } from "../../../codegen/tables/NamespaceDelegationControl.sol"; -import { ISystemHook } from "../../../ISystemHook.sol"; import { IOptionalSystemHook } from "../../../IOptionalSystemHook.sol"; import { IWorldErrors } from "../../../IWorldErrors.sol"; import { IDelegationControl } from "../../../IDelegationControl.sol"; @@ -53,7 +52,7 @@ contract ExtendedWorldRegistrationSystem is System, IWorldErrors, LimitedCallCon */ function registerOptionalSystemHook( ResourceId systemId, - ISystemHook hookAddress, + IOptionalSystemHook hookAddress, uint8 enabledHooksBitmap, bytes32 callDataHash ) public onlyDelegatecall { @@ -62,7 +61,7 @@ contract ExtendedWorldRegistrationSystem is System, IWorldErrors, LimitedCallCon revert World_InvalidResourceType(RESOURCE_SYSTEM, systemId, systemId.toString()); } - // Require the provided address to implement the ISystemHook interface + // Require the provided address to implement the IOptionalSystemHook interface requireInterface(address(hookAddress), type(IOptionalSystemHook).interfaceId); // Require the system to exist @@ -90,7 +89,7 @@ contract ExtendedWorldRegistrationSystem is System, IWorldErrors, LimitedCallCon */ function unregisterOptionalSystemHook( ResourceId systemId, - ISystemHook hookAddress, + IOptionalSystemHook hookAddress, bytes32 callDataHash ) public virtual onlyDelegatecall { // Remove the hook from the list of hooks for this system in the optional system hooks table From 4a3d878101ab1bf72f6583e8d761f5434bb6c674 Mon Sep 17 00:00:00 2001 From: Dhvani Patel Date: Thu, 21 Mar 2024 18:57:47 +0000 Subject: [PATCH 18/32] fix: merge fixes --- packages/common/package.json | 2 +- packages/store-sync/src/createStoreSync.ts | 3 ++- pnpm-lock.yaml | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/common/package.json b/packages/common/package.json index c1a3fcbe4a..9ef1a2e223 100644 --- a/packages/common/package.json +++ b/packages/common/package.json @@ -66,7 +66,7 @@ "execa": "^5.1.1", "p-queue": "6.6.2", "p-retry": "4.6.2", - "prettier": "^3.2.5", + "prettier": "3.2.5", "prettier-plugin-solidity": "1.3.1", "viem": "2.9.20" }, diff --git a/packages/store-sync/src/createStoreSync.ts b/packages/store-sync/src/createStoreSync.ts index ad058c335d..2df746aace 100644 --- a/packages/store-sync/src/createStoreSync.ts +++ b/packages/store-sync/src/createStoreSync.ts @@ -281,7 +281,8 @@ export async function createStoreSync( debug("fetching tx receipt for block", lastBlock.blockNumber); const receipt = await publicClient.getTransactionReceipt({ hash: tx }); return lastBlock.blockNumber >= receipt.blockNumber; - } catch (error: unknown) { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + } catch (error: any) { if (error instanceof TransactionReceiptNotFoundError || error.name === "TransactionReceiptNotFoundError") { return; } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 11c1e5a64b..32304c21fd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -312,7 +312,7 @@ importers: specifier: 4.6.2 version: 4.6.2 prettier: - specifier: ^3.2.5 + specifier: 3.2.5 version: 3.2.5 prettier-plugin-solidity: specifier: 1.3.1 From 9cb8c411971ecb8133051431f1d57bde76fe721c Mon Sep 17 00:00:00 2001 From: Dhvani Patel Date: Tue, 26 Mar 2024 14:17:13 +0000 Subject: [PATCH 19/32] feat: include extended registration system in init module --- packages/cli/src/deploy/ensureWorldFactory.ts | 2 +- packages/cli/src/deploy/getWorldContracts.ts | 16 +++++++++++++++- .../world/src/codegen/interfaces/IBaseWorld.sol | 2 ++ .../interfaces/IExtendedRegistrationSystem.sol | 11 +++++++++++ .../modules/init/ExtendedRegistrationSystem.sol | 16 ++++++++++++++++ packages/world/src/modules/init/InitModule.sol | 16 +++++++++++++--- packages/world/src/modules/init/constants.sol | 8 ++++++++ .../src/modules/init/functionSignatures.sol | 11 +++++++++++ packages/world/test/createInitModule.sol | 4 +++- 9 files changed, 80 insertions(+), 6 deletions(-) create mode 100644 packages/world/src/codegen/interfaces/IExtendedRegistrationSystem.sol create mode 100644 packages/world/src/modules/init/ExtendedRegistrationSystem.sol diff --git a/packages/cli/src/deploy/ensureWorldFactory.ts b/packages/cli/src/deploy/ensureWorldFactory.ts index 3343755def..7e2a7f4057 100644 --- a/packages/cli/src/deploy/ensureWorldFactory.ts +++ b/packages/cli/src/deploy/ensureWorldFactory.ts @@ -27,4 +27,4 @@ export async function ensureWorldFactory( contracts: Object.values(contracts), }); return contracts.WorldFactory.address; -} +} \ No newline at end of file diff --git a/packages/cli/src/deploy/getWorldContracts.ts b/packages/cli/src/deploy/getWorldContracts.ts index cb39d5400e..bf93c5aa4e 100644 --- a/packages/cli/src/deploy/getWorldContracts.ts +++ b/packages/cli/src/deploy/getWorldContracts.ts @@ -2,6 +2,7 @@ import accessManagementSystemBuild from "@latticexyz/world/out/AccessManagementS import balanceTransferSystemBuild from "@latticexyz/world/out/BalanceTransferSystem.sol/BalanceTransferSystem.json" assert { type: "json" }; import batchCallSystemBuild from "@latticexyz/world/out/BatchCallSystem.sol/BatchCallSystem.json" assert { type: "json" }; import registrationSystemBuild from "@latticexyz/world/out/RegistrationSystem.sol/RegistrationSystem.json" assert { type: "json" }; +import extendedRegistrationSystemBuild from "@latticexyz/world/out/ExtendedRegistrationSystem.sol/ExtendedRegistrationSystem.json" assert { type: "json" }; import initModuleBuild from "@latticexyz/world/out/InitModule.sol/InitModule.json" assert { type: "json" }; import initModuleAbi from "@latticexyz/world/out/InitModule.sol/InitModule.abi.json" assert { type: "json" }; import { Hex, getCreate2Address, encodeDeployData, size } from "viem"; @@ -35,12 +36,19 @@ export function getWorldContracts(deployerAddress: Hex) { bytecode: registrationBytecode, salt, }); + const extendedRegistrationDeployedBytecodeSize = size(extendedRegistrationSystemBuild.deployedBytecode.object as Hex); + const extendedRegistrationBytecode = extendedRegistrationSystemBuild.bytecode.object as Hex; + const extendedRegistration = getCreate2Address({ + from: deployerAddress, + bytecode: extendedRegistrationBytecode, + salt, + }); const initModuleDeployedBytecodeSize = size(initModuleBuild.deployedBytecode.object as Hex); const initModuleBytecode = encodeDeployData({ bytecode: initModuleBuild.bytecode.object as Hex, abi: initModuleAbi, - args: [accessManagementSystem, balanceTransferSystem, batchCallSystem, registration], + args: [accessManagementSystem, balanceTransferSystem, batchCallSystem, registration, extendedRegistration], }); const initModule = getCreate2Address({ from: deployerAddress, bytecode: initModuleBytecode, salt }); @@ -69,6 +77,12 @@ export function getWorldContracts(deployerAddress: Hex) { label: "core registration system", address: registration, }, + ExteendedRegistrationSystem: { + bytecode: extendedRegistrationBytecode, + deployedBytecodeSize: extendedRegistrationDeployedBytecodeSize, + label: "extended core registration system", + address: extendedRegistration, + }, InitModule: { bytecode: initModuleBytecode, deployedBytecodeSize: initModuleDeployedBytecodeSize, diff --git a/packages/world/src/codegen/interfaces/IBaseWorld.sol b/packages/world/src/codegen/interfaces/IBaseWorld.sol index 37fc82ada5..5118403853 100644 --- a/packages/world/src/codegen/interfaces/IBaseWorld.sol +++ b/packages/world/src/codegen/interfaces/IBaseWorld.sol @@ -6,6 +6,7 @@ pragma solidity >=0.8.24; import { IStore } from "@latticexyz/store/src/IStore.sol"; import { IWorldKernel } from "../../IWorldKernel.sol"; +import { IExtendedRegistrationSystem } from "./IExtendedRegistrationSystem.sol"; import { IAccessManagementSystem } from "./IAccessManagementSystem.sol"; import { IBalanceTransferSystem } from "./IBalanceTransferSystem.sol"; import { IBatchCallSystem } from "./IBatchCallSystem.sol"; @@ -24,6 +25,7 @@ import { IRegistrationSystem } from "./IRegistrationSystem.sol"; interface IBaseWorld is IStore, IWorldKernel, + IExtendedRegistrationSystem, IAccessManagementSystem, IBalanceTransferSystem, IBatchCallSystem, diff --git a/packages/world/src/codegen/interfaces/IExtendedRegistrationSystem.sol b/packages/world/src/codegen/interfaces/IExtendedRegistrationSystem.sol new file mode 100644 index 0000000000..69ddf03873 --- /dev/null +++ b/packages/world/src/codegen/interfaces/IExtendedRegistrationSystem.sol @@ -0,0 +1,11 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.8.24; + +/* Autogenerated file. Do not edit manually. */ + +/** + * @title IExtendedRegistrationSystem + * @author MUD (https://mud.dev) by Lattice (https://lattice.xyz) + * @dev This interface is automatically generated from the corresponding system contract. Do not edit manually. + */ +interface IExtendedRegistrationSystem {} diff --git a/packages/world/src/modules/init/ExtendedRegistrationSystem.sol b/packages/world/src/modules/init/ExtendedRegistrationSystem.sol new file mode 100644 index 0000000000..2f45e2f158 --- /dev/null +++ b/packages/world/src/modules/init/ExtendedRegistrationSystem.sol @@ -0,0 +1,16 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.8.24; + +import { IWorldErrors } from "../../IWorldErrors.sol"; + +import { ExtendedWorldRegistrationSystem } from "./implementations/ExtendedWorldRegistrationSystem.sol"; + +/** + * @title Extended Registration System for World + * @author MUD (https://mud.dev) by Lattice (https://lattice.xyz) + * @notice This system aggregates World registration and installation functionalities externalized from the World contract, aiming to keep the World contract's bytecode lean. + * @dev Aggregates multiple system implementations for the World. + */ +contract ExtendedRegistrationSystem is ExtendedWorldRegistrationSystem { + // Currently, no additional functionality is added in this aggregate contract. +} diff --git a/packages/world/src/modules/init/InitModule.sol b/packages/world/src/modules/init/InitModule.sol index e581afcee5..c41dd42f84 100644 --- a/packages/world/src/modules/init/InitModule.sol +++ b/packages/world/src/modules/init/InitModule.sol @@ -21,8 +21,9 @@ import { BalanceTransferSystem } from "./implementations/BalanceTransferSystem.s import { BatchCallSystem } from "./implementations/BatchCallSystem.sol"; import { RegistrationSystem } from "./RegistrationSystem.sol"; -import { ACCESS_MANAGEMENT_SYSTEM_ID, BALANCE_TRANSFER_SYSTEM_ID, BATCH_CALL_SYSTEM_ID, REGISTRATION_SYSTEM_ID } from "./constants.sol"; -import { getFunctionSignaturesAccessManagement, getFunctionSignaturesBalanceTransfer, getFunctionSignaturesBatchCall, getFunctionSignaturesRegistration } from "./functionSignatures.sol"; +import { ExtendedRegistrationSystem } from "./ExtendedRegistrationSystem.sol"; +import { ACCESS_MANAGEMENT_SYSTEM_ID, BALANCE_TRANSFER_SYSTEM_ID, BATCH_CALL_SYSTEM_ID, REGISTRATION_SYSTEM_ID, EXTENDED_REGISTRATION_SYSTEM_ID } from "./constants.sol"; +import { getFunctionSignaturesAccessManagement, getFunctionSignaturesBalanceTransfer, getFunctionSignaturesBatchCall, getFunctionSignaturesRegistration, getFunctionSignaturesExtendedRegistration } from "./functionSignatures.sol"; import { Systems } from "../../codegen/tables/Systems.sol"; import { FunctionSelectors } from "../../codegen/tables/FunctionSelectors.sol"; @@ -46,17 +47,20 @@ contract InitModule is Module { address internal immutable balanceTransferSystem; address internal immutable batchCallSystem; address internal immutable registrationSystem; + address internal immutable extendedRegistrationSystem; constructor( AccessManagementSystem _accessManagementSystem, BalanceTransferSystem _balanceTransferSystem, BatchCallSystem _batchCallSystem, - RegistrationSystem _registrationSystem + RegistrationSystem _registrationSystem, + ExtendedRegistrationSystem _extendedRegistrationSystem ) { accessManagementSystem = address(_accessManagementSystem); balanceTransferSystem = address(_balanceTransferSystem); batchCallSystem = address(_batchCallSystem); registrationSystem = address(_registrationSystem); + extendedRegistrationSystem = address(_extendedRegistrationSystem); } /** @@ -118,6 +122,7 @@ contract InitModule is Module { _registerSystem(balanceTransferSystem, BALANCE_TRANSFER_SYSTEM_ID); _registerSystem(batchCallSystem, BATCH_CALL_SYSTEM_ID); _registerSystem(registrationSystem, REGISTRATION_SYSTEM_ID); + _registerSystem(extendedRegistrationSystem, EXTENDED_REGISTRATION_SYSTEM_ID); } /** @@ -157,6 +162,11 @@ contract InitModule is Module { for (uint256 i = 0; i < functionSignaturesRegistration.length; i++) { _registerRootFunctionSelector(REGISTRATION_SYSTEM_ID, functionSignaturesRegistration[i]); } + + string[2] memory functionSignaturesExtendedRegistration = getFunctionSignaturesExtendedRegistration(); + for (uint256 i = 0; i < functionSignaturesExtendedRegistration.length; i++) { + _registerRootFunctionSelector(EXTENDED_REGISTRATION_SYSTEM_ID, functionSignaturesExtendedRegistration[i]); + } } /** diff --git a/packages/world/src/modules/init/constants.sol b/packages/world/src/modules/init/constants.sol index e17ab3635a..39c2c37f35 100644 --- a/packages/world/src/modules/init/constants.sol +++ b/packages/world/src/modules/init/constants.sol @@ -37,3 +37,11 @@ ResourceId constant BATCH_CALL_SYSTEM_ID = ResourceId.wrap( ResourceId constant REGISTRATION_SYSTEM_ID = ResourceId.wrap( bytes32(abi.encodePacked(RESOURCE_SYSTEM, ROOT_NAMESPACE, bytes16("Registration"))) ); + +/** + * @dev Resource ID for extended core registration system. + * @dev This ID is derived from the RESOURCE_SYSTEM type, the ROOT_NAMESPACE, and the system name. + */ +ResourceId constant EXTENDED_REGISTRATION_SYSTEM_ID = ResourceId.wrap( + bytes32(abi.encodePacked(RESOURCE_SYSTEM, ROOT_NAMESPACE, bytes16("ExtendedRegistra"))) +); diff --git a/packages/world/src/modules/init/functionSignatures.sol b/packages/world/src/modules/init/functionSignatures.sol index e9a7fe13bd..122a7c99a8 100644 --- a/packages/world/src/modules/init/functionSignatures.sol +++ b/packages/world/src/modules/init/functionSignatures.sol @@ -60,3 +60,14 @@ function getFunctionSignaturesRegistration() pure returns (string[14] memory) { "unregisterNamespaceDelegation(bytes32)" ]; } + +/** + * @dev Function signatures for extended registration system + */ +function getFunctionSignaturesExtendedRegistration() pure returns (string[2] memory) { + return [ + // --- ExtendedWorldRegistrationSystem --- + "registerOptionalSystemHook(bytes32,address,uint8,bytes32)", + "unregisterOptionalSystemHook(bytes32,address,bytes32)" + ]; +} diff --git a/packages/world/test/createInitModule.sol b/packages/world/test/createInitModule.sol index 8354584c5a..055d243324 100644 --- a/packages/world/test/createInitModule.sol +++ b/packages/world/test/createInitModule.sol @@ -7,6 +7,7 @@ import { BatchCallSystem } from "../src/modules/init/implementations/BatchCallSy import { InitModule } from "../src/modules/init/InitModule.sol"; import { RegistrationSystem } from "../src/modules/init/RegistrationSystem.sol"; +import { ExtendedRegistrationSystem } from "../src/modules/init/ExtendedRegistrationSystem.sol"; function createInitModule() returns (InitModule) { return @@ -14,6 +15,7 @@ function createInitModule() returns (InitModule) { new AccessManagementSystem(), new BalanceTransferSystem(), new BatchCallSystem(), - new RegistrationSystem() + new RegistrationSystem(), + new ExtendedRegistrationSystem() ); } From c338d0f21cd50d2781468b79b60991968a5e025a Mon Sep 17 00:00:00 2001 From: Dhvani Patel Date: Sun, 31 Mar 2024 19:40:29 +0100 Subject: [PATCH 20/32] feat: keep re-retrying getting the latest block if it fails instead of crashing the indexer --- packages/store-sync/src/createStoreSync.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/store-sync/src/createStoreSync.ts b/packages/store-sync/src/createStoreSync.ts index 2df746aace..5bc3f14c3c 100644 --- a/packages/store-sync/src/createStoreSync.ts +++ b/packages/store-sync/src/createStoreSync.ts @@ -186,6 +186,10 @@ export async function createStoreSync( tap((blockNumber) => { debug("on block number", blockNumber, "for", followBlockTag, "block tag"); }), + retry({ + count: undefined, // ie unlimited + delay: 3000, // poll the RPC every 3 seconds + }), shareReplay(1), ); From b5355973c660977f3f9a0efbd5bf722f85201910 Mon Sep 17 00:00:00 2001 From: Dhvani Patel Date: Sun, 31 Mar 2024 20:14:14 +0100 Subject: [PATCH 21/32] feat: add store argument functions for optionalsystemhooks and userdelegationcontrol --- packages/world/mud.config.ts | 6 + .../codegen/tables/OptionalSystemHooks.sol | 273 ++++++++++++++++++ .../codegen/tables/UserDelegationControl.sol | 89 ++++++ 3 files changed, 368 insertions(+) diff --git a/packages/world/mud.config.ts b/packages/world/mud.config.ts index 079e187c35..05a5b05145 100644 --- a/packages/world/mud.config.ts +++ b/packages/world/mud.config.ts @@ -41,6 +41,9 @@ export default defineWorld({ delegationControlId: "ResourceId", }, key: ["delegator", "delegatee"], + codegen: { + storeArgument: true, + }, }, NamespaceDelegationControl: { schema: { @@ -89,6 +92,9 @@ export default defineWorld({ hooks: "bytes21[]", }, key: ["player", "systemId", "callDataHash"], + codegen: { + storeArgument: true, + }, }, FunctionSelectors: { schema: { diff --git a/packages/world/src/codegen/tables/OptionalSystemHooks.sol b/packages/world/src/codegen/tables/OptionalSystemHooks.sol index 5247f928a6..9ae3230e1d 100644 --- a/packages/world/src/codegen/tables/OptionalSystemHooks.sol +++ b/packages/world/src/codegen/tables/OptionalSystemHooks.sol @@ -65,6 +65,13 @@ library OptionalSystemHooks { StoreCore.registerTable(_tableId, _fieldLayout, _keySchema, _valueSchema, getKeyNames(), getFieldNames()); } + /** + * @notice Register the table with its config (using the specified store). + */ + function register(IStore _store) internal { + _store.registerTable(_tableId, _fieldLayout, _keySchema, _valueSchema, getKeyNames(), getFieldNames()); + } + /** * @notice Get hooks. */ @@ -99,6 +106,24 @@ library OptionalSystemHooks { return (SliceLib.getSubslice(_blob, 0, _blob.length).decodeArray_bytes21()); } + /** + * @notice Get hooks (using the specified store). + */ + function getHooks( + IStore _store, + address player, + ResourceId systemId, + bytes32 callDataHash + ) internal view returns (bytes21[] memory hooks) { + bytes32[] memory _keyTuple = new bytes32[](3); + _keyTuple[0] = bytes32(uint256(uint160(player))); + _keyTuple[1] = ResourceId.unwrap(systemId); + _keyTuple[2] = callDataHash; + + bytes memory _blob = _store.getDynamicField(_tableId, _keyTuple, 0); + return (SliceLib.getSubslice(_blob, 0, _blob.length).decodeArray_bytes21()); + } + /** * @notice Get hooks. */ @@ -133,6 +158,24 @@ library OptionalSystemHooks { return (SliceLib.getSubslice(_blob, 0, _blob.length).decodeArray_bytes21()); } + /** + * @notice Get hooks (using the specified store). + */ + function get( + IStore _store, + address player, + ResourceId systemId, + bytes32 callDataHash + ) internal view returns (bytes21[] memory hooks) { + bytes32[] memory _keyTuple = new bytes32[](3); + _keyTuple[0] = bytes32(uint256(uint160(player))); + _keyTuple[1] = ResourceId.unwrap(systemId); + _keyTuple[2] = callDataHash; + + bytes memory _blob = _store.getDynamicField(_tableId, _keyTuple, 0); + return (SliceLib.getSubslice(_blob, 0, _blob.length).decodeArray_bytes21()); + } + /** * @notice Set hooks. */ @@ -157,6 +200,24 @@ library OptionalSystemHooks { StoreCore.setDynamicField(_tableId, _keyTuple, 0, EncodeArray.encode((hooks))); } + /** + * @notice Set hooks (using the specified store). + */ + function setHooks( + IStore _store, + address player, + ResourceId systemId, + bytes32 callDataHash, + bytes21[] memory hooks + ) internal { + bytes32[] memory _keyTuple = new bytes32[](3); + _keyTuple[0] = bytes32(uint256(uint160(player))); + _keyTuple[1] = ResourceId.unwrap(systemId); + _keyTuple[2] = callDataHash; + + _store.setDynamicField(_tableId, _keyTuple, 0, EncodeArray.encode((hooks))); + } + /** * @notice Set hooks. */ @@ -181,6 +242,24 @@ library OptionalSystemHooks { StoreCore.setDynamicField(_tableId, _keyTuple, 0, EncodeArray.encode((hooks))); } + /** + * @notice Set hooks (using the specified store). + */ + function set( + IStore _store, + address player, + ResourceId systemId, + bytes32 callDataHash, + bytes21[] memory hooks + ) internal { + bytes32[] memory _keyTuple = new bytes32[](3); + _keyTuple[0] = bytes32(uint256(uint160(player))); + _keyTuple[1] = ResourceId.unwrap(systemId); + _keyTuple[2] = callDataHash; + + _store.setDynamicField(_tableId, _keyTuple, 0, EncodeArray.encode((hooks))); + } + /** * @notice Get the length of hooks. */ @@ -211,6 +290,26 @@ library OptionalSystemHooks { } } + /** + * @notice Get the length of hooks (using the specified store). + */ + function lengthHooks( + IStore _store, + address player, + ResourceId systemId, + bytes32 callDataHash + ) internal view returns (uint256) { + bytes32[] memory _keyTuple = new bytes32[](3); + _keyTuple[0] = bytes32(uint256(uint160(player))); + _keyTuple[1] = ResourceId.unwrap(systemId); + _keyTuple[2] = callDataHash; + + uint256 _byteLength = _store.getDynamicFieldLength(_tableId, _keyTuple, 0); + unchecked { + return _byteLength / 21; + } + } + /** * @notice Get the length of hooks. */ @@ -241,6 +340,26 @@ library OptionalSystemHooks { } } + /** + * @notice Get the length of hooks (using the specified store). + */ + function length( + IStore _store, + address player, + ResourceId systemId, + bytes32 callDataHash + ) internal view returns (uint256) { + bytes32[] memory _keyTuple = new bytes32[](3); + _keyTuple[0] = bytes32(uint256(uint160(player))); + _keyTuple[1] = ResourceId.unwrap(systemId); + _keyTuple[2] = callDataHash; + + uint256 _byteLength = _store.getDynamicFieldLength(_tableId, _keyTuple, 0); + unchecked { + return _byteLength / 21; + } + } + /** * @notice Get an item of hooks. * @dev Reverts with Store_IndexOutOfBounds if `_index` is out of bounds for the array. @@ -283,6 +402,28 @@ library OptionalSystemHooks { } } + /** + * @notice Get an item of hooks (using the specified store). + * @dev Reverts with Store_IndexOutOfBounds if `_index` is out of bounds for the array. + */ + function getItemHooks( + IStore _store, + address player, + ResourceId systemId, + bytes32 callDataHash, + uint256 _index + ) internal view returns (bytes21) { + bytes32[] memory _keyTuple = new bytes32[](3); + _keyTuple[0] = bytes32(uint256(uint160(player))); + _keyTuple[1] = ResourceId.unwrap(systemId); + _keyTuple[2] = callDataHash; + + unchecked { + bytes memory _blob = _store.getDynamicFieldSlice(_tableId, _keyTuple, 0, _index * 21, (_index + 1) * 21); + return (bytes21(_blob)); + } + } + /** * @notice Get an item of hooks. * @dev Reverts with Store_IndexOutOfBounds if `_index` is out of bounds for the array. @@ -325,6 +466,28 @@ library OptionalSystemHooks { } } + /** + * @notice Get an item of hooks (using the specified store). + * @dev Reverts with Store_IndexOutOfBounds if `_index` is out of bounds for the array. + */ + function getItem( + IStore _store, + address player, + ResourceId systemId, + bytes32 callDataHash, + uint256 _index + ) internal view returns (bytes21) { + bytes32[] memory _keyTuple = new bytes32[](3); + _keyTuple[0] = bytes32(uint256(uint160(player))); + _keyTuple[1] = ResourceId.unwrap(systemId); + _keyTuple[2] = callDataHash; + + unchecked { + bytes memory _blob = _store.getDynamicFieldSlice(_tableId, _keyTuple, 0, _index * 21, (_index + 1) * 21); + return (bytes21(_blob)); + } + } + /** * @notice Push an element to hooks. */ @@ -349,6 +512,24 @@ library OptionalSystemHooks { StoreCore.pushToDynamicField(_tableId, _keyTuple, 0, abi.encodePacked((_element))); } + /** + * @notice Push an element to hooks (using the specified store). + */ + function pushHooks( + IStore _store, + address player, + ResourceId systemId, + bytes32 callDataHash, + bytes21 _element + ) internal { + bytes32[] memory _keyTuple = new bytes32[](3); + _keyTuple[0] = bytes32(uint256(uint160(player))); + _keyTuple[1] = ResourceId.unwrap(systemId); + _keyTuple[2] = callDataHash; + + _store.pushToDynamicField(_tableId, _keyTuple, 0, abi.encodePacked((_element))); + } + /** * @notice Push an element to hooks. */ @@ -373,6 +554,18 @@ library OptionalSystemHooks { StoreCore.pushToDynamicField(_tableId, _keyTuple, 0, abi.encodePacked((_element))); } + /** + * @notice Push an element to hooks (using the specified store). + */ + function push(IStore _store, address player, ResourceId systemId, bytes32 callDataHash, bytes21 _element) internal { + bytes32[] memory _keyTuple = new bytes32[](3); + _keyTuple[0] = bytes32(uint256(uint160(player))); + _keyTuple[1] = ResourceId.unwrap(systemId); + _keyTuple[2] = callDataHash; + + _store.pushToDynamicField(_tableId, _keyTuple, 0, abi.encodePacked((_element))); + } + /** * @notice Pop an element from hooks. */ @@ -397,6 +590,18 @@ library OptionalSystemHooks { StoreCore.popFromDynamicField(_tableId, _keyTuple, 0, 21); } + /** + * @notice Pop an element from hooks (using the specified store). + */ + function popHooks(IStore _store, address player, ResourceId systemId, bytes32 callDataHash) internal { + bytes32[] memory _keyTuple = new bytes32[](3); + _keyTuple[0] = bytes32(uint256(uint160(player))); + _keyTuple[1] = ResourceId.unwrap(systemId); + _keyTuple[2] = callDataHash; + + _store.popFromDynamicField(_tableId, _keyTuple, 0, 21); + } + /** * @notice Pop an element from hooks. */ @@ -421,6 +626,18 @@ library OptionalSystemHooks { StoreCore.popFromDynamicField(_tableId, _keyTuple, 0, 21); } + /** + * @notice Pop an element from hooks (using the specified store). + */ + function pop(IStore _store, address player, ResourceId systemId, bytes32 callDataHash) internal { + bytes32[] memory _keyTuple = new bytes32[](3); + _keyTuple[0] = bytes32(uint256(uint160(player))); + _keyTuple[1] = ResourceId.unwrap(systemId); + _keyTuple[2] = callDataHash; + + _store.popFromDynamicField(_tableId, _keyTuple, 0, 21); + } + /** * @notice Update an element of hooks at `_index`. */ @@ -463,6 +680,28 @@ library OptionalSystemHooks { } } + /** + * @notice Update an element of hooks (using the specified store) at `_index`. + */ + function updateHooks( + IStore _store, + address player, + ResourceId systemId, + bytes32 callDataHash, + uint256 _index, + bytes21 _element + ) internal { + bytes32[] memory _keyTuple = new bytes32[](3); + _keyTuple[0] = bytes32(uint256(uint160(player))); + _keyTuple[1] = ResourceId.unwrap(systemId); + _keyTuple[2] = callDataHash; + + unchecked { + bytes memory _encoded = abi.encodePacked((_element)); + _store.spliceDynamicData(_tableId, _keyTuple, 0, uint40(_index * 21), uint40(_encoded.length), _encoded); + } + } + /** * @notice Update an element of hooks at `_index`. */ @@ -505,6 +744,28 @@ library OptionalSystemHooks { } } + /** + * @notice Update an element of hooks (using the specified store) at `_index`. + */ + function update( + IStore _store, + address player, + ResourceId systemId, + bytes32 callDataHash, + uint256 _index, + bytes21 _element + ) internal { + bytes32[] memory _keyTuple = new bytes32[](3); + _keyTuple[0] = bytes32(uint256(uint160(player))); + _keyTuple[1] = ResourceId.unwrap(systemId); + _keyTuple[2] = callDataHash; + + unchecked { + bytes memory _encoded = abi.encodePacked((_element)); + _store.spliceDynamicData(_tableId, _keyTuple, 0, uint40(_index * 21), uint40(_encoded.length), _encoded); + } + } + /** * @notice Delete all data for given keys. */ @@ -529,6 +790,18 @@ library OptionalSystemHooks { StoreCore.deleteRecord(_tableId, _keyTuple, _fieldLayout); } + /** + * @notice Delete all data for given keys (using the specified store). + */ + function deleteRecord(IStore _store, address player, ResourceId systemId, bytes32 callDataHash) internal { + bytes32[] memory _keyTuple = new bytes32[](3); + _keyTuple[0] = bytes32(uint256(uint160(player))); + _keyTuple[1] = ResourceId.unwrap(systemId); + _keyTuple[2] = callDataHash; + + _store.deleteRecord(_tableId, _keyTuple); + } + /** * @notice Tightly pack dynamic data lengths using this table's schema. * @return _encodedLengths The lengths of the dynamic fields (packed into a single bytes32 value). diff --git a/packages/world/src/codegen/tables/UserDelegationControl.sol b/packages/world/src/codegen/tables/UserDelegationControl.sol index adb06d1d62..8eb8e5dfe4 100644 --- a/packages/world/src/codegen/tables/UserDelegationControl.sol +++ b/packages/world/src/codegen/tables/UserDelegationControl.sol @@ -64,6 +64,13 @@ library UserDelegationControl { StoreCore.registerTable(_tableId, _fieldLayout, _keySchema, _valueSchema, getKeyNames(), getFieldNames()); } + /** + * @notice Register the table with its config (using the specified store). + */ + function register(IStore _store) internal { + _store.registerTable(_tableId, _fieldLayout, _keySchema, _valueSchema, getKeyNames(), getFieldNames()); + } + /** * @notice Get delegationControlId. */ @@ -94,6 +101,22 @@ library UserDelegationControl { return ResourceId.wrap(bytes32(_blob)); } + /** + * @notice Get delegationControlId (using the specified store). + */ + function getDelegationControlId( + IStore _store, + address delegator, + address delegatee + ) internal view returns (ResourceId delegationControlId) { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(uint160(delegator))); + _keyTuple[1] = bytes32(uint256(uint160(delegatee))); + + bytes32 _blob = _store.getStaticField(_tableId, _keyTuple, 0, _fieldLayout); + return ResourceId.wrap(bytes32(_blob)); + } + /** * @notice Get delegationControlId. */ @@ -118,6 +141,22 @@ library UserDelegationControl { return ResourceId.wrap(bytes32(_blob)); } + /** + * @notice Get delegationControlId (using the specified store). + */ + function get( + IStore _store, + address delegator, + address delegatee + ) internal view returns (ResourceId delegationControlId) { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(uint160(delegator))); + _keyTuple[1] = bytes32(uint256(uint160(delegatee))); + + bytes32 _blob = _store.getStaticField(_tableId, _keyTuple, 0, _fieldLayout); + return ResourceId.wrap(bytes32(_blob)); + } + /** * @notice Set delegationControlId. */ @@ -152,6 +191,28 @@ library UserDelegationControl { ); } + /** + * @notice Set delegationControlId (using the specified store). + */ + function setDelegationControlId( + IStore _store, + address delegator, + address delegatee, + ResourceId delegationControlId + ) internal { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(uint160(delegator))); + _keyTuple[1] = bytes32(uint256(uint160(delegatee))); + + _store.setStaticField( + _tableId, + _keyTuple, + 0, + abi.encodePacked(ResourceId.unwrap(delegationControlId)), + _fieldLayout + ); + } + /** * @notice Set delegationControlId. */ @@ -186,6 +247,23 @@ library UserDelegationControl { ); } + /** + * @notice Set delegationControlId (using the specified store). + */ + function set(IStore _store, address delegator, address delegatee, ResourceId delegationControlId) internal { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(uint160(delegator))); + _keyTuple[1] = bytes32(uint256(uint160(delegatee))); + + _store.setStaticField( + _tableId, + _keyTuple, + 0, + abi.encodePacked(ResourceId.unwrap(delegationControlId)), + _fieldLayout + ); + } + /** * @notice Delete all data for given keys. */ @@ -208,6 +286,17 @@ library UserDelegationControl { StoreCore.deleteRecord(_tableId, _keyTuple, _fieldLayout); } + /** + * @notice Delete all data for given keys (using the specified store). + */ + function deleteRecord(IStore _store, address delegator, address delegatee) internal { + bytes32[] memory _keyTuple = new bytes32[](2); + _keyTuple[0] = bytes32(uint256(uint160(delegator))); + _keyTuple[1] = bytes32(uint256(uint160(delegatee))); + + _store.deleteRecord(_tableId, _keyTuple); + } + /** * @notice Tightly pack static (fixed length) data using this table's schema. * @return The static data, encoded into a sequence of bytes. From 085a05323b6420d2afc7bd67a47a98e42a41296b Mon Sep 17 00:00:00 2001 From: Dhvani Patel Date: Sat, 6 Apr 2024 00:28:21 +0100 Subject: [PATCH 22/32] fix: safe call unregister --- .../init/implementations/ExtendedWorldRegistrationSystem.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/world/src/modules/init/implementations/ExtendedWorldRegistrationSystem.sol b/packages/world/src/modules/init/implementations/ExtendedWorldRegistrationSystem.sol index ff01ddea32..ff21903c17 100644 --- a/packages/world/src/modules/init/implementations/ExtendedWorldRegistrationSystem.sol +++ b/packages/world/src/modules/init/implementations/ExtendedWorldRegistrationSystem.sol @@ -106,7 +106,7 @@ contract ExtendedWorldRegistrationSystem is System, IWorldErrors, LimitedCallCon newHooks[newHooksIndex] = currentHooks[currentHooksIndex]; newHooksIndex++; } else { - IOptionalSystemHook(address(hookAddress)).onUnregisterHook(); + address(hookAddress).call(abi.encodeWithSignature("onUnregisterHook()")); } } } From 1d6dbbc5ffdb66ce3a72b6bb1c5225cb8e15fb3e Mon Sep 17 00:00:00 2001 From: Dhvani Patel Date: Sun, 7 Apr 2024 18:30:27 +0100 Subject: [PATCH 23/32] feat: pass in msg sender to hooks and delegations --- packages/world/src/ICustomUnregisterDelegation.sol | 2 +- packages/world/src/IOptionalSystemHook.sol | 4 ++-- .../init/implementations/ExtendedWorldRegistrationSystem.sol | 4 ++-- .../modules/init/implementations/WorldRegistrationSystem.sol | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/world/src/ICustomUnregisterDelegation.sol b/packages/world/src/ICustomUnregisterDelegation.sol index 80fc597355..1d4da9c67e 100644 --- a/packages/world/src/ICustomUnregisterDelegation.sol +++ b/packages/world/src/ICustomUnregisterDelegation.sol @@ -4,5 +4,5 @@ pragma solidity >=0.8.24; import { IERC165 } from "./IERC165.sol"; interface ICustomUnregisterDelegation is IERC165 { - function canUnregister() external returns (bool); + function canUnregister(address delegator) external returns (bool); } diff --git a/packages/world/src/IOptionalSystemHook.sol b/packages/world/src/IOptionalSystemHook.sol index 5efdcf9912..545e872a46 100644 --- a/packages/world/src/IOptionalSystemHook.sol +++ b/packages/world/src/IOptionalSystemHook.sol @@ -14,11 +14,11 @@ interface IOptionalSystemHook is ISystemHook { * @notice Executes when a system hook is registered by the user. * @dev Provides the ability to add custom logic or checks when a system hook is registered. */ - function onRegisterHook() external; + function onRegisterHook(address msgSender) external; /** * @notice Executes when a system hook is unregistered by the user. * @dev Provides the ability to add custom logic or checks when a system hook is unregistered. */ - function onUnregisterHook() external; + function onUnregisterHook(address msgSender) external; } diff --git a/packages/world/src/modules/init/implementations/ExtendedWorldRegistrationSystem.sol b/packages/world/src/modules/init/implementations/ExtendedWorldRegistrationSystem.sol index ff21903c17..fdf79a413b 100644 --- a/packages/world/src/modules/init/implementations/ExtendedWorldRegistrationSystem.sol +++ b/packages/world/src/modules/init/implementations/ExtendedWorldRegistrationSystem.sol @@ -70,7 +70,7 @@ contract ExtendedWorldRegistrationSystem is System, IWorldErrors, LimitedCallCon // Require the system's namespace to exist AccessControl.requireExistence(systemId.getNamespaceId()); - IOptionalSystemHook(address(hookAddress)).onRegisterHook(); + IOptionalSystemHook(address(hookAddress)).onRegisterHook(_msgSender()); // Register the hook OptionalSystemHooks.push( @@ -106,7 +106,7 @@ contract ExtendedWorldRegistrationSystem is System, IWorldErrors, LimitedCallCon newHooks[newHooksIndex] = currentHooks[currentHooksIndex]; newHooksIndex++; } else { - address(hookAddress).call(abi.encodeWithSignature("onUnregisterHook()")); + address(hookAddress).call(abi.encodeWithSignature("onUnregisterHook(address)", _msgSender())); } } } diff --git a/packages/world/src/modules/init/implementations/WorldRegistrationSystem.sol b/packages/world/src/modules/init/implementations/WorldRegistrationSystem.sol index 73ea7fbb2d..2c2cf8ecda 100644 --- a/packages/world/src/modules/init/implementations/WorldRegistrationSystem.sol +++ b/packages/world/src/modules/init/implementations/WorldRegistrationSystem.sol @@ -278,7 +278,7 @@ contract WorldRegistrationSystem is System, IWorldErrors, LimitedCallContext { function unregisterDelegation(address delegatee) public onlyDelegatecall { if (ERC165Checker.supportsInterface(delegatee, type(ICustomUnregisterDelegation).interfaceId)) { (bool canUnregisterSuccess, bytes memory canUnregisterReturnData) = delegatee.call( - abi.encodeCall(ICustomUnregisterDelegation.canUnregister, ()) + abi.encodeCall(ICustomUnregisterDelegation.canUnregister, (_msgSender())) ); if (!canUnregisterSuccess) revert World_CustomUnregisterDelegationNotAllowed(); canUnregisterSuccess = abi.decode(canUnregisterReturnData, (bool)); From 5f79b0a7436aa8c88b2bf17791a9ffbb0bbc1352 Mon Sep 17 00:00:00 2001 From: Dhvani Patel Date: Mon, 8 Apr 2024 14:28:55 +0100 Subject: [PATCH 24/32] fix: dont allow registering an optional hook if its already there --- packages/world/src/IWorldErrors.sol | 8 ++++++++ .../implementations/ExtendedWorldRegistrationSystem.sol | 7 +++++++ 2 files changed, 15 insertions(+) diff --git a/packages/world/src/IWorldErrors.sol b/packages/world/src/IWorldErrors.sol index c0167a89dc..5627154562 100644 --- a/packages/world/src/IWorldErrors.sol +++ b/packages/world/src/IWorldErrors.sol @@ -113,4 +113,12 @@ interface IWorldErrors { * @param functionSelector The function selector of the disallowed callback. */ error World_CallbackNotAllowed(bytes4 functionSelector); + + /** + * @notice Raised when trying to register an optional system hook that is already registered. + * @param systemId The ID of the system. + * @param hookAddress The address of the hook. + * @param callDataHash The hash of the call data. + */ + error World_OptionalHookAlreadyRegistered(ResourceId systemId, address hookAddress, bytes32 callDataHash); } diff --git a/packages/world/src/modules/init/implementations/ExtendedWorldRegistrationSystem.sol b/packages/world/src/modules/init/implementations/ExtendedWorldRegistrationSystem.sol index fdf79a413b..b1e40c3d73 100644 --- a/packages/world/src/modules/init/implementations/ExtendedWorldRegistrationSystem.sol +++ b/packages/world/src/modules/init/implementations/ExtendedWorldRegistrationSystem.sol @@ -70,6 +70,13 @@ contract ExtendedWorldRegistrationSystem is System, IWorldErrors, LimitedCallCon // Require the system's namespace to exist AccessControl.requireExistence(systemId.getNamespaceId()); + bytes21[] memory currentHooks = OptionalSystemHooks._get(_msgSender(), systemId, callDataHash); + for (uint256 i = 0; i < currentHooks.length; i++) { + if (Hook.wrap(currentHooks[i]).getAddress() == address(hookAddress)) { + revert World_OptionalHookAlreadyRegistered(systemId, address(hookAddress), callDataHash); + } + } + IOptionalSystemHook(address(hookAddress)).onRegisterHook(_msgSender()); // Register the hook From a2f79809aa7768dae1106ee00f62237f9cf97f5f Mon Sep 17 00:00:00 2001 From: Dhvani Patel Date: Mon, 8 Apr 2024 19:23:19 +0100 Subject: [PATCH 25/32] feat: pass down hook args --- packages/world/src/IOptionalSystemHook.sol | 24 +++++++++++++++++-- .../ExtendedWorldRegistrationSystem.sol | 13 +++++++--- 2 files changed, 32 insertions(+), 5 deletions(-) diff --git a/packages/world/src/IOptionalSystemHook.sol b/packages/world/src/IOptionalSystemHook.sol index 545e872a46..cf5682d35c 100644 --- a/packages/world/src/IOptionalSystemHook.sol +++ b/packages/world/src/IOptionalSystemHook.sol @@ -1,7 +1,9 @@ // SPDX-License-Identifier: MIT pragma solidity >=0.8.24; +import { ResourceId } from "@latticexyz/store/src/ResourceId.sol"; import { ISystemHook } from "./ISystemHook.sol"; +import { Hook } from "@latticexyz/store/src/Hook.sol"; /** * @title IOptionalSystemHook @@ -13,12 +15,30 @@ interface IOptionalSystemHook is ISystemHook { /** * @notice Executes when a system hook is registered by the user. * @dev Provides the ability to add custom logic or checks when a system hook is registered. + * @param msgSender The original sender of the system call. + * @param systemId The ID of the system + * @param enabledHooksBitmap Bitmap indicating which hooks are enabled + * @param callDataHash The hash of the call data for the system hook */ - function onRegisterHook(address msgSender) external; + function onRegisterHook( + address msgSender, + ResourceId systemId, + uint8 enabledHooksBitmap, + bytes32 callDataHash + ) external; /** * @notice Executes when a system hook is unregistered by the user. * @dev Provides the ability to add custom logic or checks when a system hook is unregistered. + * @param msgSender The original sender of the system call. + * @param systemId The ID of the system + * @param enabledHooksBitmap Bitmap indicating which hooks are enabled + * @param callDataHash The hash of the call data for the system hook */ - function onUnregisterHook(address msgSender) external; + function onUnregisterHook( + address msgSender, + ResourceId systemId, + uint8 enabledHooksBitmap, + bytes32 callDataHash + ) external; } diff --git a/packages/world/src/modules/init/implementations/ExtendedWorldRegistrationSystem.sol b/packages/world/src/modules/init/implementations/ExtendedWorldRegistrationSystem.sol index b1e40c3d73..55dc897922 100644 --- a/packages/world/src/modules/init/implementations/ExtendedWorldRegistrationSystem.sol +++ b/packages/world/src/modules/init/implementations/ExtendedWorldRegistrationSystem.sol @@ -77,7 +77,7 @@ contract ExtendedWorldRegistrationSystem is System, IWorldErrors, LimitedCallCon } } - IOptionalSystemHook(address(hookAddress)).onRegisterHook(_msgSender()); + IOptionalSystemHook(address(hookAddress)).onRegisterHook(_msgSender(), systemId, enabledHooksBitmap, callDataHash); // Register the hook OptionalSystemHooks.push( @@ -93,6 +93,7 @@ contract ExtendedWorldRegistrationSystem is System, IWorldErrors, LimitedCallCon * @dev Removes a hook for the system at the provided user, system, and call data hash (optional) * @param systemId The ID of the system * @param hookAddress The address of the hook being unregistered + * @param callDataHash The hash of the call data for the system hook */ function unregisterOptionalSystemHook( ResourceId systemId, @@ -109,11 +110,17 @@ contract ExtendedWorldRegistrationSystem is System, IWorldErrors, LimitedCallCon uint256 newHooksIndex; unchecked { for (uint256 currentHooksIndex; currentHooksIndex < currentHooks.length; currentHooksIndex++) { - if (Hook.wrap(currentHooks[currentHooksIndex]).getAddress() != address(hookAddress)) { + Hook hook = Hook.wrap(currentHooks[currentHooksIndex]); + if (hook.getAddress() != address(hookAddress)) { newHooks[newHooksIndex] = currentHooks[currentHooksIndex]; newHooksIndex++; } else { - address(hookAddress).call(abi.encodeWithSignature("onUnregisterHook(address)", _msgSender())); + address(hookAddress).call( + abi.encodeCall( + IOptionalSystemHook.onUnregisterHook, + (_msgSender(), systemId, hook.getBitmap(), callDataHash) + ) + ); } } } From 2e6ac8b4921ed69368251592b42e7c8611f21457 Mon Sep 17 00:00:00 2001 From: Dhvani Patel Date: Tue, 9 Apr 2024 14:32:42 +0100 Subject: [PATCH 26/32] feat: update pnpm and node version --- package.json | 4 +- pnpm-lock.yaml | 13886 ++++++++++++++++++++++++++--------------------- 2 files changed, 7692 insertions(+), 6198 deletions(-) diff --git a/package.json b/package.json index 2f96976993..081504ef74 100644 --- a/package.json +++ b/package.json @@ -57,7 +57,7 @@ "typescript": "5.4.2" }, "engines": { - "node": "18.x", - "pnpm": "8.x" + "node": "20.x", + "pnpm": "9.x" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 32304c21fd..5faa172cb1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,4 +1,4 @@ -lockfileVersion: '6.0' +lockfileVersion: '9.0' settings: autoInstallPeers: true @@ -22,7 +22,7 @@ importers: version: 18.15.11 '@typescript-eslint/eslint-plugin': specifier: 7.1.1 - version: 7.1.1(@typescript-eslint/parser@7.1.1)(eslint@8.57.0)(typescript@5.4.2) + version: 7.1.1(@typescript-eslint/parser@7.1.1(eslint@8.57.0)(typescript@5.4.2))(eslint@8.57.0)(typescript@5.4.2) '@typescript-eslint/parser': specifier: 7.1.1 version: 7.1.1(eslint@8.57.0)(typescript@5.4.2) @@ -144,7 +144,7 @@ importers: version: 0.15.0(google-protobuf@3.21.2) '@improbable-eng/grpc-web-node-http-transport': specifier: ^0.15.0 - version: 0.15.0(@improbable-eng/grpc-web@0.15.0) + version: 0.15.0(@improbable-eng/grpc-web@0.15.0(google-protobuf@3.21.2)) '@latticexyz/abi-ts': specifier: workspace:* version: link:../abi-ts @@ -271,10 +271,10 @@ importers: version: 17.0.23 ds-test: specifier: https://github.com/dapphub/ds-test.git#e282159d5170298eb2455a6c05280ab5a73a4ef0 - version: github.com/dapphub/ds-test/e282159d5170298eb2455a6c05280ab5a73a4ef0 + version: https://codeload.github.com/dapphub/ds-test/tar.gz/e282159d5170298eb2455a6c05280ab5a73a4ef0 forge-std: specifier: https://github.com/foundry-rs/forge-std.git#74cfb77e308dd188d2f58864aaf44963ae6b88b1 - version: github.com/foundry-rs/forge-std/74cfb77e308dd188d2f58864aaf44963ae6b88b1 + version: https://codeload.github.com/foundry-rs/forge-std/tar.gz/74cfb77e308dd188d2f58864aaf44963ae6b88b1 tsup: specifier: ^6.7.0 version: 6.7.0(postcss@8.4.23)(typescript@5.4.2) @@ -369,7 +369,7 @@ importers: dependencies: create-create-app: specifier: git+https://github.com/holic/create-create-app#74376c59b48a04aabbe94d9cacfe9cb1cecccd63 - version: github.com/holic/create-create-app/74376c59b48a04aabbe94d9cacfe9cb1cecccd63 + version: https://codeload.github.com/holic/create-create-app/tar.gz/74376c59b48a04aabbe94d9cacfe9cb1cecccd63(encoding@0.1.13) devDependencies: '@types/node': specifier: ^18.15.11 @@ -412,7 +412,7 @@ importers: version: 18.2.0(react@18.2.0) react-router-dom: specifier: ^6.11.0 - version: 6.11.0(react-dom@18.2.0)(react@18.2.0) + version: 6.11.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) rxjs: specifier: 7.5.5 version: 7.5.5 @@ -421,7 +421,7 @@ importers: version: 1.12.0 use-local-storage-state: specifier: ^18.3.2 - version: 18.3.2(react-dom@18.2.0)(react@18.2.0) + version: 18.3.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) viem: specifier: 2.9.20 version: 2.9.20(typescript@5.4.2)(zod@3.21.4) @@ -535,10 +535,10 @@ importers: version: 17.0.23 ds-test: specifier: https://github.com/dapphub/ds-test.git#e282159d5170298eb2455a6c05280ab5a73a4ef0 - version: github.com/dapphub/ds-test/e282159d5170298eb2455a6c05280ab5a73a4ef0 + version: https://codeload.github.com/dapphub/ds-test/tar.gz/e282159d5170298eb2455a6c05280ab5a73a4ef0 forge-std: specifier: https://github.com/foundry-rs/forge-std.git#74cfb77e308dd188d2f58864aaf44963ae6b88b1 - version: github.com/foundry-rs/forge-std/74cfb77e308dd188d2f58864aaf44963ae6b88b1 + version: https://codeload.github.com/foundry-rs/forge-std/tar.gz/74cfb77e308dd188d2f58864aaf44963ae6b88b1 tsup: specifier: ^6.7.0 version: 6.7.0(postcss@8.4.23)(typescript@5.4.2) @@ -553,17 +553,17 @@ importers: version: 3.2.0 ds-test: specifier: https://github.com/dapphub/ds-test.git#e282159d5170298eb2455a6c05280ab5a73a4ef0 - version: github.com/dapphub/ds-test/e282159d5170298eb2455a6c05280ab5a73a4ef0 + version: https://codeload.github.com/dapphub/ds-test/tar.gz/e282159d5170298eb2455a6c05280ab5a73a4ef0 forge-std: specifier: https://github.com/foundry-rs/forge-std.git#74cfb77e308dd188d2f58864aaf44963ae6b88b1 - version: github.com/foundry-rs/forge-std/74cfb77e308dd188d2f58864aaf44963ae6b88b1 + version: https://codeload.github.com/foundry-rs/forge-std/tar.gz/74cfb77e308dd188d2f58864aaf44963ae6b88b1 devDependencies: '@nomicfoundation/hardhat-chai-matchers': specifier: ^1.0.3 - version: 1.0.6(@nomiclabs/hardhat-ethers@2.2.3)(chai@4.4.1)(ethers@5.7.2)(hardhat@2.22.0) + version: 1.0.6(@nomiclabs/hardhat-ethers@2.2.3(ethers@5.7.2)(hardhat@2.22.0(typescript@5.4.2)))(chai@4.4.1)(ethers@5.7.2)(hardhat@2.22.0(typescript@5.4.2)) '@nomiclabs/hardhat-ethers': specifier: ^2.1.1 - version: 2.2.3(ethers@5.7.2)(hardhat@2.22.0) + version: 2.2.3(ethers@5.7.2)(hardhat@2.22.0(typescript@5.4.2)) '@types/chai': specifier: ^4.3.5 version: 4.3.5 @@ -667,13 +667,13 @@ importers: devDependencies: '@testing-library/react-hooks': specifier: ^8.0.1 - version: 8.0.1(@types/react@18.2.22)(react-test-renderer@18.2.0)(react@18.2.0) + version: 8.0.1(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react-test-renderer@18.2.0(react@18.2.0))(react@18.2.0) '@types/react': specifier: 18.2.22 version: 18.2.22 '@vitejs/plugin-react': specifier: ^4.0.0 - version: 4.0.0(vite@4.3.6) + version: 4.0.0(vite@4.3.6(@types/node@18.15.11)) eslint-plugin-react: specifier: 7.31.11 version: 7.31.11(eslint@8.57.0) @@ -722,7 +722,7 @@ importers: version: 29.5.0(@types/node@18.15.11) ts-jest: specifier: ^29.0.5 - version: 29.0.5(@babel/core@7.24.4)(esbuild@0.17.17)(jest@29.5.0)(typescript@5.4.2) + version: 29.0.5(@babel/core@7.21.4)(@jest/types@29.5.0)(babel-jest@29.5.0(@babel/core@7.21.4))(esbuild@0.17.17)(jest@29.5.0(@types/node@18.15.11))(typescript@5.4.2) tsup: specifier: ^6.7.0 version: 6.7.0(postcss@8.4.23)(typescript@5.4.2) @@ -744,10 +744,10 @@ importers: version: link:../gas-report ds-test: specifier: https://github.com/dapphub/ds-test.git#e282159d5170298eb2455a6c05280ab5a73a4ef0 - version: github.com/dapphub/ds-test/e282159d5170298eb2455a6c05280ab5a73a4ef0 + version: https://codeload.github.com/dapphub/ds-test/tar.gz/e282159d5170298eb2455a6c05280ab5a73a4ef0 forge-std: specifier: https://github.com/foundry-rs/forge-std.git#74cfb77e308dd188d2f58864aaf44963ae6b88b1 - version: github.com/foundry-rs/forge-std/74cfb77e308dd188d2f58864aaf44963ae6b88b1 + version: https://codeload.github.com/foundry-rs/forge-std/tar.gz/74cfb77e308dd188d2f58864aaf44963ae6b88b1 tsup: specifier: ^6.7.0 version: 6.7.0(postcss@8.4.23)(typescript@5.4.2) @@ -843,13 +843,13 @@ importers: version: 18.15.11 ds-test: specifier: https://github.com/dapphub/ds-test.git#e282159d5170298eb2455a6c05280ab5a73a4ef0 - version: github.com/dapphub/ds-test/e282159d5170298eb2455a6c05280ab5a73a4ef0 + version: https://codeload.github.com/dapphub/ds-test/tar.gz/e282159d5170298eb2455a6c05280ab5a73a4ef0 ejs: specifier: ^3.1.8 version: 3.1.8 forge-std: specifier: https://github.com/foundry-rs/forge-std.git#74cfb77e308dd188d2f58864aaf44963ae6b88b1 - version: github.com/foundry-rs/forge-std/74cfb77e308dd188d2f58864aaf44963ae6b88b1 + version: https://codeload.github.com/foundry-rs/forge-std/tar.gz/74cfb77e308dd188d2f58864aaf44963ae6b88b1 solhint: specifier: ^3.3.7 version: 3.3.7 @@ -915,7 +915,7 @@ importers: version: 16.0.3 drizzle-orm: specifier: ^0.28.5 - version: 0.28.5(@types/better-sqlite3@7.6.4)(better-sqlite3@8.6.0)(postgres@3.3.5) + version: 0.28.5(@types/better-sqlite3@7.6.4)(@types/sql.js@1.4.4)(better-sqlite3@8.6.0)(kysely@0.26.3)(postgres@3.3.5)(sql.js@1.8.0) koa: specifier: ^2.14.2 version: 2.14.2 @@ -1021,7 +1021,7 @@ importers: version: 4.3.4(supports-color@8.1.1) drizzle-orm: specifier: ^0.28.5 - version: 0.28.5(@types/sql.js@1.4.4)(kysely@0.26.3)(postgres@3.3.5)(sql.js@1.8.0) + version: 0.28.5(@types/better-sqlite3@7.6.4)(@types/sql.js@1.4.4)(better-sqlite3@8.6.0)(kysely@0.26.3)(postgres@3.3.5)(sql.js@1.8.0) fast-deep-equal: specifier: ^3.1.3 version: 3.1.3 @@ -1089,7 +1089,7 @@ importers: version: 29.5.0(@types/node@18.15.11) ts-jest: specifier: ^29.0.5 - version: 29.0.5(@babel/core@7.24.4)(esbuild@0.17.17)(jest@29.5.0)(typescript@5.4.2) + version: 29.0.5(@babel/core@7.21.4)(@jest/types@29.5.0)(babel-jest@29.5.0(@babel/core@7.21.4))(esbuild@0.17.17)(jest@29.5.0(@types/node@18.15.11))(typescript@5.4.2) tsup: specifier: ^6.7.0 version: 6.7.0(postcss@8.4.23)(typescript@5.4.2) @@ -1147,13 +1147,13 @@ importers: version: 18.15.11 ds-test: specifier: https://github.com/dapphub/ds-test.git#e282159d5170298eb2455a6c05280ab5a73a4ef0 - version: github.com/dapphub/ds-test/e282159d5170298eb2455a6c05280ab5a73a4ef0 + version: https://codeload.github.com/dapphub/ds-test/tar.gz/e282159d5170298eb2455a6c05280ab5a73a4ef0 ejs: specifier: ^3.1.8 version: 3.1.8 forge-std: specifier: https://github.com/foundry-rs/forge-std.git#74cfb77e308dd188d2f58864aaf44963ae6b88b1 - version: github.com/foundry-rs/forge-std/74cfb77e308dd188d2f58864aaf44963ae6b88b1 + version: https://codeload.github.com/foundry-rs/forge-std/tar.gz/74cfb77e308dd188d2f58864aaf44963ae6b88b1 glob: specifier: ^8.0.3 version: 8.0.3 @@ -1211,13 +1211,13 @@ importers: version: 18.15.11 ds-test: specifier: https://github.com/dapphub/ds-test.git#e282159d5170298eb2455a6c05280ab5a73a4ef0 - version: github.com/dapphub/ds-test/e282159d5170298eb2455a6c05280ab5a73a4ef0 + version: https://codeload.github.com/dapphub/ds-test/tar.gz/e282159d5170298eb2455a6c05280ab5a73a4ef0 ejs: specifier: ^3.1.8 version: 3.1.8 forge-std: specifier: https://github.com/foundry-rs/forge-std.git#74cfb77e308dd188d2f58864aaf44963ae6b88b1 - version: github.com/foundry-rs/forge-std/74cfb77e308dd188d2f58864aaf44963ae6b88b1 + version: https://codeload.github.com/foundry-rs/forge-std/tar.gz/74cfb77e308dd188d2f58864aaf44963ae6b88b1 glob: specifier: ^8.0.3 version: 8.0.3 @@ -1253,10 +1253,10 @@ importers: version: 16.0.3 ds-test: specifier: https://github.com/dapphub/ds-test.git#e282159d5170298eb2455a6c05280ab5a73a4ef0 - version: github.com/dapphub/ds-test/e282159d5170298eb2455a6c05280ab5a73a4ef0 + version: https://codeload.github.com/dapphub/ds-test/tar.gz/e282159d5170298eb2455a6c05280ab5a73a4ef0 forge-std: specifier: https://github.com/foundry-rs/forge-std.git#74cfb77e308dd188d2f58864aaf44963ae6b88b1 - version: github.com/foundry-rs/forge-std/74cfb77e308dd188d2f58864aaf44963ae6b88b1 + version: https://codeload.github.com/foundry-rs/forge-std/tar.gz/74cfb77e308dd188d2f58864aaf44963ae6b88b1 prettier: specifier: ^2.6.2 version: 2.8.4 @@ -1269,41 +1269,6016 @@ importers: packages: - /@aashutoshrathi/word-wrap@1.2.6: + '@aashutoshrathi/word-wrap@1.2.6': resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} engines: {node: '>=0.10.0'} - dev: true - /@adraffy/ens-normalize@1.10.0: - resolution: {integrity: sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q==} - dev: false + '@adraffy/ens-normalize@1.10.0': + resolution: {integrity: sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q==} + + '@alloc/quick-lru@5.2.0': + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + engines: {node: '>=10'} + + '@ampproject/remapping@2.2.1': + resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} + engines: {node: '>=6.0.0'} + + '@arktype/attest@0.6.4': + resolution: {integrity: sha512-e0ZIITIany0UIpw2p1wiYKrqcK+iRvh9FLabVkWh/mhppm8n4jWPHyIut8OrURPWfB7Obd/cQ1Vu3DuchSfL7A==} + hasBin: true + peerDependencies: + typescript: '*' + + '@arktype/fs@0.0.11': + resolution: {integrity: sha512-f3p8apUMOTl6KlFNTrOX6twQJDeSdSmtYPVca7SaQjUUTAxfUlaROY1/i1C3y2llYDrrQBEbsggk8k2Oxxgrvw==} + + '@arktype/util@0.0.23': + resolution: {integrity: sha512-MwtDGjbgfXWxlExjIL78HvPlWOma1XFEcDd3VWuCPMt/f+3TR7fXyiGFNlIYZGOYdOIU7qgjaE8dmbd6jdJa3Q==} + + '@arktype/util@0.0.29': + resolution: {integrity: sha512-fDTBSVzxLj9k1ZjinkawmaQdcXFKMBVK8c+vqMPxwoa94mPMZxBo84yQcqyFVcIcWIkg6qQQmH1ozyT4nqFT/g==} + + '@babel/code-frame@7.21.4': + resolution: {integrity: sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.21.4': + resolution: {integrity: sha512-/DYyDpeCfaVinT40FPGdkkb+lYSKvsVuMjDAG7jPOWWiM1ibOaB9CXJAlc4d1QpP/U2q2P9jbrSlClKSErd55g==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.21.4': + resolution: {integrity: sha512-qt/YV149Jman/6AfmlxJ04LMIu8bMoyl3RB91yTFrxQmgbrSvQMy7cI8Q62FHx1t8wJ8B5fu0UDoLwHAhUo1QA==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.21.4': + resolution: {integrity: sha512-NieM3pVIYW2SwGzKoqfPrQsf4xGs9M9AIG3ThppsSRmO+m7eQhmI6amajKMUeIO37wFfsvnvcxQFx6x6iqxDnA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.21.4': + resolution: {integrity: sha512-Fa0tTuOXZ1iL8IeDFUWCzjZcn+sJGd9RZdH9esYVjEejGmzf+FFYQpMi/kZUk2kPy/q1H3/GPw7np8qar/stfg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-environment-visitor@7.18.9': + resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-function-name@7.21.0': + resolution: {integrity: sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-hoist-variables@7.18.6': + resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.18.6': + resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.21.2': + resolution: {integrity: sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-plugin-utils@7.20.2': + resolution: {integrity: sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-simple-access@7.20.2': + resolution: {integrity: sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-split-export-declaration@7.18.6': + resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.19.4': + resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.19.1': + resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.21.0': + resolution: {integrity: sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.21.0': + resolution: {integrity: sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==} + engines: {node: '>=6.9.0'} + + '@babel/highlight@7.18.6': + resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.21.4': + resolution: {integrity: sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-syntax-async-generators@7.8.4': + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-bigint@7.8.3': + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-properties@7.12.13': + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-meta@7.10.4': + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-json-strings@7.8.3': + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-jsx@7.18.6': + resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4': + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-numeric-separator@7.10.4': + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-object-rest-spread@7.8.3': + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3': + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-chaining@7.8.3': + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-top-level-await@7.14.5': + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-typescript@7.20.0': + resolution: {integrity: sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-self@7.21.0': + resolution: {integrity: sha512-f/Eq+79JEu+KUANFks9UZCcvydOOGMgF7jBrcwjHa5jTZD8JivnhCJYvmlhR/WTXBWonDExPoW0eO/CR4QJirA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-source@7.19.6': + resolution: {integrity: sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/runtime@7.21.0': + resolution: {integrity: sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.20.7': + resolution: {integrity: sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.21.4': + resolution: {integrity: sha512-eyKrRHKdyZxqDm+fV1iqL9UAHMoIg0nDaGqfIOd8rKH17m5snv7Gn4qgjBoFfLz9APvjFU/ICT00NVCv1Epp8Q==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.21.4': + resolution: {integrity: sha512-rU2oY501qDxE8Pyo7i/Orqma4ziCOrby0/9mvbDUGEfvZjb279Nk9k19e2fiCxHbRRpY2ZyrgW1eq22mvmOIzA==} + engines: {node: '>=6.9.0'} + + '@bcoe/v8-coverage@0.2.3': + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + + '@changesets/apply-release-plan@6.1.3': + resolution: {integrity: sha512-ECDNeoc3nfeAe1jqJb5aFQX7CqzQhD2klXRez2JDb/aVpGUbX673HgKrnrgJRuQR/9f2TtLoYIzrGB9qwD77mg==} + + '@changesets/assemble-release-plan@5.2.3': + resolution: {integrity: sha512-g7EVZCmnWz3zMBAdrcKhid4hkHT+Ft1n0mLussFMcB1dE2zCuwcvGoy9ec3yOgPGF4hoMtgHaMIk3T3TBdvU9g==} + + '@changesets/changelog-git@0.1.14': + resolution: {integrity: sha512-+vRfnKtXVWsDDxGctOfzJsPhaCdXRYoe+KyWYoq5X/GqoISREiat0l3L8B0a453B2B4dfHGcZaGyowHbp9BSaA==} + + '@changesets/cli@2.26.1': + resolution: {integrity: sha512-XnTa+b51vt057fyAudvDKGB0Sh72xutQZNAdXkCqPBKO2zvs2yYZx5hFZj1u9cbtpwM6Sxtcr02/FQJfZOzemQ==} + hasBin: true + + '@changesets/config@2.3.0': + resolution: {integrity: sha512-EgP/px6mhCx8QeaMAvWtRrgyxW08k/Bx2tpGT+M84jEdX37v3VKfh4Cz1BkwrYKuMV2HZKeHOh8sHvja/HcXfQ==} + + '@changesets/errors@0.1.4': + resolution: {integrity: sha512-HAcqPF7snsUJ/QzkWoKfRfXushHTu+K5KZLJWPb34s4eCZShIf8BFO3fwq6KU8+G7L5KdtN2BzQAXOSXEyiY9Q==} + + '@changesets/get-dependents-graph@1.3.5': + resolution: {integrity: sha512-w1eEvnWlbVDIY8mWXqWuYE9oKhvIaBhzqzo4ITSJY9hgoqQ3RoBqwlcAzg11qHxv/b8ReDWnMrpjpKrW6m1ZTA==} + + '@changesets/get-release-plan@3.0.16': + resolution: {integrity: sha512-OpP9QILpBp1bY2YNIKFzwigKh7Qe9KizRsZomzLe6pK8IUo8onkAAVUD8+JRKSr8R7d4+JRuQrfSSNlEwKyPYg==} + + '@changesets/get-version-range-type@0.3.2': + resolution: {integrity: sha512-SVqwYs5pULYjYT4op21F2pVbcrca4qA/bAA3FmFXKMN7Y+HcO8sbZUTx3TAy2VXulP2FACd1aC7f2nTuqSPbqg==} + + '@changesets/git@2.0.0': + resolution: {integrity: sha512-enUVEWbiqUTxqSnmesyJGWfzd51PY4H7mH9yUw0hPVpZBJ6tQZFMU3F3mT/t9OJ/GjyiM4770i+sehAn6ymx6A==} + + '@changesets/logger@0.0.5': + resolution: {integrity: sha512-gJyZHomu8nASHpaANzc6bkQMO9gU/ib20lqew1rVx753FOxffnCrJlGIeQVxNWCqM+o6OOleCo/ivL8UAO5iFw==} + + '@changesets/parse@0.3.16': + resolution: {integrity: sha512-127JKNd167ayAuBjUggZBkmDS5fIKsthnr9jr6bdnuUljroiERW7FBTDNnNVyJ4l69PzR57pk6mXQdtJyBCJKg==} + + '@changesets/pre@1.0.14': + resolution: {integrity: sha512-dTsHmxQWEQekHYHbg+M1mDVYFvegDh9j/kySNuDKdylwfMEevTeDouR7IfHNyVodxZXu17sXoJuf2D0vi55FHQ==} + + '@changesets/read@0.5.9': + resolution: {integrity: sha512-T8BJ6JS6j1gfO1HFq50kU3qawYxa4NTbI/ASNVVCBTsKquy2HYwM9r7ZnzkiMe8IEObAJtUVGSrePCOxAK2haQ==} + + '@changesets/types@4.1.0': + resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} + + '@changesets/types@5.2.1': + resolution: {integrity: sha512-myLfHbVOqaq9UtUKqR/nZA/OY7xFjQMdfgfqeZIBK4d0hA6pgxArvdv8M+6NUzzBsjWLOtvApv8YHr4qM+Kpfg==} + + '@changesets/write@0.2.3': + resolution: {integrity: sha512-Dbamr7AIMvslKnNYsLFafaVORx4H0pvCA2MHqgtNCySMe1blImEyAEOzDmcgKAkgz4+uwoLz7demIrX+JBr/Xw==} + + '@esbuild-kit/cjs-loader@2.4.2': + resolution: {integrity: sha512-BDXFbYOJzT/NBEtp71cvsrGPwGAMGRB/349rwKuoxNSiKjPraNNnlK6MIIabViCjqZugu6j+xeMDlEkWdHHJSg==} + + '@esbuild-kit/core-utils@3.1.0': + resolution: {integrity: sha512-Uuk8RpCg/7fdHSceR1M6XbSZFSuMrxcePFuGgyvsBn+u339dk5OeL4jv2EojwTN2st/unJGsVm4qHWjWNmJ/tw==} + + '@esbuild-kit/esm-loader@2.5.5': + resolution: {integrity: sha512-Qwfvj/qoPbClxCRNuac1Du01r9gvNOT+pMYtJDapfB1eoGN1YlJ1BixLyL9WVENRx5RXgNLdfYdx/CuswlGhMw==} + + '@esbuild/android-arm64@0.17.15': + resolution: {integrity: sha512-0kOB6Y7Br3KDVgHeg8PRcvfLkq+AccreK///B4Z6fNZGr/tNHX0z2VywCc7PTeWp+bPvjA5WMvNXltHw5QjAIA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm64@0.17.17': + resolution: {integrity: sha512-jaJ5IlmaDLFPNttv0ofcwy/cfeY4bh/n705Tgh+eLObbGtQBK3EPAu+CzL95JVE4nFAliyrnEu0d32Q5foavqg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.17.15': + resolution: {integrity: sha512-sRSOVlLawAktpMvDyJIkdLI/c/kdRTOqo8t6ImVxg8yT7LQDUYV5Rp2FKeEosLr6ZCja9UjYAzyRSxGteSJPYg==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-arm@0.17.17': + resolution: {integrity: sha512-E6VAZwN7diCa3labs0GYvhEPL2M94WLF8A+czO8hfjREXxba8Ng7nM5VxV+9ihNXIY1iQO1XxUU4P7hbqbICxg==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.17.15': + resolution: {integrity: sha512-MzDqnNajQZ63YkaUWVl9uuhcWyEyh69HGpMIrf+acR4otMkfLJ4sUCxqwbCyPGicE9dVlrysI3lMcDBjGiBBcQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/android-x64@0.17.17': + resolution: {integrity: sha512-446zpfJ3nioMC7ASvJB1pszHVskkw4u/9Eu8s5yvvsSDTzYh4p4ZIRj0DznSl3FBF0Z/mZfrKXTtt0QCoFmoHA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.17.15': + resolution: {integrity: sha512-7siLjBc88Z4+6qkMDxPT2juf2e8SJxmsbNVKFY2ifWCDT72v5YJz9arlvBw5oB4W/e61H1+HDB/jnu8nNg0rLA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-arm64@0.17.17': + resolution: {integrity: sha512-m/gwyiBwH3jqfUabtq3GH31otL/0sE0l34XKpSIqR7NjQ/XHQ3lpmQHLHbG8AHTGCw8Ao059GvV08MS0bhFIJQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.17.15': + resolution: {integrity: sha512-NbImBas2rXwYI52BOKTW342Tm3LTeVlaOQ4QPZ7XuWNKiO226DisFk/RyPk3T0CKZkKMuU69yOvlapJEmax7cg==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/darwin-x64@0.17.17': + resolution: {integrity: sha512-4utIrsX9IykrqYaXR8ob9Ha2hAY2qLc6ohJ8c0CN1DR8yWeMrTgYFjgdeQ9LIoTOfLetXjuCu5TRPHT9yKYJVg==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.17.15': + resolution: {integrity: sha512-Xk9xMDjBVG6CfgoqlVczHAdJnCs0/oeFOspFap5NkYAmRCT2qTn1vJWA2f419iMtsHSLm+O8B6SLV/HlY5cYKg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-arm64@0.17.17': + resolution: {integrity: sha512-4PxjQII/9ppOrpEwzQ1b0pXCsFLqy77i0GaHodrmzH9zq2/NEhHMAMJkJ635Ns4fyJPFOlHMz4AsklIyRqFZWA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.17.15': + resolution: {integrity: sha512-3TWAnnEOdclvb2pnfsTWtdwthPfOz7qAfcwDLcfZyGJwm1SRZIMOeB5FODVhnM93mFSPsHB9b/PmxNNbSnd0RQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.17.17': + resolution: {integrity: sha512-lQRS+4sW5S3P1sv0z2Ym807qMDfkmdhUYX30GRBURtLTrJOPDpoU0kI6pVz1hz3U0+YQ0tXGS9YWveQjUewAJw==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.17.15': + resolution: {integrity: sha512-T0MVnYw9KT6b83/SqyznTs/3Jg2ODWrZfNccg11XjDehIved2oQfrX/wVuev9N936BpMRaTR9I1J0tdGgUgpJA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm64@0.17.17': + resolution: {integrity: sha512-2+pwLx0whKY1/Vqt8lyzStyda1v0qjJ5INWIe+d8+1onqQxHLLi3yr5bAa4gvbzhZqBztifYEu8hh1La5+7sUw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.17.15': + resolution: {integrity: sha512-MLTgiXWEMAMr8nmS9Gigx43zPRmEfeBfGCwxFQEMgJ5MC53QKajaclW6XDPjwJvhbebv+RzK05TQjvH3/aM4Xw==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-arm@0.17.17': + resolution: {integrity: sha512-biDs7bjGdOdcmIk6xU426VgdRUpGg39Yz6sT9Xp23aq+IEHDb/u5cbmu/pAANpDB4rZpY/2USPhCA+w9t3roQg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.17.15': + resolution: {integrity: sha512-wp02sHs015T23zsQtU4Cj57WiteiuASHlD7rXjKUyAGYzlOKDAjqK6bk5dMi2QEl/KVOcsjwL36kD+WW7vJt8Q==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-ia32@0.17.17': + resolution: {integrity: sha512-IBTTv8X60dYo6P2t23sSUYym8fGfMAiuv7PzJ+0LcdAndZRzvke+wTVxJeCq4WgjppkOpndL04gMZIFvwoU34Q==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.17.15': + resolution: {integrity: sha512-k7FsUJjGGSxwnBmMh8d7IbObWu+sF/qbwc+xKZkBe/lTAF16RqxRCnNHA7QTd3oS2AfGBAnHlXL67shV5bBThQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-loong64@0.17.17': + resolution: {integrity: sha512-WVMBtcDpATjaGfWfp6u9dANIqmU9r37SY8wgAivuKmgKHE+bWSuv0qXEFt/p3qXQYxJIGXQQv6hHcm7iWhWjiw==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.17.15': + resolution: {integrity: sha512-ZLWk6czDdog+Q9kE/Jfbilu24vEe/iW/Sj2d8EVsmiixQ1rM2RKH2n36qfxK4e8tVcaXkvuV3mU5zTZviE+NVQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-mips64el@0.17.17': + resolution: {integrity: sha512-2kYCGh8589ZYnY031FgMLy0kmE4VoGdvfJkxLdxP4HJvWNXpyLhjOvxVsYjYZ6awqY4bgLR9tpdYyStgZZhi2A==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.17.15': + resolution: {integrity: sha512-mY6dPkIRAiFHRsGfOYZC8Q9rmr8vOBZBme0/j15zFUKM99d4ILY4WpOC7i/LqoY+RE7KaMaSfvY8CqjJtuO4xg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-ppc64@0.17.17': + resolution: {integrity: sha512-KIdG5jdAEeAKogfyMTcszRxy3OPbZhq0PPsW4iKKcdlbk3YE4miKznxV2YOSmiK/hfOZ+lqHri3v8eecT2ATwQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.17.15': + resolution: {integrity: sha512-EcyUtxffdDtWjjwIH8sKzpDRLcVtqANooMNASO59y+xmqqRYBBM7xVLQhqF7nksIbm2yHABptoioS9RAbVMWVA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-riscv64@0.17.17': + resolution: {integrity: sha512-Cj6uWLBR5LWhcD/2Lkfg2NrkVsNb2sFM5aVEfumKB2vYetkA/9Uyc1jVoxLZ0a38sUhFk4JOVKH0aVdPbjZQeA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.17.15': + resolution: {integrity: sha512-BuS6Jx/ezxFuHxgsfvz7T4g4YlVrmCmg7UAwboeyNNg0OzNzKsIZXpr3Sb/ZREDXWgt48RO4UQRDBxJN3B9Rbg==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-s390x@0.17.17': + resolution: {integrity: sha512-lK+SffWIr0XsFf7E0srBjhpkdFVJf3HEgXCwzkm69kNbRar8MhezFpkIwpk0qo2IOQL4JE4mJPJI8AbRPLbuOQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.17.15': + resolution: {integrity: sha512-JsdS0EgEViwuKsw5tiJQo9UdQdUJYuB+Mf6HxtJSPN35vez1hlrNb1KajvKWF5Sa35j17+rW1ECEO9iNrIXbNg==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/linux-x64@0.17.17': + resolution: {integrity: sha512-XcSGTQcWFQS2jx3lZtQi7cQmDYLrpLRyz1Ns1DzZCtn898cWfm5Icx/DEWNcTU+T+tyPV89RQtDnI7qL2PObPg==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-x64@0.17.15': + resolution: {integrity: sha512-R6fKjtUysYGym6uXf6qyNephVUQAGtf3n2RCsOST/neIwPqRWcnc3ogcielOd6pT+J0RDR1RGcy0ZY7d3uHVLA==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.17.17': + resolution: {integrity: sha512-RNLCDmLP5kCWAJR+ItLM3cHxzXRTe4N00TQyQiimq+lyqVqZWGPAvcyfUBM0isE79eEZhIuGN09rAz8EL5KdLA==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-x64@0.17.15': + resolution: {integrity: sha512-mVD4PGc26b8PI60QaPUltYKeSX0wxuy0AltC+WCTFwvKCq2+OgLP4+fFd+hZXzO2xW1HPKcytZBdjqL6FQFa7w==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.17.17': + resolution: {integrity: sha512-PAXswI5+cQq3Pann7FNdcpSUrhrql3wKjj3gVkmuz6OHhqqYxKvi6GgRBoaHjaG22HV/ZZEgF9TlS+9ftHVigA==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.17.15': + resolution: {integrity: sha512-U6tYPovOkw3459t2CBwGcFYfFRjivcJJc1WC8Q3funIwX8x4fP+R6xL/QuTPNGOblbq/EUDxj9GU+dWKX0oWlQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/sunos-x64@0.17.17': + resolution: {integrity: sha512-V63egsWKnx/4V0FMYkr9NXWrKTB5qFftKGKuZKFIrAkO/7EWLFnbBZNM1CvJ6Sis+XBdPws2YQSHF1Gqf1oj/Q==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.17.15': + resolution: {integrity: sha512-W+Z5F++wgKAleDABemiyXVnzXgvRFs+GVKThSI+mGgleLWluv0D7Diz4oQpgdpNzh4i2nNDzQtWbjJiqutRp6Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-arm64@0.17.17': + resolution: {integrity: sha512-YtUXLdVnd6YBSYlZODjWzH+KzbaubV0YVd6UxSfoFfa5PtNJNaW+1i+Hcmjpg2nEe0YXUCNF5bkKy1NnBv1y7Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.17.15': + resolution: {integrity: sha512-Muz/+uGgheShKGqSVS1KsHtCyEzcdOn/W/Xbh6H91Etm+wiIfwZaBn1W58MeGtfI8WA961YMHFYTthBdQs4t+w==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-ia32@0.17.17': + resolution: {integrity: sha512-yczSLRbDdReCO74Yfc5tKG0izzm+lPMYyO1fFTcn0QNwnKmc3K+HdxZWLGKg4pZVte7XVgcFku7TIZNbWEJdeQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.17.15': + resolution: {integrity: sha512-DjDa9ywLUUmjhV2Y9wUTIF+1XsmuFGvZoCmOWkli1XcNAh5t25cc7fgsCx4Zi/Uurep3TTLyDiKATgGEg61pkA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@esbuild/win32-x64@0.17.17': + resolution: {integrity: sha512-FNZw7H3aqhF9OyRQbDDnzUApDXfC1N6fgBhkqEO2jvYCJ+DxMTfZVqg3AX0R1khg1wHTBRD5SdcibSJ+XF6bFg==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@eslint-community/eslint-utils@4.4.0': + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.10.0': + resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/eslintrc@2.1.4': + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@eslint/js@8.57.0': + resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@ethereumjs/rlp@4.0.1': + resolution: {integrity: sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==} + engines: {node: '>=14'} + hasBin: true + + '@ethereumjs/util@8.1.0': + resolution: {integrity: sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==} + engines: {node: '>=14'} + + '@ethersproject/abi@5.7.0': + resolution: {integrity: sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==} + + '@ethersproject/abstract-provider@5.7.0': + resolution: {integrity: sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==} + + '@ethersproject/abstract-signer@5.7.0': + resolution: {integrity: sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==} + + '@ethersproject/address@5.7.0': + resolution: {integrity: sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==} + + '@ethersproject/base64@5.7.0': + resolution: {integrity: sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==} + + '@ethersproject/basex@5.7.0': + resolution: {integrity: sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==} + + '@ethersproject/bignumber@5.7.0': + resolution: {integrity: sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==} + + '@ethersproject/bytes@5.7.0': + resolution: {integrity: sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==} + + '@ethersproject/constants@5.7.0': + resolution: {integrity: sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==} + + '@ethersproject/contracts@5.7.0': + resolution: {integrity: sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==} + + '@ethersproject/hash@5.7.0': + resolution: {integrity: sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==} + + '@ethersproject/hdnode@5.7.0': + resolution: {integrity: sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==} + + '@ethersproject/json-wallets@5.7.0': + resolution: {integrity: sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==} + + '@ethersproject/keccak256@5.7.0': + resolution: {integrity: sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==} + + '@ethersproject/logger@5.7.0': + resolution: {integrity: sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==} + + '@ethersproject/networks@5.7.1': + resolution: {integrity: sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==} + + '@ethersproject/pbkdf2@5.7.0': + resolution: {integrity: sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==} + + '@ethersproject/properties@5.7.0': + resolution: {integrity: sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==} + + '@ethersproject/providers@5.7.2': + resolution: {integrity: sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==} + + '@ethersproject/random@5.7.0': + resolution: {integrity: sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==} + + '@ethersproject/rlp@5.7.0': + resolution: {integrity: sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==} + + '@ethersproject/sha2@5.7.0': + resolution: {integrity: sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==} + + '@ethersproject/signing-key@5.7.0': + resolution: {integrity: sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==} + + '@ethersproject/solidity@5.7.0': + resolution: {integrity: sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==} + + '@ethersproject/strings@5.7.0': + resolution: {integrity: sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==} + + '@ethersproject/transactions@5.7.0': + resolution: {integrity: sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==} + + '@ethersproject/units@5.7.0': + resolution: {integrity: sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==} + + '@ethersproject/wallet@5.7.0': + resolution: {integrity: sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==} + + '@ethersproject/web@5.7.1': + resolution: {integrity: sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==} + + '@ethersproject/wordlists@5.7.0': + resolution: {integrity: sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==} + + '@fastify/accept-negotiator@1.1.0': + resolution: {integrity: sha512-OIHZrb2ImZ7XG85HXOONLcJWGosv7sIvM2ifAPQVhg9Lv7qdmMBNVaai4QTdyuaqbKM5eO6sLSQOYI7wEQeCJQ==} + engines: {node: '>=14'} + + '@fastify/ajv-compiler@3.5.0': + resolution: {integrity: sha512-ebbEtlI7dxXF5ziNdr05mOY8NnDiPB1XvAlLHctRt/Rc+C3LCOVW5imUVX+mhvUhnNzmPBHewUkOFgGlCxgdAA==} + + '@fastify/busboy@2.1.1': + resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} + engines: {node: '>=14'} + + '@fastify/compress@6.5.0': + resolution: {integrity: sha512-AqUOK714jY7qkzbQbS4zyI4yNFgnRoOJ3eH/oV1T9f5fFdPDRdrFxm5de1ya5n+as4bvitjwU9EY7zvtT9pI2A==} + + '@fastify/cors@8.3.0': + resolution: {integrity: sha512-oj9xkka2Tg0MrwuKhsSUumcAkfp2YCnKxmFEusi01pjk1YrdDsuSYTHXEelWNW+ilSy/ApZq0c2SvhKrLX0H1g==} + + '@fastify/deepmerge@1.3.0': + resolution: {integrity: sha512-J8TOSBq3SoZbDhM9+R/u77hP93gz/rajSA+K2kGyijPpORPWUXHUpTaleoj+92As0S9uPRP7Oi8IqMf0u+ro6A==} + + '@fastify/error@3.3.0': + resolution: {integrity: sha512-dj7vjIn1Ar8sVXj2yAXiMNCJDmS9MQ9XMlIecX2dIzzhjSHCyKo4DdXjXMs7wKW2kj6yvVRSpuQjOZ3YLrh56w==} + + '@fastify/fast-json-stringify-compiler@4.3.0': + resolution: {integrity: sha512-aZAXGYo6m22Fk1zZzEUKBvut/CIIQe/BapEORnxiD5Qr0kPHqqI69NtEMCme74h+at72sPhbkb4ZrLd1W3KRLA==} + + '@gar/promisify@1.1.3': + resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} + + '@humanwhocodes/config-array@0.11.14': + resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} + engines: {node: '>=10.10.0'} + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/object-schema@2.0.2': + resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} + + '@improbable-eng/grpc-web-node-http-transport@0.15.0': + resolution: {integrity: sha512-HLgJfVolGGpjc9DWPhmMmXJx8YGzkek7jcCFO1YYkSOoO81MWRZentPOd/JiKiZuU08wtc4BG+WNuGzsQB5jZA==} + peerDependencies: + '@improbable-eng/grpc-web': '>=0.13.0' + + '@improbable-eng/grpc-web@0.15.0': + resolution: {integrity: sha512-ERft9/0/8CmYalqOVnJnpdDry28q+j+nAlFFARdjyxXDJ+Mhgv9+F600QC8BR9ygOfrXRlAk6CvST2j+JCpQPg==} + peerDependencies: + google-protobuf: ^3.14.0 + + '@istanbuljs/load-nyc-config@1.1.0': + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} + + '@istanbuljs/schema@0.1.3': + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + + '@jest/console@29.5.0': + resolution: {integrity: sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/core@29.5.0': + resolution: {integrity: sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + '@jest/environment@29.5.0': + resolution: {integrity: sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/expect-utils@29.5.0': + resolution: {integrity: sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/expect@29.5.0': + resolution: {integrity: sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/fake-timers@29.5.0': + resolution: {integrity: sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/globals@29.5.0': + resolution: {integrity: sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/reporters@29.5.0': + resolution: {integrity: sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + '@jest/schemas@29.4.3': + resolution: {integrity: sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/source-map@29.4.3': + resolution: {integrity: sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/test-result@29.5.0': + resolution: {integrity: sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/test-sequencer@29.5.0': + resolution: {integrity: sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/transform@29.5.0': + resolution: {integrity: sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/types@29.5.0': + resolution: {integrity: sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jridgewell/gen-mapping@0.3.3': + resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} + engines: {node: '>=6.0.0'} + + '@jridgewell/resolve-uri@3.1.0': + resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.1.2': + resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.4.14': + resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} + + '@jridgewell/sourcemap-codec@1.4.15': + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + + '@jridgewell/trace-mapping@0.3.18': + resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==} + + '@koa/cors@4.0.0': + resolution: {integrity: sha512-Y4RrbvGTlAaa04DBoPBWJqDR5gPj32OOz827ULXfgB1F7piD1MB/zwn8JR2LAnvdILhxUbXbkXGWuNVsFuVFCQ==} + engines: {node: '>= 14.0.0'} + + '@koa/router@12.0.1': + resolution: {integrity: sha512-ribfPYfHb+Uw3b27Eiw6NPqjhIhTpVFzEWLwyc/1Xp+DCdwRRyIlAUODX+9bPARF6aQtUu1+/PHzdNvRzcs/+Q==} + engines: {node: '>= 12'} + + '@manypkg/find-root@1.1.0': + resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} + + '@manypkg/get-packages@1.1.3': + resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} + + '@metamask/eth-sig-util@4.0.1': + resolution: {integrity: sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ==} + engines: {node: '>=12.0.0'} + + '@noble/curves@1.2.0': + resolution: {integrity: sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==} + + '@noble/curves@1.3.0': + resolution: {integrity: sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA==} + + '@noble/hashes@1.2.0': + resolution: {integrity: sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==} + + '@noble/hashes@1.3.2': + resolution: {integrity: sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==} + engines: {node: '>= 16'} + + '@noble/hashes@1.3.3': + resolution: {integrity: sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==} + engines: {node: '>= 16'} + + '@noble/secp256k1@1.7.1': + resolution: {integrity: sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@nomicfoundation/edr-darwin-arm64@0.3.0': + resolution: {integrity: sha512-Gg3jB1NJtqSXHjivSs5tws17r4w0V1aEW6/G6qJFYIGH+EnuNXCDXmNuYQ6++rQ7xBp56wueq93ILmtbyeGLwA==} + engines: {node: '>= 18'} + cpu: [arm64] + os: [darwin] + + '@nomicfoundation/edr-darwin-x64@0.3.0': + resolution: {integrity: sha512-9leJCZx8jTdb0mIxY/pHypZViToZ7bS49CpwG8TTAi37HhgSUlM/iA4vrC7dA2LiBG+bXx/9BPJ0M/x0xP7EvQ==} + engines: {node: '>= 18'} + cpu: [x64] + os: [darwin] + + '@nomicfoundation/edr-linux-arm64-gnu@0.3.0': + resolution: {integrity: sha512-fU3zE94J3IeFZArpMeOdX4+cPZ2+rJlqd7clIlxI8zAxcTNDE9tV8jQsugQEI6ufi1ibEPuG26kJorEvIhBQgw==} + engines: {node: '>= 18'} + cpu: [arm64] + os: [linux] + + '@nomicfoundation/edr-linux-arm64-musl@0.3.0': + resolution: {integrity: sha512-ya+kvEazgGZ+4HeJ/dc12je3DdiE0fzW4HVVkFreWPh1ZVKlH3nXtGN8I5FXO6eOMvvD0gdph6mDLo7z6S2NTg==} + engines: {node: '>= 18'} + cpu: [arm64] + os: [linux] + + '@nomicfoundation/edr-linux-x64-gnu@0.3.0': + resolution: {integrity: sha512-ODi6NytOIYJLaKypzbgb7lWvR/YAOj6MhVdj0ZlySjyG/r+4yLfEdWXalYeMtTPw7oWwo7cncZNT7vaxcboSfQ==} + engines: {node: '>= 18'} + cpu: [x64] + os: [linux] + + '@nomicfoundation/edr-linux-x64-musl@0.3.0': + resolution: {integrity: sha512-4+5kcETwTrrrRKl7Xi2RsEgN391w1ZyPlZWSC73z3zqHtllriSiynn7yeJedpLOPMUTvZKaoZHf6Ahguj6/UaA==} + engines: {node: '>= 18'} + cpu: [x64] + os: [linux] + + '@nomicfoundation/edr-win32-arm64-msvc@0.3.0': + resolution: {integrity: sha512-8Tmn2kwnx0ZEuj3E4zlP4CH9hMeuZStq4E1Q1um3LyuZ9f+0XdZoHvgSjskeTwxmkHcp4A5S3yg/noP1Auc8IA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@nomicfoundation/edr-win32-ia32-msvc@0.3.0': + resolution: {integrity: sha512-6SRzowPhYeE0dU7oTpHePj0YCHwhZ+VvjHuJh0pJS+FmzduOJgzKX+tU7wLRCtYCMrb9/7sIr9HqsUsD/pTrVg==} + engines: {node: '>= 18'} + cpu: [ia32] + os: [win32] + + '@nomicfoundation/edr-win32-x64-msvc@0.3.0': + resolution: {integrity: sha512-f54/qch6q9E5G2zVi5TqONZSwz9ILJckRg2pAbiZlofZMVplef9iEkPT4Q6A40YWdB9Oo+hDfpC3OaYLzcf5OQ==} + engines: {node: '>= 18'} + cpu: [x64] + os: [win32] + + '@nomicfoundation/edr@0.3.0': + resolution: {integrity: sha512-ygGAHss97Ii1TqPEo7lz1vfVKe/NhvvDK+78ehayOULhb1dxro+zP5PwVtXEgf5Qpum2TLIu2vZ7EqI9ft9ZwQ==} + engines: {node: '>= 18'} + + '@nomicfoundation/ethereumjs-common@4.0.4': + resolution: {integrity: sha512-9Rgb658lcWsjiicr5GzNCjI1llow/7r0k50dLL95OJ+6iZJcVbi15r3Y0xh2cIO+zgX0WIHcbzIu6FeQf9KPrg==} + + '@nomicfoundation/ethereumjs-rlp@5.0.4': + resolution: {integrity: sha512-8H1S3s8F6QueOc/X92SdrA4RDenpiAEqMg5vJH99kcQaCy/a3Q6fgseo75mgWlbanGJXSlAPtnCeG9jvfTYXlw==} + engines: {node: '>=18'} + hasBin: true + + '@nomicfoundation/ethereumjs-tx@5.0.4': + resolution: {integrity: sha512-Xjv8wAKJGMrP1f0n2PeyfFCCojHd7iS3s/Ab7qzF1S64kxZ8Z22LCMynArYsVqiFx6rzYy548HNVEyI+AYN/kw==} + engines: {node: '>=18'} + peerDependencies: + c-kzg: ^2.1.2 + peerDependenciesMeta: + c-kzg: + optional: true + + '@nomicfoundation/ethereumjs-util@9.0.4': + resolution: {integrity: sha512-sLOzjnSrlx9Bb9EFNtHzK/FJFsfg2re6bsGqinFinH1gCqVfz9YYlXiMWwDM4C/L4ywuHFCYwfKTVr/QHQcU0Q==} + engines: {node: '>=18'} + peerDependencies: + c-kzg: ^2.1.2 + peerDependenciesMeta: + c-kzg: + optional: true + + '@nomicfoundation/hardhat-chai-matchers@1.0.6': + resolution: {integrity: sha512-f5ZMNmabZeZegEfuxn/0kW+mm7+yV7VNDxLpMOMGXWFJ2l/Ct3QShujzDRF9cOkK9Ui/hbDeOWGZqyQALDXVCQ==} + peerDependencies: + '@nomiclabs/hardhat-ethers': ^2.0.0 + chai: ^4.2.0 + ethers: ^5.0.0 + hardhat: ^2.9.4 + + '@nomicfoundation/solidity-analyzer-darwin-arm64@0.1.1': + resolution: {integrity: sha512-KcTodaQw8ivDZyF+D76FokN/HdpgGpfjc/gFCImdLUyqB6eSWVaZPazMbeAjmfhx3R0zm/NYVzxwAokFKgrc0w==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@nomicfoundation/solidity-analyzer-darwin-x64@0.1.1': + resolution: {integrity: sha512-XhQG4BaJE6cIbjAVtzGOGbK3sn1BO9W29uhk9J8y8fZF1DYz0Doj8QDMfpMu+A6TjPDs61lbsmeYodIDnfveSA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@nomicfoundation/solidity-analyzer-freebsd-x64@0.1.1': + resolution: {integrity: sha512-GHF1VKRdHW3G8CndkwdaeLkVBi5A9u2jwtlS7SLhBc8b5U/GcoL39Q+1CSO3hYqePNP+eV5YI7Zgm0ea6kMHoA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + + '@nomicfoundation/solidity-analyzer-linux-arm64-gnu@0.1.1': + resolution: {integrity: sha512-g4Cv2fO37ZsUENQ2vwPnZc2zRenHyAxHcyBjKcjaSmmkKrFr64yvzeNO8S3GBFCo90rfochLs99wFVGT/0owpg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@nomicfoundation/solidity-analyzer-linux-arm64-musl@0.1.1': + resolution: {integrity: sha512-WJ3CE5Oek25OGE3WwzK7oaopY8xMw9Lhb0mlYuJl/maZVo+WtP36XoQTb7bW/i8aAdHW5Z+BqrHMux23pvxG3w==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@nomicfoundation/solidity-analyzer-linux-x64-gnu@0.1.1': + resolution: {integrity: sha512-5WN7leSr5fkUBBjE4f3wKENUy9HQStu7HmWqbtknfXkkil+eNWiBV275IOlpXku7v3uLsXTOKpnnGHJYI2qsdA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@nomicfoundation/solidity-analyzer-linux-x64-musl@0.1.1': + resolution: {integrity: sha512-KdYMkJOq0SYPQMmErv/63CwGwMm5XHenEna9X9aB8mQmhDBrYrlAOSsIPgFCUSL0hjxE3xHP65/EPXR/InD2+w==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@nomicfoundation/solidity-analyzer-win32-arm64-msvc@0.1.1': + resolution: {integrity: sha512-VFZASBfl4qiBYwW5xeY20exWhmv6ww9sWu/krWSesv3q5hA0o1JuzmPHR4LPN6SUZj5vcqci0O6JOL8BPw+APg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@nomicfoundation/solidity-analyzer-win32-ia32-msvc@0.1.1': + resolution: {integrity: sha512-JnFkYuyCSA70j6Si6cS1A9Gh1aHTEb8kOTBApp/c7NRTFGNMH8eaInKlyuuiIbvYFhlXW4LicqyYuWNNq9hkpQ==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + + '@nomicfoundation/solidity-analyzer-win32-x64-msvc@0.1.1': + resolution: {integrity: sha512-HrVJr6+WjIXGnw3Q9u6KQcbZCtk0caVWhCdFADySvRyUxJ8PnzlaP+MhwNE8oyT8OZ6ejHBRrrgjSqDCFXGirw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@nomicfoundation/solidity-analyzer@0.1.1': + resolution: {integrity: sha512-1LMtXj1puAxyFusBgUIy5pZk3073cNXYnXUpuNKFghHbIit/xZgbk0AokpUADbNm3gyD6bFWl3LRFh3dhVdREg==} + engines: {node: '>= 12'} + + '@nomiclabs/hardhat-ethers@2.2.3': + resolution: {integrity: sha512-YhzPdzb612X591FOe68q+qXVXGG2ANZRvDo0RRUtimev85rCrAlv/TLMEZw5c+kq9AbzocLTVX/h2jVIFPL9Xg==} + peerDependencies: + ethers: ^5.0.0 + hardhat: ^2.0.0 + + '@npmcli/fs@2.1.2': + resolution: {integrity: sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + '@npmcli/move-file@2.0.1': + resolution: {integrity: sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + deprecated: This functionality has been moved to @npmcli/fs + + '@oven/bun-darwin-aarch64@1.0.11': + resolution: {integrity: sha512-6wCO37lyGNcqefEDQ7IJp4LW7ElKMH50/hlvW5agIBN/XbTwwtv3788dJ9NczEV7RQSlkOI6J3dUoQJ6Pgav6w==} + cpu: [arm64] + os: [darwin] + + '@oven/bun-darwin-x64-baseline@1.0.11': + resolution: {integrity: sha512-is9liFB10GUN/UsSZVkO5tfMIJcBkiDqRvVzNkDHix/i5aXyaBb0vX+uOdJTlHDZyNGi+vHhbRMq3c3ezjJKPA==} + cpu: [x64] + os: [darwin] + + '@oven/bun-darwin-x64@1.0.11': + resolution: {integrity: sha512-5eCtrlOfMuhg7es/6p/rZw5+4khBao/hhGKCPHl9LBok1Mrf5QQjGbXj9OoA2RC2Lxm9av4nrAZG/5nMM01B2g==} + cpu: [x64] + os: [darwin] + + '@oven/bun-linux-aarch64@1.0.11': + resolution: {integrity: sha512-P8hI+vQ+8ffsMLRi2TNzkxsHukrNQD8G2luWo/ndJ55+1uuAMScWZooxm9rgWL6baoB/TL9/Hvi/6INGoE8UlQ==} + cpu: [arm64] + os: [linux] + + '@oven/bun-linux-x64-baseline@1.0.11': + resolution: {integrity: sha512-Asx4pEMDXfmu9Sa0jX4PE1Wijtg1oCfUx8o4FeQEvnVz2+cGG+VoqZXuITmoQC6A4IzAZuJ1tcWOZ8jQCDtvJA==} + cpu: [x64] + os: [linux] + + '@oven/bun-linux-x64@1.0.11': + resolution: {integrity: sha512-F9ZcgVHsPQk6ooHXIeydiLcVcMwhGRjSlOVeHBuHEJ+bI24e/dCY73UKEEz8/hLNA32ocDMmkAGE79qv0ccEIA==} + cpu: [x64] + os: [linux] + + '@protobufjs/aspromise@1.1.2': + resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} + + '@protobufjs/base64@1.1.2': + resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} + + '@protobufjs/codegen@2.0.4': + resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==} + + '@protobufjs/eventemitter@1.1.0': + resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==} + + '@protobufjs/fetch@1.1.0': + resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==} + + '@protobufjs/float@1.0.2': + resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} + + '@protobufjs/inquire@1.1.0': + resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==} + + '@protobufjs/path@1.1.2': + resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} + + '@protobufjs/pool@1.1.0': + resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} + + '@protobufjs/utf8@1.1.0': + resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} + + '@remix-run/router@1.6.0': + resolution: {integrity: sha512-N13NRw3T2+6Xi9J//3CGLsK2OqC8NMme3d/YX+nh05K9YHWGcv8DycHJrqGScSP4T75o8IN6nqIMhVFU8ohg8w==} + engines: {node: '>=14'} + + '@samverschueren/stream-to-observable@0.3.1': + resolution: {integrity: sha512-c/qwwcHyafOQuVQJj0IlBjf5yYgBI7YPJ77k4fOJYesb41jio65eaJODRUmfYKhTOFBrIZ66kgvGPlNbjuoRdQ==} + engines: {node: '>=6'} + peerDependencies: + rxjs: '*' + zen-observable: '*' + peerDependenciesMeta: + rxjs: + optional: true + zen-observable: + optional: true + + '@scure/base@1.1.5': + resolution: {integrity: sha512-Brj9FiG2W1MRQSTB212YVPRrcbjkv48FoZi/u4l/zds/ieRrqsh7aUf6CLwkAq61oKXr/ZlTzlY66gLIj3TFTQ==} + + '@scure/bip32@1.1.5': + resolution: {integrity: sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==} + + '@scure/bip32@1.3.2': + resolution: {integrity: sha512-N1ZhksgwD3OBlwTv3R6KFEcPojl/W4ElJOeCZdi+vuI5QmTFwLq3OFf2zd2ROpKvxFdgZ6hUpb0dx9bVNEwYCA==} + + '@scure/bip32@1.3.3': + resolution: {integrity: sha512-LJaN3HwRbfQK0X1xFSi0Q9amqOgzQnnDngIt+ZlsBC3Bm7/nE7K0kwshZHyaru79yIVRv/e1mQAjZyuZG6jOFQ==} + + '@scure/bip39@1.1.1': + resolution: {integrity: sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==} + + '@scure/bip39@1.2.1': + resolution: {integrity: sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==} + + '@scure/bip39@1.2.2': + resolution: {integrity: sha512-HYf9TUXG80beW+hGAt3TRM8wU6pQoYur9iNypTROm42dorCGmLnFe3eWjz3gOq6G62H2WRh0FCzAR1PI+29zIA==} + + '@sentry-internal/tracing@7.86.0': + resolution: {integrity: sha512-b4dUsNWlPWRwakGwR7bhOkqiFlqQszH1hhVFwrm/8s3kqEBZ+E4CeIfCvuHBHQ1cM/fx55xpXX/BU163cy+3iQ==} + engines: {node: '>=8'} + + '@sentry/core@5.30.0': + resolution: {integrity: sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg==} + engines: {node: '>=6'} + + '@sentry/core@7.86.0': + resolution: {integrity: sha512-SbLvqd1bRYzhDS42u7GMnmbDMfth/zRiLElQWbLK/shmuZzTcfQSwNNdF4Yj+VfjOkqPFgGmICHSHVUc9dh01g==} + engines: {node: '>=8'} + + '@sentry/hub@5.30.0': + resolution: {integrity: sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ==} + engines: {node: '>=6'} + + '@sentry/hub@7.86.0': + resolution: {integrity: sha512-tS9g+yoD/Zs4OS/gCO4/ccT0m90o3brkCIm/gRzPqI5dq2hEE1qn8bF7HM/vLQARM+bsmTEzPzZy19104U5Btg==} + engines: {node: '>=8'} + + '@sentry/minimal@5.30.0': + resolution: {integrity: sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw==} + engines: {node: '>=6'} + + '@sentry/node@5.30.0': + resolution: {integrity: sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg==} + engines: {node: '>=6'} + + '@sentry/node@7.86.0': + resolution: {integrity: sha512-cB1bn/LMn2Km97Y3hv63xwWxT50/G5ixGuSxTZ3dCQM6VDhmZoCuC5NGT3itVvaRd6upQXRZa5W0Zgyh0HXKig==} + engines: {node: '>=8'} + + '@sentry/profiling-node@1.2.6': + resolution: {integrity: sha512-WsXO7VmLze5wPWHpvoRZFTtN+wHw9lYWKZs4T2FwPmvfNVaScGJey/+Wp51aM47Yy12Gj9n/BpqFYDsUXRLMvw==} + engines: {node: '>=8.0.0'} + hasBin: true + + '@sentry/tracing@5.30.0': + resolution: {integrity: sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw==} + engines: {node: '>=6'} + + '@sentry/types@5.30.0': + resolution: {integrity: sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw==} + engines: {node: '>=6'} + + '@sentry/types@7.86.0': + resolution: {integrity: sha512-pGAt0+bMfWgo0KG2epthfNV4Wae03tURpoxNjGo5Fr4cXxvLTSijSAQ6rmmO4bXBJ7+rErEjX30g30o/eEdP9g==} + engines: {node: '>=8'} + + '@sentry/utils@5.30.0': + resolution: {integrity: sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww==} + engines: {node: '>=6'} + + '@sentry/utils@7.86.0': + resolution: {integrity: sha512-6PejFtw9VTFFy5vu0ks+U7Ozkqz+eMt+HN8AZKBKErYzX5/xs0kpkOcSRpu3ETdTYcZf8VAmLVgFgE2BE+3WuQ==} + engines: {node: '>=8'} + + '@sinclair/typebox@0.25.24': + resolution: {integrity: sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==} + + '@sinonjs/commons@2.0.0': + resolution: {integrity: sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==} + + '@sinonjs/fake-timers@10.0.2': + resolution: {integrity: sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw==} + + '@solidity-parser/parser@0.14.5': + resolution: {integrity: sha512-6dKnHZn7fg/iQATVEzqyUOyEidbn05q7YA2mQ9hC0MMXhhV3/JrsxmFSYZAcr7j1yUP700LLhTruvJ3MiQmjJg==} + + '@solidity-parser/parser@0.16.0': + resolution: {integrity: sha512-ESipEcHyRHg4Np4SqBCfcXwyxxna1DgFVz69bgpLV8vzl/NP1DtcKsJ4dJZXWQhY/Z4J2LeKBiOkOVZn9ct33Q==} + + '@solidity-parser/parser@0.17.0': + resolution: {integrity: sha512-Nko8R0/kUo391jsEHHxrGM07QFdnPGvlmox4rmH0kNiNAashItAilhy4Mv4pK5gQmW5f4sXAF58fwJbmlkGcVw==} + + '@testing-library/react-hooks@8.0.1': + resolution: {integrity: sha512-Aqhl2IVmLt8IovEVarNDFuJDVWVvhnr9/GCU6UUnrYXwgDFF9h2L2o2P9KBni1AST5sT6riAyoukFLyjQUgD/g==} + engines: {node: '>=12'} + peerDependencies: + '@types/react': ^16.9.0 || ^17.0.0 + react: ^16.9.0 || ^17.0.0 + react-dom: ^16.9.0 || ^17.0.0 + react-test-renderer: ^16.9.0 || ^17.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + react-dom: + optional: true + react-test-renderer: + optional: true + + '@tootallnate/once@2.0.0': + resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} + engines: {node: '>= 10'} + + '@trpc/client@10.34.0': + resolution: {integrity: sha512-nqtDTIqSY/9syo2EjSy4WWWXPU9GsamEh9Tsg698gLAh1nhgFc5+/YYeb+Ne1pbvWGZ5/3t9Dcz3h4wMyyJ9gQ==} + peerDependencies: + '@trpc/server': 10.34.0 + + '@trpc/server@10.34.0': + resolution: {integrity: sha512-2VMW44Fpaoyqb50dBtzdSWMhqt8lmoJiocEyBBeDb03R0W+XrzbVD5kU/wqKPlcp1DWeNCkOEIMtetMZCfo1hA==} + + '@types/accepts@1.3.7': + resolution: {integrity: sha512-Pay9fq2lM2wXPWbteBsRAGiWH2hig4ZE2asK+mm7kUzlxRTfL961rj89I6zV/E3PcIkDqyuBEcMxFT7rccugeQ==} + + '@types/babel__core@7.20.0': + resolution: {integrity: sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==} + + '@types/babel__generator@7.6.4': + resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} + + '@types/babel__template@7.4.1': + resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} + + '@types/babel__traverse@7.18.3': + resolution: {integrity: sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w==} + + '@types/better-sqlite3@7.6.4': + resolution: {integrity: sha512-dzrRZCYPXIXfSR1/surNbJ/grU3scTaygS0OMzjlGf71i9sc2fGyHPXXiXmEvNIoE0cGwsanEFMVJxPXmco9Eg==} + + '@types/bn.js@4.11.6': + resolution: {integrity: sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==} + + '@types/bn.js@5.1.5': + resolution: {integrity: sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A==} + + '@types/body-parser@1.19.5': + resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} + + '@types/chai-as-promised@7.1.8': + resolution: {integrity: sha512-ThlRVIJhr69FLlh6IctTXFkmhtP3NpMZ2QGq69StYLyKZFp/HOp1VdKZj7RvfNWYYcJ1xlbLGLLWj1UvP5u/Gw==} + + '@types/chai-subset@1.3.3': + resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} + + '@types/chai@4.3.5': + resolution: {integrity: sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==} + + '@types/connect@3.4.38': + resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} + + '@types/content-disposition@0.5.8': + resolution: {integrity: sha512-QVSSvno3dE0MgO76pJhmv4Qyi/j0Yk9pBp0Y7TJ2Tlj+KCgJWY6qX7nnxCOLkZ3VYRSIk1WTxCvwUSdx6CCLdg==} + + '@types/cookies@0.7.10': + resolution: {integrity: sha512-hmUCjAk2fwZVPPkkPBcI7jGLIR5mg4OVoNMBwU6aVsMm/iNPY7z9/R+x2fSwLt/ZXoGua6C5Zy2k5xOo9jUyhQ==} + + '@types/debug@4.1.7': + resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==} + + '@types/ejs@3.1.1': + resolution: {integrity: sha512-RQul5wEfY7BjWm0sYY86cmUN/pcXWGyVxWX93DFFJvcrxax5zKlieLwA3T77xJGwNcZW0YW6CYG70p1m8xPFmA==} + + '@types/emscripten@1.39.6': + resolution: {integrity: sha512-H90aoynNhhkQP6DRweEjJp5vfUVdIj7tdPLsu7pq89vODD/lcugKfZOsfgwpvM6XUewEp2N5dCg1Uf3Qe55Dcg==} + + '@types/express-serve-static-core@4.17.41': + resolution: {integrity: sha512-OaJ7XLaelTgrvlZD8/aa0vvvxZdUmlCn6MtWeB7TkiKW70BQLc9XEPpDLPdbo52ZhXUCrznlWdCHWxJWtdyajA==} + + '@types/express@4.17.21': + resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} + + '@types/glob@7.2.0': + resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} + + '@types/graceful-fs@4.1.6': + resolution: {integrity: sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==} + + '@types/http-assert@1.5.5': + resolution: {integrity: sha512-4+tE/lwdAahgZT1g30Jkdm9PzFRde0xwxBNUyRsCitRvCQB90iuA2uJYdUnhnANRcqGXaWOGY4FEoxeElNAK2g==} + + '@types/http-errors@2.0.4': + resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} + + '@types/is-ci@3.0.0': + resolution: {integrity: sha512-Q0Op0hdWbYd1iahB+IFNQcWXFq4O0Q5MwQP7uN0souuQ4rPg1vEYcnIOfr1gY+M+6rc8FGoRaBO1mOOvL29sEQ==} + + '@types/istanbul-lib-coverage@2.0.4': + resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} + + '@types/istanbul-lib-report@3.0.0': + resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} + + '@types/istanbul-reports@3.0.1': + resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} + + '@types/jest@27.4.1': + resolution: {integrity: sha512-23iPJADSmicDVrWk+HT58LMJtzLAnB2AgIzplQuq/bSrGaxCrlvRFjGbXmamnnk/mAmCdLStiGqggu28ocUyiw==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/keygrip@1.0.6': + resolution: {integrity: sha512-lZuNAY9xeJt7Bx4t4dx0rYCDqGPW8RXhQZK1td7d4H6E9zYbLoOtjBvfwdTKpsyxQI/2jv+armjX/RW+ZNpXOQ==} + + '@types/koa-compose@3.2.8': + resolution: {integrity: sha512-4Olc63RY+MKvxMwVknCUDhRQX1pFQoBZ/lXcRLP69PQkEpze/0cr8LNqJQe5NFb/b19DWi2a5bTi2VAlQzhJuA==} + + '@types/koa@2.13.12': + resolution: {integrity: sha512-vAo1KuDSYWFDB4Cs80CHvfmzSQWeUb909aQib0C0aFx4sw0K9UZFz2m5jaEP+b3X1+yr904iQiruS0hXi31jbw==} + + '@types/koa__cors@4.0.3': + resolution: {integrity: sha512-zj+1sQO/6GGRGINRXlMmoiFwHibKVcjNGdh+p2SpqHDMLyvC+ce0LMHX6UBi1rdpnPZ/+osUwWdGKF945ffrzA==} + + '@types/koa__router@12.0.4': + resolution: {integrity: sha512-Y7YBbSmfXZpa/m5UGGzb7XadJIRBRnwNY9cdAojZGp65Cpe5MAP3mOZE7e3bImt8dfKS4UFcR16SLH8L/z7PBw==} + + '@types/long@4.0.2': + resolution: {integrity: sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==} + + '@types/lru-cache@5.1.1': + resolution: {integrity: sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==} + + '@types/mime@1.3.5': + resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} + + '@types/mime@3.0.4': + resolution: {integrity: sha512-iJt33IQnVRkqeqC7PzBHPTC6fDlRNRW8vjrgqtScAhrmMwe8c4Eo7+fUGTa+XdWrpEgpyKWMYmi2dIwMAYRzPw==} + + '@types/minimatch@3.0.5': + resolution: {integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==} + + '@types/minimist@1.2.2': + resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} + + '@types/mocha@9.1.1': + resolution: {integrity: sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==} + + '@types/ms@0.7.31': + resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} + + '@types/node-fetch@2.6.11': + resolution: {integrity: sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==} + + '@types/node@12.20.55': + resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} + + '@types/node@18.15.11': + resolution: {integrity: sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==} + + '@types/normalize-package-data@2.4.1': + resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} + + '@types/object-hash@1.3.4': + resolution: {integrity: sha512-xFdpkAkikBgqBdG9vIlsqffDV8GpvnPEzs0IUtr1v3BEB97ijsFQ4RXVbUZwjFThhB4MDSTUfvmxUD5PGx0wXA==} + + '@types/openurl@1.0.0': + resolution: {integrity: sha512-fUHH4T8FmEl3NBtGbUYYzMo1Ev47uVCVEGVjVNjorOMzgjls6zH82yr/zqkkcEOHY2HUC5PZ8dRFwGed/NR7wQ==} + + '@types/parse-json@4.0.0': + resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} + + '@types/pbkdf2@3.1.2': + resolution: {integrity: sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew==} + + '@types/prettier@2.7.2': + resolution: {integrity: sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==} + + '@types/prop-types@15.7.5': + resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} + + '@types/qs@6.9.10': + resolution: {integrity: sha512-3Gnx08Ns1sEoCrWssEgTSJs/rsT2vhGP+Ja9cnnk9k4ALxinORlQneLXFeFKOTJMOeZUFD1s7w+w2AphTpvzZw==} + + '@types/range-parser@1.2.7': + resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} + + '@types/react-dom@18.2.7': + resolution: {integrity: sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==} + + '@types/react@18.2.22': + resolution: {integrity: sha512-60fLTOLqzarLED2O3UQImc/lsNRgG0jE/a1mPW9KjMemY0LMITWEsbS4VvZ4p6rorEHd5YKxxmMKSDK505GHpA==} + + '@types/retry@0.12.0': + resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} + + '@types/scheduler@0.16.3': + resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==} + + '@types/secp256k1@4.0.6': + resolution: {integrity: sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ==} + + '@types/semver@6.2.3': + resolution: {integrity: sha512-KQf+QAMWKMrtBMsB8/24w53tEsxllMj6TuA80TT/5igJalLI/zm0L3oXRbIAl4Ohfc85gyHX/jhMwsVkmhLU4A==} + + '@types/semver@7.5.8': + resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} + + '@types/send@0.17.4': + resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} + + '@types/serve-static@1.15.5': + resolution: {integrity: sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==} + + '@types/sql.js@1.4.4': + resolution: {integrity: sha512-6EWU2wfiBtzgTy18WQoXZAGTreBjhZcBCfD8CDvyI1Nj0a4KNDDt41IYeAZ40cRUdfqWHb7VGx7t6nK0yBOI5A==} + + '@types/stack-utils@2.0.1': + resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} + + '@types/stream-to-array@2.3.1': + resolution: {integrity: sha512-OqV/DIumEm5pT+m4LYGpDFRRLZ0VJRvrz58C8q8rjLGVgP5gRHxThG8eLZfhmK3GVAq9iq3eSvZ0vkZJ5ZH/Pg==} + + '@types/throttle-debounce@5.0.0': + resolution: {integrity: sha512-Pb7k35iCGFcGPECoNE4DYp3Oyf2xcTd3FbFQxXUI9hEYKUl6YX+KLf7HrBmgVcD05nl50LIH6i+80js4iYmWbw==} + + '@types/toposort@2.0.6': + resolution: {integrity: sha512-9OMv8NIjiJclYZ+FIqNCs6B6/7HSIccWCpgeVmp2TurRXllEIYNxAwGBBFEataTsHwLt8oeVmMCmdld8dVq/hw==} + + '@types/uuid@8.3.4': + resolution: {integrity: sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==} + + '@types/ws@8.5.4': + resolution: {integrity: sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==} + + '@types/yargs-interactive@2.1.3': + resolution: {integrity: sha512-bYB8ah0JPR6/lpHlxUzeHsrb3RK5OW7N8Hnth2nefnr6zQ5KFoDQ6wM5x58dTLEDYrwikFy3EPTf/O0HKLNaIg==} + + '@types/yargs-parser@21.0.0': + resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} + + '@types/yargs@17.0.23': + resolution: {integrity: sha512-yuogunc04OnzGQCrfHx+Kk883Q4X0aSwmYZhKjI21m+SVYzjIbrWl8dOOwSv5hf2Um2pdCOXWo9isteZTNXUZQ==} + + '@types/yargs@17.0.24': + resolution: {integrity: sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==} + + '@typescript-eslint/eslint-plugin@7.1.1': + resolution: {integrity: sha512-zioDz623d0RHNhvx0eesUmGfIjzrk18nSBC8xewepKXbBvN/7c1qImV7Hg8TI1URTxKax7/zxfxj3Uph8Chcuw==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + '@typescript-eslint/parser': ^7.0.0 + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/parser@7.1.1': + resolution: {integrity: sha512-ZWUFyL0z04R1nAEgr9e79YtV5LbafdOtN7yapNbn1ansMyaegl2D4bL7vHoJ4HPSc4CaLwuCVas8CVuneKzplQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/scope-manager@7.1.1': + resolution: {integrity: sha512-cirZpA8bJMRb4WZ+rO6+mnOJrGFDd38WoXCEI57+CYBqta8Yc8aJym2i7vyqLL1vVYljgw0X27axkUXz32T8TA==} + engines: {node: ^16.0.0 || >=18.0.0} + + '@typescript-eslint/type-utils@7.1.1': + resolution: {integrity: sha512-5r4RKze6XHEEhlZnJtR3GYeCh1IueUHdbrukV2KSlLXaTjuSfeVF8mZUVPLovidCuZfbVjfhi4c0DNSa/Rdg5g==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/types@7.1.1': + resolution: {integrity: sha512-KhewzrlRMrgeKm1U9bh2z5aoL4s7K3tK5DwHDn8MHv0yQfWFz/0ZR6trrIHHa5CsF83j/GgHqzdbzCXJ3crx0Q==} + engines: {node: ^16.0.0 || >=18.0.0} + + '@typescript-eslint/typescript-estree@7.1.1': + resolution: {integrity: sha512-9ZOncVSfr+sMXVxxca2OJOPagRwT0u/UHikM2Rd6L/aB+kL/QAuTnsv6MeXtjzCJYb8PzrXarypSGIPx3Jemxw==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/utils@7.1.1': + resolution: {integrity: sha512-thOXM89xA03xAE0lW7alstvnyoBUbBX38YtY+zAUcpRPcq9EIhXPuJ0YTv948MbzmKh6e1AUszn5cBFK49Umqg==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^8.56.0 + + '@typescript-eslint/visitor-keys@7.1.1': + resolution: {integrity: sha512-yTdHDQxY7cSoCcAtiBzVzxleJhkGB9NncSIyMYe2+OGON1ZsP9zOPws/Pqgopa65jvknOjlk/w7ulPlZ78PiLQ==} + engines: {node: ^16.0.0 || >=18.0.0} + + '@typescript/analyze-trace@0.10.1': + resolution: {integrity: sha512-RnlSOPh14QbopGCApgkSx5UBgGda5MX1cHqp2fsqfiDyCwGL/m1jaeB9fzu7didVS81LQqGZZuxFBcg8YU8EVw==} + hasBin: true + + '@typescript/vfs@1.5.0': + resolution: {integrity: sha512-AJS307bPgbsZZ9ggCT3wwpg3VbTKMFNHfaY/uF0ahSkYYrPF2dSSKDNIDIQAHm9qJqbLvCsSJH7yN4Vs/CsMMg==} + + '@ungap/structured-clone@1.2.0': + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + + '@viem/anvil@0.0.7': + resolution: {integrity: sha512-F+3ljCT1bEt8T4Fzm9gWpIgO3Dc7bzG1TtUtkStkJFMuummqZ8kvYc3UFMo5j3F51fSWZZvEkjs3+i7qf0AOqQ==} + + '@vitejs/plugin-react@4.0.0': + resolution: {integrity: sha512-HX0XzMjL3hhOYm+0s95pb0Z7F8O81G7joUHgfDd/9J/ZZf5k4xX6QAMFkKsHFxaHlf6X7GD7+XuaZ66ULiJuhQ==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.2.0 + + '@vitest/expect@0.34.6': + resolution: {integrity: sha512-QUzKpUQRc1qC7qdGo7rMK3AkETI7w18gTCUrsNnyjjJKYiuUB9+TQK3QnR1unhCnWRC0AbKv2omLGQDF/mIjOw==} + + '@vitest/runner@0.34.6': + resolution: {integrity: sha512-1CUQgtJSLF47NnhN+F9X2ycxUP0kLHQ/JWvNHbeBfwW8CzEGgeskzNnHDyv1ieKTltuR6sdIHV+nmR6kPxQqzQ==} + + '@vitest/snapshot@0.34.6': + resolution: {integrity: sha512-B3OZqYn6k4VaN011D+ve+AA4whM4QkcwcrwaKwAbyyvS/NB1hCWjFIBQxAQQSQir9/RtyAAGuq+4RJmbn2dH4w==} + + '@vitest/spy@0.34.6': + resolution: {integrity: sha512-xaCvneSaeBw/cz8ySmF7ZwGvL0lBjfvqc1LpQ/vcdHEvpLn3Ff1vAvjw+CoGn0802l++5L/pxb7whwcWAw+DUQ==} + + '@vitest/utils@0.34.6': + resolution: {integrity: sha512-IG5aDD8S6zlvloDsnzHw0Ut5xczlF+kv2BOTo+iXfPr54Yhi5qbVOgGB1hZaVq4iJ4C/MZ2J0y15IlsV/ZcI0A==} + + abab@2.0.6: + resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} + + abbrev@1.1.1: + resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} + + abdk-libraries-solidity@3.2.0: + resolution: {integrity: sha512-JyedKxyqsszb9qCTX+YCOQHA4m0YAq9p77Qvumiy8LJLLrm1FfA9D3pdSAZN5wrmi3PSv0y3Svy8c/C+8S9K8g==} + + abind@1.0.5: + resolution: {integrity: sha512-dbaEZphdPje0ihqSdWg36Sb8S20TuqQomiz2593oIx+enQ9Q4vDZRjIzhnkWltGRKVKqC28kTribkgRLBexWVQ==} + engines: {node: '>=6', npm: '>=3'} + + abitype@1.0.0: + resolution: {integrity: sha512-NMeMah//6bJ56H5XRj8QCV4AwuW6hB6zqz2LnhhLdcWVQOsXki6/Pn3APeqxCma62nXIcmZWdu1DlHWS74umVQ==} + peerDependencies: + typescript: '>=5.0.4' + zod: ^3 >=3.22.0 + peerDependenciesMeta: + typescript: + optional: true + zod: + optional: true + + abort-controller-x@0.4.1: + resolution: {integrity: sha512-lJ2ssrl3FoTK3cX/g15lRCkXFWKiwRTRtBjfwounO2EM/Q65rI/MEZsfsch1juWU2pH2aLSaq0HGowlDP/imrw==} + + abort-controller@3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} + + abstract-logging@2.0.1: + resolution: {integrity: sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==} + + accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn-walk@8.3.2: + resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} + engines: {node: '>=0.4.0'} + + acorn@6.4.2: + resolution: {integrity: sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==} + engines: {node: '>=0.4.0'} + hasBin: true + + acorn@8.11.3: + resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} + engines: {node: '>=0.4.0'} + hasBin: true + + adm-zip@0.4.16: + resolution: {integrity: sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==} + engines: {node: '>=0.3.0'} + + aes-js@3.0.0: + resolution: {integrity: sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==} + + agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + + agentkeepalive@4.5.0: + resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==} + engines: {node: '>= 8.0.0'} + + aggregate-error@3.1.0: + resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} + engines: {node: '>=8'} + + ajv-formats@2.1.1: + resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ajv@8.12.0: + resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + + ansi-align@3.0.1: + resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} + + ansi-colors@4.1.1: + resolution: {integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==} + engines: {node: '>=6'} + + ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + + ansi-escapes@3.2.0: + resolution: {integrity: sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==} + engines: {node: '>=4'} + + ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + + ansi-regex@2.1.1: + resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} + engines: {node: '>=0.10.0'} + + ansi-regex@3.0.1: + resolution: {integrity: sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==} + engines: {node: '>=4'} + + ansi-regex@4.1.1: + resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} + engines: {node: '>=6'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-styles@2.2.1: + resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==} + engines: {node: '>=0.10.0'} + + ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + + antlr4@4.7.1: + resolution: {integrity: sha512-haHyTW7Y9joE5MVs37P2lNYfU2RWBLfcRDD8OWldcdZm5TiCE91B5Xl1oWSwiDUSd4rlExpt2pu1fksYQjRBYQ==} + + antlr4ts@0.5.0-alpha.4: + resolution: {integrity: sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ==} + + any-observable@0.3.0: + resolution: {integrity: sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==} + engines: {node: '>=6'} + peerDependencies: + rxjs: '*' + zenObservable: '*' + peerDependenciesMeta: + rxjs: + optional: true + zenObservable: + optional: true + + any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + aproba@2.0.0: + resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} + + archy@1.0.0: + resolution: {integrity: sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==} + + are-we-there-yet@3.0.1: + resolution: {integrity: sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + argx@3.0.2: + resolution: {integrity: sha512-PUyi1r14HG1AH6raqPEW8+vKNWfvHrmerdBXnf5iz7JOnO1hRaG1cGsH9eay/y8dUIreN7NxSEfK208UCGd0wQ==} + engines: {node: '>=4', npm: '>=2'} + + argx@4.0.4: + resolution: {integrity: sha512-XLWeRTNBJRzQkbMweLIxdtnvpE7iYUBraPwrIJX57FjL4D1RHLMJRM1AyEP6KZHgvjW7TSnxF8MpGic7YdTGOA==} + engines: {node: '>=8', npm: '>=5'} + + arktype@1.0.29-alpha: + resolution: {integrity: sha512-glMLgVhIQRSkR3tymiS+POAcWVJH09sfrgic0jHnyFL8BlhHAJZX2BzdImU9zYr1y9NBqy+U93ZNrRTHXsKRDw==} + + array-includes@3.1.6: + resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==} + engines: {node: '>= 0.4'} + + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + + array.prototype.flat@1.3.1: + resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==} + engines: {node: '>= 0.4'} + + array.prototype.flatmap@1.3.1: + resolution: {integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==} + engines: {node: '>= 0.4'} + + array.prototype.tosorted@1.1.1: + resolution: {integrity: sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==} + + arrayreduce@2.1.0: + resolution: {integrity: sha512-I5MwrsPJ4faMuuPXM8+EgEy83G16i+FqegFhhHX3geDJbyaqPDWNrVjkrRg9SZq5mepEZdNg36SDPOhiKPWTLA==} + engines: {node: '>=4.0.0'} + + arrify@1.0.1: + resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} + engines: {node: '>=0.10.0'} + + askconfig@4.0.4: + resolution: {integrity: sha512-fjB/vmAlUKxGVqcz4mLub3xF8m9rkazhqcXRvrDzeey0iaLhcAg2K8bhJL7pKjE2dFP9qDGv3+yXovYMV9XBJQ==} + engines: {node: '>=8', npm: '>=5'} + + assemblyscript@0.21.7: + resolution: {integrity: sha512-GPKavCMUVZbrU31KTBMtnsRZa9pPN10ApfkPGNdL70Qpu/rORbTCte/37dnIUnQdXHm+5vHmG+iGRWmwJO5hvA==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + hasBin: true + + assertion-error@1.1.0: + resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + + ast-parents@0.0.1: + resolution: {integrity: sha512-XHusKxKz3zoYk1ic8Un640joHbFMhbqneyoZfoKnEGtf2ey9Uh/IdpcQplODdO/kENaMIWsD0nJm4+wX3UNLHA==} + + astral-regex@1.0.0: + resolution: {integrity: sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==} + engines: {node: '>=4'} + + astral-regex@2.0.0: + resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} + engines: {node: '>=8'} + + async@1.5.2: + resolution: {integrity: sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==} + + async@3.2.4: + resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + atomic-sleep@1.0.0: + resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} + engines: {node: '>=8.0.0'} + + autoprefixer@10.4.14: + resolution: {integrity: sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + + avvio@8.2.1: + resolution: {integrity: sha512-TAlMYvOuwGyLK3PfBb5WKBXZmXz2fVCgv23d6zZFdle/q3gPjmxBaeuC0pY0Dzs5PWMSgfqqEZkrye19GlDTgw==} + + babel-jest@29.5.0: + resolution: {integrity: sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.8.0 + + babel-plugin-istanbul@6.1.1: + resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} + engines: {node: '>=8'} + + babel-plugin-jest-hoist@29.5.0: + resolution: {integrity: sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + babel-preset-current-node-syntax@1.0.1: + resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} + peerDependencies: + '@babel/core': ^7.0.0 + + babel-preset-jest@29.5.0: + resolution: {integrity: sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.0.0 + + babel-runtime@6.26.0: + resolution: {integrity: sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + base-x@3.0.9: + resolution: {integrity: sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + bech32@1.1.4: + resolution: {integrity: sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==} + + better-path-resolve@1.0.0: + resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} + engines: {node: '>=4'} + + better-sqlite3@8.6.0: + resolution: {integrity: sha512-jwAudeiTMTSyby+/SfbHDebShbmC2MCH8mU2+DXi0WJfv13ypEJm47cd3kljmy/H130CazEvkf2Li//ewcMJ1g==} + + binary-extensions@2.2.0: + resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + engines: {node: '>=8'} + + binaryen@110.0.0-nightly.20221006: + resolution: {integrity: sha512-yC7ZLoaZmXhm5cB0+g3rZkz5ujPSlhX+FEQtgaQHVxcL78D8cTXdRSdajhgQD345BVPsooOrSxqhX6tnULgBWg==} + hasBin: true + + bindings@1.5.0: + resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} + + bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + + blakejs@1.2.1: + resolution: {integrity: sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==} + + bn.js@4.11.6: + resolution: {integrity: sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==} + + bn.js@4.12.0: + resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==} + + bn.js@5.2.1: + resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} + + boxen@5.1.2: + resolution: {integrity: sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==} + engines: {node: '>=10'} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + + breakword@1.0.6: + resolution: {integrity: sha512-yjxDAYyK/pBvws9H4xKYpLDpYKEH6CzrBPAuXq3x18I+c/2MkVtT3qAr7Oloi6Dss9qNhPVueAAVU1CSeNDIXw==} + + brorand@1.1.0: + resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} + + browser-headers@0.4.1: + resolution: {integrity: sha512-CA9hsySZVo9371qEHjHZtYxV2cFtVj5Wj/ZHi8ooEsrtm4vOnl9Y9HmyYWk9q+05d7K3rdoAE0j3MVEFVvtQtg==} + + browser-stdout@1.3.1: + resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} + + browserify-aes@1.2.0: + resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} + + browserslist@4.21.5: + resolution: {integrity: sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + bs-logger@0.2.6: + resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} + engines: {node: '>= 6'} + + bs58@4.0.1: + resolution: {integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==} + + bs58check@2.1.2: + resolution: {integrity: sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==} + + bser@2.1.1: + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + buffer-lite@1.1.0: + resolution: {integrity: sha512-oU0QAzHknj4a3PNzTznNUN61r6OdAqqJJdzTm422yyIM3QyK5/7zi8wPVFooCwoPKk90ybCm9qnvkk+tsQt5sg==} + + buffer-xor@1.0.3: + resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} + + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + + buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + + bun@1.0.11: + resolution: {integrity: sha512-cKyQAQOfWNIP511UpQjkABUp7z/5+1ci2kXfhjL9PozHoCaCtnYFtVjeqU1LovpqEP1agAsMiDpGNKbJP89RIw==} + cpu: [arm64, x64] + os: [darwin, linux] + hasBin: true + + bundle-require@4.0.1: + resolution: {integrity: sha512-9NQkRHlNdNpDBGmLpngF3EFDcwodhMUuLz9PaWYciVcQF9SE4LFjM2DB/xV1Li5JiuDMv7ZUWuC3rGbqR0MAXQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + peerDependencies: + esbuild: '>=0.17' + + bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + + cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + + cacache@16.1.3: + resolution: {integrity: sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + cache-content-type@1.0.1: + resolution: {integrity: sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==} + engines: {node: '>= 6.0.0'} + + call-bind@1.0.2: + resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} + + caller-callsite@2.0.0: + resolution: {integrity: sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==} + engines: {node: '>=4'} + + caller-path@2.0.0: + resolution: {integrity: sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==} + engines: {node: '>=4'} + + callsites@2.0.0: + resolution: {integrity: sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==} + engines: {node: '>=4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + camelcase-css@2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} + + camelcase-keys@6.2.2: + resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} + engines: {node: '>=8'} + + camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + + caniuse-lite@1.0.30001470: + resolution: {integrity: sha512-065uNwY6QtHCBOExzbV6m236DDhYCCtPmQUCoQtwkVqzud8v5QPidoMr6CoMkC2nfp6nksjttqWQRRh75LqUmA==} + + case-anything@2.1.10: + resolution: {integrity: sha512-JczJwVrCP0jPKh05McyVsuOg6AYosrB9XWZKbQzXeDAm2ClE/PJE/BcrrQrVyGYH7Jg8V/LDupmyL4kFlVsVFQ==} + engines: {node: '>=12.13'} + + chai-as-promised@7.1.1: + resolution: {integrity: sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==} + peerDependencies: + chai: '>= 2.1.2 < 5' + + chai@4.4.1: + resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==} + engines: {node: '>=4'} + + chalk@1.1.3: + resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==} + engines: {node: '>=0.10.0'} + + chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + + chalk@3.0.0: + resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} + engines: {node: '>=8'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + change-case@5.2.0: + resolution: {integrity: sha512-L6VzznESnMIKKdKhVzCG+KPz4+x1FWbjOs1AdhoHStV3qo8aySMRGPUoqC0aL1ThKaQNGhAu6ZfHL/QAyQRuiw==} + + char-regex@1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} + + chardet@0.7.0: + resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + + check-error@1.0.3: + resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} + + chokidar@3.5.3: + resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + engines: {node: '>= 8.10.0'} + + chownr@1.1.4: + resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} + + chownr@2.0.0: + resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} + engines: {node: '>=10'} + + ci-info@2.0.0: + resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} + + ci-info@3.8.0: + resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} + engines: {node: '>=8'} + + cipher-base@1.0.4: + resolution: {integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==} + + cjs-module-lexer@1.2.2: + resolution: {integrity: sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==} + + clean-stack@2.2.0: + resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} + engines: {node: '>=6'} + + cli-boxes@2.2.1: + resolution: {integrity: sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==} + engines: {node: '>=6'} + + cli-color@1.4.0: + resolution: {integrity: sha512-xu6RvQqqrWEo6MPR1eixqGPywhYBHRs653F9jfXB2Hx4jdM/3WxiNE1vppRmxtMIfl16SFYTpYlrnqH/HsK/2w==} + + cli-cursor@2.1.0: + resolution: {integrity: sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==} + engines: {node: '>=4'} + + cli-cursor@3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} + + cli-truncate@0.2.1: + resolution: {integrity: sha512-f4r4yJnbT++qUPI9NR4XLDLq41gQ+uqnPItWG0F5ZkehuNiTTa3EY0S4AqTSUOeJ7/zU41oWPQSNkW5BqPL9bg==} + engines: {node: '>=0.10.0'} + + cli-width@2.2.1: + resolution: {integrity: sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==} + + cli-width@3.0.0: + resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} + engines: {node: '>= 10'} + + cliui@5.0.0: + resolution: {integrity: sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==} + + cliui@6.0.0: + resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} + + cliui@7.0.4: + resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + + co@4.6.0: + resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + + code-point-at@1.1.0: + resolution: {integrity: sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==} + engines: {node: '>=0.10.0'} + + collect-v8-coverage@1.0.1: + resolution: {integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==} + + color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + color-support@1.1.3: + resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} + hasBin: true + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + command-exists@1.2.9: + resolution: {integrity: sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==} + + commander@2.18.0: + resolution: {integrity: sha512-6CYPa+JP2ftfRU2qkDK+UTVeQYosOg/2GbcjIcKPHfinyOLPVGXu/ovN86RP49Re5ndJK1N0kuiidFFuepc4ZQ==} + + commander@3.0.2: + resolution: {integrity: sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==} + + commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + concurrently@8.2.2: + resolution: {integrity: sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg==} + engines: {node: ^14.13.0 || >=16.0.0} + hasBin: true + + console-control-strings@1.1.0: + resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} + + content-disposition@0.5.4: + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} + engines: {node: '>= 0.6'} + + content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + + convert-source-map@1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + cookie@0.4.2: + resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} + engines: {node: '>= 0.6'} + + cookie@0.5.0: + resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} + engines: {node: '>= 0.6'} + + cookies@0.8.0: + resolution: {integrity: sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow==} + engines: {node: '>= 0.8'} + + copy-anything@3.0.5: + resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==} + engines: {node: '>=12.13'} + + core-js@2.6.12: + resolution: {integrity: sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==} + deprecated: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js. + + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + + cosmiconfig@5.2.1: + resolution: {integrity: sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==} + engines: {node: '>=4'} + + cosmiconfig@6.0.0: + resolution: {integrity: sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==} + engines: {node: '>=8'} + + create-create-app@https://codeload.github.com/holic/create-create-app/tar.gz/74376c59b48a04aabbe94d9cacfe9cb1cecccd63: + resolution: {tarball: https://codeload.github.com/holic/create-create-app/tar.gz/74376c59b48a04aabbe94d9cacfe9cb1cecccd63} + version: 7.3.0 + hasBin: true + + create-hash@1.2.0: + resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} + + create-hmac@1.1.7: + resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==} + + cross-spawn@5.1.0: + resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} + + cross-spawn@6.0.5: + resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==} + engines: {node: '>=4.8'} + + cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + cssstyle@3.0.0: + resolution: {integrity: sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==} + engines: {node: '>=14'} + + csstype@3.1.2: + resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} + + csv-generate@3.4.3: + resolution: {integrity: sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==} + + csv-parse@4.16.3: + resolution: {integrity: sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==} + + csv-stringify@5.6.5: + resolution: {integrity: sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A==} + + csv@5.5.3: + resolution: {integrity: sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g==} + engines: {node: '>= 0.1.90'} + + d@1.0.1: + resolution: {integrity: sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==} + + data-urls@4.0.0: + resolution: {integrity: sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g==} + engines: {node: '>=14'} + + dataloader@1.4.0: + resolution: {integrity: sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==} + + date-fns@1.30.1: + resolution: {integrity: sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==} + + date-fns@2.30.0: + resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} + engines: {node: '>=0.11'} + + debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decamelize-keys@1.1.1: + resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} + engines: {node: '>=0.10.0'} + + decamelize@1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + + decamelize@4.0.0: + resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} + engines: {node: '>=10'} + + decimal.js@10.4.3: + resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} + + decompress-response@6.0.0: + resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} + engines: {node: '>=10'} + + dedent@0.7.0: + resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} + + deep-eql@4.1.3: + resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} + engines: {node: '>=6'} + + deep-equal@1.0.1: + resolution: {integrity: sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==} + + deep-extend@0.6.0: + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + + define-properties@1.1.4: + resolution: {integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==} + engines: {node: '>= 0.4'} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + delegates@1.0.0: + resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} + + depd@1.1.2: + resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} + engines: {node: '>= 0.6'} + + depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + + destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + detect-indent@6.1.0: + resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} + engines: {node: '>=8'} + + detect-libc@1.0.3: + resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} + engines: {node: '>=0.10'} + hasBin: true + + detect-libc@2.0.2: + resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==} + engines: {node: '>=8'} + + detect-newline@3.1.0: + resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} + engines: {node: '>=8'} + + didyoumean@1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + + diff-sequences@27.5.1: + resolution: {integrity: sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + diff@5.0.0: + resolution: {integrity: sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==} + engines: {node: '>=0.3.1'} + + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + + dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + + doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + + doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + + domexception@4.0.0: + resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} + engines: {node: '>=12'} + + dotenv@16.0.3: + resolution: {integrity: sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==} + engines: {node: '>=12'} + + dprint-node@1.0.7: + resolution: {integrity: sha512-NTZOW9A7ipb0n7z7nC3wftvsbceircwVHSgzobJsEQa+7RnOMbhrfX5IflA6CtC4GA63DSAiHYXa4JKEy9F7cA==} + + drizzle-orm@0.28.5: + resolution: {integrity: sha512-6r6Iw4c38NAmW6TiKH3TUpGUQ1YdlEoLJOQptn8XPx3Z63+vFNKfAiANqrIiYZiMjKR9+NYAL219nFrmo1duXA==} + peerDependencies: + '@aws-sdk/client-rds-data': '>=3' + '@cloudflare/workers-types': '>=3' + '@libsql/client': '*' + '@neondatabase/serverless': '>=0.1' + '@opentelemetry/api': ^1.4.1 + '@planetscale/database': '>=1' + '@types/better-sqlite3': '*' + '@types/pg': '*' + '@types/sql.js': '*' + '@vercel/postgres': '*' + better-sqlite3: '>=7' + bun-types: '*' + knex: '*' + kysely: '*' + mysql2: '>=2' + pg: '>=8' + postgres: '>=3' + sql.js: '>=1' + sqlite3: '>=5' + peerDependenciesMeta: + '@aws-sdk/client-rds-data': + optional: true + '@cloudflare/workers-types': + optional: true + '@libsql/client': + optional: true + '@neondatabase/serverless': + optional: true + '@opentelemetry/api': + optional: true + '@planetscale/database': + optional: true + '@types/better-sqlite3': + optional: true + '@types/pg': + optional: true + '@types/sql.js': + optional: true + '@vercel/postgres': + optional: true + better-sqlite3: + optional: true + bun-types: + optional: true + knex: + optional: true + kysely: + optional: true + mysql2: + optional: true + pg: + optional: true + postgres: + optional: true + sql.js: + optional: true + sqlite3: + optional: true + + ds-test@https://codeload.github.com/dapphub/ds-test/tar.gz/e282159d5170298eb2455a6c05280ab5a73a4ef0: + resolution: {tarball: https://codeload.github.com/dapphub/ds-test/tar.gz/e282159d5170298eb2455a6c05280ab5a73a4ef0} + version: 1.0.0 + + duplexify@3.7.1: + resolution: {integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==} + + duplexify@4.1.2: + resolution: {integrity: sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==} + + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + + ejs@3.1.8: + resolution: {integrity: sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==} + engines: {node: '>=0.10.0'} + hasBin: true + + electron-to-chromium@1.4.340: + resolution: {integrity: sha512-zx8hqumOqltKsv/MF50yvdAlPF9S/4PXbyfzJS6ZGhbddGkRegdwImmfSVqCkEziYzrIGZ/TlrzBND4FysfkDg==} + + elegant-spinner@1.0.1: + resolution: {integrity: sha512-B+ZM+RXvRqQaAmkMlO/oSe5nMUOaUnyfGYCEHoR8wrXsZR2mA0XVibsxV1bvTwxdRWah1PkQqso2EzhILGHtEQ==} + engines: {node: '>=0.10.0'} + + elliptic@6.5.4: + resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} + + emittery@0.13.1: + resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} + engines: {node: '>=12'} + + emoji-regex@7.0.3: + resolution: {integrity: sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + + encoding@0.1.13: + resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} + + end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + + enquirer@2.3.6: + resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} + engines: {node: '>=8.6'} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + + envinfo@7.8.1: + resolution: {integrity: sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==} + engines: {node: '>=4'} + hasBin: true + + epicfail@3.0.0: + resolution: {integrity: sha512-zf7vvWZ2tI2+P1674dmcyPWopD/0FC2BrAi0DvDY0uKGmrB66rwpRVlOYKFlGwRO4Q6bpkoCTPhjqvi5hMOavQ==} + + err-code@2.0.3: + resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} + + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + + es-abstract@1.20.5: + resolution: {integrity: sha512-7h8MM2EQhsCA7pU/Nv78qOXFpD8Rhqd12gYiSJVkrH9+e8VuA8JlPJK/hQjjlLv6pJvx/z1iRFKzYb0XT/RuAQ==} + engines: {node: '>= 0.4'} + + es-shim-unscopables@1.0.0: + resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} + + es-to-primitive@1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} + + es5-ext@0.10.62: + resolution: {integrity: sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==} + engines: {node: '>=0.10'} + + es6-iterator@2.0.3: + resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==} + + es6-symbol@3.1.3: + resolution: {integrity: sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==} + + es6-weak-map@2.0.3: + resolution: {integrity: sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==} + + esbuild@0.17.15: + resolution: {integrity: sha512-LBUV2VsUIc/iD9ME75qhT4aJj0r75abCVS0jakhFzOtR7TQsqQA5w0tZ+KTKnwl3kXE0MhskNdHDh/I5aCR1Zw==} + engines: {node: '>=12'} + hasBin: true + + esbuild@0.17.17: + resolution: {integrity: sha512-/jUywtAymR8jR4qsa2RujlAF7Krpt5VWi72Q2yuLD4e/hvtNcFQ0I1j8m/bxq238pf3/0KO5yuXNpuLx8BE1KA==} + engines: {node: '>=12'} + hasBin: true + + escalade@3.1.1: + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + engines: {node: '>=6'} + + escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + + escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + eslint-plugin-react-hooks@4.6.0: + resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + + eslint-plugin-react@7.31.11: + resolution: {integrity: sha512-TTvq5JsT5v56wPa9OYHzsrOlHzKZKjV+aLgS+55NJP/cuzdiQPC7PfYoUjMoxlffKtvijpk7vA/jmuqRb9nohw==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + + eslint-scope@4.0.3: + resolution: {integrity: sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==} + engines: {node: '>=4.0.0'} + + eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-utils@1.4.3: + resolution: {integrity: sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==} + engines: {node: '>=6'} + + eslint-visitor-keys@1.3.0: + resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} + engines: {node: '>=4'} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint@5.16.0: + resolution: {integrity: sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==} + engines: {node: ^6.14.0 || ^8.10.0 || >=9.10.0} + hasBin: true + + eslint@8.57.0: + resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + + espree@5.0.1: + resolution: {integrity: sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==} + engines: {node: '>=6.0.0'} + + espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + ethereum-bloom-filters@1.0.10: + resolution: {integrity: sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA==} + + ethereum-cryptography@0.1.3: + resolution: {integrity: sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==} + + ethereum-cryptography@1.2.0: + resolution: {integrity: sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==} + + ethereum-cryptography@2.1.3: + resolution: {integrity: sha512-BlwbIL7/P45W8FGW2r7LGuvoEZ+7PWsniMvQ4p5s2xCyw9tmaDlpfsN9HjAucbF+t/qpVHwZUisgfK24TCW8aA==} + + ethereumjs-abi@0.6.8: + resolution: {integrity: sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==} + + ethereumjs-util@6.2.1: + resolution: {integrity: sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==} + + ethers@5.7.2: + resolution: {integrity: sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==} + + ethjs-unit@0.1.6: + resolution: {integrity: sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==} + engines: {node: '>=6.5.0', npm: '>=3'} + + ethjs-util@0.1.6: + resolution: {integrity: sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==} + engines: {node: '>=6.5.0', npm: '>=3'} + + event-emitter@0.3.5: + resolution: {integrity: sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==} + + event-target-shim@5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} + + eventemitter3@4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + + events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + + evp_bytestokey@1.0.3: + resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} + + execa@3.4.0: + resolution: {integrity: sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g==} + engines: {node: ^8.12.0 || >=9.7.0} + + execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + + execa@7.2.0: + resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} + engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} + + execcli@5.0.6: + resolution: {integrity: sha512-du+uy/Ew2P90PKjSHI89u/XuqVaBDzvaJ6ePn40JaOy7owFQNsYDbd5AoR5A559HEAb1i5HO22rJxtgVonf5Bg==} + engines: {node: '>=8', npm: '>=4'} + + exit@0.1.2: + resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} + engines: {node: '>= 0.8.0'} + + expand-template@2.0.3: + resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} + engines: {node: '>=6'} + + expect@29.5.0: + resolution: {integrity: sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + exponential-backoff@3.1.1: + resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==} + + ext@1.7.0: + resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} + + extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + + extendable-error@0.1.7: + resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} + + external-editor@3.1.0: + resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} + engines: {node: '>=4'} + + fast-content-type-parse@1.0.0: + resolution: {integrity: sha512-Xbc4XcysUXcsP5aHUU7Nq3OwvHq97C+WnbkeIefpeYLX+ryzFJlU6OStFJhs6Ol0LkUGpcK+wL0JwfM+FCU5IA==} + + fast-decode-uri-component@1.0.1: + resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-diff@1.2.0: + resolution: {integrity: sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==} + + fast-glob@3.2.12: + resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-json-stringify@5.8.0: + resolution: {integrity: sha512-VVwK8CFMSALIvt14U8AvrSzQAwN/0vaVRiFFUVlpnXSnDGrSkOAO5MtzyN8oQNjLd5AqTW5OZRgyjoNuAuR3jQ==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fast-querystring@1.1.2: + resolution: {integrity: sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==} + + fast-redact@3.3.0: + resolution: {integrity: sha512-6T5V1QK1u4oF+ATxs1lWUmlEk6P2T9HqJG3e2DnHOdVgZy2rFJBoEnrIedcTXlkAHU/zKC+7KETJ+KGGKwxgMQ==} + engines: {node: '>=6'} + + fast-uri@2.2.0: + resolution: {integrity: sha512-cIusKBIt/R/oI6z/1nyfe2FvGKVTohVRfvkOhvx0nCEW+xf5NoCXjAHcWp93uOUBchzYcsvPlrapAdX1uW+YGg==} + + fastify-plugin@4.5.1: + resolution: {integrity: sha512-stRHYGeuqpEZTL1Ef0Ovr2ltazUT9g844X5z/zEBFLG8RYlpDiOCIG+ATvYEp+/zmc7sN29mcIMp8gvYplYPIQ==} + + fastify@4.21.0: + resolution: {integrity: sha512-tsu4bcwE4HetxqW8prA5fbC9bKHMYDp7jGEDWyzK1l90a3uOaLoIcQbdGcWeODNLVJviQnzh1wvIjTZE3MJFEg==} + + fastq@1.15.0: + resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} + + fb-watchman@2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + + figures@1.7.0: + resolution: {integrity: sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ==} + engines: {node: '>=0.10.0'} + + figures@2.0.0: + resolution: {integrity: sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==} + engines: {node: '>=4'} + + figures@3.2.0: + resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} + engines: {node: '>=8'} + + file-entry-cache@5.0.1: + resolution: {integrity: sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==} + engines: {node: '>=4'} + + file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + + file-uri-to-path@1.0.0: + resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} + + filelist@1.0.4: + resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} + + fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + + find-my-way@7.6.2: + resolution: {integrity: sha512-0OjHn1b1nCX3eVbm9ByeEHiscPYiHLfhei1wOUU9qffQkk98wE0Lo8VrVYfSGMgnSnDh86DxedduAnBf4nwUEw==} + engines: {node: '>=14'} + + find-up@2.1.0: + resolution: {integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==} + engines: {node: '>=4'} + + find-up@3.0.0: + resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} + engines: {node: '>=6'} + + find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + find-yarn-workspace-root2@1.2.16: + resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} + + findout@3.0.2: + resolution: {integrity: sha512-eatRX+s8jm8ml/S9Y5NBBjR4W8i7IeEmyddB3Lidak/nPZNfDxGzLEIaMKgeNj5/LHA1i0dC4Gwsb13H1bx+AA==} + engines: {node: '>=7.6', npm: '>=4'} + + flat-cache@2.0.1: + resolution: {integrity: sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==} + engines: {node: '>=4'} + + flat-cache@3.0.4: + resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} + engines: {node: ^10.12.0 || >=12.0.0} + + flat@5.0.2: + resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} + hasBin: true + + flatted@2.0.2: + resolution: {integrity: sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==} + + flatted@3.2.7: + resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} + + follow-redirects@1.15.2: + resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + forge-std@https://codeload.github.com/foundry-rs/forge-std/tar.gz/74cfb77e308dd188d2f58864aaf44963ae6b88b1: + resolution: {tarball: https://codeload.github.com/foundry-rs/forge-std/tar.gz/74cfb77e308dd188d2f58864aaf44963ae6b88b1} + version: 1.6.0 + + form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} + + forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + + fp-ts@1.19.3: + resolution: {integrity: sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==} + + fraction.js@4.2.0: + resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==} + + fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + + from2@2.3.0: + resolution: {integrity: sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==} + + fs-constants@1.0.0: + resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + + fs-extra@0.30.0: + resolution: {integrity: sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA==} + + fs-extra@7.0.1: + resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} + engines: {node: '>=6 <7 || >=8'} + + fs-extra@8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} + + fs-minipass@2.1.0: + resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} + engines: {node: '>= 8'} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.1: + resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} + + function.prototype.name@1.1.5: + resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} + engines: {node: '>= 0.4'} + + functional-red-black-tree@1.0.1: + resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==} + + functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + + gauge@4.0.4: + resolution: {integrity: sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-func-name@2.0.2: + resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} + + get-intrinsic@1.1.3: + resolution: {integrity: sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==} + + get-own-enumerable-property-symbols@3.0.2: + resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==} + + get-package-type@0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + + get-port@6.1.2: + resolution: {integrity: sha512-BrGGraKm2uPqurfGVj/z97/zv8dPleC6x9JBNRTrDNtCkkRF4rPwrQXFgL7+I+q8QSdU4ntLQX2D7KIxSy8nGw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + get-stream@5.2.0: + resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} + engines: {node: '>=8'} + + get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + + get-symbol-description@1.0.0: + resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} + engines: {node: '>= 0.4'} + + get-tsconfig@4.5.0: + resolution: {integrity: sha512-MjhiaIWCJ1sAU4pIQ5i5OfOuHHxVo1oYeNsWTON7jxYkod8pHocXeh+SSbmu5OZZZK73B6cbJ2XADzXehLyovQ==} + + gitconfig@2.0.8: + resolution: {integrity: sha512-qOB1QswIHFNKAOPN0pEu7U1iyajLBv3Tz5X630UlkAtKM904I4dO7XIjH84wmR2SUVAgaVR99UC9U4ABJujAJQ==} + engines: {node: '>=6', npm: '>=3'} + + github-from-package@0.0.0: + resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob@7.1.6: + resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} + + glob@7.2.0: + resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==} + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + + glob@8.0.3: + resolution: {integrity: sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==} + engines: {node: '>=12'} + + glob@8.1.0: + resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} + engines: {node: '>=12'} + + globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + globals@13.20.0: + resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} + engines: {node: '>=8'} + + globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + + google-protobuf@3.21.2: + resolution: {integrity: sha512-3MSOYFO5U9mPGikIYCzK0SaThypfGgS6bHqrUGXG3DPHCrb+txNqeEcns1W0lkGfk0rCyNXm7xB9rMxnCiZOoA==} + + gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + grapheme-splitter@1.0.4: + resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} + + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + handlebars@4.7.7: + resolution: {integrity: sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==} + engines: {node: '>=0.4.7'} + hasBin: true + + hard-rejection@2.1.0: + resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} + engines: {node: '>=6'} + + hardhat@2.22.0: + resolution: {integrity: sha512-t1J+ThxNYANL6ub6yM5XC84RY38vhfG7ODBtVRNQFQozdALo3qZUjxDzyGQU0U0eswe6orK49hq9UpdB7nPXNQ==} + hasBin: true + peerDependencies: + ts-node: '*' + typescript: '*' + peerDependenciesMeta: + ts-node: + optional: true + typescript: + optional: true + + has-ansi@2.0.0: + resolution: {integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==} + engines: {node: '>=0.10.0'} + + has-bigints@1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + + has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-property-descriptors@1.0.0: + resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} + + has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.0: + resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} + engines: {node: '>= 0.4'} + + has-unicode@2.0.1: + resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} + + has@1.0.3: + resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} + engines: {node: '>= 0.4.0'} + + hasbin@1.2.3: + resolution: {integrity: sha512-CCd8e/w2w28G8DyZvKgiHnQJ/5XXDz6qiUHnthvtag/6T5acUeN5lqq+HMoBqcmgWueWDhiCplrw0Kb1zDACRg==} + engines: {node: '>=0.10'} + + hash-base@3.1.0: + resolution: {integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==} + engines: {node: '>=4'} + + hash.js@1.1.7: + resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} + + he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + + hmac-drbg@1.0.1: + resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} + + hosted-git-info@2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + + html-encoding-sniffer@3.0.0: + resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} + engines: {node: '>=12'} + + html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + + http-assert@1.5.0: + resolution: {integrity: sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==} + engines: {node: '>= 0.8'} + + http-cache-semantics@4.1.1: + resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} + + http-errors@1.8.1: + resolution: {integrity: sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==} + engines: {node: '>= 0.6'} + + http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + + http-proxy-agent@5.0.0: + resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} + engines: {node: '>= 6'} + + http-proxy@1.18.1: + resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} + engines: {node: '>=8.0.0'} + + https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + + human-id@1.0.2: + resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} + + human-signals@1.1.1: + resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==} + engines: {node: '>=8.12.0'} + + human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + + human-signals@4.3.1: + resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} + engines: {node: '>=14.18.0'} + + humanize-ms@1.2.1: + resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} + + husky@6.0.0: + resolution: {integrity: sha512-SQS2gDTB7tBN486QSoKPKQItZw97BMOd+Kdb6ghfpBc0yXyzrddI0oDV5MkDAbuB4X2mO3/nj60TRMcYxwzZeQ==} + hasBin: true + + iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + iftype@3.0.2: + resolution: {integrity: sha512-vA/NSyCG3E7XXWC1hmbEDj8WvsduSzLblmj4m2Idywx8YC6CKqGTYzrnoxbMrC+qBcHz85P7uwBwYEY2rX1jvQ==} + engines: {node: '>=4', npm: '>=2'} + + iftype@4.0.9: + resolution: {integrity: sha512-01Klo+04dkDzY193D1GVfOdQzmpqaYFJTAlZKRztkT/BOaU7sSnvxGimSln+7DMqLUP4tpDTNFgxqVPLYZVypA==} + engines: {node: '>=8', npm: '>=5'} + + ignore@4.0.6: + resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} + engines: {node: '>= 4'} + + ignore@5.2.4: + resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} + engines: {node: '>= 4'} + + immutable@4.3.5: + resolution: {integrity: sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==} + + import-fresh@2.0.0: + resolution: {integrity: sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==} + engines: {node: '>=4'} + + import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + + import-local@3.1.0: + resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} + engines: {node: '>=8'} + hasBin: true + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + indent-string@3.2.0: + resolution: {integrity: sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ==} + engines: {node: '>=4'} + + indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + + infer-owner@1.0.4: + resolution: {integrity: sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + + inherits@2.0.3: + resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + + inquirer@6.5.2: + resolution: {integrity: sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==} + engines: {node: '>=6.0.0'} + + inquirer@7.3.3: + resolution: {integrity: sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==} + engines: {node: '>=8.0.0'} + + internal-slot@1.0.3: + resolution: {integrity: sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==} + engines: {node: '>= 0.4'} + + into-stream@6.0.0: + resolution: {integrity: sha512-XHbaOAvP+uFKUFsOgoNPRjLkwB+I22JFPFe5OjTkQ0nwgj6+pSjb4NmB6VMxaPshLiOf+zcpOCBQuLwC1KHhZA==} + engines: {node: '>=10'} + + io-ts@1.10.4: + resolution: {integrity: sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g==} + + ip@2.0.0: + resolution: {integrity: sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==} + + ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-bigint@1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-boolean-object@1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} + + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + is-ci@3.0.1: + resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} + hasBin: true + + is-core-module@2.12.0: + resolution: {integrity: sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==} + + is-date-object@1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + + is-directory@0.3.1: + resolution: {integrity: sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==} + engines: {node: '>=0.10.0'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-fullwidth-code-point@1.0.0: + resolution: {integrity: sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==} + engines: {node: '>=0.10.0'} + + is-fullwidth-code-point@2.0.0: + resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} + engines: {node: '>=4'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-generator-fn@2.1.0: + resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} + engines: {node: '>=6'} + + is-generator-function@1.0.10: + resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + engines: {node: '>= 0.4'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-hex-prefixed@1.0.0: + resolution: {integrity: sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==} + engines: {node: '>=6.5.0', npm: '>=3'} + + is-lambda@1.0.1: + resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} + + is-negative-zero@2.0.2: + resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} + engines: {node: '>= 0.4'} + + is-number-object@1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-obj@1.0.1: + resolution: {integrity: sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==} + engines: {node: '>=0.10.0'} + + is-observable@1.1.0: + resolution: {integrity: sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==} + engines: {node: '>=4'} + + is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + + is-plain-obj@1.1.0: + resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} + engines: {node: '>=0.10.0'} + + is-plain-obj@2.1.0: + resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} + engines: {node: '>=8'} + + is-potential-custom-element-name@1.0.1: + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + + is-promise@2.2.2: + resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} + + is-regex@1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + + is-regexp@1.0.0: + resolution: {integrity: sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==} + engines: {node: '>=0.10.0'} + + is-shared-array-buffer@1.0.2: + resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} + + is-stream@1.1.0: + resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} + engines: {node: '>=0.10.0'} + + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + + is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + is-string@1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + + is-subdir@1.2.0: + resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} + engines: {node: '>=4'} + + is-symbol@1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} + + is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + + is-utf8@0.2.1: + resolution: {integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==} + + is-weakref@1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + + is-what@4.1.15: + resolution: {integrity: sha512-uKua1wfy3Yt+YqsD6mTUEa2zSi3G1oPlqTflgaPJ7z63vUGN5pxFpnQfeSLMFnJDEsdvOtkp1rUWkYjB4YfhgA==} + engines: {node: '>=12.13'} + + is-windows@1.0.2: + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} + engines: {node: '>=0.10.0'} + + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + isows@1.0.3: + resolution: {integrity: sha512-2cKei4vlmg2cxEjm3wVSqn8pcoRF/LX/wpifuuNquFO4SQmPwarClT+SUCA2lt+l581tTeZIPIZuIDo2jWN1fg==} + peerDependencies: + ws: '*' + + istanbul-lib-coverage@3.2.0: + resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} + engines: {node: '>=8'} + + istanbul-lib-instrument@5.2.1: + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} + engines: {node: '>=8'} + + istanbul-lib-report@3.0.0: + resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} + engines: {node: '>=8'} + + istanbul-lib-source-maps@4.0.1: + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + engines: {node: '>=10'} + + istanbul-reports@3.1.5: + resolution: {integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==} + engines: {node: '>=8'} + + jake@10.8.5: + resolution: {integrity: sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==} + engines: {node: '>=10'} + hasBin: true + + jest-changed-files@29.5.0: + resolution: {integrity: sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-circus@29.5.0: + resolution: {integrity: sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-cli@29.5.0: + resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + jest-config@29.5.0: + resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true + + jest-diff@27.5.1: + resolution: {integrity: sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-diff@29.5.0: + resolution: {integrity: sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-docblock@29.4.3: + resolution: {integrity: sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-each@29.5.0: + resolution: {integrity: sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-environment-node@29.5.0: + resolution: {integrity: sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-get-type@27.5.1: + resolution: {integrity: sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-get-type@29.4.3: + resolution: {integrity: sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-haste-map@29.5.0: + resolution: {integrity: sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-leak-detector@29.5.0: + resolution: {integrity: sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-matcher-utils@27.5.1: + resolution: {integrity: sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-matcher-utils@29.5.0: + resolution: {integrity: sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-message-util@29.5.0: + resolution: {integrity: sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-mock@29.5.0: + resolution: {integrity: sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-pnp-resolver@1.2.3: + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} + engines: {node: '>=6'} + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true + + jest-regex-util@29.4.3: + resolution: {integrity: sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-resolve-dependencies@29.5.0: + resolution: {integrity: sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-resolve@29.5.0: + resolution: {integrity: sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-runner@29.5.0: + resolution: {integrity: sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-runtime@29.5.0: + resolution: {integrity: sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-snapshot@29.5.0: + resolution: {integrity: sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-util@29.5.0: + resolution: {integrity: sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-validate@29.5.0: + resolution: {integrity: sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-watcher@29.5.0: + resolution: {integrity: sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-worker@29.5.0: + resolution: {integrity: sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest@29.5.0: + resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + jiti@1.18.2: + resolution: {integrity: sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==} + hasBin: true + + joycon@3.1.1: + resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} + engines: {node: '>=10'} + + js-base64@3.7.5: + resolution: {integrity: sha512-3MEt5DTINKqfScXKfJFrRbxkrnk2AxPWGBL/ycjz4dK8iqiSJ06UxD8jh8xuh6p10TX4t2+7FsBYVxxQbMg+qA==} + + js-sha3@0.8.0: + resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + jsdom@22.1.0: + resolution: {integrity: sha512-/9AVW7xNbsBv6GfWho4TTNjEo9fe6Zhf9O7s0Fhhr3u+awPwAJMKwAMXnkk5vBxflqLW9hTHX/0cs+P3gW+cQw==} + engines: {node: '>=16'} + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + + jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + + json-parse-better-errors@1.0.2: + resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsonc-parser@3.2.0: + resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} + + jsonfile@2.4.0: + resolution: {integrity: sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==} + + jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + + jsonparse@1.3.1: + resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} + engines: {'0': node >= 0.2.0} + + jsonstream-next@3.0.0: + resolution: {integrity: sha512-aAi6oPhdt7BKyQn1SrIIGZBt0ukKuOUE1qV6kJ3GgioSOYzsRc8z9Hfr1BVmacA/jLe9nARfmgMGgn68BqIAgg==} + engines: {node: '>=10'} + hasBin: true + + jsx-ast-utils@3.3.3: + resolution: {integrity: sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==} + engines: {node: '>=4.0'} + + keccak-wasm@0.10.3: + resolution: {integrity: sha512-HMbeV9BX+hGmrPk5C1PdZBPAGIAVyGzKywQt4OnU9cG+7sI1/moZmH7DXRd3XQBhR6z04LdMXkA15roVINmMsA==} + peerDependencies: + buffer-lite: ^1.0.0 + + keccak@3.0.4: + resolution: {integrity: sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==} + engines: {node: '>=10.0.0'} + + keygrip@1.1.0: + resolution: {integrity: sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==} + engines: {node: '>= 0.6'} + + kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + + klaw@1.3.1: + resolution: {integrity: sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==} + + kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + + kleur@4.1.5: + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} + engines: {node: '>=6'} + + koa-compose@4.1.0: + resolution: {integrity: sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==} + + koa-convert@2.0.0: + resolution: {integrity: sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA==} + engines: {node: '>= 10'} + + koa@2.14.2: + resolution: {integrity: sha512-VFI2bpJaodz6P7x2uyLiX6RLYpZmOJqNmoCst/Yyd7hQlszyPwG/I9CQJ63nOtKSxpt5M7NH67V6nJL2BwCl7g==} + engines: {node: ^4.8.4 || ^6.10.1 || ^7.10.1 || >= 8.1.4} + + kysely@0.26.3: + resolution: {integrity: sha512-yWSgGi9bY13b/W06DD2OCDDHQmq1kwTGYlQ4wpZkMOJqMGCstVCFIvxCCVG4KfY1/3G0MhDAcZsip/Lw8/vJWw==} + engines: {node: '>=14.0.0'} + + leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + + levn@0.3.0: + resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} + engines: {node: '>= 0.8.0'} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + license.js@3.1.2: + resolution: {integrity: sha512-anbqciJ9HfQVMRicsegiZOJ6nrP93ly24alImDOO7KndNLs3Um861fSEpXpWqGPMOv7PfZTJZL1p4cPq+Au4BQ==} + engines: {node: '>=8.0.0'} + + light-my-request@5.10.0: + resolution: {integrity: sha512-ZU2D9GmAcOUculTTdH9/zryej6n8TzT+fNGdNtm6SDp5MMMpHrJJkvAdE3c6d8d2chE9i+a//dS9CWZtisknqA==} + + lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + lint-staged@10.0.0: + resolution: {integrity: sha512-/MrZOLMnljjMHakxlRd1Z5Kr8wWWlrWFasye7HaTv5tx56icwzT/STRty8flMKsyzBGTfTa9QszNVPsDS/yOug==} + hasBin: true + + listr-silent-renderer@1.1.1: + resolution: {integrity: sha512-L26cIFm7/oZeSNVhWB6faeorXhMg4HNlb/dS/7jHhr708jxlXrtrBWo4YUxZQkc6dGoxEAe6J/D3juTRBUzjtA==} + engines: {node: '>=4'} + + listr-update-renderer@0.5.0: + resolution: {integrity: sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA==} + engines: {node: '>=6'} + peerDependencies: + listr: ^0.14.2 + + listr-verbose-renderer@0.5.0: + resolution: {integrity: sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw==} + engines: {node: '>=4'} + + listr@0.14.3: + resolution: {integrity: sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA==} + engines: {node: '>=6'} + + load-tsconfig@0.2.5: + resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + load-yaml-file@0.2.0: + resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} + engines: {node: '>=6'} + + local-pkg@0.4.3: + resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} + engines: {node: '>=14'} + + locate-path@2.0.0: + resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==} + engines: {node: '>=4'} + + locate-path@3.0.0: + resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} + engines: {node: '>=6'} + + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash.get@4.4.2: + resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} + + lodash.memoize@4.1.2: + resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + lodash.sortby@4.7.0: + resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} + + lodash.startcase@4.4.0: + resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} + + lodash.truncate@4.4.2: + resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} + + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + log-symbols@1.0.2: + resolution: {integrity: sha512-mmPrW0Fh2fxOzdBbFv4g1m6pR72haFLPJ2G5SJEELf1y+iaQrDG6cWCPjy54RHYbZAt7X+ls690Kw62AdWXBzQ==} + engines: {node: '>=0.10.0'} + + log-symbols@3.0.0: + resolution: {integrity: sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==} + engines: {node: '>=8'} + + log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + + log-update@2.3.0: + resolution: {integrity: sha512-vlP11XfFGyeNQlmEn9tJ66rEW1coA/79m5z6BCkudjbAGE83uhAcGYrBFwfs3AdLiLzGRusRPAbSPK9xZteCmg==} + engines: {node: '>=4'} + + long@4.0.0: + resolution: {integrity: sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==} + + long@5.2.1: + resolution: {integrity: sha512-GKSNGeNAtw8IryjjkhZxuKB3JzlcLTwjtiQCHKvqQet81I93kXslhDQruGI/QsddO83mcDToBVy7GqGS/zYf/A==} + + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + + loupe@2.3.6: + resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==} + deprecated: Please upgrade to 2.3.7 which fixes GHSA-4q6p-r6v2-jvc5 + + lru-cache@4.1.5: + resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + + lru-cache@7.18.3: + resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} + engines: {node: '>=12'} + + lru-queue@0.1.0: + resolution: {integrity: sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==} + + lru_map@0.3.3: + resolution: {integrity: sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==} + + magic-string@0.30.5: + resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} + engines: {node: '>=12'} + + make-dir@3.1.0: + resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} + engines: {node: '>=8'} + + make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + + make-fetch-happen@10.2.1: + resolution: {integrity: sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + makeerror@1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + + map-obj@1.0.1: + resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} + engines: {node: '>=0.10.0'} + + map-obj@4.3.0: + resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} + engines: {node: '>=8'} + + md5.js@1.3.5: + resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} + + media-typer@0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} + + memoizee@0.4.15: + resolution: {integrity: sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==} + + memorystream@0.3.1: + resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} + engines: {node: '>= 0.10.0'} + + meow@6.1.1: + resolution: {integrity: sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==} + engines: {node: '>=8'} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + methods@1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} + + micro-ftch@0.3.1: + resolution: {integrity: sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==} + + micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mimic-fn@1.2.0: + resolution: {integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==} + engines: {node: '>=4'} + + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + + mimic-response@3.1.0: + resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} + engines: {node: '>=10'} + + min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + + minimalistic-assert@1.0.1: + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + + minimalistic-crypto-utils@1.0.1: + resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@5.0.1: + resolution: {integrity: sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==} + engines: {node: '>=10'} + + minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + + minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} + + minimist-options@4.1.0: + resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} + engines: {node: '>= 6'} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + minipass-collect@1.0.2: + resolution: {integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==} + engines: {node: '>= 8'} + + minipass-fetch@2.1.2: + resolution: {integrity: sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + minipass-flush@1.0.5: + resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} + engines: {node: '>= 8'} + + minipass-pipeline@1.2.4: + resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==} + engines: {node: '>=8'} + + minipass-sized@1.0.3: + resolution: {integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==} + engines: {node: '>=8'} + + minipass@3.3.6: + resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} + engines: {node: '>=8'} + + minipass@5.0.0: + resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} + engines: {node: '>=8'} + + minipass@7.0.4: + resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} + engines: {node: '>=16 || 14 >=14.17'} + + minizlib@2.1.2: + resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} + engines: {node: '>= 8'} + + mixme@0.5.9: + resolution: {integrity: sha512-VC5fg6ySUscaWUpI4gxCBTQMH2RdUpNrk+MsbpCYtIvf9SBJdiUey4qE7BXviJsJR4nDQxCZ+3yaYNW3guz/Pw==} + engines: {node: '>= 8.0.0'} + + mkdirp-classic@0.5.3: + resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} + + mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + + mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + + mlly@1.5.0: + resolution: {integrity: sha512-NPVQvAY1xr1QoVeG0cy8yUYC7FQcOx6evl/RjT1wL5FvzPnzOysoqB/jmx/DhssT2dYa8nxECLAaFI/+gVLhDQ==} + + mnemonist@0.38.5: + resolution: {integrity: sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==} + + mnemonist@0.39.5: + resolution: {integrity: sha512-FPUtkhtJ0efmEFGpU14x7jGbTB+s18LrzRL2KgoWz9YvcY3cPomz8tih01GbHwnGk/OmkOKfqd/RAQoc8Lm7DQ==} + + mobx@6.9.0: + resolution: {integrity: sha512-HdKewQEREEJgsWnErClfbFoVebze6rGazxFLU/XUyrII8dORfVszN1V0BMRnQSzcgsNNtkX8DHj3nC6cdWE9YQ==} + + mocha@10.3.0: + resolution: {integrity: sha512-uF2XJs+7xSLsrmIvn37i/wnc91nw7XjOQB8ccyx5aEgdnohr7n+rEiZP23WkCYHjilR6+EboEnbq/ZQDz4LSbg==} + engines: {node: '>= 14.0.0'} + hasBin: true + + ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + mute-stream@0.0.7: + resolution: {integrity: sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==} + + mute-stream@0.0.8: + resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} + + mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + + nanoid@3.3.6: + resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + napi-build-utils@1.0.2: + resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + + neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + + next-tick@1.1.0: + resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} + + nice-grpc-common@2.0.2: + resolution: {integrity: sha512-7RNWbls5kAL1QVUOXvBsv1uO0wPQK3lHv+cY1gwkTzirnG1Nop4cBJZubpgziNbaVc/bl9QJcyvsf/NQxa3rjQ==} + + nice-grpc-web@2.0.1: + resolution: {integrity: sha512-r8jy0TJY6ZO9qWtujiqmtRkqgItAChoJxJyYv+CHacP9G5kRIH03M+sQqtieXNNDUAKfFT/z5yroSy1cPFX0sA==} + + nice-try@1.0.5: + resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} + + node-abi@3.45.0: + resolution: {integrity: sha512-iwXuFrMAcFVi/ZoZiqq8BzAdsLw9kxDfTC0HMyjXfSL/6CSDAGD5UmR7azrAgWV1zKYq7dUUMj4owusBWKLsiQ==} + engines: {node: '>=10'} + + node-abi@3.52.0: + resolution: {integrity: sha512-JJ98b02z16ILv7859irtXn4oUaFWADtvkzy2c0IAatNVX2Mc9Yoh8z6hZInn3QwvMEYhHuQloYi+TTQy67SIdQ==} + engines: {node: '>=10'} + + node-addon-api@2.0.2: + resolution: {integrity: sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==} + + node-fetch@2.6.9: + resolution: {integrity: sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + + node-gyp-build@4.8.0: + resolution: {integrity: sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==} + hasBin: true + + node-gyp@9.4.1: + resolution: {integrity: sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ==} + engines: {node: ^12.13 || ^14.13 || >=16} + hasBin: true + + node-int64@0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + + node-releases@2.0.10: + resolution: {integrity: sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==} + + nopt@6.0.0: + resolution: {integrity: sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + hasBin: true + + normalize-package-data@2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + + npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + + npm-run-path@5.1.0: + resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + npmlog@6.0.2: + resolution: {integrity: sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + number-is-nan@1.0.1: + resolution: {integrity: sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==} + engines: {node: '>=0.10.0'} + + number-to-bn@1.7.0: + resolution: {integrity: sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==} + engines: {node: '>=6.5.0', npm: '>=3'} + + nwsapi@2.2.7: + resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-hash@1.3.1: + resolution: {integrity: sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==} + engines: {node: '>= 0.10.0'} + + object-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} + + object-inspect@1.12.2: + resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==} + + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + object.assign@4.1.4: + resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} + engines: {node: '>= 0.4'} + + object.entries@1.1.6: + resolution: {integrity: sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==} + engines: {node: '>= 0.4'} + + object.fromentries@2.0.6: + resolution: {integrity: sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==} + engines: {node: '>= 0.4'} + + object.hasown@1.1.2: + resolution: {integrity: sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==} + + object.values@1.1.6: + resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==} + engines: {node: '>= 0.4'} + + objnest@5.1.1: + resolution: {integrity: sha512-C4fjNlHhUQbHiiFpgzvZse3/WUHq356Da3P8NZazg9JpPHFiQP2Y9lmYvpLU06midap0YpNz/MuA8GGSL8G0YQ==} + engines: {node: '>=8', npm: '>=5'} + + obliterator@2.0.4: + resolution: {integrity: sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==} + + on-exit-leak-free@2.1.0: + resolution: {integrity: sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w==} + + on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + onetime@2.0.1: + resolution: {integrity: sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==} + engines: {node: '>=4'} + + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + + onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + + only@0.0.2: + resolution: {integrity: sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==} + + openurl@1.1.1: + resolution: {integrity: sha512-d/gTkTb1i1GKz5k3XE3XFV/PxQ1k45zDqGP2OA7YhgsaLoqm6qRvARAZOFer1fcXritWlGBRCu/UgeS4HAnXAA==} + + optionator@0.8.3: + resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} + engines: {node: '>= 0.8.0'} + + optionator@0.9.3: + resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} + engines: {node: '>= 0.8.0'} + + ordinal@1.0.3: + resolution: {integrity: sha512-cMddMgb2QElm8G7vdaa02jhUNbTSrhsgAGUz1OokD83uJTwSUn+nKoNoKVVaRa08yF6sgfO7Maou1+bgLd9rdQ==} + + os-tmpdir@1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} + + outdent@0.5.0: + resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} + + p-filter@2.1.0: + resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} + engines: {node: '>=8'} + + p-finally@1.0.0: + resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} + engines: {node: '>=4'} + + p-finally@2.0.1: + resolution: {integrity: sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==} + engines: {node: '>=8'} + + p-is-promise@3.0.0: + resolution: {integrity: sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==} + engines: {node: '>=8'} + + p-limit@1.3.0: + resolution: {integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==} + engines: {node: '>=4'} + + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-limit@4.0.0: + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + p-locate@2.0.0: + resolution: {integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==} + engines: {node: '>=4'} + + p-locate@3.0.0: + resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} + engines: {node: '>=6'} + + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + p-map@2.1.0: + resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} + engines: {node: '>=6'} + + p-map@4.0.0: + resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} + engines: {node: '>=10'} + + p-queue@6.6.2: + resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==} + engines: {node: '>=8'} + + p-retry@4.6.2: + resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} + engines: {node: '>=8'} + + p-timeout@3.2.0: + resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} + engines: {node: '>=8'} + + p-try@1.0.0: + resolution: {integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==} + engines: {node: '>=4'} + + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-json@4.0.0: + resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} + engines: {node: '>=4'} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + parse5@7.1.2: + resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} + + parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + + path-exists@3.0.0: + resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} + engines: {node: '>=4'} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-is-inside@1.0.2: + resolution: {integrity: sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==} + + path-key@2.0.1: + resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} + engines: {node: '>=4'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-to-regexp@6.2.1: + resolution: {integrity: sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + path@0.12.7: + resolution: {integrity: sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==} + + pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + + pathval@1.1.1: + resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + + pbkdf2@3.1.2: + resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==} + engines: {node: '>=0.12'} + + peek-stream@1.1.3: + resolution: {integrity: sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA==} + + picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + + pify@3.0.0: + resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} + engines: {node: '>=4'} + + pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + + pino-abstract-transport@1.0.0: + resolution: {integrity: sha512-c7vo5OpW4wIS42hUVcT5REsL8ZljsUfBjqV/e2sFxmFEFZiq1XLUp5EYLtuDH6PEHq9W1egWqRbnLUP5FuZmOA==} + + pino-std-serializers@6.2.2: + resolution: {integrity: sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==} + + pino@8.14.2: + resolution: {integrity: sha512-zKu9aWeSWTy1JgvxIpZveJKKsAr4+6uNMZ0Vf0KRwzl/UNZA3XjHiIl/0WwqLMkDwuHuDkT5xAgPA2jpKq4whA==} + hasBin: true + + pirates@4.0.5: + resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} + engines: {node: '>= 6'} + + pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + + pkg-types@1.0.3: + resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} + + pkg-up@3.1.0: + resolution: {integrity: sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==} + engines: {node: '>=8'} + + please-upgrade-node@3.2.0: + resolution: {integrity: sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==} + + postcss-import@15.1.0: + resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} + engines: {node: '>=14.0.0'} + peerDependencies: + postcss: ^8.0.0 + + postcss-js@4.0.1: + resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.4.21 + + postcss-load-config@3.1.4: + resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} + engines: {node: '>= 10'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + + postcss-load-config@4.0.1: + resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==} + engines: {node: '>= 14'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + + postcss-nested@6.0.1: + resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + + postcss-selector-parser@6.0.11: + resolution: {integrity: sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==} + engines: {node: '>=4'} + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + postcss@8.4.23: + resolution: {integrity: sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==} + engines: {node: ^10 || ^12 || >=14} + + postgres@3.3.5: + resolution: {integrity: sha512-+JD93VELV9gHkqpV5gdL5/70HdGtEw4/XE1S4BC8f1mcPmdib3K5XsKVbnR1XcAyC41zOnifJ+9YRKxdIsXiUw==} + + prebuild-install@7.1.1: + resolution: {integrity: sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==} + engines: {node: '>=10'} + hasBin: true + + preferred-pm@3.0.3: + resolution: {integrity: sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ==} + engines: {node: '>=10'} + + prelude-ls@1.1.2: + resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} + engines: {node: '>= 0.8.0'} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + prettier-plugin-solidity@1.3.1: + resolution: {integrity: sha512-MN4OP5I2gHAzHZG1wcuJl0FsLS3c4Cc5494bbg+6oQWBPuEamjwDvmGfFMZ6NFzsh3Efd9UUxeT7ImgjNH4ozA==} + engines: {node: '>=16'} + peerDependencies: + prettier: '>=2.3.0' + + prettier@1.19.1: + resolution: {integrity: sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==} + engines: {node: '>=4'} + hasBin: true + + prettier@2.8.4: + resolution: {integrity: sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==} + engines: {node: '>=10.13.0'} + hasBin: true + + prettier@3.2.5: + resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} + engines: {node: '>=14'} + hasBin: true + + pretty-format@27.5.1: + resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + pretty-format@29.5.0: + resolution: {integrity: sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + + process-warning@2.2.0: + resolution: {integrity: sha512-/1WZ8+VQjR6avWOgHeEPd7SDQmFQ1B5mC1eRXsCm5TarlNmx/wCsa5GEaxGm05BORRtyG/Ex/3xq3TuRvq57qg==} + + process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + + progress@2.0.3: + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} + + promise-inflight@1.0.1: + resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} + peerDependencies: + bluebird: '*' + peerDependenciesMeta: + bluebird: + optional: true + + promise-retry@2.0.1: + resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} + engines: {node: '>=10'} + + prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + + prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + + protobufjs@6.11.3: + resolution: {integrity: sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg==} + hasBin: true + + protobufjs@7.2.3: + resolution: {integrity: sha512-TtpvOqwB5Gdz/PQmOjgsrGH1nHjAQVCN7JG4A6r1sXRWESL5rNMAiRcBQlCAdKxZcAbstExQePYG8xof/JVRgg==} + engines: {node: '>=12.0.0'} + + proxy-addr@2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} + + proxy-deep@3.1.1: + resolution: {integrity: sha512-kppbvLUNJ4IOMZds9/4gz/rtT5OFiesy3XosLsgMKlF3vb6GA5Y3ptyDlzKLcOcUBW+zaY+RiMINTsgE+O6e+Q==} + + pseudomap@1.0.2: + resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} + + psl@1.9.0: + resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} + + pump@3.0.0: + resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} + + pumpify@2.0.1: + resolution: {integrity: sha512-m7KOje7jZxrmutanlkS1daj1dS6z6BgslzOXmcSEpIlCxM3VJH7lG5QLeck/6hgF6F4crFf01UtQmNsJfweTAw==} + + punycode@2.1.1: + resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} + engines: {node: '>=6'} + + punycode@2.3.0: + resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} + engines: {node: '>=6'} + + pure-rand@6.0.1: + resolution: {integrity: sha512-t+x1zEHDjBwkDGY5v5ApnZ/utcd4XYDiJsaQQoptTXgUXX95sDg1elCdJghzicm7n2mbCBJ3uYWr6M22SO19rg==} + + querystringify@2.2.0: + resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + quick-format-unescaped@4.0.4: + resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} + + quick-lru@4.0.1: + resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} + engines: {node: '>=8'} + + randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + + raw-body@2.5.2: + resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} + engines: {node: '>= 0.8'} + + rc@1.2.8: + resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} + hasBin: true + + react-dom@18.2.0: + resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} + peerDependencies: + react: ^18.2.0 + + react-error-boundary@3.1.4: + resolution: {integrity: sha512-uM9uPzZJTF6wRQORmSrvOIgt4lJ9MC1sNgEOj2XGsDTRE4kmpWxg7ENK9EWNKJRMAOY9z0MuF4yIfl6gp4sotA==} + engines: {node: '>=10', npm: '>=6'} + peerDependencies: + react: '>=16.13.1' + + react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + + react-is@17.0.2: + resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + + react-is@18.2.0: + resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + + react-refresh@0.14.0: + resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==} + engines: {node: '>=0.10.0'} + + react-router-dom@6.11.0: + resolution: {integrity: sha512-Q3mK1c/CYoF++J6ZINz7EZzwlgSOZK/kc7lxIA7PhtWhKju4KfF1WHqlx0kVCIFJAWztuYVpXZeljEbds8z4Og==} + engines: {node: '>=14'} + peerDependencies: + react: '>=16.8' + react-dom: '>=16.8' + + react-router@6.11.0: + resolution: {integrity: sha512-hTm6KKNpj9SDG4syIWRjCU219O0RZY8RUPobCFt9p+PlF7nnkRgMoh2DieTKvw3F3Mw6zg565HGnSv8BuoY5oQ==} + engines: {node: '>=14'} + peerDependencies: + react: '>=16.8' + + react-shallow-renderer@16.15.0: + resolution: {integrity: sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==} + peerDependencies: + react: ^16.0.0 || ^17.0.0 || ^18.0.0 + + react-test-renderer@18.2.0: + resolution: {integrity: sha512-JWD+aQ0lh2gvh4NM3bBM42Kx+XybOxCpgYK7F8ugAlpaTSnWsX+39Z4XkOykGZAHrjwwTZT3x3KxswVWxHPUqA==} + peerDependencies: + react: ^18.2.0 + + react@18.2.0: + resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} + engines: {node: '>=0.10.0'} + + read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + + read-pkg-up@7.0.1: + resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} + engines: {node: '>=8'} + + read-pkg@5.2.0: + resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} + engines: {node: '>=8'} + + read-yaml-file@1.1.0: + resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} + engines: {node: '>=6'} + + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + + readable-stream@3.6.0: + resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} + engines: {node: '>= 6'} + + readable-stream@4.4.2: + resolution: {integrity: sha512-Lk/fICSyIhodxy1IDK2HazkeGjSmezAWX2egdtJnYhtzKEsBPJowlI6F6LPb5tqIQILrMbx22S5o3GuJavPusA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + real-require@0.2.0: + resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} + engines: {node: '>= 12.13.0'} + + redent@3.0.0: + resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} + engines: {node: '>=8'} + + regenerator-runtime@0.11.1: + resolution: {integrity: sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==} + + regenerator-runtime@0.13.11: + resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + + regexp.prototype.flags@1.4.3: + resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} + engines: {node: '>= 0.4'} + + regexpp@2.0.1: + resolution: {integrity: sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==} + engines: {node: '>=6.5.0'} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + require-main-filename@2.0.0: + resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} + + requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + + resolve-cwd@3.0.0: + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} + + resolve-from@3.0.0: + resolution: {integrity: sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==} + engines: {node: '>=4'} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + + resolve.exports@2.0.2: + resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} + engines: {node: '>=10'} + + resolve@1.17.0: + resolution: {integrity: sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==} + + resolve@1.22.2: + resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} + hasBin: true + + resolve@2.0.0-next.4: + resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==} + hasBin: true + + restore-cursor@2.0.0: + resolution: {integrity: sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==} + engines: {node: '>=4'} + + restore-cursor@3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} + + ret@0.2.2: + resolution: {integrity: sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==} + engines: {node: '>=4'} + + retry@0.12.0: + resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} + engines: {node: '>= 4'} + + retry@0.13.1: + resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} + engines: {node: '>= 4'} + + reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rfdc@1.3.0: + resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} + + rimraf@2.6.3: + resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} + hasBin: true + + rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true + + ripemd160@2.0.2: + resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} + + rlp@2.2.7: + resolution: {integrity: sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==} + hasBin: true + + rollup@3.21.8: + resolution: {integrity: sha512-SSFV2T2fWtQ/vvBip85u2Nr0GNKireabH9d7nXswBg+XSH+jbVDSYptRAEbCEsquhs503rpPA9POYAp0/Jhasw==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} + hasBin: true + + rrweb-cssom@0.6.0: + resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} + + run-async@2.4.1: + resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} + engines: {node: '>=0.12.0'} + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + rxjs@6.6.7: + resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==} + engines: {npm: '>=2.0.0'} + + rxjs@7.5.5: + resolution: {integrity: sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==} + + rxjs@7.8.1: + resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} + + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safe-regex-test@1.0.0: + resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} + + safe-regex2@2.0.0: + resolution: {integrity: sha512-PaUSFsUaNNuKwkBijoAPHAK6/eM6VirvyPWlZ7BAQy4D+hCvh4B6lIG+nPdhbFfIbP+gTGBcrdsOaUs0F+ZBOQ==} + + safe-stable-stringify@2.4.3: + resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==} + engines: {node: '>=10'} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + saxes@6.0.0: + resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} + engines: {node: '>=v12.22.7'} + + scheduler@0.23.0: + resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} + + scrypt-js@3.0.1: + resolution: {integrity: sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==} + + secp256k1@4.0.3: + resolution: {integrity: sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==} + engines: {node: '>=10.0.0'} + + secure-json-parse@2.7.0: + resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} + + semver-compare@1.0.0: + resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==} + + semver@5.7.1: + resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} + hasBin: true + + semver@6.3.0: + resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} + hasBin: true + + semver@7.5.0: + resolution: {integrity: sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==} + engines: {node: '>=10'} + hasBin: true + + semver@7.6.0: + resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} + engines: {node: '>=10'} + hasBin: true + + serialize-javascript@6.0.0: + resolution: {integrity: sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==} + + set-blocking@2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + + set-cookie-parser@2.6.0: + resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} + + setimmediate@1.0.5: + resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} + + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + + sha.js@2.4.11: + resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} + hasBin: true + + shebang-command@1.2.0: + resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} + engines: {node: '>=0.10.0'} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@1.0.0: + resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} + engines: {node: '>=0.10.0'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + shell-quote@1.8.1: + resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} + + side-channel@1.0.4: + resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + simple-concat@1.0.1: + resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} + + simple-get@4.0.1: + resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} + + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + slice-ansi@0.0.4: + resolution: {integrity: sha512-up04hB2hR92PgjpyU3y/eg91yIBILyjVY26NvvciY3EVVPjybkMszMpXQ9QAkcS3I5rtJBDLoTxxg+qvW8c7rw==} + engines: {node: '>=0.10.0'} + + slice-ansi@2.1.0: + resolution: {integrity: sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==} + engines: {node: '>=6'} + + slice-ansi@4.0.0: + resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} + engines: {node: '>=10'} + + smart-buffer@4.2.0: + resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} + engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} + + smartwrap@2.0.2: + resolution: {integrity: sha512-vCsKNQxb7PnCNd2wY1WClWifAc2lwqsG8OaswpJkVJsvMGcnEntdTCDajZCkk93Ay1U3t/9puJmb525Rg5MZBA==} + engines: {node: '>=6'} + hasBin: true + + socks-proxy-agent@7.0.0: + resolution: {integrity: sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==} + engines: {node: '>= 10'} + + socks@2.7.1: + resolution: {integrity: sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==} + engines: {node: '>= 10.13.0', npm: '>= 3.0.0'} + + solc@0.7.3: + resolution: {integrity: sha512-GAsWNAjGzIDg7VxzP6mPjdurby3IkGCjQcM8GFYZT6RyaoUZKmMU6Y7YwG+tFGhv7dwZ8rmR4iwFDrrD99JwqA==} + engines: {node: '>=8.0.0'} + hasBin: true + + solhint@3.3.7: + resolution: {integrity: sha512-NjjjVmXI3ehKkb3aNtRJWw55SUVJ8HMKKodwe0HnejA+k0d2kmhw7jvpa+MCTbcEgt8IWSwx0Hu6aCo/iYOZzQ==} + hasBin: true + + solidity-comments-extractor@0.0.8: + resolution: {integrity: sha512-htM7Vn6LhHreR+EglVMd2s+sZhcXAirB1Zlyrv5zBuTxieCvjfnRpd7iZk75m/u6NOlEyQ94C6TWbBn2cY7w8g==} + + sonic-boom@3.3.0: + resolution: {integrity: sha512-LYxp34KlZ1a2Jb8ZQgFCK3niIHzibdwtwNUWKg0qQRzsDoJ3Gfgkf8KdBTFU3SkejDEIlWwnSnpVdOZIhFMl/g==} + + source-map-js@1.0.2: + resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + engines: {node: '>=0.10.0'} + + source-map-support@0.5.13: + resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} + + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + source-map@0.8.0-beta.0: + resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} + engines: {node: '>= 8'} + + spawn-command@0.0.2: + resolution: {integrity: sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==} + + spawndamnit@2.0.0: + resolution: {integrity: sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA==} + + spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + + spdx-exceptions@2.3.0: + resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} + + spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + + spdx-license-ids@3.0.13: + resolution: {integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==} + + split2@3.2.2: + resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==} + + split2@4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} + engines: {node: '>= 10.x'} + + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + + sql.js@1.8.0: + resolution: {integrity: sha512-3HD8pSkZL+5YvYUI8nlvNILs61ALqq34xgmF+BHpqxe68yZIJ1H+sIVIODvni25+CcxHUxDyrTJUL0lE/m7afw==} + + ssri@9.0.1: + resolution: {integrity: sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} + + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + + stacktrace-parser@0.1.10: + resolution: {integrity: sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==} + engines: {node: '>=6'} + + statuses@1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} + + statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + + std-env@3.7.0: + resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} + + stream-shift@1.0.1: + resolution: {integrity: sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==} + + stream-to-array@2.3.0: + resolution: {integrity: sha512-UsZtOYEn4tWU2RGLOXr/o/xjRBftZRlG3dEWoaHr8j4GuypJ3isitGbVyjQKAuMu+xbiop8q224TjiZWc4XTZA==} + + stream-transform@2.1.3: + resolution: {integrity: sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ==} + + string-length@4.0.2: + resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} + engines: {node: '>=10'} + + string-width@1.0.2: + resolution: {integrity: sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==} + engines: {node: '>=0.10.0'} + + string-width@2.1.1: + resolution: {integrity: sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==} + engines: {node: '>=4'} + + string-width@3.1.0: + resolution: {integrity: sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==} + engines: {node: '>=6'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string.prototype.matchall@4.0.8: + resolution: {integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==} + + string.prototype.trimend@1.0.6: + resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} + + string.prototype.trimstart@1.0.6: + resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} + + string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + stringcase@4.3.1: + resolution: {integrity: sha512-Ov7McNX1sFaEX9NWijD1hIOVDDhKdnFzN9tvoa1N8xgrclouhsO4kBPVrTPhjO/zP5mn1Ww03uZ2SThNMXS7zg==} + engines: {node: '>=8', npm: '>=5'} + + stringify-object@3.3.0: + resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==} + engines: {node: '>=4'} + + strip-ansi@3.0.1: + resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==} + engines: {node: '>=0.10.0'} + + strip-ansi@4.0.0: + resolution: {integrity: sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==} + engines: {node: '>=4'} + + strip-ansi@5.2.0: + resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} + engines: {node: '>=6'} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + + strip-bom@4.0.0: + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} + + strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + + strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + + strip-hex-prefix@1.0.0: + resolution: {integrity: sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==} + engines: {node: '>=6.5.0', npm: '>=3'} + + strip-indent@3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} + + strip-json-comments@2.0.1: + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} + engines: {node: '>=0.10.0'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + strip-literal@1.3.0: + resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==} + + sucrase@3.32.0: + resolution: {integrity: sha512-ydQOU34rpSyj2TGyz4D2p8rbktIOZ8QY9s+DGLvFU1i5pWJE8vkpruCjGCMHsdXwnD7JDcS+noSwM/a7zyNFDQ==} + engines: {node: '>=8'} + hasBin: true + + superjson@1.12.4: + resolution: {integrity: sha512-vkpPQAxdCg9SLfPv5GPC5fnGrui/WryktoN9O5+Zif/14QIMjw+RITf/5LbBh+9QpBFb3KNvJth+puz2H8o6GQ==} + engines: {node: '>=10'} + + supports-color@2.0.0: + resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==} + engines: {node: '>=0.8.0'} + + supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + symbol-observable@1.2.0: + resolution: {integrity: sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==} + engines: {node: '>=0.10.0'} + + symbol-tree@3.2.4: + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + + table@5.4.6: + resolution: {integrity: sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==} + engines: {node: '>=6.0.0'} + + table@6.8.1: + resolution: {integrity: sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==} + engines: {node: '>=10.0.0'} + + tailwind-merge@1.12.0: + resolution: {integrity: sha512-Y17eDp7FtN1+JJ4OY0Bqv9OA41O+MS8c1Iyr3T6JFLnOgLg3EvcyMKZAnQ8AGyvB5Nxm3t9Xb5Mhe139m8QT/g==} + + tailwindcss@3.3.2: + resolution: {integrity: sha512-9jPkMiIBXvPc2KywkraqsUfbfj+dHDb+JPWtSJa9MLFdrPyazI7q6WX2sUrm7R9eVR7qqv3Pas7EvQFzxKnI6w==} + engines: {node: '>=14.0.0'} + hasBin: true + + tar-fs@2.1.1: + resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} + + tar-stream@2.2.0: + resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} + engines: {node: '>=6'} + + tar@6.2.0: + resolution: {integrity: sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==} + engines: {node: '>=10'} + + term-size@2.2.1: + resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} + engines: {node: '>=8'} + + test-exclude@6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} + + text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + + thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + + thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + + thread-stream@2.3.0: + resolution: {integrity: sha512-kaDqm1DET9pp3NXwR8382WHbnpXnRkN9xGN9dQt3B2+dmXiW8X1SOwmFOxAErEQ47ObhZ96J6yhZNXuyCOL7KA==} + + throttle-debounce@5.0.0: + resolution: {integrity: sha512-2iQTSgkkc1Zyk0MeVrt/3BvuOXYPl/R8Z0U2xxo9rjwNciaHDG3R+Lm6dh4EeUci49DanvBnuqI6jshoQQRGEg==} + engines: {node: '>=12.22'} + + through2@2.0.5: + resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} + + through2@4.0.2: + resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==} + + through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + + timers-ext@0.1.7: + resolution: {integrity: sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==} + + tiny-lru@11.0.1: + resolution: {integrity: sha512-iNgFugVuQgBKrqeO/mpiTTgmBsTP0WL6yeuLfLs/Ctf0pI/ixGqIRm8sDCwMcXGe9WWvt2sGXI5mNqZbValmJg==} + engines: {node: '>=12'} + + tinybench@2.6.0: + resolution: {integrity: sha512-N8hW3PG/3aOoZAN5V/NSAEDz0ZixDSSt5b/a05iqtpgfLWMSVuCo7w0k2vVvEjdrIoeGqZzweX2WlyioNIHchA==} + + tinypool@0.7.0: + resolution: {integrity: sha512-zSYNUlYSMhJ6Zdou4cJwo/p7w5nmAH17GRfU/ui3ctvjXFErXXkruT4MWW6poDeXgCaIBlGLrfU6TbTXxyGMww==} + engines: {node: '>=14.0.0'} + + tinyspy@2.2.0: + resolution: {integrity: sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg==} + engines: {node: '>=14.0.0'} + + tmp@0.0.33: + resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} + engines: {node: '>=0.6.0'} + + tmpl@1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + + to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + + toposort@2.0.2: + resolution: {integrity: sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==} + + tough-cookie@4.1.3: + resolution: {integrity: sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==} + engines: {node: '>=6'} + + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + + tr46@1.0.1: + resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} + + tr46@4.1.1: + resolution: {integrity: sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==} + engines: {node: '>=14'} + + tree-kill@1.2.2: + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + hasBin: true + + treeify@1.1.0: + resolution: {integrity: sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==} + engines: {node: '>=0.6'} + + trim-newlines@3.0.1: + resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} + engines: {node: '>=8'} + + trpc-koa-adapter@1.1.3: + resolution: {integrity: sha512-2rdmVuuFGLMyrUtW6ktroAzBsp2fc8oFuOEhNAcroJBei3DPF/UISr9qAeQX4MUEi9FCT2+bi4pBPcm8HKj8PA==} + peerDependencies: + '@trpc/server': ^10.0.0-rc.4 + koa: '>=2.13.0' + + ts-api-utils@1.2.1: + resolution: {integrity: sha512-RIYA36cJn2WiH9Hy77hdF9r7oEwxAtB/TS9/S4Qd90Ap4z5FSiin5zEiTL44OII1Y3IIlEvxwxFUVgrHSZ/UpA==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' + + ts-error@1.0.6: + resolution: {integrity: sha512-tLJxacIQUM82IR7JO1UUkKlYuUTmoY9HBJAmNWFzheSlDS5SPMcNIepejHJa4BpPQLAcbRhRf3GDJzyj6rbKvA==} + + ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + + ts-jest@29.0.5: + resolution: {integrity: sha512-PL3UciSgIpQ7f6XjVOmbi96vmDHUqAyqDr8YxzopDqX3kfgYtX1cuNeBjP+L9sFXi6nzsGGA6R3fP3DDDJyrxA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + '@babel/core': '>=7.0.0-beta.0 <8' + '@jest/types': ^29.0.0 + babel-jest: ^29.0.0 + esbuild: '*' + jest: ^29.0.0 + typescript: '>=4.3' + peerDependenciesMeta: + '@babel/core': + optional: true + '@jest/types': + optional: true + babel-jest: + optional: true + esbuild: + optional: true + + ts-poet@6.4.1: + resolution: {integrity: sha512-AjZEs4h2w4sDfwpHMxQKHrTlNh2wRbM5NRXmLz0RiH+yPGtSQFbe9hBpNocU8vqVNgfh0BIOiXR80xDz3kKxUQ==} + + ts-proto-descriptors@1.8.0: + resolution: {integrity: sha512-iV20plcI8+GRkeZIAygxOOH0p2xpOsKfw9kI1W20NCwawi1/4bG/YRd9rQY9XSJP+lD9j7XbSy3tFFuikfsljw==} + + ts-proto@1.146.0: + resolution: {integrity: sha512-OyBZRjmqqw+aatLEUbRooWO6VKTtOLJQyaQFMciigEZPNgTsWtApqHpQDtqDMQFWEXhIARqEV+B7ZJx8cljhZA==} + hasBin: true + + tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + + tslib@2.5.0: + resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} + + tsort@0.0.1: + resolution: {integrity: sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==} + + tsscmp@1.0.6: + resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==} + engines: {node: '>=0.6.x'} + + tsup@6.7.0: + resolution: {integrity: sha512-L3o8hGkaHnu5TdJns+mCqFsDBo83bJ44rlK7e6VdanIvpea4ArPcU3swWGsLVbXak1PqQx/V+SSmFPujBK+zEQ==} + engines: {node: '>=14.18'} + hasBin: true + peerDependencies: + '@swc/core': ^1 + postcss: ^8.4.12 + typescript: '>=4.1.0' + peerDependenciesMeta: + '@swc/core': + optional: true + postcss: + optional: true + typescript: + optional: true + + tsx@3.12.6: + resolution: {integrity: sha512-q93WgS3lBdHlPgS0h1i+87Pt6n9K/qULIMNYZo07nSeu2z5QE2CellcAZfofVXBo2tQg9av2ZcRMQ2S2i5oadQ==} + hasBin: true + + tty-table@4.2.1: + resolution: {integrity: sha512-xz0uKo+KakCQ+Dxj1D/tKn2FSyreSYWzdkL/BYhgN6oMW808g8QRMuh1atAV9fjTPbWBjfbkKQpI/5rEcnAc7g==} + engines: {node: '>=8.0.0'} + hasBin: true + + tunnel-agent@0.6.0: + resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + + turbo-darwin-64@1.9.3: + resolution: {integrity: sha512-0dFc2cWXl82kRE4Z+QqPHhbEFEpUZho1msHXHWbz5+PqLxn8FY0lEVOHkq5tgKNNEd5KnGyj33gC/bHhpZOk5g==} + cpu: [x64] + os: [darwin] + + turbo-darwin-arm64@1.9.3: + resolution: {integrity: sha512-1cYbjqLBA2zYE1nbf/qVnEkrHa4PkJJbLo7hnuMuGM0bPzh4+AnTNe98gELhqI1mkTWBu/XAEeF5u6dgz0jLNA==} + cpu: [arm64] + os: [darwin] + + turbo-linux-64@1.9.3: + resolution: {integrity: sha512-UuBPFefawEwpuxh5pM9Jqq3q4C8M0vYxVYlB3qea/nHQ80pxYq7ZcaLGEpb10SGnr3oMUUs1zZvkXWDNKCJb8Q==} + cpu: [x64] + os: [linux] + + turbo-linux-arm64@1.9.3: + resolution: {integrity: sha512-vUrNGa3hyDtRh9W0MkO+l1dzP8Co2gKnOVmlJQW0hdpOlWlIh22nHNGGlICg+xFa2f9j4PbQlWTsc22c019s8Q==} + cpu: [arm64] + os: [linux] + + turbo-windows-64@1.9.3: + resolution: {integrity: sha512-0BZ7YaHs6r+K4ksqWus1GKK3W45DuDqlmfjm/yuUbTEVc8szmMCs12vugU2Zi5GdrdJSYfoKfEJ/PeegSLIQGQ==} + cpu: [x64] + os: [win32] + + turbo-windows-arm64@1.9.3: + resolution: {integrity: sha512-QJUYLSsxdXOsR1TquiOmLdAgtYcQ/RuSRpScGvnZb1hY0oLc7JWU0llkYB81wVtWs469y8H9O0cxbKwCZGR4RQ==} + cpu: [arm64] + os: [win32] + + turbo@1.9.3: + resolution: {integrity: sha512-ID7mxmaLUPKG/hVkp+h0VuucB1U99RPCJD9cEuSEOdIPoSIuomcIClEJtKamUsdPLhLCud+BvapBNnhgh58Nzw==} + hasBin: true + + tweetnacl-util@0.15.1: + resolution: {integrity: sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==} + + tweetnacl@1.0.3: + resolution: {integrity: sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==} + + type-check@0.3.2: + resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} + engines: {node: '>= 0.8.0'} + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + + type-fest@0.13.1: + resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} + engines: {node: '>=10'} + + type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + + type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + + type-fest@0.6.0: + resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} + engines: {node: '>=8'} + + type-fest@0.7.1: + resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} + engines: {node: '>=8'} + + type-fest@0.8.1: + resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} + engines: {node: '>=8'} + + type-fest@2.14.0: + resolution: {integrity: sha512-hQnTQkFjL5ik6HF2fTAM8ycbr94UbQXK364wF930VHb0dfBJ5JBP8qwrR8TaK9zwUEk7meruo2JAUDMwvuxd/w==} + engines: {node: '>=12.20'} + + type-is@1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} + + type@1.2.0: + resolution: {integrity: sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==} + + type@2.7.2: + resolution: {integrity: sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==} + + typescript@5.4.2: + resolution: {integrity: sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==} + engines: {node: '>=14.17'} + hasBin: true + + ufo@1.3.2: + resolution: {integrity: sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==} + + uglify-js@3.17.4: + resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==} + engines: {node: '>=0.8.0'} + hasBin: true + + unbox-primitive@1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + + undici@5.28.3: + resolution: {integrity: sha512-3ItfzbrhDlINjaP0duwnNsKpDQk3acHI3gVJ1z4fmwMK31k5G9OVIAMLSIaP6w4FaGkaAkN6zaQO9LUvZ1t7VA==} + engines: {node: '>=14.0'} + + unique-filename@2.0.1: + resolution: {integrity: sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + unique-slug@3.0.0: + resolution: {integrity: sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + + universalify@0.2.0: + resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} + engines: {node: '>= 4.0.0'} + + unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + + update-browserslist-db@1.0.10: + resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + url-parse@1.5.10: + resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} + + use-local-storage-state@18.3.2: + resolution: {integrity: sha512-JiTuQsJmmKvc0mH0hiSjaTkKFlwtwXTeOlJ+cdg7rRJzZWwv+s/Rr2S2r2NR68O0W5ogwwt1MX1y+P2wQ1lY4w==} + engines: {node: '>=12'} + peerDependencies: + react: '>=18' + react-dom: '>=18' + + use-sync-external-store@1.2.0: + resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + + utf8@3.0.0: + resolution: {integrity: sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + util@0.10.4: + resolution: {integrity: sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==} + + uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + + v8-to-istanbul@9.1.0: + resolution: {integrity: sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==} + engines: {node: '>=10.12.0'} + + validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + + viem@2.9.20: + resolution: {integrity: sha512-PHb1MrBHMrSZ8Ayuk3Y/6wUTcMbzlACQaM6AJBSv9kRKX3xYSZ/kehi+gvS0swQJeAlTQ4eZM7jsHQJNAOarmg==} + peerDependencies: + typescript: '>=5.0.4' + peerDependenciesMeta: + typescript: + optional: true + + vite-node@0.34.6: + resolution: {integrity: sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA==} + engines: {node: '>=v14.18.0'} + hasBin: true + + vite@4.3.6: + resolution: {integrity: sha512-cqIyLSbA6gornMS659AXTVKF7cvSHMdKmJJwQ9DXq3lwsT1uZSdktuBRlpHQ8VnOWx0QHtjDwxPpGtyo9Fh/Qg==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + '@types/node': '>= 14' + less: '*' + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + + vitest@0.34.6: + resolution: {integrity: sha512-+5CALsOvbNKnS+ZHMXtuUC7nL8/7F1F2DnHGjSsszX8zCjWSSviphCb/NuS9Nzf4Q03KyyDRBAXhF/8lffME4Q==} + engines: {node: '>=v14.18.0'} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@vitest/browser': '*' + '@vitest/ui': '*' + happy-dom: '*' + jsdom: '*' + playwright: '*' + safaridriver: '*' + webdriverio: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + playwright: + optional: true + safaridriver: + optional: true + webdriverio: + optional: true - /@alloc/quick-lru@5.2.0: - resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + w3c-xmlserializer@4.0.0: + resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} + engines: {node: '>=14'} + + walker@1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + + wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + + web3-utils@1.10.4: + resolution: {integrity: sha512-tsu8FiKJLk2PzhDl9fXbGUWTkkVXYhtTA+SmEFkKft+9BgwLxfCRpU96sWv7ICC8zixBNd3JURVoiR3dUXgP8A==} + engines: {node: '>=8.0.0'} + + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + + webidl-conversions@4.0.2: + resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} + + webidl-conversions@7.0.0: + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + engines: {node: '>=12'} + + whatwg-encoding@2.0.0: + resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} + engines: {node: '>=12'} + + whatwg-mimetype@3.0.0: + resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} + engines: {node: '>=12'} + + whatwg-url@12.0.1: + resolution: {integrity: sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==} + engines: {node: '>=14'} + + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + + whatwg-url@7.1.0: + resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} + + which-boxed-primitive@1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + + which-module@2.0.0: + resolution: {integrity: sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==} + + which-pm@2.0.0: + resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==} + engines: {node: '>=8.15'} + + which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + why-is-node-running@2.2.2: + resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} + engines: {node: '>=8'} + hasBin: true + + wide-align@1.1.5: + resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} + + widest-line@3.1.0: + resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==} + engines: {node: '>=8'} + + word-wrap@1.2.3: + resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} + engines: {node: '>=0.10.0'} + + wordwrap@1.0.0: + resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} + + workerpool@6.2.1: + resolution: {integrity: sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==} + + wrap-ansi@3.0.1: + resolution: {integrity: sha512-iXR3tDXpbnTpzjKSylUJRkLuOrEC7hwEB221cgn6wtF8wpmz28puFXAEfPT5zrjM3wahygB//VuWEr1vTkDcNQ==} + engines: {node: '>=4'} + + wrap-ansi@5.1.0: + resolution: {integrity: sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==} + engines: {node: '>=6'} + + wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} - dev: true - /@ampproject/remapping@2.2.1: - resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} - engines: {node: '>=6.0.0'} + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + write-file-atomic@4.0.2: + resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + write@1.0.3: + resolution: {integrity: sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==} + engines: {node: '>=4'} + + ws@7.4.6: + resolution: {integrity: sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + ws@8.13.0: + resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + xml-name-validator@4.0.0: + resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} + engines: {node: '>=12'} + + xmlchars@2.2.0: + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + + xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + + y18n@4.0.3: + resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yallist@2.1.2: + resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + + yaml@1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + + yaml@2.2.2: + resolution: {integrity: sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA==} + engines: {node: '>= 14'} + + yargs-interactive@3.0.1: + resolution: {integrity: sha512-Jnp88uiuz+ZRpM10Lwvs0nRetWPog+6lcgQrhwKsyEanAe3wgTlaPPzcYlZWp53aOMTzOcR5wEpEsFOMOPmLlw==} + engines: {node: '>=8', npm: '>=6'} + + yargs-parser@15.0.3: + resolution: {integrity: sha512-/MVEVjTXy/cGAjdtQf8dW3V9b97bPN7rNn8ETj6BmAQL7ibC7O1Q9SPJbGjgh3SlwoBNXMzj/ZGIj8mBgl12YA==} + + yargs-parser@18.1.3: + resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} + engines: {node: '>=6'} + + yargs-parser@20.2.4: + resolution: {integrity: sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==} + engines: {node: '>=10'} + + yargs-parser@20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs-unparser@2.0.0: + resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==} + engines: {node: '>=10'} + + yargs@14.2.3: + resolution: {integrity: sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg==} + + yargs@15.4.1: + resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} + engines: {node: '>=8'} + + yargs@16.2.0: + resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} + engines: {node: '>=10'} + + yargs@17.7.1: + resolution: {integrity: sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==} + engines: {node: '>=12'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + + ylru@1.3.2: + resolution: {integrity: sha512-RXRJzMiK6U2ye0BlGGZnmpwJDPgakn6aNQ0A7gHRbD4I0uvK4TW6UqkK1V0pp9jskjJBAXd3dRrbzWkqJ+6cxA==} + engines: {node: '>= 4.0.0'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + yocto-queue@1.0.0: + resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} + engines: {node: '>=12.20'} + + zod-validation-error@1.3.0: + resolution: {integrity: sha512-4WoQnuWnj06kwKR4A+cykRxFmy+CTvwMQO5ogTXLiVx1AuvYYmMjixh7sbkSsQTr1Fvtss6d5kVz8PGeMPUQjQ==} + engines: {node: '>=16.0.0'} + peerDependencies: + zod: ^3.18.0 + + zod@3.21.4: + resolution: {integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==} + + zustand@4.3.7: + resolution: {integrity: sha512-dY8ERwB9Nd21ellgkBZFhudER8KVlelZm8388B5nDAXhO/+FZDhYMuRnqDgu5SYyRgz/iaf8RKnbUs/cHfOGlQ==} + engines: {node: '>=12.7.0'} + peerDependencies: + immer: '>=9.0' + react: '>=16.8' + peerDependenciesMeta: + immer: + optional: true + react: + optional: true + +snapshots: + + '@aashutoshrathi/word-wrap@1.2.6': {} + + '@adraffy/ens-normalize@1.10.0': {} + + '@alloc/quick-lru@5.2.0': {} + + '@ampproject/remapping@2.2.1': dependencies: '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.18 - dev: true - - /@ampproject/remapping@2.3.0: - resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - dev: true - /@arktype/attest@0.6.4(typescript@5.4.2): - resolution: {integrity: sha512-e0ZIITIany0UIpw2p1wiYKrqcK+iRvh9FLabVkWh/mhppm8n4jWPHyIut8OrURPWfB7Obd/cQ1Vu3DuchSfL7A==} - hasBin: true - peerDependencies: - typescript: '*' + '@arktype/attest@0.6.4(typescript@5.4.2)': dependencies: '@arktype/fs': 0.0.11 '@arktype/util': 0.0.23 @@ -1313,12 +7288,10 @@ packages: typescript: 5.4.2 transitivePeerDependencies: - supports-color - dev: true - /@arktype/fs@0.0.11: - resolution: {integrity: sha512-f3p8apUMOTl6KlFNTrOX6twQJDeSdSmtYPVca7SaQjUUTAxfUlaROY1/i1C3y2llYDrrQBEbsggk8k2Oxxgrvw==} - dev: true + '@arktype/fs@0.0.11': {} +<<<<<<< HEAD /@arktype/schema@0.0.8: resolution: {integrity: sha512-X4WCMpiS4EOdTjb6NFI2cYw0QAzXXitj5oMPryv0topEeC8smuMOe3rlesbE/nG2eNUE0OpzDCY+LY/o1S5ktA==} dependencies: @@ -1328,11 +7301,13 @@ packages: /@arktype/util@0.0.23: resolution: {integrity: sha512-MwtDGjbgfXWxlExjIL78HvPlWOma1XFEcDd3VWuCPMt/f+3TR7fXyiGFNlIYZGOYdOIU7qgjaE8dmbd6jdJa3Q==} dev: true +======= + '@arktype/util@0.0.23': {} +>>>>>>> 1175edcf0 (feat: update pnpm and node version) - /@arktype/util@0.0.29: - resolution: {integrity: sha512-fDTBSVzxLj9k1ZjinkawmaQdcXFKMBVK8c+vqMPxwoa94mPMZxBo84yQcqyFVcIcWIkg6qQQmH1ozyT4nqFT/g==} - dev: false + '@arktype/util@0.0.29': {} +<<<<<<< HEAD /@arktype/util@0.0.34: resolution: {integrity: sha512-P3opb4q9eDZYbKo1pzLa34Dytg+vMuq8fkY0xQ98BN3RrjHtAVRPFmK3CeAz4fSa39yhrYlLUBfuUEvi52Hb8w==} dev: true @@ -1815,31 +7790,15 @@ packages: /@babel/code-frame@7.21.4: resolution: {integrity: sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==} engines: {node: '>=6.9.0'} +======= + '@babel/code-frame@7.21.4': +>>>>>>> 1175edcf0 (feat: update pnpm and node version) dependencies: '@babel/highlight': 7.18.6 - dev: true - - /@babel/code-frame@7.24.2: - resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/highlight': 7.24.2 - picocolors: 1.0.0 - dev: true - - /@babel/compat-data@7.21.4: - resolution: {integrity: sha512-/DYyDpeCfaVinT40FPGdkkb+lYSKvsVuMjDAG7jPOWWiM1ibOaB9CXJAlc4d1QpP/U2q2P9jbrSlClKSErd55g==} - engines: {node: '>=6.9.0'} - dev: true - /@babel/compat-data@7.24.4: - resolution: {integrity: sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==} - engines: {node: '>=6.9.0'} - dev: true + '@babel/compat-data@7.21.4': {} - /@babel/core@7.21.4: - resolution: {integrity: sha512-qt/YV149Jman/6AfmlxJ04LMIu8bMoyl3RB91yTFrxQmgbrSvQMy7cI8Q62FHx1t8wJ8B5fu0UDoLwHAhUo1QA==} - engines: {node: '>=6.9.0'} + '@babel/core@7.21.4': dependencies: '@ampproject/remapping': 2.2.1 '@babel/code-frame': 7.21.4 @@ -1858,133 +7817,39 @@ packages: semver: 6.3.0 transitivePeerDependencies: - supports-color - dev: true - - /@babel/core@7.24.4: - resolution: {integrity: sha512-MBVlMXP+kkl5394RBLSxxk/iLTeVGuXTV3cIDXavPpMMqnSnt6apKgan/U8O3USWZCWZT/TbgfEpKa4uMgN4Dg==} - engines: {node: '>=6.9.0'} - dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.24.2 - '@babel/generator': 7.24.4 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.4) - '@babel/helpers': 7.24.4 - '@babel/parser': 7.24.4 - '@babel/template': 7.24.0 - '@babel/traverse': 7.24.1 - '@babel/types': 7.24.0 - convert-source-map: 2.0.0 - debug: 4.3.4(supports-color@8.1.1) - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/generator@7.21.4: - resolution: {integrity: sha512-NieM3pVIYW2SwGzKoqfPrQsf4xGs9M9AIG3ThppsSRmO+m7eQhmI6amajKMUeIO37wFfsvnvcxQFx6x6iqxDnA==} - engines: {node: '>=6.9.0'} + '@babel/generator@7.21.4': dependencies: '@babel/types': 7.21.4 '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.18 jsesc: 2.5.2 - dev: true - - /@babel/generator@7.24.4: - resolution: {integrity: sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.24.0 - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - jsesc: 2.5.2 - dev: true - /@babel/helper-compilation-targets@7.21.4(@babel/core@7.21.4): - resolution: {integrity: sha512-Fa0tTuOXZ1iL8IeDFUWCzjZcn+sJGd9RZdH9esYVjEejGmzf+FFYQpMi/kZUk2kPy/q1H3/GPw7np8qar/stfg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + '@babel/helper-compilation-targets@7.21.4(@babel/core@7.21.4)': dependencies: '@babel/compat-data': 7.21.4 '@babel/core': 7.21.4 '@babel/helper-validator-option': 7.21.0 - browserslist: 4.23.0 + browserslist: 4.21.5 lru-cache: 5.1.1 semver: 6.3.0 - dev: true - - /@babel/helper-compilation-targets@7.23.6: - resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/compat-data': 7.24.4 - '@babel/helper-validator-option': 7.23.5 - browserslist: 4.23.0 - lru-cache: 5.1.1 - semver: 6.3.1 - dev: true - - /@babel/helper-environment-visitor@7.18.9: - resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} - engines: {node: '>=6.9.0'} - dev: true - /@babel/helper-environment-visitor@7.22.20: - resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} - engines: {node: '>=6.9.0'} - dev: true + '@babel/helper-environment-visitor@7.18.9': {} - /@babel/helper-function-name@7.21.0: - resolution: {integrity: sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==} - engines: {node: '>=6.9.0'} + '@babel/helper-function-name@7.21.0': dependencies: '@babel/template': 7.20.7 '@babel/types': 7.21.4 - dev: true - - /@babel/helper-function-name@7.23.0: - resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.24.0 - '@babel/types': 7.24.0 - dev: true - /@babel/helper-hoist-variables@7.18.6: - resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} - engines: {node: '>=6.9.0'} + '@babel/helper-hoist-variables@7.18.6': dependencies: '@babel/types': 7.21.4 - dev: true - - /@babel/helper-hoist-variables@7.22.5: - resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.24.0 - dev: true - /@babel/helper-module-imports@7.18.6: - resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} - engines: {node: '>=6.9.0'} + '@babel/helper-module-imports@7.18.6': dependencies: '@babel/types': 7.21.4 - dev: true - /@babel/helper-module-imports@7.24.3: - resolution: {integrity: sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.24.0 - dev: true - - /@babel/helper-module-transforms@7.21.2: - resolution: {integrity: sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==} - engines: {node: '>=6.9.0'} + '@babel/helper-module-transforms@7.21.2': dependencies: '@babel/helper-environment-visitor': 7.18.9 '@babel/helper-module-imports': 7.18.6 @@ -1996,318 +7861,132 @@ packages: '@babel/types': 7.21.4 transitivePeerDependencies: - supports-color - dev: true - - /@babel/helper-module-transforms@7.23.3(@babel/core@7.24.4): - resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-module-imports': 7.24.3 - '@babel/helper-simple-access': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/helper-validator-identifier': 7.22.20 - dev: true - /@babel/helper-plugin-utils@7.20.2: - resolution: {integrity: sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==} - engines: {node: '>=6.9.0'} - dev: true + '@babel/helper-plugin-utils@7.20.2': {} - /@babel/helper-simple-access@7.20.2: - resolution: {integrity: sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==} - engines: {node: '>=6.9.0'} + '@babel/helper-simple-access@7.20.2': dependencies: '@babel/types': 7.21.4 - dev: true - - /@babel/helper-simple-access@7.22.5: - resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.24.0 - dev: true - /@babel/helper-split-export-declaration@7.18.6: - resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} - engines: {node: '>=6.9.0'} + '@babel/helper-split-export-declaration@7.18.6': dependencies: '@babel/types': 7.21.4 - dev: true - - /@babel/helper-split-export-declaration@7.22.6: - resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.24.0 - dev: true - - /@babel/helper-string-parser@7.19.4: - resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-string-parser@7.24.1: - resolution: {integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-validator-identifier@7.19.1: - resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} - engines: {node: '>=6.9.0'} - dev: true - /@babel/helper-validator-identifier@7.22.20: - resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} - engines: {node: '>=6.9.0'} - dev: true + '@babel/helper-string-parser@7.19.4': {} - /@babel/helper-validator-option@7.21.0: - resolution: {integrity: sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==} - engines: {node: '>=6.9.0'} - dev: true + '@babel/helper-validator-identifier@7.19.1': {} - /@babel/helper-validator-option@7.23.5: - resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} - engines: {node: '>=6.9.0'} - dev: true + '@babel/helper-validator-option@7.21.0': {} - /@babel/helpers@7.21.0: - resolution: {integrity: sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==} - engines: {node: '>=6.9.0'} + '@babel/helpers@7.21.0': dependencies: '@babel/template': 7.20.7 '@babel/traverse': 7.21.4 '@babel/types': 7.21.4 transitivePeerDependencies: - supports-color - dev: true - - /@babel/helpers@7.24.4: - resolution: {integrity: sha512-FewdlZbSiwaVGlgT1DPANDuCHaDMiOo+D/IDYRFYjHOuv66xMSJ7fQwwODwRNAPkADIO/z1EoF/l2BCWlWABDw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.24.0 - '@babel/traverse': 7.24.1 - '@babel/types': 7.24.0 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/highlight@7.18.6: - resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} - engines: {node: '>=6.9.0'} + '@babel/highlight@7.18.6': dependencies: '@babel/helper-validator-identifier': 7.19.1 chalk: 2.4.2 js-tokens: 4.0.0 - dev: true - - /@babel/highlight@7.24.2: - resolution: {integrity: sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.22.20 - chalk: 2.4.2 - js-tokens: 4.0.0 - picocolors: 1.0.0 - dev: true - /@babel/parser@7.21.4: - resolution: {integrity: sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw==} - engines: {node: '>=6.0.0'} - hasBin: true + '@babel/parser@7.21.4': dependencies: '@babel/types': 7.21.4 - dev: true - - /@babel/parser@7.24.4: - resolution: {integrity: sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - '@babel/types': 7.24.0 - dev: true - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.21.4): - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.21.4)': dependencies: '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 - dev: true - /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.21.4): - resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.21.4)': dependencies: '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 - dev: true - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.21.4): - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.21.4)': dependencies: '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 - dev: true - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.21.4): - resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.21.4)': dependencies: '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 - dev: true - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.21.4): - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.21.4)': dependencies: '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 - dev: true - /@babel/plugin-syntax-jsx@7.18.6(@babel/core@7.21.4): - resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-jsx@7.18.6(@babel/core@7.21.4)': dependencies: '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 - dev: true - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.21.4): - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.21.4)': dependencies: '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 - dev: true - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.21.4): - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.21.4)': dependencies: '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 - dev: true - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.21.4): - resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.21.4)': dependencies: '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 - dev: true - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.21.4): - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.21.4)': dependencies: '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 - dev: true - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.21.4): - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.21.4)': dependencies: '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 - dev: true - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.21.4): - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.21.4)': dependencies: '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 - dev: true - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.21.4): - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.21.4)': dependencies: '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 - dev: true - /@babel/plugin-syntax-typescript@7.20.0(@babel/core@7.21.4): - resolution: {integrity: sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-typescript@7.20.0(@babel/core@7.21.4)': dependencies: '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 - dev: true - /@babel/plugin-transform-react-jsx-self@7.21.0(@babel/core@7.21.4): - resolution: {integrity: sha512-f/Eq+79JEu+KUANFks9UZCcvydOOGMgF7jBrcwjHa5jTZD8JivnhCJYvmlhR/WTXBWonDExPoW0eO/CR4QJirA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-react-jsx-self@7.21.0(@babel/core@7.21.4)': dependencies: '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 - dev: true - /@babel/plugin-transform-react-jsx-source@7.19.6(@babel/core@7.21.4): - resolution: {integrity: sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-react-jsx-source@7.19.6(@babel/core@7.21.4)': dependencies: '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 - dev: true - /@babel/runtime@7.21.0: - resolution: {integrity: sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==} - engines: {node: '>=6.9.0'} + '@babel/runtime@7.21.0': dependencies: regenerator-runtime: 0.13.11 - /@babel/template@7.20.7: - resolution: {integrity: sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==} - engines: {node: '>=6.9.0'} + '@babel/template@7.20.7': dependencies: '@babel/code-frame': 7.21.4 '@babel/parser': 7.21.4 '@babel/types': 7.21.4 - dev: true - - /@babel/template@7.24.0: - resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.24.2 - '@babel/parser': 7.24.4 - '@babel/types': 7.24.0 - dev: true - /@babel/traverse@7.21.4: - resolution: {integrity: sha512-eyKrRHKdyZxqDm+fV1iqL9UAHMoIg0nDaGqfIOd8rKH17m5snv7Gn4qgjBoFfLz9APvjFU/ICT00NVCv1Epp8Q==} - engines: {node: '>=6.9.0'} + '@babel/traverse@7.21.4': dependencies: '@babel/code-frame': 7.21.4 '@babel/generator': 7.21.4 @@ -2321,50 +8000,16 @@ packages: globals: 11.12.0 transitivePeerDependencies: - supports-color - dev: true - - /@babel/traverse@7.24.1: - resolution: {integrity: sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.24.2 - '@babel/generator': 7.24.4 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.24.4 - '@babel/types': 7.24.0 - debug: 4.3.4(supports-color@8.1.1) - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/types@7.21.4: - resolution: {integrity: sha512-rU2oY501qDxE8Pyo7i/Orqma4ziCOrby0/9mvbDUGEfvZjb279Nk9k19e2fiCxHbRRpY2ZyrgW1eq22mvmOIzA==} - engines: {node: '>=6.9.0'} + '@babel/types@7.21.4': dependencies: '@babel/helper-string-parser': 7.19.4 '@babel/helper-validator-identifier': 7.19.1 to-fast-properties: 2.0.0 - dev: true - - /@babel/types@7.24.0: - resolution: {integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-string-parser': 7.24.1 - '@babel/helper-validator-identifier': 7.22.20 - to-fast-properties: 2.0.0 - dev: true - /@bcoe/v8-coverage@0.2.3: - resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - dev: true + '@bcoe/v8-coverage@0.2.3': {} - /@changesets/apply-release-plan@6.1.3: - resolution: {integrity: sha512-ECDNeoc3nfeAe1jqJb5aFQX7CqzQhD2klXRez2JDb/aVpGUbX673HgKrnrgJRuQR/9f2TtLoYIzrGB9qwD77mg==} + '@changesets/apply-release-plan@6.1.3': dependencies: '@babel/runtime': 7.21.0 '@changesets/config': 2.3.0 @@ -2379,10 +8024,8 @@ packages: prettier: 2.8.4 resolve-from: 5.0.0 semver: 5.7.1 - dev: true - /@changesets/assemble-release-plan@5.2.3: - resolution: {integrity: sha512-g7EVZCmnWz3zMBAdrcKhid4hkHT+Ft1n0mLussFMcB1dE2zCuwcvGoy9ec3yOgPGF4hoMtgHaMIk3T3TBdvU9g==} + '@changesets/assemble-release-plan@5.2.3': dependencies: '@babel/runtime': 7.21.0 '@changesets/errors': 0.1.4 @@ -2390,17 +8033,12 @@ packages: '@changesets/types': 5.2.1 '@manypkg/get-packages': 1.1.3 semver: 5.7.1 - dev: true - /@changesets/changelog-git@0.1.14: - resolution: {integrity: sha512-+vRfnKtXVWsDDxGctOfzJsPhaCdXRYoe+KyWYoq5X/GqoISREiat0l3L8B0a453B2B4dfHGcZaGyowHbp9BSaA==} + '@changesets/changelog-git@0.1.14': dependencies: '@changesets/types': 5.2.1 - dev: true - /@changesets/cli@2.26.1: - resolution: {integrity: sha512-XnTa+b51vt057fyAudvDKGB0Sh72xutQZNAdXkCqPBKO2zvs2yYZx5hFZj1u9cbtpwM6Sxtcr02/FQJfZOzemQ==} - hasBin: true + '@changesets/cli@2.26.1': dependencies: '@babel/runtime': 7.21.0 '@changesets/apply-release-plan': 6.1.3 @@ -2435,10 +8073,8 @@ packages: spawndamnit: 2.0.0 term-size: 2.2.1 tty-table: 4.2.1 - dev: true - /@changesets/config@2.3.0: - resolution: {integrity: sha512-EgP/px6mhCx8QeaMAvWtRrgyxW08k/Bx2tpGT+M84jEdX37v3VKfh4Cz1BkwrYKuMV2HZKeHOh8sHvja/HcXfQ==} + '@changesets/config@2.3.0': dependencies: '@changesets/errors': 0.1.4 '@changesets/get-dependents-graph': 1.3.5 @@ -2447,26 +8083,20 @@ packages: '@manypkg/get-packages': 1.1.3 fs-extra: 7.0.1 micromatch: 4.0.5 - dev: true - /@changesets/errors@0.1.4: - resolution: {integrity: sha512-HAcqPF7snsUJ/QzkWoKfRfXushHTu+K5KZLJWPb34s4eCZShIf8BFO3fwq6KU8+G7L5KdtN2BzQAXOSXEyiY9Q==} + '@changesets/errors@0.1.4': dependencies: extendable-error: 0.1.7 - dev: true - /@changesets/get-dependents-graph@1.3.5: - resolution: {integrity: sha512-w1eEvnWlbVDIY8mWXqWuYE9oKhvIaBhzqzo4ITSJY9hgoqQ3RoBqwlcAzg11qHxv/b8ReDWnMrpjpKrW6m1ZTA==} + '@changesets/get-dependents-graph@1.3.5': dependencies: '@changesets/types': 5.2.1 '@manypkg/get-packages': 1.1.3 chalk: 2.4.2 fs-extra: 7.0.1 semver: 5.7.1 - dev: true - /@changesets/get-release-plan@3.0.16: - resolution: {integrity: sha512-OpP9QILpBp1bY2YNIKFzwigKh7Qe9KizRsZomzLe6pK8IUo8onkAAVUD8+JRKSr8R7d4+JRuQrfSSNlEwKyPYg==} + '@changesets/get-release-plan@3.0.16': dependencies: '@babel/runtime': 7.21.0 '@changesets/assemble-release-plan': 5.2.3 @@ -2475,14 +8105,10 @@ packages: '@changesets/read': 0.5.9 '@changesets/types': 5.2.1 '@manypkg/get-packages': 1.1.3 - dev: true - /@changesets/get-version-range-type@0.3.2: - resolution: {integrity: sha512-SVqwYs5pULYjYT4op21F2pVbcrca4qA/bAA3FmFXKMN7Y+HcO8sbZUTx3TAy2VXulP2FACd1aC7f2nTuqSPbqg==} - dev: true + '@changesets/get-version-range-type@0.3.2': {} - /@changesets/git@2.0.0: - resolution: {integrity: sha512-enUVEWbiqUTxqSnmesyJGWfzd51PY4H7mH9yUw0hPVpZBJ6tQZFMU3F3mT/t9OJ/GjyiM4770i+sehAn6ymx6A==} + '@changesets/git@2.0.0': dependencies: '@babel/runtime': 7.21.0 '@changesets/errors': 0.1.4 @@ -2491,33 +8117,25 @@ packages: is-subdir: 1.2.0 micromatch: 4.0.5 spawndamnit: 2.0.0 - dev: true - /@changesets/logger@0.0.5: - resolution: {integrity: sha512-gJyZHomu8nASHpaANzc6bkQMO9gU/ib20lqew1rVx753FOxffnCrJlGIeQVxNWCqM+o6OOleCo/ivL8UAO5iFw==} + '@changesets/logger@0.0.5': dependencies: chalk: 2.4.2 - dev: true - /@changesets/parse@0.3.16: - resolution: {integrity: sha512-127JKNd167ayAuBjUggZBkmDS5fIKsthnr9jr6bdnuUljroiERW7FBTDNnNVyJ4l69PzR57pk6mXQdtJyBCJKg==} + '@changesets/parse@0.3.16': dependencies: '@changesets/types': 5.2.1 js-yaml: 3.14.1 - dev: true - /@changesets/pre@1.0.14: - resolution: {integrity: sha512-dTsHmxQWEQekHYHbg+M1mDVYFvegDh9j/kySNuDKdylwfMEevTeDouR7IfHNyVodxZXu17sXoJuf2D0vi55FHQ==} + '@changesets/pre@1.0.14': dependencies: '@babel/runtime': 7.21.0 '@changesets/errors': 0.1.4 '@changesets/types': 5.2.1 '@manypkg/get-packages': 1.1.3 fs-extra: 7.0.1 - dev: true - /@changesets/read@0.5.9: - resolution: {integrity: sha512-T8BJ6JS6j1gfO1HFq50kU3qawYxa4NTbI/ASNVVCBTsKquy2HYwM9r7ZnzkiMe8IEObAJtUVGSrePCOxAK2haQ==} + '@changesets/read@0.5.9': dependencies: '@babel/runtime': 7.21.0 '@changesets/git': 2.0.0 @@ -2527,461 +8145,174 @@ packages: chalk: 2.4.2 fs-extra: 7.0.1 p-filter: 2.1.0 - dev: true - /@changesets/types@4.1.0: - resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} - dev: true + '@changesets/types@4.1.0': {} - /@changesets/types@5.2.1: - resolution: {integrity: sha512-myLfHbVOqaq9UtUKqR/nZA/OY7xFjQMdfgfqeZIBK4d0hA6pgxArvdv8M+6NUzzBsjWLOtvApv8YHr4qM+Kpfg==} - dev: true + '@changesets/types@5.2.1': {} - /@changesets/write@0.2.3: - resolution: {integrity: sha512-Dbamr7AIMvslKnNYsLFafaVORx4H0pvCA2MHqgtNCySMe1blImEyAEOzDmcgKAkgz4+uwoLz7demIrX+JBr/Xw==} + '@changesets/write@0.2.3': dependencies: '@babel/runtime': 7.21.0 '@changesets/types': 5.2.1 fs-extra: 7.0.1 human-id: 1.0.2 prettier: 2.8.4 - dev: true - /@esbuild-kit/cjs-loader@2.4.2: - resolution: {integrity: sha512-BDXFbYOJzT/NBEtp71cvsrGPwGAMGRB/349rwKuoxNSiKjPraNNnlK6MIIabViCjqZugu6j+xeMDlEkWdHHJSg==} + '@esbuild-kit/cjs-loader@2.4.2': dependencies: '@esbuild-kit/core-utils': 3.1.0 get-tsconfig: 4.5.0 - dev: true - /@esbuild-kit/core-utils@3.1.0: - resolution: {integrity: sha512-Uuk8RpCg/7fdHSceR1M6XbSZFSuMrxcePFuGgyvsBn+u339dk5OeL4jv2EojwTN2st/unJGsVm4qHWjWNmJ/tw==} + '@esbuild-kit/core-utils@3.1.0': dependencies: esbuild: 0.17.17 source-map-support: 0.5.21 - dev: true - /@esbuild-kit/esm-loader@2.5.5: - resolution: {integrity: sha512-Qwfvj/qoPbClxCRNuac1Du01r9gvNOT+pMYtJDapfB1eoGN1YlJ1BixLyL9WVENRx5RXgNLdfYdx/CuswlGhMw==} + '@esbuild-kit/esm-loader@2.5.5': dependencies: '@esbuild-kit/core-utils': 3.1.0 get-tsconfig: 4.5.0 - dev: true - /@esbuild/android-arm64@0.17.15: - resolution: {integrity: sha512-0kOB6Y7Br3KDVgHeg8PRcvfLkq+AccreK///B4Z6fNZGr/tNHX0z2VywCc7PTeWp+bPvjA5WMvNXltHw5QjAIA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: false + '@esbuild/android-arm64@0.17.15': optional: true - /@esbuild/android-arm64@0.17.17: - resolution: {integrity: sha512-jaJ5IlmaDLFPNttv0ofcwy/cfeY4bh/n705Tgh+eLObbGtQBK3EPAu+CzL95JVE4nFAliyrnEu0d32Q5foavqg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true + '@esbuild/android-arm64@0.17.17': optional: true - /@esbuild/android-arm@0.17.15: - resolution: {integrity: sha512-sRSOVlLawAktpMvDyJIkdLI/c/kdRTOqo8t6ImVxg8yT7LQDUYV5Rp2FKeEosLr6ZCja9UjYAzyRSxGteSJPYg==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - requiresBuild: true - dev: false + '@esbuild/android-arm@0.17.15': optional: true - /@esbuild/android-arm@0.17.17: - resolution: {integrity: sha512-E6VAZwN7diCa3labs0GYvhEPL2M94WLF8A+czO8hfjREXxba8Ng7nM5VxV+9ihNXIY1iQO1XxUU4P7hbqbICxg==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - requiresBuild: true - dev: true + '@esbuild/android-arm@0.17.17': optional: true - /@esbuild/android-x64@0.17.15: - resolution: {integrity: sha512-MzDqnNajQZ63YkaUWVl9uuhcWyEyh69HGpMIrf+acR4otMkfLJ4sUCxqwbCyPGicE9dVlrysI3lMcDBjGiBBcQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - requiresBuild: true - dev: false + '@esbuild/android-x64@0.17.15': optional: true - /@esbuild/android-x64@0.17.17: - resolution: {integrity: sha512-446zpfJ3nioMC7ASvJB1pszHVskkw4u/9Eu8s5yvvsSDTzYh4p4ZIRj0DznSl3FBF0Z/mZfrKXTtt0QCoFmoHA==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - requiresBuild: true - dev: true + '@esbuild/android-x64@0.17.17': optional: true - /@esbuild/darwin-arm64@0.17.15: - resolution: {integrity: sha512-7siLjBc88Z4+6qkMDxPT2juf2e8SJxmsbNVKFY2ifWCDT72v5YJz9arlvBw5oB4W/e61H1+HDB/jnu8nNg0rLA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: false + '@esbuild/darwin-arm64@0.17.15': optional: true - /@esbuild/darwin-arm64@0.17.17: - resolution: {integrity: sha512-m/gwyiBwH3jqfUabtq3GH31otL/0sE0l34XKpSIqR7NjQ/XHQ3lpmQHLHbG8AHTGCw8Ao059GvV08MS0bhFIJQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true + '@esbuild/darwin-arm64@0.17.17': optional: true - /@esbuild/darwin-x64@0.17.15: - resolution: {integrity: sha512-NbImBas2rXwYI52BOKTW342Tm3LTeVlaOQ4QPZ7XuWNKiO226DisFk/RyPk3T0CKZkKMuU69yOvlapJEmax7cg==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: false + '@esbuild/darwin-x64@0.17.15': optional: true - /@esbuild/darwin-x64@0.17.17: - resolution: {integrity: sha512-4utIrsX9IykrqYaXR8ob9Ha2hAY2qLc6ohJ8c0CN1DR8yWeMrTgYFjgdeQ9LIoTOfLetXjuCu5TRPHT9yKYJVg==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true + '@esbuild/darwin-x64@0.17.17': optional: true - /@esbuild/freebsd-arm64@0.17.15: - resolution: {integrity: sha512-Xk9xMDjBVG6CfgoqlVczHAdJnCs0/oeFOspFap5NkYAmRCT2qTn1vJWA2f419iMtsHSLm+O8B6SLV/HlY5cYKg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - dev: false + '@esbuild/freebsd-arm64@0.17.15': optional: true - /@esbuild/freebsd-arm64@0.17.17: - resolution: {integrity: sha512-4PxjQII/9ppOrpEwzQ1b0pXCsFLqy77i0GaHodrmzH9zq2/NEhHMAMJkJ635Ns4fyJPFOlHMz4AsklIyRqFZWA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - dev: true + '@esbuild/freebsd-arm64@0.17.17': optional: true - /@esbuild/freebsd-x64@0.17.15: - resolution: {integrity: sha512-3TWAnnEOdclvb2pnfsTWtdwthPfOz7qAfcwDLcfZyGJwm1SRZIMOeB5FODVhnM93mFSPsHB9b/PmxNNbSnd0RQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: false + '@esbuild/freebsd-x64@0.17.15': optional: true - /@esbuild/freebsd-x64@0.17.17: - resolution: {integrity: sha512-lQRS+4sW5S3P1sv0z2Ym807qMDfkmdhUYX30GRBURtLTrJOPDpoU0kI6pVz1hz3U0+YQ0tXGS9YWveQjUewAJw==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: true + '@esbuild/freebsd-x64@0.17.17': optional: true - /@esbuild/linux-arm64@0.17.15: - resolution: {integrity: sha512-T0MVnYw9KT6b83/SqyznTs/3Jg2ODWrZfNccg11XjDehIved2oQfrX/wVuev9N936BpMRaTR9I1J0tdGgUgpJA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false + '@esbuild/linux-arm64@0.17.15': optional: true - /@esbuild/linux-arm64@0.17.17: - resolution: {integrity: sha512-2+pwLx0whKY1/Vqt8lyzStyda1v0qjJ5INWIe+d8+1onqQxHLLi3yr5bAa4gvbzhZqBztifYEu8hh1La5+7sUw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true + '@esbuild/linux-arm64@0.17.17': optional: true - /@esbuild/linux-arm@0.17.15: - resolution: {integrity: sha512-MLTgiXWEMAMr8nmS9Gigx43zPRmEfeBfGCwxFQEMgJ5MC53QKajaclW6XDPjwJvhbebv+RzK05TQjvH3/aM4Xw==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: false + '@esbuild/linux-arm@0.17.15': optional: true - /@esbuild/linux-arm@0.17.17: - resolution: {integrity: sha512-biDs7bjGdOdcmIk6xU426VgdRUpGg39Yz6sT9Xp23aq+IEHDb/u5cbmu/pAANpDB4rZpY/2USPhCA+w9t3roQg==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true + '@esbuild/linux-arm@0.17.17': optional: true - /@esbuild/linux-ia32@0.17.15: - resolution: {integrity: sha512-wp02sHs015T23zsQtU4Cj57WiteiuASHlD7rXjKUyAGYzlOKDAjqK6bk5dMi2QEl/KVOcsjwL36kD+WW7vJt8Q==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true - dev: false + '@esbuild/linux-ia32@0.17.15': optional: true - /@esbuild/linux-ia32@0.17.17: - resolution: {integrity: sha512-IBTTv8X60dYo6P2t23sSUYym8fGfMAiuv7PzJ+0LcdAndZRzvke+wTVxJeCq4WgjppkOpndL04gMZIFvwoU34Q==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true - dev: true + '@esbuild/linux-ia32@0.17.17': optional: true - /@esbuild/linux-loong64@0.17.15: - resolution: {integrity: sha512-k7FsUJjGGSxwnBmMh8d7IbObWu+sF/qbwc+xKZkBe/lTAF16RqxRCnNHA7QTd3oS2AfGBAnHlXL67shV5bBThQ==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - requiresBuild: true - dev: false + '@esbuild/linux-loong64@0.17.15': optional: true - /@esbuild/linux-loong64@0.17.17: - resolution: {integrity: sha512-WVMBtcDpATjaGfWfp6u9dANIqmU9r37SY8wgAivuKmgKHE+bWSuv0qXEFt/p3qXQYxJIGXQQv6hHcm7iWhWjiw==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - requiresBuild: true - dev: true + '@esbuild/linux-loong64@0.17.17': optional: true - /@esbuild/linux-mips64el@0.17.15: - resolution: {integrity: sha512-ZLWk6czDdog+Q9kE/Jfbilu24vEe/iW/Sj2d8EVsmiixQ1rM2RKH2n36qfxK4e8tVcaXkvuV3mU5zTZviE+NVQ==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true - dev: false + '@esbuild/linux-mips64el@0.17.15': optional: true - /@esbuild/linux-mips64el@0.17.17: - resolution: {integrity: sha512-2kYCGh8589ZYnY031FgMLy0kmE4VoGdvfJkxLdxP4HJvWNXpyLhjOvxVsYjYZ6awqY4bgLR9tpdYyStgZZhi2A==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true - dev: true + '@esbuild/linux-mips64el@0.17.17': optional: true - /@esbuild/linux-ppc64@0.17.15: - resolution: {integrity: sha512-mY6dPkIRAiFHRsGfOYZC8Q9rmr8vOBZBme0/j15zFUKM99d4ILY4WpOC7i/LqoY+RE7KaMaSfvY8CqjJtuO4xg==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - requiresBuild: true - dev: false + '@esbuild/linux-ppc64@0.17.15': optional: true - /@esbuild/linux-ppc64@0.17.17: - resolution: {integrity: sha512-KIdG5jdAEeAKogfyMTcszRxy3OPbZhq0PPsW4iKKcdlbk3YE4miKznxV2YOSmiK/hfOZ+lqHri3v8eecT2ATwQ==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - requiresBuild: true - dev: true + '@esbuild/linux-ppc64@0.17.17': optional: true - /@esbuild/linux-riscv64@0.17.15: - resolution: {integrity: sha512-EcyUtxffdDtWjjwIH8sKzpDRLcVtqANooMNASO59y+xmqqRYBBM7xVLQhqF7nksIbm2yHABptoioS9RAbVMWVA==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: false + '@esbuild/linux-riscv64@0.17.15': optional: true - /@esbuild/linux-riscv64@0.17.17: - resolution: {integrity: sha512-Cj6uWLBR5LWhcD/2Lkfg2NrkVsNb2sFM5aVEfumKB2vYetkA/9Uyc1jVoxLZ0a38sUhFk4JOVKH0aVdPbjZQeA==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: true + '@esbuild/linux-riscv64@0.17.17': optional: true - /@esbuild/linux-s390x@0.17.15: - resolution: {integrity: sha512-BuS6Jx/ezxFuHxgsfvz7T4g4YlVrmCmg7UAwboeyNNg0OzNzKsIZXpr3Sb/ZREDXWgt48RO4UQRDBxJN3B9Rbg==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - requiresBuild: true - dev: false + '@esbuild/linux-s390x@0.17.15': optional: true - /@esbuild/linux-s390x@0.17.17: - resolution: {integrity: sha512-lK+SffWIr0XsFf7E0srBjhpkdFVJf3HEgXCwzkm69kNbRar8MhezFpkIwpk0qo2IOQL4JE4mJPJI8AbRPLbuOQ==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - requiresBuild: true - dev: true + '@esbuild/linux-s390x@0.17.17': optional: true - /@esbuild/linux-x64@0.17.15: - resolution: {integrity: sha512-JsdS0EgEViwuKsw5tiJQo9UdQdUJYuB+Mf6HxtJSPN35vez1hlrNb1KajvKWF5Sa35j17+rW1ECEO9iNrIXbNg==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false + '@esbuild/linux-x64@0.17.15': optional: true - /@esbuild/linux-x64@0.17.17: - resolution: {integrity: sha512-XcSGTQcWFQS2jx3lZtQi7cQmDYLrpLRyz1Ns1DzZCtn898cWfm5Icx/DEWNcTU+T+tyPV89RQtDnI7qL2PObPg==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true + '@esbuild/linux-x64@0.17.17': optional: true - /@esbuild/netbsd-x64@0.17.15: - resolution: {integrity: sha512-R6fKjtUysYGym6uXf6qyNephVUQAGtf3n2RCsOST/neIwPqRWcnc3ogcielOd6pT+J0RDR1RGcy0ZY7d3uHVLA==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - dev: false + '@esbuild/netbsd-x64@0.17.15': optional: true - /@esbuild/netbsd-x64@0.17.17: - resolution: {integrity: sha512-RNLCDmLP5kCWAJR+ItLM3cHxzXRTe4N00TQyQiimq+lyqVqZWGPAvcyfUBM0isE79eEZhIuGN09rAz8EL5KdLA==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - dev: true + '@esbuild/netbsd-x64@0.17.17': optional: true - /@esbuild/openbsd-x64@0.17.15: - resolution: {integrity: sha512-mVD4PGc26b8PI60QaPUltYKeSX0wxuy0AltC+WCTFwvKCq2+OgLP4+fFd+hZXzO2xW1HPKcytZBdjqL6FQFa7w==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - dev: false + '@esbuild/openbsd-x64@0.17.15': optional: true - /@esbuild/openbsd-x64@0.17.17: - resolution: {integrity: sha512-PAXswI5+cQq3Pann7FNdcpSUrhrql3wKjj3gVkmuz6OHhqqYxKvi6GgRBoaHjaG22HV/ZZEgF9TlS+9ftHVigA==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - dev: true + '@esbuild/openbsd-x64@0.17.17': optional: true - /@esbuild/sunos-x64@0.17.15: - resolution: {integrity: sha512-U6tYPovOkw3459t2CBwGcFYfFRjivcJJc1WC8Q3funIwX8x4fP+R6xL/QuTPNGOblbq/EUDxj9GU+dWKX0oWlQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - requiresBuild: true - dev: false + '@esbuild/sunos-x64@0.17.15': optional: true - /@esbuild/sunos-x64@0.17.17: - resolution: {integrity: sha512-V63egsWKnx/4V0FMYkr9NXWrKTB5qFftKGKuZKFIrAkO/7EWLFnbBZNM1CvJ6Sis+XBdPws2YQSHF1Gqf1oj/Q==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - requiresBuild: true - dev: true + '@esbuild/sunos-x64@0.17.17': optional: true - /@esbuild/win32-arm64@0.17.15: - resolution: {integrity: sha512-W+Z5F++wgKAleDABemiyXVnzXgvRFs+GVKThSI+mGgleLWluv0D7Diz4oQpgdpNzh4i2nNDzQtWbjJiqutRp6Q==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: false + '@esbuild/win32-arm64@0.17.15': optional: true - /@esbuild/win32-arm64@0.17.17: - resolution: {integrity: sha512-YtUXLdVnd6YBSYlZODjWzH+KzbaubV0YVd6UxSfoFfa5PtNJNaW+1i+Hcmjpg2nEe0YXUCNF5bkKy1NnBv1y7Q==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true + '@esbuild/win32-arm64@0.17.17': optional: true - /@esbuild/win32-ia32@0.17.15: - resolution: {integrity: sha512-Muz/+uGgheShKGqSVS1KsHtCyEzcdOn/W/Xbh6H91Etm+wiIfwZaBn1W58MeGtfI8WA961YMHFYTthBdQs4t+w==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: false + '@esbuild/win32-ia32@0.17.15': optional: true - /@esbuild/win32-ia32@0.17.17: - resolution: {integrity: sha512-yczSLRbDdReCO74Yfc5tKG0izzm+lPMYyO1fFTcn0QNwnKmc3K+HdxZWLGKg4pZVte7XVgcFku7TIZNbWEJdeQ==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true + '@esbuild/win32-ia32@0.17.17': optional: true - /@esbuild/win32-x64@0.17.15: - resolution: {integrity: sha512-DjDa9ywLUUmjhV2Y9wUTIF+1XsmuFGvZoCmOWkli1XcNAh5t25cc7fgsCx4Zi/Uurep3TTLyDiKATgGEg61pkA==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: false + '@esbuild/win32-x64@0.17.15': optional: true - /@esbuild/win32-x64@0.17.17: - resolution: {integrity: sha512-FNZw7H3aqhF9OyRQbDDnzUApDXfC1N6fgBhkqEO2jvYCJ+DxMTfZVqg3AX0R1khg1wHTBRD5SdcibSJ+XF6bFg==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true + '@esbuild/win32-x64@0.17.17': optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.57.0): - resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + '@eslint-community/eslint-utils@4.4.0(eslint@8.57.0)': dependencies: eslint: 8.57.0 eslint-visitor-keys: 3.4.3 - dev: true - /@eslint-community/regexpp@4.10.0: - resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - dev: true + '@eslint-community/regexpp@4.10.0': {} - /@eslint/eslintrc@2.1.4: - resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@eslint/eslintrc@2.1.4': dependencies: ajv: 6.12.6 debug: 4.3.4(supports-color@8.1.1) @@ -2994,30 +8325,18 @@ packages: strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color - dev: true - /@eslint/js@8.57.0: - resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true + '@eslint/js@8.57.0': {} - /@ethereumjs/rlp@4.0.1: - resolution: {integrity: sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==} - engines: {node: '>=14'} - hasBin: true - dev: true + '@ethereumjs/rlp@4.0.1': {} - /@ethereumjs/util@8.1.0: - resolution: {integrity: sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==} - engines: {node: '>=14'} + '@ethereumjs/util@8.1.0': dependencies: '@ethereumjs/rlp': 4.0.1 ethereum-cryptography: 2.1.3 micro-ftch: 0.3.1 - dev: true - /@ethersproject/abi@5.7.0: - resolution: {integrity: sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==} + '@ethersproject/abi@5.7.0': dependencies: '@ethersproject/address': 5.7.0 '@ethersproject/bignumber': 5.7.0 @@ -3029,8 +8348,7 @@ packages: '@ethersproject/properties': 5.7.0 '@ethersproject/strings': 5.7.0 - /@ethersproject/abstract-provider@5.7.0: - resolution: {integrity: sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==} + '@ethersproject/abstract-provider@5.7.0': dependencies: '@ethersproject/bignumber': 5.7.0 '@ethersproject/bytes': 5.7.0 @@ -3040,8 +8358,7 @@ packages: '@ethersproject/transactions': 5.7.0 '@ethersproject/web': 5.7.1 - /@ethersproject/abstract-signer@5.7.0: - resolution: {integrity: sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==} + '@ethersproject/abstract-signer@5.7.0': dependencies: '@ethersproject/abstract-provider': 5.7.0 '@ethersproject/bignumber': 5.7.0 @@ -3049,8 +8366,7 @@ packages: '@ethersproject/logger': 5.7.0 '@ethersproject/properties': 5.7.0 - /@ethersproject/address@5.7.0: - resolution: {integrity: sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==} + '@ethersproject/address@5.7.0': dependencies: '@ethersproject/bignumber': 5.7.0 '@ethersproject/bytes': 5.7.0 @@ -3058,36 +8374,30 @@ packages: '@ethersproject/logger': 5.7.0 '@ethersproject/rlp': 5.7.0 - /@ethersproject/base64@5.7.0: - resolution: {integrity: sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==} + '@ethersproject/base64@5.7.0': dependencies: '@ethersproject/bytes': 5.7.0 - /@ethersproject/basex@5.7.0: - resolution: {integrity: sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==} + '@ethersproject/basex@5.7.0': dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/properties': 5.7.0 - /@ethersproject/bignumber@5.7.0: - resolution: {integrity: sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==} + '@ethersproject/bignumber@5.7.0': dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/logger': 5.7.0 bn.js: 5.2.1 - /@ethersproject/bytes@5.7.0: - resolution: {integrity: sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==} + '@ethersproject/bytes@5.7.0': dependencies: '@ethersproject/logger': 5.7.0 - /@ethersproject/constants@5.7.0: - resolution: {integrity: sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==} + '@ethersproject/constants@5.7.0': dependencies: '@ethersproject/bignumber': 5.7.0 - /@ethersproject/contracts@5.7.0: - resolution: {integrity: sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==} + '@ethersproject/contracts@5.7.0': dependencies: '@ethersproject/abi': 5.7.0 '@ethersproject/abstract-provider': 5.7.0 @@ -3100,8 +8410,7 @@ packages: '@ethersproject/properties': 5.7.0 '@ethersproject/transactions': 5.7.0 - /@ethersproject/hash@5.7.0: - resolution: {integrity: sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==} + '@ethersproject/hash@5.7.0': dependencies: '@ethersproject/abstract-signer': 5.7.0 '@ethersproject/address': 5.7.0 @@ -3113,8 +8422,7 @@ packages: '@ethersproject/properties': 5.7.0 '@ethersproject/strings': 5.7.0 - /@ethersproject/hdnode@5.7.0: - resolution: {integrity: sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==} + '@ethersproject/hdnode@5.7.0': dependencies: '@ethersproject/abstract-signer': 5.7.0 '@ethersproject/basex': 5.7.0 @@ -3129,8 +8437,7 @@ packages: '@ethersproject/transactions': 5.7.0 '@ethersproject/wordlists': 5.7.0 - /@ethersproject/json-wallets@5.7.0: - resolution: {integrity: sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==} + '@ethersproject/json-wallets@5.7.0': dependencies: '@ethersproject/abstract-signer': 5.7.0 '@ethersproject/address': 5.7.0 @@ -3146,33 +8453,27 @@ packages: aes-js: 3.0.0 scrypt-js: 3.0.1 - /@ethersproject/keccak256@5.7.0: - resolution: {integrity: sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==} + '@ethersproject/keccak256@5.7.0': dependencies: '@ethersproject/bytes': 5.7.0 js-sha3: 0.8.0 - /@ethersproject/logger@5.7.0: - resolution: {integrity: sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==} + '@ethersproject/logger@5.7.0': {} - /@ethersproject/networks@5.7.1: - resolution: {integrity: sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==} + '@ethersproject/networks@5.7.1': dependencies: '@ethersproject/logger': 5.7.0 - /@ethersproject/pbkdf2@5.7.0: - resolution: {integrity: sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==} + '@ethersproject/pbkdf2@5.7.0': dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/sha2': 5.7.0 - /@ethersproject/properties@5.7.0: - resolution: {integrity: sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==} + '@ethersproject/properties@5.7.0': dependencies: '@ethersproject/logger': 5.7.0 - /@ethersproject/providers@5.7.2: - resolution: {integrity: sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==} + '@ethersproject/providers@5.7.2': dependencies: '@ethersproject/abstract-provider': 5.7.0 '@ethersproject/abstract-signer': 5.7.0 @@ -3198,27 +8499,23 @@ packages: - bufferutil - utf-8-validate - /@ethersproject/random@5.7.0: - resolution: {integrity: sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==} + '@ethersproject/random@5.7.0': dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/logger': 5.7.0 - /@ethersproject/rlp@5.7.0: - resolution: {integrity: sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==} + '@ethersproject/rlp@5.7.0': dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/logger': 5.7.0 - /@ethersproject/sha2@5.7.0: - resolution: {integrity: sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==} + '@ethersproject/sha2@5.7.0': dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/logger': 5.7.0 hash.js: 1.1.7 - /@ethersproject/signing-key@5.7.0: - resolution: {integrity: sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==} + '@ethersproject/signing-key@5.7.0': dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/logger': 5.7.0 @@ -3227,8 +8524,7 @@ packages: elliptic: 6.5.4 hash.js: 1.1.7 - /@ethersproject/solidity@5.7.0: - resolution: {integrity: sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==} + '@ethersproject/solidity@5.7.0': dependencies: '@ethersproject/bignumber': 5.7.0 '@ethersproject/bytes': 5.7.0 @@ -3237,15 +8533,13 @@ packages: '@ethersproject/sha2': 5.7.0 '@ethersproject/strings': 5.7.0 - /@ethersproject/strings@5.7.0: - resolution: {integrity: sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==} + '@ethersproject/strings@5.7.0': dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/constants': 5.7.0 '@ethersproject/logger': 5.7.0 - /@ethersproject/transactions@5.7.0: - resolution: {integrity: sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==} + '@ethersproject/transactions@5.7.0': dependencies: '@ethersproject/address': 5.7.0 '@ethersproject/bignumber': 5.7.0 @@ -3257,15 +8551,13 @@ packages: '@ethersproject/rlp': 5.7.0 '@ethersproject/signing-key': 5.7.0 - /@ethersproject/units@5.7.0: - resolution: {integrity: sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==} + '@ethersproject/units@5.7.0': dependencies: '@ethersproject/bignumber': 5.7.0 '@ethersproject/constants': 5.7.0 '@ethersproject/logger': 5.7.0 - /@ethersproject/wallet@5.7.0: - resolution: {integrity: sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==} + '@ethersproject/wallet@5.7.0': dependencies: '@ethersproject/abstract-provider': 5.7.0 '@ethersproject/abstract-signer': 5.7.0 @@ -3283,8 +8575,7 @@ packages: '@ethersproject/transactions': 5.7.0 '@ethersproject/wordlists': 5.7.0 - /@ethersproject/web@5.7.1: - resolution: {integrity: sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==} + '@ethersproject/web@5.7.1': dependencies: '@ethersproject/base64': 5.7.0 '@ethersproject/bytes': 5.7.0 @@ -3292,8 +8583,7 @@ packages: '@ethersproject/properties': 5.7.0 '@ethersproject/strings': 5.7.0 - /@ethersproject/wordlists@5.7.0: - resolution: {integrity: sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==} + '@ethersproject/wordlists@5.7.0': dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/hash': 5.7.0 @@ -3301,26 +8591,17 @@ packages: '@ethersproject/properties': 5.7.0 '@ethersproject/strings': 5.7.0 - /@fastify/accept-negotiator@1.1.0: - resolution: {integrity: sha512-OIHZrb2ImZ7XG85HXOONLcJWGosv7sIvM2ifAPQVhg9Lv7qdmMBNVaai4QTdyuaqbKM5eO6sLSQOYI7wEQeCJQ==} - engines: {node: '>=14'} - dev: false + '@fastify/accept-negotiator@1.1.0': {} - /@fastify/ajv-compiler@3.5.0: - resolution: {integrity: sha512-ebbEtlI7dxXF5ziNdr05mOY8NnDiPB1XvAlLHctRt/Rc+C3LCOVW5imUVX+mhvUhnNzmPBHewUkOFgGlCxgdAA==} + '@fastify/ajv-compiler@3.5.0': dependencies: ajv: 8.12.0 ajv-formats: 2.1.1(ajv@8.12.0) fast-uri: 2.2.0 - dev: false - /@fastify/busboy@2.1.1: - resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} - engines: {node: '>=14'} - dev: true + '@fastify/busboy@2.1.1': {} - /@fastify/compress@6.5.0: - resolution: {integrity: sha512-AqUOK714jY7qkzbQbS4zyI4yNFgnRoOJ3eH/oV1T9f5fFdPDRdrFxm5de1ya5n+as4bvitjwU9EY7zvtT9pI2A==} + '@fastify/compress@6.5.0': dependencies: '@fastify/accept-negotiator': 1.1.0 fastify-plugin: 4.5.1 @@ -3330,89 +8611,54 @@ packages: peek-stream: 1.1.3 pump: 3.0.0 pumpify: 2.0.1 - dev: false - /@fastify/cors@8.3.0: - resolution: {integrity: sha512-oj9xkka2Tg0MrwuKhsSUumcAkfp2YCnKxmFEusi01pjk1YrdDsuSYTHXEelWNW+ilSy/ApZq0c2SvhKrLX0H1g==} + '@fastify/cors@8.3.0': dependencies: fastify-plugin: 4.5.1 mnemonist: 0.39.5 - dev: false - /@fastify/deepmerge@1.3.0: - resolution: {integrity: sha512-J8TOSBq3SoZbDhM9+R/u77hP93gz/rajSA+K2kGyijPpORPWUXHUpTaleoj+92As0S9uPRP7Oi8IqMf0u+ro6A==} - dev: false + '@fastify/deepmerge@1.3.0': {} - /@fastify/error@3.3.0: - resolution: {integrity: sha512-dj7vjIn1Ar8sVXj2yAXiMNCJDmS9MQ9XMlIecX2dIzzhjSHCyKo4DdXjXMs7wKW2kj6yvVRSpuQjOZ3YLrh56w==} - dev: false + '@fastify/error@3.3.0': {} - /@fastify/fast-json-stringify-compiler@4.3.0: - resolution: {integrity: sha512-aZAXGYo6m22Fk1zZzEUKBvut/CIIQe/BapEORnxiD5Qr0kPHqqI69NtEMCme74h+at72sPhbkb4ZrLd1W3KRLA==} + '@fastify/fast-json-stringify-compiler@4.3.0': dependencies: fast-json-stringify: 5.8.0 - dev: false - /@gar/promisify@1.1.3: - resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} - dev: false + '@gar/promisify@1.1.3': {} - /@humanwhocodes/config-array@0.11.14: - resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} - engines: {node: '>=10.10.0'} + '@humanwhocodes/config-array@0.11.14': dependencies: '@humanwhocodes/object-schema': 2.0.2 debug: 4.3.4(supports-color@8.1.1) minimatch: 3.1.2 transitivePeerDependencies: - supports-color - dev: true - /@humanwhocodes/module-importer@1.0.1: - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} - engines: {node: '>=12.22'} - dev: true + '@humanwhocodes/module-importer@1.0.1': {} - /@humanwhocodes/object-schema@2.0.2: - resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} - dev: true + '@humanwhocodes/object-schema@2.0.2': {} - /@improbable-eng/grpc-web-node-http-transport@0.15.0(@improbable-eng/grpc-web@0.15.0): - resolution: {integrity: sha512-HLgJfVolGGpjc9DWPhmMmXJx8YGzkek7jcCFO1YYkSOoO81MWRZentPOd/JiKiZuU08wtc4BG+WNuGzsQB5jZA==} - peerDependencies: - '@improbable-eng/grpc-web': '>=0.13.0' + '@improbable-eng/grpc-web-node-http-transport@0.15.0(@improbable-eng/grpc-web@0.15.0(google-protobuf@3.21.2))': dependencies: '@improbable-eng/grpc-web': 0.15.0(google-protobuf@3.21.2) - dev: false - /@improbable-eng/grpc-web@0.15.0(google-protobuf@3.21.2): - resolution: {integrity: sha512-ERft9/0/8CmYalqOVnJnpdDry28q+j+nAlFFARdjyxXDJ+Mhgv9+F600QC8BR9ygOfrXRlAk6CvST2j+JCpQPg==} - peerDependencies: - google-protobuf: ^3.14.0 + '@improbable-eng/grpc-web@0.15.0(google-protobuf@3.21.2)': dependencies: browser-headers: 0.4.1 google-protobuf: 3.21.2 - dev: false - /@istanbuljs/load-nyc-config@1.1.0: - resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} - engines: {node: '>=8'} + '@istanbuljs/load-nyc-config@1.1.0': dependencies: camelcase: 5.3.1 find-up: 4.1.0 get-package-type: 0.1.0 js-yaml: 3.14.1 resolve-from: 5.0.0 - dev: true - /@istanbuljs/schema@0.1.3: - resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} - engines: {node: '>=8'} - dev: true + '@istanbuljs/schema@0.1.3': {} - /@jest/console@29.5.0: - resolution: {integrity: sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/console@29.5.0': dependencies: '@jest/types': 29.5.0 '@types/node': 18.15.11 @@ -3420,16 +8666,8 @@ packages: jest-message-util: 29.5.0 jest-util: 29.5.0 slash: 3.0.0 - dev: true - /@jest/core@29.5.0: - resolution: {integrity: sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true + '@jest/core@29.5.0': dependencies: '@jest/console': 29.5.0 '@jest/reporters': 29.5.0 @@ -3462,38 +8700,26 @@ packages: transitivePeerDependencies: - supports-color - ts-node - dev: true - /@jest/environment@29.5.0: - resolution: {integrity: sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/environment@29.5.0': dependencies: '@jest/fake-timers': 29.5.0 '@jest/types': 29.5.0 '@types/node': 18.15.11 jest-mock: 29.5.0 - dev: true - /@jest/expect-utils@29.5.0: - resolution: {integrity: sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/expect-utils@29.5.0': dependencies: jest-get-type: 29.4.3 - dev: true - /@jest/expect@29.5.0: - resolution: {integrity: sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/expect@29.5.0': dependencies: expect: 29.5.0 jest-snapshot: 29.5.0 transitivePeerDependencies: - supports-color - dev: true - /@jest/fake-timers@29.5.0: - resolution: {integrity: sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/fake-timers@29.5.0': dependencies: '@jest/types': 29.5.0 '@sinonjs/fake-timers': 10.0.2 @@ -3501,11 +8727,8 @@ packages: jest-message-util: 29.5.0 jest-mock: 29.5.0 jest-util: 29.5.0 - dev: true - /@jest/globals@29.5.0: - resolution: {integrity: sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/globals@29.5.0': dependencies: '@jest/environment': 29.5.0 '@jest/expect': 29.5.0 @@ -3513,16 +8736,8 @@ packages: jest-mock: 29.5.0 transitivePeerDependencies: - supports-color - dev: true - /@jest/reporters@29.5.0: - resolution: {integrity: sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true + '@jest/reporters@29.5.0': dependencies: '@bcoe/v8-coverage': 0.2.3 '@jest/console': 29.5.0 @@ -3550,47 +8765,32 @@ packages: v8-to-istanbul: 9.1.0 transitivePeerDependencies: - supports-color - dev: true - /@jest/schemas@29.4.3: - resolution: {integrity: sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/schemas@29.4.3': dependencies: '@sinclair/typebox': 0.25.24 - dev: true - /@jest/source-map@29.4.3: - resolution: {integrity: sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/source-map@29.4.3': dependencies: '@jridgewell/trace-mapping': 0.3.18 callsites: 3.1.0 graceful-fs: 4.2.11 - dev: true - /@jest/test-result@29.5.0: - resolution: {integrity: sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/test-result@29.5.0': dependencies: '@jest/console': 29.5.0 '@jest/types': 29.5.0 '@types/istanbul-lib-coverage': 2.0.4 collect-v8-coverage: 1.0.1 - dev: true - /@jest/test-sequencer@29.5.0: - resolution: {integrity: sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/test-sequencer@29.5.0': dependencies: '@jest/test-result': 29.5.0 graceful-fs: 4.2.11 jest-haste-map: 29.5.0 slash: 3.0.0 - dev: true - /@jest/transform@29.5.0: - resolution: {integrity: sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/transform@29.5.0': dependencies: '@babel/core': 7.21.4 '@jest/types': 29.5.0 @@ -3609,11 +8809,8 @@ packages: write-file-atomic: 4.0.2 transitivePeerDependencies: - supports-color - dev: true - /@jest/types@29.5.0: - resolution: {integrity: sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/types@29.5.0': dependencies: '@jest/schemas': 29.4.3 '@types/istanbul-lib-coverage': 2.0.4 @@ -3621,78 +8818,31 @@ packages: '@types/node': 18.15.11 '@types/yargs': 17.0.24 chalk: 4.1.2 - dev: true - /@jridgewell/gen-mapping@0.3.3: - resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} - engines: {node: '>=6.0.0'} + '@jridgewell/gen-mapping@0.3.3': dependencies: '@jridgewell/set-array': 1.1.2 '@jridgewell/sourcemap-codec': 1.4.15 '@jridgewell/trace-mapping': 0.3.18 - dev: true - - /@jridgewell/gen-mapping@0.3.5: - resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.25 - dev: true - - /@jridgewell/resolve-uri@3.1.0: - resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} - engines: {node: '>=6.0.0'} - dev: true - - /@jridgewell/resolve-uri@3.1.2: - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} - engines: {node: '>=6.0.0'} - dev: true - /@jridgewell/set-array@1.1.2: - resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} - engines: {node: '>=6.0.0'} - dev: true + '@jridgewell/resolve-uri@3.1.0': {} - /@jridgewell/set-array@1.2.1: - resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} - engines: {node: '>=6.0.0'} - dev: true + '@jridgewell/set-array@1.1.2': {} - /@jridgewell/sourcemap-codec@1.4.14: - resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} - dev: true + '@jridgewell/sourcemap-codec@1.4.14': {} - /@jridgewell/sourcemap-codec@1.4.15: - resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - dev: true + '@jridgewell/sourcemap-codec@1.4.15': {} - /@jridgewell/trace-mapping@0.3.18: - resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==} + '@jridgewell/trace-mapping@0.3.18': dependencies: '@jridgewell/resolve-uri': 3.1.0 '@jridgewell/sourcemap-codec': 1.4.14 - dev: true - - /@jridgewell/trace-mapping@0.3.25: - resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 - dev: true - /@koa/cors@4.0.0: - resolution: {integrity: sha512-Y4RrbvGTlAaa04DBoPBWJqDR5gPj32OOz827ULXfgB1F7piD1MB/zwn8JR2LAnvdILhxUbXbkXGWuNVsFuVFCQ==} - engines: {node: '>= 14.0.0'} + '@koa/cors@4.0.0': dependencies: vary: 1.1.2 - dev: false - /@koa/router@12.0.1: - resolution: {integrity: sha512-ribfPYfHb+Uw3b27Eiw6NPqjhIhTpVFzEWLwyc/1Xp+DCdwRRyIlAUODX+9bPARF6aQtUu1+/PHzdNvRzcs/+Q==} - engines: {node: '>= 12'} + '@koa/router@12.0.1': dependencies: debug: 4.3.4(supports-color@8.1.1) http-errors: 2.0.0 @@ -3701,19 +8851,15 @@ packages: path-to-regexp: 6.2.1 transitivePeerDependencies: - supports-color - dev: false - /@manypkg/find-root@1.1.0: - resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} + '@manypkg/find-root@1.1.0': dependencies: '@babel/runtime': 7.21.0 '@types/node': 12.20.55 find-up: 4.1.0 fs-extra: 8.1.0 - dev: true - /@manypkg/get-packages@1.1.3: - resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} + '@manypkg/get-packages@1.1.3': dependencies: '@babel/runtime': 7.21.0 '@changesets/types': 4.1.0 @@ -3721,151 +8867,71 @@ packages: fs-extra: 8.1.0 globby: 11.1.0 read-yaml-file: 1.1.0 - dev: true - /@metamask/eth-sig-util@4.0.1: - resolution: {integrity: sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ==} - engines: {node: '>=12.0.0'} + '@metamask/eth-sig-util@4.0.1': dependencies: ethereumjs-abi: 0.6.8 ethereumjs-util: 6.2.1 ethjs-util: 0.1.6 tweetnacl: 1.0.3 tweetnacl-util: 0.15.1 - dev: true - /@noble/curves@1.2.0: - resolution: {integrity: sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==} + '@noble/curves@1.2.0': dependencies: '@noble/hashes': 1.3.2 - dev: false - /@noble/curves@1.3.0: - resolution: {integrity: sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA==} + '@noble/curves@1.3.0': dependencies: '@noble/hashes': 1.3.3 - dev: true - /@noble/hashes@1.2.0: - resolution: {integrity: sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==} - dev: true + '@noble/hashes@1.2.0': {} - /@noble/hashes@1.3.2: - resolution: {integrity: sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==} - engines: {node: '>= 16'} - dev: false + '@noble/hashes@1.3.2': {} - /@noble/hashes@1.3.3: - resolution: {integrity: sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==} - engines: {node: '>= 16'} - dev: true + '@noble/hashes@1.3.3': {} - /@noble/secp256k1@1.7.1: - resolution: {integrity: sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==} - dev: true + '@noble/secp256k1@1.7.1': {} - /@nodelib/fs.scandir@2.1.5: - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} + '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 run-parallel: 1.2.0 - /@nodelib/fs.stat@2.0.5: - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} + '@nodelib/fs.stat@2.0.5': {} - /@nodelib/fs.walk@1.2.8: - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} + '@nodelib/fs.walk@1.2.8': dependencies: '@nodelib/fs.scandir': 2.1.5 fastq: 1.15.0 - /@nomicfoundation/edr-darwin-arm64@0.3.0: - resolution: {integrity: sha512-Gg3jB1NJtqSXHjivSs5tws17r4w0V1aEW6/G6qJFYIGH+EnuNXCDXmNuYQ6++rQ7xBp56wueq93ILmtbyeGLwA==} - engines: {node: '>= 18'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true + '@nomicfoundation/edr-darwin-arm64@0.3.0': optional: true - /@nomicfoundation/edr-darwin-x64@0.3.0: - resolution: {integrity: sha512-9leJCZx8jTdb0mIxY/pHypZViToZ7bS49CpwG8TTAi37HhgSUlM/iA4vrC7dA2LiBG+bXx/9BPJ0M/x0xP7EvQ==} - engines: {node: '>= 18'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true + '@nomicfoundation/edr-darwin-x64@0.3.0': optional: true - /@nomicfoundation/edr-linux-arm64-gnu@0.3.0: - resolution: {integrity: sha512-fU3zE94J3IeFZArpMeOdX4+cPZ2+rJlqd7clIlxI8zAxcTNDE9tV8jQsugQEI6ufi1ibEPuG26kJorEvIhBQgw==} - engines: {node: '>= 18'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true + '@nomicfoundation/edr-linux-arm64-gnu@0.3.0': optional: true - /@nomicfoundation/edr-linux-arm64-musl@0.3.0: - resolution: {integrity: sha512-ya+kvEazgGZ+4HeJ/dc12je3DdiE0fzW4HVVkFreWPh1ZVKlH3nXtGN8I5FXO6eOMvvD0gdph6mDLo7z6S2NTg==} - engines: {node: '>= 18'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true + '@nomicfoundation/edr-linux-arm64-musl@0.3.0': optional: true - /@nomicfoundation/edr-linux-x64-gnu@0.3.0: - resolution: {integrity: sha512-ODi6NytOIYJLaKypzbgb7lWvR/YAOj6MhVdj0ZlySjyG/r+4yLfEdWXalYeMtTPw7oWwo7cncZNT7vaxcboSfQ==} - engines: {node: '>= 18'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true + '@nomicfoundation/edr-linux-x64-gnu@0.3.0': optional: true - /@nomicfoundation/edr-linux-x64-musl@0.3.0: - resolution: {integrity: sha512-4+5kcETwTrrrRKl7Xi2RsEgN391w1ZyPlZWSC73z3zqHtllriSiynn7yeJedpLOPMUTvZKaoZHf6Ahguj6/UaA==} - engines: {node: '>= 18'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true + '@nomicfoundation/edr-linux-x64-musl@0.3.0': optional: true - /@nomicfoundation/edr-win32-arm64-msvc@0.3.0: - resolution: {integrity: sha512-8Tmn2kwnx0ZEuj3E4zlP4CH9hMeuZStq4E1Q1um3LyuZ9f+0XdZoHvgSjskeTwxmkHcp4A5S3yg/noP1Auc8IA==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true + '@nomicfoundation/edr-win32-arm64-msvc@0.3.0': optional: true - /@nomicfoundation/edr-win32-ia32-msvc@0.3.0: - resolution: {integrity: sha512-6SRzowPhYeE0dU7oTpHePj0YCHwhZ+VvjHuJh0pJS+FmzduOJgzKX+tU7wLRCtYCMrb9/7sIr9HqsUsD/pTrVg==} - engines: {node: '>= 18'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true + '@nomicfoundation/edr-win32-ia32-msvc@0.3.0': optional: true - /@nomicfoundation/edr-win32-x64-msvc@0.3.0: - resolution: {integrity: sha512-f54/qch6q9E5G2zVi5TqONZSwz9ILJckRg2pAbiZlofZMVplef9iEkPT4Q6A40YWdB9Oo+hDfpC3OaYLzcf5OQ==} - engines: {node: '>= 18'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true + '@nomicfoundation/edr-win32-x64-msvc@0.3.0': optional: true - /@nomicfoundation/edr@0.3.0: - resolution: {integrity: sha512-ygGAHss97Ii1TqPEo7lz1vfVKe/NhvvDK+78ehayOULhb1dxro+zP5PwVtXEgf5Qpum2TLIu2vZ7EqI9ft9ZwQ==} - engines: {node: '>= 18'} + '@nomicfoundation/edr@0.3.0': optionalDependencies: '@nomicfoundation/edr-darwin-arm64': 0.3.0 '@nomicfoundation/edr-darwin-x64': 0.3.0 @@ -3876,60 +8942,31 @@ packages: '@nomicfoundation/edr-win32-arm64-msvc': 0.3.0 '@nomicfoundation/edr-win32-ia32-msvc': 0.3.0 '@nomicfoundation/edr-win32-x64-msvc': 0.3.0 - dev: true - /@nomicfoundation/ethereumjs-common@4.0.4: - resolution: {integrity: sha512-9Rgb658lcWsjiicr5GzNCjI1llow/7r0k50dLL95OJ+6iZJcVbi15r3Y0xh2cIO+zgX0WIHcbzIu6FeQf9KPrg==} + '@nomicfoundation/ethereumjs-common@4.0.4': dependencies: '@nomicfoundation/ethereumjs-util': 9.0.4 transitivePeerDependencies: - c-kzg - dev: true - /@nomicfoundation/ethereumjs-rlp@5.0.4: - resolution: {integrity: sha512-8H1S3s8F6QueOc/X92SdrA4RDenpiAEqMg5vJH99kcQaCy/a3Q6fgseo75mgWlbanGJXSlAPtnCeG9jvfTYXlw==} - engines: {node: '>=18'} - hasBin: true - dev: true + '@nomicfoundation/ethereumjs-rlp@5.0.4': {} - /@nomicfoundation/ethereumjs-tx@5.0.4: - resolution: {integrity: sha512-Xjv8wAKJGMrP1f0n2PeyfFCCojHd7iS3s/Ab7qzF1S64kxZ8Z22LCMynArYsVqiFx6rzYy548HNVEyI+AYN/kw==} - engines: {node: '>=18'} - peerDependencies: - c-kzg: ^2.1.2 - peerDependenciesMeta: - c-kzg: - optional: true + '@nomicfoundation/ethereumjs-tx@5.0.4': dependencies: '@nomicfoundation/ethereumjs-common': 4.0.4 '@nomicfoundation/ethereumjs-rlp': 5.0.4 '@nomicfoundation/ethereumjs-util': 9.0.4 ethereum-cryptography: 0.1.3 - dev: true - /@nomicfoundation/ethereumjs-util@9.0.4: - resolution: {integrity: sha512-sLOzjnSrlx9Bb9EFNtHzK/FJFsfg2re6bsGqinFinH1gCqVfz9YYlXiMWwDM4C/L4ywuHFCYwfKTVr/QHQcU0Q==} - engines: {node: '>=18'} - peerDependencies: - c-kzg: ^2.1.2 - peerDependenciesMeta: - c-kzg: - optional: true + '@nomicfoundation/ethereumjs-util@9.0.4': dependencies: '@nomicfoundation/ethereumjs-rlp': 5.0.4 ethereum-cryptography: 0.1.3 - dev: true - /@nomicfoundation/hardhat-chai-matchers@1.0.6(@nomiclabs/hardhat-ethers@2.2.3)(chai@4.4.1)(ethers@5.7.2)(hardhat@2.22.0): - resolution: {integrity: sha512-f5ZMNmabZeZegEfuxn/0kW+mm7+yV7VNDxLpMOMGXWFJ2l/Ct3QShujzDRF9cOkK9Ui/hbDeOWGZqyQALDXVCQ==} - peerDependencies: - '@nomiclabs/hardhat-ethers': ^2.0.0 - chai: ^4.2.0 - ethers: ^5.0.0 - hardhat: ^2.9.4 + '@nomicfoundation/hardhat-chai-matchers@1.0.6(@nomiclabs/hardhat-ethers@2.2.3(ethers@5.7.2)(hardhat@2.22.0(typescript@5.4.2)))(chai@4.4.1)(ethers@5.7.2)(hardhat@2.22.0(typescript@5.4.2))': dependencies: '@ethersproject/abi': 5.7.0 - '@nomiclabs/hardhat-ethers': 2.2.3(ethers@5.7.2)(hardhat@2.22.0) + '@nomiclabs/hardhat-ethers': 2.2.3(ethers@5.7.2)(hardhat@2.22.0(typescript@5.4.2)) '@types/chai-as-promised': 7.1.8 chai: 4.4.1 chai-as-promised: 7.1.1(chai@4.4.1) @@ -3937,101 +8974,38 @@ packages: ethers: 5.7.2 hardhat: 2.22.0(typescript@5.4.2) ordinal: 1.0.3 - dev: true - /@nomicfoundation/solidity-analyzer-darwin-arm64@0.1.1: - resolution: {integrity: sha512-KcTodaQw8ivDZyF+D76FokN/HdpgGpfjc/gFCImdLUyqB6eSWVaZPazMbeAjmfhx3R0zm/NYVzxwAokFKgrc0w==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true + '@nomicfoundation/solidity-analyzer-darwin-arm64@0.1.1': optional: true - /@nomicfoundation/solidity-analyzer-darwin-x64@0.1.1: - resolution: {integrity: sha512-XhQG4BaJE6cIbjAVtzGOGbK3sn1BO9W29uhk9J8y8fZF1DYz0Doj8QDMfpMu+A6TjPDs61lbsmeYodIDnfveSA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true + '@nomicfoundation/solidity-analyzer-darwin-x64@0.1.1': optional: true - /@nomicfoundation/solidity-analyzer-freebsd-x64@0.1.1: - resolution: {integrity: sha512-GHF1VKRdHW3G8CndkwdaeLkVBi5A9u2jwtlS7SLhBc8b5U/GcoL39Q+1CSO3hYqePNP+eV5YI7Zgm0ea6kMHoA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: true + '@nomicfoundation/solidity-analyzer-freebsd-x64@0.1.1': optional: true - /@nomicfoundation/solidity-analyzer-linux-arm64-gnu@0.1.1: - resolution: {integrity: sha512-g4Cv2fO37ZsUENQ2vwPnZc2zRenHyAxHcyBjKcjaSmmkKrFr64yvzeNO8S3GBFCo90rfochLs99wFVGT/0owpg==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true + '@nomicfoundation/solidity-analyzer-linux-arm64-gnu@0.1.1': optional: true - /@nomicfoundation/solidity-analyzer-linux-arm64-musl@0.1.1: - resolution: {integrity: sha512-WJ3CE5Oek25OGE3WwzK7oaopY8xMw9Lhb0mlYuJl/maZVo+WtP36XoQTb7bW/i8aAdHW5Z+BqrHMux23pvxG3w==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true + '@nomicfoundation/solidity-analyzer-linux-arm64-musl@0.1.1': optional: true - /@nomicfoundation/solidity-analyzer-linux-x64-gnu@0.1.1: - resolution: {integrity: sha512-5WN7leSr5fkUBBjE4f3wKENUy9HQStu7HmWqbtknfXkkil+eNWiBV275IOlpXku7v3uLsXTOKpnnGHJYI2qsdA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true + '@nomicfoundation/solidity-analyzer-linux-x64-gnu@0.1.1': optional: true - /@nomicfoundation/solidity-analyzer-linux-x64-musl@0.1.1: - resolution: {integrity: sha512-KdYMkJOq0SYPQMmErv/63CwGwMm5XHenEna9X9aB8mQmhDBrYrlAOSsIPgFCUSL0hjxE3xHP65/EPXR/InD2+w==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true + '@nomicfoundation/solidity-analyzer-linux-x64-musl@0.1.1': optional: true - /@nomicfoundation/solidity-analyzer-win32-arm64-msvc@0.1.1: - resolution: {integrity: sha512-VFZASBfl4qiBYwW5xeY20exWhmv6ww9sWu/krWSesv3q5hA0o1JuzmPHR4LPN6SUZj5vcqci0O6JOL8BPw+APg==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true + '@nomicfoundation/solidity-analyzer-win32-arm64-msvc@0.1.1': optional: true - /@nomicfoundation/solidity-analyzer-win32-ia32-msvc@0.1.1: - resolution: {integrity: sha512-JnFkYuyCSA70j6Si6cS1A9Gh1aHTEb8kOTBApp/c7NRTFGNMH8eaInKlyuuiIbvYFhlXW4LicqyYuWNNq9hkpQ==} - engines: {node: '>= 10'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true + '@nomicfoundation/solidity-analyzer-win32-ia32-msvc@0.1.1': optional: true - /@nomicfoundation/solidity-analyzer-win32-x64-msvc@0.1.1: - resolution: {integrity: sha512-HrVJr6+WjIXGnw3Q9u6KQcbZCtk0caVWhCdFADySvRyUxJ8PnzlaP+MhwNE8oyT8OZ6ejHBRrrgjSqDCFXGirw==} - engines: {node: '>= 10'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true + '@nomicfoundation/solidity-analyzer-win32-x64-msvc@0.1.1': optional: true - /@nomicfoundation/solidity-analyzer@0.1.1: - resolution: {integrity: sha512-1LMtXj1puAxyFusBgUIy5pZk3073cNXYnXUpuNKFghHbIit/xZgbk0AokpUADbNm3gyD6bFWl3LRFh3dhVdREg==} - engines: {node: '>= 12'} + '@nomicfoundation/solidity-analyzer@0.1.1': optionalDependencies: '@nomicfoundation/solidity-analyzer-darwin-arm64': 0.1.1 '@nomicfoundation/solidity-analyzer-darwin-x64': 0.1.1 @@ -4043,35 +9017,23 @@ packages: '@nomicfoundation/solidity-analyzer-win32-arm64-msvc': 0.1.1 '@nomicfoundation/solidity-analyzer-win32-ia32-msvc': 0.1.1 '@nomicfoundation/solidity-analyzer-win32-x64-msvc': 0.1.1 - dev: true - /@nomiclabs/hardhat-ethers@2.2.3(ethers@5.7.2)(hardhat@2.22.0): - resolution: {integrity: sha512-YhzPdzb612X591FOe68q+qXVXGG2ANZRvDo0RRUtimev85rCrAlv/TLMEZw5c+kq9AbzocLTVX/h2jVIFPL9Xg==} - peerDependencies: - ethers: ^5.0.0 - hardhat: ^2.0.0 + '@nomiclabs/hardhat-ethers@2.2.3(ethers@5.7.2)(hardhat@2.22.0(typescript@5.4.2))': dependencies: ethers: 5.7.2 hardhat: 2.22.0(typescript@5.4.2) - dev: true - /@npmcli/fs@2.1.2: - resolution: {integrity: sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + '@npmcli/fs@2.1.2': dependencies: '@gar/promisify': 1.1.3 semver: 7.6.0 - dev: false - /@npmcli/move-file@2.0.1: - resolution: {integrity: sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - deprecated: This functionality has been moved to @npmcli/fs + '@npmcli/move-file@2.0.1': dependencies: mkdirp: 1.0.4 rimraf: 3.0.2 - dev: false +<<<<<<< HEAD /@opentelemetry/api@1.8.0: resolution: {integrity: sha512-I/s6F7yKUDdtMsoBWXJe8Qz40Tui5vsuKCWJEWVL+5q9sSWRzzx6v2KeNsOBEwd94j0eWkpWCH4yB6rZg9Mf0w==} engines: {node: '>=8.0.0'} @@ -4083,219 +9045,132 @@ packages: os: [darwin] requiresBuild: true dev: true +======= + '@oven/bun-darwin-aarch64@1.0.11': +>>>>>>> d2ee83450 (feat: update pnpm and node version) optional: true - /@oven/bun-darwin-x64-baseline@1.0.11: - resolution: {integrity: sha512-is9liFB10GUN/UsSZVkO5tfMIJcBkiDqRvVzNkDHix/i5aXyaBb0vX+uOdJTlHDZyNGi+vHhbRMq3c3ezjJKPA==} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true + '@oven/bun-darwin-x64-baseline@1.0.11': optional: true - /@oven/bun-darwin-x64@1.0.11: - resolution: {integrity: sha512-5eCtrlOfMuhg7es/6p/rZw5+4khBao/hhGKCPHl9LBok1Mrf5QQjGbXj9OoA2RC2Lxm9av4nrAZG/5nMM01B2g==} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true + '@oven/bun-darwin-x64@1.0.11': optional: true - /@oven/bun-linux-aarch64@1.0.11: - resolution: {integrity: sha512-P8hI+vQ+8ffsMLRi2TNzkxsHukrNQD8G2luWo/ndJ55+1uuAMScWZooxm9rgWL6baoB/TL9/Hvi/6INGoE8UlQ==} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true + '@oven/bun-linux-aarch64@1.0.11': optional: true - /@oven/bun-linux-x64-baseline@1.0.11: - resolution: {integrity: sha512-Asx4pEMDXfmu9Sa0jX4PE1Wijtg1oCfUx8o4FeQEvnVz2+cGG+VoqZXuITmoQC6A4IzAZuJ1tcWOZ8jQCDtvJA==} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true + '@oven/bun-linux-x64-baseline@1.0.11': optional: true - /@oven/bun-linux-x64@1.0.11: - resolution: {integrity: sha512-F9ZcgVHsPQk6ooHXIeydiLcVcMwhGRjSlOVeHBuHEJ+bI24e/dCY73UKEEz8/hLNA32ocDMmkAGE79qv0ccEIA==} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true + '@oven/bun-linux-x64@1.0.11': optional: true - /@protobufjs/aspromise@1.1.2: - resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} + '@protobufjs/aspromise@1.1.2': {} - /@protobufjs/base64@1.1.2: - resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} + '@protobufjs/base64@1.1.2': {} - /@protobufjs/codegen@2.0.4: - resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==} + '@protobufjs/codegen@2.0.4': {} - /@protobufjs/eventemitter@1.1.0: - resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==} + '@protobufjs/eventemitter@1.1.0': {} - /@protobufjs/fetch@1.1.0: - resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==} + '@protobufjs/fetch@1.1.0': dependencies: '@protobufjs/aspromise': 1.1.2 '@protobufjs/inquire': 1.1.0 - /@protobufjs/float@1.0.2: - resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} + '@protobufjs/float@1.0.2': {} - /@protobufjs/inquire@1.1.0: - resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==} + '@protobufjs/inquire@1.1.0': {} - /@protobufjs/path@1.1.2: - resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} + '@protobufjs/path@1.1.2': {} - /@protobufjs/pool@1.1.0: - resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} + '@protobufjs/pool@1.1.0': {} - /@protobufjs/utf8@1.1.0: - resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} + '@protobufjs/utf8@1.1.0': {} - /@remix-run/router@1.6.0: - resolution: {integrity: sha512-N13NRw3T2+6Xi9J//3CGLsK2OqC8NMme3d/YX+nh05K9YHWGcv8DycHJrqGScSP4T75o8IN6nqIMhVFU8ohg8w==} - engines: {node: '>=14'} - dev: false + '@remix-run/router@1.6.0': {} - /@samverschueren/stream-to-observable@0.3.1(rxjs@6.6.7): - resolution: {integrity: sha512-c/qwwcHyafOQuVQJj0IlBjf5yYgBI7YPJ77k4fOJYesb41jio65eaJODRUmfYKhTOFBrIZ66kgvGPlNbjuoRdQ==} - engines: {node: '>=6'} - peerDependencies: - rxjs: '*' - zen-observable: '*' - peerDependenciesMeta: - rxjs: - optional: true - zen-observable: - optional: true + '@samverschueren/stream-to-observable@0.3.1(rxjs@6.6.7)': dependencies: any-observable: 0.3.0(rxjs@6.6.7) + optionalDependencies: rxjs: 6.6.7 transitivePeerDependencies: - zenObservable - dev: true - - /@scure/base@1.1.3: - resolution: {integrity: sha512-/+SgoRjLq7Xlf0CWuLHq2LUZeL/w65kfzAPG5NH9pcmBhs+nunQTn4gvdwgMTIXnt9b2C/1SeL2XiysZEyIC9Q==} - dev: true - - /@scure/base@1.1.5: - resolution: {integrity: sha512-Brj9FiG2W1MRQSTB212YVPRrcbjkv48FoZi/u4l/zds/ieRrqsh7aUf6CLwkAq61oKXr/ZlTzlY66gLIj3TFTQ==} - dev: true - /@scure/base@1.1.6: - resolution: {integrity: sha512-ok9AWwhcgYuGG3Zfhyqg+zwl+Wn5uE+dwC0NV/2qQkx4dABbb/bx96vWu8NSj+BNjjSjno+JRYRjle1jV08k3g==} - dev: false + '@scure/base@1.1.5': {} - /@scure/bip32@1.1.5: - resolution: {integrity: sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==} + '@scure/bip32@1.1.5': dependencies: '@noble/hashes': 1.2.0 '@noble/secp256k1': 1.7.1 - '@scure/base': 1.1.3 - dev: true + '@scure/base': 1.1.5 - /@scure/bip32@1.3.2: - resolution: {integrity: sha512-N1ZhksgwD3OBlwTv3R6KFEcPojl/W4ElJOeCZdi+vuI5QmTFwLq3OFf2zd2ROpKvxFdgZ6hUpb0dx9bVNEwYCA==} + '@scure/bip32@1.3.2': dependencies: '@noble/curves': 1.2.0 - '@noble/hashes': 1.3.2 - '@scure/base': 1.1.6 - dev: false + '@noble/hashes': 1.3.3 + '@scure/base': 1.1.5 - /@scure/bip32@1.3.3: - resolution: {integrity: sha512-LJaN3HwRbfQK0X1xFSi0Q9amqOgzQnnDngIt+ZlsBC3Bm7/nE7K0kwshZHyaru79yIVRv/e1mQAjZyuZG6jOFQ==} + '@scure/bip32@1.3.3': dependencies: '@noble/curves': 1.3.0 '@noble/hashes': 1.3.3 '@scure/base': 1.1.5 - dev: true - /@scure/bip39@1.1.1: - resolution: {integrity: sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==} + '@scure/bip39@1.1.1': dependencies: '@noble/hashes': 1.2.0 - '@scure/base': 1.1.3 - dev: true + '@scure/base': 1.1.5 - /@scure/bip39@1.2.1: - resolution: {integrity: sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==} + '@scure/bip39@1.2.1': dependencies: - '@noble/hashes': 1.3.2 - '@scure/base': 1.1.6 - dev: false + '@noble/hashes': 1.3.3 + '@scure/base': 1.1.5 - /@scure/bip39@1.2.2: - resolution: {integrity: sha512-HYf9TUXG80beW+hGAt3TRM8wU6pQoYur9iNypTROm42dorCGmLnFe3eWjz3gOq6G62H2WRh0FCzAR1PI+29zIA==} + '@scure/bip39@1.2.2': dependencies: '@noble/hashes': 1.3.3 '@scure/base': 1.1.5 - dev: true - /@sentry-internal/tracing@7.86.0: - resolution: {integrity: sha512-b4dUsNWlPWRwakGwR7bhOkqiFlqQszH1hhVFwrm/8s3kqEBZ+E4CeIfCvuHBHQ1cM/fx55xpXX/BU163cy+3iQ==} - engines: {node: '>=8'} + '@sentry-internal/tracing@7.86.0': dependencies: '@sentry/core': 7.86.0 '@sentry/types': 7.86.0 '@sentry/utils': 7.86.0 - dev: false - /@sentry/core@5.30.0: - resolution: {integrity: sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg==} - engines: {node: '>=6'} + '@sentry/core@5.30.0': dependencies: '@sentry/hub': 5.30.0 '@sentry/minimal': 5.30.0 '@sentry/types': 5.30.0 '@sentry/utils': 5.30.0 tslib: 1.14.1 - dev: true - /@sentry/core@7.86.0: - resolution: {integrity: sha512-SbLvqd1bRYzhDS42u7GMnmbDMfth/zRiLElQWbLK/shmuZzTcfQSwNNdF4Yj+VfjOkqPFgGmICHSHVUc9dh01g==} - engines: {node: '>=8'} + '@sentry/core@7.86.0': dependencies: '@sentry/types': 7.86.0 '@sentry/utils': 7.86.0 - dev: false - /@sentry/hub@5.30.0: - resolution: {integrity: sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ==} - engines: {node: '>=6'} + '@sentry/hub@5.30.0': dependencies: '@sentry/types': 5.30.0 '@sentry/utils': 5.30.0 tslib: 1.14.1 - dev: true - /@sentry/hub@7.86.0: - resolution: {integrity: sha512-tS9g+yoD/Zs4OS/gCO4/ccT0m90o3brkCIm/gRzPqI5dq2hEE1qn8bF7HM/vLQARM+bsmTEzPzZy19104U5Btg==} - engines: {node: '>=8'} + '@sentry/hub@7.86.0': dependencies: '@sentry/core': 7.86.0 '@sentry/types': 7.86.0 '@sentry/utils': 7.86.0 - dev: false - /@sentry/minimal@5.30.0: - resolution: {integrity: sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw==} - engines: {node: '>=6'} + '@sentry/minimal@5.30.0': dependencies: '@sentry/hub': 5.30.0 '@sentry/types': 5.30.0 tslib: 1.14.1 - dev: true - /@sentry/node@5.30.0: - resolution: {integrity: sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg==} - engines: {node: '>=6'} + '@sentry/node@5.30.0': dependencies: '@sentry/core': 5.30.0 '@sentry/hub': 5.30.0 @@ -4308,11 +9183,8 @@ packages: tslib: 1.14.1 transitivePeerDependencies: - supports-color - dev: true - /@sentry/node@7.86.0: - resolution: {integrity: sha512-cB1bn/LMn2Km97Y3hv63xwWxT50/G5ixGuSxTZ3dCQM6VDhmZoCuC5NGT3itVvaRd6upQXRZa5W0Zgyh0HXKig==} - engines: {node: '>=8'} + '@sentry/node@7.86.0': dependencies: '@sentry-internal/tracing': 7.86.0 '@sentry/core': 7.86.0 @@ -4321,13 +9193,8 @@ packages: https-proxy-agent: 5.0.1 transitivePeerDependencies: - supports-color - dev: false - /@sentry/profiling-node@1.2.6: - resolution: {integrity: sha512-WsXO7VmLze5wPWHpvoRZFTtN+wHw9lYWKZs4T2FwPmvfNVaScGJey/+Wp51aM47Yy12Gj9n/BpqFYDsUXRLMvw==} - engines: {node: '>=8.0.0'} - hasBin: true - requiresBuild: true + '@sentry/profiling-node@1.2.6': dependencies: '@sentry/core': 7.86.0 '@sentry/hub': 7.86.0 @@ -4340,60 +9207,39 @@ packages: transitivePeerDependencies: - bluebird - supports-color - dev: false - /@sentry/tracing@5.30.0: - resolution: {integrity: sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw==} - engines: {node: '>=6'} + '@sentry/tracing@5.30.0': dependencies: '@sentry/hub': 5.30.0 '@sentry/minimal': 5.30.0 '@sentry/types': 5.30.0 '@sentry/utils': 5.30.0 tslib: 1.14.1 - dev: true - /@sentry/types@5.30.0: - resolution: {integrity: sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw==} - engines: {node: '>=6'} - dev: true + '@sentry/types@5.30.0': {} - /@sentry/types@7.86.0: - resolution: {integrity: sha512-pGAt0+bMfWgo0KG2epthfNV4Wae03tURpoxNjGo5Fr4cXxvLTSijSAQ6rmmO4bXBJ7+rErEjX30g30o/eEdP9g==} - engines: {node: '>=8'} - dev: false + '@sentry/types@7.86.0': {} - /@sentry/utils@5.30.0: - resolution: {integrity: sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww==} - engines: {node: '>=6'} + '@sentry/utils@5.30.0': dependencies: '@sentry/types': 5.30.0 tslib: 1.14.1 - dev: true - /@sentry/utils@7.86.0: - resolution: {integrity: sha512-6PejFtw9VTFFy5vu0ks+U7Ozkqz+eMt+HN8AZKBKErYzX5/xs0kpkOcSRpu3ETdTYcZf8VAmLVgFgE2BE+3WuQ==} - engines: {node: '>=8'} + '@sentry/utils@7.86.0': dependencies: '@sentry/types': 7.86.0 - dev: false - /@sinclair/typebox@0.25.24: - resolution: {integrity: sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==} - dev: true + '@sinclair/typebox@0.25.24': {} - /@sinonjs/commons@2.0.0: - resolution: {integrity: sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==} + '@sinonjs/commons@2.0.0': dependencies: type-detect: 4.0.8 - dev: true - /@sinonjs/fake-timers@10.0.2: - resolution: {integrity: sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw==} + '@sinonjs/fake-timers@10.0.2': dependencies: '@sinonjs/commons': 2.0.0 - dev: true +<<<<<<< HEAD /@smithy/abort-controller@2.2.0: resolution: {integrity: sha512-wRlta7GuLWpTqtFfGo+nZyOO1vEvewdNR1R4rTxpC8XU6vG/NDyrFBhwLZsqg1NUoR1noVaXJPC/7ZK47QCySw==} engines: {node: '>=14.0.0'} @@ -4759,249 +9605,164 @@ packages: /@solidity-parser/parser@0.14.5: resolution: {integrity: sha512-6dKnHZn7fg/iQATVEzqyUOyEidbn05q7YA2mQ9hC0MMXhhV3/JrsxmFSYZAcr7j1yUP700LLhTruvJ3MiQmjJg==} +======= + '@solidity-parser/parser@0.14.5': +>>>>>>> 1175edcf0 (feat: update pnpm and node version) dependencies: antlr4ts: 0.5.0-alpha.4 - dev: true - /@solidity-parser/parser@0.16.0: - resolution: {integrity: sha512-ESipEcHyRHg4Np4SqBCfcXwyxxna1DgFVz69bgpLV8vzl/NP1DtcKsJ4dJZXWQhY/Z4J2LeKBiOkOVZn9ct33Q==} + '@solidity-parser/parser@0.16.0': dependencies: antlr4ts: 0.5.0-alpha.4 - dev: false - /@solidity-parser/parser@0.17.0: - resolution: {integrity: sha512-Nko8R0/kUo391jsEHHxrGM07QFdnPGvlmox4rmH0kNiNAashItAilhy4Mv4pK5gQmW5f4sXAF58fwJbmlkGcVw==} + '@solidity-parser/parser@0.17.0': {} - /@testing-library/react-hooks@8.0.1(@types/react@18.2.22)(react-test-renderer@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-Aqhl2IVmLt8IovEVarNDFuJDVWVvhnr9/GCU6UUnrYXwgDFF9h2L2o2P9KBni1AST5sT6riAyoukFLyjQUgD/g==} - engines: {node: '>=12'} - peerDependencies: - '@types/react': ^16.9.0 || ^17.0.0 - react: ^16.9.0 || ^17.0.0 - react-dom: ^16.9.0 || ^17.0.0 - react-test-renderer: ^16.9.0 || ^17.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - react-dom: - optional: true - react-test-renderer: - optional: true + '@testing-library/react-hooks@8.0.1(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react-test-renderer@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@babel/runtime': 7.21.0 - '@types/react': 18.2.22 react: 18.2.0 react-error-boundary: 3.1.4(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.22 + react-dom: 18.2.0(react@18.2.0) react-test-renderer: 18.2.0(react@18.2.0) - dev: true - /@tootallnate/once@2.0.0: - resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} - engines: {node: '>= 10'} + '@tootallnate/once@2.0.0': {} - /@trpc/client@10.34.0(@trpc/server@10.34.0): - resolution: {integrity: sha512-nqtDTIqSY/9syo2EjSy4WWWXPU9GsamEh9Tsg698gLAh1nhgFc5+/YYeb+Ne1pbvWGZ5/3t9Dcz3h4wMyyJ9gQ==} - peerDependencies: - '@trpc/server': 10.34.0 + '@trpc/client@10.34.0(@trpc/server@10.34.0)': dependencies: '@trpc/server': 10.34.0 - dev: false - /@trpc/server@10.34.0: - resolution: {integrity: sha512-2VMW44Fpaoyqb50dBtzdSWMhqt8lmoJiocEyBBeDb03R0W+XrzbVD5kU/wqKPlcp1DWeNCkOEIMtetMZCfo1hA==} - dev: false + '@trpc/server@10.34.0': {} - /@types/accepts@1.3.7: - resolution: {integrity: sha512-Pay9fq2lM2wXPWbteBsRAGiWH2hig4ZE2asK+mm7kUzlxRTfL961rj89I6zV/E3PcIkDqyuBEcMxFT7rccugeQ==} + '@types/accepts@1.3.7': dependencies: '@types/node': 18.15.11 - dev: true - /@types/babel__core@7.20.0: - resolution: {integrity: sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==} + '@types/babel__core@7.20.0': dependencies: '@babel/parser': 7.21.4 '@babel/types': 7.21.4 '@types/babel__generator': 7.6.4 '@types/babel__template': 7.4.1 '@types/babel__traverse': 7.18.3 - dev: true - /@types/babel__generator@7.6.4: - resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} + '@types/babel__generator@7.6.4': dependencies: '@babel/types': 7.21.4 - dev: true - /@types/babel__template@7.4.1: - resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} + '@types/babel__template@7.4.1': dependencies: '@babel/parser': 7.21.4 '@babel/types': 7.21.4 - dev: true - /@types/babel__traverse@7.18.3: - resolution: {integrity: sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w==} + '@types/babel__traverse@7.18.3': dependencies: '@babel/types': 7.21.4 - dev: true - /@types/better-sqlite3@7.6.4: - resolution: {integrity: sha512-dzrRZCYPXIXfSR1/surNbJ/grU3scTaygS0OMzjlGf71i9sc2fGyHPXXiXmEvNIoE0cGwsanEFMVJxPXmco9Eg==} + '@types/better-sqlite3@7.6.4': dependencies: '@types/node': 18.15.11 - /@types/bn.js@4.11.6: - resolution: {integrity: sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==} + '@types/bn.js@4.11.6': dependencies: '@types/node': 18.15.11 - dev: true - /@types/bn.js@5.1.5: - resolution: {integrity: sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A==} + '@types/bn.js@5.1.5': dependencies: '@types/node': 18.15.11 - dev: true - /@types/body-parser@1.19.5: - resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} + '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 '@types/node': 18.15.11 - dev: true - /@types/chai-as-promised@7.1.8: - resolution: {integrity: sha512-ThlRVIJhr69FLlh6IctTXFkmhtP3NpMZ2QGq69StYLyKZFp/HOp1VdKZj7RvfNWYYcJ1xlbLGLLWj1UvP5u/Gw==} + '@types/chai-as-promised@7.1.8': dependencies: '@types/chai': 4.3.5 - dev: true - /@types/chai-subset@1.3.3: - resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} + '@types/chai-subset@1.3.3': dependencies: '@types/chai': 4.3.5 - dev: true - /@types/chai@4.3.5: - resolution: {integrity: sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==} - dev: true + '@types/chai@4.3.5': {} - /@types/connect@3.4.38: - resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} + '@types/connect@3.4.38': dependencies: '@types/node': 18.15.11 - dev: true - /@types/content-disposition@0.5.8: - resolution: {integrity: sha512-QVSSvno3dE0MgO76pJhmv4Qyi/j0Yk9pBp0Y7TJ2Tlj+KCgJWY6qX7nnxCOLkZ3VYRSIk1WTxCvwUSdx6CCLdg==} - dev: true + '@types/content-disposition@0.5.8': {} - /@types/cookies@0.7.10: - resolution: {integrity: sha512-hmUCjAk2fwZVPPkkPBcI7jGLIR5mg4OVoNMBwU6aVsMm/iNPY7z9/R+x2fSwLt/ZXoGua6C5Zy2k5xOo9jUyhQ==} + '@types/cookies@0.7.10': dependencies: '@types/connect': 3.4.38 '@types/express': 4.17.21 '@types/keygrip': 1.0.6 '@types/node': 18.15.11 - dev: true - /@types/debug@4.1.7: - resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==} + '@types/debug@4.1.7': dependencies: '@types/ms': 0.7.31 - dev: true - /@types/ejs@3.1.1: - resolution: {integrity: sha512-RQul5wEfY7BjWm0sYY86cmUN/pcXWGyVxWX93DFFJvcrxax5zKlieLwA3T77xJGwNcZW0YW6CYG70p1m8xPFmA==} - dev: true + '@types/ejs@3.1.1': {} - /@types/emscripten@1.39.6: - resolution: {integrity: sha512-H90aoynNhhkQP6DRweEjJp5vfUVdIj7tdPLsu7pq89vODD/lcugKfZOsfgwpvM6XUewEp2N5dCg1Uf3Qe55Dcg==} + '@types/emscripten@1.39.6': {} - /@types/express-serve-static-core@4.17.41: - resolution: {integrity: sha512-OaJ7XLaelTgrvlZD8/aa0vvvxZdUmlCn6MtWeB7TkiKW70BQLc9XEPpDLPdbo52ZhXUCrznlWdCHWxJWtdyajA==} + '@types/express-serve-static-core@4.17.41': dependencies: '@types/node': 18.15.11 '@types/qs': 6.9.10 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 - dev: true - /@types/express@4.17.21: - resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} + '@types/express@4.17.21': dependencies: '@types/body-parser': 1.19.5 '@types/express-serve-static-core': 4.17.41 '@types/qs': 6.9.10 '@types/serve-static': 1.15.5 - dev: true - /@types/glob@7.2.0: - resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} + '@types/glob@7.2.0': dependencies: '@types/minimatch': 3.0.5 '@types/node': 18.15.11 - dev: true - /@types/graceful-fs@4.1.6: - resolution: {integrity: sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==} + '@types/graceful-fs@4.1.6': dependencies: '@types/node': 18.15.11 - dev: true - /@types/http-assert@1.5.5: - resolution: {integrity: sha512-4+tE/lwdAahgZT1g30Jkdm9PzFRde0xwxBNUyRsCitRvCQB90iuA2uJYdUnhnANRcqGXaWOGY4FEoxeElNAK2g==} - dev: true + '@types/http-assert@1.5.5': {} - /@types/http-errors@2.0.4: - resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} - dev: true + '@types/http-errors@2.0.4': {} - /@types/is-ci@3.0.0: - resolution: {integrity: sha512-Q0Op0hdWbYd1iahB+IFNQcWXFq4O0Q5MwQP7uN0souuQ4rPg1vEYcnIOfr1gY+M+6rc8FGoRaBO1mOOvL29sEQ==} + '@types/is-ci@3.0.0': dependencies: ci-info: 3.8.0 - dev: true - /@types/istanbul-lib-coverage@2.0.4: - resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} - dev: true + '@types/istanbul-lib-coverage@2.0.4': {} - /@types/istanbul-lib-report@3.0.0: - resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} + '@types/istanbul-lib-report@3.0.0': dependencies: '@types/istanbul-lib-coverage': 2.0.4 - dev: true - /@types/istanbul-reports@3.0.1: - resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} + '@types/istanbul-reports@3.0.1': dependencies: '@types/istanbul-lib-report': 3.0.0 - dev: true - /@types/jest@27.4.1: - resolution: {integrity: sha512-23iPJADSmicDVrWk+HT58LMJtzLAnB2AgIzplQuq/bSrGaxCrlvRFjGbXmamnnk/mAmCdLStiGqggu28ocUyiw==} + '@types/jest@27.4.1': dependencies: jest-matcher-utils: 27.5.1 pretty-format: 27.5.1 - dev: true - /@types/json-schema@7.0.15: - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - dev: true + '@types/json-schema@7.0.15': {} - /@types/keygrip@1.0.6: - resolution: {integrity: sha512-lZuNAY9xeJt7Bx4t4dx0rYCDqGPW8RXhQZK1td7d4H6E9zYbLoOtjBvfwdTKpsyxQI/2jv+armjX/RW+ZNpXOQ==} - dev: true + '@types/keygrip@1.0.6': {} - /@types/koa-compose@3.2.8: - resolution: {integrity: sha512-4Olc63RY+MKvxMwVknCUDhRQX1pFQoBZ/lXcRLP69PQkEpze/0cr8LNqJQe5NFb/b19DWi2a5bTi2VAlQzhJuA==} + '@types/koa-compose@3.2.8': dependencies: '@types/koa': 2.13.12 - dev: true - /@types/koa@2.13.12: - resolution: {integrity: sha512-vAo1KuDSYWFDB4Cs80CHvfmzSQWeUb909aQib0C0aFx4sw0K9UZFz2m5jaEP+b3X1+yr904iQiruS0hXi31jbw==} + '@types/koa@2.13.12': dependencies: '@types/accepts': 1.3.7 '@types/content-disposition': 0.5.8 @@ -5011,221 +9772,131 @@ packages: '@types/keygrip': 1.0.6 '@types/koa-compose': 3.2.8 '@types/node': 18.15.11 - dev: true - /@types/koa__cors@4.0.3: - resolution: {integrity: sha512-zj+1sQO/6GGRGINRXlMmoiFwHibKVcjNGdh+p2SpqHDMLyvC+ce0LMHX6UBi1rdpnPZ/+osUwWdGKF945ffrzA==} + '@types/koa__cors@4.0.3': dependencies: '@types/koa': 2.13.12 - dev: true - /@types/koa__router@12.0.4: - resolution: {integrity: sha512-Y7YBbSmfXZpa/m5UGGzb7XadJIRBRnwNY9cdAojZGp65Cpe5MAP3mOZE7e3bImt8dfKS4UFcR16SLH8L/z7PBw==} + '@types/koa__router@12.0.4': dependencies: '@types/koa': 2.13.12 - dev: true - /@types/long@4.0.2: - resolution: {integrity: sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==} - dev: true + '@types/long@4.0.2': {} - /@types/lru-cache@5.1.1: - resolution: {integrity: sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==} - dev: true + '@types/lru-cache@5.1.1': {} - /@types/mime@1.3.5: - resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} - dev: true + '@types/mime@1.3.5': {} - /@types/mime@3.0.4: - resolution: {integrity: sha512-iJt33IQnVRkqeqC7PzBHPTC6fDlRNRW8vjrgqtScAhrmMwe8c4Eo7+fUGTa+XdWrpEgpyKWMYmi2dIwMAYRzPw==} - dev: true + '@types/mime@3.0.4': {} - /@types/minimatch@3.0.5: - resolution: {integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==} - dev: true + '@types/minimatch@3.0.5': {} - /@types/minimist@1.2.2: - resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} - dev: true + '@types/minimist@1.2.2': {} - /@types/mocha@9.1.1: - resolution: {integrity: sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==} - dev: true + '@types/mocha@9.1.1': {} - /@types/ms@0.7.31: - resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} - dev: true + '@types/ms@0.7.31': {} - /@types/node-fetch@2.6.11: - resolution: {integrity: sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==} + '@types/node-fetch@2.6.11': dependencies: '@types/node': 18.15.11 form-data: 4.0.0 - dev: true - /@types/node@12.20.55: - resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - dev: true + '@types/node@12.20.55': {} - /@types/node@18.15.11: - resolution: {integrity: sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==} + '@types/node@18.15.11': {} - /@types/normalize-package-data@2.4.1: - resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} - dev: true + '@types/normalize-package-data@2.4.1': {} - /@types/object-hash@1.3.4: - resolution: {integrity: sha512-xFdpkAkikBgqBdG9vIlsqffDV8GpvnPEzs0IUtr1v3BEB97ijsFQ4RXVbUZwjFThhB4MDSTUfvmxUD5PGx0wXA==} - dev: true + '@types/object-hash@1.3.4': {} - /@types/openurl@1.0.0: - resolution: {integrity: sha512-fUHH4T8FmEl3NBtGbUYYzMo1Ev47uVCVEGVjVNjorOMzgjls6zH82yr/zqkkcEOHY2HUC5PZ8dRFwGed/NR7wQ==} + '@types/openurl@1.0.0': dependencies: '@types/node': 18.15.11 - dev: true - /@types/parse-json@4.0.0: - resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} - dev: true + '@types/parse-json@4.0.0': {} - /@types/pbkdf2@3.1.2: - resolution: {integrity: sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew==} + '@types/pbkdf2@3.1.2': dependencies: '@types/node': 18.15.11 - dev: true - /@types/prettier@2.7.2: - resolution: {integrity: sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==} - dev: true + '@types/prettier@2.7.2': {} - /@types/prop-types@15.7.5: - resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} - dev: true + '@types/prop-types@15.7.5': {} - /@types/qs@6.9.10: - resolution: {integrity: sha512-3Gnx08Ns1sEoCrWssEgTSJs/rsT2vhGP+Ja9cnnk9k4ALxinORlQneLXFeFKOTJMOeZUFD1s7w+w2AphTpvzZw==} - dev: true + '@types/qs@6.9.10': {} - /@types/range-parser@1.2.7: - resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} - dev: true + '@types/range-parser@1.2.7': {} - /@types/react-dom@18.2.7: - resolution: {integrity: sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==} + '@types/react-dom@18.2.7': dependencies: '@types/react': 18.2.22 - dev: true - /@types/react@18.2.22: - resolution: {integrity: sha512-60fLTOLqzarLED2O3UQImc/lsNRgG0jE/a1mPW9KjMemY0LMITWEsbS4VvZ4p6rorEHd5YKxxmMKSDK505GHpA==} + '@types/react@18.2.22': dependencies: '@types/prop-types': 15.7.5 '@types/scheduler': 0.16.3 csstype: 3.1.2 - dev: true - /@types/retry@0.12.0: - resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} - dev: false + '@types/retry@0.12.0': {} - /@types/scheduler@0.16.3: - resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==} - dev: true + '@types/scheduler@0.16.3': {} - /@types/secp256k1@4.0.6: - resolution: {integrity: sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ==} + '@types/secp256k1@4.0.6': dependencies: '@types/node': 18.15.11 - dev: true - /@types/semver@6.2.3: - resolution: {integrity: sha512-KQf+QAMWKMrtBMsB8/24w53tEsxllMj6TuA80TT/5igJalLI/zm0L3oXRbIAl4Ohfc85gyHX/jhMwsVkmhLU4A==} - dev: true + '@types/semver@6.2.3': {} - /@types/semver@7.5.8: - resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} - dev: true + '@types/semver@7.5.8': {} - /@types/send@0.17.4: - resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} + '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 '@types/node': 18.15.11 - dev: true - /@types/serve-static@1.15.5: - resolution: {integrity: sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==} + '@types/serve-static@1.15.5': dependencies: '@types/http-errors': 2.0.4 '@types/mime': 3.0.4 '@types/node': 18.15.11 - dev: true - /@types/sql.js@1.4.4: - resolution: {integrity: sha512-6EWU2wfiBtzgTy18WQoXZAGTreBjhZcBCfD8CDvyI1Nj0a4KNDDt41IYeAZ40cRUdfqWHb7VGx7t6nK0yBOI5A==} + '@types/sql.js@1.4.4': dependencies: '@types/emscripten': 1.39.6 '@types/node': 18.15.11 - /@types/stack-utils@2.0.1: - resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} - dev: true + '@types/stack-utils@2.0.1': {} - /@types/stream-to-array@2.3.1: - resolution: {integrity: sha512-OqV/DIumEm5pT+m4LYGpDFRRLZ0VJRvrz58C8q8rjLGVgP5gRHxThG8eLZfhmK3GVAq9iq3eSvZ0vkZJ5ZH/Pg==} + '@types/stream-to-array@2.3.1': dependencies: '@types/node': 18.15.11 - dev: true - /@types/throttle-debounce@5.0.0: - resolution: {integrity: sha512-Pb7k35iCGFcGPECoNE4DYp3Oyf2xcTd3FbFQxXUI9hEYKUl6YX+KLf7HrBmgVcD05nl50LIH6i+80js4iYmWbw==} - dev: true + '@types/throttle-debounce@5.0.0': {} - /@types/toposort@2.0.6: - resolution: {integrity: sha512-9OMv8NIjiJclYZ+FIqNCs6B6/7HSIccWCpgeVmp2TurRXllEIYNxAwGBBFEataTsHwLt8oeVmMCmdld8dVq/hw==} - dev: true + '@types/toposort@2.0.6': {} - /@types/uuid@8.3.4: - resolution: {integrity: sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==} - dev: true + '@types/uuid@8.3.4': {} - /@types/ws@8.5.4: - resolution: {integrity: sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==} + '@types/ws@8.5.4': dependencies: '@types/node': 18.15.11 - dev: true - /@types/yargs-interactive@2.1.3: - resolution: {integrity: sha512-bYB8ah0JPR6/lpHlxUzeHsrb3RK5OW7N8Hnth2nefnr6zQ5KFoDQ6wM5x58dTLEDYrwikFy3EPTf/O0HKLNaIg==} + '@types/yargs-interactive@2.1.3': dependencies: '@types/yargs': 17.0.24 - dev: false - /@types/yargs-parser@21.0.0: - resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} + '@types/yargs-parser@21.0.0': {} - /@types/yargs@17.0.23: - resolution: {integrity: sha512-yuogunc04OnzGQCrfHx+Kk883Q4X0aSwmYZhKjI21m+SVYzjIbrWl8dOOwSv5hf2Um2pdCOXWo9isteZTNXUZQ==} + '@types/yargs@17.0.23': dependencies: '@types/yargs-parser': 21.0.0 - dev: true - /@types/yargs@17.0.24: - resolution: {integrity: sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==} + '@types/yargs@17.0.24': dependencies: '@types/yargs-parser': 21.0.0 - /@typescript-eslint/eslint-plugin@7.1.1(@typescript-eslint/parser@7.1.1)(eslint@8.57.0)(typescript@5.4.2): - resolution: {integrity: sha512-zioDz623d0RHNhvx0eesUmGfIjzrk18nSBC8xewepKXbBvN/7c1qImV7Hg8TI1URTxKax7/zxfxj3Uph8Chcuw==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - '@typescript-eslint/parser': ^7.0.0 - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@typescript-eslint/eslint-plugin@7.1.1(@typescript-eslint/parser@7.1.1(eslint@8.57.0)(typescript@5.4.2))(eslint@8.57.0)(typescript@5.4.2)': dependencies: '@eslint-community/regexpp': 4.10.0 '@typescript-eslint/parser': 7.1.1(eslint@8.57.0)(typescript@5.4.2) @@ -5240,20 +9911,12 @@ packages: natural-compare: 1.4.0 semver: 7.6.0 ts-api-utils: 1.2.1(typescript@5.4.2) + optionalDependencies: typescript: 5.4.2 transitivePeerDependencies: - supports-color - dev: true - /@typescript-eslint/parser@7.1.1(eslint@8.57.0)(typescript@5.4.2): - resolution: {integrity: sha512-ZWUFyL0z04R1nAEgr9e79YtV5LbafdOtN7yapNbn1ansMyaegl2D4bL7vHoJ4HPSc4CaLwuCVas8CVuneKzplQ==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@typescript-eslint/parser@7.1.1(eslint@8.57.0)(typescript@5.4.2)': dependencies: '@typescript-eslint/scope-manager': 7.1.1 '@typescript-eslint/types': 7.1.1 @@ -5261,52 +9924,31 @@ packages: '@typescript-eslint/visitor-keys': 7.1.1 debug: 4.3.4(supports-color@8.1.1) eslint: 8.57.0 + optionalDependencies: typescript: 5.4.2 transitivePeerDependencies: - supports-color - dev: true - /@typescript-eslint/scope-manager@7.1.1: - resolution: {integrity: sha512-cirZpA8bJMRb4WZ+rO6+mnOJrGFDd38WoXCEI57+CYBqta8Yc8aJym2i7vyqLL1vVYljgw0X27axkUXz32T8TA==} - engines: {node: ^16.0.0 || >=18.0.0} + '@typescript-eslint/scope-manager@7.1.1': dependencies: '@typescript-eslint/types': 7.1.1 '@typescript-eslint/visitor-keys': 7.1.1 - dev: true - /@typescript-eslint/type-utils@7.1.1(eslint@8.57.0)(typescript@5.4.2): - resolution: {integrity: sha512-5r4RKze6XHEEhlZnJtR3GYeCh1IueUHdbrukV2KSlLXaTjuSfeVF8mZUVPLovidCuZfbVjfhi4c0DNSa/Rdg5g==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@typescript-eslint/type-utils@7.1.1(eslint@8.57.0)(typescript@5.4.2)': dependencies: '@typescript-eslint/typescript-estree': 7.1.1(typescript@5.4.2) '@typescript-eslint/utils': 7.1.1(eslint@8.57.0)(typescript@5.4.2) debug: 4.3.4(supports-color@8.1.1) eslint: 8.57.0 ts-api-utils: 1.2.1(typescript@5.4.2) + optionalDependencies: typescript: 5.4.2 transitivePeerDependencies: - supports-color - dev: true - /@typescript-eslint/types@7.1.1: - resolution: {integrity: sha512-KhewzrlRMrgeKm1U9bh2z5aoL4s7K3tK5DwHDn8MHv0yQfWFz/0ZR6trrIHHa5CsF83j/GgHqzdbzCXJ3crx0Q==} - engines: {node: ^16.0.0 || >=18.0.0} - dev: true + '@typescript-eslint/types@7.1.1': {} - /@typescript-eslint/typescript-estree@7.1.1(typescript@5.4.2): - resolution: {integrity: sha512-9ZOncVSfr+sMXVxxca2OJOPagRwT0u/UHikM2Rd6L/aB+kL/QAuTnsv6MeXtjzCJYb8PzrXarypSGIPx3Jemxw==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@typescript-eslint/typescript-estree@7.1.1(typescript@5.4.2)': dependencies: '@typescript-eslint/types': 7.1.1 '@typescript-eslint/visitor-keys': 7.1.1 @@ -5316,16 +9958,12 @@ packages: minimatch: 9.0.3 semver: 7.6.0 ts-api-utils: 1.2.1(typescript@5.4.2) + optionalDependencies: typescript: 5.4.2 transitivePeerDependencies: - supports-color - dev: true - /@typescript-eslint/utils@7.1.1(eslint@8.57.0)(typescript@5.4.2): - resolution: {integrity: sha512-thOXM89xA03xAE0lW7alstvnyoBUbBX38YtY+zAUcpRPcq9EIhXPuJ0YTv948MbzmKh6e1AUszn5cBFK49Umqg==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^8.56.0 + '@typescript-eslint/utils@7.1.1(eslint@8.57.0)(typescript@5.4.2)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@types/json-schema': 7.0.15 @@ -5338,19 +9976,13 @@ packages: transitivePeerDependencies: - supports-color - typescript - dev: true - /@typescript-eslint/visitor-keys@7.1.1: - resolution: {integrity: sha512-yTdHDQxY7cSoCcAtiBzVzxleJhkGB9NncSIyMYe2+OGON1ZsP9zOPws/Pqgopa65jvknOjlk/w7ulPlZ78PiLQ==} - engines: {node: ^16.0.0 || >=18.0.0} + '@typescript-eslint/visitor-keys@7.1.1': dependencies: '@typescript-eslint/types': 7.1.1 eslint-visitor-keys: 3.4.3 - dev: true - /@typescript/analyze-trace@0.10.1: - resolution: {integrity: sha512-RnlSOPh14QbopGCApgkSx5UBgGda5MX1cHqp2fsqfiDyCwGL/m1jaeB9fzu7didVS81LQqGZZuxFBcg8YU8EVw==} - hasBin: true + '@typescript/analyze-trace@0.10.1': dependencies: chalk: 4.1.2 exit: 0.1.2 @@ -5360,22 +9992,16 @@ packages: split2: 3.2.2 treeify: 1.1.0 yargs: 16.2.0 - dev: true - /@typescript/vfs@1.5.0: - resolution: {integrity: sha512-AJS307bPgbsZZ9ggCT3wwpg3VbTKMFNHfaY/uF0ahSkYYrPF2dSSKDNIDIQAHm9qJqbLvCsSJH7yN4Vs/CsMMg==} + '@typescript/vfs@1.5.0': dependencies: debug: 4.3.4(supports-color@8.1.1) transitivePeerDependencies: - supports-color - dev: true - /@ungap/structured-clone@1.2.0: - resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - dev: true + '@ungap/structured-clone@1.2.0': {} - /@viem/anvil@0.0.7(debug@4.3.4): - resolution: {integrity: sha512-F+3ljCT1bEt8T4Fzm9gWpIgO3Dc7bzG1TtUtkStkJFMuummqZ8kvYc3UFMo5j3F51fSWZZvEkjs3+i7qf0AOqQ==} + '@viem/anvil@0.0.7(debug@4.3.4)': dependencies: execa: 7.2.0 get-port: 6.1.2 @@ -5385,13 +10011,8 @@ packages: - bufferutil - debug - utf-8-validate - dev: true - /@vitejs/plugin-react@4.0.0(vite@4.3.6): - resolution: {integrity: sha512-HX0XzMjL3hhOYm+0s95pb0Z7F8O81G7joUHgfDd/9J/ZZf5k4xX6QAMFkKsHFxaHlf6X7GD7+XuaZ66ULiJuhQ==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - vite: ^4.2.0 + '@vitejs/plugin-react@4.0.0(vite@4.3.6(@types/node@18.15.11))': dependencies: '@babel/core': 7.21.4 '@babel/plugin-transform-react-jsx-self': 7.21.0(@babel/core@7.21.4) @@ -5400,335 +10021,187 @@ packages: vite: 4.3.6(@types/node@18.15.11) transitivePeerDependencies: - supports-color - dev: true - /@vitest/expect@0.34.6: - resolution: {integrity: sha512-QUzKpUQRc1qC7qdGo7rMK3AkETI7w18gTCUrsNnyjjJKYiuUB9+TQK3QnR1unhCnWRC0AbKv2omLGQDF/mIjOw==} + '@vitest/expect@0.34.6': dependencies: '@vitest/spy': 0.34.6 '@vitest/utils': 0.34.6 chai: 4.4.1 - dev: true - /@vitest/runner@0.34.6: - resolution: {integrity: sha512-1CUQgtJSLF47NnhN+F9X2ycxUP0kLHQ/JWvNHbeBfwW8CzEGgeskzNnHDyv1ieKTltuR6sdIHV+nmR6kPxQqzQ==} + '@vitest/runner@0.34.6': dependencies: '@vitest/utils': 0.34.6 p-limit: 4.0.0 pathe: 1.1.2 - dev: true - /@vitest/snapshot@0.34.6: - resolution: {integrity: sha512-B3OZqYn6k4VaN011D+ve+AA4whM4QkcwcrwaKwAbyyvS/NB1hCWjFIBQxAQQSQir9/RtyAAGuq+4RJmbn2dH4w==} + '@vitest/snapshot@0.34.6': dependencies: magic-string: 0.30.5 pathe: 1.1.2 pretty-format: 29.5.0 - dev: true - /@vitest/spy@0.34.6: - resolution: {integrity: sha512-xaCvneSaeBw/cz8ySmF7ZwGvL0lBjfvqc1LpQ/vcdHEvpLn3Ff1vAvjw+CoGn0802l++5L/pxb7whwcWAw+DUQ==} + '@vitest/spy@0.34.6': dependencies: tinyspy: 2.2.0 - dev: true - /@vitest/utils@0.34.6: - resolution: {integrity: sha512-IG5aDD8S6zlvloDsnzHw0Ut5xczlF+kv2BOTo+iXfPr54Yhi5qbVOgGB1hZaVq4iJ4C/MZ2J0y15IlsV/ZcI0A==} + '@vitest/utils@0.34.6': dependencies: diff-sequences: 29.6.3 loupe: 2.3.6 pretty-format: 29.5.0 - dev: true - /abab@2.0.6: - resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} - dev: true + abab@2.0.6: {} - /abbrev@1.1.1: - resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} - dev: false + abbrev@1.1.1: {} - /abdk-libraries-solidity@3.2.0: - resolution: {integrity: sha512-JyedKxyqsszb9qCTX+YCOQHA4m0YAq9p77Qvumiy8LJLLrm1FfA9D3pdSAZN5wrmi3PSv0y3Svy8c/C+8S9K8g==} - dev: false + abdk-libraries-solidity@3.2.0: {} - /abind@1.0.5: - resolution: {integrity: sha512-dbaEZphdPje0ihqSdWg36Sb8S20TuqQomiz2593oIx+enQ9Q4vDZRjIzhnkWltGRKVKqC28kTribkgRLBexWVQ==} - engines: {node: '>=6', npm: '>=3'} - dev: false + abind@1.0.5: {} - /abitype@1.0.0(typescript@5.4.2)(zod@3.21.4): - resolution: {integrity: sha512-NMeMah//6bJ56H5XRj8QCV4AwuW6hB6zqz2LnhhLdcWVQOsXki6/Pn3APeqxCma62nXIcmZWdu1DlHWS74umVQ==} - peerDependencies: - typescript: '>=5.0.4' - zod: ^3 >=3.22.0 - peerDependenciesMeta: - typescript: - optional: true - zod: - optional: true - dependencies: + abitype@1.0.0(typescript@5.4.2)(zod@3.21.4): + optionalDependencies: typescript: 5.4.2 zod: 3.21.4 - dev: false - /abort-controller-x@0.4.1: - resolution: {integrity: sha512-lJ2ssrl3FoTK3cX/g15lRCkXFWKiwRTRtBjfwounO2EM/Q65rI/MEZsfsch1juWU2pH2aLSaq0HGowlDP/imrw==} - dev: false + abort-controller-x@0.4.1: {} - /abort-controller@3.0.0: - resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} - engines: {node: '>=6.5'} + abort-controller@3.0.0: dependencies: event-target-shim: 5.0.1 - dev: false - /abstract-logging@2.0.1: - resolution: {integrity: sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==} - dev: false + abstract-logging@2.0.1: {} - /accepts@1.3.8: - resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} - engines: {node: '>= 0.6'} + accepts@1.3.8: dependencies: mime-types: 2.1.35 negotiator: 0.6.3 - dev: false - /acorn-jsx@5.3.2(acorn@6.4.2): - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + acorn-jsx@5.3.2(acorn@6.4.2): dependencies: acorn: 6.4.2 - dev: true - /acorn-jsx@5.3.2(acorn@8.11.3): - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + acorn-jsx@5.3.2(acorn@8.11.3): dependencies: acorn: 8.11.3 - dev: true - /acorn-walk@8.3.2: - resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} - engines: {node: '>=0.4.0'} - dev: true + acorn-walk@8.3.2: {} - /acorn@6.4.2: - resolution: {integrity: sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==} - engines: {node: '>=0.4.0'} - hasBin: true - dev: true + acorn@6.4.2: {} - /acorn@8.11.3: - resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} - engines: {node: '>=0.4.0'} - hasBin: true - dev: true + acorn@8.11.3: {} - /adm-zip@0.4.16: - resolution: {integrity: sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==} - engines: {node: '>=0.3.0'} - dev: true + adm-zip@0.4.16: {} - /aes-js@3.0.0: - resolution: {integrity: sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==} + aes-js@3.0.0: {} - /agent-base@6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} + agent-base@6.0.2: dependencies: debug: 4.3.4(supports-color@8.1.1) transitivePeerDependencies: - supports-color - /agentkeepalive@4.5.0: - resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==} - engines: {node: '>= 8.0.0'} + agentkeepalive@4.5.0: dependencies: humanize-ms: 1.2.1 - dev: false - /aggregate-error@3.1.0: - resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} - engines: {node: '>=8'} + aggregate-error@3.1.0: dependencies: clean-stack: 2.2.0 indent-string: 4.0.0 - /ajv-formats@2.1.1(ajv@8.12.0): - resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} - peerDependencies: - ajv: ^8.0.0 - peerDependenciesMeta: - ajv: - optional: true - dependencies: + ajv-formats@2.1.1(ajv@8.12.0): + optionalDependencies: ajv: 8.12.0 - dev: false - /ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + ajv@6.12.6: dependencies: fast-deep-equal: 3.1.3 fast-json-stable-stringify: 2.1.0 json-schema-traverse: 0.4.1 uri-js: 4.4.1 - dev: true - /ajv@8.12.0: - resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + ajv@8.12.0: dependencies: fast-deep-equal: 3.1.3 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 uri-js: 4.4.1 - dev: false - /ansi-align@3.0.1: - resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} + ansi-align@3.0.1: dependencies: string-width: 4.2.3 - dev: true - /ansi-colors@4.1.1: - resolution: {integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==} - engines: {node: '>=6'} - dev: true + ansi-colors@4.1.1: {} - /ansi-colors@4.1.3: - resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} - engines: {node: '>=6'} - dev: true + ansi-colors@4.1.3: {} - /ansi-escapes@3.2.0: - resolution: {integrity: sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==} - engines: {node: '>=4'} - dev: true + ansi-escapes@3.2.0: {} - /ansi-escapes@4.3.2: - resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} - engines: {node: '>=8'} + ansi-escapes@4.3.2: dependencies: type-fest: 0.21.3 - /ansi-regex@2.1.1: - resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} - engines: {node: '>=0.10.0'} + ansi-regex@2.1.1: {} - /ansi-regex@3.0.1: - resolution: {integrity: sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==} - engines: {node: '>=4'} - dev: true + ansi-regex@3.0.1: {} - /ansi-regex@4.1.1: - resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} - engines: {node: '>=6'} + ansi-regex@4.1.1: {} - /ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} + ansi-regex@5.0.1: {} - /ansi-styles@2.2.1: - resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==} - engines: {node: '>=0.10.0'} - dev: true + ansi-styles@2.2.1: {} - /ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} + ansi-styles@3.2.1: dependencies: color-convert: 1.9.3 - /ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} + ansi-styles@4.3.0: dependencies: color-convert: 2.0.1 - /ansi-styles@5.2.0: - resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} - engines: {node: '>=10'} - dev: true + ansi-styles@5.2.0: {} - /antlr4@4.7.1: - resolution: {integrity: sha512-haHyTW7Y9joE5MVs37P2lNYfU2RWBLfcRDD8OWldcdZm5TiCE91B5Xl1oWSwiDUSd4rlExpt2pu1fksYQjRBYQ==} - dev: true + antlr4@4.7.1: {} - /antlr4ts@0.5.0-alpha.4: - resolution: {integrity: sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ==} + antlr4ts@0.5.0-alpha.4: {} - /any-observable@0.3.0(rxjs@6.6.7): - resolution: {integrity: sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==} - engines: {node: '>=6'} - peerDependencies: - rxjs: '*' - zenObservable: '*' - peerDependenciesMeta: - rxjs: - optional: true - zenObservable: - optional: true - dependencies: + any-observable@0.3.0(rxjs@6.6.7): + optionalDependencies: rxjs: 6.6.7 - dev: true - /any-promise@1.3.0: - resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + any-promise@1.3.0: {} - /anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} + anymatch@3.1.3: dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 - /aproba@2.0.0: - resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} - dev: false + aproba@2.0.0: {} - /archy@1.0.0: - resolution: {integrity: sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==} - dev: false + archy@1.0.0: {} - /are-we-there-yet@3.0.1: - resolution: {integrity: sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + are-we-there-yet@3.0.1: dependencies: delegates: 1.0.0 readable-stream: 3.6.0 - dev: false - /arg@5.0.2: - resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} - dev: true + arg@5.0.2: {} - /argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + argparse@1.0.10: dependencies: sprintf-js: 1.0.3 - dev: true - /argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - dev: true + argparse@2.0.1: {} - /argx@3.0.2: - resolution: {integrity: sha512-PUyi1r14HG1AH6raqPEW8+vKNWfvHrmerdBXnf5iz7JOnO1hRaG1cGsH9eay/y8dUIreN7NxSEfK208UCGd0wQ==} - engines: {node: '>=4', npm: '>=2'} + argx@3.0.2: dependencies: iftype: 3.0.2 - dev: false - /argx@4.0.4: - resolution: {integrity: sha512-XLWeRTNBJRzQkbMweLIxdtnvpE7iYUBraPwrIJX57FjL4D1RHLMJRM1AyEP6KZHgvjW7TSnxF8MpGic7YdTGOA==} - engines: {node: '>=8', npm: '>=5'} + argx@4.0.4: dependencies: iftype: 4.0.9 - dev: false +<<<<<<< HEAD /arktype@1.0.29-alpha: resolution: {integrity: sha512-glMLgVhIQRSkR3tymiS+POAcWVJH09sfrgic0jHnyFL8BlhHAJZX2BzdImU9zYr1y9NBqy+U93ZNrRTHXsKRDw==} dev: false @@ -5739,71 +10212,53 @@ packages: '@arktype/schema': 0.0.8 '@arktype/util': 0.0.34 dev: true +======= + arktype@1.0.29-alpha: {} +>>>>>>> 1175edcf0 (feat: update pnpm and node version) - /array-includes@3.1.6: - resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==} - engines: {node: '>= 0.4'} + array-includes@3.1.6: dependencies: call-bind: 1.0.2 define-properties: 1.1.4 es-abstract: 1.20.5 get-intrinsic: 1.1.3 is-string: 1.0.7 - dev: true - /array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} + array-union@2.1.0: {} - /array.prototype.flat@1.3.1: - resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==} - engines: {node: '>= 0.4'} + array.prototype.flat@1.3.1: dependencies: call-bind: 1.0.2 define-properties: 1.1.4 es-abstract: 1.20.5 es-shim-unscopables: 1.0.0 - dev: true - /array.prototype.flatmap@1.3.1: - resolution: {integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==} - engines: {node: '>= 0.4'} + array.prototype.flatmap@1.3.1: dependencies: call-bind: 1.0.2 define-properties: 1.1.4 es-abstract: 1.20.5 es-shim-unscopables: 1.0.0 - dev: true - /array.prototype.tosorted@1.1.1: - resolution: {integrity: sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==} + array.prototype.tosorted@1.1.1: dependencies: call-bind: 1.0.2 define-properties: 1.1.4 es-abstract: 1.20.5 es-shim-unscopables: 1.0.0 get-intrinsic: 1.1.3 - dev: true - /arrayreduce@2.1.0: - resolution: {integrity: sha512-I5MwrsPJ4faMuuPXM8+EgEy83G16i+FqegFhhHX3geDJbyaqPDWNrVjkrRg9SZq5mepEZdNg36SDPOhiKPWTLA==} - engines: {node: '>=4.0.0'} - dev: false + arrayreduce@2.1.0: {} - /arrify@1.0.1: - resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} - engines: {node: '>=0.10.0'} - dev: true + arrify@1.0.1: {} - /askconfig@4.0.4: - resolution: {integrity: sha512-fjB/vmAlUKxGVqcz4mLub3xF8m9rkazhqcXRvrDzeey0iaLhcAg2K8bhJL7pKjE2dFP9qDGv3+yXovYMV9XBJQ==} - engines: {node: '>=8', npm: '>=5'} + askconfig@4.0.4: dependencies: argx: 4.0.4 cli-color: 1.4.0 objnest: 5.1.1 - dev: false +<<<<<<< HEAD /asn1.js@5.4.1: resolution: {integrity: sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==} dependencies: @@ -5817,76 +10272,48 @@ packages: resolution: {integrity: sha512-GPKavCMUVZbrU31KTBMtnsRZa9pPN10ApfkPGNdL70Qpu/rORbTCte/37dnIUnQdXHm+5vHmG+iGRWmwJO5hvA==} engines: {node: '>=16.0.0', npm: '>=7.0.0'} hasBin: true +======= + assemblyscript@0.21.7: +>>>>>>> 1175edcf0 (feat: update pnpm and node version) dependencies: binaryen: 110.0.0-nightly.20221006 long: 5.2.1 - dev: true - /assertion-error@1.1.0: - resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} - dev: true + assertion-error@1.1.0: {} - /ast-parents@0.0.1: - resolution: {integrity: sha512-XHusKxKz3zoYk1ic8Un640joHbFMhbqneyoZfoKnEGtf2ey9Uh/IdpcQplODdO/kENaMIWsD0nJm4+wX3UNLHA==} - dev: true + ast-parents@0.0.1: {} - /astral-regex@1.0.0: - resolution: {integrity: sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==} - engines: {node: '>=4'} - dev: true + astral-regex@1.0.0: {} - /astral-regex@2.0.0: - resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} - engines: {node: '>=8'} - dev: false + astral-regex@2.0.0: {} - /async@1.5.2: - resolution: {integrity: sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==} - dev: false + async@1.5.2: {} - /async@3.2.4: - resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==} + async@3.2.4: {} - /asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - dev: true + asynckit@0.4.0: {} - /atomic-sleep@1.0.0: - resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} - engines: {node: '>=8.0.0'} - dev: false + atomic-sleep@1.0.0: {} - /autoprefixer@10.4.14(postcss@8.4.23): - resolution: {integrity: sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==} - engines: {node: ^10 || ^12 || >=14} - hasBin: true - peerDependencies: - postcss: ^8.1.0 + autoprefixer@10.4.14(postcss@8.4.23): dependencies: - browserslist: 4.23.0 - caniuse-lite: 1.0.30001609 + browserslist: 4.21.5 + caniuse-lite: 1.0.30001470 fraction.js: 4.2.0 normalize-range: 0.1.2 picocolors: 1.0.0 postcss: 8.4.23 postcss-value-parser: 4.2.0 - dev: true - /avvio@8.2.1: - resolution: {integrity: sha512-TAlMYvOuwGyLK3PfBb5WKBXZmXz2fVCgv23d6zZFdle/q3gPjmxBaeuC0pY0Dzs5PWMSgfqqEZkrye19GlDTgw==} + avvio@8.2.1: dependencies: archy: 1.0.0 debug: 4.3.4(supports-color@8.1.1) fastq: 1.15.0 transitivePeerDependencies: - supports-color - dev: false - /babel-jest@29.5.0(@babel/core@7.21.4): - resolution: {integrity: sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@babel/core': ^7.8.0 + babel-jest@29.5.0(@babel/core@7.21.4): dependencies: '@babel/core': 7.21.4 '@jest/transform': 29.5.0 @@ -5898,11 +10325,8 @@ packages: slash: 3.0.0 transitivePeerDependencies: - supports-color - dev: true - /babel-plugin-istanbul@6.1.1: - resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} - engines: {node: '>=8'} + babel-plugin-istanbul@6.1.1: dependencies: '@babel/helper-plugin-utils': 7.20.2 '@istanbuljs/load-nyc-config': 1.1.0 @@ -5911,22 +10335,15 @@ packages: test-exclude: 6.0.0 transitivePeerDependencies: - supports-color - dev: true - /babel-plugin-jest-hoist@29.5.0: - resolution: {integrity: sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + babel-plugin-jest-hoist@29.5.0: dependencies: '@babel/template': 7.20.7 '@babel/types': 7.21.4 '@types/babel__core': 7.20.0 '@types/babel__traverse': 7.18.3 - dev: true - /babel-preset-current-node-syntax@1.0.1(@babel/core@7.21.4): - resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} - peerDependencies: - '@babel/core': ^7.0.0 + babel-preset-current-node-syntax@1.0.1(@babel/core@7.21.4): dependencies: '@babel/core': 7.21.4 '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.21.4) @@ -5941,98 +10358,69 @@ packages: '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.21.4) '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.21.4) '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.21.4) - dev: true - /babel-preset-jest@29.5.0(@babel/core@7.21.4): - resolution: {integrity: sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@babel/core': ^7.0.0 + babel-preset-jest@29.5.0(@babel/core@7.21.4): dependencies: '@babel/core': 7.21.4 babel-plugin-jest-hoist: 29.5.0 babel-preset-current-node-syntax: 1.0.1(@babel/core@7.21.4) - dev: true - /babel-runtime@6.26.0: - resolution: {integrity: sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==} + babel-runtime@6.26.0: dependencies: core-js: 2.6.12 regenerator-runtime: 0.11.1 - dev: false - /balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + balanced-match@1.0.2: {} - /base-x@3.0.9: - resolution: {integrity: sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==} + base-x@3.0.9: dependencies: safe-buffer: 5.2.1 - dev: true - /base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - dev: false + base64-js@1.5.1: {} - /bech32@1.1.4: - resolution: {integrity: sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==} + bech32@1.1.4: {} - /better-path-resolve@1.0.0: - resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} - engines: {node: '>=4'} + better-path-resolve@1.0.0: dependencies: is-windows: 1.0.2 - dev: true - /better-sqlite3@8.6.0: - resolution: {integrity: sha512-jwAudeiTMTSyby+/SfbHDebShbmC2MCH8mU2+DXi0WJfv13ypEJm47cd3kljmy/H130CazEvkf2Li//ewcMJ1g==} - requiresBuild: true + better-sqlite3@8.6.0: dependencies: bindings: 1.5.0 prebuild-install: 7.1.1 - dev: false - /binary-extensions@2.2.0: - resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} - engines: {node: '>=8'} + binary-extensions@2.2.0: {} - /binaryen@110.0.0-nightly.20221006: - resolution: {integrity: sha512-yC7ZLoaZmXhm5cB0+g3rZkz5ujPSlhX+FEQtgaQHVxcL78D8cTXdRSdajhgQD345BVPsooOrSxqhX6tnULgBWg==} - hasBin: true - dev: true + binaryen@110.0.0-nightly.20221006: {} - /bindings@1.5.0: - resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} + bindings@1.5.0: dependencies: file-uri-to-path: 1.0.0 - dev: false +<<<<<<< HEAD /bintrees@1.0.2: resolution: {integrity: sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw==} dev: false /bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} +======= + bl@4.1.0: +>>>>>>> d2ee83450 (feat: update pnpm and node version) dependencies: buffer: 5.7.1 inherits: 2.0.4 readable-stream: 3.6.0 - dev: false - /blakejs@1.2.1: - resolution: {integrity: sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==} - dev: true + blakejs@1.2.1: {} - /bn.js@4.11.6: - resolution: {integrity: sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==} - dev: true + bn.js@4.11.6: {} - /bn.js@4.12.0: - resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==} + bn.js@4.12.0: {} - /bn.js@5.2.1: - resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} + bn.js@5.2.1: {} +<<<<<<< HEAD /bowser@2.11.0: resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==} dev: false @@ -6040,6 +10428,9 @@ packages: /boxen@5.1.2: resolution: {integrity: sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==} engines: {node: '>=10'} +======= + boxen@5.1.2: +>>>>>>> 1175edcf0 (feat: update pnpm and node version) dependencies: ansi-align: 3.0.1 camelcase: 6.3.0 @@ -6049,44 +10440,31 @@ packages: type-fest: 0.20.2 widest-line: 3.1.0 wrap-ansi: 7.0.0 - dev: true - /brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + brace-expansion@1.1.11: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - /brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + brace-expansion@2.0.1: dependencies: balanced-match: 1.0.2 - /braces@3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} - engines: {node: '>=8'} + braces@3.0.2: dependencies: fill-range: 7.0.1 - /breakword@1.0.6: - resolution: {integrity: sha512-yjxDAYyK/pBvws9H4xKYpLDpYKEH6CzrBPAuXq3x18I+c/2MkVtT3qAr7Oloi6Dss9qNhPVueAAVU1CSeNDIXw==} + breakword@1.0.6: dependencies: wcwidth: 1.0.1 - dev: true - /brorand@1.1.0: - resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} - - /browser-headers@0.4.1: - resolution: {integrity: sha512-CA9hsySZVo9371qEHjHZtYxV2cFtVj5Wj/ZHi8ooEsrtm4vOnl9Y9HmyYWk9q+05d7K3rdoAE0j3MVEFVvtQtg==} - dev: false + brorand@1.1.0: {} - /browser-stdout@1.3.1: - resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} - dev: true + browser-headers@0.4.1: {} - /browserify-aes@1.2.0: - resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} + browser-stdout@1.3.1: {} + + browserify-aes@1.2.0: dependencies: buffer-xor: 1.0.3 cipher-base: 1.0.4 @@ -6094,77 +10472,49 @@ packages: evp_bytestokey: 1.0.3 inherits: 2.0.4 safe-buffer: 5.2.1 - dev: true - /browserslist@4.23.0: - resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true + browserslist@4.21.5: dependencies: - caniuse-lite: 1.0.30001609 - electron-to-chromium: 1.4.735 - node-releases: 2.0.14 - update-browserslist-db: 1.0.13(browserslist@4.23.0) - dev: true + caniuse-lite: 1.0.30001470 + electron-to-chromium: 1.4.340 + node-releases: 2.0.10 + update-browserslist-db: 1.0.10(browserslist@4.21.5) - /bs-logger@0.2.6: - resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} - engines: {node: '>= 6'} + bs-logger@0.2.6: dependencies: fast-json-stable-stringify: 2.1.0 - dev: true - /bs58@4.0.1: - resolution: {integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==} + bs58@4.0.1: dependencies: base-x: 3.0.9 - dev: true - /bs58check@2.1.2: - resolution: {integrity: sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==} + bs58check@2.1.2: dependencies: bs58: 4.0.1 create-hash: 1.2.0 safe-buffer: 5.2.1 - dev: true - /bser@2.1.1: - resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + bser@2.1.1: dependencies: node-int64: 0.4.0 - dev: true - /buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + buffer-from@1.1.2: {} - /buffer-lite@1.1.0: - resolution: {integrity: sha512-oU0QAzHknj4a3PNzTznNUN61r6OdAqqJJdzTm422yyIM3QyK5/7zi8wPVFooCwoPKk90ybCm9qnvkk+tsQt5sg==} - dev: true + buffer-lite@1.1.0: {} - /buffer-xor@1.0.3: - resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} - dev: true + buffer-xor@1.0.3: {} - /buffer@5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + buffer@5.7.1: dependencies: base64-js: 1.5.1 ieee754: 1.2.1 - dev: false - /buffer@6.0.3: - resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + buffer@6.0.3: dependencies: base64-js: 1.5.1 ieee754: 1.2.1 - dev: false - /bun@1.0.11: - resolution: {integrity: sha512-cKyQAQOfWNIP511UpQjkABUp7z/5+1ci2kXfhjL9PozHoCaCtnYFtVjeqU1LovpqEP1agAsMiDpGNKbJP89RIw==} - cpu: [arm64, x64] - os: [darwin, linux] - hasBin: true - requiresBuild: true + bun@1.0.11: optionalDependencies: '@oven/bun-darwin-aarch64': 1.0.11 '@oven/bun-darwin-x64': 1.0.11 @@ -6172,31 +10522,17 @@ packages: '@oven/bun-linux-aarch64': 1.0.11 '@oven/bun-linux-x64': 1.0.11 '@oven/bun-linux-x64-baseline': 1.0.11 - dev: true - /bundle-require@4.0.1(esbuild@0.17.17): - resolution: {integrity: sha512-9NQkRHlNdNpDBGmLpngF3EFDcwodhMUuLz9PaWYciVcQF9SE4LFjM2DB/xV1Li5JiuDMv7ZUWuC3rGbqR0MAXQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - peerDependencies: - esbuild: '>=0.17' + bundle-require@4.0.1(esbuild@0.17.17): dependencies: esbuild: 0.17.17 load-tsconfig: 0.2.5 - dev: true - /bytes@3.1.2: - resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} - engines: {node: '>= 0.8'} - dev: true + bytes@3.1.2: {} - /cac@6.7.14: - resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} - engines: {node: '>=8'} - dev: true + cac@6.7.14: {} - /cacache@16.1.3: - resolution: {integrity: sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + cacache@16.1.3: dependencies: '@npmcli/fs': 2.1.2 '@npmcli/move-file': 2.0.1 @@ -6218,91 +10554,51 @@ packages: unique-filename: 2.0.1 transitivePeerDependencies: - bluebird - dev: false - /cache-content-type@1.0.1: - resolution: {integrity: sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==} - engines: {node: '>= 6.0.0'} + cache-content-type@1.0.1: dependencies: mime-types: 2.1.35 ylru: 1.3.2 - dev: false - /call-bind@1.0.2: - resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} + call-bind@1.0.2: dependencies: function-bind: 1.1.1 get-intrinsic: 1.1.3 - dev: true - /caller-callsite@2.0.0: - resolution: {integrity: sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==} - engines: {node: '>=4'} + caller-callsite@2.0.0: dependencies: callsites: 2.0.0 - dev: true - /caller-path@2.0.0: - resolution: {integrity: sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==} - engines: {node: '>=4'} + caller-path@2.0.0: dependencies: caller-callsite: 2.0.0 - dev: true - /callsites@2.0.0: - resolution: {integrity: sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==} - engines: {node: '>=4'} - dev: true + callsites@2.0.0: {} - /callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - dev: true + callsites@3.1.0: {} - /camelcase-css@2.0.1: - resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} - engines: {node: '>= 6'} - dev: true + camelcase-css@2.0.1: {} - /camelcase-keys@6.2.2: - resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} - engines: {node: '>=8'} + camelcase-keys@6.2.2: dependencies: camelcase: 5.3.1 map-obj: 4.3.0 quick-lru: 4.0.1 - dev: true - /camelcase@5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} - engines: {node: '>=6'} + camelcase@5.3.1: {} - /camelcase@6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} - dev: true + camelcase@6.3.0: {} - /caniuse-lite@1.0.30001609: - resolution: {integrity: sha512-JFPQs34lHKx1B5t1EpQpWH4c+29zIyn/haGsbpfq3suuV9v56enjFt23zqijxGTMwy1p/4H2tjnQMY+p1WoAyA==} - dev: true + caniuse-lite@1.0.30001470: {} - /case-anything@2.1.10: - resolution: {integrity: sha512-JczJwVrCP0jPKh05McyVsuOg6AYosrB9XWZKbQzXeDAm2ClE/PJE/BcrrQrVyGYH7Jg8V/LDupmyL4kFlVsVFQ==} - engines: {node: '>=12.13'} - dev: true + case-anything@2.1.10: {} - /chai-as-promised@7.1.1(chai@4.4.1): - resolution: {integrity: sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==} - peerDependencies: - chai: '>= 2.1.2 < 5' + chai-as-promised@7.1.1(chai@4.4.1): dependencies: chai: 4.4.1 check-error: 1.0.3 - dev: true - /chai@4.4.1: - resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==} - engines: {node: '>=4'} + chai@4.4.1: dependencies: assertion-error: 1.1.0 check-error: 1.0.3 @@ -6311,64 +10607,42 @@ packages: loupe: 2.3.6 pathval: 1.1.1 type-detect: 4.0.8 - dev: true - /chalk@1.1.3: - resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==} - engines: {node: '>=0.10.0'} + chalk@1.1.3: dependencies: ansi-styles: 2.2.1 escape-string-regexp: 1.0.5 has-ansi: 2.0.0 strip-ansi: 3.0.1 supports-color: 2.0.0 - dev: true - /chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} + chalk@2.4.2: dependencies: ansi-styles: 3.2.1 escape-string-regexp: 1.0.5 supports-color: 5.5.0 - dev: true - /chalk@3.0.0: - resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} - engines: {node: '>=8'} + chalk@3.0.0: dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 - dev: true - /chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} + chalk@4.1.2: dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 - /change-case@5.2.0: - resolution: {integrity: sha512-L6VzznESnMIKKdKhVzCG+KPz4+x1FWbjOs1AdhoHStV3qo8aySMRGPUoqC0aL1ThKaQNGhAu6ZfHL/QAyQRuiw==} - dev: false + change-case@5.2.0: {} - /char-regex@1.0.2: - resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} - engines: {node: '>=10'} - dev: true + char-regex@1.0.2: {} - /chardet@0.7.0: - resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + chardet@0.7.0: {} - /check-error@1.0.3: - resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} + check-error@1.0.3: dependencies: get-func-name: 2.0.2 - dev: true - /chokidar@3.5.3: - resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} - engines: {node: '>= 8.10.0'} + chokidar@3.5.3: dependencies: anymatch: 3.1.3 braces: 3.0.2 @@ -6380,46 +10654,26 @@ packages: optionalDependencies: fsevents: 2.3.3 - /chownr@1.1.4: - resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} - dev: false + chownr@1.1.4: {} - /chownr@2.0.0: - resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} - engines: {node: '>=10'} - dev: false + chownr@2.0.0: {} - /ci-info@2.0.0: - resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} - dev: true + ci-info@2.0.0: {} - /ci-info@3.8.0: - resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} - engines: {node: '>=8'} - dev: true + ci-info@3.8.0: {} - /cipher-base@1.0.4: - resolution: {integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==} + cipher-base@1.0.4: dependencies: inherits: 2.0.4 safe-buffer: 5.2.1 - dev: true - /cjs-module-lexer@1.2.2: - resolution: {integrity: sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==} - dev: true + cjs-module-lexer@1.2.2: {} - /clean-stack@2.2.0: - resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} - engines: {node: '>=6'} + clean-stack@2.2.0: {} - /cli-boxes@2.2.1: - resolution: {integrity: sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==} - engines: {node: '>=6'} - dev: true + cli-boxes@2.2.1: {} - /cli-color@1.4.0: - resolution: {integrity: sha512-xu6RvQqqrWEo6MPR1eixqGPywhYBHRs653F9jfXB2Hx4jdM/3WxiNE1vppRmxtMIfl16SFYTpYlrnqH/HsK/2w==} + cli-color@1.4.0: dependencies: ansi-regex: 2.1.1 d: 1.0.1 @@ -6427,142 +10681,85 @@ packages: es6-iterator: 2.0.3 memoizee: 0.4.15 timers-ext: 0.1.7 - dev: false - /cli-cursor@2.1.0: - resolution: {integrity: sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==} - engines: {node: '>=4'} + cli-cursor@2.1.0: dependencies: restore-cursor: 2.0.0 - dev: true - /cli-cursor@3.1.0: - resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} - engines: {node: '>=8'} + cli-cursor@3.1.0: dependencies: restore-cursor: 3.1.0 - dev: false - /cli-truncate@0.2.1: - resolution: {integrity: sha512-f4r4yJnbT++qUPI9NR4XLDLq41gQ+uqnPItWG0F5ZkehuNiTTa3EY0S4AqTSUOeJ7/zU41oWPQSNkW5BqPL9bg==} - engines: {node: '>=0.10.0'} + cli-truncate@0.2.1: dependencies: slice-ansi: 0.0.4 string-width: 1.0.2 - dev: true - /cli-width@2.2.1: - resolution: {integrity: sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==} - dev: true + cli-width@2.2.1: {} - /cli-width@3.0.0: - resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} - engines: {node: '>= 10'} - dev: false + cli-width@3.0.0: {} - /cliui@5.0.0: - resolution: {integrity: sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==} + cliui@5.0.0: dependencies: string-width: 3.1.0 strip-ansi: 5.2.0 wrap-ansi: 5.1.0 - dev: false - /cliui@6.0.0: - resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} + cliui@6.0.0: dependencies: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 6.2.0 - dev: true - /cliui@7.0.4: - resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} + cliui@7.0.4: dependencies: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 7.0.0 - dev: true - /cliui@8.0.1: - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} - engines: {node: '>=12'} + cliui@8.0.1: dependencies: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 7.0.0 - /clone@1.0.4: - resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} - engines: {node: '>=0.8'} - dev: true + clone@1.0.4: {} - /co@4.6.0: - resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} - engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + co@4.6.0: {} - /code-point-at@1.1.0: - resolution: {integrity: sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==} - engines: {node: '>=0.10.0'} - dev: true + code-point-at@1.1.0: {} - /collect-v8-coverage@1.0.1: - resolution: {integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==} - dev: true + collect-v8-coverage@1.0.1: {} - /color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + color-convert@1.9.3: dependencies: color-name: 1.1.3 - /color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} + color-convert@2.0.1: dependencies: color-name: 1.1.4 - /color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + color-name@1.1.3: {} - /color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + color-name@1.1.4: {} - /color-support@1.1.3: - resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} - hasBin: true - dev: false + color-support@1.1.3: {} - /combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} + combined-stream@1.0.8: dependencies: delayed-stream: 1.0.0 - dev: true - /command-exists@1.2.9: - resolution: {integrity: sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==} - dev: true + command-exists@1.2.9: {} - /commander@2.18.0: - resolution: {integrity: sha512-6CYPa+JP2ftfRU2qkDK+UTVeQYosOg/2GbcjIcKPHfinyOLPVGXu/ovN86RP49Re5ndJK1N0kuiidFFuepc4ZQ==} - dev: true + commander@2.18.0: {} - /commander@3.0.2: - resolution: {integrity: sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==} - dev: true + commander@3.0.2: {} - /commander@4.1.1: - resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} - engines: {node: '>= 6'} - dev: true + commander@4.1.1: {} - /concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + concat-map@0.0.1: {} - /concurrently@8.2.2: - resolution: {integrity: sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg==} - engines: {node: ^14.13.0 || >=16.0.0} - hasBin: true + concurrently@8.2.2: dependencies: chalk: 4.1.2 date-fns: 2.30.0 @@ -6573,100 +10770,78 @@ packages: supports-color: 8.1.1 tree-kill: 1.2.2 yargs: 17.7.2 - dev: true - /console-control-strings@1.1.0: - resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} - dev: false + console-control-strings@1.1.0: {} - /content-disposition@0.5.4: - resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} - engines: {node: '>= 0.6'} + content-disposition@0.5.4: dependencies: safe-buffer: 5.2.1 - dev: false - /content-type@1.0.5: - resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} - engines: {node: '>= 0.6'} - dev: false + content-type@1.0.5: {} - /convert-source-map@1.9.0: - resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} - dev: true + convert-source-map@1.9.0: {} - /convert-source-map@2.0.0: - resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - dev: true + convert-source-map@2.0.0: {} - /cookie@0.4.2: - resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} - engines: {node: '>= 0.6'} - dev: true + cookie@0.4.2: {} - /cookie@0.5.0: - resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} - engines: {node: '>= 0.6'} - dev: false + cookie@0.5.0: {} - /cookies@0.8.0: - resolution: {integrity: sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow==} - engines: {node: '>= 0.8'} + cookies@0.8.0: dependencies: depd: 2.0.0 keygrip: 1.1.0 - dev: false - /copy-anything@3.0.5: - resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==} - engines: {node: '>=12.13'} + copy-anything@3.0.5: dependencies: is-what: 4.1.15 - dev: false - /core-js@2.6.12: - resolution: {integrity: sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==} - deprecated: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js. - requiresBuild: true - dev: false + core-js@2.6.12: {} - /core-util-is@1.0.3: - resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - dev: false + core-util-is@1.0.3: {} - /cosmiconfig@5.2.1: - resolution: {integrity: sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==} - engines: {node: '>=4'} + cosmiconfig@5.2.1: dependencies: import-fresh: 2.0.0 is-directory: 0.3.1 js-yaml: 3.14.1 parse-json: 4.0.0 - dev: true - /cosmiconfig@6.0.0: - resolution: {integrity: sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==} - engines: {node: '>=8'} + cosmiconfig@6.0.0: dependencies: '@types/parse-json': 4.0.0 import-fresh: 3.3.0 parse-json: 5.2.0 path-type: 4.0.0 yaml: 1.10.2 - dev: true - /create-hash@1.2.0: - resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} + create-create-app@https://codeload.github.com/holic/create-create-app/tar.gz/74376c59b48a04aabbe94d9cacfe9cb1cecccd63(encoding@0.1.13): + dependencies: + '@types/yargs-interactive': 2.1.3 + chalk: 4.1.2 + cross-spawn: 7.0.3 + epicfail: 3.0.0(encoding@0.1.13) + execa: 5.1.1 + gitconfig: 2.0.8 + globby: 11.1.0 + handlebars: 4.7.7 + is-utf8: 0.2.1 + license.js: 3.1.2 + slash: 3.0.0 + uuid: 8.3.2 + yargs-interactive: 3.0.1 + transitivePeerDependencies: + - encoding + + create-hash@1.2.0: dependencies: cipher-base: 1.0.4 inherits: 2.0.4 md5.js: 1.3.5 ripemd160: 2.0.2 sha.js: 2.4.11 - dev: true - /create-hmac@1.1.7: - resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==} + create-hmac@1.1.7: dependencies: cipher-base: 1.0.4 create-hash: 1.2.0 @@ -6674,467 +10849,197 @@ packages: ripemd160: 2.0.2 safe-buffer: 5.2.1 sha.js: 2.4.11 - dev: true - /cross-spawn@5.1.0: - resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} + cross-spawn@5.1.0: dependencies: lru-cache: 4.1.5 shebang-command: 1.2.0 which: 1.3.1 - dev: true - /cross-spawn@6.0.5: - resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==} - engines: {node: '>=4.8'} + cross-spawn@6.0.5: dependencies: nice-try: 1.0.5 path-key: 2.0.1 semver: 5.7.1 shebang-command: 1.2.0 which: 1.3.1 - dev: true - /cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} + cross-spawn@7.0.3: dependencies: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 - /cssesc@3.0.0: - resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} - engines: {node: '>=4'} - hasBin: true - dev: true + cssesc@3.0.0: {} - /cssstyle@3.0.0: - resolution: {integrity: sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==} - engines: {node: '>=14'} + cssstyle@3.0.0: dependencies: rrweb-cssom: 0.6.0 - dev: true - /csstype@3.1.2: - resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} - dev: true + csstype@3.1.2: {} - /csv-generate@3.4.3: - resolution: {integrity: sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==} - dev: true + csv-generate@3.4.3: {} - /csv-parse@4.16.3: - resolution: {integrity: sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==} - dev: true + csv-parse@4.16.3: {} - /csv-stringify@5.6.5: - resolution: {integrity: sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A==} - dev: true + csv-stringify@5.6.5: {} - /csv@5.5.3: - resolution: {integrity: sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g==} - engines: {node: '>= 0.1.90'} + csv@5.5.3: dependencies: csv-generate: 3.4.3 csv-parse: 4.16.3 csv-stringify: 5.6.5 stream-transform: 2.1.3 - dev: true - /d@1.0.1: - resolution: {integrity: sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==} + d@1.0.1: dependencies: es5-ext: 0.10.62 type: 1.2.0 - dev: false - /data-urls@4.0.0: - resolution: {integrity: sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g==} - engines: {node: '>=14'} + data-urls@4.0.0: dependencies: abab: 2.0.6 whatwg-mimetype: 3.0.0 whatwg-url: 12.0.1 - dev: true - /dataloader@1.4.0: - resolution: {integrity: sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==} - dev: true + dataloader@1.4.0: {} - /date-fns@1.30.1: - resolution: {integrity: sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==} - dev: true + date-fns@1.30.1: {} - /date-fns@2.30.0: - resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} - engines: {node: '>=0.11'} + date-fns@2.30.0: dependencies: '@babel/runtime': 7.21.0 - dev: true - /debug@4.3.4(supports-color@8.1.1): - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true + debug@4.3.4(supports-color@8.1.1): dependencies: ms: 2.1.2 + optionalDependencies: supports-color: 8.1.1 - /decamelize-keys@1.1.1: - resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} - engines: {node: '>=0.10.0'} + decamelize-keys@1.1.1: dependencies: decamelize: 1.2.0 map-obj: 1.0.1 - dev: true - /decamelize@1.2.0: - resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} - engines: {node: '>=0.10.0'} + decamelize@1.2.0: {} - /decamelize@4.0.0: - resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} - engines: {node: '>=10'} - dev: true + decamelize@4.0.0: {} - /decimal.js@10.4.3: - resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} - dev: true + decimal.js@10.4.3: {} - /decompress-response@6.0.0: - resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} - engines: {node: '>=10'} + decompress-response@6.0.0: dependencies: mimic-response: 3.1.0 - dev: false - /dedent@0.7.0: - resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} - dev: true + dedent@0.7.0: {} - /deep-eql@4.1.3: - resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} - engines: {node: '>=6'} + deep-eql@4.1.3: dependencies: type-detect: 4.0.8 - dev: true - /deep-equal@1.0.1: - resolution: {integrity: sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==} - dev: false + deep-equal@1.0.1: {} - /deep-extend@0.6.0: - resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} - engines: {node: '>=4.0.0'} - dev: false + deep-extend@0.6.0: {} - /deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - dev: true + deep-is@0.1.4: {} - /deepmerge@4.3.1: - resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} - engines: {node: '>=0.10.0'} - dev: true + deepmerge@4.3.1: {} - /defaults@1.0.4: - resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + defaults@1.0.4: dependencies: clone: 1.0.4 - dev: true - /define-properties@1.1.4: - resolution: {integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==} - engines: {node: '>= 0.4'} + define-properties@1.1.4: dependencies: has-property-descriptors: 1.0.0 object-keys: 1.1.1 - dev: true - /delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} - dev: true + delayed-stream@1.0.0: {} - /delegates@1.0.0: - resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} - dev: false + delegates@1.0.0: {} - /depd@1.1.2: - resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} - engines: {node: '>= 0.6'} - dev: false + depd@1.1.2: {} - /depd@2.0.0: - resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} - engines: {node: '>= 0.8'} + depd@2.0.0: {} - /destroy@1.2.0: - resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - dev: false + destroy@1.2.0: {} - /detect-indent@6.1.0: - resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} - engines: {node: '>=8'} - dev: true + detect-indent@6.1.0: {} - /detect-libc@1.0.3: - resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} - engines: {node: '>=0.10'} - hasBin: true - dev: true + detect-libc@1.0.3: {} - /detect-libc@2.0.2: - resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==} - engines: {node: '>=8'} - dev: false + detect-libc@2.0.2: {} - /detect-newline@3.1.0: - resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} - engines: {node: '>=8'} - dev: true + detect-newline@3.1.0: {} - /didyoumean@1.2.2: - resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} - dev: true + didyoumean@1.2.2: {} - /diff-sequences@27.5.1: - resolution: {integrity: sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dev: true + diff-sequences@27.5.1: {} - /diff-sequences@29.6.3: - resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dev: true + diff-sequences@29.6.3: {} - /diff@5.0.0: - resolution: {integrity: sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==} - engines: {node: '>=0.3.1'} - dev: true + diff@5.0.0: {} - /dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} + dir-glob@3.0.1: dependencies: path-type: 4.0.0 - /dlv@1.1.3: - resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} - dev: true + dlv@1.1.3: {} - /doctrine@2.1.0: - resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} - engines: {node: '>=0.10.0'} + doctrine@2.1.0: dependencies: esutils: 2.0.3 - dev: true - /doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} + doctrine@3.0.0: dependencies: esutils: 2.0.3 - dev: true - /domexception@4.0.0: - resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} - engines: {node: '>=12'} + domexception@4.0.0: dependencies: webidl-conversions: 7.0.0 - dev: true - /dotenv@16.0.3: - resolution: {integrity: sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==} - engines: {node: '>=12'} + dotenv@16.0.3: {} - /dprint-node@1.0.7: - resolution: {integrity: sha512-NTZOW9A7ipb0n7z7nC3wftvsbceircwVHSgzobJsEQa+7RnOMbhrfX5IflA6CtC4GA63DSAiHYXa4JKEy9F7cA==} + dprint-node@1.0.7: dependencies: detect-libc: 1.0.3 - dev: true - /drizzle-orm@0.28.5(@types/better-sqlite3@7.6.4)(better-sqlite3@8.6.0)(postgres@3.3.5): - resolution: {integrity: sha512-6r6Iw4c38NAmW6TiKH3TUpGUQ1YdlEoLJOQptn8XPx3Z63+vFNKfAiANqrIiYZiMjKR9+NYAL219nFrmo1duXA==} - peerDependencies: - '@aws-sdk/client-rds-data': '>=3' - '@cloudflare/workers-types': '>=3' - '@libsql/client': '*' - '@neondatabase/serverless': '>=0.1' - '@opentelemetry/api': ^1.4.1 - '@planetscale/database': '>=1' - '@types/better-sqlite3': '*' - '@types/pg': '*' - '@types/sql.js': '*' - '@vercel/postgres': '*' - better-sqlite3: '>=7' - bun-types: '*' - knex: '*' - kysely: '*' - mysql2: '>=2' - pg: '>=8' - postgres: '>=3' - sql.js: '>=1' - sqlite3: '>=5' - peerDependenciesMeta: - '@aws-sdk/client-rds-data': - optional: true - '@cloudflare/workers-types': - optional: true - '@libsql/client': - optional: true - '@neondatabase/serverless': - optional: true - '@opentelemetry/api': - optional: true - '@planetscale/database': - optional: true - '@types/better-sqlite3': - optional: true - '@types/pg': - optional: true - '@types/sql.js': - optional: true - '@vercel/postgres': - optional: true - better-sqlite3: - optional: true - bun-types: - optional: true - knex: - optional: true - kysely: - optional: true - mysql2: - optional: true - pg: - optional: true - postgres: - optional: true - sql.js: - optional: true - sqlite3: - optional: true - dependencies: + drizzle-orm@0.28.5(@types/better-sqlite3@7.6.4)(@types/sql.js@1.4.4)(better-sqlite3@8.6.0)(kysely@0.26.3)(postgres@3.3.5)(sql.js@1.8.0): + optionalDependencies: '@types/better-sqlite3': 7.6.4 - better-sqlite3: 8.6.0 - postgres: 3.3.5 - dev: false - - /drizzle-orm@0.28.5(@types/sql.js@1.4.4)(kysely@0.26.3)(postgres@3.3.5)(sql.js@1.8.0): - resolution: {integrity: sha512-6r6Iw4c38NAmW6TiKH3TUpGUQ1YdlEoLJOQptn8XPx3Z63+vFNKfAiANqrIiYZiMjKR9+NYAL219nFrmo1duXA==} - peerDependencies: - '@aws-sdk/client-rds-data': '>=3' - '@cloudflare/workers-types': '>=3' - '@libsql/client': '*' - '@neondatabase/serverless': '>=0.1' - '@opentelemetry/api': ^1.4.1 - '@planetscale/database': '>=1' - '@types/better-sqlite3': '*' - '@types/pg': '*' - '@types/sql.js': '*' - '@vercel/postgres': '*' - better-sqlite3: '>=7' - bun-types: '*' - knex: '*' - kysely: '*' - mysql2: '>=2' - pg: '>=8' - postgres: '>=3' - sql.js: '>=1' - sqlite3: '>=5' - peerDependenciesMeta: - '@aws-sdk/client-rds-data': - optional: true - '@cloudflare/workers-types': - optional: true - '@libsql/client': - optional: true - '@neondatabase/serverless': - optional: true - '@opentelemetry/api': - optional: true - '@planetscale/database': - optional: true - '@types/better-sqlite3': - optional: true - '@types/pg': - optional: true - '@types/sql.js': - optional: true - '@vercel/postgres': - optional: true - better-sqlite3: - optional: true - bun-types: - optional: true - knex: - optional: true - kysely: - optional: true - mysql2: - optional: true - pg: - optional: true - postgres: - optional: true - sql.js: - optional: true - sqlite3: - optional: true - dependencies: '@types/sql.js': 1.4.4 + better-sqlite3: 8.6.0 kysely: 0.26.3 postgres: 3.3.5 sql.js: 1.8.0 - dev: false - /duplexify@3.7.1: - resolution: {integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==} + ds-test@https://codeload.github.com/dapphub/ds-test/tar.gz/e282159d5170298eb2455a6c05280ab5a73a4ef0: {} + + duplexify@3.7.1: dependencies: end-of-stream: 1.4.4 inherits: 2.0.4 readable-stream: 2.3.8 stream-shift: 1.0.1 - dev: false - /duplexify@4.1.2: - resolution: {integrity: sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==} + duplexify@4.1.2: dependencies: end-of-stream: 1.4.4 inherits: 2.0.4 readable-stream: 3.6.0 stream-shift: 1.0.1 - dev: false - - /ee-first@1.1.1: - resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - dev: false - /ejs@3.1.8: - resolution: {integrity: sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==} - engines: {node: '>=0.10.0'} - hasBin: true + ee-first@1.1.1: {} + + ejs@3.1.8: dependencies: jake: 10.8.5 - /electron-to-chromium@1.4.735: - resolution: {integrity: sha512-pkYpvwg8VyOTQAeBqZ7jsmpCjko1Qc6We1ZtZCjRyYbT5v4AIUKDy5cQTRotQlSSZmMr8jqpEt6JtOj5k7lR7A==} - dev: true + electron-to-chromium@1.4.340: {} - /elegant-spinner@1.0.1: - resolution: {integrity: sha512-B+ZM+RXvRqQaAmkMlO/oSe5nMUOaUnyfGYCEHoR8wrXsZR2mA0XVibsxV1bvTwxdRWah1PkQqso2EzhILGHtEQ==} - engines: {node: '>=0.10.0'} - dev: true + elegant-spinner@1.0.1: {} - /elliptic@6.5.4: - resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} + elliptic@6.5.4: dependencies: bn.js: 4.12.0 brorand: 1.1.0 @@ -7144,81 +11049,49 @@ packages: minimalistic-assert: 1.0.1 minimalistic-crypto-utils: 1.0.1 - /emittery@0.13.1: - resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} - engines: {node: '>=12'} - dev: true + emittery@0.13.1: {} - /emoji-regex@7.0.3: - resolution: {integrity: sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==} + emoji-regex@7.0.3: {} - /emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + emoji-regex@8.0.0: {} - /encodeurl@1.0.2: - resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} - engines: {node: '>= 0.8'} - dev: false + encodeurl@1.0.2: {} - /encoding@0.1.13: - resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} - requiresBuild: true + encoding@0.1.13: dependencies: iconv-lite: 0.6.3 - dev: false optional: true - /end-of-stream@1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + end-of-stream@1.4.4: dependencies: once: 1.4.0 - /enquirer@2.3.6: - resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} - engines: {node: '>=8.6'} + enquirer@2.3.6: dependencies: ansi-colors: 4.1.3 - dev: true - /entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} - engines: {node: '>=0.12'} - dev: true + entities@4.5.0: {} - /env-paths@2.2.1: - resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} - engines: {node: '>=6'} + env-paths@2.2.1: {} - /envinfo@7.8.1: - resolution: {integrity: sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==} - engines: {node: '>=4'} - hasBin: true - dev: false + envinfo@7.8.1: {} - /epicfail@3.0.0: - resolution: {integrity: sha512-zf7vvWZ2tI2+P1674dmcyPWopD/0FC2BrAi0DvDY0uKGmrB66rwpRVlOYKFlGwRO4Q6bpkoCTPhjqvi5hMOavQ==} + epicfail@3.0.0(encoding@0.1.13): dependencies: chalk: 4.1.2 envinfo: 7.8.1 - node-fetch: 2.6.9 + node-fetch: 2.6.9(encoding@0.1.13) pkg-up: 3.1.0 transitivePeerDependencies: - encoding - dev: false - /err-code@2.0.3: - resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} - dev: false + err-code@2.0.3: {} - /error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + error-ex@1.3.2: dependencies: is-arrayish: 0.2.1 - dev: true - /es-abstract@1.20.5: - resolution: {integrity: sha512-7h8MM2EQhsCA7pU/Nv78qOXFpD8Rhqd12gYiSJVkrH9+e8VuA8JlPJK/hQjjlLv6pJvx/z1iRFKzYb0XT/RuAQ==} - engines: {node: '>= 0.4'} + es-abstract@1.20.5: dependencies: call-bind: 1.0.2 es-to-primitive: 1.2.1 @@ -7245,62 +11118,42 @@ packages: string.prototype.trimend: 1.0.6 string.prototype.trimstart: 1.0.6 unbox-primitive: 1.0.2 - dev: true - /es-shim-unscopables@1.0.0: - resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} + es-shim-unscopables@1.0.0: dependencies: has: 1.0.3 - dev: true - /es-to-primitive@1.2.1: - resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} - engines: {node: '>= 0.4'} + es-to-primitive@1.2.1: dependencies: is-callable: 1.2.7 is-date-object: 1.0.5 is-symbol: 1.0.4 - dev: true - /es5-ext@0.10.62: - resolution: {integrity: sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==} - engines: {node: '>=0.10'} - requiresBuild: true + es5-ext@0.10.62: dependencies: es6-iterator: 2.0.3 es6-symbol: 3.1.3 next-tick: 1.1.0 - dev: false - /es6-iterator@2.0.3: - resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==} + es6-iterator@2.0.3: dependencies: d: 1.0.1 es5-ext: 0.10.62 es6-symbol: 3.1.3 - dev: false - /es6-symbol@3.1.3: - resolution: {integrity: sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==} + es6-symbol@3.1.3: dependencies: d: 1.0.1 ext: 1.7.0 - dev: false - /es6-weak-map@2.0.3: - resolution: {integrity: sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==} + es6-weak-map@2.0.3: dependencies: d: 1.0.1 es5-ext: 0.10.62 es6-iterator: 2.0.3 es6-symbol: 3.1.3 - dev: false - /esbuild@0.17.15: - resolution: {integrity: sha512-LBUV2VsUIc/iD9ME75qhT4aJj0r75abCVS0jakhFzOtR7TQsqQA5w0tZ+KTKnwl3kXE0MhskNdHDh/I5aCR1Zw==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true + esbuild@0.17.15: optionalDependencies: '@esbuild/android-arm': 0.17.15 '@esbuild/android-arm64': 0.17.15 @@ -7324,13 +11177,8 @@ packages: '@esbuild/win32-arm64': 0.17.15 '@esbuild/win32-ia32': 0.17.15 '@esbuild/win32-x64': 0.17.15 - dev: false - /esbuild@0.17.17: - resolution: {integrity: sha512-/jUywtAymR8jR4qsa2RujlAF7Krpt5VWi72Q2yuLD4e/hvtNcFQ0I1j8m/bxq238pf3/0KO5yuXNpuLx8BE1KA==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true + esbuild@0.17.17: optionalDependencies: '@esbuild/android-arm': 0.17.17 '@esbuild/android-arm64': 0.17.17 @@ -7354,49 +11202,22 @@ packages: '@esbuild/win32-arm64': 0.17.17 '@esbuild/win32-ia32': 0.17.17 '@esbuild/win32-x64': 0.17.17 - dev: true - /escalade@3.1.1: - resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} - engines: {node: '>=6'} - - /escalade@3.1.2: - resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} - engines: {node: '>=6'} - dev: true + escalade@3.1.1: {} - /escape-html@1.0.3: - resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} - dev: false + escape-html@1.0.3: {} - /escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} + escape-string-regexp@1.0.5: {} - /escape-string-regexp@2.0.0: - resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} - engines: {node: '>=8'} - dev: true + escape-string-regexp@2.0.0: {} - /escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - dev: true + escape-string-regexp@4.0.0: {} - /eslint-plugin-react-hooks@4.6.0(eslint@8.57.0): - resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} - engines: {node: '>=10'} - peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + eslint-plugin-react-hooks@4.6.0(eslint@8.57.0): dependencies: eslint: 8.57.0 - dev: true - /eslint-plugin-react@7.31.11(eslint@8.57.0): - resolution: {integrity: sha512-TTvq5JsT5v56wPa9OYHzsrOlHzKZKjV+aLgS+55NJP/cuzdiQPC7PfYoUjMoxlffKtvijpk7vA/jmuqRb9nohw==} - engines: {node: '>=4'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + eslint-plugin-react@7.31.11(eslint@8.57.0): dependencies: array-includes: 3.1.6 array.prototype.flatmap: 1.3.1 @@ -7412,47 +11233,28 @@ packages: object.values: 1.1.6 prop-types: 15.8.1 resolve: 2.0.0-next.4 - semver: 6.3.1 + semver: 6.3.0 string.prototype.matchall: 4.0.8 - dev: true - /eslint-scope@4.0.3: - resolution: {integrity: sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==} - engines: {node: '>=4.0.0'} + eslint-scope@4.0.3: dependencies: esrecurse: 4.3.0 estraverse: 4.3.0 - dev: true - /eslint-scope@7.2.2: - resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + eslint-scope@7.2.2: dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 - dev: true - /eslint-utils@1.4.3: - resolution: {integrity: sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==} - engines: {node: '>=6'} + eslint-utils@1.4.3: dependencies: eslint-visitor-keys: 1.3.0 - dev: true - /eslint-visitor-keys@1.3.0: - resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} - engines: {node: '>=4'} - dev: true + eslint-visitor-keys@1.3.0: {} - /eslint-visitor-keys@3.4.3: - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true + eslint-visitor-keys@3.4.3: {} - /eslint@5.16.0: - resolution: {integrity: sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==} - engines: {node: ^6.14.0 || ^8.10.0 || >=9.10.0} - hasBin: true + eslint@5.16.0: dependencies: '@babel/code-frame': 7.21.4 ajv: 6.12.6 @@ -7492,12 +11294,8 @@ packages: text-table: 0.2.0 transitivePeerDependencies: - supports-color - dev: true - /eslint@8.57.0: - resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - hasBin: true + eslint@8.57.0: dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@eslint-community/regexpp': 4.10.0 @@ -7539,69 +11337,40 @@ packages: text-table: 0.2.0 transitivePeerDependencies: - supports-color - dev: true - /espree@5.0.1: - resolution: {integrity: sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==} - engines: {node: '>=6.0.0'} + espree@5.0.1: dependencies: acorn: 6.4.2 acorn-jsx: 5.3.2(acorn@6.4.2) eslint-visitor-keys: 1.3.0 - dev: true - /espree@9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + espree@9.6.1: dependencies: acorn: 8.11.3 acorn-jsx: 5.3.2(acorn@8.11.3) eslint-visitor-keys: 3.4.3 - dev: true - /esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - dev: true + esprima@4.0.1: {} - /esquery@1.5.0: - resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} - engines: {node: '>=0.10'} + esquery@1.5.0: dependencies: estraverse: 5.3.0 - dev: true - /esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} + esrecurse@4.3.0: dependencies: estraverse: 5.3.0 - dev: true - /estraverse@4.3.0: - resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} - engines: {node: '>=4.0'} - dev: true + estraverse@4.3.0: {} - /estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - dev: true + estraverse@5.3.0: {} - /esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - dev: true + esutils@2.0.3: {} - /ethereum-bloom-filters@1.0.10: - resolution: {integrity: sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA==} + ethereum-bloom-filters@1.0.10: dependencies: js-sha3: 0.8.0 - dev: true - /ethereum-cryptography@0.1.3: - resolution: {integrity: sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==} + ethereum-cryptography@0.1.3: dependencies: '@types/pbkdf2': 3.1.2 '@types/secp256k1': 4.0.6 @@ -7618,35 +11387,27 @@ packages: scrypt-js: 3.0.1 secp256k1: 4.0.3 setimmediate: 1.0.5 - dev: true - /ethereum-cryptography@1.2.0: - resolution: {integrity: sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==} + ethereum-cryptography@1.2.0: dependencies: '@noble/hashes': 1.2.0 '@noble/secp256k1': 1.7.1 '@scure/bip32': 1.1.5 '@scure/bip39': 1.1.1 - dev: true - /ethereum-cryptography@2.1.3: - resolution: {integrity: sha512-BlwbIL7/P45W8FGW2r7LGuvoEZ+7PWsniMvQ4p5s2xCyw9tmaDlpfsN9HjAucbF+t/qpVHwZUisgfK24TCW8aA==} + ethereum-cryptography@2.1.3: dependencies: '@noble/curves': 1.3.0 '@noble/hashes': 1.3.3 '@scure/bip32': 1.3.3 '@scure/bip39': 1.2.2 - dev: true - /ethereumjs-abi@0.6.8: - resolution: {integrity: sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==} + ethereumjs-abi@0.6.8: dependencies: bn.js: 4.12.0 ethereumjs-util: 6.2.1 - dev: true - /ethereumjs-util@6.2.1: - resolution: {integrity: sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==} + ethereumjs-util@6.2.1: dependencies: '@types/bn.js': 4.11.6 bn.js: 4.12.0 @@ -7655,10 +11416,8 @@ packages: ethereum-cryptography: 0.1.3 ethjs-util: 0.1.6 rlp: 2.2.7 - dev: true - /ethers@5.7.2: - resolution: {integrity: sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==} + ethers@5.7.2: dependencies: '@ethersproject/abi': 5.7.0 '@ethersproject/abstract-provider': 5.7.0 @@ -7694,37 +11453,26 @@ packages: - bufferutil - utf-8-validate - /ethjs-unit@0.1.6: - resolution: {integrity: sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==} - engines: {node: '>=6.5.0', npm: '>=3'} + ethjs-unit@0.1.6: dependencies: bn.js: 4.11.6 number-to-bn: 1.7.0 - dev: true - /ethjs-util@0.1.6: - resolution: {integrity: sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==} - engines: {node: '>=6.5.0', npm: '>=3'} + ethjs-util@0.1.6: dependencies: is-hex-prefixed: 1.0.0 strip-hex-prefix: 1.0.0 - dev: true - /event-emitter@0.3.5: - resolution: {integrity: sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==} + event-emitter@0.3.5: dependencies: d: 1.0.1 es5-ext: 0.10.62 - dev: false - /event-target-shim@5.0.1: - resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} - engines: {node: '>=6'} - dev: false + event-target-shim@5.0.1: {} - /eventemitter3@4.0.7: - resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + eventemitter3@4.0.7: {} +<<<<<<< HEAD /eventemitter3@5.0.1: resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} dev: false @@ -7733,17 +11481,16 @@ packages: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} dev: false +======= + events@3.3.0: {} +>>>>>>> 1175edcf0 (feat: update pnpm and node version) - /evp_bytestokey@1.0.3: - resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} + evp_bytestokey@1.0.3: dependencies: md5.js: 1.3.5 safe-buffer: 5.2.1 - dev: true - /execa@3.4.0: - resolution: {integrity: sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g==} - engines: {node: ^8.12.0 || >=9.7.0} + execa@3.4.0: dependencies: cross-spawn: 7.0.3 get-stream: 5.2.0 @@ -7755,11 +11502,8 @@ packages: p-finally: 2.0.1 signal-exit: 3.0.7 strip-final-newline: 2.0.0 - dev: true - /execa@5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} - engines: {node: '>=10'} + execa@5.1.1: dependencies: cross-spawn: 7.0.3 get-stream: 6.0.1 @@ -7771,9 +11515,7 @@ packages: signal-exit: 3.0.7 strip-final-newline: 2.0.0 - /execa@7.2.0: - resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} - engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} + execa@7.2.0: dependencies: cross-spawn: 7.0.3 get-stream: 6.0.1 @@ -7784,84 +11526,52 @@ packages: onetime: 6.0.0 signal-exit: 3.0.7 strip-final-newline: 3.0.0 - dev: true - /execcli@5.0.6: - resolution: {integrity: sha512-du+uy/Ew2P90PKjSHI89u/XuqVaBDzvaJ6ePn40JaOy7owFQNsYDbd5AoR5A559HEAb1i5HO22rJxtgVonf5Bg==} - engines: {node: '>=8', npm: '>=4'} + execcli@5.0.6: dependencies: argx: 4.0.4 arrayreduce: 2.1.0 findout: 3.0.2 hasbin: 1.2.3 stringcase: 4.3.1 - dev: false - /exit@0.1.2: - resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} - engines: {node: '>= 0.8.0'} - dev: true + exit@0.1.2: {} - /expand-template@2.0.3: - resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} - engines: {node: '>=6'} - dev: false + expand-template@2.0.3: {} - /expect@29.5.0: - resolution: {integrity: sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + expect@29.5.0: dependencies: '@jest/expect-utils': 29.5.0 jest-get-type: 29.4.3 jest-matcher-utils: 29.5.0 jest-message-util: 29.5.0 jest-util: 29.5.0 - dev: true - /exponential-backoff@3.1.1: - resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==} - dev: false + exponential-backoff@3.1.1: {} - /ext@1.7.0: - resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} + ext@1.7.0: dependencies: type: 2.7.2 - dev: false - /extend@3.0.2: - resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - dev: false + extend@3.0.2: {} - /extendable-error@0.1.7: - resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} - dev: true + extendable-error@0.1.7: {} - /external-editor@3.1.0: - resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} - engines: {node: '>=4'} + external-editor@3.1.0: dependencies: chardet: 0.7.0 iconv-lite: 0.4.24 tmp: 0.0.33 - /fast-content-type-parse@1.0.0: - resolution: {integrity: sha512-Xbc4XcysUXcsP5aHUU7Nq3OwvHq97C+WnbkeIefpeYLX+ryzFJlU6OStFJhs6Ol0LkUGpcK+wL0JwfM+FCU5IA==} - dev: false + fast-content-type-parse@1.0.0: {} - /fast-decode-uri-component@1.0.1: - resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==} - dev: false + fast-decode-uri-component@1.0.1: {} - /fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + fast-deep-equal@3.1.3: {} - /fast-diff@1.2.0: - resolution: {integrity: sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==} - dev: true + fast-diff@1.2.0: {} - /fast-glob@3.2.12: - resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} - engines: {node: '>=8.6.0'} + fast-glob@3.2.12: dependencies: '@nodelib/fs.stat': 2.0.5 '@nodelib/fs.walk': 1.2.8 @@ -7869,12 +11579,9 @@ packages: merge2: 1.4.1 micromatch: 4.0.5 - /fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - dev: true + fast-json-stable-stringify@2.1.0: {} - /fast-json-stringify@5.8.0: - resolution: {integrity: sha512-VVwK8CFMSALIvt14U8AvrSzQAwN/0vaVRiFFUVlpnXSnDGrSkOAO5MtzyN8oQNjLd5AqTW5OZRgyjoNuAuR3jQ==} + fast-json-stringify@5.8.0: dependencies: '@fastify/deepmerge': 1.3.0 ajv: 8.12.0 @@ -7882,27 +11589,18 @@ packages: fast-deep-equal: 3.1.3 fast-uri: 2.2.0 rfdc: 1.3.0 - dev: false - /fast-levenshtein@2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - dev: true + fast-levenshtein@2.0.6: {} - /fast-querystring@1.1.2: - resolution: {integrity: sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==} + fast-querystring@1.1.2: dependencies: fast-decode-uri-component: 1.0.1 - dev: false - /fast-redact@3.3.0: - resolution: {integrity: sha512-6T5V1QK1u4oF+ATxs1lWUmlEk6P2T9HqJG3e2DnHOdVgZy2rFJBoEnrIedcTXlkAHU/zKC+7KETJ+KGGKwxgMQ==} - engines: {node: '>=6'} - dev: false + fast-redact@3.3.0: {} - /fast-uri@2.2.0: - resolution: {integrity: sha512-cIusKBIt/R/oI6z/1nyfe2FvGKVTohVRfvkOhvx0nCEW+xf5NoCXjAHcWp93uOUBchzYcsvPlrapAdX1uW+YGg==} - dev: false + fast-uri@2.2.0: {} +<<<<<<< HEAD /fast-xml-parser@4.2.5: resolution: {integrity: sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==} hasBin: true @@ -7913,9 +11611,11 @@ packages: /fastify-plugin@4.5.1: resolution: {integrity: sha512-stRHYGeuqpEZTL1Ef0Ovr2ltazUT9g844X5z/zEBFLG8RYlpDiOCIG+ATvYEp+/zmc7sN29mcIMp8gvYplYPIQ==} dev: false +======= + fastify-plugin@4.5.1: {} +>>>>>>> 1175edcf0 (feat: update pnpm and node version) - /fastify@4.21.0: - resolution: {integrity: sha512-tsu4bcwE4HetxqW8prA5fbC9bKHMYDp7jGEDWyzK1l90a3uOaLoIcQbdGcWeODNLVJviQnzh1wvIjTZE3MJFEg==} + fastify@4.21.0: dependencies: '@fastify/ajv-compiler': 3.5.0 '@fastify/error': 3.3.0 @@ -7935,270 +11635,164 @@ packages: tiny-lru: 11.0.1 transitivePeerDependencies: - supports-color - dev: false - /fastq@1.15.0: - resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} + fastq@1.15.0: dependencies: reusify: 1.0.4 - /fb-watchman@2.0.2: - resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + fb-watchman@2.0.2: dependencies: bser: 2.1.1 - dev: true - /figures@1.7.0: - resolution: {integrity: sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ==} - engines: {node: '>=0.10.0'} + figures@1.7.0: dependencies: escape-string-regexp: 1.0.5 object-assign: 4.1.1 - dev: true - /figures@2.0.0: - resolution: {integrity: sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==} - engines: {node: '>=4'} + figures@2.0.0: dependencies: escape-string-regexp: 1.0.5 - dev: true - /figures@3.2.0: - resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} - engines: {node: '>=8'} + figures@3.2.0: dependencies: escape-string-regexp: 1.0.5 - dev: false - /file-entry-cache@5.0.1: - resolution: {integrity: sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==} - engines: {node: '>=4'} + file-entry-cache@5.0.1: dependencies: flat-cache: 2.0.1 - dev: true - /file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} + file-entry-cache@6.0.1: dependencies: flat-cache: 3.0.4 - dev: true - /file-uri-to-path@1.0.0: - resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} - dev: false + file-uri-to-path@1.0.0: {} - /filelist@1.0.4: - resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} + filelist@1.0.4: dependencies: minimatch: 5.1.6 - /fill-range@7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} - engines: {node: '>=8'} + fill-range@7.0.1: dependencies: to-regex-range: 5.0.1 - /find-my-way@7.6.2: - resolution: {integrity: sha512-0OjHn1b1nCX3eVbm9ByeEHiscPYiHLfhei1wOUU9qffQkk98wE0Lo8VrVYfSGMgnSnDh86DxedduAnBf4nwUEw==} - engines: {node: '>=14'} + find-my-way@7.6.2: dependencies: fast-deep-equal: 3.1.3 fast-querystring: 1.1.2 safe-regex2: 2.0.0 - dev: false - /find-up@2.1.0: - resolution: {integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==} - engines: {node: '>=4'} + find-up@2.1.0: dependencies: locate-path: 2.0.0 - dev: true - /find-up@3.0.0: - resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} - engines: {node: '>=6'} + find-up@3.0.0: dependencies: locate-path: 3.0.0 - dev: false - /find-up@4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} + find-up@4.1.0: dependencies: locate-path: 5.0.0 path-exists: 4.0.0 - dev: true - /find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} + find-up@5.0.0: dependencies: locate-path: 6.0.0 path-exists: 4.0.0 - /find-yarn-workspace-root2@1.2.16: - resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} + find-yarn-workspace-root2@1.2.16: dependencies: micromatch: 4.0.5 pkg-dir: 4.2.0 - dev: true - /findout@3.0.2: - resolution: {integrity: sha512-eatRX+s8jm8ml/S9Y5NBBjR4W8i7IeEmyddB3Lidak/nPZNfDxGzLEIaMKgeNj5/LHA1i0dC4Gwsb13H1bx+AA==} - engines: {node: '>=7.6', npm: '>=4'} - dev: false + findout@3.0.2: {} - /flat-cache@2.0.1: - resolution: {integrity: sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==} - engines: {node: '>=4'} + flat-cache@2.0.1: dependencies: flatted: 2.0.2 rimraf: 2.6.3 write: 1.0.3 - dev: true - /flat-cache@3.0.4: - resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} - engines: {node: ^10.12.0 || >=12.0.0} + flat-cache@3.0.4: dependencies: flatted: 3.2.7 rimraf: 3.0.2 - dev: true - /flat@5.0.2: - resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} - hasBin: true - dev: true + flat@5.0.2: {} - /flatted@2.0.2: - resolution: {integrity: sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==} - dev: true + flatted@2.0.2: {} - /flatted@3.2.7: - resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} - dev: true + flatted@3.2.7: {} - /follow-redirects@1.15.2(debug@4.3.4): - resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - dependencies: + follow-redirects@1.15.2(debug@4.3.4): + optionalDependencies: debug: 4.3.4(supports-color@8.1.1) - dev: true - /form-data@4.0.0: - resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} - engines: {node: '>= 6'} + forge-std@https://codeload.github.com/foundry-rs/forge-std/tar.gz/74cfb77e308dd188d2f58864aaf44963ae6b88b1: {} + + form-data@4.0.0: dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 mime-types: 2.1.35 - dev: true - /forwarded@0.2.0: - resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} - engines: {node: '>= 0.6'} - dev: false + forwarded@0.2.0: {} - /fp-ts@1.19.3: - resolution: {integrity: sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==} - dev: true + fp-ts@1.19.3: {} - /fraction.js@4.2.0: - resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==} - dev: true + fraction.js@4.2.0: {} - /fresh@0.5.2: - resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} - engines: {node: '>= 0.6'} - dev: false + fresh@0.5.2: {} - /from2@2.3.0: - resolution: {integrity: sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==} + from2@2.3.0: dependencies: inherits: 2.0.4 readable-stream: 2.3.8 - dev: false - /fs-constants@1.0.0: - resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} - dev: false + fs-constants@1.0.0: {} - /fs-extra@0.30.0: - resolution: {integrity: sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA==} + fs-extra@0.30.0: dependencies: graceful-fs: 4.2.11 jsonfile: 2.4.0 klaw: 1.3.1 path-is-absolute: 1.0.1 rimraf: 2.6.3 - dev: true - /fs-extra@7.0.1: - resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} - engines: {node: '>=6 <7 || >=8'} + fs-extra@7.0.1: dependencies: graceful-fs: 4.2.11 jsonfile: 4.0.0 universalify: 0.1.2 - dev: true - /fs-extra@8.1.0: - resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} - engines: {node: '>=6 <7 || >=8'} + fs-extra@8.1.0: dependencies: graceful-fs: 4.2.11 jsonfile: 4.0.0 universalify: 0.1.2 - dev: true - /fs-minipass@2.1.0: - resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} - engines: {node: '>= 8'} + fs-minipass@2.1.0: dependencies: minipass: 3.3.6 - dev: false - /fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + fs.realpath@1.0.0: {} - /fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - requiresBuild: true + fsevents@2.3.3: optional: true - /function-bind@1.1.1: - resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} - dev: true + function-bind@1.1.1: {} - /function.prototype.name@1.1.5: - resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} - engines: {node: '>= 0.4'} + function.prototype.name@1.1.5: dependencies: call-bind: 1.0.2 define-properties: 1.1.4 es-abstract: 1.20.5 functions-have-names: 1.2.3 - dev: true - /functional-red-black-tree@1.0.1: - resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==} - dev: true + functional-red-black-tree@1.0.1: {} - /functions-have-names@1.2.3: - resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - dev: true + functions-have-names@1.2.3: {} - /gauge@4.0.4: - resolution: {integrity: sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + gauge@4.0.4: dependencies: aproba: 2.0.0 color-support: 1.1.3 @@ -8208,69 +11802,39 @@ packages: string-width: 4.2.3 strip-ansi: 6.0.1 wide-align: 1.1.5 - dev: false - /gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} - dev: true + gensync@1.0.0-beta.2: {} - /get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} + get-caller-file@2.0.5: {} - /get-func-name@2.0.2: - resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} - dev: true + get-func-name@2.0.2: {} - /get-intrinsic@1.1.3: - resolution: {integrity: sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==} + get-intrinsic@1.1.3: dependencies: function-bind: 1.1.1 has: 1.0.3 has-symbols: 1.0.3 - dev: true - /get-own-enumerable-property-symbols@3.0.2: - resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==} - dev: true + get-own-enumerable-property-symbols@3.0.2: {} - /get-package-type@0.1.0: - resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} - engines: {node: '>=8.0.0'} - dev: true + get-package-type@0.1.0: {} - /get-port@6.1.2: - resolution: {integrity: sha512-BrGGraKm2uPqurfGVj/z97/zv8dPleC6x9JBNRTrDNtCkkRF4rPwrQXFgL7+I+q8QSdU4ntLQX2D7KIxSy8nGw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: true + get-port@6.1.2: {} - /get-stream@5.2.0: - resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} - engines: {node: '>=8'} + get-stream@5.2.0: dependencies: pump: 3.0.0 - dev: true - /get-stream@6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} + get-stream@6.0.1: {} - /get-symbol-description@1.0.0: - resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} - engines: {node: '>= 0.4'} + get-symbol-description@1.0.0: dependencies: call-bind: 1.0.2 get-intrinsic: 1.1.3 - dev: true - /get-tsconfig@4.5.0: - resolution: {integrity: sha512-MjhiaIWCJ1sAU4pIQ5i5OfOuHHxVo1oYeNsWTON7jxYkod8pHocXeh+SSbmu5OZZZK73B6cbJ2XADzXehLyovQ==} - dev: true + get-tsconfig@4.5.0: {} - /gitconfig@2.0.8: - resolution: {integrity: sha512-qOB1QswIHFNKAOPN0pEu7U1iyajLBv3Tz5X630UlkAtKM904I4dO7XIjH84wmR2SUVAgaVR99UC9U4ABJujAJQ==} - engines: {node: '>=6', npm: '>=3'} + gitconfig@2.0.8: dependencies: argx: 3.0.2 arrayreduce: 2.1.0 @@ -8279,27 +11843,18 @@ packages: execcli: 5.0.6 lodash.get: 4.4.2 objnest: 5.1.1 - dev: false - /github-from-package@0.0.0: - resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} - dev: false + github-from-package@0.0.0: {} - /glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} + glob-parent@5.1.2: dependencies: is-glob: 4.0.3 - /glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} + glob-parent@6.0.2: dependencies: is-glob: 4.0.3 - dev: true - /glob@7.1.6: - resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} + glob@7.1.6: dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -8307,10 +11862,8 @@ packages: minimatch: 3.1.2 once: 1.4.0 path-is-absolute: 1.0.1 - dev: true - /glob@7.2.0: - resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==} + glob@7.2.0: dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -8318,10 +11871,8 @@ packages: minimatch: 3.1.2 once: 1.4.0 path-is-absolute: 1.0.1 - dev: true - /glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + glob@7.2.3: dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -8330,9 +11881,7 @@ packages: once: 1.4.0 path-is-absolute: 1.0.1 - /glob@8.0.3: - resolution: {integrity: sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==} - engines: {node: '>=12'} + glob@8.0.3: dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -8340,32 +11889,21 @@ packages: minimatch: 5.1.6 once: 1.4.0 - /glob@8.1.0: - resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} - engines: {node: '>=12'} + glob@8.1.0: dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 inherits: 2.0.4 minimatch: 5.1.6 once: 1.4.0 - dev: true - /globals@11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} - dev: true + globals@11.12.0: {} - /globals@13.20.0: - resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} - engines: {node: '>=8'} + globals@13.20.0: dependencies: type-fest: 0.20.2 - dev: true - /globby@11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} + globby@11.1.0: dependencies: array-union: 2.1.0 dir-glob: 3.0.1 @@ -8374,32 +11912,19 @@ packages: merge2: 1.4.1 slash: 3.0.0 - /google-protobuf@3.21.2: - resolution: {integrity: sha512-3MSOYFO5U9mPGikIYCzK0SaThypfGgS6bHqrUGXG3DPHCrb+txNqeEcns1W0lkGfk0rCyNXm7xB9rMxnCiZOoA==} - dev: false + google-protobuf@3.21.2: {} - /gopd@1.0.1: - resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + gopd@1.0.1: dependencies: get-intrinsic: 1.1.3 - dev: true - /graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - requiresBuild: true + graceful-fs@4.2.11: {} - /grapheme-splitter@1.0.4: - resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} - dev: true + grapheme-splitter@1.0.4: {} - /graphemer@1.4.0: - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - dev: true + graphemer@1.4.0: {} - /handlebars@4.7.7: - resolution: {integrity: sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==} - engines: {node: '>=0.4.7'} - hasBin: true + handlebars@4.7.7: dependencies: minimist: 1.2.8 neo-async: 2.6.2 @@ -8407,24 +11932,10 @@ packages: wordwrap: 1.0.0 optionalDependencies: uglify-js: 3.17.4 - dev: false - /hard-rejection@2.1.0: - resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} - engines: {node: '>=6'} - dev: true + hard-rejection@2.1.0: {} - /hardhat@2.22.0(typescript@5.4.2): - resolution: {integrity: sha512-t1J+ThxNYANL6ub6yM5XC84RY38vhfG7ODBtVRNQFQozdALo3qZUjxDzyGQU0U0eswe6orK49hq9UpdB7nPXNQ==} - hasBin: true - peerDependencies: - ts-node: '*' - typescript: '*' - peerDependenciesMeta: - ts-node: - optional: true - typescript: - optional: true + hardhat@2.22.0(typescript@5.4.2): dependencies: '@ethersproject/abi': 5.7.0 '@metamask/eth-sig-util': 4.0.1 @@ -8466,139 +11977,90 @@ packages: source-map-support: 0.5.21 stacktrace-parser: 0.1.10 tsort: 0.0.1 - typescript: 5.4.2 undici: 5.28.3 uuid: 8.3.2 ws: 7.4.6 + optionalDependencies: + typescript: 5.4.2 transitivePeerDependencies: - bufferutil - c-kzg - supports-color - utf-8-validate - dev: true - /has-ansi@2.0.0: - resolution: {integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==} - engines: {node: '>=0.10.0'} + has-ansi@2.0.0: dependencies: ansi-regex: 2.1.1 - dev: true - /has-bigints@1.0.2: - resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} - dev: true + has-bigints@1.0.2: {} - /has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} - dev: true + has-flag@3.0.0: {} - /has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} + has-flag@4.0.0: {} - /has-property-descriptors@1.0.0: - resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} + has-property-descriptors@1.0.0: dependencies: get-intrinsic: 1.1.3 - dev: true - /has-symbols@1.0.3: - resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} - engines: {node: '>= 0.4'} + has-symbols@1.0.3: {} - /has-tostringtag@1.0.0: - resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} - engines: {node: '>= 0.4'} + has-tostringtag@1.0.0: dependencies: has-symbols: 1.0.3 - /has-unicode@2.0.1: - resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} - dev: false + has-unicode@2.0.1: {} - /has@1.0.3: - resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} - engines: {node: '>= 0.4.0'} + has@1.0.3: dependencies: function-bind: 1.1.1 - dev: true - /hasbin@1.2.3: - resolution: {integrity: sha512-CCd8e/w2w28G8DyZvKgiHnQJ/5XXDz6qiUHnthvtag/6T5acUeN5lqq+HMoBqcmgWueWDhiCplrw0Kb1zDACRg==} - engines: {node: '>=0.10'} + hasbin@1.2.3: dependencies: async: 1.5.2 - dev: false - /hash-base@3.1.0: - resolution: {integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==} - engines: {node: '>=4'} + hash-base@3.1.0: dependencies: inherits: 2.0.4 readable-stream: 3.6.0 safe-buffer: 5.2.1 - dev: true - /hash.js@1.1.7: - resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} + hash.js@1.1.7: dependencies: inherits: 2.0.4 minimalistic-assert: 1.0.1 - /he@1.2.0: - resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} - hasBin: true - dev: true + he@1.2.0: {} - /hmac-drbg@1.0.1: - resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} + hmac-drbg@1.0.1: dependencies: hash.js: 1.1.7 minimalistic-assert: 1.0.1 minimalistic-crypto-utils: 1.0.1 - /hosted-git-info@2.8.9: - resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} - dev: true + hosted-git-info@2.8.9: {} - /html-encoding-sniffer@3.0.0: - resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} - engines: {node: '>=12'} + html-encoding-sniffer@3.0.0: dependencies: whatwg-encoding: 2.0.0 - dev: true - /html-escaper@2.0.2: - resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - dev: true + html-escaper@2.0.2: {} - /http-assert@1.5.0: - resolution: {integrity: sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==} - engines: {node: '>= 0.8'} + http-assert@1.5.0: dependencies: deep-equal: 1.0.1 http-errors: 1.8.1 - dev: false - /http-cache-semantics@4.1.1: - resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} - dev: false + http-cache-semantics@4.1.1: {} - /http-errors@1.8.1: - resolution: {integrity: sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==} - engines: {node: '>= 0.6'} + http-errors@1.8.1: dependencies: depd: 1.1.2 inherits: 2.0.4 setprototypeof: 1.2.0 statuses: 1.5.0 toidentifier: 1.0.1 - dev: false - /http-errors@2.0.0: - resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} - engines: {node: '>= 0.8'} + http-errors@2.0.0: dependencies: depd: 2.0.0 inherits: 2.0.4 @@ -8606,9 +12068,7 @@ packages: statuses: 2.0.1 toidentifier: 1.0.1 - /http-proxy-agent@5.0.0: - resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} - engines: {node: '>= 6'} + http-proxy-agent@5.0.0: dependencies: '@tootallnate/once': 2.0.0 agent-base: 6.0.2 @@ -8616,158 +12076,92 @@ packages: transitivePeerDependencies: - supports-color - /http-proxy@1.18.1(debug@4.3.4): - resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} - engines: {node: '>=8.0.0'} + http-proxy@1.18.1(debug@4.3.4): dependencies: eventemitter3: 4.0.7 follow-redirects: 1.15.2(debug@4.3.4) requires-port: 1.0.0 transitivePeerDependencies: - debug - dev: true - /https-proxy-agent@5.0.1: - resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} - engines: {node: '>= 6'} + https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 debug: 4.3.4(supports-color@8.1.1) transitivePeerDependencies: - supports-color - /human-id@1.0.2: - resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} - dev: true + human-id@1.0.2: {} - /human-signals@1.1.1: - resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==} - engines: {node: '>=8.12.0'} - dev: true + human-signals@1.1.1: {} - /human-signals@2.1.0: - resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} - engines: {node: '>=10.17.0'} + human-signals@2.1.0: {} - /human-signals@4.3.1: - resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} - engines: {node: '>=14.18.0'} - dev: true + human-signals@4.3.1: {} - /humanize-ms@1.2.1: - resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} + humanize-ms@1.2.1: dependencies: ms: 2.1.3 - dev: false - /husky@6.0.0: - resolution: {integrity: sha512-SQS2gDTB7tBN486QSoKPKQItZw97BMOd+Kdb6ghfpBc0yXyzrddI0oDV5MkDAbuB4X2mO3/nj60TRMcYxwzZeQ==} - hasBin: true - dev: true + husky@6.0.0: {} - /iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} + iconv-lite@0.4.24: dependencies: safer-buffer: 2.1.2 - /iconv-lite@0.6.3: - resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} - engines: {node: '>=0.10.0'} + iconv-lite@0.6.3: dependencies: safer-buffer: 2.1.2 - /ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - dev: false + ieee754@1.2.1: {} - /iftype@3.0.2: - resolution: {integrity: sha512-vA/NSyCG3E7XXWC1hmbEDj8WvsduSzLblmj4m2Idywx8YC6CKqGTYzrnoxbMrC+qBcHz85P7uwBwYEY2rX1jvQ==} - engines: {node: '>=4', npm: '>=2'} + iftype@3.0.2: dependencies: babel-runtime: 6.26.0 - dev: false - /iftype@4.0.9: - resolution: {integrity: sha512-01Klo+04dkDzY193D1GVfOdQzmpqaYFJTAlZKRztkT/BOaU7sSnvxGimSln+7DMqLUP4tpDTNFgxqVPLYZVypA==} - engines: {node: '>=8', npm: '>=5'} - dev: false + iftype@4.0.9: {} - /ignore@4.0.6: - resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} - engines: {node: '>= 4'} - dev: true + ignore@4.0.6: {} - /ignore@5.2.4: - resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} - engines: {node: '>= 4'} + ignore@5.2.4: {} - /immutable@4.3.5: - resolution: {integrity: sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==} - dev: true + immutable@4.3.5: {} - /import-fresh@2.0.0: - resolution: {integrity: sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==} - engines: {node: '>=4'} + import-fresh@2.0.0: dependencies: caller-path: 2.0.0 resolve-from: 3.0.0 - dev: true - /import-fresh@3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} - engines: {node: '>=6'} + import-fresh@3.3.0: dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 - dev: true - /import-local@3.1.0: - resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} - engines: {node: '>=8'} - hasBin: true + import-local@3.1.0: dependencies: pkg-dir: 4.2.0 resolve-cwd: 3.0.0 - dev: true - /imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} + imurmurhash@0.1.4: {} - /indent-string@3.2.0: - resolution: {integrity: sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ==} - engines: {node: '>=4'} - dev: true + indent-string@3.2.0: {} - /indent-string@4.0.0: - resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} - engines: {node: '>=8'} + indent-string@4.0.0: {} - /infer-owner@1.0.4: - resolution: {integrity: sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==} - dev: false + infer-owner@1.0.4: {} - /inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + inflight@1.0.6: dependencies: once: 1.4.0 wrappy: 1.0.2 - /inherits@2.0.3: - resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} - dev: false + inherits@2.0.3: {} - /inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + inherits@2.0.4: {} - /ini@1.3.8: - resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - dev: false + ini@1.3.8: {} - /inquirer@6.5.2: - resolution: {integrity: sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==} - engines: {node: '>=6.0.0'} + inquirer@6.5.2: dependencies: ansi-escapes: 3.2.0 chalk: 2.4.2 @@ -8782,11 +12176,8 @@ packages: string-width: 2.1.1 strip-ansi: 5.2.0 through: 2.3.8 - dev: true - /inquirer@7.3.3: - resolution: {integrity: sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==} - engines: {node: '>=8.0.0'} + inquirer@7.3.3: dependencies: ansi-escapes: 4.3.2 chalk: 4.1.2 @@ -8801,351 +12192,198 @@ packages: string-width: 4.2.3 strip-ansi: 6.0.1 through: 2.3.8 - dev: false - /internal-slot@1.0.3: - resolution: {integrity: sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==} - engines: {node: '>= 0.4'} + internal-slot@1.0.3: dependencies: get-intrinsic: 1.1.3 has: 1.0.3 side-channel: 1.0.4 - dev: true - /into-stream@6.0.0: - resolution: {integrity: sha512-XHbaOAvP+uFKUFsOgoNPRjLkwB+I22JFPFe5OjTkQ0nwgj6+pSjb4NmB6VMxaPshLiOf+zcpOCBQuLwC1KHhZA==} - engines: {node: '>=10'} + into-stream@6.0.0: dependencies: from2: 2.3.0 p-is-promise: 3.0.0 - dev: false - /io-ts@1.10.4: - resolution: {integrity: sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g==} + io-ts@1.10.4: dependencies: fp-ts: 1.19.3 - dev: true - /ip@2.0.0: - resolution: {integrity: sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==} - dev: false + ip@2.0.0: {} - /ipaddr.js@1.9.1: - resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} - engines: {node: '>= 0.10'} - dev: false + ipaddr.js@1.9.1: {} - /is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - dev: true + is-arrayish@0.2.1: {} - /is-bigint@1.0.4: - resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + is-bigint@1.0.4: dependencies: has-bigints: 1.0.2 - dev: true - /is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} + is-binary-path@2.1.0: dependencies: binary-extensions: 2.2.0 - /is-boolean-object@1.1.2: - resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} - engines: {node: '>= 0.4'} + is-boolean-object@1.1.2: dependencies: call-bind: 1.0.2 has-tostringtag: 1.0.0 - dev: true - /is-callable@1.2.7: - resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} - engines: {node: '>= 0.4'} - dev: true + is-callable@1.2.7: {} - /is-ci@3.0.1: - resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} - hasBin: true + is-ci@3.0.1: dependencies: ci-info: 3.8.0 - dev: true - /is-core-module@2.12.0: - resolution: {integrity: sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==} + is-core-module@2.12.0: dependencies: has: 1.0.3 - dev: true - /is-date-object@1.0.5: - resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} - engines: {node: '>= 0.4'} + is-date-object@1.0.5: dependencies: has-tostringtag: 1.0.0 - dev: true - /is-directory@0.3.1: - resolution: {integrity: sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==} - engines: {node: '>=0.10.0'} - dev: true + is-directory@0.3.1: {} - /is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} + is-extglob@2.1.1: {} - /is-fullwidth-code-point@1.0.0: - resolution: {integrity: sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==} - engines: {node: '>=0.10.0'} + is-fullwidth-code-point@1.0.0: dependencies: number-is-nan: 1.0.1 - dev: true - /is-fullwidth-code-point@2.0.0: - resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} - engines: {node: '>=4'} + is-fullwidth-code-point@2.0.0: {} - /is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} + is-fullwidth-code-point@3.0.0: {} - /is-generator-fn@2.1.0: - resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} - engines: {node: '>=6'} - dev: true + is-generator-fn@2.1.0: {} - /is-generator-function@1.0.10: - resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} - engines: {node: '>= 0.4'} + is-generator-function@1.0.10: dependencies: has-tostringtag: 1.0.0 - dev: false - /is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} + is-glob@4.0.3: dependencies: is-extglob: 2.1.1 - /is-hex-prefixed@1.0.0: - resolution: {integrity: sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==} - engines: {node: '>=6.5.0', npm: '>=3'} - dev: true + is-hex-prefixed@1.0.0: {} - /is-lambda@1.0.1: - resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} - dev: false + is-lambda@1.0.1: {} - /is-negative-zero@2.0.2: - resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} - engines: {node: '>= 0.4'} - dev: true + is-negative-zero@2.0.2: {} - /is-number-object@1.0.7: - resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} - engines: {node: '>= 0.4'} + is-number-object@1.0.7: dependencies: has-tostringtag: 1.0.0 - dev: true - /is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} + is-number@7.0.0: {} - /is-obj@1.0.1: - resolution: {integrity: sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==} - engines: {node: '>=0.10.0'} - dev: true + is-obj@1.0.1: {} - /is-observable@1.1.0: - resolution: {integrity: sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==} - engines: {node: '>=4'} + is-observable@1.1.0: dependencies: symbol-observable: 1.2.0 - dev: true - /is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - dev: true + is-path-inside@3.0.3: {} - /is-plain-obj@1.1.0: - resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} - engines: {node: '>=0.10.0'} - dev: true + is-plain-obj@1.1.0: {} - /is-plain-obj@2.1.0: - resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} - engines: {node: '>=8'} - dev: true + is-plain-obj@2.1.0: {} - /is-potential-custom-element-name@1.0.1: - resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} - dev: true + is-potential-custom-element-name@1.0.1: {} - /is-promise@2.2.2: - resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} + is-promise@2.2.2: {} - /is-regex@1.1.4: - resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} - engines: {node: '>= 0.4'} + is-regex@1.1.4: dependencies: call-bind: 1.0.2 has-tostringtag: 1.0.0 - dev: true - /is-regexp@1.0.0: - resolution: {integrity: sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==} - engines: {node: '>=0.10.0'} - dev: true + is-regexp@1.0.0: {} - /is-shared-array-buffer@1.0.2: - resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} + is-shared-array-buffer@1.0.2: dependencies: call-bind: 1.0.2 - dev: true - /is-stream@1.1.0: - resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} - engines: {node: '>=0.10.0'} - dev: true + is-stream@1.1.0: {} - /is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} + is-stream@2.0.1: {} - /is-stream@3.0.0: - resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: true + is-stream@3.0.0: {} - /is-string@1.0.7: - resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} - engines: {node: '>= 0.4'} + is-string@1.0.7: dependencies: has-tostringtag: 1.0.0 - dev: true - /is-subdir@1.2.0: - resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} - engines: {node: '>=4'} + is-subdir@1.2.0: dependencies: better-path-resolve: 1.0.0 - dev: true - /is-symbol@1.0.4: - resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} - engines: {node: '>= 0.4'} + is-symbol@1.0.4: dependencies: has-symbols: 1.0.3 - dev: true - /is-unicode-supported@0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} - engines: {node: '>=10'} - dev: true + is-unicode-supported@0.1.0: {} - /is-utf8@0.2.1: - resolution: {integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==} - dev: false + is-utf8@0.2.1: {} - /is-weakref@1.0.2: - resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + is-weakref@1.0.2: dependencies: call-bind: 1.0.2 - dev: true - /is-what@4.1.15: - resolution: {integrity: sha512-uKua1wfy3Yt+YqsD6mTUEa2zSi3G1oPlqTflgaPJ7z63vUGN5pxFpnQfeSLMFnJDEsdvOtkp1rUWkYjB4YfhgA==} - engines: {node: '>=12.13'} - dev: false + is-what@4.1.15: {} - /is-windows@1.0.2: - resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} - engines: {node: '>=0.10.0'} - dev: true + is-windows@1.0.2: {} - /isarray@1.0.0: - resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - dev: false + isarray@1.0.0: {} - /isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + isexe@2.0.0: {} - /isows@1.0.3(ws@8.13.0): - resolution: {integrity: sha512-2cKei4vlmg2cxEjm3wVSqn8pcoRF/LX/wpifuuNquFO4SQmPwarClT+SUCA2lt+l581tTeZIPIZuIDo2jWN1fg==} - peerDependencies: - ws: '*' + isows@1.0.3(ws@8.13.0): dependencies: ws: 8.13.0 - dev: false - /istanbul-lib-coverage@3.2.0: - resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} - engines: {node: '>=8'} - dev: true + istanbul-lib-coverage@3.2.0: {} - /istanbul-lib-instrument@5.2.1: - resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} - engines: {node: '>=8'} + istanbul-lib-instrument@5.2.1: dependencies: '@babel/core': 7.21.4 '@babel/parser': 7.21.4 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 - semver: 6.3.1 + semver: 6.3.0 transitivePeerDependencies: - supports-color - dev: true - /istanbul-lib-report@3.0.0: - resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} - engines: {node: '>=8'} + istanbul-lib-report@3.0.0: dependencies: istanbul-lib-coverage: 3.2.0 make-dir: 3.1.0 supports-color: 7.2.0 - dev: true - /istanbul-lib-source-maps@4.0.1: - resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} - engines: {node: '>=10'} + istanbul-lib-source-maps@4.0.1: dependencies: debug: 4.3.4(supports-color@8.1.1) istanbul-lib-coverage: 3.2.0 source-map: 0.6.1 transitivePeerDependencies: - supports-color - dev: true - /istanbul-reports@3.1.5: - resolution: {integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==} - engines: {node: '>=8'} + istanbul-reports@3.1.5: dependencies: html-escaper: 2.0.2 istanbul-lib-report: 3.0.0 - dev: true - /jake@10.8.5: - resolution: {integrity: sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==} - engines: {node: '>=10'} - hasBin: true + jake@10.8.5: dependencies: async: 3.2.4 chalk: 4.1.2 filelist: 1.0.4 minimatch: 3.1.2 - /jest-changed-files@29.5.0: - resolution: {integrity: sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-changed-files@29.5.0: dependencies: execa: 5.1.1 p-limit: 3.1.0 - dev: true - /jest-circus@29.5.0: - resolution: {integrity: sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-circus@29.5.0: dependencies: '@jest/environment': 29.5.0 '@jest/expect': 29.5.0 @@ -9169,17 +12407,8 @@ packages: stack-utils: 2.0.6 transitivePeerDependencies: - supports-color - dev: true - /jest-cli@29.5.0(@types/node@18.15.11): - resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true + jest-cli@29.5.0(@types/node@18.15.11): dependencies: '@jest/core': 29.5.0 '@jest/test-result': 29.5.0 @@ -9197,24 +12426,12 @@ packages: - '@types/node' - supports-color - ts-node - dev: true - /jest-config@29.5.0(@types/node@18.15.11): - resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@types/node': '*' - ts-node: '>=9.0.0' - peerDependenciesMeta: - '@types/node': - optional: true - ts-node: - optional: true + jest-config@29.5.0(@types/node@18.15.11): dependencies: '@babel/core': 7.21.4 '@jest/test-sequencer': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.11 babel-jest: 29.5.0(@babel/core@7.21.4) chalk: 4.1.2 ci-info: 3.8.0 @@ -9234,51 +12451,38 @@ packages: pretty-format: 29.5.0 slash: 3.0.0 strip-json-comments: 3.1.1 + optionalDependencies: + '@types/node': 18.15.11 transitivePeerDependencies: - supports-color - dev: true - /jest-diff@27.5.1: - resolution: {integrity: sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + jest-diff@27.5.1: dependencies: chalk: 4.1.2 diff-sequences: 27.5.1 jest-get-type: 27.5.1 pretty-format: 27.5.1 - dev: true - /jest-diff@29.5.0: - resolution: {integrity: sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-diff@29.5.0: dependencies: chalk: 4.1.2 diff-sequences: 29.6.3 jest-get-type: 29.4.3 pretty-format: 29.5.0 - dev: true - /jest-docblock@29.4.3: - resolution: {integrity: sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-docblock@29.4.3: dependencies: detect-newline: 3.1.0 - dev: true - /jest-each@29.5.0: - resolution: {integrity: sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-each@29.5.0: dependencies: '@jest/types': 29.5.0 chalk: 4.1.2 jest-get-type: 29.4.3 jest-util: 29.5.0 pretty-format: 29.5.0 - dev: true - /jest-environment-node@29.5.0: - resolution: {integrity: sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-environment-node@29.5.0: dependencies: '@jest/environment': 29.5.0 '@jest/fake-timers': 29.5.0 @@ -9286,21 +12490,12 @@ packages: '@types/node': 18.15.11 jest-mock: 29.5.0 jest-util: 29.5.0 - dev: true - /jest-get-type@27.5.1: - resolution: {integrity: sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dev: true + jest-get-type@27.5.1: {} - /jest-get-type@29.4.3: - resolution: {integrity: sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dev: true + jest-get-type@29.4.3: {} - /jest-haste-map@29.5.0: - resolution: {integrity: sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-haste-map@29.5.0: dependencies: '@jest/types': 29.5.0 '@types/graceful-fs': 4.1.6 @@ -9315,39 +12510,27 @@ packages: walker: 1.0.8 optionalDependencies: fsevents: 2.3.3 - dev: true - /jest-leak-detector@29.5.0: - resolution: {integrity: sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-leak-detector@29.5.0: dependencies: jest-get-type: 29.4.3 pretty-format: 29.5.0 - dev: true - /jest-matcher-utils@27.5.1: - resolution: {integrity: sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + jest-matcher-utils@27.5.1: dependencies: chalk: 4.1.2 jest-diff: 27.5.1 jest-get-type: 27.5.1 pretty-format: 27.5.1 - dev: true - /jest-matcher-utils@29.5.0: - resolution: {integrity: sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-matcher-utils@29.5.0: dependencies: chalk: 4.1.2 jest-diff: 29.5.0 jest-get-type: 29.4.3 pretty-format: 29.5.0 - dev: true - /jest-message-util@29.5.0: - resolution: {integrity: sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-message-util@29.5.0: dependencies: '@babel/code-frame': 7.21.4 '@jest/types': 29.5.0 @@ -9356,49 +12539,29 @@ packages: graceful-fs: 4.2.11 micromatch: 4.0.5 pretty-format: 29.5.0 - slash: 3.0.0 - stack-utils: 2.0.6 - dev: true - - /jest-mock@29.5.0: - resolution: {integrity: sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/types': 29.5.0 - '@types/node': 18.15.11 - jest-util: 29.5.0 - dev: true - - /jest-pnp-resolver@1.2.3(jest-resolve@29.5.0): - resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} - engines: {node: '>=6'} - peerDependencies: - jest-resolve: '*' - peerDependenciesMeta: - jest-resolve: - optional: true + slash: 3.0.0 + stack-utils: 2.0.6 + + jest-mock@29.5.0: dependencies: + '@jest/types': 29.5.0 + '@types/node': 18.15.11 + jest-util: 29.5.0 + + jest-pnp-resolver@1.2.3(jest-resolve@29.5.0): + optionalDependencies: jest-resolve: 29.5.0 - dev: true - /jest-regex-util@29.4.3: - resolution: {integrity: sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dev: true + jest-regex-util@29.4.3: {} - /jest-resolve-dependencies@29.5.0: - resolution: {integrity: sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-resolve-dependencies@29.5.0: dependencies: jest-regex-util: 29.4.3 jest-snapshot: 29.5.0 transitivePeerDependencies: - supports-color - dev: true - /jest-resolve@29.5.0: - resolution: {integrity: sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-resolve@29.5.0: dependencies: chalk: 4.1.2 graceful-fs: 4.2.11 @@ -9409,11 +12572,8 @@ packages: resolve: 1.22.2 resolve.exports: 2.0.2 slash: 3.0.0 - dev: true - /jest-runner@29.5.0: - resolution: {integrity: sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-runner@29.5.0: dependencies: '@jest/console': 29.5.0 '@jest/environment': 29.5.0 @@ -9438,11 +12598,8 @@ packages: source-map-support: 0.5.13 transitivePeerDependencies: - supports-color - dev: true - /jest-runtime@29.5.0: - resolution: {integrity: sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-runtime@29.5.0: dependencies: '@jest/environment': 29.5.0 '@jest/fake-timers': 29.5.0 @@ -9468,11 +12625,8 @@ packages: strip-bom: 4.0.0 transitivePeerDependencies: - supports-color - dev: true - /jest-snapshot@29.5.0: - resolution: {integrity: sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-snapshot@29.5.0: dependencies: '@babel/core': 7.21.4 '@babel/generator': 7.21.4 @@ -9499,11 +12653,8 @@ packages: semver: 7.6.0 transitivePeerDependencies: - supports-color - dev: true - /jest-util@29.5.0: - resolution: {integrity: sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-util@29.5.0: dependencies: '@jest/types': 29.5.0 '@types/node': 18.15.11 @@ -9511,11 +12662,8 @@ packages: ci-info: 3.8.0 graceful-fs: 4.2.11 picomatch: 2.3.1 - dev: true - /jest-validate@29.5.0: - resolution: {integrity: sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-validate@29.5.0: dependencies: '@jest/types': 29.5.0 camelcase: 6.3.0 @@ -9523,11 +12671,8 @@ packages: jest-get-type: 29.4.3 leven: 3.1.0 pretty-format: 29.5.0 - dev: true - /jest-watcher@29.5.0: - resolution: {integrity: sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-watcher@29.5.0: dependencies: '@jest/test-result': 29.5.0 '@jest/types': 29.5.0 @@ -9537,27 +12682,15 @@ packages: emittery: 0.13.1 jest-util: 29.5.0 string-length: 4.0.2 - dev: true - /jest-worker@29.5.0: - resolution: {integrity: sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-worker@29.5.0: dependencies: '@types/node': 18.15.11 jest-util: 29.5.0 merge-stream: 2.0.0 supports-color: 8.1.1 - dev: true - /jest@29.5.0(@types/node@18.15.11): - resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true + jest@29.5.0(@types/node@18.15.11): dependencies: '@jest/core': 29.5.0 '@jest/types': 29.5.0 @@ -9567,51 +12700,27 @@ packages: - '@types/node' - supports-color - ts-node - dev: true - /jiti@1.18.2: - resolution: {integrity: sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==} - hasBin: true - dev: true + jiti@1.18.2: {} - /joycon@3.1.1: - resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} - engines: {node: '>=10'} - dev: true + joycon@3.1.1: {} - /js-base64@3.7.5: - resolution: {integrity: sha512-3MEt5DTINKqfScXKfJFrRbxkrnk2AxPWGBL/ycjz4dK8iqiSJ06UxD8jh8xuh6p10TX4t2+7FsBYVxxQbMg+qA==} - dev: false + js-base64@3.7.5: {} - /js-sha3@0.8.0: - resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} + js-sha3@0.8.0: {} - /js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + js-tokens@4.0.0: {} - /js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true + js-yaml@3.14.1: dependencies: argparse: 1.0.10 esprima: 4.0.1 - dev: true - /js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true + js-yaml@4.1.0: dependencies: argparse: 2.0.1 - dev: true - /jsdom@22.1.0: - resolution: {integrity: sha512-/9AVW7xNbsBv6GfWho4TTNjEo9fe6Zhf9O7s0Fhhr3u+awPwAJMKwAMXnkk5vBxflqLW9hTHX/0cs+P3gW+cQw==} - engines: {node: '>=16'} - peerDependencies: - canvas: ^2.5.0 - peerDependenciesMeta: - canvas: - optional: true + jsdom@22.1.0: dependencies: abab: 2.0.6 cssstyle: 3.0.0 @@ -9640,140 +12749,75 @@ packages: - bufferutil - supports-color - utf-8-validate - dev: true - /jsesc@2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} - hasBin: true - dev: true + jsesc@2.5.2: {} - /json-parse-better-errors@1.0.2: - resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} - dev: true + json-parse-better-errors@1.0.2: {} - /json-parse-even-better-errors@2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - dev: true + json-parse-even-better-errors@2.3.1: {} - /json-schema-traverse@0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - dev: true + json-schema-traverse@0.4.1: {} - /json-schema-traverse@1.0.0: - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - dev: false + json-schema-traverse@1.0.0: {} - /json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - dev: true + json-stable-stringify-without-jsonify@1.0.1: {} - /json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true - dev: true + json5@2.2.3: {} - /jsonc-parser@3.2.0: - resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} - dev: true + jsonc-parser@3.2.0: {} - /jsonfile@2.4.0: - resolution: {integrity: sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==} + jsonfile@2.4.0: optionalDependencies: graceful-fs: 4.2.11 - dev: true - /jsonfile@4.0.0: - resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + jsonfile@4.0.0: optionalDependencies: graceful-fs: 4.2.11 - dev: true - /jsonparse@1.3.1: - resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} - engines: {'0': node >= 0.2.0} - dev: true + jsonparse@1.3.1: {} - /jsonstream-next@3.0.0: - resolution: {integrity: sha512-aAi6oPhdt7BKyQn1SrIIGZBt0ukKuOUE1qV6kJ3GgioSOYzsRc8z9Hfr1BVmacA/jLe9nARfmgMGgn68BqIAgg==} - engines: {node: '>=10'} - hasBin: true + jsonstream-next@3.0.0: dependencies: jsonparse: 1.3.1 through2: 4.0.2 - dev: true - /jsx-ast-utils@3.3.3: - resolution: {integrity: sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==} - engines: {node: '>=4.0'} + jsx-ast-utils@3.3.3: dependencies: array-includes: 3.1.6 object.assign: 4.1.4 - dev: true - /keccak-wasm@0.10.3(buffer-lite@1.1.0): - resolution: {integrity: sha512-HMbeV9BX+hGmrPk5C1PdZBPAGIAVyGzKywQt4OnU9cG+7sI1/moZmH7DXRd3XQBhR6z04LdMXkA15roVINmMsA==} - requiresBuild: true - peerDependencies: - buffer-lite: ^1.0.0 + keccak-wasm@0.10.3(buffer-lite@1.1.0): dependencies: buffer-lite: 1.1.0 - dev: true - /keccak@3.0.4: - resolution: {integrity: sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==} - engines: {node: '>=10.0.0'} - requiresBuild: true + keccak@3.0.4: dependencies: node-addon-api: 2.0.2 node-gyp-build: 4.8.0 readable-stream: 3.6.0 - dev: true - /keygrip@1.1.0: - resolution: {integrity: sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==} - engines: {node: '>= 0.6'} + keygrip@1.1.0: dependencies: tsscmp: 1.0.6 - dev: false - /kind-of@6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} - engines: {node: '>=0.10.0'} - dev: true + kind-of@6.0.3: {} - /klaw@1.3.1: - resolution: {integrity: sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==} + klaw@1.3.1: optionalDependencies: graceful-fs: 4.2.11 - dev: true - /kleur@3.0.3: - resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} - engines: {node: '>=6'} - dev: true + kleur@3.0.3: {} - /kleur@4.1.5: - resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} - engines: {node: '>=6'} - dev: true + kleur@4.1.5: {} - /koa-compose@4.1.0: - resolution: {integrity: sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==} - dev: false + koa-compose@4.1.0: {} - /koa-convert@2.0.0: - resolution: {integrity: sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA==} - engines: {node: '>= 10'} + koa-convert@2.0.0: dependencies: co: 4.6.0 koa-compose: 4.1.0 - dev: false - /koa@2.14.2: - resolution: {integrity: sha512-VFI2bpJaodz6P7x2uyLiX6RLYpZmOJqNmoCst/Yyd7hQlszyPwG/I9CQJ63nOtKSxpt5M7NH67V6nJL2BwCl7g==} - engines: {node: ^4.8.4 || ^6.10.1 || ^7.10.1 || >= 8.1.4} + koa@2.14.2: dependencies: accepts: 1.3.8 cache-content-type: 1.0.1 @@ -9800,61 +12844,36 @@ packages: vary: 1.1.2 transitivePeerDependencies: - supports-color - dev: false - /kysely@0.26.3: - resolution: {integrity: sha512-yWSgGi9bY13b/W06DD2OCDDHQmq1kwTGYlQ4wpZkMOJqMGCstVCFIvxCCVG4KfY1/3G0MhDAcZsip/Lw8/vJWw==} - engines: {node: '>=14.0.0'} - dev: false + kysely@0.26.3: {} - /leven@3.1.0: - resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} - engines: {node: '>=6'} - dev: true + leven@3.1.0: {} - /levn@0.3.0: - resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} - engines: {node: '>= 0.8.0'} + levn@0.3.0: dependencies: prelude-ls: 1.1.2 type-check: 0.3.2 - dev: true - /levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} + levn@0.4.1: dependencies: prelude-ls: 1.2.1 type-check: 0.4.0 - dev: true - /license.js@3.1.2: - resolution: {integrity: sha512-anbqciJ9HfQVMRicsegiZOJ6nrP93ly24alImDOO7KndNLs3Um861fSEpXpWqGPMOv7PfZTJZL1p4cPq+Au4BQ==} - engines: {node: '>=8.0.0'} + license.js@3.1.2: dependencies: pify: 3.0.0 - dev: false - /light-my-request@5.10.0: - resolution: {integrity: sha512-ZU2D9GmAcOUculTTdH9/zryej6n8TzT+fNGdNtm6SDp5MMMpHrJJkvAdE3c6d8d2chE9i+a//dS9CWZtisknqA==} + light-my-request@5.10.0: dependencies: cookie: 0.5.0 process-warning: 2.2.0 set-cookie-parser: 2.6.0 - dev: false - /lilconfig@2.1.0: - resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} - engines: {node: '>=10'} - dev: true + lilconfig@2.1.0: {} - /lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - dev: true + lines-and-columns@1.2.4: {} - /lint-staged@10.0.0: - resolution: {integrity: sha512-/MrZOLMnljjMHakxlRd1Z5Kr8wWWlrWFasye7HaTv5tx56icwzT/STRty8flMKsyzBGTfTa9QszNVPsDS/yOug==} - hasBin: true + lint-staged@10.0.0: dependencies: chalk: 3.0.0 commander: 4.1.1 @@ -9872,18 +12891,10 @@ packages: - supports-color - zen-observable - zenObservable - dev: true - /listr-silent-renderer@1.1.1: - resolution: {integrity: sha512-L26cIFm7/oZeSNVhWB6faeorXhMg4HNlb/dS/7jHhr708jxlXrtrBWo4YUxZQkc6dGoxEAe6J/D3juTRBUzjtA==} - engines: {node: '>=4'} - dev: true + listr-silent-renderer@1.1.1: {} - /listr-update-renderer@0.5.0(listr@0.14.3): - resolution: {integrity: sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA==} - engines: {node: '>=6'} - peerDependencies: - listr: ^0.14.2 + listr-update-renderer@0.5.0(listr@0.14.3): dependencies: chalk: 1.1.3 cli-truncate: 0.2.1 @@ -9894,21 +12905,15 @@ packages: log-symbols: 1.0.2 log-update: 2.3.0 strip-ansi: 3.0.1 - dev: true - /listr-verbose-renderer@0.5.0: - resolution: {integrity: sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw==} - engines: {node: '>=4'} + listr-verbose-renderer@0.5.0: dependencies: chalk: 2.4.2 cli-cursor: 2.1.0 date-fns: 1.30.1 figures: 2.0.0 - dev: true - /listr@0.14.3: - resolution: {integrity: sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA==} - engines: {node: '>=6'} + listr@0.14.3: dependencies: '@samverschueren/stream-to-observable': 0.3.1(rxjs@6.6.7) is-observable: 1.1.0 @@ -9922,190 +12927,113 @@ packages: transitivePeerDependencies: - zen-observable - zenObservable - dev: true - /load-tsconfig@0.2.5: - resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: true + load-tsconfig@0.2.5: {} - /load-yaml-file@0.2.0: - resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} - engines: {node: '>=6'} + load-yaml-file@0.2.0: dependencies: graceful-fs: 4.2.11 js-yaml: 3.14.1 pify: 4.0.1 strip-bom: 3.0.0 - dev: true - /local-pkg@0.4.3: - resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} - engines: {node: '>=14'} - dev: true + local-pkg@0.4.3: {} - /locate-path@2.0.0: - resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==} - engines: {node: '>=4'} + locate-path@2.0.0: dependencies: p-locate: 2.0.0 path-exists: 3.0.0 - dev: true - /locate-path@3.0.0: - resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} - engines: {node: '>=6'} + locate-path@3.0.0: dependencies: p-locate: 3.0.0 path-exists: 3.0.0 - dev: false - /locate-path@5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} + locate-path@5.0.0: dependencies: p-locate: 4.1.0 - dev: true - /locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} + locate-path@6.0.0: dependencies: p-locate: 5.0.0 - /lodash.get@4.4.2: - resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} - dev: false + lodash.get@4.4.2: {} - /lodash.memoize@4.1.2: - resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} - dev: true + lodash.memoize@4.1.2: {} - /lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - dev: true + lodash.merge@4.6.2: {} - /lodash.sortby@4.7.0: - resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} - dev: true + lodash.sortby@4.7.0: {} - /lodash.startcase@4.4.0: - resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} - dev: true + lodash.startcase@4.4.0: {} - /lodash.truncate@4.4.2: - resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} - dev: false + lodash.truncate@4.4.2: {} - /lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + lodash@4.17.21: {} - /log-symbols@1.0.2: - resolution: {integrity: sha512-mmPrW0Fh2fxOzdBbFv4g1m6pR72haFLPJ2G5SJEELf1y+iaQrDG6cWCPjy54RHYbZAt7X+ls690Kw62AdWXBzQ==} - engines: {node: '>=0.10.0'} + log-symbols@1.0.2: dependencies: chalk: 1.1.3 - dev: true - /log-symbols@3.0.0: - resolution: {integrity: sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==} - engines: {node: '>=8'} + log-symbols@3.0.0: dependencies: chalk: 2.4.2 - dev: true - /log-symbols@4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} - engines: {node: '>=10'} + log-symbols@4.1.0: dependencies: chalk: 4.1.2 is-unicode-supported: 0.1.0 - dev: true - /log-update@2.3.0: - resolution: {integrity: sha512-vlP11XfFGyeNQlmEn9tJ66rEW1coA/79m5z6BCkudjbAGE83uhAcGYrBFwfs3AdLiLzGRusRPAbSPK9xZteCmg==} - engines: {node: '>=4'} + log-update@2.3.0: dependencies: ansi-escapes: 3.2.0 cli-cursor: 2.1.0 wrap-ansi: 3.0.1 - dev: true - /long@4.0.0: - resolution: {integrity: sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==} - dev: true + long@4.0.0: {} - /long@5.2.1: - resolution: {integrity: sha512-GKSNGeNAtw8IryjjkhZxuKB3JzlcLTwjtiQCHKvqQet81I93kXslhDQruGI/QsddO83mcDToBVy7GqGS/zYf/A==} + long@5.2.1: {} - /loose-envify@1.4.0: - resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} - hasBin: true + loose-envify@1.4.0: dependencies: js-tokens: 4.0.0 - /loupe@2.3.6: - resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==} - deprecated: Please upgrade to 2.3.7 which fixes GHSA-4q6p-r6v2-jvc5 + loupe@2.3.6: dependencies: get-func-name: 2.0.2 - dev: true - /lru-cache@4.1.5: - resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} + lru-cache@4.1.5: dependencies: pseudomap: 1.0.2 yallist: 2.1.2 - dev: true - /lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + lru-cache@5.1.1: dependencies: yallist: 3.1.1 - dev: true - /lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} + lru-cache@6.0.0: dependencies: yallist: 4.0.0 - /lru-cache@7.18.3: - resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} - engines: {node: '>=12'} - dev: false + lru-cache@7.18.3: {} - /lru-queue@0.1.0: - resolution: {integrity: sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==} + lru-queue@0.1.0: dependencies: es5-ext: 0.10.62 - dev: false - /lru_map@0.3.3: - resolution: {integrity: sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==} - dev: true + lru_map@0.3.3: {} - /magic-string@0.30.5: - resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} - engines: {node: '>=12'} + magic-string@0.30.5: dependencies: '@jridgewell/sourcemap-codec': 1.4.15 - dev: true - /make-dir@3.1.0: - resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} - engines: {node: '>=8'} + make-dir@3.1.0: dependencies: - semver: 6.3.1 - dev: true + semver: 6.3.0 - /make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - dev: true + make-error@1.3.6: {} - /make-fetch-happen@10.2.1: - resolution: {integrity: sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + make-fetch-happen@10.2.1: dependencies: agentkeepalive: 4.5.0 cacache: 16.1.3 @@ -10126,39 +13054,24 @@ packages: transitivePeerDependencies: - bluebird - supports-color - dev: false - /makeerror@1.0.12: - resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + makeerror@1.0.12: dependencies: tmpl: 1.0.5 - dev: true - /map-obj@1.0.1: - resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} - engines: {node: '>=0.10.0'} - dev: true + map-obj@1.0.1: {} - /map-obj@4.3.0: - resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} - engines: {node: '>=8'} - dev: true + map-obj@4.3.0: {} - /md5.js@1.3.5: - resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} + md5.js@1.3.5: dependencies: hash-base: 3.1.0 inherits: 2.0.4 safe-buffer: 5.2.1 - dev: true - /media-typer@0.3.0: - resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} - engines: {node: '>= 0.6'} - dev: false + media-typer@0.3.0: {} - /memoizee@0.4.15: - resolution: {integrity: sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==} + memoizee@0.4.15: dependencies: d: 1.0.1 es5-ext: 0.10.62 @@ -10168,16 +13081,10 @@ packages: lru-queue: 0.1.0 next-tick: 1.1.0 timers-ext: 0.1.7 - dev: false - /memorystream@0.3.1: - resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} - engines: {node: '>= 0.10.0'} - dev: true + memorystream@0.3.1: {} - /meow@6.1.1: - resolution: {integrity: sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==} - engines: {node: '>=8'} + meow@6.1.1: dependencies: '@types/minimist': 1.2.2 camelcase-keys: 6.2.2 @@ -10190,223 +13097,129 @@ packages: trim-newlines: 3.0.1 type-fest: 0.13.1 yargs-parser: 18.1.3 - dev: true - /merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + merge-stream@2.0.0: {} - /merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} + merge2@1.4.1: {} - /methods@1.1.2: - resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} - engines: {node: '>= 0.6'} - dev: false + methods@1.1.2: {} - /micro-ftch@0.3.1: - resolution: {integrity: sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==} - dev: true + micro-ftch@0.3.1: {} - /micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} - engines: {node: '>=8.6'} + micromatch@4.0.5: dependencies: braces: 3.0.2 picomatch: 2.3.1 - /mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} + mime-db@1.52.0: {} - /mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} + mime-types@2.1.35: dependencies: mime-db: 1.52.0 - /mimic-fn@1.2.0: - resolution: {integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==} - engines: {node: '>=4'} - dev: true + mimic-fn@1.2.0: {} - /mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} + mimic-fn@2.1.0: {} - /mimic-fn@4.0.0: - resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} - engines: {node: '>=12'} - dev: true + mimic-fn@4.0.0: {} - /mimic-response@3.1.0: - resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} - engines: {node: '>=10'} - dev: false + mimic-response@3.1.0: {} - /min-indent@1.0.1: - resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} - engines: {node: '>=4'} - dev: true + min-indent@1.0.1: {} - /minimalistic-assert@1.0.1: - resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + minimalistic-assert@1.0.1: {} - /minimalistic-crypto-utils@1.0.1: - resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} + minimalistic-crypto-utils@1.0.1: {} - /minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + minimatch@3.1.2: dependencies: brace-expansion: 1.1.11 - /minimatch@5.0.1: - resolution: {integrity: sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==} - engines: {node: '>=10'} + minimatch@5.0.1: dependencies: brace-expansion: 2.0.1 - dev: true - /minimatch@5.1.6: - resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} - engines: {node: '>=10'} + minimatch@5.1.6: dependencies: brace-expansion: 2.0.1 - /minimatch@9.0.3: - resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} - engines: {node: '>=16 || 14 >=14.17'} + minimatch@9.0.3: dependencies: brace-expansion: 2.0.1 - dev: true - /minimist-options@4.1.0: - resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} - engines: {node: '>= 6'} + minimist-options@4.1.0: dependencies: arrify: 1.0.1 is-plain-obj: 1.1.0 kind-of: 6.0.3 - dev: true - /minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + minimist@1.2.8: {} - /minipass-collect@1.0.2: - resolution: {integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==} - engines: {node: '>= 8'} + minipass-collect@1.0.2: dependencies: minipass: 3.3.6 - dev: false - /minipass-fetch@2.1.2: - resolution: {integrity: sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + minipass-fetch@2.1.2: dependencies: minipass: 3.3.6 minipass-sized: 1.0.3 minizlib: 2.1.2 optionalDependencies: encoding: 0.1.13 - dev: false - /minipass-flush@1.0.5: - resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} - engines: {node: '>= 8'} + minipass-flush@1.0.5: dependencies: minipass: 3.3.6 - dev: false - /minipass-pipeline@1.2.4: - resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==} - engines: {node: '>=8'} + minipass-pipeline@1.2.4: dependencies: minipass: 3.3.6 - dev: false - /minipass-sized@1.0.3: - resolution: {integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==} - engines: {node: '>=8'} + minipass-sized@1.0.3: dependencies: minipass: 3.3.6 - dev: false - /minipass@3.3.6: - resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} - engines: {node: '>=8'} + minipass@3.3.6: dependencies: yallist: 4.0.0 - dev: false - /minipass@5.0.0: - resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} - engines: {node: '>=8'} - dev: false + minipass@5.0.0: {} - /minipass@7.0.4: - resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} - engines: {node: '>=16 || 14 >=14.17'} - dev: false + minipass@7.0.4: {} - /minizlib@2.1.2: - resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} - engines: {node: '>= 8'} + minizlib@2.1.2: dependencies: minipass: 3.3.6 yallist: 4.0.0 - dev: false - /mixme@0.5.9: - resolution: {integrity: sha512-VC5fg6ySUscaWUpI4gxCBTQMH2RdUpNrk+MsbpCYtIvf9SBJdiUey4qE7BXviJsJR4nDQxCZ+3yaYNW3guz/Pw==} - engines: {node: '>= 8.0.0'} - dev: true + mixme@0.5.9: {} - /mkdirp-classic@0.5.3: - resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} - dev: false + mkdirp-classic@0.5.3: {} - /mkdirp@0.5.6: - resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} - hasBin: true + mkdirp@0.5.6: dependencies: minimist: 1.2.8 - dev: true - /mkdirp@1.0.4: - resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} - engines: {node: '>=10'} - hasBin: true - dev: false + mkdirp@1.0.4: {} - /mlly@1.5.0: - resolution: {integrity: sha512-NPVQvAY1xr1QoVeG0cy8yUYC7FQcOx6evl/RjT1wL5FvzPnzOysoqB/jmx/DhssT2dYa8nxECLAaFI/+gVLhDQ==} + mlly@1.5.0: dependencies: acorn: 8.11.3 pathe: 1.1.2 pkg-types: 1.0.3 ufo: 1.3.2 - dev: true - /mnemonist@0.38.5: - resolution: {integrity: sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==} + mnemonist@0.38.5: dependencies: obliterator: 2.0.4 - dev: true - /mnemonist@0.39.5: - resolution: {integrity: sha512-FPUtkhtJ0efmEFGpU14x7jGbTB+s18LrzRL2KgoWz9YvcY3cPomz8tih01GbHwnGk/OmkOKfqd/RAQoc8Lm7DQ==} + mnemonist@0.39.5: dependencies: obliterator: 2.0.4 - dev: false - /mobx@6.9.0: - resolution: {integrity: sha512-HdKewQEREEJgsWnErClfbFoVebze6rGazxFLU/XUyrII8dORfVszN1V0BMRnQSzcgsNNtkX8DHj3nC6cdWE9YQ==} - dev: false + mobx@6.9.0: {} - /mocha@10.3.0: - resolution: {integrity: sha512-uF2XJs+7xSLsrmIvn37i/wnc91nw7XjOQB8ccyx5aEgdnohr7n+rEiZP23WkCYHjilR6+EboEnbq/ZQDz4LSbg==} - engines: {node: '>= 14.0.0'} - hasBin: true + mocha@10.3.0: dependencies: ansi-colors: 4.1.1 browser-stdout: 1.3.1 @@ -10428,65 +13241,38 @@ packages: yargs: 16.2.0 yargs-parser: 20.2.4 yargs-unparser: 2.0.0 - dev: true - /ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + ms@2.1.2: {} - /ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + ms@2.1.3: {} - /mute-stream@0.0.7: - resolution: {integrity: sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==} - dev: true + mute-stream@0.0.7: {} - /mute-stream@0.0.8: - resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} - dev: false + mute-stream@0.0.8: {} - /mz@2.7.0: - resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + mz@2.7.0: dependencies: any-promise: 1.3.0 object-assign: 4.1.1 thenify-all: 1.6.0 - dev: true - /nanoid@3.3.6: - resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - dev: true + nanoid@3.3.6: {} - /napi-build-utils@1.0.2: - resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} - dev: false + napi-build-utils@1.0.2: {} - /natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - dev: true + natural-compare@1.4.0: {} - /negotiator@0.6.3: - resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} - engines: {node: '>= 0.6'} - dev: false + negotiator@0.6.3: {} - /neo-async@2.6.2: - resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - dev: false + neo-async@2.6.2: {} - /next-tick@1.1.0: - resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} - dev: false + next-tick@1.1.0: {} - /nice-grpc-common@2.0.2: - resolution: {integrity: sha512-7RNWbls5kAL1QVUOXvBsv1uO0wPQK3lHv+cY1gwkTzirnG1Nop4cBJZubpgziNbaVc/bl9QJcyvsf/NQxa3rjQ==} + nice-grpc-common@2.0.2: dependencies: ts-error: 1.0.6 - dev: false - /nice-grpc-web@2.0.1(google-protobuf@3.21.2): - resolution: {integrity: sha512-r8jy0TJY6ZO9qWtujiqmtRkqgItAChoJxJyYv+CHacP9G5kRIH03M+sQqtieXNNDUAKfFT/z5yroSy1cPFX0sA==} + nice-grpc-web@2.0.1(google-protobuf@3.21.2): dependencies: '@improbable-eng/grpc-web': 0.15.0(google-protobuf@3.21.2) abort-controller-x: 0.4.1 @@ -10494,51 +13280,28 @@ packages: nice-grpc-common: 2.0.2 transitivePeerDependencies: - google-protobuf - dev: false - /nice-try@1.0.5: - resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} - dev: true + nice-try@1.0.5: {} - /node-abi@3.45.0: - resolution: {integrity: sha512-iwXuFrMAcFVi/ZoZiqq8BzAdsLw9kxDfTC0HMyjXfSL/6CSDAGD5UmR7azrAgWV1zKYq7dUUMj4owusBWKLsiQ==} - engines: {node: '>=10'} + node-abi@3.45.0: dependencies: semver: 7.6.0 - dev: false - /node-abi@3.52.0: - resolution: {integrity: sha512-JJ98b02z16ILv7859irtXn4oUaFWADtvkzy2c0IAatNVX2Mc9Yoh8z6hZInn3QwvMEYhHuQloYi+TTQy67SIdQ==} - engines: {node: '>=10'} + node-abi@3.52.0: dependencies: semver: 7.5.0 - dev: false - /node-addon-api@2.0.2: - resolution: {integrity: sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==} - dev: true + node-addon-api@2.0.2: {} - /node-fetch@2.6.9: - resolution: {integrity: sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true + node-fetch@2.6.9(encoding@0.1.13): dependencies: whatwg-url: 5.0.0 - dev: false + optionalDependencies: + encoding: 0.1.13 - /node-gyp-build@4.8.0: - resolution: {integrity: sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==} - hasBin: true - dev: true + node-gyp-build@4.8.0: {} - /node-gyp@9.4.1: - resolution: {integrity: sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ==} - engines: {node: ^12.13 || ^14.13 || >=16} - hasBin: true + node-gyp@9.4.1: dependencies: env-paths: 2.2.1 exponential-backoff: 3.1.1 @@ -10554,209 +13317,125 @@ packages: transitivePeerDependencies: - bluebird - supports-color - dev: false - /node-int64@0.4.0: - resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} - dev: true + node-int64@0.4.0: {} - /node-releases@2.0.14: - resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} - dev: true + node-releases@2.0.10: {} - /nopt@6.0.0: - resolution: {integrity: sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - hasBin: true + nopt@6.0.0: dependencies: abbrev: 1.1.1 - dev: false - /normalize-package-data@2.5.0: - resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + normalize-package-data@2.5.0: dependencies: hosted-git-info: 2.8.9 resolve: 1.22.2 semver: 5.7.1 validate-npm-package-license: 3.0.4 - dev: true - /normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} + normalize-path@3.0.0: {} - /normalize-range@0.1.2: - resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} - engines: {node: '>=0.10.0'} - dev: true + normalize-range@0.1.2: {} - /npm-run-path@4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} - engines: {node: '>=8'} + npm-run-path@4.0.1: dependencies: path-key: 3.1.1 - /npm-run-path@5.1.0: - resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + npm-run-path@5.1.0: dependencies: path-key: 4.0.0 - dev: true - /npmlog@6.0.2: - resolution: {integrity: sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + npmlog@6.0.2: dependencies: are-we-there-yet: 3.0.1 console-control-strings: 1.1.0 gauge: 4.0.4 set-blocking: 2.0.0 - dev: false - /number-is-nan@1.0.1: - resolution: {integrity: sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==} - engines: {node: '>=0.10.0'} - dev: true + number-is-nan@1.0.1: {} - /number-to-bn@1.7.0: - resolution: {integrity: sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==} - engines: {node: '>=6.5.0', npm: '>=3'} + number-to-bn@1.7.0: dependencies: bn.js: 4.11.6 strip-hex-prefix: 1.0.0 - dev: true - /nwsapi@2.2.7: - resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==} - dev: true + nwsapi@2.2.7: {} - /object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} - dev: true + object-assign@4.1.1: {} - /object-hash@1.3.1: - resolution: {integrity: sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==} - engines: {node: '>= 0.10.0'} - dev: true + object-hash@1.3.1: {} - /object-hash@3.0.0: - resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} - engines: {node: '>= 6'} - dev: true + object-hash@3.0.0: {} - /object-inspect@1.12.2: - resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==} - dev: true + object-inspect@1.12.2: {} - /object-keys@1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} - engines: {node: '>= 0.4'} - dev: true + object-keys@1.1.1: {} - /object.assign@4.1.4: - resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} - engines: {node: '>= 0.4'} + object.assign@4.1.4: dependencies: call-bind: 1.0.2 define-properties: 1.1.4 has-symbols: 1.0.3 object-keys: 1.1.1 - dev: true - /object.entries@1.1.6: - resolution: {integrity: sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==} - engines: {node: '>= 0.4'} + object.entries@1.1.6: dependencies: call-bind: 1.0.2 define-properties: 1.1.4 es-abstract: 1.20.5 - dev: true - /object.fromentries@2.0.6: - resolution: {integrity: sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==} - engines: {node: '>= 0.4'} + object.fromentries@2.0.6: dependencies: call-bind: 1.0.2 define-properties: 1.1.4 es-abstract: 1.20.5 - dev: true - /object.hasown@1.1.2: - resolution: {integrity: sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==} + object.hasown@1.1.2: dependencies: define-properties: 1.1.4 es-abstract: 1.20.5 - dev: true - /object.values@1.1.6: - resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==} - engines: {node: '>= 0.4'} + object.values@1.1.6: dependencies: call-bind: 1.0.2 define-properties: 1.1.4 es-abstract: 1.20.5 - dev: true - /objnest@5.1.1: - resolution: {integrity: sha512-C4fjNlHhUQbHiiFpgzvZse3/WUHq356Da3P8NZazg9JpPHFiQP2Y9lmYvpLU06midap0YpNz/MuA8GGSL8G0YQ==} - engines: {node: '>=8', npm: '>=5'} + objnest@5.1.1: dependencies: '@babel/runtime': 7.21.0 abind: 1.0.5 extend: 3.0.2 - dev: false - /obliterator@2.0.4: - resolution: {integrity: sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==} + obliterator@2.0.4: {} - /on-exit-leak-free@2.1.0: - resolution: {integrity: sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w==} - dev: false + on-exit-leak-free@2.1.0: {} - /on-finished@2.4.1: - resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} - engines: {node: '>= 0.8'} + on-finished@2.4.1: dependencies: ee-first: 1.1.1 - dev: false - /once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + once@1.4.0: dependencies: wrappy: 1.0.2 - /onetime@2.0.1: - resolution: {integrity: sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==} - engines: {node: '>=4'} + onetime@2.0.1: dependencies: mimic-fn: 1.2.0 - dev: true - /onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} + onetime@5.1.2: dependencies: mimic-fn: 2.1.0 - /onetime@6.0.0: - resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} - engines: {node: '>=12'} + onetime@6.0.0: dependencies: mimic-fn: 4.0.0 - dev: true - /only@0.0.2: - resolution: {integrity: sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==} - dev: false + only@0.0.2: {} - /openurl@1.1.1: - resolution: {integrity: sha512-d/gTkTb1i1GKz5k3XE3XFV/PxQ1k45zDqGP2OA7YhgsaLoqm6qRvARAZOFer1fcXritWlGBRCu/UgeS4HAnXAA==} - dev: false + openurl@1.1.1: {} - /optionator@0.8.3: - resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} - engines: {node: '>= 0.8.0'} + optionator@0.8.3: dependencies: deep-is: 0.1.4 fast-levenshtein: 2.0.6 @@ -10764,11 +13443,8 @@ packages: prelude-ls: 1.1.2 type-check: 0.3.2 word-wrap: 1.2.3 - dev: true - /optionator@0.9.3: - resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} - engines: {node: '>= 0.8.0'} + optionator@0.9.3: dependencies: '@aashutoshrathi/word-wrap': 1.2.6 deep-is: 0.1.4 @@ -10776,114 +13452,67 @@ packages: levn: 0.4.1 prelude-ls: 1.2.1 type-check: 0.4.0 - dev: true - - /ordinal@1.0.3: - resolution: {integrity: sha512-cMddMgb2QElm8G7vdaa02jhUNbTSrhsgAGUz1OokD83uJTwSUn+nKoNoKVVaRa08yF6sgfO7Maou1+bgLd9rdQ==} - dev: true - /os-tmpdir@1.0.2: - resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} - engines: {node: '>=0.10.0'} + ordinal@1.0.3: {} - /outdent@0.5.0: - resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} - dev: true + os-tmpdir@1.0.2: {} - /p-filter@2.1.0: - resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} - engines: {node: '>=8'} + outdent@0.5.0: {} + + p-filter@2.1.0: dependencies: p-map: 2.1.0 - dev: true - /p-finally@1.0.0: - resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} - engines: {node: '>=4'} - dev: false + p-finally@1.0.0: {} - /p-finally@2.0.1: - resolution: {integrity: sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==} - engines: {node: '>=8'} - dev: true + p-finally@2.0.1: {} - /p-is-promise@3.0.0: - resolution: {integrity: sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==} - engines: {node: '>=8'} - dev: false + p-is-promise@3.0.0: {} - /p-limit@1.3.0: - resolution: {integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==} - engines: {node: '>=4'} + p-limit@1.3.0: dependencies: p-try: 1.0.0 - dev: true - /p-limit@2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} + p-limit@2.3.0: dependencies: p-try: 2.2.0 - /p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} + p-limit@3.1.0: dependencies: yocto-queue: 0.1.0 - /p-limit@4.0.0: - resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + p-limit@4.0.0: dependencies: yocto-queue: 1.0.0 - dev: true - /p-locate@2.0.0: - resolution: {integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==} - engines: {node: '>=4'} + p-locate@2.0.0: dependencies: p-limit: 1.3.0 - dev: true - /p-locate@3.0.0: - resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} - engines: {node: '>=6'} + p-locate@3.0.0: dependencies: p-limit: 2.3.0 - dev: false - /p-locate@4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} + p-locate@4.1.0: dependencies: p-limit: 2.3.0 - dev: true - /p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} + p-locate@5.0.0: dependencies: p-limit: 3.1.0 - /p-map@2.1.0: - resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} - engines: {node: '>=6'} - dev: true + p-map@2.1.0: {} - /p-map@4.0.0: - resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} - engines: {node: '>=10'} + p-map@4.0.0: dependencies: aggregate-error: 3.1.0 - /p-queue@6.6.2: - resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==} - engines: {node: '>=8'} + p-queue@6.6.2: dependencies: eventemitter3: 4.0.7 p-timeout: 3.2.0 - dev: false +<<<<<<< HEAD /p-queue@7.4.1: resolution: {integrity: sha512-vRpMXmIkYF2/1hLBKisKeVYJZ8S2tZ0zEAmIJgdVKP2nq0nh4qCdf8bgw+ZgKrkh71AOCaqzwbJJk1WtdcF3VA==} engines: {node: '>=12'} @@ -10895,18 +13524,18 @@ packages: /p-retry@4.6.2: resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} engines: {node: '>=8'} +======= + p-retry@4.6.2: +>>>>>>> 1175edcf0 (feat: update pnpm and node version) dependencies: '@types/retry': 0.12.0 retry: 0.13.1 - dev: false - /p-timeout@3.2.0: - resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} - engines: {node: '>=8'} + p-timeout@3.2.0: dependencies: p-finally: 1.0.0 - dev: false +<<<<<<< HEAD /p-timeout@5.1.0: resolution: {integrity: sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew==} engines: {node: '>=12'} @@ -10916,160 +13545,95 @@ packages: resolution: {integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==} engines: {node: '>=4'} dev: true +======= + p-try@1.0.0: {} +>>>>>>> 1175edcf0 (feat: update pnpm and node version) - /p-try@2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} + p-try@2.2.0: {} - /parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} + parent-module@1.0.1: dependencies: callsites: 3.1.0 - dev: true - /parse-json@4.0.0: - resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} - engines: {node: '>=4'} + parse-json@4.0.0: dependencies: error-ex: 1.3.2 json-parse-better-errors: 1.0.2 - dev: true - /parse-json@5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} - engines: {node: '>=8'} + parse-json@5.2.0: dependencies: '@babel/code-frame': 7.21.4 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 - dev: true - /parse5@7.1.2: - resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} + parse5@7.1.2: dependencies: entities: 4.5.0 - dev: true - /parseurl@1.3.3: - resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} - engines: {node: '>= 0.8'} - dev: false + parseurl@1.3.3: {} - /path-exists@3.0.0: - resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} - engines: {node: '>=4'} + path-exists@3.0.0: {} - /path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} + path-exists@4.0.0: {} - /path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} + path-is-absolute@1.0.1: {} - /path-is-inside@1.0.2: - resolution: {integrity: sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==} - dev: true + path-is-inside@1.0.2: {} - /path-key@2.0.1: - resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} - engines: {node: '>=4'} - dev: true + path-key@2.0.1: {} - /path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} + path-key@3.1.1: {} - /path-key@4.0.0: - resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} - engines: {node: '>=12'} - dev: true + path-key@4.0.0: {} - /path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - dev: true + path-parse@1.0.7: {} - /path-to-regexp@6.2.1: - resolution: {integrity: sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==} - dev: false + path-to-regexp@6.2.1: {} - /path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} + path-type@4.0.0: {} - /path@0.12.7: - resolution: {integrity: sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==} + path@0.12.7: dependencies: process: 0.11.10 util: 0.10.4 - dev: false - /pathe@1.1.2: - resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} - dev: true + pathe@1.1.2: {} - /pathval@1.1.1: - resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} - dev: true + pathval@1.1.1: {} - /pbkdf2@3.1.2: - resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==} - engines: {node: '>=0.12'} + pbkdf2@3.1.2: dependencies: create-hash: 1.2.0 create-hmac: 1.1.7 ripemd160: 2.0.2 safe-buffer: 5.2.1 sha.js: 2.4.11 - dev: true - /peek-stream@1.1.3: - resolution: {integrity: sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA==} + peek-stream@1.1.3: dependencies: buffer-from: 1.1.2 duplexify: 3.7.1 through2: 2.0.5 - dev: false - /picocolors@1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - dev: true + picocolors@1.0.0: {} - /picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} + picomatch@2.3.1: {} - /pify@2.3.0: - resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} - engines: {node: '>=0.10.0'} - dev: true + pify@2.3.0: {} - /pify@3.0.0: - resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} - engines: {node: '>=4'} - dev: false + pify@3.0.0: {} - /pify@4.0.1: - resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} - engines: {node: '>=6'} - dev: true + pify@4.0.1: {} - /pino-abstract-transport@1.0.0: - resolution: {integrity: sha512-c7vo5OpW4wIS42hUVcT5REsL8ZljsUfBjqV/e2sFxmFEFZiq1XLUp5EYLtuDH6PEHq9W1egWqRbnLUP5FuZmOA==} + pino-abstract-transport@1.0.0: dependencies: readable-stream: 4.4.2 split2: 4.2.0 - dev: false - /pino-std-serializers@6.2.2: - resolution: {integrity: sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==} - dev: false + pino-std-serializers@6.2.2: {} - /pino@8.14.2: - resolution: {integrity: sha512-zKu9aWeSWTy1JgvxIpZveJKKsAr4+6uNMZ0Vf0KRwzl/UNZA3XjHiIl/0WwqLMkDwuHuDkT5xAgPA2jpKq4whA==} - hasBin: true + pino@8.14.2: dependencies: atomic-sleep: 1.0.0 fast-redact: 3.3.0 @@ -11082,136 +13646,74 @@ packages: safe-stable-stringify: 2.4.3 sonic-boom: 3.3.0 thread-stream: 2.3.0 - dev: false - /pirates@4.0.5: - resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} - engines: {node: '>= 6'} - dev: true + pirates@4.0.5: {} - /pkg-dir@4.2.0: - resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} - engines: {node: '>=8'} + pkg-dir@4.2.0: dependencies: find-up: 4.1.0 - dev: true - /pkg-types@1.0.3: - resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} + pkg-types@1.0.3: dependencies: jsonc-parser: 3.2.0 mlly: 1.5.0 pathe: 1.1.2 - dev: true - /pkg-up@3.1.0: - resolution: {integrity: sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==} - engines: {node: '>=8'} + pkg-up@3.1.0: dependencies: find-up: 3.0.0 - dev: false - /please-upgrade-node@3.2.0: - resolution: {integrity: sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==} + please-upgrade-node@3.2.0: dependencies: semver-compare: 1.0.0 - dev: true - /postcss-import@15.1.0(postcss@8.4.23): - resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} - engines: {node: '>=14.0.0'} - peerDependencies: - postcss: ^8.0.0 + postcss-import@15.1.0(postcss@8.4.23): dependencies: postcss: 8.4.23 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.2 - dev: true - /postcss-js@4.0.1(postcss@8.4.23): - resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} - engines: {node: ^12 || ^14 || >= 16} - peerDependencies: - postcss: ^8.4.21 + postcss-js@4.0.1(postcss@8.4.23): dependencies: camelcase-css: 2.0.1 postcss: 8.4.23 - dev: true - /postcss-load-config@3.1.4(postcss@8.4.23): - resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} - engines: {node: '>= 10'} - peerDependencies: - postcss: '>=8.0.9' - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true + postcss-load-config@3.1.4(postcss@8.4.23): dependencies: lilconfig: 2.1.0 - postcss: 8.4.23 yaml: 1.10.2 - dev: true + optionalDependencies: + postcss: 8.4.23 - /postcss-load-config@4.0.1(postcss@8.4.23): - resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==} - engines: {node: '>= 14'} - peerDependencies: - postcss: '>=8.0.9' - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true + postcss-load-config@4.0.1(postcss@8.4.23): dependencies: lilconfig: 2.1.0 - postcss: 8.4.23 yaml: 2.2.2 - dev: true + optionalDependencies: + postcss: 8.4.23 - /postcss-nested@6.0.1(postcss@8.4.23): - resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.2.14 + postcss-nested@6.0.1(postcss@8.4.23): dependencies: postcss: 8.4.23 postcss-selector-parser: 6.0.11 - dev: true - /postcss-selector-parser@6.0.11: - resolution: {integrity: sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==} - engines: {node: '>=4'} + postcss-selector-parser@6.0.11: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 - dev: true - /postcss-value-parser@4.2.0: - resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - dev: true + postcss-value-parser@4.2.0: {} - /postcss@8.4.23: - resolution: {integrity: sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==} - engines: {node: ^10 || ^12 || >=14} + postcss@8.4.23: dependencies: nanoid: 3.3.6 picocolors: 1.0.0 source-map-js: 1.0.2 - dev: true - /postgres@3.3.5: - resolution: {integrity: sha512-+JD93VELV9gHkqpV5gdL5/70HdGtEw4/XE1S4BC8f1mcPmdib3K5XsKVbnR1XcAyC41zOnifJ+9YRKxdIsXiUw==} - dev: false + postgres@3.3.5: {} - /prebuild-install@7.1.1: - resolution: {integrity: sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==} - engines: {node: '>=10'} - hasBin: true + prebuild-install@7.1.1: dependencies: detect-libc: 2.0.2 expand-template: 2.0.3 @@ -11225,94 +13727,53 @@ packages: simple-get: 4.0.1 tar-fs: 2.1.1 tunnel-agent: 0.6.0 - dev: false - /preferred-pm@3.0.3: - resolution: {integrity: sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ==} - engines: {node: '>=10'} + preferred-pm@3.0.3: dependencies: find-up: 5.0.0 find-yarn-workspace-root2: 1.2.16 path-exists: 4.0.0 which-pm: 2.0.0 - dev: true - /prelude-ls@1.1.2: - resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} - engines: {node: '>= 0.8.0'} - dev: true + prelude-ls@1.1.2: {} - /prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} - dev: true + prelude-ls@1.2.1: {} - /prettier-plugin-solidity@1.3.1(prettier@3.2.5): - resolution: {integrity: sha512-MN4OP5I2gHAzHZG1wcuJl0FsLS3c4Cc5494bbg+6oQWBPuEamjwDvmGfFMZ6NFzsh3Efd9UUxeT7ImgjNH4ozA==} - engines: {node: '>=16'} - peerDependencies: - prettier: '>=2.3.0' + prettier-plugin-solidity@1.3.1(prettier@3.2.5): dependencies: '@solidity-parser/parser': 0.17.0 prettier: 3.2.5 semver: 7.6.0 solidity-comments-extractor: 0.0.8 - /prettier@1.19.1: - resolution: {integrity: sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==} - engines: {node: '>=4'} - hasBin: true - requiresBuild: true - dev: true + prettier@1.19.1: optional: true - /prettier@2.8.4: - resolution: {integrity: sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==} - engines: {node: '>=10.13.0'} - hasBin: true - dev: true + prettier@2.8.4: {} - /prettier@3.2.5: - resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} - engines: {node: '>=14'} - hasBin: true + prettier@3.2.5: {} - /pretty-format@27.5.1: - resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + pretty-format@27.5.1: dependencies: ansi-regex: 5.0.1 ansi-styles: 5.2.0 react-is: 17.0.2 - dev: true - /pretty-format@29.5.0: - resolution: {integrity: sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + pretty-format@29.5.0: dependencies: '@jest/schemas': 29.4.3 ansi-styles: 5.2.0 react-is: 18.2.0 - dev: true - /process-nextick-args@2.0.1: - resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - dev: false + process-nextick-args@2.0.1: {} - /process-warning@2.2.0: - resolution: {integrity: sha512-/1WZ8+VQjR6avWOgHeEPd7SDQmFQ1B5mC1eRXsCm5TarlNmx/wCsa5GEaxGm05BORRtyG/Ex/3xq3TuRvq57qg==} - dev: false + process-warning@2.2.0: {} - /process@0.11.10: - resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} - engines: {node: '>= 0.6.0'} - dev: false + process@0.11.10: {} - /progress@2.0.3: - resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} - engines: {node: '>=0.4.0'} - dev: true + progress@2.0.3: {} +<<<<<<< HEAD /prom-client@15.1.2: resolution: {integrity: sha512-on3h1iXb04QFLLThrmVYg1SChBQ9N1c+nKAjebBjokBqipddH3uxmOUcEkTnzmJ8Jh/5TSUnUqS40i2QB2dJHQ==} engines: {node: ^16 || ^18 || >=20} @@ -11329,35 +13790,27 @@ packages: bluebird: optional: true dev: false +======= + promise-inflight@1.0.1: {} +>>>>>>> d2ee83450 (feat: update pnpm and node version) - /promise-retry@2.0.1: - resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} - engines: {node: '>=10'} + promise-retry@2.0.1: dependencies: err-code: 2.0.3 retry: 0.12.0 - dev: false - /prompts@2.4.2: - resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} - engines: {node: '>= 6'} + prompts@2.4.2: dependencies: kleur: 3.0.3 sisteransi: 1.0.5 - dev: true - /prop-types@15.8.1: - resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + prop-types@15.8.1: dependencies: loose-envify: 1.4.0 object-assign: 4.1.1 react-is: 16.13.1 - dev: true - /protobufjs@6.11.3: - resolution: {integrity: sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg==} - hasBin: true - requiresBuild: true + protobufjs@6.11.3: dependencies: '@protobufjs/aspromise': 1.1.2 '@protobufjs/base64': 1.1.2 @@ -11372,12 +13825,8 @@ packages: '@types/long': 4.0.2 '@types/node': 18.15.11 long: 4.0.0 - dev: true - /protobufjs@7.2.3: - resolution: {integrity: sha512-TtpvOqwB5Gdz/PQmOjgsrGH1nHjAQVCN7JG4A6r1sXRWESL5rNMAiRcBQlCAdKxZcAbstExQePYG8xof/JVRgg==} - engines: {node: '>=12.0.0'} - requiresBuild: true + protobufjs@7.2.3: dependencies: '@protobufjs/aspromise': 1.1.2 '@protobufjs/base64': 1.1.2 @@ -11391,216 +13840,140 @@ packages: '@protobufjs/utf8': 1.1.0 '@types/node': 18.15.11 long: 5.2.1 - dev: false - /proxy-addr@2.0.7: - resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} - engines: {node: '>= 0.10'} + proxy-addr@2.0.7: dependencies: forwarded: 0.2.0 ipaddr.js: 1.9.1 - dev: false - /proxy-deep@3.1.1: - resolution: {integrity: sha512-kppbvLUNJ4IOMZds9/4gz/rtT5OFiesy3XosLsgMKlF3vb6GA5Y3ptyDlzKLcOcUBW+zaY+RiMINTsgE+O6e+Q==} - dev: false + proxy-deep@3.1.1: {} - /pseudomap@1.0.2: - resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} - dev: true + pseudomap@1.0.2: {} - /psl@1.9.0: - resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} - dev: true + psl@1.9.0: {} - /pump@3.0.0: - resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} + pump@3.0.0: dependencies: end-of-stream: 1.4.4 once: 1.4.0 - /pumpify@2.0.1: - resolution: {integrity: sha512-m7KOje7jZxrmutanlkS1daj1dS6z6BgslzOXmcSEpIlCxM3VJH7lG5QLeck/6hgF6F4crFf01UtQmNsJfweTAw==} + pumpify@2.0.1: dependencies: duplexify: 4.1.2 inherits: 2.0.4 pump: 3.0.0 - dev: false +<<<<<<< HEAD /punycode@2.3.0: resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} engines: {node: '>=6'} +======= + punycode@2.1.1: {} - /pure-rand@6.0.1: - resolution: {integrity: sha512-t+x1zEHDjBwkDGY5v5ApnZ/utcd4XYDiJsaQQoptTXgUXX95sDg1elCdJghzicm7n2mbCBJ3uYWr6M22SO19rg==} - dev: true + punycode@2.3.0: {} +>>>>>>> 1175edcf0 (feat: update pnpm and node version) - /querystringify@2.2.0: - resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} - dev: true + pure-rand@6.0.1: {} - /queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + querystringify@2.2.0: {} - /quick-format-unescaped@4.0.4: - resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} - dev: false + queue-microtask@1.2.3: {} - /quick-lru@4.0.1: - resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} - engines: {node: '>=8'} - dev: true + quick-format-unescaped@4.0.4: {} - /randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + quick-lru@4.0.1: {} + + randombytes@2.1.0: dependencies: safe-buffer: 5.2.1 - dev: true - /raw-body@2.5.2: - resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} - engines: {node: '>= 0.8'} + raw-body@2.5.2: dependencies: bytes: 3.1.2 http-errors: 2.0.0 iconv-lite: 0.4.24 unpipe: 1.0.0 - dev: true - /rc@1.2.8: - resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} - hasBin: true + rc@1.2.8: dependencies: deep-extend: 0.6.0 ini: 1.3.8 minimist: 1.2.8 strip-json-comments: 2.0.1 - dev: false - /react-dom@18.2.0(react@18.2.0): - resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} - peerDependencies: - react: ^18.2.0 + react-dom@18.2.0(react@18.2.0): dependencies: loose-envify: 1.4.0 react: 18.2.0 scheduler: 0.23.0 - dev: false - /react-error-boundary@3.1.4(react@18.2.0): - resolution: {integrity: sha512-uM9uPzZJTF6wRQORmSrvOIgt4lJ9MC1sNgEOj2XGsDTRE4kmpWxg7ENK9EWNKJRMAOY9z0MuF4yIfl6gp4sotA==} - engines: {node: '>=10', npm: '>=6'} - peerDependencies: - react: '>=16.13.1' + react-error-boundary@3.1.4(react@18.2.0): dependencies: '@babel/runtime': 7.21.0 react: 18.2.0 - dev: true - /react-is@16.13.1: - resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} - dev: true + react-is@16.13.1: {} - /react-is@17.0.2: - resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} - dev: true + react-is@17.0.2: {} - /react-is@18.2.0: - resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} - dev: true + react-is@18.2.0: {} - /react-refresh@0.14.0: - resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==} - engines: {node: '>=0.10.0'} - dev: true + react-refresh@0.14.0: {} - /react-router-dom@6.11.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-Q3mK1c/CYoF++J6ZINz7EZzwlgSOZK/kc7lxIA7PhtWhKju4KfF1WHqlx0kVCIFJAWztuYVpXZeljEbds8z4Og==} - engines: {node: '>=14'} - peerDependencies: - react: '>=16.8' - react-dom: '>=16.8' + react-router-dom@6.11.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: '@remix-run/router': 1.6.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) react-router: 6.11.0(react@18.2.0) - dev: false - /react-router@6.11.0(react@18.2.0): - resolution: {integrity: sha512-hTm6KKNpj9SDG4syIWRjCU219O0RZY8RUPobCFt9p+PlF7nnkRgMoh2DieTKvw3F3Mw6zg565HGnSv8BuoY5oQ==} - engines: {node: '>=14'} - peerDependencies: - react: '>=16.8' + react-router@6.11.0(react@18.2.0): dependencies: '@remix-run/router': 1.6.0 react: 18.2.0 - dev: false - /react-shallow-renderer@16.15.0(react@18.2.0): - resolution: {integrity: sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==} - peerDependencies: - react: ^16.0.0 || ^17.0.0 || ^18.0.0 + react-shallow-renderer@16.15.0(react@18.2.0): dependencies: object-assign: 4.1.1 react: 18.2.0 react-is: 18.2.0 - dev: true - /react-test-renderer@18.2.0(react@18.2.0): - resolution: {integrity: sha512-JWD+aQ0lh2gvh4NM3bBM42Kx+XybOxCpgYK7F8ugAlpaTSnWsX+39Z4XkOykGZAHrjwwTZT3x3KxswVWxHPUqA==} - peerDependencies: - react: ^18.2.0 + react-test-renderer@18.2.0(react@18.2.0): dependencies: react: 18.2.0 react-is: 18.2.0 react-shallow-renderer: 16.15.0(react@18.2.0) scheduler: 0.23.0 - dev: true - /react@18.2.0: - resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} - engines: {node: '>=0.10.0'} + react@18.2.0: dependencies: loose-envify: 1.4.0 - /read-cache@1.0.0: - resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + read-cache@1.0.0: dependencies: pify: 2.3.0 - dev: true - /read-pkg-up@7.0.1: - resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} - engines: {node: '>=8'} + read-pkg-up@7.0.1: dependencies: find-up: 4.1.0 read-pkg: 5.2.0 type-fest: 0.8.1 - dev: true - /read-pkg@5.2.0: - resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} - engines: {node: '>=8'} + read-pkg@5.2.0: dependencies: '@types/normalize-package-data': 2.4.1 normalize-package-data: 2.5.0 parse-json: 5.2.0 type-fest: 0.6.0 - dev: true - /read-yaml-file@1.1.0: - resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} - engines: {node: '>=6'} + read-yaml-file@1.1.0: dependencies: graceful-fs: 4.2.11 js-yaml: 3.14.1 pify: 4.0.1 strip-bom: 3.0.0 - dev: true - /readable-stream@2.3.8: - resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + readable-stream@2.3.8: dependencies: core-util-is: 1.0.3 inherits: 2.0.4 @@ -11609,450 +13982,266 @@ packages: safe-buffer: 5.1.2 string_decoder: 1.1.1 util-deprecate: 1.0.2 - dev: false - /readable-stream@3.6.0: - resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} - engines: {node: '>= 6'} + readable-stream@3.6.0: dependencies: inherits: 2.0.4 string_decoder: 1.3.0 util-deprecate: 1.0.2 - /readable-stream@4.4.2: - resolution: {integrity: sha512-Lk/fICSyIhodxy1IDK2HazkeGjSmezAWX2egdtJnYhtzKEsBPJowlI6F6LPb5tqIQILrMbx22S5o3GuJavPusA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + readable-stream@4.4.2: dependencies: abort-controller: 3.0.0 buffer: 6.0.3 events: 3.3.0 process: 0.11.10 string_decoder: 1.3.0 - dev: false - /readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} + readdirp@3.6.0: dependencies: picomatch: 2.3.1 - /real-require@0.2.0: - resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} - engines: {node: '>= 12.13.0'} - dev: false + real-require@0.2.0: {} - /redent@3.0.0: - resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} - engines: {node: '>=8'} + redent@3.0.0: dependencies: indent-string: 4.0.0 strip-indent: 3.0.0 - dev: true - /regenerator-runtime@0.11.1: - resolution: {integrity: sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==} - dev: false + regenerator-runtime@0.11.1: {} - /regenerator-runtime@0.13.11: - resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + regenerator-runtime@0.13.11: {} - /regexp.prototype.flags@1.4.3: - resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} - engines: {node: '>= 0.4'} + regexp.prototype.flags@1.4.3: dependencies: call-bind: 1.0.2 define-properties: 1.1.4 functions-have-names: 1.2.3 - dev: true - /regexpp@2.0.1: - resolution: {integrity: sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==} - engines: {node: '>=6.5.0'} - dev: true + regexpp@2.0.1: {} - /require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} + require-directory@2.1.1: {} - /require-from-string@2.0.2: - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} - engines: {node: '>=0.10.0'} + require-from-string@2.0.2: {} - /require-main-filename@2.0.0: - resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} + require-main-filename@2.0.0: {} - /requires-port@1.0.0: - resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} - dev: true + requires-port@1.0.0: {} - /resolve-cwd@3.0.0: - resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} - engines: {node: '>=8'} + resolve-cwd@3.0.0: dependencies: resolve-from: 5.0.0 - dev: true - /resolve-from@3.0.0: - resolution: {integrity: sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==} - engines: {node: '>=4'} - dev: true + resolve-from@3.0.0: {} - /resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - dev: true + resolve-from@4.0.0: {} - /resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - dev: true + resolve-from@5.0.0: {} - /resolve.exports@2.0.2: - resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} - engines: {node: '>=10'} - dev: true + resolve.exports@2.0.2: {} - /resolve@1.17.0: - resolution: {integrity: sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==} + resolve@1.17.0: dependencies: path-parse: 1.0.7 - dev: true - /resolve@1.22.2: - resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} - hasBin: true + resolve@1.22.2: dependencies: is-core-module: 2.12.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - dev: true - /resolve@2.0.0-next.4: - resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==} - hasBin: true + resolve@2.0.0-next.4: dependencies: is-core-module: 2.12.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - dev: true - /restore-cursor@2.0.0: - resolution: {integrity: sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==} - engines: {node: '>=4'} + restore-cursor@2.0.0: dependencies: onetime: 2.0.1 signal-exit: 3.0.7 - dev: true - /restore-cursor@3.1.0: - resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} - engines: {node: '>=8'} + restore-cursor@3.1.0: dependencies: onetime: 5.1.2 signal-exit: 3.0.7 - dev: false - /ret@0.2.2: - resolution: {integrity: sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==} - engines: {node: '>=4'} - dev: false + ret@0.2.2: {} - /retry@0.12.0: - resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} - engines: {node: '>= 4'} - dev: false + retry@0.12.0: {} - /retry@0.13.1: - resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} - engines: {node: '>= 4'} - dev: false + retry@0.13.1: {} - /reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + reusify@1.0.4: {} - /rfdc@1.3.0: - resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} - dev: false + rfdc@1.3.0: {} - /rimraf@2.6.3: - resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} - hasBin: true + rimraf@2.6.3: dependencies: glob: 7.2.3 - dev: true - /rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - hasBin: true + rimraf@3.0.2: dependencies: glob: 7.2.3 - /ripemd160@2.0.2: - resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} + ripemd160@2.0.2: dependencies: hash-base: 3.1.0 inherits: 2.0.4 - dev: true - /rlp@2.2.7: - resolution: {integrity: sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==} - hasBin: true + rlp@2.2.7: dependencies: bn.js: 5.2.1 - dev: true - /rollup@3.21.8: - resolution: {integrity: sha512-SSFV2T2fWtQ/vvBip85u2Nr0GNKireabH9d7nXswBg+XSH+jbVDSYptRAEbCEsquhs503rpPA9POYAp0/Jhasw==} - engines: {node: '>=14.18.0', npm: '>=8.0.0'} - hasBin: true + rollup@3.21.8: optionalDependencies: fsevents: 2.3.3 - dev: true - /rrweb-cssom@0.6.0: - resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} - dev: true + rrweb-cssom@0.6.0: {} - /run-async@2.4.1: - resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} - engines: {node: '>=0.12.0'} + run-async@2.4.1: {} - /run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 - /rxjs@6.6.7: - resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==} - engines: {npm: '>=2.0.0'} + rxjs@6.6.7: dependencies: tslib: 1.14.1 - /rxjs@7.5.5: - resolution: {integrity: sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==} + rxjs@7.5.5: dependencies: tslib: 2.5.0 - dev: false - /rxjs@7.8.1: - resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} + rxjs@7.8.1: dependencies: +<<<<<<< HEAD tslib: 2.6.2 dev: true +======= + tslib: 2.5.0 +>>>>>>> 1175edcf0 (feat: update pnpm and node version) - /safe-buffer@5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - dev: false + safe-buffer@5.1.2: {} - /safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + safe-buffer@5.2.1: {} - /safe-regex-test@1.0.0: - resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} + safe-regex-test@1.0.0: dependencies: call-bind: 1.0.2 get-intrinsic: 1.1.3 is-regex: 1.1.4 - dev: true - /safe-regex2@2.0.0: - resolution: {integrity: sha512-PaUSFsUaNNuKwkBijoAPHAK6/eM6VirvyPWlZ7BAQy4D+hCvh4B6lIG+nPdhbFfIbP+gTGBcrdsOaUs0F+ZBOQ==} + safe-regex2@2.0.0: dependencies: ret: 0.2.2 - dev: false - /safe-stable-stringify@2.4.3: - resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==} - engines: {node: '>=10'} - dev: false + safe-stable-stringify@2.4.3: {} - /safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + safer-buffer@2.1.2: {} - /saxes@6.0.0: - resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} - engines: {node: '>=v12.22.7'} + saxes@6.0.0: dependencies: xmlchars: 2.2.0 - dev: true - /scheduler@0.23.0: - resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} + scheduler@0.23.0: dependencies: loose-envify: 1.4.0 - /scrypt-js@3.0.1: - resolution: {integrity: sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==} + scrypt-js@3.0.1: {} - /secp256k1@4.0.3: - resolution: {integrity: sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==} - engines: {node: '>=10.0.0'} - requiresBuild: true + secp256k1@4.0.3: dependencies: elliptic: 6.5.4 node-addon-api: 2.0.2 node-gyp-build: 4.8.0 - dev: true - - /secure-json-parse@2.7.0: - resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} - dev: false - /semver-compare@1.0.0: - resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==} - dev: true + secure-json-parse@2.7.0: {} - /semver@5.7.1: - resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} - hasBin: true - dev: true + semver-compare@1.0.0: {} - /semver@6.3.0: - resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} - hasBin: true - dev: true + semver@5.7.1: {} - /semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} - hasBin: true - dev: true + semver@6.3.0: {} - /semver@7.5.0: - resolution: {integrity: sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==} - engines: {node: '>=10'} - hasBin: true + semver@7.5.0: dependencies: lru-cache: 6.0.0 - /semver@7.6.0: - resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} - engines: {node: '>=10'} - hasBin: true + semver@7.6.0: dependencies: lru-cache: 6.0.0 - /serialize-javascript@6.0.0: - resolution: {integrity: sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==} + serialize-javascript@6.0.0: dependencies: randombytes: 2.1.0 - dev: true - /set-blocking@2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + set-blocking@2.0.0: {} - /set-cookie-parser@2.6.0: - resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} - dev: false + set-cookie-parser@2.6.0: {} - /setimmediate@1.0.5: - resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} - dev: true + setimmediate@1.0.5: {} - /setprototypeof@1.2.0: - resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + setprototypeof@1.2.0: {} - /sha.js@2.4.11: - resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} - hasBin: true + sha.js@2.4.11: dependencies: inherits: 2.0.4 safe-buffer: 5.2.1 - dev: true - /shebang-command@1.2.0: - resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} - engines: {node: '>=0.10.0'} + shebang-command@1.2.0: dependencies: shebang-regex: 1.0.0 - dev: true - /shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} + shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 - /shebang-regex@1.0.0: - resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} - engines: {node: '>=0.10.0'} - dev: true + shebang-regex@1.0.0: {} - /shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} + shebang-regex@3.0.0: {} - /shell-quote@1.8.1: - resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} - dev: true + shell-quote@1.8.1: {} - /side-channel@1.0.4: - resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + side-channel@1.0.4: dependencies: call-bind: 1.0.2 get-intrinsic: 1.1.3 object-inspect: 1.12.2 - dev: true - /siginfo@2.0.0: - resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} - dev: true + siginfo@2.0.0: {} - /signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + signal-exit@3.0.7: {} - /simple-concat@1.0.1: - resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} - dev: false + simple-concat@1.0.1: {} - /simple-get@4.0.1: - resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} + simple-get@4.0.1: dependencies: decompress-response: 6.0.0 once: 1.4.0 simple-concat: 1.0.1 - dev: false - /sisteransi@1.0.5: - resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - dev: true + sisteransi@1.0.5: {} - /slash@3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} + slash@3.0.0: {} - /slice-ansi@0.0.4: - resolution: {integrity: sha512-up04hB2hR92PgjpyU3y/eg91yIBILyjVY26NvvciY3EVVPjybkMszMpXQ9QAkcS3I5rtJBDLoTxxg+qvW8c7rw==} - engines: {node: '>=0.10.0'} - dev: true + slice-ansi@0.0.4: {} - /slice-ansi@2.1.0: - resolution: {integrity: sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==} - engines: {node: '>=6'} + slice-ansi@2.1.0: dependencies: ansi-styles: 3.2.1 astral-regex: 1.0.0 is-fullwidth-code-point: 2.0.0 - dev: true - /slice-ansi@4.0.0: - resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} - engines: {node: '>=10'} + slice-ansi@4.0.0: dependencies: ansi-styles: 4.3.0 astral-regex: 2.0.0 is-fullwidth-code-point: 3.0.0 - dev: false - /smart-buffer@4.2.0: - resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} - engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} - dev: false + smart-buffer@4.2.0: {} - /smartwrap@2.0.2: - resolution: {integrity: sha512-vCsKNQxb7PnCNd2wY1WClWifAc2lwqsG8OaswpJkVJsvMGcnEntdTCDajZCkk93Ay1U3t/9puJmb525Rg5MZBA==} - engines: {node: '>=6'} - hasBin: true + smartwrap@2.0.2: dependencies: array.prototype.flat: 1.3.1 breakword: 1.0.6 @@ -12060,31 +14249,21 @@ packages: strip-ansi: 6.0.1 wcwidth: 1.0.1 yargs: 15.4.1 - dev: true - /socks-proxy-agent@7.0.0: - resolution: {integrity: sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==} - engines: {node: '>= 10'} + socks-proxy-agent@7.0.0: dependencies: agent-base: 6.0.2 debug: 4.3.4(supports-color@8.1.1) socks: 2.7.1 transitivePeerDependencies: - supports-color - dev: false - /socks@2.7.1: - resolution: {integrity: sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==} - engines: {node: '>= 10.13.0', npm: '>= 3.0.0'} + socks@2.7.1: dependencies: ip: 2.0.0 smart-buffer: 4.2.0 - dev: false - /solc@0.7.3(debug@4.3.4): - resolution: {integrity: sha512-GAsWNAjGzIDg7VxzP6mPjdurby3IkGCjQcM8GFYZT6RyaoUZKmMU6Y7YwG+tFGhv7dwZ8rmR4iwFDrrD99JwqA==} - engines: {node: '>=8.0.0'} - hasBin: true + solc@0.7.3(debug@4.3.4): dependencies: command-exists: 1.2.9 commander: 3.0.2 @@ -12097,11 +14276,8 @@ packages: tmp: 0.0.33 transitivePeerDependencies: - debug - dev: true - /solhint@3.3.7: - resolution: {integrity: sha512-NjjjVmXI3ehKkb3aNtRJWw55SUVJ8HMKKodwe0HnejA+k0d2kmhw7jvpa+MCTbcEgt8IWSwx0Hu6aCo/iYOZzQ==} - hasBin: true + solhint@3.3.7: dependencies: '@solidity-parser/parser': 0.14.5 ajv: 6.12.6 @@ -12121,196 +14297,121 @@ packages: prettier: 1.19.1 transitivePeerDependencies: - supports-color - dev: true - /solidity-comments-extractor@0.0.8: - resolution: {integrity: sha512-htM7Vn6LhHreR+EglVMd2s+sZhcXAirB1Zlyrv5zBuTxieCvjfnRpd7iZk75m/u6NOlEyQ94C6TWbBn2cY7w8g==} + solidity-comments-extractor@0.0.8: {} - /sonic-boom@3.3.0: - resolution: {integrity: sha512-LYxp34KlZ1a2Jb8ZQgFCK3niIHzibdwtwNUWKg0qQRzsDoJ3Gfgkf8KdBTFU3SkejDEIlWwnSnpVdOZIhFMl/g==} + sonic-boom@3.3.0: dependencies: atomic-sleep: 1.0.0 - dev: false - /source-map-js@1.0.2: - resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} - engines: {node: '>=0.10.0'} - dev: true + source-map-js@1.0.2: {} - /source-map-support@0.5.13: - resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} + source-map-support@0.5.13: dependencies: buffer-from: 1.1.2 source-map: 0.6.1 - dev: true - /source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + source-map-support@0.5.21: dependencies: buffer-from: 1.1.2 source-map: 0.6.1 - dev: true - /source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} + source-map@0.6.1: {} - /source-map@0.8.0-beta.0: - resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} - engines: {node: '>= 8'} + source-map@0.8.0-beta.0: dependencies: whatwg-url: 7.1.0 - dev: true - /spawn-command@0.0.2: - resolution: {integrity: sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==} - dev: true + spawn-command@0.0.2: {} - /spawndamnit@2.0.0: - resolution: {integrity: sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA==} + spawndamnit@2.0.0: dependencies: cross-spawn: 5.1.0 signal-exit: 3.0.7 - dev: true - /spdx-correct@3.2.0: - resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + spdx-correct@3.2.0: dependencies: spdx-expression-parse: 3.0.1 spdx-license-ids: 3.0.13 - dev: true - /spdx-exceptions@2.3.0: - resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} - dev: true + spdx-exceptions@2.3.0: {} - /spdx-expression-parse@3.0.1: - resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + spdx-expression-parse@3.0.1: dependencies: spdx-exceptions: 2.3.0 spdx-license-ids: 3.0.13 - dev: true - /spdx-license-ids@3.0.13: - resolution: {integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==} - dev: true + spdx-license-ids@3.0.13: {} - /split2@3.2.2: - resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==} + split2@3.2.2: dependencies: readable-stream: 3.6.0 - dev: true - /split2@4.2.0: - resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} - engines: {node: '>= 10.x'} - dev: false + split2@4.2.0: {} - /sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - dev: true + sprintf-js@1.0.3: {} - /sql.js@1.8.0: - resolution: {integrity: sha512-3HD8pSkZL+5YvYUI8nlvNILs61ALqq34xgmF+BHpqxe68yZIJ1H+sIVIODvni25+CcxHUxDyrTJUL0lE/m7afw==} - dev: false + sql.js@1.8.0: {} - /ssri@9.0.1: - resolution: {integrity: sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + ssri@9.0.1: dependencies: minipass: 3.3.6 - dev: false - /stack-utils@2.0.6: - resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} - engines: {node: '>=10'} + stack-utils@2.0.6: dependencies: escape-string-regexp: 2.0.0 - dev: true - /stackback@0.0.2: - resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} - dev: true + stackback@0.0.2: {} - /stacktrace-parser@0.1.10: - resolution: {integrity: sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==} - engines: {node: '>=6'} + stacktrace-parser@0.1.10: dependencies: type-fest: 0.7.1 - dev: true - /statuses@1.5.0: - resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} - engines: {node: '>= 0.6'} - dev: false + statuses@1.5.0: {} - /statuses@2.0.1: - resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} - engines: {node: '>= 0.8'} + statuses@2.0.1: {} - /std-env@3.7.0: - resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} - dev: true + std-env@3.7.0: {} - /stream-shift@1.0.1: - resolution: {integrity: sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==} - dev: false + stream-shift@1.0.1: {} - /stream-to-array@2.3.0: - resolution: {integrity: sha512-UsZtOYEn4tWU2RGLOXr/o/xjRBftZRlG3dEWoaHr8j4GuypJ3isitGbVyjQKAuMu+xbiop8q224TjiZWc4XTZA==} + stream-to-array@2.3.0: dependencies: any-promise: 1.3.0 - dev: false - /stream-transform@2.1.3: - resolution: {integrity: sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ==} + stream-transform@2.1.3: dependencies: mixme: 0.5.9 - dev: true - /string-length@4.0.2: - resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} - engines: {node: '>=10'} + string-length@4.0.2: dependencies: char-regex: 1.0.2 strip-ansi: 6.0.1 - dev: true - /string-width@1.0.2: - resolution: {integrity: sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==} - engines: {node: '>=0.10.0'} + string-width@1.0.2: dependencies: code-point-at: 1.1.0 is-fullwidth-code-point: 1.0.0 strip-ansi: 3.0.1 - dev: true - /string-width@2.1.1: - resolution: {integrity: sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==} - engines: {node: '>=4'} + string-width@2.1.1: dependencies: is-fullwidth-code-point: 2.0.0 strip-ansi: 4.0.0 - dev: true - /string-width@3.1.0: - resolution: {integrity: sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==} - engines: {node: '>=6'} + string-width@3.1.0: dependencies: emoji-regex: 7.0.3 is-fullwidth-code-point: 2.0.0 strip-ansi: 5.2.0 - /string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} + string-width@4.2.3: dependencies: emoji-regex: 8.0.0 is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 - /string.prototype.matchall@4.0.8: - resolution: {integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==} + string.prototype.matchall@4.0.8: dependencies: call-bind: 1.0.2 define-properties: 1.1.4 @@ -12320,123 +14421,76 @@ packages: internal-slot: 1.0.3 regexp.prototype.flags: 1.4.3 side-channel: 1.0.4 - dev: true - /string.prototype.trimend@1.0.6: - resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} + string.prototype.trimend@1.0.6: dependencies: call-bind: 1.0.2 define-properties: 1.1.4 es-abstract: 1.20.5 - dev: true - /string.prototype.trimstart@1.0.6: - resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} + string.prototype.trimstart@1.0.6: dependencies: call-bind: 1.0.2 define-properties: 1.1.4 es-abstract: 1.20.5 - dev: true - /string_decoder@1.1.1: - resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + string_decoder@1.1.1: dependencies: safe-buffer: 5.1.2 - dev: false - /string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + string_decoder@1.3.0: dependencies: safe-buffer: 5.2.1 - /stringcase@4.3.1: - resolution: {integrity: sha512-Ov7McNX1sFaEX9NWijD1hIOVDDhKdnFzN9tvoa1N8xgrclouhsO4kBPVrTPhjO/zP5mn1Ww03uZ2SThNMXS7zg==} - engines: {node: '>=8', npm: '>=5'} - dev: false + stringcase@4.3.1: {} - /stringify-object@3.3.0: - resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==} - engines: {node: '>=4'} + stringify-object@3.3.0: dependencies: get-own-enumerable-property-symbols: 3.0.2 is-obj: 1.0.1 is-regexp: 1.0.0 - dev: true - /strip-ansi@3.0.1: - resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==} - engines: {node: '>=0.10.0'} + strip-ansi@3.0.1: dependencies: ansi-regex: 2.1.1 - dev: true - /strip-ansi@4.0.0: - resolution: {integrity: sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==} - engines: {node: '>=4'} + strip-ansi@4.0.0: dependencies: ansi-regex: 3.0.1 - dev: true - /strip-ansi@5.2.0: - resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} - engines: {node: '>=6'} + strip-ansi@5.2.0: dependencies: ansi-regex: 4.1.1 - /strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} + strip-ansi@6.0.1: dependencies: ansi-regex: 5.0.1 - /strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} - dev: true + strip-bom@3.0.0: {} - /strip-bom@4.0.0: - resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} - engines: {node: '>=8'} - dev: true + strip-bom@4.0.0: {} - /strip-final-newline@2.0.0: - resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} - engines: {node: '>=6'} + strip-final-newline@2.0.0: {} - /strip-final-newline@3.0.0: - resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} - engines: {node: '>=12'} - dev: true + strip-final-newline@3.0.0: {} - /strip-hex-prefix@1.0.0: - resolution: {integrity: sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==} - engines: {node: '>=6.5.0', npm: '>=3'} + strip-hex-prefix@1.0.0: dependencies: is-hex-prefixed: 1.0.0 - dev: true - /strip-indent@3.0.0: - resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} - engines: {node: '>=8'} + strip-indent@3.0.0: dependencies: min-indent: 1.0.1 - dev: true - /strip-json-comments@2.0.1: - resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} - engines: {node: '>=0.10.0'} + strip-json-comments@2.0.1: {} - /strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - dev: true + strip-json-comments@3.1.1: {} - /strip-literal@1.3.0: - resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==} + strip-literal@1.3.0: dependencies: acorn: 8.11.3 - dev: true +<<<<<<< HEAD /strnum@1.0.5: resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} dev: false @@ -12445,6 +14499,9 @@ packages: resolution: {integrity: sha512-ydQOU34rpSyj2TGyz4D2p8rbktIOZ8QY9s+DGLvFU1i5pWJE8vkpruCjGCMHsdXwnD7JDcS+noSwM/a7zyNFDQ==} engines: {node: '>=8'} hasBin: true +======= + sucrase@3.32.0: +>>>>>>> 1175edcf0 (feat: update pnpm and node version) dependencies: '@jridgewell/gen-mapping': 0.3.3 commander: 4.1.1 @@ -12453,82 +14510,49 @@ packages: mz: 2.7.0 pirates: 4.0.5 ts-interface-checker: 0.1.13 - dev: true - /superjson@1.12.4: - resolution: {integrity: sha512-vkpPQAxdCg9SLfPv5GPC5fnGrui/WryktoN9O5+Zif/14QIMjw+RITf/5LbBh+9QpBFb3KNvJth+puz2H8o6GQ==} - engines: {node: '>=10'} + superjson@1.12.4: dependencies: copy-anything: 3.0.5 - dev: false - /supports-color@2.0.0: - resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==} - engines: {node: '>=0.8.0'} - dev: true + supports-color@2.0.0: {} - /supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} + supports-color@5.5.0: dependencies: has-flag: 3.0.0 - dev: true - /supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} + supports-color@7.2.0: dependencies: has-flag: 4.0.0 - /supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} + supports-color@8.1.1: dependencies: has-flag: 4.0.0 - /supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - dev: true + supports-preserve-symlinks-flag@1.0.0: {} - /symbol-observable@1.2.0: - resolution: {integrity: sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==} - engines: {node: '>=0.10.0'} - dev: true + symbol-observable@1.2.0: {} - /symbol-tree@3.2.4: - resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} - dev: true + symbol-tree@3.2.4: {} - /table@5.4.6: - resolution: {integrity: sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==} - engines: {node: '>=6.0.0'} + table@5.4.6: dependencies: ajv: 6.12.6 lodash: 4.17.21 slice-ansi: 2.1.0 string-width: 3.1.0 - dev: true - /table@6.8.1: - resolution: {integrity: sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==} - engines: {node: '>=10.0.0'} + table@6.8.1: dependencies: ajv: 8.12.0 lodash.truncate: 4.4.2 slice-ansi: 4.0.0 string-width: 4.2.3 strip-ansi: 6.0.1 - dev: false - /tailwind-merge@1.12.0: - resolution: {integrity: sha512-Y17eDp7FtN1+JJ4OY0Bqv9OA41O+MS8c1Iyr3T6JFLnOgLg3EvcyMKZAnQ8AGyvB5Nxm3t9Xb5Mhe139m8QT/g==} - dev: false + tailwind-merge@1.12.0: {} - /tailwindcss@3.3.2: - resolution: {integrity: sha512-9jPkMiIBXvPc2KywkraqsUfbfj+dHDb+JPWtSJa9MLFdrPyazI7q6WX2sUrm7R9eVR7qqv3Pas7EvQFzxKnI6w==} - engines: {node: '>=14.0.0'} - hasBin: true + tailwindcss@3.3.2: dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -12555,31 +14579,23 @@ packages: sucrase: 3.32.0 transitivePeerDependencies: - ts-node - dev: true - /tar-fs@2.1.1: - resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} + tar-fs@2.1.1: dependencies: chownr: 1.1.4 mkdirp-classic: 0.5.3 pump: 3.0.0 tar-stream: 2.2.0 - dev: false - /tar-stream@2.2.0: - resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} - engines: {node: '>=6'} + tar-stream@2.2.0: dependencies: bl: 4.1.0 end-of-stream: 1.4.4 fs-constants: 1.0.0 inherits: 2.0.4 readable-stream: 3.6.0 - dev: false - /tar@6.2.0: - resolution: {integrity: sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==} - engines: {node: '>=10'} + tar@6.2.0: dependencies: chownr: 2.0.0 fs-minipass: 2.1.0 @@ -12587,8 +14603,8 @@ packages: minizlib: 2.1.2 mkdirp: 1.0.4 yallist: 4.0.0 - dev: false +<<<<<<< HEAD /tdigest@0.1.2: resolution: {integrity: sha512-+G0LLgjjo9BZX2MfdvPfH+MKLCrxlXSYec5DaPYP1fe6Iyhf0/fSmJ0bFiZ1F8BT6cGXl2LpltQptzjXKWEkKA==} dependencies: @@ -12599,208 +14615,111 @@ packages: resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} engines: {node: '>=8'} dev: true +======= + term-size@2.2.1: {} +>>>>>>> d2ee83450 (feat: update pnpm and node version) - /test-exclude@6.0.0: - resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} - engines: {node: '>=8'} + test-exclude@6.0.0: dependencies: '@istanbuljs/schema': 0.1.3 glob: 7.2.3 minimatch: 3.1.2 - dev: true - /text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - dev: true + text-table@0.2.0: {} - /thenify-all@1.6.0: - resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} - engines: {node: '>=0.8'} + thenify-all@1.6.0: dependencies: thenify: 3.3.1 - dev: true - /thenify@3.3.1: - resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + thenify@3.3.1: dependencies: any-promise: 1.3.0 - dev: true - /thread-stream@2.3.0: - resolution: {integrity: sha512-kaDqm1DET9pp3NXwR8382WHbnpXnRkN9xGN9dQt3B2+dmXiW8X1SOwmFOxAErEQ47ObhZ96J6yhZNXuyCOL7KA==} + thread-stream@2.3.0: dependencies: real-require: 0.2.0 - dev: false - /throttle-debounce@5.0.0: - resolution: {integrity: sha512-2iQTSgkkc1Zyk0MeVrt/3BvuOXYPl/R8Z0U2xxo9rjwNciaHDG3R+Lm6dh4EeUci49DanvBnuqI6jshoQQRGEg==} - engines: {node: '>=12.22'} - dev: false + throttle-debounce@5.0.0: {} - /through2@2.0.5: - resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} + through2@2.0.5: dependencies: readable-stream: 2.3.8 xtend: 4.0.2 - dev: false - /through2@4.0.2: - resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==} + through2@4.0.2: dependencies: readable-stream: 3.6.0 - dev: true - /through@2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + through@2.3.8: {} - /timers-ext@0.1.7: - resolution: {integrity: sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==} + timers-ext@0.1.7: dependencies: es5-ext: 0.10.62 next-tick: 1.1.0 - dev: false - /tiny-lru@11.0.1: - resolution: {integrity: sha512-iNgFugVuQgBKrqeO/mpiTTgmBsTP0WL6yeuLfLs/Ctf0pI/ixGqIRm8sDCwMcXGe9WWvt2sGXI5mNqZbValmJg==} - engines: {node: '>=12'} - dev: false + tiny-lru@11.0.1: {} - /tinybench@2.6.0: - resolution: {integrity: sha512-N8hW3PG/3aOoZAN5V/NSAEDz0ZixDSSt5b/a05iqtpgfLWMSVuCo7w0k2vVvEjdrIoeGqZzweX2WlyioNIHchA==} - dev: true + tinybench@2.6.0: {} - /tinypool@0.7.0: - resolution: {integrity: sha512-zSYNUlYSMhJ6Zdou4cJwo/p7w5nmAH17GRfU/ui3ctvjXFErXXkruT4MWW6poDeXgCaIBlGLrfU6TbTXxyGMww==} - engines: {node: '>=14.0.0'} - dev: true + tinypool@0.7.0: {} - /tinyspy@2.2.0: - resolution: {integrity: sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg==} - engines: {node: '>=14.0.0'} - dev: true + tinyspy@2.2.0: {} - /tmp@0.0.33: - resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} - engines: {node: '>=0.6.0'} + tmp@0.0.33: dependencies: os-tmpdir: 1.0.2 - /tmpl@1.0.5: - resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} - dev: true + tmpl@1.0.5: {} - /to-fast-properties@2.0.0: - resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} - engines: {node: '>=4'} - dev: true + to-fast-properties@2.0.0: {} - /to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} + to-regex-range@5.0.1: dependencies: is-number: 7.0.0 - /toidentifier@1.0.1: - resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} - engines: {node: '>=0.6'} + toidentifier@1.0.1: {} - /toposort@2.0.2: - resolution: {integrity: sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==} - dev: false + toposort@2.0.2: {} - /tough-cookie@4.1.3: - resolution: {integrity: sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==} - engines: {node: '>=6'} + tough-cookie@4.1.3: dependencies: psl: 1.9.0 punycode: 2.3.0 universalify: 0.2.0 url-parse: 1.5.10 - dev: true - /tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - dev: false + tr46@0.0.3: {} - /tr46@1.0.1: - resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} + tr46@1.0.1: dependencies: punycode: 2.3.0 - dev: true - /tr46@4.1.1: - resolution: {integrity: sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==} - engines: {node: '>=14'} + tr46@4.1.1: dependencies: punycode: 2.3.0 - dev: true - /tree-kill@1.2.2: - resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} - hasBin: true - dev: true + tree-kill@1.2.2: {} - /treeify@1.1.0: - resolution: {integrity: sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==} - engines: {node: '>=0.6'} - dev: true + treeify@1.1.0: {} - /trim-newlines@3.0.1: - resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} - engines: {node: '>=8'} - dev: true + trim-newlines@3.0.1: {} - /trpc-koa-adapter@1.1.3(@trpc/server@10.34.0)(koa@2.14.2): - resolution: {integrity: sha512-2rdmVuuFGLMyrUtW6ktroAzBsp2fc8oFuOEhNAcroJBei3DPF/UISr9qAeQX4MUEi9FCT2+bi4pBPcm8HKj8PA==} - peerDependencies: - '@trpc/server': ^10.0.0-rc.4 - koa: '>=2.13.0' + trpc-koa-adapter@1.1.3(@trpc/server@10.34.0)(koa@2.14.2): dependencies: '@trpc/server': 10.34.0 koa: 2.14.2 - dev: false - /ts-api-utils@1.2.1(typescript@5.4.2): - resolution: {integrity: sha512-RIYA36cJn2WiH9Hy77hdF9r7oEwxAtB/TS9/S4Qd90Ap4z5FSiin5zEiTL44OII1Y3IIlEvxwxFUVgrHSZ/UpA==} - engines: {node: '>=16'} - peerDependencies: - typescript: '>=4.2.0' + ts-api-utils@1.2.1(typescript@5.4.2): dependencies: typescript: 5.4.2 - dev: true - /ts-error@1.0.6: - resolution: {integrity: sha512-tLJxacIQUM82IR7JO1UUkKlYuUTmoY9HBJAmNWFzheSlDS5SPMcNIepejHJa4BpPQLAcbRhRf3GDJzyj6rbKvA==} - dev: false + ts-error@1.0.6: {} - /ts-interface-checker@0.1.13: - resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - dev: true + ts-interface-checker@0.1.13: {} - /ts-jest@29.0.5(@babel/core@7.24.4)(esbuild@0.17.17)(jest@29.5.0)(typescript@5.4.2): - resolution: {integrity: sha512-PL3UciSgIpQ7f6XjVOmbi96vmDHUqAyqDr8YxzopDqX3kfgYtX1cuNeBjP+L9sFXi6nzsGGA6R3fP3DDDJyrxA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - '@babel/core': '>=7.0.0-beta.0 <8' - '@jest/types': ^29.0.0 - babel-jest: ^29.0.0 - esbuild: '*' - jest: ^29.0.0 - typescript: '>=4.3' - peerDependenciesMeta: - '@babel/core': - optional: true - '@jest/types': - optional: true - babel-jest: - optional: true - esbuild: - optional: true + ts-jest@29.0.5(@babel/core@7.21.4)(@jest/types@29.5.0)(babel-jest@29.5.0(@babel/core@7.21.4))(esbuild@0.17.17)(jest@29.5.0(@types/node@18.15.11))(typescript@5.4.2): dependencies: - '@babel/core': 7.24.4 bs-logger: 0.2.6 - esbuild: 0.17.17 fast-json-stable-stringify: 2.1.0 jest: 29.5.0(@types/node@18.15.11) jest-util: 29.5.0 @@ -12810,24 +14729,22 @@ packages: semver: 7.5.0 typescript: 5.4.2 yargs-parser: 21.1.1 - dev: true + optionalDependencies: + '@babel/core': 7.21.4 + '@jest/types': 29.5.0 + babel-jest: 29.5.0(@babel/core@7.21.4) + esbuild: 0.17.17 - /ts-poet@6.4.1: - resolution: {integrity: sha512-AjZEs4h2w4sDfwpHMxQKHrTlNh2wRbM5NRXmLz0RiH+yPGtSQFbe9hBpNocU8vqVNgfh0BIOiXR80xDz3kKxUQ==} + ts-poet@6.4.1: dependencies: dprint-node: 1.0.7 - dev: true - /ts-proto-descriptors@1.8.0: - resolution: {integrity: sha512-iV20plcI8+GRkeZIAygxOOH0p2xpOsKfw9kI1W20NCwawi1/4bG/YRd9rQY9XSJP+lD9j7XbSy3tFFuikfsljw==} + ts-proto-descriptors@1.8.0: dependencies: long: 4.0.0 protobufjs: 6.11.3 - dev: true - /ts-proto@1.146.0: - resolution: {integrity: sha512-OyBZRjmqqw+aatLEUbRooWO6VKTtOLJQyaQFMciigEZPNgTsWtApqHpQDtqDMQFWEXhIARqEV+B7ZJx8cljhZA==} - hasBin: true + ts-proto@1.146.0: dependencies: '@types/object-hash': 1.3.4 case-anything: 2.1.10 @@ -12836,42 +14753,25 @@ packages: protobufjs: 6.11.3 ts-poet: 6.4.1 ts-proto-descriptors: 1.8.0 - dev: true - /tslib@1.14.1: - resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + tslib@1.14.1: {} +<<<<<<< HEAD /tslib@2.5.0: resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} dev: false /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} +======= + tslib@2.5.0: {} +>>>>>>> 1175edcf0 (feat: update pnpm and node version) - /tsort@0.0.1: - resolution: {integrity: sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==} - dev: true + tsort@0.0.1: {} - /tsscmp@1.0.6: - resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==} - engines: {node: '>=0.6.x'} - dev: false + tsscmp@1.0.6: {} - /tsup@6.7.0(postcss@8.4.23)(typescript@5.4.2): - resolution: {integrity: sha512-L3o8hGkaHnu5TdJns+mCqFsDBo83bJ44rlK7e6VdanIvpea4ArPcU3swWGsLVbXak1PqQx/V+SSmFPujBK+zEQ==} - engines: {node: '>=14.18'} - hasBin: true - peerDependencies: - '@swc/core': ^1 - postcss: ^8.4.12 - typescript: '>=4.1.0' - peerDependenciesMeta: - '@swc/core': - optional: true - postcss: - optional: true - typescript: - optional: true + tsup@6.7.0(postcss@8.4.23)(typescript@5.4.2): dependencies: bundle-require: 4.0.1(esbuild@0.17.17) cac: 6.7.14 @@ -12881,34 +14781,28 @@ packages: execa: 5.1.1 globby: 11.1.0 joycon: 3.1.1 - postcss: 8.4.23 postcss-load-config: 3.1.4(postcss@8.4.23) resolve-from: 5.0.0 rollup: 3.21.8 source-map: 0.8.0-beta.0 sucrase: 3.32.0 tree-kill: 1.2.2 + optionalDependencies: + postcss: 8.4.23 typescript: 5.4.2 transitivePeerDependencies: - supports-color - ts-node - dev: true - /tsx@3.12.6: - resolution: {integrity: sha512-q93WgS3lBdHlPgS0h1i+87Pt6n9K/qULIMNYZo07nSeu2z5QE2CellcAZfofVXBo2tQg9av2ZcRMQ2S2i5oadQ==} - hasBin: true + tsx@3.12.6: dependencies: '@esbuild-kit/cjs-loader': 2.4.2 '@esbuild-kit/core-utils': 3.1.0 '@esbuild-kit/esm-loader': 2.5.5 optionalDependencies: fsevents: 2.3.3 - dev: true - /tty-table@4.2.1: - resolution: {integrity: sha512-xz0uKo+KakCQ+Dxj1D/tKn2FSyreSYWzdkL/BYhgN6oMW808g8QRMuh1atAV9fjTPbWBjfbkKQpI/5rEcnAc7g==} - engines: {node: '>=8.0.0'} - hasBin: true + tty-table@4.2.1: dependencies: chalk: 4.1.2 csv: 5.5.3 @@ -12916,67 +14810,36 @@ packages: smartwrap: 2.0.2 strip-ansi: 6.0.1 wcwidth: 1.0.1 +<<<<<<< HEAD yargs: 17.7.2 dev: true +======= + yargs: 17.7.1 +>>>>>>> 1175edcf0 (feat: update pnpm and node version) - /tunnel-agent@0.6.0: - resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + tunnel-agent@0.6.0: dependencies: safe-buffer: 5.2.1 - dev: false - /turbo-darwin-64@1.9.3: - resolution: {integrity: sha512-0dFc2cWXl82kRE4Z+QqPHhbEFEpUZho1msHXHWbz5+PqLxn8FY0lEVOHkq5tgKNNEd5KnGyj33gC/bHhpZOk5g==} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true + turbo-darwin-64@1.9.3: optional: true - /turbo-darwin-arm64@1.9.3: - resolution: {integrity: sha512-1cYbjqLBA2zYE1nbf/qVnEkrHa4PkJJbLo7hnuMuGM0bPzh4+AnTNe98gELhqI1mkTWBu/XAEeF5u6dgz0jLNA==} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true + turbo-darwin-arm64@1.9.3: optional: true - /turbo-linux-64@1.9.3: - resolution: {integrity: sha512-UuBPFefawEwpuxh5pM9Jqq3q4C8M0vYxVYlB3qea/nHQ80pxYq7ZcaLGEpb10SGnr3oMUUs1zZvkXWDNKCJb8Q==} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true + turbo-linux-64@1.9.3: optional: true - /turbo-linux-arm64@1.9.3: - resolution: {integrity: sha512-vUrNGa3hyDtRh9W0MkO+l1dzP8Co2gKnOVmlJQW0hdpOlWlIh22nHNGGlICg+xFa2f9j4PbQlWTsc22c019s8Q==} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true + turbo-linux-arm64@1.9.3: optional: true - /turbo-windows-64@1.9.3: - resolution: {integrity: sha512-0BZ7YaHs6r+K4ksqWus1GKK3W45DuDqlmfjm/yuUbTEVc8szmMCs12vugU2Zi5GdrdJSYfoKfEJ/PeegSLIQGQ==} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true + turbo-windows-64@1.9.3: optional: true - /turbo-windows-arm64@1.9.3: - resolution: {integrity: sha512-QJUYLSsxdXOsR1TquiOmLdAgtYcQ/RuSRpScGvnZb1hY0oLc7JWU0llkYB81wVtWs469y8H9O0cxbKwCZGR4RQ==} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true + turbo-windows-arm64@1.9.3: optional: true - /turbo@1.9.3: - resolution: {integrity: sha512-ID7mxmaLUPKG/hVkp+h0VuucB1U99RPCJD9cEuSEOdIPoSIuomcIClEJtKamUsdPLhLCud+BvapBNnhgh58Nzw==} - hasBin: true - requiresBuild: true + turbo@1.9.3: optionalDependencies: turbo-darwin-64: 1.9.3 turbo-darwin-arm64: 1.9.3 @@ -12984,206 +14847,111 @@ packages: turbo-linux-arm64: 1.9.3 turbo-windows-64: 1.9.3 turbo-windows-arm64: 1.9.3 - dev: true - /tweetnacl-util@0.15.1: - resolution: {integrity: sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==} - dev: true + tweetnacl-util@0.15.1: {} - /tweetnacl@1.0.3: - resolution: {integrity: sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==} - dev: true + tweetnacl@1.0.3: {} - /type-check@0.3.2: - resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} - engines: {node: '>= 0.8.0'} + type-check@0.3.2: dependencies: prelude-ls: 1.1.2 - dev: true - /type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} + type-check@0.4.0: dependencies: prelude-ls: 1.2.1 - dev: true - /type-detect@4.0.8: - resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} - engines: {node: '>=4'} - dev: true + type-detect@4.0.8: {} - /type-fest@0.13.1: - resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} - engines: {node: '>=10'} - dev: true + type-fest@0.13.1: {} - /type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - dev: true + type-fest@0.20.2: {} - /type-fest@0.21.3: - resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} - engines: {node: '>=10'} + type-fest@0.21.3: {} - /type-fest@0.6.0: - resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} - engines: {node: '>=8'} - dev: true + type-fest@0.6.0: {} - /type-fest@0.7.1: - resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} - engines: {node: '>=8'} - dev: true + type-fest@0.7.1: {} - /type-fest@0.8.1: - resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} - engines: {node: '>=8'} - dev: true + type-fest@0.8.1: {} - /type-fest@2.14.0: - resolution: {integrity: sha512-hQnTQkFjL5ik6HF2fTAM8ycbr94UbQXK364wF930VHb0dfBJ5JBP8qwrR8TaK9zwUEk7meruo2JAUDMwvuxd/w==} - engines: {node: '>=12.20'} - dev: true + type-fest@2.14.0: {} - /type-is@1.6.18: - resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} - engines: {node: '>= 0.6'} + type-is@1.6.18: dependencies: media-typer: 0.3.0 mime-types: 2.1.35 - dev: false - /type@1.2.0: - resolution: {integrity: sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==} - dev: false + type@1.2.0: {} - /type@2.7.2: - resolution: {integrity: sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==} - dev: false + type@2.7.2: {} - /typescript@5.4.2: - resolution: {integrity: sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==} - engines: {node: '>=14.17'} - hasBin: true + typescript@5.4.2: {} - /ufo@1.3.2: - resolution: {integrity: sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==} - dev: true + ufo@1.3.2: {} - /uglify-js@3.17.4: - resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==} - engines: {node: '>=0.8.0'} - hasBin: true - requiresBuild: true - dev: false + uglify-js@3.17.4: optional: true - /unbox-primitive@1.0.2: - resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + unbox-primitive@1.0.2: dependencies: call-bind: 1.0.2 has-bigints: 1.0.2 has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 - dev: true - /undici@5.28.3: - resolution: {integrity: sha512-3ItfzbrhDlINjaP0duwnNsKpDQk3acHI3gVJ1z4fmwMK31k5G9OVIAMLSIaP6w4FaGkaAkN6zaQO9LUvZ1t7VA==} - engines: {node: '>=14.0'} + undici@5.28.3: dependencies: '@fastify/busboy': 2.1.1 - dev: true - /unique-filename@2.0.1: - resolution: {integrity: sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + unique-filename@2.0.1: dependencies: unique-slug: 3.0.0 - dev: false - /unique-slug@3.0.0: - resolution: {integrity: sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + unique-slug@3.0.0: dependencies: imurmurhash: 0.1.4 - dev: false - /universalify@0.1.2: - resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} - engines: {node: '>= 4.0.0'} - dev: true + universalify@0.1.2: {} - /universalify@0.2.0: - resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} - engines: {node: '>= 4.0.0'} - dev: true + universalify@0.2.0: {} - /unpipe@1.0.0: - resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} - engines: {node: '>= 0.8'} - dev: true + unpipe@1.0.0: {} - /update-browserslist-db@1.0.13(browserslist@4.23.0): - resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' + update-browserslist-db@1.0.10(browserslist@4.21.5): dependencies: - browserslist: 4.23.0 - escalade: 3.1.2 + browserslist: 4.21.5 + escalade: 3.1.1 picocolors: 1.0.0 - dev: true - /uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + uri-js@4.4.1: dependencies: punycode: 2.3.0 - /url-parse@1.5.10: - resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} + url-parse@1.5.10: dependencies: querystringify: 2.2.0 requires-port: 1.0.0 - dev: true - /use-local-storage-state@18.3.2(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-JiTuQsJmmKvc0mH0hiSjaTkKFlwtwXTeOlJ+cdg7rRJzZWwv+s/Rr2S2r2NR68O0W5ogwwt1MX1y+P2wQ1lY4w==} - engines: {node: '>=12'} - peerDependencies: - react: '>=18' - react-dom: '>=18' + use-local-storage-state@18.3.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - dev: false - /use-sync-external-store@1.2.0(react@18.2.0): - resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 + use-sync-external-store@1.2.0(react@18.2.0): dependencies: react: 18.2.0 - dev: false - /utf8@3.0.0: - resolution: {integrity: sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==} - dev: true + utf8@3.0.0: {} - /util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + util-deprecate@1.0.2: {} - /util@0.10.4: - resolution: {integrity: sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==} + util@0.10.4: dependencies: inherits: 2.0.3 - dev: false - /uuid@8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} - hasBin: true + uuid@8.3.2: {} +<<<<<<< HEAD /uuid@9.0.1: resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} hasBin: true @@ -13192,31 +14960,22 @@ packages: /v8-to-istanbul@9.1.0: resolution: {integrity: sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==} engines: {node: '>=10.12.0'} +======= + v8-to-istanbul@9.1.0: +>>>>>>> 1175edcf0 (feat: update pnpm and node version) dependencies: '@jridgewell/trace-mapping': 0.3.18 '@types/istanbul-lib-coverage': 2.0.4 convert-source-map: 1.9.0 - dev: true - /validate-npm-package-license@3.0.4: - resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + validate-npm-package-license@3.0.4: dependencies: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - dev: true - /vary@1.1.2: - resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} - engines: {node: '>= 0.8'} - dev: false + vary@1.1.2: {} - /viem@2.9.20(typescript@5.4.2)(zod@3.21.4): - resolution: {integrity: sha512-PHb1MrBHMrSZ8Ayuk3Y/6wUTcMbzlACQaM6AJBSv9kRKX3xYSZ/kehi+gvS0swQJeAlTQ4eZM7jsHQJNAOarmg==} - peerDependencies: - typescript: '>=5.0.4' - peerDependenciesMeta: - typescript: - optional: true + viem@2.9.20(typescript@5.4.2)(zod@3.21.4): dependencies: '@adraffy/ens-normalize': 1.10.0 '@noble/curves': 1.2.0 @@ -13225,98 +14984,41 @@ packages: '@scure/bip39': 1.2.1 abitype: 1.0.0(typescript@5.4.2)(zod@3.21.4) isows: 1.0.3(ws@8.13.0) - typescript: 5.4.2 ws: 8.13.0 + optionalDependencies: + typescript: 5.4.2 transitivePeerDependencies: - bufferutil - utf-8-validate - zod - dev: false - /vite-node@0.34.6(@types/node@18.15.11): - resolution: {integrity: sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA==} - engines: {node: '>=v14.18.0'} - hasBin: true + vite-node@0.34.6(@types/node@18.15.11): dependencies: - cac: 6.7.14 - debug: 4.3.4(supports-color@8.1.1) - mlly: 1.5.0 - pathe: 1.1.2 - picocolors: 1.0.0 - vite: 4.3.6(@types/node@18.15.11) - transitivePeerDependencies: - - '@types/node' - - less - - sass - - stylus - - sugarss - - supports-color - - terser - dev: true - - /vite@4.3.6(@types/node@18.15.11): - resolution: {integrity: sha512-cqIyLSbA6gornMS659AXTVKF7cvSHMdKmJJwQ9DXq3lwsT1uZSdktuBRlpHQ8VnOWx0QHtjDwxPpGtyo9Fh/Qg==} - engines: {node: ^14.18.0 || >=16.0.0} - hasBin: true - peerDependencies: - '@types/node': '>= 14' - less: '*' - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true + cac: 6.7.14 + debug: 4.3.4(supports-color@8.1.1) + mlly: 1.5.0 + pathe: 1.1.2 + picocolors: 1.0.0 + vite: 4.3.6(@types/node@18.15.11) + transitivePeerDependencies: + - '@types/node' + - less + - sass + - stylus + - sugarss + - supports-color + - terser + + vite@4.3.6(@types/node@18.15.11): dependencies: - '@types/node': 18.15.11 esbuild: 0.17.17 postcss: 8.4.23 rollup: 3.21.8 optionalDependencies: + '@types/node': 18.15.11 fsevents: 2.3.3 - dev: true - /vitest@0.34.6(jsdom@22.1.0): - resolution: {integrity: sha512-+5CALsOvbNKnS+ZHMXtuUC7nL8/7F1F2DnHGjSsszX8zCjWSSviphCb/NuS9Nzf4Q03KyyDRBAXhF/8lffME4Q==} - engines: {node: '>=v14.18.0'} - hasBin: true - peerDependencies: - '@edge-runtime/vm': '*' - '@vitest/browser': '*' - '@vitest/ui': '*' - happy-dom: '*' - jsdom: '*' - playwright: '*' - safaridriver: '*' - webdriverio: '*' - peerDependenciesMeta: - '@edge-runtime/vm': - optional: true - '@vitest/browser': - optional: true - '@vitest/ui': - optional: true - happy-dom: - optional: true - jsdom: - optional: true - playwright: - optional: true - safaridriver: - optional: true - webdriverio: - optional: true + vitest@0.34.6(jsdom@22.1.0): dependencies: '@types/chai': 4.3.5 '@types/chai-subset': 1.3.3 @@ -13331,7 +15033,6 @@ packages: cac: 6.7.14 chai: 4.4.1 debug: 4.3.4(supports-color@8.1.1) - jsdom: 22.1.0 local-pkg: 0.4.3 magic-string: 0.30.5 pathe: 1.1.2 @@ -13343,6 +15044,8 @@ packages: vite: 4.3.6(@types/node@18.15.11) vite-node: 0.34.6(@types/node@18.15.11) why-is-node-running: 2.2.2 + optionalDependencies: + jsdom: 22.1.0 transitivePeerDependencies: - less - sass @@ -13350,30 +15053,20 @@ packages: - sugarss - supports-color - terser - dev: true - /w3c-xmlserializer@4.0.0: - resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} - engines: {node: '>=14'} + w3c-xmlserializer@4.0.0: dependencies: xml-name-validator: 4.0.0 - dev: true - /walker@1.0.8: - resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + walker@1.0.8: dependencies: makeerror: 1.0.12 - dev: true - /wcwidth@1.0.1: - resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + wcwidth@1.0.1: dependencies: defaults: 1.0.4 - dev: true - /web3-utils@1.10.4: - resolution: {integrity: sha512-tsu8FiKJLk2PzhDl9fXbGUWTkkVXYhtTA+SmEFkKft+9BgwLxfCRpU96sWv7ICC8zixBNd3JURVoiR3dUXgP8A==} - engines: {node: '>=8.0.0'} + web3-utils@1.10.4: dependencies: '@ethereumjs/util': 8.1.0 bn.js: 5.2.1 @@ -13383,293 +15076,164 @@ packages: number-to-bn: 1.7.0 randombytes: 2.1.0 utf8: 3.0.0 - dev: true - /webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - dev: false + webidl-conversions@3.0.1: {} - /webidl-conversions@4.0.2: - resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} - dev: true + webidl-conversions@4.0.2: {} - /webidl-conversions@7.0.0: - resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} - engines: {node: '>=12'} - dev: true + webidl-conversions@7.0.0: {} - /whatwg-encoding@2.0.0: - resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} - engines: {node: '>=12'} + whatwg-encoding@2.0.0: dependencies: iconv-lite: 0.6.3 - dev: true - /whatwg-mimetype@3.0.0: - resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} - engines: {node: '>=12'} - dev: true + whatwg-mimetype@3.0.0: {} - /whatwg-url@12.0.1: - resolution: {integrity: sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==} - engines: {node: '>=14'} + whatwg-url@12.0.1: dependencies: tr46: 4.1.1 webidl-conversions: 7.0.0 - dev: true - /whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + whatwg-url@5.0.0: dependencies: tr46: 0.0.3 webidl-conversions: 3.0.1 - dev: false - /whatwg-url@7.1.0: - resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} + whatwg-url@7.1.0: dependencies: lodash.sortby: 4.7.0 tr46: 1.0.1 webidl-conversions: 4.0.2 - dev: true - /which-boxed-primitive@1.0.2: - resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + which-boxed-primitive@1.0.2: dependencies: is-bigint: 1.0.4 is-boolean-object: 1.1.2 is-number-object: 1.0.7 is-string: 1.0.7 is-symbol: 1.0.4 - dev: true - /which-module@2.0.0: - resolution: {integrity: sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==} + which-module@2.0.0: {} - /which-pm@2.0.0: - resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==} - engines: {node: '>=8.15'} + which-pm@2.0.0: dependencies: load-yaml-file: 0.2.0 path-exists: 4.0.0 - dev: true - /which@1.3.1: - resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} - hasBin: true + which@1.3.1: dependencies: isexe: 2.0.0 - dev: true - /which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true + which@2.0.2: dependencies: isexe: 2.0.0 - /why-is-node-running@2.2.2: - resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} - engines: {node: '>=8'} - hasBin: true + why-is-node-running@2.2.2: dependencies: siginfo: 2.0.0 stackback: 0.0.2 - dev: true - /wide-align@1.1.5: - resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} + wide-align@1.1.5: dependencies: string-width: 4.2.3 - dev: false - /widest-line@3.1.0: - resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==} - engines: {node: '>=8'} + widest-line@3.1.0: dependencies: string-width: 4.2.3 - dev: true - /word-wrap@1.2.3: - resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} - engines: {node: '>=0.10.0'} - dev: true + word-wrap@1.2.3: {} - /wordwrap@1.0.0: - resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} - dev: false + wordwrap@1.0.0: {} - /workerpool@6.2.1: - resolution: {integrity: sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==} - dev: true + workerpool@6.2.1: {} - /wrap-ansi@3.0.1: - resolution: {integrity: sha512-iXR3tDXpbnTpzjKSylUJRkLuOrEC7hwEB221cgn6wtF8wpmz28puFXAEfPT5zrjM3wahygB//VuWEr1vTkDcNQ==} - engines: {node: '>=4'} + wrap-ansi@3.0.1: dependencies: string-width: 2.1.1 strip-ansi: 4.0.0 - dev: true - /wrap-ansi@5.1.0: - resolution: {integrity: sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==} - engines: {node: '>=6'} + wrap-ansi@5.1.0: dependencies: ansi-styles: 3.2.1 string-width: 3.1.0 strip-ansi: 5.2.0 - dev: false - /wrap-ansi@6.2.0: - resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} - engines: {node: '>=8'} + wrap-ansi@6.2.0: dependencies: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 - dev: true - /wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} + wrap-ansi@7.0.0: dependencies: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 - /wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + wrappy@1.0.2: {} - /write-file-atomic@4.0.2: - resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + write-file-atomic@4.0.2: dependencies: imurmurhash: 0.1.4 signal-exit: 3.0.7 - dev: true - /write@1.0.3: - resolution: {integrity: sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==} - engines: {node: '>=4'} + write@1.0.3: dependencies: mkdirp: 0.5.6 - dev: true - /ws@7.4.6: - resolution: {integrity: sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==} - engines: {node: '>=8.3.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true + ws@7.4.6: {} - /ws@8.13.0: - resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true + ws@8.13.0: {} - /xml-name-validator@4.0.0: - resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} - engines: {node: '>=12'} - dev: true + xml-name-validator@4.0.0: {} - /xmlchars@2.2.0: - resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} - dev: true + xmlchars@2.2.0: {} - /xtend@4.0.2: - resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} - engines: {node: '>=0.4'} - dev: false + xtend@4.0.2: {} - /y18n@4.0.3: - resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} + y18n@4.0.3: {} - /y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} + y18n@5.0.8: {} - /yallist@2.1.2: - resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} - dev: true + yallist@2.1.2: {} - /yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - dev: true + yallist@3.1.1: {} - /yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + yallist@4.0.0: {} - /yaml@1.10.2: - resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} - engines: {node: '>= 6'} - dev: true + yaml@1.10.2: {} - /yaml@2.2.2: - resolution: {integrity: sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA==} - engines: {node: '>= 14'} - dev: true + yaml@2.2.2: {} - /yargs-interactive@3.0.1: - resolution: {integrity: sha512-Jnp88uiuz+ZRpM10Lwvs0nRetWPog+6lcgQrhwKsyEanAe3wgTlaPPzcYlZWp53aOMTzOcR5wEpEsFOMOPmLlw==} - engines: {node: '>=8', npm: '>=6'} + yargs-interactive@3.0.1: dependencies: inquirer: 7.3.3 yargs: 14.2.3 - dev: false - /yargs-parser@15.0.3: - resolution: {integrity: sha512-/MVEVjTXy/cGAjdtQf8dW3V9b97bPN7rNn8ETj6BmAQL7ibC7O1Q9SPJbGjgh3SlwoBNXMzj/ZGIj8mBgl12YA==} + yargs-parser@15.0.3: dependencies: camelcase: 5.3.1 decamelize: 1.2.0 - dev: false - /yargs-parser@18.1.3: - resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} - engines: {node: '>=6'} + yargs-parser@18.1.3: dependencies: camelcase: 5.3.1 decamelize: 1.2.0 - dev: true - /yargs-parser@20.2.4: - resolution: {integrity: sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==} - engines: {node: '>=10'} - dev: true + yargs-parser@20.2.4: {} - /yargs-parser@20.2.9: - resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} - engines: {node: '>=10'} - dev: true + yargs-parser@20.2.9: {} - /yargs-parser@21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} - engines: {node: '>=12'} + yargs-parser@21.1.1: {} - /yargs-unparser@2.0.0: - resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==} - engines: {node: '>=10'} + yargs-unparser@2.0.0: dependencies: camelcase: 6.3.0 decamelize: 4.0.0 flat: 5.0.2 is-plain-obj: 2.1.0 - dev: true - /yargs@14.2.3: - resolution: {integrity: sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg==} + yargs@14.2.3: dependencies: cliui: 5.0.0 decamelize: 1.2.0 @@ -13682,11 +15246,8 @@ packages: which-module: 2.0.0 y18n: 4.0.3 yargs-parser: 15.0.3 - dev: false - /yargs@15.4.1: - resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} - engines: {node: '>=8'} + yargs@15.4.1: dependencies: cliui: 6.0.0 decamelize: 1.2.0 @@ -13699,11 +15260,8 @@ packages: which-module: 2.0.0 y18n: 4.0.3 yargs-parser: 18.1.3 - dev: true - /yargs@16.2.0: - resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} - engines: {node: '>=10'} + yargs@16.2.0: dependencies: cliui: 7.0.4 escalade: 3.1.1 @@ -13712,11 +15270,8 @@ packages: string-width: 4.2.3 y18n: 5.0.8 yargs-parser: 20.2.9 - dev: true - /yargs@17.7.1: - resolution: {integrity: sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==} - engines: {node: '>=12'} + yargs@17.7.1: dependencies: cliui: 8.0.1 escalade: 3.1.1 @@ -13727,9 +15282,7 @@ packages: yargs-parser: 21.1.1 dev: false - /yargs@17.7.2: - resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} - engines: {node: '>=12'} + yargs@17.7.2: dependencies: cliui: 8.0.1 escalade: 3.1.1 @@ -13738,80 +15291,21 @@ packages: string-width: 4.2.3 y18n: 5.0.8 yargs-parser: 21.1.1 - dev: true - /ylru@1.3.2: - resolution: {integrity: sha512-RXRJzMiK6U2ye0BlGGZnmpwJDPgakn6aNQ0A7gHRbD4I0uvK4TW6UqkK1V0pp9jskjJBAXd3dRrbzWkqJ+6cxA==} - engines: {node: '>= 4.0.0'} - dev: false + ylru@1.3.2: {} - /yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} + yocto-queue@0.1.0: {} - /yocto-queue@1.0.0: - resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} - engines: {node: '>=12.20'} - dev: true + yocto-queue@1.0.0: {} - /zod-validation-error@1.3.0(zod@3.21.4): - resolution: {integrity: sha512-4WoQnuWnj06kwKR4A+cykRxFmy+CTvwMQO5ogTXLiVx1AuvYYmMjixh7sbkSsQTr1Fvtss6d5kVz8PGeMPUQjQ==} - engines: {node: '>=16.0.0'} - peerDependencies: - zod: ^3.18.0 + zod-validation-error@1.3.0(zod@3.21.4): dependencies: zod: 3.21.4 - dev: false - /zod@3.21.4: - resolution: {integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==} - dev: false + zod@3.21.4: {} - /zustand@4.3.7(react@18.2.0): - resolution: {integrity: sha512-dY8ERwB9Nd21ellgkBZFhudER8KVlelZm8388B5nDAXhO/+FZDhYMuRnqDgu5SYyRgz/iaf8RKnbUs/cHfOGlQ==} - engines: {node: '>=12.7.0'} - peerDependencies: - immer: '>=9.0' - react: '>=16.8' - peerDependenciesMeta: - immer: - optional: true - react: - optional: true + zustand@4.3.7(react@18.2.0): dependencies: - react: 18.2.0 use-sync-external-store: 1.2.0(react@18.2.0) - dev: false - - github.com/dapphub/ds-test/e282159d5170298eb2455a6c05280ab5a73a4ef0: - resolution: {tarball: https://codeload.github.com/dapphub/ds-test/tar.gz/e282159d5170298eb2455a6c05280ab5a73a4ef0} - name: ds-test - version: 1.0.0 - - github.com/foundry-rs/forge-std/74cfb77e308dd188d2f58864aaf44963ae6b88b1: - resolution: {tarball: https://codeload.github.com/foundry-rs/forge-std/tar.gz/74cfb77e308dd188d2f58864aaf44963ae6b88b1} - name: forge-std - version: 1.6.0 - - github.com/holic/create-create-app/74376c59b48a04aabbe94d9cacfe9cb1cecccd63: - resolution: {tarball: https://codeload.github.com/holic/create-create-app/tar.gz/74376c59b48a04aabbe94d9cacfe9cb1cecccd63} - name: create-create-app - version: 7.3.0 - hasBin: true - dependencies: - '@types/yargs-interactive': 2.1.3 - chalk: 4.1.2 - cross-spawn: 7.0.3 - epicfail: 3.0.0 - execa: 5.1.1 - gitconfig: 2.0.8 - globby: 11.1.0 - handlebars: 4.7.7 - is-utf8: 0.2.1 - license.js: 3.1.2 - slash: 3.0.0 - uuid: 8.3.2 - yargs-interactive: 3.0.1 - transitivePeerDependencies: - - encoding - dev: false + optionalDependencies: + react: 18.2.0 From b99b8b72e62c28e92508413ca41204fb2594a7e3 Mon Sep 17 00:00:00 2001 From: Dhvani Patel Date: Tue, 9 Apr 2024 14:42:36 +0100 Subject: [PATCH 27/32] Revert "feat: update pnpm and node version" This reverts commit 76e6dbd250b98bc374c35b336a2a68fadb56baef. --- package.json | 4 +- pnpm-lock.yaml | 13849 +++++++++++++++++++++-------------------------- 2 files changed, 6199 insertions(+), 7654 deletions(-) diff --git a/package.json b/package.json index 081504ef74..2f96976993 100644 --- a/package.json +++ b/package.json @@ -57,7 +57,7 @@ "typescript": "5.4.2" }, "engines": { - "node": "20.x", - "pnpm": "9.x" + "node": "18.x", + "pnpm": "8.x" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5faa172cb1..826b955231 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,4 +1,4 @@ -lockfileVersion: '9.0' +lockfileVersion: '6.0' settings: autoInstallPeers: true @@ -22,7 +22,7 @@ importers: version: 18.15.11 '@typescript-eslint/eslint-plugin': specifier: 7.1.1 - version: 7.1.1(@typescript-eslint/parser@7.1.1(eslint@8.57.0)(typescript@5.4.2))(eslint@8.57.0)(typescript@5.4.2) + version: 7.1.1(@typescript-eslint/parser@7.1.1)(eslint@8.57.0)(typescript@5.4.2) '@typescript-eslint/parser': specifier: 7.1.1 version: 7.1.1(eslint@8.57.0)(typescript@5.4.2) @@ -144,7 +144,7 @@ importers: version: 0.15.0(google-protobuf@3.21.2) '@improbable-eng/grpc-web-node-http-transport': specifier: ^0.15.0 - version: 0.15.0(@improbable-eng/grpc-web@0.15.0(google-protobuf@3.21.2)) + version: 0.15.0(@improbable-eng/grpc-web@0.15.0) '@latticexyz/abi-ts': specifier: workspace:* version: link:../abi-ts @@ -271,10 +271,10 @@ importers: version: 17.0.23 ds-test: specifier: https://github.com/dapphub/ds-test.git#e282159d5170298eb2455a6c05280ab5a73a4ef0 - version: https://codeload.github.com/dapphub/ds-test/tar.gz/e282159d5170298eb2455a6c05280ab5a73a4ef0 + version: github.com/dapphub/ds-test/e282159d5170298eb2455a6c05280ab5a73a4ef0 forge-std: specifier: https://github.com/foundry-rs/forge-std.git#74cfb77e308dd188d2f58864aaf44963ae6b88b1 - version: https://codeload.github.com/foundry-rs/forge-std/tar.gz/74cfb77e308dd188d2f58864aaf44963ae6b88b1 + version: github.com/foundry-rs/forge-std/74cfb77e308dd188d2f58864aaf44963ae6b88b1 tsup: specifier: ^6.7.0 version: 6.7.0(postcss@8.4.23)(typescript@5.4.2) @@ -369,7 +369,7 @@ importers: dependencies: create-create-app: specifier: git+https://github.com/holic/create-create-app#74376c59b48a04aabbe94d9cacfe9cb1cecccd63 - version: https://codeload.github.com/holic/create-create-app/tar.gz/74376c59b48a04aabbe94d9cacfe9cb1cecccd63(encoding@0.1.13) + version: github.com/holic/create-create-app/74376c59b48a04aabbe94d9cacfe9cb1cecccd63 devDependencies: '@types/node': specifier: ^18.15.11 @@ -412,7 +412,7 @@ importers: version: 18.2.0(react@18.2.0) react-router-dom: specifier: ^6.11.0 - version: 6.11.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 6.11.0(react-dom@18.2.0)(react@18.2.0) rxjs: specifier: 7.5.5 version: 7.5.5 @@ -421,7 +421,7 @@ importers: version: 1.12.0 use-local-storage-state: specifier: ^18.3.2 - version: 18.3.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 18.3.2(react-dom@18.2.0)(react@18.2.0) viem: specifier: 2.9.20 version: 2.9.20(typescript@5.4.2)(zod@3.21.4) @@ -535,10 +535,10 @@ importers: version: 17.0.23 ds-test: specifier: https://github.com/dapphub/ds-test.git#e282159d5170298eb2455a6c05280ab5a73a4ef0 - version: https://codeload.github.com/dapphub/ds-test/tar.gz/e282159d5170298eb2455a6c05280ab5a73a4ef0 + version: github.com/dapphub/ds-test/e282159d5170298eb2455a6c05280ab5a73a4ef0 forge-std: specifier: https://github.com/foundry-rs/forge-std.git#74cfb77e308dd188d2f58864aaf44963ae6b88b1 - version: https://codeload.github.com/foundry-rs/forge-std/tar.gz/74cfb77e308dd188d2f58864aaf44963ae6b88b1 + version: github.com/foundry-rs/forge-std/74cfb77e308dd188d2f58864aaf44963ae6b88b1 tsup: specifier: ^6.7.0 version: 6.7.0(postcss@8.4.23)(typescript@5.4.2) @@ -553,17 +553,17 @@ importers: version: 3.2.0 ds-test: specifier: https://github.com/dapphub/ds-test.git#e282159d5170298eb2455a6c05280ab5a73a4ef0 - version: https://codeload.github.com/dapphub/ds-test/tar.gz/e282159d5170298eb2455a6c05280ab5a73a4ef0 + version: github.com/dapphub/ds-test/e282159d5170298eb2455a6c05280ab5a73a4ef0 forge-std: specifier: https://github.com/foundry-rs/forge-std.git#74cfb77e308dd188d2f58864aaf44963ae6b88b1 - version: https://codeload.github.com/foundry-rs/forge-std/tar.gz/74cfb77e308dd188d2f58864aaf44963ae6b88b1 + version: github.com/foundry-rs/forge-std/74cfb77e308dd188d2f58864aaf44963ae6b88b1 devDependencies: '@nomicfoundation/hardhat-chai-matchers': specifier: ^1.0.3 - version: 1.0.6(@nomiclabs/hardhat-ethers@2.2.3(ethers@5.7.2)(hardhat@2.22.0(typescript@5.4.2)))(chai@4.4.1)(ethers@5.7.2)(hardhat@2.22.0(typescript@5.4.2)) + version: 1.0.6(@nomiclabs/hardhat-ethers@2.2.3)(chai@4.4.1)(ethers@5.7.2)(hardhat@2.22.0) '@nomiclabs/hardhat-ethers': specifier: ^2.1.1 - version: 2.2.3(ethers@5.7.2)(hardhat@2.22.0(typescript@5.4.2)) + version: 2.2.3(ethers@5.7.2)(hardhat@2.22.0) '@types/chai': specifier: ^4.3.5 version: 4.3.5 @@ -667,13 +667,13 @@ importers: devDependencies: '@testing-library/react-hooks': specifier: ^8.0.1 - version: 8.0.1(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react-test-renderer@18.2.0(react@18.2.0))(react@18.2.0) + version: 8.0.1(@types/react@18.2.22)(react-test-renderer@18.2.0)(react@18.2.0) '@types/react': specifier: 18.2.22 version: 18.2.22 '@vitejs/plugin-react': specifier: ^4.0.0 - version: 4.0.0(vite@4.3.6(@types/node@18.15.11)) + version: 4.0.0(vite@4.3.6) eslint-plugin-react: specifier: 7.31.11 version: 7.31.11(eslint@8.57.0) @@ -722,7 +722,7 @@ importers: version: 29.5.0(@types/node@18.15.11) ts-jest: specifier: ^29.0.5 - version: 29.0.5(@babel/core@7.21.4)(@jest/types@29.5.0)(babel-jest@29.5.0(@babel/core@7.21.4))(esbuild@0.17.17)(jest@29.5.0(@types/node@18.15.11))(typescript@5.4.2) + version: 29.0.5(@babel/core@7.24.4)(esbuild@0.17.17)(jest@29.5.0)(typescript@5.4.2) tsup: specifier: ^6.7.0 version: 6.7.0(postcss@8.4.23)(typescript@5.4.2) @@ -744,10 +744,10 @@ importers: version: link:../gas-report ds-test: specifier: https://github.com/dapphub/ds-test.git#e282159d5170298eb2455a6c05280ab5a73a4ef0 - version: https://codeload.github.com/dapphub/ds-test/tar.gz/e282159d5170298eb2455a6c05280ab5a73a4ef0 + version: github.com/dapphub/ds-test/e282159d5170298eb2455a6c05280ab5a73a4ef0 forge-std: specifier: https://github.com/foundry-rs/forge-std.git#74cfb77e308dd188d2f58864aaf44963ae6b88b1 - version: https://codeload.github.com/foundry-rs/forge-std/tar.gz/74cfb77e308dd188d2f58864aaf44963ae6b88b1 + version: github.com/foundry-rs/forge-std/74cfb77e308dd188d2f58864aaf44963ae6b88b1 tsup: specifier: ^6.7.0 version: 6.7.0(postcss@8.4.23)(typescript@5.4.2) @@ -843,13 +843,13 @@ importers: version: 18.15.11 ds-test: specifier: https://github.com/dapphub/ds-test.git#e282159d5170298eb2455a6c05280ab5a73a4ef0 - version: https://codeload.github.com/dapphub/ds-test/tar.gz/e282159d5170298eb2455a6c05280ab5a73a4ef0 + version: github.com/dapphub/ds-test/e282159d5170298eb2455a6c05280ab5a73a4ef0 ejs: specifier: ^3.1.8 version: 3.1.8 forge-std: specifier: https://github.com/foundry-rs/forge-std.git#74cfb77e308dd188d2f58864aaf44963ae6b88b1 - version: https://codeload.github.com/foundry-rs/forge-std/tar.gz/74cfb77e308dd188d2f58864aaf44963ae6b88b1 + version: github.com/foundry-rs/forge-std/74cfb77e308dd188d2f58864aaf44963ae6b88b1 solhint: specifier: ^3.3.7 version: 3.3.7 @@ -915,7 +915,7 @@ importers: version: 16.0.3 drizzle-orm: specifier: ^0.28.5 - version: 0.28.5(@types/better-sqlite3@7.6.4)(@types/sql.js@1.4.4)(better-sqlite3@8.6.0)(kysely@0.26.3)(postgres@3.3.5)(sql.js@1.8.0) + version: 0.28.5(@types/better-sqlite3@7.6.4)(better-sqlite3@8.6.0)(postgres@3.3.5) koa: specifier: ^2.14.2 version: 2.14.2 @@ -1021,7 +1021,7 @@ importers: version: 4.3.4(supports-color@8.1.1) drizzle-orm: specifier: ^0.28.5 - version: 0.28.5(@types/better-sqlite3@7.6.4)(@types/sql.js@1.4.4)(better-sqlite3@8.6.0)(kysely@0.26.3)(postgres@3.3.5)(sql.js@1.8.0) + version: 0.28.5(@types/sql.js@1.4.4)(kysely@0.26.3)(postgres@3.3.5)(sql.js@1.8.0) fast-deep-equal: specifier: ^3.1.3 version: 3.1.3 @@ -1089,7 +1089,7 @@ importers: version: 29.5.0(@types/node@18.15.11) ts-jest: specifier: ^29.0.5 - version: 29.0.5(@babel/core@7.21.4)(@jest/types@29.5.0)(babel-jest@29.5.0(@babel/core@7.21.4))(esbuild@0.17.17)(jest@29.5.0(@types/node@18.15.11))(typescript@5.4.2) + version: 29.0.5(@babel/core@7.24.4)(esbuild@0.17.17)(jest@29.5.0)(typescript@5.4.2) tsup: specifier: ^6.7.0 version: 6.7.0(postcss@8.4.23)(typescript@5.4.2) @@ -1147,13 +1147,13 @@ importers: version: 18.15.11 ds-test: specifier: https://github.com/dapphub/ds-test.git#e282159d5170298eb2455a6c05280ab5a73a4ef0 - version: https://codeload.github.com/dapphub/ds-test/tar.gz/e282159d5170298eb2455a6c05280ab5a73a4ef0 + version: github.com/dapphub/ds-test/e282159d5170298eb2455a6c05280ab5a73a4ef0 ejs: specifier: ^3.1.8 version: 3.1.8 forge-std: specifier: https://github.com/foundry-rs/forge-std.git#74cfb77e308dd188d2f58864aaf44963ae6b88b1 - version: https://codeload.github.com/foundry-rs/forge-std/tar.gz/74cfb77e308dd188d2f58864aaf44963ae6b88b1 + version: github.com/foundry-rs/forge-std/74cfb77e308dd188d2f58864aaf44963ae6b88b1 glob: specifier: ^8.0.3 version: 8.0.3 @@ -1211,13 +1211,13 @@ importers: version: 18.15.11 ds-test: specifier: https://github.com/dapphub/ds-test.git#e282159d5170298eb2455a6c05280ab5a73a4ef0 - version: https://codeload.github.com/dapphub/ds-test/tar.gz/e282159d5170298eb2455a6c05280ab5a73a4ef0 + version: github.com/dapphub/ds-test/e282159d5170298eb2455a6c05280ab5a73a4ef0 ejs: specifier: ^3.1.8 version: 3.1.8 forge-std: specifier: https://github.com/foundry-rs/forge-std.git#74cfb77e308dd188d2f58864aaf44963ae6b88b1 - version: https://codeload.github.com/foundry-rs/forge-std/tar.gz/74cfb77e308dd188d2f58864aaf44963ae6b88b1 + version: github.com/foundry-rs/forge-std/74cfb77e308dd188d2f58864aaf44963ae6b88b1 glob: specifier: ^8.0.3 version: 8.0.3 @@ -1253,10 +1253,10 @@ importers: version: 16.0.3 ds-test: specifier: https://github.com/dapphub/ds-test.git#e282159d5170298eb2455a6c05280ab5a73a4ef0 - version: https://codeload.github.com/dapphub/ds-test/tar.gz/e282159d5170298eb2455a6c05280ab5a73a4ef0 + version: github.com/dapphub/ds-test/e282159d5170298eb2455a6c05280ab5a73a4ef0 forge-std: specifier: https://github.com/foundry-rs/forge-std.git#74cfb77e308dd188d2f58864aaf44963ae6b88b1 - version: https://codeload.github.com/foundry-rs/forge-std/tar.gz/74cfb77e308dd188d2f58864aaf44963ae6b88b1 + version: github.com/foundry-rs/forge-std/74cfb77e308dd188d2f58864aaf44963ae6b88b1 prettier: specifier: ^2.6.2 version: 2.8.4 @@ -1269,6016 +1269,41 @@ importers: packages: - '@aashutoshrathi/word-wrap@1.2.6': + /@aashutoshrathi/word-wrap@1.2.6: resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} engines: {node: '>=0.10.0'} + dev: true - '@adraffy/ens-normalize@1.10.0': - resolution: {integrity: sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q==} - - '@alloc/quick-lru@5.2.0': - resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} - engines: {node: '>=10'} - - '@ampproject/remapping@2.2.1': - resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} - engines: {node: '>=6.0.0'} - - '@arktype/attest@0.6.4': - resolution: {integrity: sha512-e0ZIITIany0UIpw2p1wiYKrqcK+iRvh9FLabVkWh/mhppm8n4jWPHyIut8OrURPWfB7Obd/cQ1Vu3DuchSfL7A==} - hasBin: true - peerDependencies: - typescript: '*' - - '@arktype/fs@0.0.11': - resolution: {integrity: sha512-f3p8apUMOTl6KlFNTrOX6twQJDeSdSmtYPVca7SaQjUUTAxfUlaROY1/i1C3y2llYDrrQBEbsggk8k2Oxxgrvw==} - - '@arktype/util@0.0.23': - resolution: {integrity: sha512-MwtDGjbgfXWxlExjIL78HvPlWOma1XFEcDd3VWuCPMt/f+3TR7fXyiGFNlIYZGOYdOIU7qgjaE8dmbd6jdJa3Q==} - - '@arktype/util@0.0.29': - resolution: {integrity: sha512-fDTBSVzxLj9k1ZjinkawmaQdcXFKMBVK8c+vqMPxwoa94mPMZxBo84yQcqyFVcIcWIkg6qQQmH1ozyT4nqFT/g==} - - '@babel/code-frame@7.21.4': - resolution: {integrity: sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==} - engines: {node: '>=6.9.0'} - - '@babel/compat-data@7.21.4': - resolution: {integrity: sha512-/DYyDpeCfaVinT40FPGdkkb+lYSKvsVuMjDAG7jPOWWiM1ibOaB9CXJAlc4d1QpP/U2q2P9jbrSlClKSErd55g==} - engines: {node: '>=6.9.0'} - - '@babel/core@7.21.4': - resolution: {integrity: sha512-qt/YV149Jman/6AfmlxJ04LMIu8bMoyl3RB91yTFrxQmgbrSvQMy7cI8Q62FHx1t8wJ8B5fu0UDoLwHAhUo1QA==} - engines: {node: '>=6.9.0'} - - '@babel/generator@7.21.4': - resolution: {integrity: sha512-NieM3pVIYW2SwGzKoqfPrQsf4xGs9M9AIG3ThppsSRmO+m7eQhmI6amajKMUeIO37wFfsvnvcxQFx6x6iqxDnA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-compilation-targets@7.21.4': - resolution: {integrity: sha512-Fa0tTuOXZ1iL8IeDFUWCzjZcn+sJGd9RZdH9esYVjEejGmzf+FFYQpMi/kZUk2kPy/q1H3/GPw7np8qar/stfg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-environment-visitor@7.18.9': - resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-function-name@7.21.0': - resolution: {integrity: sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-hoist-variables@7.18.6': - resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} - engines: {node: '>=6.9.0'} - - '@babel/helper-module-imports@7.18.6': - resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-module-transforms@7.21.2': - resolution: {integrity: sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==} - engines: {node: '>=6.9.0'} - - '@babel/helper-plugin-utils@7.20.2': - resolution: {integrity: sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==} - engines: {node: '>=6.9.0'} - - '@babel/helper-simple-access@7.20.2': - resolution: {integrity: sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-split-export-declaration@7.18.6': - resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-string-parser@7.19.4': - resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-identifier@7.19.1': - resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-option@7.21.0': - resolution: {integrity: sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==} - engines: {node: '>=6.9.0'} - - '@babel/helpers@7.21.0': - resolution: {integrity: sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==} - engines: {node: '>=6.9.0'} - - '@babel/highlight@7.18.6': - resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} - engines: {node: '>=6.9.0'} - - '@babel/parser@7.21.4': - resolution: {integrity: sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw==} - engines: {node: '>=6.0.0'} - hasBin: true - - '@babel/plugin-syntax-async-generators@7.8.4': - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-bigint@7.8.3': - resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-class-properties@7.12.13': - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-import-meta@7.10.4': - resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-json-strings@7.8.3': - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-jsx@7.18.6': - resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-logical-assignment-operators@7.10.4': - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-numeric-separator@7.10.4': - resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-object-rest-spread@7.8.3': - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-optional-catch-binding@7.8.3': - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-optional-chaining@7.8.3': - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-top-level-await@7.14.5': - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-typescript@7.20.0': - resolution: {integrity: sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-jsx-self@7.21.0': - resolution: {integrity: sha512-f/Eq+79JEu+KUANFks9UZCcvydOOGMgF7jBrcwjHa5jTZD8JivnhCJYvmlhR/WTXBWonDExPoW0eO/CR4QJirA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-jsx-source@7.19.6': - resolution: {integrity: sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/runtime@7.21.0': - resolution: {integrity: sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==} - engines: {node: '>=6.9.0'} - - '@babel/template@7.20.7': - resolution: {integrity: sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==} - engines: {node: '>=6.9.0'} - - '@babel/traverse@7.21.4': - resolution: {integrity: sha512-eyKrRHKdyZxqDm+fV1iqL9UAHMoIg0nDaGqfIOd8rKH17m5snv7Gn4qgjBoFfLz9APvjFU/ICT00NVCv1Epp8Q==} - engines: {node: '>=6.9.0'} - - '@babel/types@7.21.4': - resolution: {integrity: sha512-rU2oY501qDxE8Pyo7i/Orqma4ziCOrby0/9mvbDUGEfvZjb279Nk9k19e2fiCxHbRRpY2ZyrgW1eq22mvmOIzA==} - engines: {node: '>=6.9.0'} - - '@bcoe/v8-coverage@0.2.3': - resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - - '@changesets/apply-release-plan@6.1.3': - resolution: {integrity: sha512-ECDNeoc3nfeAe1jqJb5aFQX7CqzQhD2klXRez2JDb/aVpGUbX673HgKrnrgJRuQR/9f2TtLoYIzrGB9qwD77mg==} - - '@changesets/assemble-release-plan@5.2.3': - resolution: {integrity: sha512-g7EVZCmnWz3zMBAdrcKhid4hkHT+Ft1n0mLussFMcB1dE2zCuwcvGoy9ec3yOgPGF4hoMtgHaMIk3T3TBdvU9g==} - - '@changesets/changelog-git@0.1.14': - resolution: {integrity: sha512-+vRfnKtXVWsDDxGctOfzJsPhaCdXRYoe+KyWYoq5X/GqoISREiat0l3L8B0a453B2B4dfHGcZaGyowHbp9BSaA==} - - '@changesets/cli@2.26.1': - resolution: {integrity: sha512-XnTa+b51vt057fyAudvDKGB0Sh72xutQZNAdXkCqPBKO2zvs2yYZx5hFZj1u9cbtpwM6Sxtcr02/FQJfZOzemQ==} - hasBin: true - - '@changesets/config@2.3.0': - resolution: {integrity: sha512-EgP/px6mhCx8QeaMAvWtRrgyxW08k/Bx2tpGT+M84jEdX37v3VKfh4Cz1BkwrYKuMV2HZKeHOh8sHvja/HcXfQ==} - - '@changesets/errors@0.1.4': - resolution: {integrity: sha512-HAcqPF7snsUJ/QzkWoKfRfXushHTu+K5KZLJWPb34s4eCZShIf8BFO3fwq6KU8+G7L5KdtN2BzQAXOSXEyiY9Q==} - - '@changesets/get-dependents-graph@1.3.5': - resolution: {integrity: sha512-w1eEvnWlbVDIY8mWXqWuYE9oKhvIaBhzqzo4ITSJY9hgoqQ3RoBqwlcAzg11qHxv/b8ReDWnMrpjpKrW6m1ZTA==} - - '@changesets/get-release-plan@3.0.16': - resolution: {integrity: sha512-OpP9QILpBp1bY2YNIKFzwigKh7Qe9KizRsZomzLe6pK8IUo8onkAAVUD8+JRKSr8R7d4+JRuQrfSSNlEwKyPYg==} - - '@changesets/get-version-range-type@0.3.2': - resolution: {integrity: sha512-SVqwYs5pULYjYT4op21F2pVbcrca4qA/bAA3FmFXKMN7Y+HcO8sbZUTx3TAy2VXulP2FACd1aC7f2nTuqSPbqg==} - - '@changesets/git@2.0.0': - resolution: {integrity: sha512-enUVEWbiqUTxqSnmesyJGWfzd51PY4H7mH9yUw0hPVpZBJ6tQZFMU3F3mT/t9OJ/GjyiM4770i+sehAn6ymx6A==} - - '@changesets/logger@0.0.5': - resolution: {integrity: sha512-gJyZHomu8nASHpaANzc6bkQMO9gU/ib20lqew1rVx753FOxffnCrJlGIeQVxNWCqM+o6OOleCo/ivL8UAO5iFw==} - - '@changesets/parse@0.3.16': - resolution: {integrity: sha512-127JKNd167ayAuBjUggZBkmDS5fIKsthnr9jr6bdnuUljroiERW7FBTDNnNVyJ4l69PzR57pk6mXQdtJyBCJKg==} - - '@changesets/pre@1.0.14': - resolution: {integrity: sha512-dTsHmxQWEQekHYHbg+M1mDVYFvegDh9j/kySNuDKdylwfMEevTeDouR7IfHNyVodxZXu17sXoJuf2D0vi55FHQ==} - - '@changesets/read@0.5.9': - resolution: {integrity: sha512-T8BJ6JS6j1gfO1HFq50kU3qawYxa4NTbI/ASNVVCBTsKquy2HYwM9r7ZnzkiMe8IEObAJtUVGSrePCOxAK2haQ==} - - '@changesets/types@4.1.0': - resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} - - '@changesets/types@5.2.1': - resolution: {integrity: sha512-myLfHbVOqaq9UtUKqR/nZA/OY7xFjQMdfgfqeZIBK4d0hA6pgxArvdv8M+6NUzzBsjWLOtvApv8YHr4qM+Kpfg==} - - '@changesets/write@0.2.3': - resolution: {integrity: sha512-Dbamr7AIMvslKnNYsLFafaVORx4H0pvCA2MHqgtNCySMe1blImEyAEOzDmcgKAkgz4+uwoLz7demIrX+JBr/Xw==} - - '@esbuild-kit/cjs-loader@2.4.2': - resolution: {integrity: sha512-BDXFbYOJzT/NBEtp71cvsrGPwGAMGRB/349rwKuoxNSiKjPraNNnlK6MIIabViCjqZugu6j+xeMDlEkWdHHJSg==} - - '@esbuild-kit/core-utils@3.1.0': - resolution: {integrity: sha512-Uuk8RpCg/7fdHSceR1M6XbSZFSuMrxcePFuGgyvsBn+u339dk5OeL4jv2EojwTN2st/unJGsVm4qHWjWNmJ/tw==} - - '@esbuild-kit/esm-loader@2.5.5': - resolution: {integrity: sha512-Qwfvj/qoPbClxCRNuac1Du01r9gvNOT+pMYtJDapfB1eoGN1YlJ1BixLyL9WVENRx5RXgNLdfYdx/CuswlGhMw==} - - '@esbuild/android-arm64@0.17.15': - resolution: {integrity: sha512-0kOB6Y7Br3KDVgHeg8PRcvfLkq+AccreK///B4Z6fNZGr/tNHX0z2VywCc7PTeWp+bPvjA5WMvNXltHw5QjAIA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm64@0.17.17': - resolution: {integrity: sha512-jaJ5IlmaDLFPNttv0ofcwy/cfeY4bh/n705Tgh+eLObbGtQBK3EPAu+CzL95JVE4nFAliyrnEu0d32Q5foavqg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm@0.17.15': - resolution: {integrity: sha512-sRSOVlLawAktpMvDyJIkdLI/c/kdRTOqo8t6ImVxg8yT7LQDUYV5Rp2FKeEosLr6ZCja9UjYAzyRSxGteSJPYg==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - - '@esbuild/android-arm@0.17.17': - resolution: {integrity: sha512-E6VAZwN7diCa3labs0GYvhEPL2M94WLF8A+czO8hfjREXxba8Ng7nM5VxV+9ihNXIY1iQO1XxUU4P7hbqbICxg==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - - '@esbuild/android-x64@0.17.15': - resolution: {integrity: sha512-MzDqnNajQZ63YkaUWVl9uuhcWyEyh69HGpMIrf+acR4otMkfLJ4sUCxqwbCyPGicE9dVlrysI3lMcDBjGiBBcQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - - '@esbuild/android-x64@0.17.17': - resolution: {integrity: sha512-446zpfJ3nioMC7ASvJB1pszHVskkw4u/9Eu8s5yvvsSDTzYh4p4ZIRj0DznSl3FBF0Z/mZfrKXTtt0QCoFmoHA==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - - '@esbuild/darwin-arm64@0.17.15': - resolution: {integrity: sha512-7siLjBc88Z4+6qkMDxPT2juf2e8SJxmsbNVKFY2ifWCDT72v5YJz9arlvBw5oB4W/e61H1+HDB/jnu8nNg0rLA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-arm64@0.17.17': - resolution: {integrity: sha512-m/gwyiBwH3jqfUabtq3GH31otL/0sE0l34XKpSIqR7NjQ/XHQ3lpmQHLHbG8AHTGCw8Ao059GvV08MS0bhFIJQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-x64@0.17.15': - resolution: {integrity: sha512-NbImBas2rXwYI52BOKTW342Tm3LTeVlaOQ4QPZ7XuWNKiO226DisFk/RyPk3T0CKZkKMuU69yOvlapJEmax7cg==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - - '@esbuild/darwin-x64@0.17.17': - resolution: {integrity: sha512-4utIrsX9IykrqYaXR8ob9Ha2hAY2qLc6ohJ8c0CN1DR8yWeMrTgYFjgdeQ9LIoTOfLetXjuCu5TRPHT9yKYJVg==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - - '@esbuild/freebsd-arm64@0.17.15': - resolution: {integrity: sha512-Xk9xMDjBVG6CfgoqlVczHAdJnCs0/oeFOspFap5NkYAmRCT2qTn1vJWA2f419iMtsHSLm+O8B6SLV/HlY5cYKg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-arm64@0.17.17': - resolution: {integrity: sha512-4PxjQII/9ppOrpEwzQ1b0pXCsFLqy77i0GaHodrmzH9zq2/NEhHMAMJkJ635Ns4fyJPFOlHMz4AsklIyRqFZWA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.17.15': - resolution: {integrity: sha512-3TWAnnEOdclvb2pnfsTWtdwthPfOz7qAfcwDLcfZyGJwm1SRZIMOeB5FODVhnM93mFSPsHB9b/PmxNNbSnd0RQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.17.17': - resolution: {integrity: sha512-lQRS+4sW5S3P1sv0z2Ym807qMDfkmdhUYX30GRBURtLTrJOPDpoU0kI6pVz1hz3U0+YQ0tXGS9YWveQjUewAJw==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - - '@esbuild/linux-arm64@0.17.15': - resolution: {integrity: sha512-T0MVnYw9KT6b83/SqyznTs/3Jg2ODWrZfNccg11XjDehIved2oQfrX/wVuev9N936BpMRaTR9I1J0tdGgUgpJA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm64@0.17.17': - resolution: {integrity: sha512-2+pwLx0whKY1/Vqt8lyzStyda1v0qjJ5INWIe+d8+1onqQxHLLi3yr5bAa4gvbzhZqBztifYEu8hh1La5+7sUw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm@0.17.15': - resolution: {integrity: sha512-MLTgiXWEMAMr8nmS9Gigx43zPRmEfeBfGCwxFQEMgJ5MC53QKajaclW6XDPjwJvhbebv+RzK05TQjvH3/aM4Xw==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-arm@0.17.17': - resolution: {integrity: sha512-biDs7bjGdOdcmIk6xU426VgdRUpGg39Yz6sT9Xp23aq+IEHDb/u5cbmu/pAANpDB4rZpY/2USPhCA+w9t3roQg==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-ia32@0.17.15': - resolution: {integrity: sha512-wp02sHs015T23zsQtU4Cj57WiteiuASHlD7rXjKUyAGYzlOKDAjqK6bk5dMi2QEl/KVOcsjwL36kD+WW7vJt8Q==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-ia32@0.17.17': - resolution: {integrity: sha512-IBTTv8X60dYo6P2t23sSUYym8fGfMAiuv7PzJ+0LcdAndZRzvke+wTVxJeCq4WgjppkOpndL04gMZIFvwoU34Q==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-loong64@0.17.15': - resolution: {integrity: sha512-k7FsUJjGGSxwnBmMh8d7IbObWu+sF/qbwc+xKZkBe/lTAF16RqxRCnNHA7QTd3oS2AfGBAnHlXL67shV5bBThQ==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-loong64@0.17.17': - resolution: {integrity: sha512-WVMBtcDpATjaGfWfp6u9dANIqmU9r37SY8wgAivuKmgKHE+bWSuv0qXEFt/p3qXQYxJIGXQQv6hHcm7iWhWjiw==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-mips64el@0.17.15': - resolution: {integrity: sha512-ZLWk6czDdog+Q9kE/Jfbilu24vEe/iW/Sj2d8EVsmiixQ1rM2RKH2n36qfxK4e8tVcaXkvuV3mU5zTZviE+NVQ==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-mips64el@0.17.17': - resolution: {integrity: sha512-2kYCGh8589ZYnY031FgMLy0kmE4VoGdvfJkxLdxP4HJvWNXpyLhjOvxVsYjYZ6awqY4bgLR9tpdYyStgZZhi2A==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-ppc64@0.17.15': - resolution: {integrity: sha512-mY6dPkIRAiFHRsGfOYZC8Q9rmr8vOBZBme0/j15zFUKM99d4ILY4WpOC7i/LqoY+RE7KaMaSfvY8CqjJtuO4xg==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-ppc64@0.17.17': - resolution: {integrity: sha512-KIdG5jdAEeAKogfyMTcszRxy3OPbZhq0PPsW4iKKcdlbk3YE4miKznxV2YOSmiK/hfOZ+lqHri3v8eecT2ATwQ==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-riscv64@0.17.15': - resolution: {integrity: sha512-EcyUtxffdDtWjjwIH8sKzpDRLcVtqANooMNASO59y+xmqqRYBBM7xVLQhqF7nksIbm2yHABptoioS9RAbVMWVA==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-riscv64@0.17.17': - resolution: {integrity: sha512-Cj6uWLBR5LWhcD/2Lkfg2NrkVsNb2sFM5aVEfumKB2vYetkA/9Uyc1jVoxLZ0a38sUhFk4JOVKH0aVdPbjZQeA==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-s390x@0.17.15': - resolution: {integrity: sha512-BuS6Jx/ezxFuHxgsfvz7T4g4YlVrmCmg7UAwboeyNNg0OzNzKsIZXpr3Sb/ZREDXWgt48RO4UQRDBxJN3B9Rbg==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-s390x@0.17.17': - resolution: {integrity: sha512-lK+SffWIr0XsFf7E0srBjhpkdFVJf3HEgXCwzkm69kNbRar8MhezFpkIwpk0qo2IOQL4JE4mJPJI8AbRPLbuOQ==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-x64@0.17.15': - resolution: {integrity: sha512-JsdS0EgEViwuKsw5tiJQo9UdQdUJYuB+Mf6HxtJSPN35vez1hlrNb1KajvKWF5Sa35j17+rW1ECEO9iNrIXbNg==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - - '@esbuild/linux-x64@0.17.17': - resolution: {integrity: sha512-XcSGTQcWFQS2jx3lZtQi7cQmDYLrpLRyz1Ns1DzZCtn898cWfm5Icx/DEWNcTU+T+tyPV89RQtDnI7qL2PObPg==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - - '@esbuild/netbsd-x64@0.17.15': - resolution: {integrity: sha512-R6fKjtUysYGym6uXf6qyNephVUQAGtf3n2RCsOST/neIwPqRWcnc3ogcielOd6pT+J0RDR1RGcy0ZY7d3uHVLA==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - - '@esbuild/netbsd-x64@0.17.17': - resolution: {integrity: sha512-RNLCDmLP5kCWAJR+ItLM3cHxzXRTe4N00TQyQiimq+lyqVqZWGPAvcyfUBM0isE79eEZhIuGN09rAz8EL5KdLA==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - - '@esbuild/openbsd-x64@0.17.15': - resolution: {integrity: sha512-mVD4PGc26b8PI60QaPUltYKeSX0wxuy0AltC+WCTFwvKCq2+OgLP4+fFd+hZXzO2xW1HPKcytZBdjqL6FQFa7w==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - - '@esbuild/openbsd-x64@0.17.17': - resolution: {integrity: sha512-PAXswI5+cQq3Pann7FNdcpSUrhrql3wKjj3gVkmuz6OHhqqYxKvi6GgRBoaHjaG22HV/ZZEgF9TlS+9ftHVigA==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - - '@esbuild/sunos-x64@0.17.15': - resolution: {integrity: sha512-U6tYPovOkw3459t2CBwGcFYfFRjivcJJc1WC8Q3funIwX8x4fP+R6xL/QuTPNGOblbq/EUDxj9GU+dWKX0oWlQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - - '@esbuild/sunos-x64@0.17.17': - resolution: {integrity: sha512-V63egsWKnx/4V0FMYkr9NXWrKTB5qFftKGKuZKFIrAkO/7EWLFnbBZNM1CvJ6Sis+XBdPws2YQSHF1Gqf1oj/Q==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - - '@esbuild/win32-arm64@0.17.15': - resolution: {integrity: sha512-W+Z5F++wgKAleDABemiyXVnzXgvRFs+GVKThSI+mGgleLWluv0D7Diz4oQpgdpNzh4i2nNDzQtWbjJiqutRp6Q==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-arm64@0.17.17': - resolution: {integrity: sha512-YtUXLdVnd6YBSYlZODjWzH+KzbaubV0YVd6UxSfoFfa5PtNJNaW+1i+Hcmjpg2nEe0YXUCNF5bkKy1NnBv1y7Q==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-ia32@0.17.15': - resolution: {integrity: sha512-Muz/+uGgheShKGqSVS1KsHtCyEzcdOn/W/Xbh6H91Etm+wiIfwZaBn1W58MeGtfI8WA961YMHFYTthBdQs4t+w==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-ia32@0.17.17': - resolution: {integrity: sha512-yczSLRbDdReCO74Yfc5tKG0izzm+lPMYyO1fFTcn0QNwnKmc3K+HdxZWLGKg4pZVte7XVgcFku7TIZNbWEJdeQ==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-x64@0.17.15': - resolution: {integrity: sha512-DjDa9ywLUUmjhV2Y9wUTIF+1XsmuFGvZoCmOWkli1XcNAh5t25cc7fgsCx4Zi/Uurep3TTLyDiKATgGEg61pkA==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - - '@esbuild/win32-x64@0.17.17': - resolution: {integrity: sha512-FNZw7H3aqhF9OyRQbDDnzUApDXfC1N6fgBhkqEO2jvYCJ+DxMTfZVqg3AX0R1khg1wHTBRD5SdcibSJ+XF6bFg==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - - '@eslint-community/eslint-utils@4.4.0': - resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - - '@eslint-community/regexpp@4.10.0': - resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - - '@eslint/eslintrc@2.1.4': - resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - '@eslint/js@8.57.0': - resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - '@ethereumjs/rlp@4.0.1': - resolution: {integrity: sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==} - engines: {node: '>=14'} - hasBin: true - - '@ethereumjs/util@8.1.0': - resolution: {integrity: sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==} - engines: {node: '>=14'} - - '@ethersproject/abi@5.7.0': - resolution: {integrity: sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==} - - '@ethersproject/abstract-provider@5.7.0': - resolution: {integrity: sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==} - - '@ethersproject/abstract-signer@5.7.0': - resolution: {integrity: sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==} - - '@ethersproject/address@5.7.0': - resolution: {integrity: sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==} - - '@ethersproject/base64@5.7.0': - resolution: {integrity: sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==} - - '@ethersproject/basex@5.7.0': - resolution: {integrity: sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==} - - '@ethersproject/bignumber@5.7.0': - resolution: {integrity: sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==} - - '@ethersproject/bytes@5.7.0': - resolution: {integrity: sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==} - - '@ethersproject/constants@5.7.0': - resolution: {integrity: sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==} - - '@ethersproject/contracts@5.7.0': - resolution: {integrity: sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==} - - '@ethersproject/hash@5.7.0': - resolution: {integrity: sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==} - - '@ethersproject/hdnode@5.7.0': - resolution: {integrity: sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==} - - '@ethersproject/json-wallets@5.7.0': - resolution: {integrity: sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==} - - '@ethersproject/keccak256@5.7.0': - resolution: {integrity: sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==} - - '@ethersproject/logger@5.7.0': - resolution: {integrity: sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==} - - '@ethersproject/networks@5.7.1': - resolution: {integrity: sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==} - - '@ethersproject/pbkdf2@5.7.0': - resolution: {integrity: sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==} - - '@ethersproject/properties@5.7.0': - resolution: {integrity: sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==} - - '@ethersproject/providers@5.7.2': - resolution: {integrity: sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==} - - '@ethersproject/random@5.7.0': - resolution: {integrity: sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==} - - '@ethersproject/rlp@5.7.0': - resolution: {integrity: sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==} - - '@ethersproject/sha2@5.7.0': - resolution: {integrity: sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==} - - '@ethersproject/signing-key@5.7.0': - resolution: {integrity: sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==} - - '@ethersproject/solidity@5.7.0': - resolution: {integrity: sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==} - - '@ethersproject/strings@5.7.0': - resolution: {integrity: sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==} - - '@ethersproject/transactions@5.7.0': - resolution: {integrity: sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==} - - '@ethersproject/units@5.7.0': - resolution: {integrity: sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==} - - '@ethersproject/wallet@5.7.0': - resolution: {integrity: sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==} - - '@ethersproject/web@5.7.1': - resolution: {integrity: sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==} - - '@ethersproject/wordlists@5.7.0': - resolution: {integrity: sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==} - - '@fastify/accept-negotiator@1.1.0': - resolution: {integrity: sha512-OIHZrb2ImZ7XG85HXOONLcJWGosv7sIvM2ifAPQVhg9Lv7qdmMBNVaai4QTdyuaqbKM5eO6sLSQOYI7wEQeCJQ==} - engines: {node: '>=14'} - - '@fastify/ajv-compiler@3.5.0': - resolution: {integrity: sha512-ebbEtlI7dxXF5ziNdr05mOY8NnDiPB1XvAlLHctRt/Rc+C3LCOVW5imUVX+mhvUhnNzmPBHewUkOFgGlCxgdAA==} - - '@fastify/busboy@2.1.1': - resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} - engines: {node: '>=14'} - - '@fastify/compress@6.5.0': - resolution: {integrity: sha512-AqUOK714jY7qkzbQbS4zyI4yNFgnRoOJ3eH/oV1T9f5fFdPDRdrFxm5de1ya5n+as4bvitjwU9EY7zvtT9pI2A==} - - '@fastify/cors@8.3.0': - resolution: {integrity: sha512-oj9xkka2Tg0MrwuKhsSUumcAkfp2YCnKxmFEusi01pjk1YrdDsuSYTHXEelWNW+ilSy/ApZq0c2SvhKrLX0H1g==} - - '@fastify/deepmerge@1.3.0': - resolution: {integrity: sha512-J8TOSBq3SoZbDhM9+R/u77hP93gz/rajSA+K2kGyijPpORPWUXHUpTaleoj+92As0S9uPRP7Oi8IqMf0u+ro6A==} - - '@fastify/error@3.3.0': - resolution: {integrity: sha512-dj7vjIn1Ar8sVXj2yAXiMNCJDmS9MQ9XMlIecX2dIzzhjSHCyKo4DdXjXMs7wKW2kj6yvVRSpuQjOZ3YLrh56w==} - - '@fastify/fast-json-stringify-compiler@4.3.0': - resolution: {integrity: sha512-aZAXGYo6m22Fk1zZzEUKBvut/CIIQe/BapEORnxiD5Qr0kPHqqI69NtEMCme74h+at72sPhbkb4ZrLd1W3KRLA==} - - '@gar/promisify@1.1.3': - resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} - - '@humanwhocodes/config-array@0.11.14': - resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} - engines: {node: '>=10.10.0'} - - '@humanwhocodes/module-importer@1.0.1': - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} - engines: {node: '>=12.22'} - - '@humanwhocodes/object-schema@2.0.2': - resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} - - '@improbable-eng/grpc-web-node-http-transport@0.15.0': - resolution: {integrity: sha512-HLgJfVolGGpjc9DWPhmMmXJx8YGzkek7jcCFO1YYkSOoO81MWRZentPOd/JiKiZuU08wtc4BG+WNuGzsQB5jZA==} - peerDependencies: - '@improbable-eng/grpc-web': '>=0.13.0' - - '@improbable-eng/grpc-web@0.15.0': - resolution: {integrity: sha512-ERft9/0/8CmYalqOVnJnpdDry28q+j+nAlFFARdjyxXDJ+Mhgv9+F600QC8BR9ygOfrXRlAk6CvST2j+JCpQPg==} - peerDependencies: - google-protobuf: ^3.14.0 - - '@istanbuljs/load-nyc-config@1.1.0': - resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} - engines: {node: '>=8'} - - '@istanbuljs/schema@0.1.3': - resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} - engines: {node: '>=8'} - - '@jest/console@29.5.0': - resolution: {integrity: sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/core@29.5.0': - resolution: {integrity: sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - - '@jest/environment@29.5.0': - resolution: {integrity: sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/expect-utils@29.5.0': - resolution: {integrity: sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/expect@29.5.0': - resolution: {integrity: sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/fake-timers@29.5.0': - resolution: {integrity: sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/globals@29.5.0': - resolution: {integrity: sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/reporters@29.5.0': - resolution: {integrity: sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - - '@jest/schemas@29.4.3': - resolution: {integrity: sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/source-map@29.4.3': - resolution: {integrity: sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/test-result@29.5.0': - resolution: {integrity: sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/test-sequencer@29.5.0': - resolution: {integrity: sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/transform@29.5.0': - resolution: {integrity: sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/types@29.5.0': - resolution: {integrity: sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jridgewell/gen-mapping@0.3.3': - resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} - engines: {node: '>=6.0.0'} - - '@jridgewell/resolve-uri@3.1.0': - resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} - engines: {node: '>=6.0.0'} - - '@jridgewell/set-array@1.1.2': - resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} - engines: {node: '>=6.0.0'} - - '@jridgewell/sourcemap-codec@1.4.14': - resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} - - '@jridgewell/sourcemap-codec@1.4.15': - resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - - '@jridgewell/trace-mapping@0.3.18': - resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==} - - '@koa/cors@4.0.0': - resolution: {integrity: sha512-Y4RrbvGTlAaa04DBoPBWJqDR5gPj32OOz827ULXfgB1F7piD1MB/zwn8JR2LAnvdILhxUbXbkXGWuNVsFuVFCQ==} - engines: {node: '>= 14.0.0'} - - '@koa/router@12.0.1': - resolution: {integrity: sha512-ribfPYfHb+Uw3b27Eiw6NPqjhIhTpVFzEWLwyc/1Xp+DCdwRRyIlAUODX+9bPARF6aQtUu1+/PHzdNvRzcs/+Q==} - engines: {node: '>= 12'} - - '@manypkg/find-root@1.1.0': - resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} - - '@manypkg/get-packages@1.1.3': - resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} - - '@metamask/eth-sig-util@4.0.1': - resolution: {integrity: sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ==} - engines: {node: '>=12.0.0'} - - '@noble/curves@1.2.0': - resolution: {integrity: sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==} - - '@noble/curves@1.3.0': - resolution: {integrity: sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA==} - - '@noble/hashes@1.2.0': - resolution: {integrity: sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==} - - '@noble/hashes@1.3.2': - resolution: {integrity: sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==} - engines: {node: '>= 16'} - - '@noble/hashes@1.3.3': - resolution: {integrity: sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==} - engines: {node: '>= 16'} - - '@noble/secp256k1@1.7.1': - resolution: {integrity: sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==} - - '@nodelib/fs.scandir@2.1.5': - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - - '@nodelib/fs.stat@2.0.5': - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - - '@nodelib/fs.walk@1.2.8': - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - - '@nomicfoundation/edr-darwin-arm64@0.3.0': - resolution: {integrity: sha512-Gg3jB1NJtqSXHjivSs5tws17r4w0V1aEW6/G6qJFYIGH+EnuNXCDXmNuYQ6++rQ7xBp56wueq93ILmtbyeGLwA==} - engines: {node: '>= 18'} - cpu: [arm64] - os: [darwin] - - '@nomicfoundation/edr-darwin-x64@0.3.0': - resolution: {integrity: sha512-9leJCZx8jTdb0mIxY/pHypZViToZ7bS49CpwG8TTAi37HhgSUlM/iA4vrC7dA2LiBG+bXx/9BPJ0M/x0xP7EvQ==} - engines: {node: '>= 18'} - cpu: [x64] - os: [darwin] - - '@nomicfoundation/edr-linux-arm64-gnu@0.3.0': - resolution: {integrity: sha512-fU3zE94J3IeFZArpMeOdX4+cPZ2+rJlqd7clIlxI8zAxcTNDE9tV8jQsugQEI6ufi1ibEPuG26kJorEvIhBQgw==} - engines: {node: '>= 18'} - cpu: [arm64] - os: [linux] - - '@nomicfoundation/edr-linux-arm64-musl@0.3.0': - resolution: {integrity: sha512-ya+kvEazgGZ+4HeJ/dc12je3DdiE0fzW4HVVkFreWPh1ZVKlH3nXtGN8I5FXO6eOMvvD0gdph6mDLo7z6S2NTg==} - engines: {node: '>= 18'} - cpu: [arm64] - os: [linux] - - '@nomicfoundation/edr-linux-x64-gnu@0.3.0': - resolution: {integrity: sha512-ODi6NytOIYJLaKypzbgb7lWvR/YAOj6MhVdj0ZlySjyG/r+4yLfEdWXalYeMtTPw7oWwo7cncZNT7vaxcboSfQ==} - engines: {node: '>= 18'} - cpu: [x64] - os: [linux] - - '@nomicfoundation/edr-linux-x64-musl@0.3.0': - resolution: {integrity: sha512-4+5kcETwTrrrRKl7Xi2RsEgN391w1ZyPlZWSC73z3zqHtllriSiynn7yeJedpLOPMUTvZKaoZHf6Ahguj6/UaA==} - engines: {node: '>= 18'} - cpu: [x64] - os: [linux] - - '@nomicfoundation/edr-win32-arm64-msvc@0.3.0': - resolution: {integrity: sha512-8Tmn2kwnx0ZEuj3E4zlP4CH9hMeuZStq4E1Q1um3LyuZ9f+0XdZoHvgSjskeTwxmkHcp4A5S3yg/noP1Auc8IA==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [win32] - - '@nomicfoundation/edr-win32-ia32-msvc@0.3.0': - resolution: {integrity: sha512-6SRzowPhYeE0dU7oTpHePj0YCHwhZ+VvjHuJh0pJS+FmzduOJgzKX+tU7wLRCtYCMrb9/7sIr9HqsUsD/pTrVg==} - engines: {node: '>= 18'} - cpu: [ia32] - os: [win32] - - '@nomicfoundation/edr-win32-x64-msvc@0.3.0': - resolution: {integrity: sha512-f54/qch6q9E5G2zVi5TqONZSwz9ILJckRg2pAbiZlofZMVplef9iEkPT4Q6A40YWdB9Oo+hDfpC3OaYLzcf5OQ==} - engines: {node: '>= 18'} - cpu: [x64] - os: [win32] - - '@nomicfoundation/edr@0.3.0': - resolution: {integrity: sha512-ygGAHss97Ii1TqPEo7lz1vfVKe/NhvvDK+78ehayOULhb1dxro+zP5PwVtXEgf5Qpum2TLIu2vZ7EqI9ft9ZwQ==} - engines: {node: '>= 18'} - - '@nomicfoundation/ethereumjs-common@4.0.4': - resolution: {integrity: sha512-9Rgb658lcWsjiicr5GzNCjI1llow/7r0k50dLL95OJ+6iZJcVbi15r3Y0xh2cIO+zgX0WIHcbzIu6FeQf9KPrg==} - - '@nomicfoundation/ethereumjs-rlp@5.0.4': - resolution: {integrity: sha512-8H1S3s8F6QueOc/X92SdrA4RDenpiAEqMg5vJH99kcQaCy/a3Q6fgseo75mgWlbanGJXSlAPtnCeG9jvfTYXlw==} - engines: {node: '>=18'} - hasBin: true - - '@nomicfoundation/ethereumjs-tx@5.0.4': - resolution: {integrity: sha512-Xjv8wAKJGMrP1f0n2PeyfFCCojHd7iS3s/Ab7qzF1S64kxZ8Z22LCMynArYsVqiFx6rzYy548HNVEyI+AYN/kw==} - engines: {node: '>=18'} - peerDependencies: - c-kzg: ^2.1.2 - peerDependenciesMeta: - c-kzg: - optional: true - - '@nomicfoundation/ethereumjs-util@9.0.4': - resolution: {integrity: sha512-sLOzjnSrlx9Bb9EFNtHzK/FJFsfg2re6bsGqinFinH1gCqVfz9YYlXiMWwDM4C/L4ywuHFCYwfKTVr/QHQcU0Q==} - engines: {node: '>=18'} - peerDependencies: - c-kzg: ^2.1.2 - peerDependenciesMeta: - c-kzg: - optional: true - - '@nomicfoundation/hardhat-chai-matchers@1.0.6': - resolution: {integrity: sha512-f5ZMNmabZeZegEfuxn/0kW+mm7+yV7VNDxLpMOMGXWFJ2l/Ct3QShujzDRF9cOkK9Ui/hbDeOWGZqyQALDXVCQ==} - peerDependencies: - '@nomiclabs/hardhat-ethers': ^2.0.0 - chai: ^4.2.0 - ethers: ^5.0.0 - hardhat: ^2.9.4 - - '@nomicfoundation/solidity-analyzer-darwin-arm64@0.1.1': - resolution: {integrity: sha512-KcTodaQw8ivDZyF+D76FokN/HdpgGpfjc/gFCImdLUyqB6eSWVaZPazMbeAjmfhx3R0zm/NYVzxwAokFKgrc0w==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - - '@nomicfoundation/solidity-analyzer-darwin-x64@0.1.1': - resolution: {integrity: sha512-XhQG4BaJE6cIbjAVtzGOGbK3sn1BO9W29uhk9J8y8fZF1DYz0Doj8QDMfpMu+A6TjPDs61lbsmeYodIDnfveSA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - - '@nomicfoundation/solidity-analyzer-freebsd-x64@0.1.1': - resolution: {integrity: sha512-GHF1VKRdHW3G8CndkwdaeLkVBi5A9u2jwtlS7SLhBc8b5U/GcoL39Q+1CSO3hYqePNP+eV5YI7Zgm0ea6kMHoA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [freebsd] - - '@nomicfoundation/solidity-analyzer-linux-arm64-gnu@0.1.1': - resolution: {integrity: sha512-g4Cv2fO37ZsUENQ2vwPnZc2zRenHyAxHcyBjKcjaSmmkKrFr64yvzeNO8S3GBFCo90rfochLs99wFVGT/0owpg==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - - '@nomicfoundation/solidity-analyzer-linux-arm64-musl@0.1.1': - resolution: {integrity: sha512-WJ3CE5Oek25OGE3WwzK7oaopY8xMw9Lhb0mlYuJl/maZVo+WtP36XoQTb7bW/i8aAdHW5Z+BqrHMux23pvxG3w==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - - '@nomicfoundation/solidity-analyzer-linux-x64-gnu@0.1.1': - resolution: {integrity: sha512-5WN7leSr5fkUBBjE4f3wKENUy9HQStu7HmWqbtknfXkkil+eNWiBV275IOlpXku7v3uLsXTOKpnnGHJYI2qsdA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - '@nomicfoundation/solidity-analyzer-linux-x64-musl@0.1.1': - resolution: {integrity: sha512-KdYMkJOq0SYPQMmErv/63CwGwMm5XHenEna9X9aB8mQmhDBrYrlAOSsIPgFCUSL0hjxE3xHP65/EPXR/InD2+w==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - '@nomicfoundation/solidity-analyzer-win32-arm64-msvc@0.1.1': - resolution: {integrity: sha512-VFZASBfl4qiBYwW5xeY20exWhmv6ww9sWu/krWSesv3q5hA0o1JuzmPHR4LPN6SUZj5vcqci0O6JOL8BPw+APg==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [win32] - - '@nomicfoundation/solidity-analyzer-win32-ia32-msvc@0.1.1': - resolution: {integrity: sha512-JnFkYuyCSA70j6Si6cS1A9Gh1aHTEb8kOTBApp/c7NRTFGNMH8eaInKlyuuiIbvYFhlXW4LicqyYuWNNq9hkpQ==} - engines: {node: '>= 10'} - cpu: [ia32] - os: [win32] - - '@nomicfoundation/solidity-analyzer-win32-x64-msvc@0.1.1': - resolution: {integrity: sha512-HrVJr6+WjIXGnw3Q9u6KQcbZCtk0caVWhCdFADySvRyUxJ8PnzlaP+MhwNE8oyT8OZ6ejHBRrrgjSqDCFXGirw==} - engines: {node: '>= 10'} - cpu: [x64] - os: [win32] - - '@nomicfoundation/solidity-analyzer@0.1.1': - resolution: {integrity: sha512-1LMtXj1puAxyFusBgUIy5pZk3073cNXYnXUpuNKFghHbIit/xZgbk0AokpUADbNm3gyD6bFWl3LRFh3dhVdREg==} - engines: {node: '>= 12'} - - '@nomiclabs/hardhat-ethers@2.2.3': - resolution: {integrity: sha512-YhzPdzb612X591FOe68q+qXVXGG2ANZRvDo0RRUtimev85rCrAlv/TLMEZw5c+kq9AbzocLTVX/h2jVIFPL9Xg==} - peerDependencies: - ethers: ^5.0.0 - hardhat: ^2.0.0 - - '@npmcli/fs@2.1.2': - resolution: {integrity: sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - - '@npmcli/move-file@2.0.1': - resolution: {integrity: sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - deprecated: This functionality has been moved to @npmcli/fs - - '@oven/bun-darwin-aarch64@1.0.11': - resolution: {integrity: sha512-6wCO37lyGNcqefEDQ7IJp4LW7ElKMH50/hlvW5agIBN/XbTwwtv3788dJ9NczEV7RQSlkOI6J3dUoQJ6Pgav6w==} - cpu: [arm64] - os: [darwin] - - '@oven/bun-darwin-x64-baseline@1.0.11': - resolution: {integrity: sha512-is9liFB10GUN/UsSZVkO5tfMIJcBkiDqRvVzNkDHix/i5aXyaBb0vX+uOdJTlHDZyNGi+vHhbRMq3c3ezjJKPA==} - cpu: [x64] - os: [darwin] - - '@oven/bun-darwin-x64@1.0.11': - resolution: {integrity: sha512-5eCtrlOfMuhg7es/6p/rZw5+4khBao/hhGKCPHl9LBok1Mrf5QQjGbXj9OoA2RC2Lxm9av4nrAZG/5nMM01B2g==} - cpu: [x64] - os: [darwin] - - '@oven/bun-linux-aarch64@1.0.11': - resolution: {integrity: sha512-P8hI+vQ+8ffsMLRi2TNzkxsHukrNQD8G2luWo/ndJ55+1uuAMScWZooxm9rgWL6baoB/TL9/Hvi/6INGoE8UlQ==} - cpu: [arm64] - os: [linux] - - '@oven/bun-linux-x64-baseline@1.0.11': - resolution: {integrity: sha512-Asx4pEMDXfmu9Sa0jX4PE1Wijtg1oCfUx8o4FeQEvnVz2+cGG+VoqZXuITmoQC6A4IzAZuJ1tcWOZ8jQCDtvJA==} - cpu: [x64] - os: [linux] - - '@oven/bun-linux-x64@1.0.11': - resolution: {integrity: sha512-F9ZcgVHsPQk6ooHXIeydiLcVcMwhGRjSlOVeHBuHEJ+bI24e/dCY73UKEEz8/hLNA32ocDMmkAGE79qv0ccEIA==} - cpu: [x64] - os: [linux] - - '@protobufjs/aspromise@1.1.2': - resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} - - '@protobufjs/base64@1.1.2': - resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} - - '@protobufjs/codegen@2.0.4': - resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==} - - '@protobufjs/eventemitter@1.1.0': - resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==} - - '@protobufjs/fetch@1.1.0': - resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==} - - '@protobufjs/float@1.0.2': - resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} - - '@protobufjs/inquire@1.1.0': - resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==} - - '@protobufjs/path@1.1.2': - resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} - - '@protobufjs/pool@1.1.0': - resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} - - '@protobufjs/utf8@1.1.0': - resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} - - '@remix-run/router@1.6.0': - resolution: {integrity: sha512-N13NRw3T2+6Xi9J//3CGLsK2OqC8NMme3d/YX+nh05K9YHWGcv8DycHJrqGScSP4T75o8IN6nqIMhVFU8ohg8w==} - engines: {node: '>=14'} - - '@samverschueren/stream-to-observable@0.3.1': - resolution: {integrity: sha512-c/qwwcHyafOQuVQJj0IlBjf5yYgBI7YPJ77k4fOJYesb41jio65eaJODRUmfYKhTOFBrIZ66kgvGPlNbjuoRdQ==} - engines: {node: '>=6'} - peerDependencies: - rxjs: '*' - zen-observable: '*' - peerDependenciesMeta: - rxjs: - optional: true - zen-observable: - optional: true - - '@scure/base@1.1.5': - resolution: {integrity: sha512-Brj9FiG2W1MRQSTB212YVPRrcbjkv48FoZi/u4l/zds/ieRrqsh7aUf6CLwkAq61oKXr/ZlTzlY66gLIj3TFTQ==} - - '@scure/bip32@1.1.5': - resolution: {integrity: sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==} - - '@scure/bip32@1.3.2': - resolution: {integrity: sha512-N1ZhksgwD3OBlwTv3R6KFEcPojl/W4ElJOeCZdi+vuI5QmTFwLq3OFf2zd2ROpKvxFdgZ6hUpb0dx9bVNEwYCA==} - - '@scure/bip32@1.3.3': - resolution: {integrity: sha512-LJaN3HwRbfQK0X1xFSi0Q9amqOgzQnnDngIt+ZlsBC3Bm7/nE7K0kwshZHyaru79yIVRv/e1mQAjZyuZG6jOFQ==} - - '@scure/bip39@1.1.1': - resolution: {integrity: sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==} - - '@scure/bip39@1.2.1': - resolution: {integrity: sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==} - - '@scure/bip39@1.2.2': - resolution: {integrity: sha512-HYf9TUXG80beW+hGAt3TRM8wU6pQoYur9iNypTROm42dorCGmLnFe3eWjz3gOq6G62H2WRh0FCzAR1PI+29zIA==} - - '@sentry-internal/tracing@7.86.0': - resolution: {integrity: sha512-b4dUsNWlPWRwakGwR7bhOkqiFlqQszH1hhVFwrm/8s3kqEBZ+E4CeIfCvuHBHQ1cM/fx55xpXX/BU163cy+3iQ==} - engines: {node: '>=8'} - - '@sentry/core@5.30.0': - resolution: {integrity: sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg==} - engines: {node: '>=6'} - - '@sentry/core@7.86.0': - resolution: {integrity: sha512-SbLvqd1bRYzhDS42u7GMnmbDMfth/zRiLElQWbLK/shmuZzTcfQSwNNdF4Yj+VfjOkqPFgGmICHSHVUc9dh01g==} - engines: {node: '>=8'} - - '@sentry/hub@5.30.0': - resolution: {integrity: sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ==} - engines: {node: '>=6'} - - '@sentry/hub@7.86.0': - resolution: {integrity: sha512-tS9g+yoD/Zs4OS/gCO4/ccT0m90o3brkCIm/gRzPqI5dq2hEE1qn8bF7HM/vLQARM+bsmTEzPzZy19104U5Btg==} - engines: {node: '>=8'} - - '@sentry/minimal@5.30.0': - resolution: {integrity: sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw==} - engines: {node: '>=6'} - - '@sentry/node@5.30.0': - resolution: {integrity: sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg==} - engines: {node: '>=6'} - - '@sentry/node@7.86.0': - resolution: {integrity: sha512-cB1bn/LMn2Km97Y3hv63xwWxT50/G5ixGuSxTZ3dCQM6VDhmZoCuC5NGT3itVvaRd6upQXRZa5W0Zgyh0HXKig==} - engines: {node: '>=8'} - - '@sentry/profiling-node@1.2.6': - resolution: {integrity: sha512-WsXO7VmLze5wPWHpvoRZFTtN+wHw9lYWKZs4T2FwPmvfNVaScGJey/+Wp51aM47Yy12Gj9n/BpqFYDsUXRLMvw==} - engines: {node: '>=8.0.0'} - hasBin: true - - '@sentry/tracing@5.30.0': - resolution: {integrity: sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw==} - engines: {node: '>=6'} - - '@sentry/types@5.30.0': - resolution: {integrity: sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw==} - engines: {node: '>=6'} - - '@sentry/types@7.86.0': - resolution: {integrity: sha512-pGAt0+bMfWgo0KG2epthfNV4Wae03tURpoxNjGo5Fr4cXxvLTSijSAQ6rmmO4bXBJ7+rErEjX30g30o/eEdP9g==} - engines: {node: '>=8'} - - '@sentry/utils@5.30.0': - resolution: {integrity: sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww==} - engines: {node: '>=6'} - - '@sentry/utils@7.86.0': - resolution: {integrity: sha512-6PejFtw9VTFFy5vu0ks+U7Ozkqz+eMt+HN8AZKBKErYzX5/xs0kpkOcSRpu3ETdTYcZf8VAmLVgFgE2BE+3WuQ==} - engines: {node: '>=8'} - - '@sinclair/typebox@0.25.24': - resolution: {integrity: sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==} - - '@sinonjs/commons@2.0.0': - resolution: {integrity: sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==} - - '@sinonjs/fake-timers@10.0.2': - resolution: {integrity: sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw==} - - '@solidity-parser/parser@0.14.5': - resolution: {integrity: sha512-6dKnHZn7fg/iQATVEzqyUOyEidbn05q7YA2mQ9hC0MMXhhV3/JrsxmFSYZAcr7j1yUP700LLhTruvJ3MiQmjJg==} - - '@solidity-parser/parser@0.16.0': - resolution: {integrity: sha512-ESipEcHyRHg4Np4SqBCfcXwyxxna1DgFVz69bgpLV8vzl/NP1DtcKsJ4dJZXWQhY/Z4J2LeKBiOkOVZn9ct33Q==} - - '@solidity-parser/parser@0.17.0': - resolution: {integrity: sha512-Nko8R0/kUo391jsEHHxrGM07QFdnPGvlmox4rmH0kNiNAashItAilhy4Mv4pK5gQmW5f4sXAF58fwJbmlkGcVw==} - - '@testing-library/react-hooks@8.0.1': - resolution: {integrity: sha512-Aqhl2IVmLt8IovEVarNDFuJDVWVvhnr9/GCU6UUnrYXwgDFF9h2L2o2P9KBni1AST5sT6riAyoukFLyjQUgD/g==} - engines: {node: '>=12'} - peerDependencies: - '@types/react': ^16.9.0 || ^17.0.0 - react: ^16.9.0 || ^17.0.0 - react-dom: ^16.9.0 || ^17.0.0 - react-test-renderer: ^16.9.0 || ^17.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - react-dom: - optional: true - react-test-renderer: - optional: true - - '@tootallnate/once@2.0.0': - resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} - engines: {node: '>= 10'} - - '@trpc/client@10.34.0': - resolution: {integrity: sha512-nqtDTIqSY/9syo2EjSy4WWWXPU9GsamEh9Tsg698gLAh1nhgFc5+/YYeb+Ne1pbvWGZ5/3t9Dcz3h4wMyyJ9gQ==} - peerDependencies: - '@trpc/server': 10.34.0 - - '@trpc/server@10.34.0': - resolution: {integrity: sha512-2VMW44Fpaoyqb50dBtzdSWMhqt8lmoJiocEyBBeDb03R0W+XrzbVD5kU/wqKPlcp1DWeNCkOEIMtetMZCfo1hA==} - - '@types/accepts@1.3.7': - resolution: {integrity: sha512-Pay9fq2lM2wXPWbteBsRAGiWH2hig4ZE2asK+mm7kUzlxRTfL961rj89I6zV/E3PcIkDqyuBEcMxFT7rccugeQ==} - - '@types/babel__core@7.20.0': - resolution: {integrity: sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==} - - '@types/babel__generator@7.6.4': - resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} - - '@types/babel__template@7.4.1': - resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} - - '@types/babel__traverse@7.18.3': - resolution: {integrity: sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w==} - - '@types/better-sqlite3@7.6.4': - resolution: {integrity: sha512-dzrRZCYPXIXfSR1/surNbJ/grU3scTaygS0OMzjlGf71i9sc2fGyHPXXiXmEvNIoE0cGwsanEFMVJxPXmco9Eg==} - - '@types/bn.js@4.11.6': - resolution: {integrity: sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==} - - '@types/bn.js@5.1.5': - resolution: {integrity: sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A==} - - '@types/body-parser@1.19.5': - resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} - - '@types/chai-as-promised@7.1.8': - resolution: {integrity: sha512-ThlRVIJhr69FLlh6IctTXFkmhtP3NpMZ2QGq69StYLyKZFp/HOp1VdKZj7RvfNWYYcJ1xlbLGLLWj1UvP5u/Gw==} - - '@types/chai-subset@1.3.3': - resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} - - '@types/chai@4.3.5': - resolution: {integrity: sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==} - - '@types/connect@3.4.38': - resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} - - '@types/content-disposition@0.5.8': - resolution: {integrity: sha512-QVSSvno3dE0MgO76pJhmv4Qyi/j0Yk9pBp0Y7TJ2Tlj+KCgJWY6qX7nnxCOLkZ3VYRSIk1WTxCvwUSdx6CCLdg==} - - '@types/cookies@0.7.10': - resolution: {integrity: sha512-hmUCjAk2fwZVPPkkPBcI7jGLIR5mg4OVoNMBwU6aVsMm/iNPY7z9/R+x2fSwLt/ZXoGua6C5Zy2k5xOo9jUyhQ==} - - '@types/debug@4.1.7': - resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==} - - '@types/ejs@3.1.1': - resolution: {integrity: sha512-RQul5wEfY7BjWm0sYY86cmUN/pcXWGyVxWX93DFFJvcrxax5zKlieLwA3T77xJGwNcZW0YW6CYG70p1m8xPFmA==} - - '@types/emscripten@1.39.6': - resolution: {integrity: sha512-H90aoynNhhkQP6DRweEjJp5vfUVdIj7tdPLsu7pq89vODD/lcugKfZOsfgwpvM6XUewEp2N5dCg1Uf3Qe55Dcg==} - - '@types/express-serve-static-core@4.17.41': - resolution: {integrity: sha512-OaJ7XLaelTgrvlZD8/aa0vvvxZdUmlCn6MtWeB7TkiKW70BQLc9XEPpDLPdbo52ZhXUCrznlWdCHWxJWtdyajA==} - - '@types/express@4.17.21': - resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} - - '@types/glob@7.2.0': - resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} - - '@types/graceful-fs@4.1.6': - resolution: {integrity: sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==} - - '@types/http-assert@1.5.5': - resolution: {integrity: sha512-4+tE/lwdAahgZT1g30Jkdm9PzFRde0xwxBNUyRsCitRvCQB90iuA2uJYdUnhnANRcqGXaWOGY4FEoxeElNAK2g==} - - '@types/http-errors@2.0.4': - resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} - - '@types/is-ci@3.0.0': - resolution: {integrity: sha512-Q0Op0hdWbYd1iahB+IFNQcWXFq4O0Q5MwQP7uN0souuQ4rPg1vEYcnIOfr1gY+M+6rc8FGoRaBO1mOOvL29sEQ==} - - '@types/istanbul-lib-coverage@2.0.4': - resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} - - '@types/istanbul-lib-report@3.0.0': - resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} - - '@types/istanbul-reports@3.0.1': - resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} - - '@types/jest@27.4.1': - resolution: {integrity: sha512-23iPJADSmicDVrWk+HT58LMJtzLAnB2AgIzplQuq/bSrGaxCrlvRFjGbXmamnnk/mAmCdLStiGqggu28ocUyiw==} - - '@types/json-schema@7.0.15': - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - - '@types/keygrip@1.0.6': - resolution: {integrity: sha512-lZuNAY9xeJt7Bx4t4dx0rYCDqGPW8RXhQZK1td7d4H6E9zYbLoOtjBvfwdTKpsyxQI/2jv+armjX/RW+ZNpXOQ==} - - '@types/koa-compose@3.2.8': - resolution: {integrity: sha512-4Olc63RY+MKvxMwVknCUDhRQX1pFQoBZ/lXcRLP69PQkEpze/0cr8LNqJQe5NFb/b19DWi2a5bTi2VAlQzhJuA==} - - '@types/koa@2.13.12': - resolution: {integrity: sha512-vAo1KuDSYWFDB4Cs80CHvfmzSQWeUb909aQib0C0aFx4sw0K9UZFz2m5jaEP+b3X1+yr904iQiruS0hXi31jbw==} - - '@types/koa__cors@4.0.3': - resolution: {integrity: sha512-zj+1sQO/6GGRGINRXlMmoiFwHibKVcjNGdh+p2SpqHDMLyvC+ce0LMHX6UBi1rdpnPZ/+osUwWdGKF945ffrzA==} - - '@types/koa__router@12.0.4': - resolution: {integrity: sha512-Y7YBbSmfXZpa/m5UGGzb7XadJIRBRnwNY9cdAojZGp65Cpe5MAP3mOZE7e3bImt8dfKS4UFcR16SLH8L/z7PBw==} - - '@types/long@4.0.2': - resolution: {integrity: sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==} - - '@types/lru-cache@5.1.1': - resolution: {integrity: sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==} - - '@types/mime@1.3.5': - resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} - - '@types/mime@3.0.4': - resolution: {integrity: sha512-iJt33IQnVRkqeqC7PzBHPTC6fDlRNRW8vjrgqtScAhrmMwe8c4Eo7+fUGTa+XdWrpEgpyKWMYmi2dIwMAYRzPw==} - - '@types/minimatch@3.0.5': - resolution: {integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==} - - '@types/minimist@1.2.2': - resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} - - '@types/mocha@9.1.1': - resolution: {integrity: sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==} - - '@types/ms@0.7.31': - resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} - - '@types/node-fetch@2.6.11': - resolution: {integrity: sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==} - - '@types/node@12.20.55': - resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - - '@types/node@18.15.11': - resolution: {integrity: sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==} - - '@types/normalize-package-data@2.4.1': - resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} - - '@types/object-hash@1.3.4': - resolution: {integrity: sha512-xFdpkAkikBgqBdG9vIlsqffDV8GpvnPEzs0IUtr1v3BEB97ijsFQ4RXVbUZwjFThhB4MDSTUfvmxUD5PGx0wXA==} - - '@types/openurl@1.0.0': - resolution: {integrity: sha512-fUHH4T8FmEl3NBtGbUYYzMo1Ev47uVCVEGVjVNjorOMzgjls6zH82yr/zqkkcEOHY2HUC5PZ8dRFwGed/NR7wQ==} - - '@types/parse-json@4.0.0': - resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} - - '@types/pbkdf2@3.1.2': - resolution: {integrity: sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew==} - - '@types/prettier@2.7.2': - resolution: {integrity: sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==} - - '@types/prop-types@15.7.5': - resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} - - '@types/qs@6.9.10': - resolution: {integrity: sha512-3Gnx08Ns1sEoCrWssEgTSJs/rsT2vhGP+Ja9cnnk9k4ALxinORlQneLXFeFKOTJMOeZUFD1s7w+w2AphTpvzZw==} - - '@types/range-parser@1.2.7': - resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} - - '@types/react-dom@18.2.7': - resolution: {integrity: sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==} - - '@types/react@18.2.22': - resolution: {integrity: sha512-60fLTOLqzarLED2O3UQImc/lsNRgG0jE/a1mPW9KjMemY0LMITWEsbS4VvZ4p6rorEHd5YKxxmMKSDK505GHpA==} - - '@types/retry@0.12.0': - resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} - - '@types/scheduler@0.16.3': - resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==} - - '@types/secp256k1@4.0.6': - resolution: {integrity: sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ==} - - '@types/semver@6.2.3': - resolution: {integrity: sha512-KQf+QAMWKMrtBMsB8/24w53tEsxllMj6TuA80TT/5igJalLI/zm0L3oXRbIAl4Ohfc85gyHX/jhMwsVkmhLU4A==} - - '@types/semver@7.5.8': - resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} - - '@types/send@0.17.4': - resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} - - '@types/serve-static@1.15.5': - resolution: {integrity: sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==} - - '@types/sql.js@1.4.4': - resolution: {integrity: sha512-6EWU2wfiBtzgTy18WQoXZAGTreBjhZcBCfD8CDvyI1Nj0a4KNDDt41IYeAZ40cRUdfqWHb7VGx7t6nK0yBOI5A==} - - '@types/stack-utils@2.0.1': - resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} - - '@types/stream-to-array@2.3.1': - resolution: {integrity: sha512-OqV/DIumEm5pT+m4LYGpDFRRLZ0VJRvrz58C8q8rjLGVgP5gRHxThG8eLZfhmK3GVAq9iq3eSvZ0vkZJ5ZH/Pg==} - - '@types/throttle-debounce@5.0.0': - resolution: {integrity: sha512-Pb7k35iCGFcGPECoNE4DYp3Oyf2xcTd3FbFQxXUI9hEYKUl6YX+KLf7HrBmgVcD05nl50LIH6i+80js4iYmWbw==} - - '@types/toposort@2.0.6': - resolution: {integrity: sha512-9OMv8NIjiJclYZ+FIqNCs6B6/7HSIccWCpgeVmp2TurRXllEIYNxAwGBBFEataTsHwLt8oeVmMCmdld8dVq/hw==} - - '@types/uuid@8.3.4': - resolution: {integrity: sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==} - - '@types/ws@8.5.4': - resolution: {integrity: sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==} - - '@types/yargs-interactive@2.1.3': - resolution: {integrity: sha512-bYB8ah0JPR6/lpHlxUzeHsrb3RK5OW7N8Hnth2nefnr6zQ5KFoDQ6wM5x58dTLEDYrwikFy3EPTf/O0HKLNaIg==} - - '@types/yargs-parser@21.0.0': - resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} - - '@types/yargs@17.0.23': - resolution: {integrity: sha512-yuogunc04OnzGQCrfHx+Kk883Q4X0aSwmYZhKjI21m+SVYzjIbrWl8dOOwSv5hf2Um2pdCOXWo9isteZTNXUZQ==} - - '@types/yargs@17.0.24': - resolution: {integrity: sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==} - - '@typescript-eslint/eslint-plugin@7.1.1': - resolution: {integrity: sha512-zioDz623d0RHNhvx0eesUmGfIjzrk18nSBC8xewepKXbBvN/7c1qImV7Hg8TI1URTxKax7/zxfxj3Uph8Chcuw==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - '@typescript-eslint/parser': ^7.0.0 - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/parser@7.1.1': - resolution: {integrity: sha512-ZWUFyL0z04R1nAEgr9e79YtV5LbafdOtN7yapNbn1ansMyaegl2D4bL7vHoJ4HPSc4CaLwuCVas8CVuneKzplQ==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/scope-manager@7.1.1': - resolution: {integrity: sha512-cirZpA8bJMRb4WZ+rO6+mnOJrGFDd38WoXCEI57+CYBqta8Yc8aJym2i7vyqLL1vVYljgw0X27axkUXz32T8TA==} - engines: {node: ^16.0.0 || >=18.0.0} - - '@typescript-eslint/type-utils@7.1.1': - resolution: {integrity: sha512-5r4RKze6XHEEhlZnJtR3GYeCh1IueUHdbrukV2KSlLXaTjuSfeVF8mZUVPLovidCuZfbVjfhi4c0DNSa/Rdg5g==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/types@7.1.1': - resolution: {integrity: sha512-KhewzrlRMrgeKm1U9bh2z5aoL4s7K3tK5DwHDn8MHv0yQfWFz/0ZR6trrIHHa5CsF83j/GgHqzdbzCXJ3crx0Q==} - engines: {node: ^16.0.0 || >=18.0.0} - - '@typescript-eslint/typescript-estree@7.1.1': - resolution: {integrity: sha512-9ZOncVSfr+sMXVxxca2OJOPagRwT0u/UHikM2Rd6L/aB+kL/QAuTnsv6MeXtjzCJYb8PzrXarypSGIPx3Jemxw==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/utils@7.1.1': - resolution: {integrity: sha512-thOXM89xA03xAE0lW7alstvnyoBUbBX38YtY+zAUcpRPcq9EIhXPuJ0YTv948MbzmKh6e1AUszn5cBFK49Umqg==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^8.56.0 - - '@typescript-eslint/visitor-keys@7.1.1': - resolution: {integrity: sha512-yTdHDQxY7cSoCcAtiBzVzxleJhkGB9NncSIyMYe2+OGON1ZsP9zOPws/Pqgopa65jvknOjlk/w7ulPlZ78PiLQ==} - engines: {node: ^16.0.0 || >=18.0.0} - - '@typescript/analyze-trace@0.10.1': - resolution: {integrity: sha512-RnlSOPh14QbopGCApgkSx5UBgGda5MX1cHqp2fsqfiDyCwGL/m1jaeB9fzu7didVS81LQqGZZuxFBcg8YU8EVw==} - hasBin: true - - '@typescript/vfs@1.5.0': - resolution: {integrity: sha512-AJS307bPgbsZZ9ggCT3wwpg3VbTKMFNHfaY/uF0ahSkYYrPF2dSSKDNIDIQAHm9qJqbLvCsSJH7yN4Vs/CsMMg==} - - '@ungap/structured-clone@1.2.0': - resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - - '@viem/anvil@0.0.7': - resolution: {integrity: sha512-F+3ljCT1bEt8T4Fzm9gWpIgO3Dc7bzG1TtUtkStkJFMuummqZ8kvYc3UFMo5j3F51fSWZZvEkjs3+i7qf0AOqQ==} - - '@vitejs/plugin-react@4.0.0': - resolution: {integrity: sha512-HX0XzMjL3hhOYm+0s95pb0Z7F8O81G7joUHgfDd/9J/ZZf5k4xX6QAMFkKsHFxaHlf6X7GD7+XuaZ66ULiJuhQ==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - vite: ^4.2.0 - - '@vitest/expect@0.34.6': - resolution: {integrity: sha512-QUzKpUQRc1qC7qdGo7rMK3AkETI7w18gTCUrsNnyjjJKYiuUB9+TQK3QnR1unhCnWRC0AbKv2omLGQDF/mIjOw==} - - '@vitest/runner@0.34.6': - resolution: {integrity: sha512-1CUQgtJSLF47NnhN+F9X2ycxUP0kLHQ/JWvNHbeBfwW8CzEGgeskzNnHDyv1ieKTltuR6sdIHV+nmR6kPxQqzQ==} - - '@vitest/snapshot@0.34.6': - resolution: {integrity: sha512-B3OZqYn6k4VaN011D+ve+AA4whM4QkcwcrwaKwAbyyvS/NB1hCWjFIBQxAQQSQir9/RtyAAGuq+4RJmbn2dH4w==} - - '@vitest/spy@0.34.6': - resolution: {integrity: sha512-xaCvneSaeBw/cz8ySmF7ZwGvL0lBjfvqc1LpQ/vcdHEvpLn3Ff1vAvjw+CoGn0802l++5L/pxb7whwcWAw+DUQ==} - - '@vitest/utils@0.34.6': - resolution: {integrity: sha512-IG5aDD8S6zlvloDsnzHw0Ut5xczlF+kv2BOTo+iXfPr54Yhi5qbVOgGB1hZaVq4iJ4C/MZ2J0y15IlsV/ZcI0A==} - - abab@2.0.6: - resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} - - abbrev@1.1.1: - resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} - - abdk-libraries-solidity@3.2.0: - resolution: {integrity: sha512-JyedKxyqsszb9qCTX+YCOQHA4m0YAq9p77Qvumiy8LJLLrm1FfA9D3pdSAZN5wrmi3PSv0y3Svy8c/C+8S9K8g==} - - abind@1.0.5: - resolution: {integrity: sha512-dbaEZphdPje0ihqSdWg36Sb8S20TuqQomiz2593oIx+enQ9Q4vDZRjIzhnkWltGRKVKqC28kTribkgRLBexWVQ==} - engines: {node: '>=6', npm: '>=3'} - - abitype@1.0.0: - resolution: {integrity: sha512-NMeMah//6bJ56H5XRj8QCV4AwuW6hB6zqz2LnhhLdcWVQOsXki6/Pn3APeqxCma62nXIcmZWdu1DlHWS74umVQ==} - peerDependencies: - typescript: '>=5.0.4' - zod: ^3 >=3.22.0 - peerDependenciesMeta: - typescript: - optional: true - zod: - optional: true - - abort-controller-x@0.4.1: - resolution: {integrity: sha512-lJ2ssrl3FoTK3cX/g15lRCkXFWKiwRTRtBjfwounO2EM/Q65rI/MEZsfsch1juWU2pH2aLSaq0HGowlDP/imrw==} - - abort-controller@3.0.0: - resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} - engines: {node: '>=6.5'} - - abstract-logging@2.0.1: - resolution: {integrity: sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==} - - accepts@1.3.8: - resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} - engines: {node: '>= 0.6'} - - acorn-jsx@5.3.2: - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - - acorn-walk@8.3.2: - resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} - engines: {node: '>=0.4.0'} - - acorn@6.4.2: - resolution: {integrity: sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==} - engines: {node: '>=0.4.0'} - hasBin: true - - acorn@8.11.3: - resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} - engines: {node: '>=0.4.0'} - hasBin: true - - adm-zip@0.4.16: - resolution: {integrity: sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==} - engines: {node: '>=0.3.0'} - - aes-js@3.0.0: - resolution: {integrity: sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==} - - agent-base@6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} - - agentkeepalive@4.5.0: - resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==} - engines: {node: '>= 8.0.0'} - - aggregate-error@3.1.0: - resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} - engines: {node: '>=8'} - - ajv-formats@2.1.1: - resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} - peerDependencies: - ajv: ^8.0.0 - peerDependenciesMeta: - ajv: - optional: true - - ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - - ajv@8.12.0: - resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} - - ansi-align@3.0.1: - resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} - - ansi-colors@4.1.1: - resolution: {integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==} - engines: {node: '>=6'} - - ansi-colors@4.1.3: - resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} - engines: {node: '>=6'} - - ansi-escapes@3.2.0: - resolution: {integrity: sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==} - engines: {node: '>=4'} - - ansi-escapes@4.3.2: - resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} - engines: {node: '>=8'} - - ansi-regex@2.1.1: - resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} - engines: {node: '>=0.10.0'} - - ansi-regex@3.0.1: - resolution: {integrity: sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==} - engines: {node: '>=4'} - - ansi-regex@4.1.1: - resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} - engines: {node: '>=6'} - - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - - ansi-styles@2.2.1: - resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==} - engines: {node: '>=0.10.0'} - - ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} - - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - - ansi-styles@5.2.0: - resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} - engines: {node: '>=10'} - - antlr4@4.7.1: - resolution: {integrity: sha512-haHyTW7Y9joE5MVs37P2lNYfU2RWBLfcRDD8OWldcdZm5TiCE91B5Xl1oWSwiDUSd4rlExpt2pu1fksYQjRBYQ==} - - antlr4ts@0.5.0-alpha.4: - resolution: {integrity: sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ==} - - any-observable@0.3.0: - resolution: {integrity: sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==} - engines: {node: '>=6'} - peerDependencies: - rxjs: '*' - zenObservable: '*' - peerDependenciesMeta: - rxjs: - optional: true - zenObservable: - optional: true - - any-promise@1.3.0: - resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - - anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - - aproba@2.0.0: - resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} - - archy@1.0.0: - resolution: {integrity: sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==} - - are-we-there-yet@3.0.1: - resolution: {integrity: sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - - arg@5.0.2: - resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} - - argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} - - argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - - argx@3.0.2: - resolution: {integrity: sha512-PUyi1r14HG1AH6raqPEW8+vKNWfvHrmerdBXnf5iz7JOnO1hRaG1cGsH9eay/y8dUIreN7NxSEfK208UCGd0wQ==} - engines: {node: '>=4', npm: '>=2'} - - argx@4.0.4: - resolution: {integrity: sha512-XLWeRTNBJRzQkbMweLIxdtnvpE7iYUBraPwrIJX57FjL4D1RHLMJRM1AyEP6KZHgvjW7TSnxF8MpGic7YdTGOA==} - engines: {node: '>=8', npm: '>=5'} - - arktype@1.0.29-alpha: - resolution: {integrity: sha512-glMLgVhIQRSkR3tymiS+POAcWVJH09sfrgic0jHnyFL8BlhHAJZX2BzdImU9zYr1y9NBqy+U93ZNrRTHXsKRDw==} - - array-includes@3.1.6: - resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==} - engines: {node: '>= 0.4'} - - array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - - array.prototype.flat@1.3.1: - resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==} - engines: {node: '>= 0.4'} - - array.prototype.flatmap@1.3.1: - resolution: {integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==} - engines: {node: '>= 0.4'} - - array.prototype.tosorted@1.1.1: - resolution: {integrity: sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==} - - arrayreduce@2.1.0: - resolution: {integrity: sha512-I5MwrsPJ4faMuuPXM8+EgEy83G16i+FqegFhhHX3geDJbyaqPDWNrVjkrRg9SZq5mepEZdNg36SDPOhiKPWTLA==} - engines: {node: '>=4.0.0'} - - arrify@1.0.1: - resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} - engines: {node: '>=0.10.0'} - - askconfig@4.0.4: - resolution: {integrity: sha512-fjB/vmAlUKxGVqcz4mLub3xF8m9rkazhqcXRvrDzeey0iaLhcAg2K8bhJL7pKjE2dFP9qDGv3+yXovYMV9XBJQ==} - engines: {node: '>=8', npm: '>=5'} - - assemblyscript@0.21.7: - resolution: {integrity: sha512-GPKavCMUVZbrU31KTBMtnsRZa9pPN10ApfkPGNdL70Qpu/rORbTCte/37dnIUnQdXHm+5vHmG+iGRWmwJO5hvA==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - hasBin: true - - assertion-error@1.1.0: - resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} - - ast-parents@0.0.1: - resolution: {integrity: sha512-XHusKxKz3zoYk1ic8Un640joHbFMhbqneyoZfoKnEGtf2ey9Uh/IdpcQplODdO/kENaMIWsD0nJm4+wX3UNLHA==} - - astral-regex@1.0.0: - resolution: {integrity: sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==} - engines: {node: '>=4'} - - astral-regex@2.0.0: - resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} - engines: {node: '>=8'} - - async@1.5.2: - resolution: {integrity: sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==} - - async@3.2.4: - resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==} - - asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - - atomic-sleep@1.0.0: - resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} - engines: {node: '>=8.0.0'} - - autoprefixer@10.4.14: - resolution: {integrity: sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==} - engines: {node: ^10 || ^12 || >=14} - hasBin: true - peerDependencies: - postcss: ^8.1.0 - - avvio@8.2.1: - resolution: {integrity: sha512-TAlMYvOuwGyLK3PfBb5WKBXZmXz2fVCgv23d6zZFdle/q3gPjmxBaeuC0pY0Dzs5PWMSgfqqEZkrye19GlDTgw==} - - babel-jest@29.5.0: - resolution: {integrity: sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@babel/core': ^7.8.0 - - babel-plugin-istanbul@6.1.1: - resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} - engines: {node: '>=8'} - - babel-plugin-jest-hoist@29.5.0: - resolution: {integrity: sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - babel-preset-current-node-syntax@1.0.1: - resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} - peerDependencies: - '@babel/core': ^7.0.0 - - babel-preset-jest@29.5.0: - resolution: {integrity: sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@babel/core': ^7.0.0 - - babel-runtime@6.26.0: - resolution: {integrity: sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==} - - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - base-x@3.0.9: - resolution: {integrity: sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==} - - base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - - bech32@1.1.4: - resolution: {integrity: sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==} - - better-path-resolve@1.0.0: - resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} - engines: {node: '>=4'} - - better-sqlite3@8.6.0: - resolution: {integrity: sha512-jwAudeiTMTSyby+/SfbHDebShbmC2MCH8mU2+DXi0WJfv13ypEJm47cd3kljmy/H130CazEvkf2Li//ewcMJ1g==} - - binary-extensions@2.2.0: - resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} - engines: {node: '>=8'} - - binaryen@110.0.0-nightly.20221006: - resolution: {integrity: sha512-yC7ZLoaZmXhm5cB0+g3rZkz5ujPSlhX+FEQtgaQHVxcL78D8cTXdRSdajhgQD345BVPsooOrSxqhX6tnULgBWg==} - hasBin: true - - bindings@1.5.0: - resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} - - bl@4.1.0: - resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - - blakejs@1.2.1: - resolution: {integrity: sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==} - - bn.js@4.11.6: - resolution: {integrity: sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==} - - bn.js@4.12.0: - resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==} - - bn.js@5.2.1: - resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} - - boxen@5.1.2: - resolution: {integrity: sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==} - engines: {node: '>=10'} - - brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - - brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - - braces@3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} - engines: {node: '>=8'} - - breakword@1.0.6: - resolution: {integrity: sha512-yjxDAYyK/pBvws9H4xKYpLDpYKEH6CzrBPAuXq3x18I+c/2MkVtT3qAr7Oloi6Dss9qNhPVueAAVU1CSeNDIXw==} - - brorand@1.1.0: - resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} - - browser-headers@0.4.1: - resolution: {integrity: sha512-CA9hsySZVo9371qEHjHZtYxV2cFtVj5Wj/ZHi8ooEsrtm4vOnl9Y9HmyYWk9q+05d7K3rdoAE0j3MVEFVvtQtg==} - - browser-stdout@1.3.1: - resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} - - browserify-aes@1.2.0: - resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} - - browserslist@4.21.5: - resolution: {integrity: sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - - bs-logger@0.2.6: - resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} - engines: {node: '>= 6'} - - bs58@4.0.1: - resolution: {integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==} - - bs58check@2.1.2: - resolution: {integrity: sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==} - - bser@2.1.1: - resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} - - buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - - buffer-lite@1.1.0: - resolution: {integrity: sha512-oU0QAzHknj4a3PNzTznNUN61r6OdAqqJJdzTm422yyIM3QyK5/7zi8wPVFooCwoPKk90ybCm9qnvkk+tsQt5sg==} - - buffer-xor@1.0.3: - resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} - - buffer@5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - - buffer@6.0.3: - resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} - - bun@1.0.11: - resolution: {integrity: sha512-cKyQAQOfWNIP511UpQjkABUp7z/5+1ci2kXfhjL9PozHoCaCtnYFtVjeqU1LovpqEP1agAsMiDpGNKbJP89RIw==} - cpu: [arm64, x64] - os: [darwin, linux] - hasBin: true - - bundle-require@4.0.1: - resolution: {integrity: sha512-9NQkRHlNdNpDBGmLpngF3EFDcwodhMUuLz9PaWYciVcQF9SE4LFjM2DB/xV1Li5JiuDMv7ZUWuC3rGbqR0MAXQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - peerDependencies: - esbuild: '>=0.17' - - bytes@3.1.2: - resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} - engines: {node: '>= 0.8'} - - cac@6.7.14: - resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} - engines: {node: '>=8'} - - cacache@16.1.3: - resolution: {integrity: sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - - cache-content-type@1.0.1: - resolution: {integrity: sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==} - engines: {node: '>= 6.0.0'} - - call-bind@1.0.2: - resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} - - caller-callsite@2.0.0: - resolution: {integrity: sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==} - engines: {node: '>=4'} - - caller-path@2.0.0: - resolution: {integrity: sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==} - engines: {node: '>=4'} - - callsites@2.0.0: - resolution: {integrity: sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==} - engines: {node: '>=4'} - - callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - - camelcase-css@2.0.1: - resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} - engines: {node: '>= 6'} - - camelcase-keys@6.2.2: - resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} - engines: {node: '>=8'} - - camelcase@5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} - engines: {node: '>=6'} - - camelcase@6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} - - caniuse-lite@1.0.30001470: - resolution: {integrity: sha512-065uNwY6QtHCBOExzbV6m236DDhYCCtPmQUCoQtwkVqzud8v5QPidoMr6CoMkC2nfp6nksjttqWQRRh75LqUmA==} - - case-anything@2.1.10: - resolution: {integrity: sha512-JczJwVrCP0jPKh05McyVsuOg6AYosrB9XWZKbQzXeDAm2ClE/PJE/BcrrQrVyGYH7Jg8V/LDupmyL4kFlVsVFQ==} - engines: {node: '>=12.13'} - - chai-as-promised@7.1.1: - resolution: {integrity: sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==} - peerDependencies: - chai: '>= 2.1.2 < 5' - - chai@4.4.1: - resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==} - engines: {node: '>=4'} - - chalk@1.1.3: - resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==} - engines: {node: '>=0.10.0'} - - chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} - - chalk@3.0.0: - resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} - engines: {node: '>=8'} - - chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - - change-case@5.2.0: - resolution: {integrity: sha512-L6VzznESnMIKKdKhVzCG+KPz4+x1FWbjOs1AdhoHStV3qo8aySMRGPUoqC0aL1ThKaQNGhAu6ZfHL/QAyQRuiw==} - - char-regex@1.0.2: - resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} - engines: {node: '>=10'} - - chardet@0.7.0: - resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} - - check-error@1.0.3: - resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} - - chokidar@3.5.3: - resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} - engines: {node: '>= 8.10.0'} - - chownr@1.1.4: - resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} - - chownr@2.0.0: - resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} - engines: {node: '>=10'} - - ci-info@2.0.0: - resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} - - ci-info@3.8.0: - resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} - engines: {node: '>=8'} - - cipher-base@1.0.4: - resolution: {integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==} - - cjs-module-lexer@1.2.2: - resolution: {integrity: sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==} - - clean-stack@2.2.0: - resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} - engines: {node: '>=6'} - - cli-boxes@2.2.1: - resolution: {integrity: sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==} - engines: {node: '>=6'} - - cli-color@1.4.0: - resolution: {integrity: sha512-xu6RvQqqrWEo6MPR1eixqGPywhYBHRs653F9jfXB2Hx4jdM/3WxiNE1vppRmxtMIfl16SFYTpYlrnqH/HsK/2w==} - - cli-cursor@2.1.0: - resolution: {integrity: sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==} - engines: {node: '>=4'} - - cli-cursor@3.1.0: - resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} - engines: {node: '>=8'} - - cli-truncate@0.2.1: - resolution: {integrity: sha512-f4r4yJnbT++qUPI9NR4XLDLq41gQ+uqnPItWG0F5ZkehuNiTTa3EY0S4AqTSUOeJ7/zU41oWPQSNkW5BqPL9bg==} - engines: {node: '>=0.10.0'} - - cli-width@2.2.1: - resolution: {integrity: sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==} - - cli-width@3.0.0: - resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} - engines: {node: '>= 10'} - - cliui@5.0.0: - resolution: {integrity: sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==} - - cliui@6.0.0: - resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} - - cliui@7.0.4: - resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} - - cliui@8.0.1: - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} - engines: {node: '>=12'} - - clone@1.0.4: - resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} - engines: {node: '>=0.8'} - - co@4.6.0: - resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} - engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} - - code-point-at@1.1.0: - resolution: {integrity: sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==} - engines: {node: '>=0.10.0'} - - collect-v8-coverage@1.0.1: - resolution: {integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==} - - color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} - - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - - color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - color-support@1.1.3: - resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} - hasBin: true - - combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} - - command-exists@1.2.9: - resolution: {integrity: sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==} - - commander@2.18.0: - resolution: {integrity: sha512-6CYPa+JP2ftfRU2qkDK+UTVeQYosOg/2GbcjIcKPHfinyOLPVGXu/ovN86RP49Re5ndJK1N0kuiidFFuepc4ZQ==} - - commander@3.0.2: - resolution: {integrity: sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==} - - commander@4.1.1: - resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} - engines: {node: '>= 6'} - - concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - - concurrently@8.2.2: - resolution: {integrity: sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg==} - engines: {node: ^14.13.0 || >=16.0.0} - hasBin: true - - console-control-strings@1.1.0: - resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} - - content-disposition@0.5.4: - resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} - engines: {node: '>= 0.6'} - - content-type@1.0.5: - resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} - engines: {node: '>= 0.6'} - - convert-source-map@1.9.0: - resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} - - convert-source-map@2.0.0: - resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - - cookie@0.4.2: - resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} - engines: {node: '>= 0.6'} - - cookie@0.5.0: - resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} - engines: {node: '>= 0.6'} - - cookies@0.8.0: - resolution: {integrity: sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow==} - engines: {node: '>= 0.8'} - - copy-anything@3.0.5: - resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==} - engines: {node: '>=12.13'} - - core-js@2.6.12: - resolution: {integrity: sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==} - deprecated: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js. - - core-util-is@1.0.3: - resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - - cosmiconfig@5.2.1: - resolution: {integrity: sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==} - engines: {node: '>=4'} - - cosmiconfig@6.0.0: - resolution: {integrity: sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==} - engines: {node: '>=8'} - - create-create-app@https://codeload.github.com/holic/create-create-app/tar.gz/74376c59b48a04aabbe94d9cacfe9cb1cecccd63: - resolution: {tarball: https://codeload.github.com/holic/create-create-app/tar.gz/74376c59b48a04aabbe94d9cacfe9cb1cecccd63} - version: 7.3.0 - hasBin: true - - create-hash@1.2.0: - resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} - - create-hmac@1.1.7: - resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==} - - cross-spawn@5.1.0: - resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} - - cross-spawn@6.0.5: - resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==} - engines: {node: '>=4.8'} - - cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} - - cssesc@3.0.0: - resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} - engines: {node: '>=4'} - hasBin: true - - cssstyle@3.0.0: - resolution: {integrity: sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==} - engines: {node: '>=14'} - - csstype@3.1.2: - resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} - - csv-generate@3.4.3: - resolution: {integrity: sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==} - - csv-parse@4.16.3: - resolution: {integrity: sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==} - - csv-stringify@5.6.5: - resolution: {integrity: sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A==} - - csv@5.5.3: - resolution: {integrity: sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g==} - engines: {node: '>= 0.1.90'} - - d@1.0.1: - resolution: {integrity: sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==} - - data-urls@4.0.0: - resolution: {integrity: sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g==} - engines: {node: '>=14'} - - dataloader@1.4.0: - resolution: {integrity: sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==} - - date-fns@1.30.1: - resolution: {integrity: sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==} - - date-fns@2.30.0: - resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} - engines: {node: '>=0.11'} - - debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - decamelize-keys@1.1.1: - resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} - engines: {node: '>=0.10.0'} - - decamelize@1.2.0: - resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} - engines: {node: '>=0.10.0'} - - decamelize@4.0.0: - resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} - engines: {node: '>=10'} - - decimal.js@10.4.3: - resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} - - decompress-response@6.0.0: - resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} - engines: {node: '>=10'} - - dedent@0.7.0: - resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} - - deep-eql@4.1.3: - resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} - engines: {node: '>=6'} - - deep-equal@1.0.1: - resolution: {integrity: sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==} - - deep-extend@0.6.0: - resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} - engines: {node: '>=4.0.0'} - - deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - - deepmerge@4.3.1: - resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} - engines: {node: '>=0.10.0'} - - defaults@1.0.4: - resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} - - define-properties@1.1.4: - resolution: {integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==} - engines: {node: '>= 0.4'} - - delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} - - delegates@1.0.0: - resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} - - depd@1.1.2: - resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} - engines: {node: '>= 0.6'} - - depd@2.0.0: - resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} - engines: {node: '>= 0.8'} - - destroy@1.2.0: - resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - - detect-indent@6.1.0: - resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} - engines: {node: '>=8'} - - detect-libc@1.0.3: - resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} - engines: {node: '>=0.10'} - hasBin: true - - detect-libc@2.0.2: - resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==} - engines: {node: '>=8'} - - detect-newline@3.1.0: - resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} - engines: {node: '>=8'} - - didyoumean@1.2.2: - resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} - - diff-sequences@27.5.1: - resolution: {integrity: sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - - diff-sequences@29.6.3: - resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - diff@5.0.0: - resolution: {integrity: sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==} - engines: {node: '>=0.3.1'} - - dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} - - dlv@1.1.3: - resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} - - doctrine@2.1.0: - resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} - engines: {node: '>=0.10.0'} - - doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} - - domexception@4.0.0: - resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} - engines: {node: '>=12'} - - dotenv@16.0.3: - resolution: {integrity: sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==} - engines: {node: '>=12'} - - dprint-node@1.0.7: - resolution: {integrity: sha512-NTZOW9A7ipb0n7z7nC3wftvsbceircwVHSgzobJsEQa+7RnOMbhrfX5IflA6CtC4GA63DSAiHYXa4JKEy9F7cA==} - - drizzle-orm@0.28.5: - resolution: {integrity: sha512-6r6Iw4c38NAmW6TiKH3TUpGUQ1YdlEoLJOQptn8XPx3Z63+vFNKfAiANqrIiYZiMjKR9+NYAL219nFrmo1duXA==} - peerDependencies: - '@aws-sdk/client-rds-data': '>=3' - '@cloudflare/workers-types': '>=3' - '@libsql/client': '*' - '@neondatabase/serverless': '>=0.1' - '@opentelemetry/api': ^1.4.1 - '@planetscale/database': '>=1' - '@types/better-sqlite3': '*' - '@types/pg': '*' - '@types/sql.js': '*' - '@vercel/postgres': '*' - better-sqlite3: '>=7' - bun-types: '*' - knex: '*' - kysely: '*' - mysql2: '>=2' - pg: '>=8' - postgres: '>=3' - sql.js: '>=1' - sqlite3: '>=5' - peerDependenciesMeta: - '@aws-sdk/client-rds-data': - optional: true - '@cloudflare/workers-types': - optional: true - '@libsql/client': - optional: true - '@neondatabase/serverless': - optional: true - '@opentelemetry/api': - optional: true - '@planetscale/database': - optional: true - '@types/better-sqlite3': - optional: true - '@types/pg': - optional: true - '@types/sql.js': - optional: true - '@vercel/postgres': - optional: true - better-sqlite3: - optional: true - bun-types: - optional: true - knex: - optional: true - kysely: - optional: true - mysql2: - optional: true - pg: - optional: true - postgres: - optional: true - sql.js: - optional: true - sqlite3: - optional: true - - ds-test@https://codeload.github.com/dapphub/ds-test/tar.gz/e282159d5170298eb2455a6c05280ab5a73a4ef0: - resolution: {tarball: https://codeload.github.com/dapphub/ds-test/tar.gz/e282159d5170298eb2455a6c05280ab5a73a4ef0} - version: 1.0.0 - - duplexify@3.7.1: - resolution: {integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==} - - duplexify@4.1.2: - resolution: {integrity: sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==} - - ee-first@1.1.1: - resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - - ejs@3.1.8: - resolution: {integrity: sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==} - engines: {node: '>=0.10.0'} - hasBin: true - - electron-to-chromium@1.4.340: - resolution: {integrity: sha512-zx8hqumOqltKsv/MF50yvdAlPF9S/4PXbyfzJS6ZGhbddGkRegdwImmfSVqCkEziYzrIGZ/TlrzBND4FysfkDg==} - - elegant-spinner@1.0.1: - resolution: {integrity: sha512-B+ZM+RXvRqQaAmkMlO/oSe5nMUOaUnyfGYCEHoR8wrXsZR2mA0XVibsxV1bvTwxdRWah1PkQqso2EzhILGHtEQ==} - engines: {node: '>=0.10.0'} - - elliptic@6.5.4: - resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} - - emittery@0.13.1: - resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} - engines: {node: '>=12'} - - emoji-regex@7.0.3: - resolution: {integrity: sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==} - - emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - - encodeurl@1.0.2: - resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} - engines: {node: '>= 0.8'} - - encoding@0.1.13: - resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} - - end-of-stream@1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - - enquirer@2.3.6: - resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} - engines: {node: '>=8.6'} - - entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} - engines: {node: '>=0.12'} - - env-paths@2.2.1: - resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} - engines: {node: '>=6'} - - envinfo@7.8.1: - resolution: {integrity: sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==} - engines: {node: '>=4'} - hasBin: true - - epicfail@3.0.0: - resolution: {integrity: sha512-zf7vvWZ2tI2+P1674dmcyPWopD/0FC2BrAi0DvDY0uKGmrB66rwpRVlOYKFlGwRO4Q6bpkoCTPhjqvi5hMOavQ==} - - err-code@2.0.3: - resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} - - error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} - - es-abstract@1.20.5: - resolution: {integrity: sha512-7h8MM2EQhsCA7pU/Nv78qOXFpD8Rhqd12gYiSJVkrH9+e8VuA8JlPJK/hQjjlLv6pJvx/z1iRFKzYb0XT/RuAQ==} - engines: {node: '>= 0.4'} - - es-shim-unscopables@1.0.0: - resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} - - es-to-primitive@1.2.1: - resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} - engines: {node: '>= 0.4'} - - es5-ext@0.10.62: - resolution: {integrity: sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==} - engines: {node: '>=0.10'} - - es6-iterator@2.0.3: - resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==} - - es6-symbol@3.1.3: - resolution: {integrity: sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==} - - es6-weak-map@2.0.3: - resolution: {integrity: sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==} - - esbuild@0.17.15: - resolution: {integrity: sha512-LBUV2VsUIc/iD9ME75qhT4aJj0r75abCVS0jakhFzOtR7TQsqQA5w0tZ+KTKnwl3kXE0MhskNdHDh/I5aCR1Zw==} - engines: {node: '>=12'} - hasBin: true - - esbuild@0.17.17: - resolution: {integrity: sha512-/jUywtAymR8jR4qsa2RujlAF7Krpt5VWi72Q2yuLD4e/hvtNcFQ0I1j8m/bxq238pf3/0KO5yuXNpuLx8BE1KA==} - engines: {node: '>=12'} - hasBin: true - - escalade@3.1.1: - resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} - engines: {node: '>=6'} - - escape-html@1.0.3: - resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} - - escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} - - escape-string-regexp@2.0.0: - resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} - engines: {node: '>=8'} - - escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - - eslint-plugin-react-hooks@4.6.0: - resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} - engines: {node: '>=10'} - peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 - - eslint-plugin-react@7.31.11: - resolution: {integrity: sha512-TTvq5JsT5v56wPa9OYHzsrOlHzKZKjV+aLgS+55NJP/cuzdiQPC7PfYoUjMoxlffKtvijpk7vA/jmuqRb9nohw==} - engines: {node: '>=4'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - - eslint-scope@4.0.3: - resolution: {integrity: sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==} - engines: {node: '>=4.0.0'} - - eslint-scope@7.2.2: - resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - eslint-utils@1.4.3: - resolution: {integrity: sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==} - engines: {node: '>=6'} - - eslint-visitor-keys@1.3.0: - resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} - engines: {node: '>=4'} - - eslint-visitor-keys@3.4.3: - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - eslint@5.16.0: - resolution: {integrity: sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==} - engines: {node: ^6.14.0 || ^8.10.0 || >=9.10.0} - hasBin: true - - eslint@8.57.0: - resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - hasBin: true - - espree@5.0.1: - resolution: {integrity: sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==} - engines: {node: '>=6.0.0'} - - espree@9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - - esquery@1.5.0: - resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} - engines: {node: '>=0.10'} - - esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} - - estraverse@4.3.0: - resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} - engines: {node: '>=4.0'} - - estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - - esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - - ethereum-bloom-filters@1.0.10: - resolution: {integrity: sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA==} - - ethereum-cryptography@0.1.3: - resolution: {integrity: sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==} - - ethereum-cryptography@1.2.0: - resolution: {integrity: sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==} - - ethereum-cryptography@2.1.3: - resolution: {integrity: sha512-BlwbIL7/P45W8FGW2r7LGuvoEZ+7PWsniMvQ4p5s2xCyw9tmaDlpfsN9HjAucbF+t/qpVHwZUisgfK24TCW8aA==} - - ethereumjs-abi@0.6.8: - resolution: {integrity: sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==} - - ethereumjs-util@6.2.1: - resolution: {integrity: sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==} - - ethers@5.7.2: - resolution: {integrity: sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==} - - ethjs-unit@0.1.6: - resolution: {integrity: sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==} - engines: {node: '>=6.5.0', npm: '>=3'} - - ethjs-util@0.1.6: - resolution: {integrity: sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==} - engines: {node: '>=6.5.0', npm: '>=3'} - - event-emitter@0.3.5: - resolution: {integrity: sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==} - - event-target-shim@5.0.1: - resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} - engines: {node: '>=6'} - - eventemitter3@4.0.7: - resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} - - events@3.3.0: - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} - engines: {node: '>=0.8.x'} - - evp_bytestokey@1.0.3: - resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} - - execa@3.4.0: - resolution: {integrity: sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g==} - engines: {node: ^8.12.0 || >=9.7.0} - - execa@5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} - engines: {node: '>=10'} - - execa@7.2.0: - resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} - engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} - - execcli@5.0.6: - resolution: {integrity: sha512-du+uy/Ew2P90PKjSHI89u/XuqVaBDzvaJ6ePn40JaOy7owFQNsYDbd5AoR5A559HEAb1i5HO22rJxtgVonf5Bg==} - engines: {node: '>=8', npm: '>=4'} - - exit@0.1.2: - resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} - engines: {node: '>= 0.8.0'} - - expand-template@2.0.3: - resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} - engines: {node: '>=6'} - - expect@29.5.0: - resolution: {integrity: sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - exponential-backoff@3.1.1: - resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==} - - ext@1.7.0: - resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} - - extend@3.0.2: - resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - - extendable-error@0.1.7: - resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} - - external-editor@3.1.0: - resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} - engines: {node: '>=4'} - - fast-content-type-parse@1.0.0: - resolution: {integrity: sha512-Xbc4XcysUXcsP5aHUU7Nq3OwvHq97C+WnbkeIefpeYLX+ryzFJlU6OStFJhs6Ol0LkUGpcK+wL0JwfM+FCU5IA==} - - fast-decode-uri-component@1.0.1: - resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==} - - fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - - fast-diff@1.2.0: - resolution: {integrity: sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==} - - fast-glob@3.2.12: - resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} - engines: {node: '>=8.6.0'} - - fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - - fast-json-stringify@5.8.0: - resolution: {integrity: sha512-VVwK8CFMSALIvt14U8AvrSzQAwN/0vaVRiFFUVlpnXSnDGrSkOAO5MtzyN8oQNjLd5AqTW5OZRgyjoNuAuR3jQ==} - - fast-levenshtein@2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - - fast-querystring@1.1.2: - resolution: {integrity: sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==} - - fast-redact@3.3.0: - resolution: {integrity: sha512-6T5V1QK1u4oF+ATxs1lWUmlEk6P2T9HqJG3e2DnHOdVgZy2rFJBoEnrIedcTXlkAHU/zKC+7KETJ+KGGKwxgMQ==} - engines: {node: '>=6'} - - fast-uri@2.2.0: - resolution: {integrity: sha512-cIusKBIt/R/oI6z/1nyfe2FvGKVTohVRfvkOhvx0nCEW+xf5NoCXjAHcWp93uOUBchzYcsvPlrapAdX1uW+YGg==} - - fastify-plugin@4.5.1: - resolution: {integrity: sha512-stRHYGeuqpEZTL1Ef0Ovr2ltazUT9g844X5z/zEBFLG8RYlpDiOCIG+ATvYEp+/zmc7sN29mcIMp8gvYplYPIQ==} - - fastify@4.21.0: - resolution: {integrity: sha512-tsu4bcwE4HetxqW8prA5fbC9bKHMYDp7jGEDWyzK1l90a3uOaLoIcQbdGcWeODNLVJviQnzh1wvIjTZE3MJFEg==} - - fastq@1.15.0: - resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} - - fb-watchman@2.0.2: - resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} - - figures@1.7.0: - resolution: {integrity: sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ==} - engines: {node: '>=0.10.0'} - - figures@2.0.0: - resolution: {integrity: sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==} - engines: {node: '>=4'} - - figures@3.2.0: - resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} - engines: {node: '>=8'} - - file-entry-cache@5.0.1: - resolution: {integrity: sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==} - engines: {node: '>=4'} - - file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} - - file-uri-to-path@1.0.0: - resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} - - filelist@1.0.4: - resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} - - fill-range@7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} - engines: {node: '>=8'} - - find-my-way@7.6.2: - resolution: {integrity: sha512-0OjHn1b1nCX3eVbm9ByeEHiscPYiHLfhei1wOUU9qffQkk98wE0Lo8VrVYfSGMgnSnDh86DxedduAnBf4nwUEw==} - engines: {node: '>=14'} - - find-up@2.1.0: - resolution: {integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==} - engines: {node: '>=4'} - - find-up@3.0.0: - resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} - engines: {node: '>=6'} - - find-up@4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} - - find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - - find-yarn-workspace-root2@1.2.16: - resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} - - findout@3.0.2: - resolution: {integrity: sha512-eatRX+s8jm8ml/S9Y5NBBjR4W8i7IeEmyddB3Lidak/nPZNfDxGzLEIaMKgeNj5/LHA1i0dC4Gwsb13H1bx+AA==} - engines: {node: '>=7.6', npm: '>=4'} - - flat-cache@2.0.1: - resolution: {integrity: sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==} - engines: {node: '>=4'} - - flat-cache@3.0.4: - resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} - engines: {node: ^10.12.0 || >=12.0.0} - - flat@5.0.2: - resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} - hasBin: true - - flatted@2.0.2: - resolution: {integrity: sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==} - - flatted@3.2.7: - resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} - - follow-redirects@1.15.2: - resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - - forge-std@https://codeload.github.com/foundry-rs/forge-std/tar.gz/74cfb77e308dd188d2f58864aaf44963ae6b88b1: - resolution: {tarball: https://codeload.github.com/foundry-rs/forge-std/tar.gz/74cfb77e308dd188d2f58864aaf44963ae6b88b1} - version: 1.6.0 - - form-data@4.0.0: - resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} - engines: {node: '>= 6'} - - forwarded@0.2.0: - resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} - engines: {node: '>= 0.6'} - - fp-ts@1.19.3: - resolution: {integrity: sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==} - - fraction.js@4.2.0: - resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==} - - fresh@0.5.2: - resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} - engines: {node: '>= 0.6'} - - from2@2.3.0: - resolution: {integrity: sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==} - - fs-constants@1.0.0: - resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} - - fs-extra@0.30.0: - resolution: {integrity: sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA==} - - fs-extra@7.0.1: - resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} - engines: {node: '>=6 <7 || >=8'} - - fs-extra@8.1.0: - resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} - engines: {node: '>=6 <7 || >=8'} - - fs-minipass@2.1.0: - resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} - engines: {node: '>= 8'} - - fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - function-bind@1.1.1: - resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} - - function.prototype.name@1.1.5: - resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} - engines: {node: '>= 0.4'} - - functional-red-black-tree@1.0.1: - resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==} - - functions-have-names@1.2.3: - resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - - gauge@4.0.4: - resolution: {integrity: sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - - gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} - - get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - - get-func-name@2.0.2: - resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} - - get-intrinsic@1.1.3: - resolution: {integrity: sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==} - - get-own-enumerable-property-symbols@3.0.2: - resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==} - - get-package-type@0.1.0: - resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} - engines: {node: '>=8.0.0'} - - get-port@6.1.2: - resolution: {integrity: sha512-BrGGraKm2uPqurfGVj/z97/zv8dPleC6x9JBNRTrDNtCkkRF4rPwrQXFgL7+I+q8QSdU4ntLQX2D7KIxSy8nGw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - get-stream@5.2.0: - resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} - engines: {node: '>=8'} - - get-stream@6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} - - get-symbol-description@1.0.0: - resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} - engines: {node: '>= 0.4'} - - get-tsconfig@4.5.0: - resolution: {integrity: sha512-MjhiaIWCJ1sAU4pIQ5i5OfOuHHxVo1oYeNsWTON7jxYkod8pHocXeh+SSbmu5OZZZK73B6cbJ2XADzXehLyovQ==} - - gitconfig@2.0.8: - resolution: {integrity: sha512-qOB1QswIHFNKAOPN0pEu7U1iyajLBv3Tz5X630UlkAtKM904I4dO7XIjH84wmR2SUVAgaVR99UC9U4ABJujAJQ==} - engines: {node: '>=6', npm: '>=3'} - - github-from-package@0.0.0: - resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} - - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - - glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} - - glob@7.1.6: - resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} - - glob@7.2.0: - resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==} - - glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - - glob@8.0.3: - resolution: {integrity: sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==} - engines: {node: '>=12'} - - glob@8.1.0: - resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} - engines: {node: '>=12'} - - globals@11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} - - globals@13.20.0: - resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} - engines: {node: '>=8'} - - globby@11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} - - google-protobuf@3.21.2: - resolution: {integrity: sha512-3MSOYFO5U9mPGikIYCzK0SaThypfGgS6bHqrUGXG3DPHCrb+txNqeEcns1W0lkGfk0rCyNXm7xB9rMxnCiZOoA==} - - gopd@1.0.1: - resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} - - graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - - grapheme-splitter@1.0.4: - resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} - - graphemer@1.4.0: - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - - handlebars@4.7.7: - resolution: {integrity: sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==} - engines: {node: '>=0.4.7'} - hasBin: true - - hard-rejection@2.1.0: - resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} - engines: {node: '>=6'} - - hardhat@2.22.0: - resolution: {integrity: sha512-t1J+ThxNYANL6ub6yM5XC84RY38vhfG7ODBtVRNQFQozdALo3qZUjxDzyGQU0U0eswe6orK49hq9UpdB7nPXNQ==} - hasBin: true - peerDependencies: - ts-node: '*' - typescript: '*' - peerDependenciesMeta: - ts-node: - optional: true - typescript: - optional: true - - has-ansi@2.0.0: - resolution: {integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==} - engines: {node: '>=0.10.0'} - - has-bigints@1.0.2: - resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} - - has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} - - has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - - has-property-descriptors@1.0.0: - resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} - - has-symbols@1.0.3: - resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} - engines: {node: '>= 0.4'} - - has-tostringtag@1.0.0: - resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} - engines: {node: '>= 0.4'} - - has-unicode@2.0.1: - resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} - - has@1.0.3: - resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} - engines: {node: '>= 0.4.0'} - - hasbin@1.2.3: - resolution: {integrity: sha512-CCd8e/w2w28G8DyZvKgiHnQJ/5XXDz6qiUHnthvtag/6T5acUeN5lqq+HMoBqcmgWueWDhiCplrw0Kb1zDACRg==} - engines: {node: '>=0.10'} - - hash-base@3.1.0: - resolution: {integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==} - engines: {node: '>=4'} - - hash.js@1.1.7: - resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} - - he@1.2.0: - resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} - hasBin: true - - hmac-drbg@1.0.1: - resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} - - hosted-git-info@2.8.9: - resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} - - html-encoding-sniffer@3.0.0: - resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} - engines: {node: '>=12'} - - html-escaper@2.0.2: - resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - - http-assert@1.5.0: - resolution: {integrity: sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==} - engines: {node: '>= 0.8'} - - http-cache-semantics@4.1.1: - resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} - - http-errors@1.8.1: - resolution: {integrity: sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==} - engines: {node: '>= 0.6'} - - http-errors@2.0.0: - resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} - engines: {node: '>= 0.8'} - - http-proxy-agent@5.0.0: - resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} - engines: {node: '>= 6'} - - http-proxy@1.18.1: - resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} - engines: {node: '>=8.0.0'} - - https-proxy-agent@5.0.1: - resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} - engines: {node: '>= 6'} - - human-id@1.0.2: - resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} - - human-signals@1.1.1: - resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==} - engines: {node: '>=8.12.0'} - - human-signals@2.1.0: - resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} - engines: {node: '>=10.17.0'} - - human-signals@4.3.1: - resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} - engines: {node: '>=14.18.0'} - - humanize-ms@1.2.1: - resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} - - husky@6.0.0: - resolution: {integrity: sha512-SQS2gDTB7tBN486QSoKPKQItZw97BMOd+Kdb6ghfpBc0yXyzrddI0oDV5MkDAbuB4X2mO3/nj60TRMcYxwzZeQ==} - hasBin: true - - iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} - - iconv-lite@0.6.3: - resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} - engines: {node: '>=0.10.0'} - - ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - - iftype@3.0.2: - resolution: {integrity: sha512-vA/NSyCG3E7XXWC1hmbEDj8WvsduSzLblmj4m2Idywx8YC6CKqGTYzrnoxbMrC+qBcHz85P7uwBwYEY2rX1jvQ==} - engines: {node: '>=4', npm: '>=2'} - - iftype@4.0.9: - resolution: {integrity: sha512-01Klo+04dkDzY193D1GVfOdQzmpqaYFJTAlZKRztkT/BOaU7sSnvxGimSln+7DMqLUP4tpDTNFgxqVPLYZVypA==} - engines: {node: '>=8', npm: '>=5'} - - ignore@4.0.6: - resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} - engines: {node: '>= 4'} - - ignore@5.2.4: - resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} - engines: {node: '>= 4'} - - immutable@4.3.5: - resolution: {integrity: sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==} - - import-fresh@2.0.0: - resolution: {integrity: sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==} - engines: {node: '>=4'} - - import-fresh@3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} - engines: {node: '>=6'} - - import-local@3.1.0: - resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} - engines: {node: '>=8'} - hasBin: true - - imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} - - indent-string@3.2.0: - resolution: {integrity: sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ==} - engines: {node: '>=4'} - - indent-string@4.0.0: - resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} - engines: {node: '>=8'} - - infer-owner@1.0.4: - resolution: {integrity: sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==} - - inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - - inherits@2.0.3: - resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} - - inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - - ini@1.3.8: - resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - - inquirer@6.5.2: - resolution: {integrity: sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==} - engines: {node: '>=6.0.0'} - - inquirer@7.3.3: - resolution: {integrity: sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==} - engines: {node: '>=8.0.0'} - - internal-slot@1.0.3: - resolution: {integrity: sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==} - engines: {node: '>= 0.4'} - - into-stream@6.0.0: - resolution: {integrity: sha512-XHbaOAvP+uFKUFsOgoNPRjLkwB+I22JFPFe5OjTkQ0nwgj6+pSjb4NmB6VMxaPshLiOf+zcpOCBQuLwC1KHhZA==} - engines: {node: '>=10'} - - io-ts@1.10.4: - resolution: {integrity: sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g==} - - ip@2.0.0: - resolution: {integrity: sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==} - - ipaddr.js@1.9.1: - resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} - engines: {node: '>= 0.10'} - - is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - - is-bigint@1.0.4: - resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} - - is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - - is-boolean-object@1.1.2: - resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} - engines: {node: '>= 0.4'} - - is-callable@1.2.7: - resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} - engines: {node: '>= 0.4'} - - is-ci@3.0.1: - resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} - hasBin: true - - is-core-module@2.12.0: - resolution: {integrity: sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==} - - is-date-object@1.0.5: - resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} - engines: {node: '>= 0.4'} - - is-directory@0.3.1: - resolution: {integrity: sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==} - engines: {node: '>=0.10.0'} - - is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - - is-fullwidth-code-point@1.0.0: - resolution: {integrity: sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==} - engines: {node: '>=0.10.0'} - - is-fullwidth-code-point@2.0.0: - resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} - engines: {node: '>=4'} - - is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - - is-generator-fn@2.1.0: - resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} - engines: {node: '>=6'} - - is-generator-function@1.0.10: - resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} - engines: {node: '>= 0.4'} - - is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - - is-hex-prefixed@1.0.0: - resolution: {integrity: sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==} - engines: {node: '>=6.5.0', npm: '>=3'} - - is-lambda@1.0.1: - resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} - - is-negative-zero@2.0.2: - resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} - engines: {node: '>= 0.4'} - - is-number-object@1.0.7: - resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} - engines: {node: '>= 0.4'} - - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - - is-obj@1.0.1: - resolution: {integrity: sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==} - engines: {node: '>=0.10.0'} - - is-observable@1.1.0: - resolution: {integrity: sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==} - engines: {node: '>=4'} - - is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - - is-plain-obj@1.1.0: - resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} - engines: {node: '>=0.10.0'} - - is-plain-obj@2.1.0: - resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} - engines: {node: '>=8'} - - is-potential-custom-element-name@1.0.1: - resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} - - is-promise@2.2.2: - resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} - - is-regex@1.1.4: - resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} - engines: {node: '>= 0.4'} - - is-regexp@1.0.0: - resolution: {integrity: sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==} - engines: {node: '>=0.10.0'} - - is-shared-array-buffer@1.0.2: - resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} - - is-stream@1.1.0: - resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} - engines: {node: '>=0.10.0'} - - is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} - - is-stream@3.0.0: - resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - is-string@1.0.7: - resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} - engines: {node: '>= 0.4'} - - is-subdir@1.2.0: - resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} - engines: {node: '>=4'} - - is-symbol@1.0.4: - resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} - engines: {node: '>= 0.4'} - - is-unicode-supported@0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} - engines: {node: '>=10'} - - is-utf8@0.2.1: - resolution: {integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==} - - is-weakref@1.0.2: - resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} - - is-what@4.1.15: - resolution: {integrity: sha512-uKua1wfy3Yt+YqsD6mTUEa2zSi3G1oPlqTflgaPJ7z63vUGN5pxFpnQfeSLMFnJDEsdvOtkp1rUWkYjB4YfhgA==} - engines: {node: '>=12.13'} - - is-windows@1.0.2: - resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} - engines: {node: '>=0.10.0'} - - isarray@1.0.0: - resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - - isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - - isows@1.0.3: - resolution: {integrity: sha512-2cKei4vlmg2cxEjm3wVSqn8pcoRF/LX/wpifuuNquFO4SQmPwarClT+SUCA2lt+l581tTeZIPIZuIDo2jWN1fg==} - peerDependencies: - ws: '*' - - istanbul-lib-coverage@3.2.0: - resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} - engines: {node: '>=8'} - - istanbul-lib-instrument@5.2.1: - resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} - engines: {node: '>=8'} - - istanbul-lib-report@3.0.0: - resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} - engines: {node: '>=8'} - - istanbul-lib-source-maps@4.0.1: - resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} - engines: {node: '>=10'} - - istanbul-reports@3.1.5: - resolution: {integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==} - engines: {node: '>=8'} - - jake@10.8.5: - resolution: {integrity: sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==} - engines: {node: '>=10'} - hasBin: true - - jest-changed-files@29.5.0: - resolution: {integrity: sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-circus@29.5.0: - resolution: {integrity: sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-cli@29.5.0: - resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - - jest-config@29.5.0: - resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@types/node': '*' - ts-node: '>=9.0.0' - peerDependenciesMeta: - '@types/node': - optional: true - ts-node: - optional: true - - jest-diff@27.5.1: - resolution: {integrity: sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - - jest-diff@29.5.0: - resolution: {integrity: sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-docblock@29.4.3: - resolution: {integrity: sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-each@29.5.0: - resolution: {integrity: sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-environment-node@29.5.0: - resolution: {integrity: sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-get-type@27.5.1: - resolution: {integrity: sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - - jest-get-type@29.4.3: - resolution: {integrity: sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-haste-map@29.5.0: - resolution: {integrity: sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-leak-detector@29.5.0: - resolution: {integrity: sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-matcher-utils@27.5.1: - resolution: {integrity: sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - - jest-matcher-utils@29.5.0: - resolution: {integrity: sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-message-util@29.5.0: - resolution: {integrity: sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-mock@29.5.0: - resolution: {integrity: sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-pnp-resolver@1.2.3: - resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} - engines: {node: '>=6'} - peerDependencies: - jest-resolve: '*' - peerDependenciesMeta: - jest-resolve: - optional: true - - jest-regex-util@29.4.3: - resolution: {integrity: sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-resolve-dependencies@29.5.0: - resolution: {integrity: sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-resolve@29.5.0: - resolution: {integrity: sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-runner@29.5.0: - resolution: {integrity: sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-runtime@29.5.0: - resolution: {integrity: sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-snapshot@29.5.0: - resolution: {integrity: sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-util@29.5.0: - resolution: {integrity: sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-validate@29.5.0: - resolution: {integrity: sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-watcher@29.5.0: - resolution: {integrity: sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-worker@29.5.0: - resolution: {integrity: sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest@29.5.0: - resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - - jiti@1.18.2: - resolution: {integrity: sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==} - hasBin: true - - joycon@3.1.1: - resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} - engines: {node: '>=10'} - - js-base64@3.7.5: - resolution: {integrity: sha512-3MEt5DTINKqfScXKfJFrRbxkrnk2AxPWGBL/ycjz4dK8iqiSJ06UxD8jh8xuh6p10TX4t2+7FsBYVxxQbMg+qA==} - - js-sha3@0.8.0: - resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} - - js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - - js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true - - js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true - - jsdom@22.1.0: - resolution: {integrity: sha512-/9AVW7xNbsBv6GfWho4TTNjEo9fe6Zhf9O7s0Fhhr3u+awPwAJMKwAMXnkk5vBxflqLW9hTHX/0cs+P3gW+cQw==} - engines: {node: '>=16'} - peerDependencies: - canvas: ^2.5.0 - peerDependenciesMeta: - canvas: - optional: true - - jsesc@2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} - hasBin: true - - json-parse-better-errors@1.0.2: - resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} - - json-parse-even-better-errors@2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - - json-schema-traverse@0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - - json-schema-traverse@1.0.0: - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - - json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - - json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true - - jsonc-parser@3.2.0: - resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} - - jsonfile@2.4.0: - resolution: {integrity: sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==} - - jsonfile@4.0.0: - resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} - - jsonparse@1.3.1: - resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} - engines: {'0': node >= 0.2.0} - - jsonstream-next@3.0.0: - resolution: {integrity: sha512-aAi6oPhdt7BKyQn1SrIIGZBt0ukKuOUE1qV6kJ3GgioSOYzsRc8z9Hfr1BVmacA/jLe9nARfmgMGgn68BqIAgg==} - engines: {node: '>=10'} - hasBin: true - - jsx-ast-utils@3.3.3: - resolution: {integrity: sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==} - engines: {node: '>=4.0'} - - keccak-wasm@0.10.3: - resolution: {integrity: sha512-HMbeV9BX+hGmrPk5C1PdZBPAGIAVyGzKywQt4OnU9cG+7sI1/moZmH7DXRd3XQBhR6z04LdMXkA15roVINmMsA==} - peerDependencies: - buffer-lite: ^1.0.0 - - keccak@3.0.4: - resolution: {integrity: sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==} - engines: {node: '>=10.0.0'} - - keygrip@1.1.0: - resolution: {integrity: sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==} - engines: {node: '>= 0.6'} - - kind-of@6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} - engines: {node: '>=0.10.0'} - - klaw@1.3.1: - resolution: {integrity: sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==} - - kleur@3.0.3: - resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} - engines: {node: '>=6'} - - kleur@4.1.5: - resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} - engines: {node: '>=6'} - - koa-compose@4.1.0: - resolution: {integrity: sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==} - - koa-convert@2.0.0: - resolution: {integrity: sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA==} - engines: {node: '>= 10'} - - koa@2.14.2: - resolution: {integrity: sha512-VFI2bpJaodz6P7x2uyLiX6RLYpZmOJqNmoCst/Yyd7hQlszyPwG/I9CQJ63nOtKSxpt5M7NH67V6nJL2BwCl7g==} - engines: {node: ^4.8.4 || ^6.10.1 || ^7.10.1 || >= 8.1.4} - - kysely@0.26.3: - resolution: {integrity: sha512-yWSgGi9bY13b/W06DD2OCDDHQmq1kwTGYlQ4wpZkMOJqMGCstVCFIvxCCVG4KfY1/3G0MhDAcZsip/Lw8/vJWw==} - engines: {node: '>=14.0.0'} - - leven@3.1.0: - resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} - engines: {node: '>=6'} - - levn@0.3.0: - resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} - engines: {node: '>= 0.8.0'} - - levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} - - license.js@3.1.2: - resolution: {integrity: sha512-anbqciJ9HfQVMRicsegiZOJ6nrP93ly24alImDOO7KndNLs3Um861fSEpXpWqGPMOv7PfZTJZL1p4cPq+Au4BQ==} - engines: {node: '>=8.0.0'} - - light-my-request@5.10.0: - resolution: {integrity: sha512-ZU2D9GmAcOUculTTdH9/zryej6n8TzT+fNGdNtm6SDp5MMMpHrJJkvAdE3c6d8d2chE9i+a//dS9CWZtisknqA==} - - lilconfig@2.1.0: - resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} - engines: {node: '>=10'} - - lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - - lint-staged@10.0.0: - resolution: {integrity: sha512-/MrZOLMnljjMHakxlRd1Z5Kr8wWWlrWFasye7HaTv5tx56icwzT/STRty8flMKsyzBGTfTa9QszNVPsDS/yOug==} - hasBin: true - - listr-silent-renderer@1.1.1: - resolution: {integrity: sha512-L26cIFm7/oZeSNVhWB6faeorXhMg4HNlb/dS/7jHhr708jxlXrtrBWo4YUxZQkc6dGoxEAe6J/D3juTRBUzjtA==} - engines: {node: '>=4'} - - listr-update-renderer@0.5.0: - resolution: {integrity: sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA==} - engines: {node: '>=6'} - peerDependencies: - listr: ^0.14.2 - - listr-verbose-renderer@0.5.0: - resolution: {integrity: sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw==} - engines: {node: '>=4'} - - listr@0.14.3: - resolution: {integrity: sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA==} - engines: {node: '>=6'} - - load-tsconfig@0.2.5: - resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - load-yaml-file@0.2.0: - resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} - engines: {node: '>=6'} - - local-pkg@0.4.3: - resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} - engines: {node: '>=14'} - - locate-path@2.0.0: - resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==} - engines: {node: '>=4'} - - locate-path@3.0.0: - resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} - engines: {node: '>=6'} - - locate-path@5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} - - locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - - lodash.get@4.4.2: - resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} - - lodash.memoize@4.1.2: - resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} - - lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - - lodash.sortby@4.7.0: - resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} - - lodash.startcase@4.4.0: - resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} - - lodash.truncate@4.4.2: - resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} - - lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - - log-symbols@1.0.2: - resolution: {integrity: sha512-mmPrW0Fh2fxOzdBbFv4g1m6pR72haFLPJ2G5SJEELf1y+iaQrDG6cWCPjy54RHYbZAt7X+ls690Kw62AdWXBzQ==} - engines: {node: '>=0.10.0'} - - log-symbols@3.0.0: - resolution: {integrity: sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==} - engines: {node: '>=8'} - - log-symbols@4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} - engines: {node: '>=10'} - - log-update@2.3.0: - resolution: {integrity: sha512-vlP11XfFGyeNQlmEn9tJ66rEW1coA/79m5z6BCkudjbAGE83uhAcGYrBFwfs3AdLiLzGRusRPAbSPK9xZteCmg==} - engines: {node: '>=4'} - - long@4.0.0: - resolution: {integrity: sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==} - - long@5.2.1: - resolution: {integrity: sha512-GKSNGeNAtw8IryjjkhZxuKB3JzlcLTwjtiQCHKvqQet81I93kXslhDQruGI/QsddO83mcDToBVy7GqGS/zYf/A==} - - loose-envify@1.4.0: - resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} - hasBin: true - - loupe@2.3.6: - resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==} - deprecated: Please upgrade to 2.3.7 which fixes GHSA-4q6p-r6v2-jvc5 - - lru-cache@4.1.5: - resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} - - lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - - lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - - lru-cache@7.18.3: - resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} - engines: {node: '>=12'} - - lru-queue@0.1.0: - resolution: {integrity: sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==} - - lru_map@0.3.3: - resolution: {integrity: sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==} - - magic-string@0.30.5: - resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} - engines: {node: '>=12'} - - make-dir@3.1.0: - resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} - engines: {node: '>=8'} - - make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - - make-fetch-happen@10.2.1: - resolution: {integrity: sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - - makeerror@1.0.12: - resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} - - map-obj@1.0.1: - resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} - engines: {node: '>=0.10.0'} - - map-obj@4.3.0: - resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} - engines: {node: '>=8'} - - md5.js@1.3.5: - resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} - - media-typer@0.3.0: - resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} - engines: {node: '>= 0.6'} - - memoizee@0.4.15: - resolution: {integrity: sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==} - - memorystream@0.3.1: - resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} - engines: {node: '>= 0.10.0'} - - meow@6.1.1: - resolution: {integrity: sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==} - engines: {node: '>=8'} - - merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - - merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - - methods@1.1.2: - resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} - engines: {node: '>= 0.6'} - - micro-ftch@0.3.1: - resolution: {integrity: sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==} - - micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} - engines: {node: '>=8.6'} - - mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - - mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} - - mimic-fn@1.2.0: - resolution: {integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==} - engines: {node: '>=4'} - - mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} - - mimic-fn@4.0.0: - resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} - engines: {node: '>=12'} - - mimic-response@3.1.0: - resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} - engines: {node: '>=10'} - - min-indent@1.0.1: - resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} - engines: {node: '>=4'} - - minimalistic-assert@1.0.1: - resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} - - minimalistic-crypto-utils@1.0.1: - resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} - - minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - - minimatch@5.0.1: - resolution: {integrity: sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==} - engines: {node: '>=10'} - - minimatch@5.1.6: - resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} - engines: {node: '>=10'} - - minimatch@9.0.3: - resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} - engines: {node: '>=16 || 14 >=14.17'} - - minimist-options@4.1.0: - resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} - engines: {node: '>= 6'} - - minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - - minipass-collect@1.0.2: - resolution: {integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==} - engines: {node: '>= 8'} - - minipass-fetch@2.1.2: - resolution: {integrity: sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - - minipass-flush@1.0.5: - resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} - engines: {node: '>= 8'} - - minipass-pipeline@1.2.4: - resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==} - engines: {node: '>=8'} - - minipass-sized@1.0.3: - resolution: {integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==} - engines: {node: '>=8'} - - minipass@3.3.6: - resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} - engines: {node: '>=8'} - - minipass@5.0.0: - resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} - engines: {node: '>=8'} - - minipass@7.0.4: - resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} - engines: {node: '>=16 || 14 >=14.17'} - - minizlib@2.1.2: - resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} - engines: {node: '>= 8'} - - mixme@0.5.9: - resolution: {integrity: sha512-VC5fg6ySUscaWUpI4gxCBTQMH2RdUpNrk+MsbpCYtIvf9SBJdiUey4qE7BXviJsJR4nDQxCZ+3yaYNW3guz/Pw==} - engines: {node: '>= 8.0.0'} - - mkdirp-classic@0.5.3: - resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} - - mkdirp@0.5.6: - resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} - hasBin: true - - mkdirp@1.0.4: - resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} - engines: {node: '>=10'} - hasBin: true - - mlly@1.5.0: - resolution: {integrity: sha512-NPVQvAY1xr1QoVeG0cy8yUYC7FQcOx6evl/RjT1wL5FvzPnzOysoqB/jmx/DhssT2dYa8nxECLAaFI/+gVLhDQ==} - - mnemonist@0.38.5: - resolution: {integrity: sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==} - - mnemonist@0.39.5: - resolution: {integrity: sha512-FPUtkhtJ0efmEFGpU14x7jGbTB+s18LrzRL2KgoWz9YvcY3cPomz8tih01GbHwnGk/OmkOKfqd/RAQoc8Lm7DQ==} - - mobx@6.9.0: - resolution: {integrity: sha512-HdKewQEREEJgsWnErClfbFoVebze6rGazxFLU/XUyrII8dORfVszN1V0BMRnQSzcgsNNtkX8DHj3nC6cdWE9YQ==} - - mocha@10.3.0: - resolution: {integrity: sha512-uF2XJs+7xSLsrmIvn37i/wnc91nw7XjOQB8ccyx5aEgdnohr7n+rEiZP23WkCYHjilR6+EboEnbq/ZQDz4LSbg==} - engines: {node: '>= 14.0.0'} - hasBin: true - - ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - - ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - - mute-stream@0.0.7: - resolution: {integrity: sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==} - - mute-stream@0.0.8: - resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} - - mz@2.7.0: - resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - - nanoid@3.3.6: - resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - - napi-build-utils@1.0.2: - resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} - - natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - - negotiator@0.6.3: - resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} - engines: {node: '>= 0.6'} - - neo-async@2.6.2: - resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - - next-tick@1.1.0: - resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} - - nice-grpc-common@2.0.2: - resolution: {integrity: sha512-7RNWbls5kAL1QVUOXvBsv1uO0wPQK3lHv+cY1gwkTzirnG1Nop4cBJZubpgziNbaVc/bl9QJcyvsf/NQxa3rjQ==} - - nice-grpc-web@2.0.1: - resolution: {integrity: sha512-r8jy0TJY6ZO9qWtujiqmtRkqgItAChoJxJyYv+CHacP9G5kRIH03M+sQqtieXNNDUAKfFT/z5yroSy1cPFX0sA==} - - nice-try@1.0.5: - resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} - - node-abi@3.45.0: - resolution: {integrity: sha512-iwXuFrMAcFVi/ZoZiqq8BzAdsLw9kxDfTC0HMyjXfSL/6CSDAGD5UmR7azrAgWV1zKYq7dUUMj4owusBWKLsiQ==} - engines: {node: '>=10'} - - node-abi@3.52.0: - resolution: {integrity: sha512-JJ98b02z16ILv7859irtXn4oUaFWADtvkzy2c0IAatNVX2Mc9Yoh8z6hZInn3QwvMEYhHuQloYi+TTQy67SIdQ==} - engines: {node: '>=10'} - - node-addon-api@2.0.2: - resolution: {integrity: sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==} - - node-fetch@2.6.9: - resolution: {integrity: sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - - node-gyp-build@4.8.0: - resolution: {integrity: sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==} - hasBin: true - - node-gyp@9.4.1: - resolution: {integrity: sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ==} - engines: {node: ^12.13 || ^14.13 || >=16} - hasBin: true - - node-int64@0.4.0: - resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} - - node-releases@2.0.10: - resolution: {integrity: sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==} - - nopt@6.0.0: - resolution: {integrity: sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - hasBin: true - - normalize-package-data@2.5.0: - resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} - - normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - - normalize-range@0.1.2: - resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} - engines: {node: '>=0.10.0'} - - npm-run-path@4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} - engines: {node: '>=8'} - - npm-run-path@5.1.0: - resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - npmlog@6.0.2: - resolution: {integrity: sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - - number-is-nan@1.0.1: - resolution: {integrity: sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==} - engines: {node: '>=0.10.0'} - - number-to-bn@1.7.0: - resolution: {integrity: sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==} - engines: {node: '>=6.5.0', npm: '>=3'} - - nwsapi@2.2.7: - resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==} - - object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} - - object-hash@1.3.1: - resolution: {integrity: sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==} - engines: {node: '>= 0.10.0'} - - object-hash@3.0.0: - resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} - engines: {node: '>= 6'} - - object-inspect@1.12.2: - resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==} - - object-keys@1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} - engines: {node: '>= 0.4'} - - object.assign@4.1.4: - resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} - engines: {node: '>= 0.4'} - - object.entries@1.1.6: - resolution: {integrity: sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==} - engines: {node: '>= 0.4'} - - object.fromentries@2.0.6: - resolution: {integrity: sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==} - engines: {node: '>= 0.4'} - - object.hasown@1.1.2: - resolution: {integrity: sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==} - - object.values@1.1.6: - resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==} - engines: {node: '>= 0.4'} - - objnest@5.1.1: - resolution: {integrity: sha512-C4fjNlHhUQbHiiFpgzvZse3/WUHq356Da3P8NZazg9JpPHFiQP2Y9lmYvpLU06midap0YpNz/MuA8GGSL8G0YQ==} - engines: {node: '>=8', npm: '>=5'} - - obliterator@2.0.4: - resolution: {integrity: sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==} - - on-exit-leak-free@2.1.0: - resolution: {integrity: sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w==} - - on-finished@2.4.1: - resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} - engines: {node: '>= 0.8'} - - once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - - onetime@2.0.1: - resolution: {integrity: sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==} - engines: {node: '>=4'} - - onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} - - onetime@6.0.0: - resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} - engines: {node: '>=12'} - - only@0.0.2: - resolution: {integrity: sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==} - - openurl@1.1.1: - resolution: {integrity: sha512-d/gTkTb1i1GKz5k3XE3XFV/PxQ1k45zDqGP2OA7YhgsaLoqm6qRvARAZOFer1fcXritWlGBRCu/UgeS4HAnXAA==} - - optionator@0.8.3: - resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} - engines: {node: '>= 0.8.0'} - - optionator@0.9.3: - resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} - engines: {node: '>= 0.8.0'} - - ordinal@1.0.3: - resolution: {integrity: sha512-cMddMgb2QElm8G7vdaa02jhUNbTSrhsgAGUz1OokD83uJTwSUn+nKoNoKVVaRa08yF6sgfO7Maou1+bgLd9rdQ==} - - os-tmpdir@1.0.2: - resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} - engines: {node: '>=0.10.0'} - - outdent@0.5.0: - resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} - - p-filter@2.1.0: - resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} - engines: {node: '>=8'} - - p-finally@1.0.0: - resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} - engines: {node: '>=4'} - - p-finally@2.0.1: - resolution: {integrity: sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==} - engines: {node: '>=8'} - - p-is-promise@3.0.0: - resolution: {integrity: sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==} - engines: {node: '>=8'} - - p-limit@1.3.0: - resolution: {integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==} - engines: {node: '>=4'} - - p-limit@2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} - - p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - - p-limit@4.0.0: - resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - p-locate@2.0.0: - resolution: {integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==} - engines: {node: '>=4'} - - p-locate@3.0.0: - resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} - engines: {node: '>=6'} - - p-locate@4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} - - p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - - p-map@2.1.0: - resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} - engines: {node: '>=6'} - - p-map@4.0.0: - resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} - engines: {node: '>=10'} - - p-queue@6.6.2: - resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==} - engines: {node: '>=8'} - - p-retry@4.6.2: - resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} - engines: {node: '>=8'} - - p-timeout@3.2.0: - resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} - engines: {node: '>=8'} - - p-try@1.0.0: - resolution: {integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==} - engines: {node: '>=4'} - - p-try@2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} - - parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} - - parse-json@4.0.0: - resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} - engines: {node: '>=4'} - - parse-json@5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} - engines: {node: '>=8'} - - parse5@7.1.2: - resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} - - parseurl@1.3.3: - resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} - engines: {node: '>= 0.8'} - - path-exists@3.0.0: - resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} - engines: {node: '>=4'} - - path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - - path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - - path-is-inside@1.0.2: - resolution: {integrity: sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==} - - path-key@2.0.1: - resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} - engines: {node: '>=4'} - - path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - - path-key@4.0.0: - resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} - engines: {node: '>=12'} - - path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - - path-to-regexp@6.2.1: - resolution: {integrity: sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==} - - path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} - - path@0.12.7: - resolution: {integrity: sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==} - - pathe@1.1.2: - resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} - - pathval@1.1.1: - resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} - - pbkdf2@3.1.2: - resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==} - engines: {node: '>=0.12'} - - peek-stream@1.1.3: - resolution: {integrity: sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA==} - - picocolors@1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - - pify@2.3.0: - resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} - engines: {node: '>=0.10.0'} - - pify@3.0.0: - resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} - engines: {node: '>=4'} - - pify@4.0.1: - resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} - engines: {node: '>=6'} - - pino-abstract-transport@1.0.0: - resolution: {integrity: sha512-c7vo5OpW4wIS42hUVcT5REsL8ZljsUfBjqV/e2sFxmFEFZiq1XLUp5EYLtuDH6PEHq9W1egWqRbnLUP5FuZmOA==} - - pino-std-serializers@6.2.2: - resolution: {integrity: sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==} - - pino@8.14.2: - resolution: {integrity: sha512-zKu9aWeSWTy1JgvxIpZveJKKsAr4+6uNMZ0Vf0KRwzl/UNZA3XjHiIl/0WwqLMkDwuHuDkT5xAgPA2jpKq4whA==} - hasBin: true - - pirates@4.0.5: - resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} - engines: {node: '>= 6'} - - pkg-dir@4.2.0: - resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} - engines: {node: '>=8'} - - pkg-types@1.0.3: - resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} - - pkg-up@3.1.0: - resolution: {integrity: sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==} - engines: {node: '>=8'} - - please-upgrade-node@3.2.0: - resolution: {integrity: sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==} - - postcss-import@15.1.0: - resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} - engines: {node: '>=14.0.0'} - peerDependencies: - postcss: ^8.0.0 - - postcss-js@4.0.1: - resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} - engines: {node: ^12 || ^14 || >= 16} - peerDependencies: - postcss: ^8.4.21 - - postcss-load-config@3.1.4: - resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} - engines: {node: '>= 10'} - peerDependencies: - postcss: '>=8.0.9' - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true - - postcss-load-config@4.0.1: - resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==} - engines: {node: '>= 14'} - peerDependencies: - postcss: '>=8.0.9' - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true - - postcss-nested@6.0.1: - resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.2.14 - - postcss-selector-parser@6.0.11: - resolution: {integrity: sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==} - engines: {node: '>=4'} - - postcss-value-parser@4.2.0: - resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - - postcss@8.4.23: - resolution: {integrity: sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==} - engines: {node: ^10 || ^12 || >=14} - - postgres@3.3.5: - resolution: {integrity: sha512-+JD93VELV9gHkqpV5gdL5/70HdGtEw4/XE1S4BC8f1mcPmdib3K5XsKVbnR1XcAyC41zOnifJ+9YRKxdIsXiUw==} - - prebuild-install@7.1.1: - resolution: {integrity: sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==} - engines: {node: '>=10'} - hasBin: true - - preferred-pm@3.0.3: - resolution: {integrity: sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ==} - engines: {node: '>=10'} - - prelude-ls@1.1.2: - resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} - engines: {node: '>= 0.8.0'} - - prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} - - prettier-plugin-solidity@1.3.1: - resolution: {integrity: sha512-MN4OP5I2gHAzHZG1wcuJl0FsLS3c4Cc5494bbg+6oQWBPuEamjwDvmGfFMZ6NFzsh3Efd9UUxeT7ImgjNH4ozA==} - engines: {node: '>=16'} - peerDependencies: - prettier: '>=2.3.0' - - prettier@1.19.1: - resolution: {integrity: sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==} - engines: {node: '>=4'} - hasBin: true - - prettier@2.8.4: - resolution: {integrity: sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==} - engines: {node: '>=10.13.0'} - hasBin: true - - prettier@3.2.5: - resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} - engines: {node: '>=14'} - hasBin: true - - pretty-format@27.5.1: - resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - - pretty-format@29.5.0: - resolution: {integrity: sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - process-nextick-args@2.0.1: - resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - - process-warning@2.2.0: - resolution: {integrity: sha512-/1WZ8+VQjR6avWOgHeEPd7SDQmFQ1B5mC1eRXsCm5TarlNmx/wCsa5GEaxGm05BORRtyG/Ex/3xq3TuRvq57qg==} - - process@0.11.10: - resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} - engines: {node: '>= 0.6.0'} - - progress@2.0.3: - resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} - engines: {node: '>=0.4.0'} - - promise-inflight@1.0.1: - resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} - peerDependencies: - bluebird: '*' - peerDependenciesMeta: - bluebird: - optional: true - - promise-retry@2.0.1: - resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} - engines: {node: '>=10'} - - prompts@2.4.2: - resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} - engines: {node: '>= 6'} - - prop-types@15.8.1: - resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} - - protobufjs@6.11.3: - resolution: {integrity: sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg==} - hasBin: true - - protobufjs@7.2.3: - resolution: {integrity: sha512-TtpvOqwB5Gdz/PQmOjgsrGH1nHjAQVCN7JG4A6r1sXRWESL5rNMAiRcBQlCAdKxZcAbstExQePYG8xof/JVRgg==} - engines: {node: '>=12.0.0'} - - proxy-addr@2.0.7: - resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} - engines: {node: '>= 0.10'} - - proxy-deep@3.1.1: - resolution: {integrity: sha512-kppbvLUNJ4IOMZds9/4gz/rtT5OFiesy3XosLsgMKlF3vb6GA5Y3ptyDlzKLcOcUBW+zaY+RiMINTsgE+O6e+Q==} - - pseudomap@1.0.2: - resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} - - psl@1.9.0: - resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} - - pump@3.0.0: - resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} - - pumpify@2.0.1: - resolution: {integrity: sha512-m7KOje7jZxrmutanlkS1daj1dS6z6BgslzOXmcSEpIlCxM3VJH7lG5QLeck/6hgF6F4crFf01UtQmNsJfweTAw==} - - punycode@2.1.1: - resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} - engines: {node: '>=6'} - - punycode@2.3.0: - resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} - engines: {node: '>=6'} - - pure-rand@6.0.1: - resolution: {integrity: sha512-t+x1zEHDjBwkDGY5v5ApnZ/utcd4XYDiJsaQQoptTXgUXX95sDg1elCdJghzicm7n2mbCBJ3uYWr6M22SO19rg==} - - querystringify@2.2.0: - resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} - - queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - - quick-format-unescaped@4.0.4: - resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} - - quick-lru@4.0.1: - resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} - engines: {node: '>=8'} - - randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} - - raw-body@2.5.2: - resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} - engines: {node: '>= 0.8'} - - rc@1.2.8: - resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} - hasBin: true - - react-dom@18.2.0: - resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} - peerDependencies: - react: ^18.2.0 - - react-error-boundary@3.1.4: - resolution: {integrity: sha512-uM9uPzZJTF6wRQORmSrvOIgt4lJ9MC1sNgEOj2XGsDTRE4kmpWxg7ENK9EWNKJRMAOY9z0MuF4yIfl6gp4sotA==} - engines: {node: '>=10', npm: '>=6'} - peerDependencies: - react: '>=16.13.1' - - react-is@16.13.1: - resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} - - react-is@17.0.2: - resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} - - react-is@18.2.0: - resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} - - react-refresh@0.14.0: - resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==} - engines: {node: '>=0.10.0'} - - react-router-dom@6.11.0: - resolution: {integrity: sha512-Q3mK1c/CYoF++J6ZINz7EZzwlgSOZK/kc7lxIA7PhtWhKju4KfF1WHqlx0kVCIFJAWztuYVpXZeljEbds8z4Og==} - engines: {node: '>=14'} - peerDependencies: - react: '>=16.8' - react-dom: '>=16.8' - - react-router@6.11.0: - resolution: {integrity: sha512-hTm6KKNpj9SDG4syIWRjCU219O0RZY8RUPobCFt9p+PlF7nnkRgMoh2DieTKvw3F3Mw6zg565HGnSv8BuoY5oQ==} - engines: {node: '>=14'} - peerDependencies: - react: '>=16.8' - - react-shallow-renderer@16.15.0: - resolution: {integrity: sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==} - peerDependencies: - react: ^16.0.0 || ^17.0.0 || ^18.0.0 - - react-test-renderer@18.2.0: - resolution: {integrity: sha512-JWD+aQ0lh2gvh4NM3bBM42Kx+XybOxCpgYK7F8ugAlpaTSnWsX+39Z4XkOykGZAHrjwwTZT3x3KxswVWxHPUqA==} - peerDependencies: - react: ^18.2.0 - - react@18.2.0: - resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} - engines: {node: '>=0.10.0'} - - read-cache@1.0.0: - resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} - - read-pkg-up@7.0.1: - resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} - engines: {node: '>=8'} - - read-pkg@5.2.0: - resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} - engines: {node: '>=8'} - - read-yaml-file@1.1.0: - resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} - engines: {node: '>=6'} - - readable-stream@2.3.8: - resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} - - readable-stream@3.6.0: - resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} - engines: {node: '>= 6'} - - readable-stream@4.4.2: - resolution: {integrity: sha512-Lk/fICSyIhodxy1IDK2HazkeGjSmezAWX2egdtJnYhtzKEsBPJowlI6F6LPb5tqIQILrMbx22S5o3GuJavPusA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - - real-require@0.2.0: - resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} - engines: {node: '>= 12.13.0'} - - redent@3.0.0: - resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} - engines: {node: '>=8'} - - regenerator-runtime@0.11.1: - resolution: {integrity: sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==} - - regenerator-runtime@0.13.11: - resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} - - regexp.prototype.flags@1.4.3: - resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} - engines: {node: '>= 0.4'} - - regexpp@2.0.1: - resolution: {integrity: sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==} - engines: {node: '>=6.5.0'} - - require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - - require-from-string@2.0.2: - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} - engines: {node: '>=0.10.0'} - - require-main-filename@2.0.0: - resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} - - requires-port@1.0.0: - resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} - - resolve-cwd@3.0.0: - resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} - engines: {node: '>=8'} - - resolve-from@3.0.0: - resolution: {integrity: sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==} - engines: {node: '>=4'} - - resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - - resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - - resolve.exports@2.0.2: - resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} - engines: {node: '>=10'} - - resolve@1.17.0: - resolution: {integrity: sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==} - - resolve@1.22.2: - resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} - hasBin: true - - resolve@2.0.0-next.4: - resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==} - hasBin: true - - restore-cursor@2.0.0: - resolution: {integrity: sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==} - engines: {node: '>=4'} - - restore-cursor@3.1.0: - resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} - engines: {node: '>=8'} - - ret@0.2.2: - resolution: {integrity: sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==} - engines: {node: '>=4'} - - retry@0.12.0: - resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} - engines: {node: '>= 4'} - - retry@0.13.1: - resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} - engines: {node: '>= 4'} - - reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - - rfdc@1.3.0: - resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} - - rimraf@2.6.3: - resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} - hasBin: true - - rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - hasBin: true - - ripemd160@2.0.2: - resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} - - rlp@2.2.7: - resolution: {integrity: sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==} - hasBin: true - - rollup@3.21.8: - resolution: {integrity: sha512-SSFV2T2fWtQ/vvBip85u2Nr0GNKireabH9d7nXswBg+XSH+jbVDSYptRAEbCEsquhs503rpPA9POYAp0/Jhasw==} - engines: {node: '>=14.18.0', npm: '>=8.0.0'} - hasBin: true - - rrweb-cssom@0.6.0: - resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} - - run-async@2.4.1: - resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} - engines: {node: '>=0.12.0'} - - run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - - rxjs@6.6.7: - resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==} - engines: {npm: '>=2.0.0'} - - rxjs@7.5.5: - resolution: {integrity: sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==} - - rxjs@7.8.1: - resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} - - safe-buffer@5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - - safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - - safe-regex-test@1.0.0: - resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} - - safe-regex2@2.0.0: - resolution: {integrity: sha512-PaUSFsUaNNuKwkBijoAPHAK6/eM6VirvyPWlZ7BAQy4D+hCvh4B6lIG+nPdhbFfIbP+gTGBcrdsOaUs0F+ZBOQ==} - - safe-stable-stringify@2.4.3: - resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==} - engines: {node: '>=10'} - - safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - - saxes@6.0.0: - resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} - engines: {node: '>=v12.22.7'} - - scheduler@0.23.0: - resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} - - scrypt-js@3.0.1: - resolution: {integrity: sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==} - - secp256k1@4.0.3: - resolution: {integrity: sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==} - engines: {node: '>=10.0.0'} - - secure-json-parse@2.7.0: - resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} - - semver-compare@1.0.0: - resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==} - - semver@5.7.1: - resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} - hasBin: true - - semver@6.3.0: - resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} - hasBin: true - - semver@7.5.0: - resolution: {integrity: sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==} - engines: {node: '>=10'} - hasBin: true - - semver@7.6.0: - resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} - engines: {node: '>=10'} - hasBin: true - - serialize-javascript@6.0.0: - resolution: {integrity: sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==} - - set-blocking@2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - - set-cookie-parser@2.6.0: - resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} - - setimmediate@1.0.5: - resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} - - setprototypeof@1.2.0: - resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - - sha.js@2.4.11: - resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} - hasBin: true - - shebang-command@1.2.0: - resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} - engines: {node: '>=0.10.0'} - - shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - - shebang-regex@1.0.0: - resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} - engines: {node: '>=0.10.0'} - - shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - - shell-quote@1.8.1: - resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} - - side-channel@1.0.4: - resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} - - siginfo@2.0.0: - resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} - - signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - - simple-concat@1.0.1: - resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} - - simple-get@4.0.1: - resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} - - sisteransi@1.0.5: - resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - - slash@3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} - - slice-ansi@0.0.4: - resolution: {integrity: sha512-up04hB2hR92PgjpyU3y/eg91yIBILyjVY26NvvciY3EVVPjybkMszMpXQ9QAkcS3I5rtJBDLoTxxg+qvW8c7rw==} - engines: {node: '>=0.10.0'} - - slice-ansi@2.1.0: - resolution: {integrity: sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==} - engines: {node: '>=6'} - - slice-ansi@4.0.0: - resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} - engines: {node: '>=10'} - - smart-buffer@4.2.0: - resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} - engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} - - smartwrap@2.0.2: - resolution: {integrity: sha512-vCsKNQxb7PnCNd2wY1WClWifAc2lwqsG8OaswpJkVJsvMGcnEntdTCDajZCkk93Ay1U3t/9puJmb525Rg5MZBA==} - engines: {node: '>=6'} - hasBin: true - - socks-proxy-agent@7.0.0: - resolution: {integrity: sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==} - engines: {node: '>= 10'} - - socks@2.7.1: - resolution: {integrity: sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==} - engines: {node: '>= 10.13.0', npm: '>= 3.0.0'} - - solc@0.7.3: - resolution: {integrity: sha512-GAsWNAjGzIDg7VxzP6mPjdurby3IkGCjQcM8GFYZT6RyaoUZKmMU6Y7YwG+tFGhv7dwZ8rmR4iwFDrrD99JwqA==} - engines: {node: '>=8.0.0'} - hasBin: true - - solhint@3.3.7: - resolution: {integrity: sha512-NjjjVmXI3ehKkb3aNtRJWw55SUVJ8HMKKodwe0HnejA+k0d2kmhw7jvpa+MCTbcEgt8IWSwx0Hu6aCo/iYOZzQ==} - hasBin: true - - solidity-comments-extractor@0.0.8: - resolution: {integrity: sha512-htM7Vn6LhHreR+EglVMd2s+sZhcXAirB1Zlyrv5zBuTxieCvjfnRpd7iZk75m/u6NOlEyQ94C6TWbBn2cY7w8g==} - - sonic-boom@3.3.0: - resolution: {integrity: sha512-LYxp34KlZ1a2Jb8ZQgFCK3niIHzibdwtwNUWKg0qQRzsDoJ3Gfgkf8KdBTFU3SkejDEIlWwnSnpVdOZIhFMl/g==} - - source-map-js@1.0.2: - resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} - engines: {node: '>=0.10.0'} - - source-map-support@0.5.13: - resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} - - source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - - source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - - source-map@0.8.0-beta.0: - resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} - engines: {node: '>= 8'} - - spawn-command@0.0.2: - resolution: {integrity: sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==} - - spawndamnit@2.0.0: - resolution: {integrity: sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA==} - - spdx-correct@3.2.0: - resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} - - spdx-exceptions@2.3.0: - resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} - - spdx-expression-parse@3.0.1: - resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} - - spdx-license-ids@3.0.13: - resolution: {integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==} - - split2@3.2.2: - resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==} - - split2@4.2.0: - resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} - engines: {node: '>= 10.x'} - - sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - - sql.js@1.8.0: - resolution: {integrity: sha512-3HD8pSkZL+5YvYUI8nlvNILs61ALqq34xgmF+BHpqxe68yZIJ1H+sIVIODvni25+CcxHUxDyrTJUL0lE/m7afw==} - - ssri@9.0.1: - resolution: {integrity: sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - - stack-utils@2.0.6: - resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} - engines: {node: '>=10'} - - stackback@0.0.2: - resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} - - stacktrace-parser@0.1.10: - resolution: {integrity: sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==} - engines: {node: '>=6'} - - statuses@1.5.0: - resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} - engines: {node: '>= 0.6'} - - statuses@2.0.1: - resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} - engines: {node: '>= 0.8'} - - std-env@3.7.0: - resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} - - stream-shift@1.0.1: - resolution: {integrity: sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==} - - stream-to-array@2.3.0: - resolution: {integrity: sha512-UsZtOYEn4tWU2RGLOXr/o/xjRBftZRlG3dEWoaHr8j4GuypJ3isitGbVyjQKAuMu+xbiop8q224TjiZWc4XTZA==} - - stream-transform@2.1.3: - resolution: {integrity: sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ==} - - string-length@4.0.2: - resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} - engines: {node: '>=10'} - - string-width@1.0.2: - resolution: {integrity: sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==} - engines: {node: '>=0.10.0'} - - string-width@2.1.1: - resolution: {integrity: sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==} - engines: {node: '>=4'} - - string-width@3.1.0: - resolution: {integrity: sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==} - engines: {node: '>=6'} - - string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - - string.prototype.matchall@4.0.8: - resolution: {integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==} - - string.prototype.trimend@1.0.6: - resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} - - string.prototype.trimstart@1.0.6: - resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} - - string_decoder@1.1.1: - resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} - - string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - - stringcase@4.3.1: - resolution: {integrity: sha512-Ov7McNX1sFaEX9NWijD1hIOVDDhKdnFzN9tvoa1N8xgrclouhsO4kBPVrTPhjO/zP5mn1Ww03uZ2SThNMXS7zg==} - engines: {node: '>=8', npm: '>=5'} - - stringify-object@3.3.0: - resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==} - engines: {node: '>=4'} - - strip-ansi@3.0.1: - resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==} - engines: {node: '>=0.10.0'} - - strip-ansi@4.0.0: - resolution: {integrity: sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==} - engines: {node: '>=4'} - - strip-ansi@5.2.0: - resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} - engines: {node: '>=6'} - - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - - strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} - - strip-bom@4.0.0: - resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} - engines: {node: '>=8'} - - strip-final-newline@2.0.0: - resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} - engines: {node: '>=6'} - - strip-final-newline@3.0.0: - resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} - engines: {node: '>=12'} - - strip-hex-prefix@1.0.0: - resolution: {integrity: sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==} - engines: {node: '>=6.5.0', npm: '>=3'} - - strip-indent@3.0.0: - resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} - engines: {node: '>=8'} - - strip-json-comments@2.0.1: - resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} - engines: {node: '>=0.10.0'} - - strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - - strip-literal@1.3.0: - resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==} - - sucrase@3.32.0: - resolution: {integrity: sha512-ydQOU34rpSyj2TGyz4D2p8rbktIOZ8QY9s+DGLvFU1i5pWJE8vkpruCjGCMHsdXwnD7JDcS+noSwM/a7zyNFDQ==} - engines: {node: '>=8'} - hasBin: true - - superjson@1.12.4: - resolution: {integrity: sha512-vkpPQAxdCg9SLfPv5GPC5fnGrui/WryktoN9O5+Zif/14QIMjw+RITf/5LbBh+9QpBFb3KNvJth+puz2H8o6GQ==} - engines: {node: '>=10'} - - supports-color@2.0.0: - resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==} - engines: {node: '>=0.8.0'} - - supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} - - supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - - supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} - - supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - - symbol-observable@1.2.0: - resolution: {integrity: sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==} - engines: {node: '>=0.10.0'} - - symbol-tree@3.2.4: - resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} - - table@5.4.6: - resolution: {integrity: sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==} - engines: {node: '>=6.0.0'} - - table@6.8.1: - resolution: {integrity: sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==} - engines: {node: '>=10.0.0'} - - tailwind-merge@1.12.0: - resolution: {integrity: sha512-Y17eDp7FtN1+JJ4OY0Bqv9OA41O+MS8c1Iyr3T6JFLnOgLg3EvcyMKZAnQ8AGyvB5Nxm3t9Xb5Mhe139m8QT/g==} - - tailwindcss@3.3.2: - resolution: {integrity: sha512-9jPkMiIBXvPc2KywkraqsUfbfj+dHDb+JPWtSJa9MLFdrPyazI7q6WX2sUrm7R9eVR7qqv3Pas7EvQFzxKnI6w==} - engines: {node: '>=14.0.0'} - hasBin: true - - tar-fs@2.1.1: - resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} - - tar-stream@2.2.0: - resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} - engines: {node: '>=6'} - - tar@6.2.0: - resolution: {integrity: sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==} - engines: {node: '>=10'} - - term-size@2.2.1: - resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} - engines: {node: '>=8'} - - test-exclude@6.0.0: - resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} - engines: {node: '>=8'} - - text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - - thenify-all@1.6.0: - resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} - engines: {node: '>=0.8'} - - thenify@3.3.1: - resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} - - thread-stream@2.3.0: - resolution: {integrity: sha512-kaDqm1DET9pp3NXwR8382WHbnpXnRkN9xGN9dQt3B2+dmXiW8X1SOwmFOxAErEQ47ObhZ96J6yhZNXuyCOL7KA==} - - throttle-debounce@5.0.0: - resolution: {integrity: sha512-2iQTSgkkc1Zyk0MeVrt/3BvuOXYPl/R8Z0U2xxo9rjwNciaHDG3R+Lm6dh4EeUci49DanvBnuqI6jshoQQRGEg==} - engines: {node: '>=12.22'} - - through2@2.0.5: - resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} - - through2@4.0.2: - resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==} - - through@2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - - timers-ext@0.1.7: - resolution: {integrity: sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==} - - tiny-lru@11.0.1: - resolution: {integrity: sha512-iNgFugVuQgBKrqeO/mpiTTgmBsTP0WL6yeuLfLs/Ctf0pI/ixGqIRm8sDCwMcXGe9WWvt2sGXI5mNqZbValmJg==} - engines: {node: '>=12'} - - tinybench@2.6.0: - resolution: {integrity: sha512-N8hW3PG/3aOoZAN5V/NSAEDz0ZixDSSt5b/a05iqtpgfLWMSVuCo7w0k2vVvEjdrIoeGqZzweX2WlyioNIHchA==} - - tinypool@0.7.0: - resolution: {integrity: sha512-zSYNUlYSMhJ6Zdou4cJwo/p7w5nmAH17GRfU/ui3ctvjXFErXXkruT4MWW6poDeXgCaIBlGLrfU6TbTXxyGMww==} - engines: {node: '>=14.0.0'} - - tinyspy@2.2.0: - resolution: {integrity: sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg==} - engines: {node: '>=14.0.0'} - - tmp@0.0.33: - resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} - engines: {node: '>=0.6.0'} - - tmpl@1.0.5: - resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} - - to-fast-properties@2.0.0: - resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} - engines: {node: '>=4'} - - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - - toidentifier@1.0.1: - resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} - engines: {node: '>=0.6'} - - toposort@2.0.2: - resolution: {integrity: sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==} - - tough-cookie@4.1.3: - resolution: {integrity: sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==} - engines: {node: '>=6'} - - tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - - tr46@1.0.1: - resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} - - tr46@4.1.1: - resolution: {integrity: sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==} - engines: {node: '>=14'} - - tree-kill@1.2.2: - resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} - hasBin: true - - treeify@1.1.0: - resolution: {integrity: sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==} - engines: {node: '>=0.6'} - - trim-newlines@3.0.1: - resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} - engines: {node: '>=8'} - - trpc-koa-adapter@1.1.3: - resolution: {integrity: sha512-2rdmVuuFGLMyrUtW6ktroAzBsp2fc8oFuOEhNAcroJBei3DPF/UISr9qAeQX4MUEi9FCT2+bi4pBPcm8HKj8PA==} - peerDependencies: - '@trpc/server': ^10.0.0-rc.4 - koa: '>=2.13.0' - - ts-api-utils@1.2.1: - resolution: {integrity: sha512-RIYA36cJn2WiH9Hy77hdF9r7oEwxAtB/TS9/S4Qd90Ap4z5FSiin5zEiTL44OII1Y3IIlEvxwxFUVgrHSZ/UpA==} - engines: {node: '>=16'} - peerDependencies: - typescript: '>=4.2.0' - - ts-error@1.0.6: - resolution: {integrity: sha512-tLJxacIQUM82IR7JO1UUkKlYuUTmoY9HBJAmNWFzheSlDS5SPMcNIepejHJa4BpPQLAcbRhRf3GDJzyj6rbKvA==} - - ts-interface-checker@0.1.13: - resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - - ts-jest@29.0.5: - resolution: {integrity: sha512-PL3UciSgIpQ7f6XjVOmbi96vmDHUqAyqDr8YxzopDqX3kfgYtX1cuNeBjP+L9sFXi6nzsGGA6R3fP3DDDJyrxA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - '@babel/core': '>=7.0.0-beta.0 <8' - '@jest/types': ^29.0.0 - babel-jest: ^29.0.0 - esbuild: '*' - jest: ^29.0.0 - typescript: '>=4.3' - peerDependenciesMeta: - '@babel/core': - optional: true - '@jest/types': - optional: true - babel-jest: - optional: true - esbuild: - optional: true - - ts-poet@6.4.1: - resolution: {integrity: sha512-AjZEs4h2w4sDfwpHMxQKHrTlNh2wRbM5NRXmLz0RiH+yPGtSQFbe9hBpNocU8vqVNgfh0BIOiXR80xDz3kKxUQ==} - - ts-proto-descriptors@1.8.0: - resolution: {integrity: sha512-iV20plcI8+GRkeZIAygxOOH0p2xpOsKfw9kI1W20NCwawi1/4bG/YRd9rQY9XSJP+lD9j7XbSy3tFFuikfsljw==} - - ts-proto@1.146.0: - resolution: {integrity: sha512-OyBZRjmqqw+aatLEUbRooWO6VKTtOLJQyaQFMciigEZPNgTsWtApqHpQDtqDMQFWEXhIARqEV+B7ZJx8cljhZA==} - hasBin: true - - tslib@1.14.1: - resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - - tslib@2.5.0: - resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} - - tsort@0.0.1: - resolution: {integrity: sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==} - - tsscmp@1.0.6: - resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==} - engines: {node: '>=0.6.x'} - - tsup@6.7.0: - resolution: {integrity: sha512-L3o8hGkaHnu5TdJns+mCqFsDBo83bJ44rlK7e6VdanIvpea4ArPcU3swWGsLVbXak1PqQx/V+SSmFPujBK+zEQ==} - engines: {node: '>=14.18'} - hasBin: true - peerDependencies: - '@swc/core': ^1 - postcss: ^8.4.12 - typescript: '>=4.1.0' - peerDependenciesMeta: - '@swc/core': - optional: true - postcss: - optional: true - typescript: - optional: true - - tsx@3.12.6: - resolution: {integrity: sha512-q93WgS3lBdHlPgS0h1i+87Pt6n9K/qULIMNYZo07nSeu2z5QE2CellcAZfofVXBo2tQg9av2ZcRMQ2S2i5oadQ==} - hasBin: true - - tty-table@4.2.1: - resolution: {integrity: sha512-xz0uKo+KakCQ+Dxj1D/tKn2FSyreSYWzdkL/BYhgN6oMW808g8QRMuh1atAV9fjTPbWBjfbkKQpI/5rEcnAc7g==} - engines: {node: '>=8.0.0'} - hasBin: true - - tunnel-agent@0.6.0: - resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} - - turbo-darwin-64@1.9.3: - resolution: {integrity: sha512-0dFc2cWXl82kRE4Z+QqPHhbEFEpUZho1msHXHWbz5+PqLxn8FY0lEVOHkq5tgKNNEd5KnGyj33gC/bHhpZOk5g==} - cpu: [x64] - os: [darwin] - - turbo-darwin-arm64@1.9.3: - resolution: {integrity: sha512-1cYbjqLBA2zYE1nbf/qVnEkrHa4PkJJbLo7hnuMuGM0bPzh4+AnTNe98gELhqI1mkTWBu/XAEeF5u6dgz0jLNA==} - cpu: [arm64] - os: [darwin] - - turbo-linux-64@1.9.3: - resolution: {integrity: sha512-UuBPFefawEwpuxh5pM9Jqq3q4C8M0vYxVYlB3qea/nHQ80pxYq7ZcaLGEpb10SGnr3oMUUs1zZvkXWDNKCJb8Q==} - cpu: [x64] - os: [linux] - - turbo-linux-arm64@1.9.3: - resolution: {integrity: sha512-vUrNGa3hyDtRh9W0MkO+l1dzP8Co2gKnOVmlJQW0hdpOlWlIh22nHNGGlICg+xFa2f9j4PbQlWTsc22c019s8Q==} - cpu: [arm64] - os: [linux] - - turbo-windows-64@1.9.3: - resolution: {integrity: sha512-0BZ7YaHs6r+K4ksqWus1GKK3W45DuDqlmfjm/yuUbTEVc8szmMCs12vugU2Zi5GdrdJSYfoKfEJ/PeegSLIQGQ==} - cpu: [x64] - os: [win32] - - turbo-windows-arm64@1.9.3: - resolution: {integrity: sha512-QJUYLSsxdXOsR1TquiOmLdAgtYcQ/RuSRpScGvnZb1hY0oLc7JWU0llkYB81wVtWs469y8H9O0cxbKwCZGR4RQ==} - cpu: [arm64] - os: [win32] - - turbo@1.9.3: - resolution: {integrity: sha512-ID7mxmaLUPKG/hVkp+h0VuucB1U99RPCJD9cEuSEOdIPoSIuomcIClEJtKamUsdPLhLCud+BvapBNnhgh58Nzw==} - hasBin: true - - tweetnacl-util@0.15.1: - resolution: {integrity: sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==} - - tweetnacl@1.0.3: - resolution: {integrity: sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==} - - type-check@0.3.2: - resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} - engines: {node: '>= 0.8.0'} - - type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} - - type-detect@4.0.8: - resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} - engines: {node: '>=4'} - - type-fest@0.13.1: - resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} - engines: {node: '>=10'} - - type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - - type-fest@0.21.3: - resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} - engines: {node: '>=10'} - - type-fest@0.6.0: - resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} - engines: {node: '>=8'} - - type-fest@0.7.1: - resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} - engines: {node: '>=8'} - - type-fest@0.8.1: - resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} - engines: {node: '>=8'} - - type-fest@2.14.0: - resolution: {integrity: sha512-hQnTQkFjL5ik6HF2fTAM8ycbr94UbQXK364wF930VHb0dfBJ5JBP8qwrR8TaK9zwUEk7meruo2JAUDMwvuxd/w==} - engines: {node: '>=12.20'} - - type-is@1.6.18: - resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} - engines: {node: '>= 0.6'} - - type@1.2.0: - resolution: {integrity: sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==} - - type@2.7.2: - resolution: {integrity: sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==} - - typescript@5.4.2: - resolution: {integrity: sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==} - engines: {node: '>=14.17'} - hasBin: true - - ufo@1.3.2: - resolution: {integrity: sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==} - - uglify-js@3.17.4: - resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==} - engines: {node: '>=0.8.0'} - hasBin: true - - unbox-primitive@1.0.2: - resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} - - undici@5.28.3: - resolution: {integrity: sha512-3ItfzbrhDlINjaP0duwnNsKpDQk3acHI3gVJ1z4fmwMK31k5G9OVIAMLSIaP6w4FaGkaAkN6zaQO9LUvZ1t7VA==} - engines: {node: '>=14.0'} - - unique-filename@2.0.1: - resolution: {integrity: sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - - unique-slug@3.0.0: - resolution: {integrity: sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - - universalify@0.1.2: - resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} - engines: {node: '>= 4.0.0'} - - universalify@0.2.0: - resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} - engines: {node: '>= 4.0.0'} - - unpipe@1.0.0: - resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} - engines: {node: '>= 0.8'} - - update-browserslist-db@1.0.10: - resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - - uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - - url-parse@1.5.10: - resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} - - use-local-storage-state@18.3.2: - resolution: {integrity: sha512-JiTuQsJmmKvc0mH0hiSjaTkKFlwtwXTeOlJ+cdg7rRJzZWwv+s/Rr2S2r2NR68O0W5ogwwt1MX1y+P2wQ1lY4w==} - engines: {node: '>=12'} - peerDependencies: - react: '>=18' - react-dom: '>=18' - - use-sync-external-store@1.2.0: - resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - - utf8@3.0.0: - resolution: {integrity: sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==} - - util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - - util@0.10.4: - resolution: {integrity: sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==} - - uuid@8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} - hasBin: true - - v8-to-istanbul@9.1.0: - resolution: {integrity: sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==} - engines: {node: '>=10.12.0'} - - validate-npm-package-license@3.0.4: - resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} - - vary@1.1.2: - resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} - engines: {node: '>= 0.8'} - - viem@2.9.20: - resolution: {integrity: sha512-PHb1MrBHMrSZ8Ayuk3Y/6wUTcMbzlACQaM6AJBSv9kRKX3xYSZ/kehi+gvS0swQJeAlTQ4eZM7jsHQJNAOarmg==} - peerDependencies: - typescript: '>=5.0.4' - peerDependenciesMeta: - typescript: - optional: true - - vite-node@0.34.6: - resolution: {integrity: sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA==} - engines: {node: '>=v14.18.0'} - hasBin: true - - vite@4.3.6: - resolution: {integrity: sha512-cqIyLSbA6gornMS659AXTVKF7cvSHMdKmJJwQ9DXq3lwsT1uZSdktuBRlpHQ8VnOWx0QHtjDwxPpGtyo9Fh/Qg==} - engines: {node: ^14.18.0 || >=16.0.0} - hasBin: true - peerDependencies: - '@types/node': '>= 14' - less: '*' - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - - vitest@0.34.6: - resolution: {integrity: sha512-+5CALsOvbNKnS+ZHMXtuUC7nL8/7F1F2DnHGjSsszX8zCjWSSviphCb/NuS9Nzf4Q03KyyDRBAXhF/8lffME4Q==} - engines: {node: '>=v14.18.0'} - hasBin: true - peerDependencies: - '@edge-runtime/vm': '*' - '@vitest/browser': '*' - '@vitest/ui': '*' - happy-dom: '*' - jsdom: '*' - playwright: '*' - safaridriver: '*' - webdriverio: '*' - peerDependenciesMeta: - '@edge-runtime/vm': - optional: true - '@vitest/browser': - optional: true - '@vitest/ui': - optional: true - happy-dom: - optional: true - jsdom: - optional: true - playwright: - optional: true - safaridriver: - optional: true - webdriverio: - optional: true - - w3c-xmlserializer@4.0.0: - resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} - engines: {node: '>=14'} - - walker@1.0.8: - resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} - - wcwidth@1.0.1: - resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} - - web3-utils@1.10.4: - resolution: {integrity: sha512-tsu8FiKJLk2PzhDl9fXbGUWTkkVXYhtTA+SmEFkKft+9BgwLxfCRpU96sWv7ICC8zixBNd3JURVoiR3dUXgP8A==} - engines: {node: '>=8.0.0'} - - webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - - webidl-conversions@4.0.2: - resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} - - webidl-conversions@7.0.0: - resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} - engines: {node: '>=12'} - - whatwg-encoding@2.0.0: - resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} - engines: {node: '>=12'} - - whatwg-mimetype@3.0.0: - resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} - engines: {node: '>=12'} - - whatwg-url@12.0.1: - resolution: {integrity: sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==} - engines: {node: '>=14'} - - whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - - whatwg-url@7.1.0: - resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} - - which-boxed-primitive@1.0.2: - resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} - - which-module@2.0.0: - resolution: {integrity: sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==} - - which-pm@2.0.0: - resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==} - engines: {node: '>=8.15'} - - which@1.3.1: - resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} - hasBin: true - - which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - - why-is-node-running@2.2.2: - resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} - engines: {node: '>=8'} - hasBin: true - - wide-align@1.1.5: - resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} - - widest-line@3.1.0: - resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==} - engines: {node: '>=8'} - - word-wrap@1.2.3: - resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} - engines: {node: '>=0.10.0'} - - wordwrap@1.0.0: - resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} - - workerpool@6.2.1: - resolution: {integrity: sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==} - - wrap-ansi@3.0.1: - resolution: {integrity: sha512-iXR3tDXpbnTpzjKSylUJRkLuOrEC7hwEB221cgn6wtF8wpmz28puFXAEfPT5zrjM3wahygB//VuWEr1vTkDcNQ==} - engines: {node: '>=4'} - - wrap-ansi@5.1.0: - resolution: {integrity: sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==} - engines: {node: '>=6'} - - wrap-ansi@6.2.0: - resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} - engines: {node: '>=8'} - - wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - - wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - - write-file-atomic@4.0.2: - resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - - write@1.0.3: - resolution: {integrity: sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==} - engines: {node: '>=4'} - - ws@7.4.6: - resolution: {integrity: sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==} - engines: {node: '>=8.3.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - ws@8.13.0: - resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - xml-name-validator@4.0.0: - resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} - engines: {node: '>=12'} - - xmlchars@2.2.0: - resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} - - xtend@4.0.2: - resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} - engines: {node: '>=0.4'} - - y18n@4.0.3: - resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} - - y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - - yallist@2.1.2: - resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} - - yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - - yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - - yaml@1.10.2: - resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} - engines: {node: '>= 6'} - - yaml@2.2.2: - resolution: {integrity: sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA==} - engines: {node: '>= 14'} - - yargs-interactive@3.0.1: - resolution: {integrity: sha512-Jnp88uiuz+ZRpM10Lwvs0nRetWPog+6lcgQrhwKsyEanAe3wgTlaPPzcYlZWp53aOMTzOcR5wEpEsFOMOPmLlw==} - engines: {node: '>=8', npm: '>=6'} - - yargs-parser@15.0.3: - resolution: {integrity: sha512-/MVEVjTXy/cGAjdtQf8dW3V9b97bPN7rNn8ETj6BmAQL7ibC7O1Q9SPJbGjgh3SlwoBNXMzj/ZGIj8mBgl12YA==} - - yargs-parser@18.1.3: - resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} - engines: {node: '>=6'} - - yargs-parser@20.2.4: - resolution: {integrity: sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==} - engines: {node: '>=10'} - - yargs-parser@20.2.9: - resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} - engines: {node: '>=10'} - - yargs-parser@21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} - engines: {node: '>=12'} - - yargs-unparser@2.0.0: - resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==} - engines: {node: '>=10'} - - yargs@14.2.3: - resolution: {integrity: sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg==} - - yargs@15.4.1: - resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} - engines: {node: '>=8'} - - yargs@16.2.0: - resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} - engines: {node: '>=10'} - - yargs@17.7.1: - resolution: {integrity: sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==} - engines: {node: '>=12'} - - yargs@17.7.2: - resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} - engines: {node: '>=12'} - - ylru@1.3.2: - resolution: {integrity: sha512-RXRJzMiK6U2ye0BlGGZnmpwJDPgakn6aNQ0A7gHRbD4I0uvK4TW6UqkK1V0pp9jskjJBAXd3dRrbzWkqJ+6cxA==} - engines: {node: '>= 4.0.0'} + /@adraffy/ens-normalize@1.10.0: + resolution: {integrity: sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q==} + dev: false - yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + /@alloc/quick-lru@5.2.0: + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} engines: {node: '>=10'} + dev: true - yocto-queue@1.0.0: - resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} - engines: {node: '>=12.20'} - - zod-validation-error@1.3.0: - resolution: {integrity: sha512-4WoQnuWnj06kwKR4A+cykRxFmy+CTvwMQO5ogTXLiVx1AuvYYmMjixh7sbkSsQTr1Fvtss6d5kVz8PGeMPUQjQ==} - engines: {node: '>=16.0.0'} - peerDependencies: - zod: ^3.18.0 - - zod@3.21.4: - resolution: {integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==} - - zustand@4.3.7: - resolution: {integrity: sha512-dY8ERwB9Nd21ellgkBZFhudER8KVlelZm8388B5nDAXhO/+FZDhYMuRnqDgu5SYyRgz/iaf8RKnbUs/cHfOGlQ==} - engines: {node: '>=12.7.0'} - peerDependencies: - immer: '>=9.0' - react: '>=16.8' - peerDependenciesMeta: - immer: - optional: true - react: - optional: true - -snapshots: - - '@aashutoshrathi/word-wrap@1.2.6': {} - - '@adraffy/ens-normalize@1.10.0': {} - - '@alloc/quick-lru@5.2.0': {} - - '@ampproject/remapping@2.2.1': + /@ampproject/remapping@2.2.1: + resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} + engines: {node: '>=6.0.0'} dependencies: '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.18 + dev: true + + /@ampproject/remapping@2.3.0: + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + dev: true - '@arktype/attest@0.6.4(typescript@5.4.2)': + /@arktype/attest@0.6.4(typescript@5.4.2): + resolution: {integrity: sha512-e0ZIITIany0UIpw2p1wiYKrqcK+iRvh9FLabVkWh/mhppm8n4jWPHyIut8OrURPWfB7Obd/cQ1Vu3DuchSfL7A==} + hasBin: true + peerDependencies: + typescript: '*' dependencies: '@arktype/fs': 0.0.11 '@arktype/util': 0.0.23 @@ -7288,10 +1313,12 @@ snapshots: typescript: 5.4.2 transitivePeerDependencies: - supports-color + dev: true - '@arktype/fs@0.0.11': {} + /@arktype/fs@0.0.11: + resolution: {integrity: sha512-f3p8apUMOTl6KlFNTrOX6twQJDeSdSmtYPVca7SaQjUUTAxfUlaROY1/i1C3y2llYDrrQBEbsggk8k2Oxxgrvw==} + dev: true -<<<<<<< HEAD /@arktype/schema@0.0.8: resolution: {integrity: sha512-X4WCMpiS4EOdTjb6NFI2cYw0QAzXXitj5oMPryv0topEeC8smuMOe3rlesbE/nG2eNUE0OpzDCY+LY/o1S5ktA==} dependencies: @@ -7301,13 +1328,11 @@ snapshots: /@arktype/util@0.0.23: resolution: {integrity: sha512-MwtDGjbgfXWxlExjIL78HvPlWOma1XFEcDd3VWuCPMt/f+3TR7fXyiGFNlIYZGOYdOIU7qgjaE8dmbd6jdJa3Q==} dev: true -======= - '@arktype/util@0.0.23': {} ->>>>>>> 1175edcf0 (feat: update pnpm and node version) - '@arktype/util@0.0.29': {} + /@arktype/util@0.0.29: + resolution: {integrity: sha512-fDTBSVzxLj9k1ZjinkawmaQdcXFKMBVK8c+vqMPxwoa94mPMZxBo84yQcqyFVcIcWIkg6qQQmH1ozyT4nqFT/g==} + dev: false -<<<<<<< HEAD /@arktype/util@0.0.34: resolution: {integrity: sha512-P3opb4q9eDZYbKo1pzLa34Dytg+vMuq8fkY0xQ98BN3RrjHtAVRPFmK3CeAz4fSa39yhrYlLUBfuUEvi52Hb8w==} dev: true @@ -7790,15 +1815,31 @@ snapshots: /@babel/code-frame@7.21.4: resolution: {integrity: sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==} engines: {node: '>=6.9.0'} -======= - '@babel/code-frame@7.21.4': ->>>>>>> 1175edcf0 (feat: update pnpm and node version) dependencies: '@babel/highlight': 7.18.6 + dev: true + + /@babel/code-frame@7.24.2: + resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.24.2 + picocolors: 1.0.0 + dev: true + + /@babel/compat-data@7.21.4: + resolution: {integrity: sha512-/DYyDpeCfaVinT40FPGdkkb+lYSKvsVuMjDAG7jPOWWiM1ibOaB9CXJAlc4d1QpP/U2q2P9jbrSlClKSErd55g==} + engines: {node: '>=6.9.0'} + dev: true - '@babel/compat-data@7.21.4': {} + /@babel/compat-data@7.24.4: + resolution: {integrity: sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==} + engines: {node: '>=6.9.0'} + dev: true - '@babel/core@7.21.4': + /@babel/core@7.21.4: + resolution: {integrity: sha512-qt/YV149Jman/6AfmlxJ04LMIu8bMoyl3RB91yTFrxQmgbrSvQMy7cI8Q62FHx1t8wJ8B5fu0UDoLwHAhUo1QA==} + engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.2.1 '@babel/code-frame': 7.21.4 @@ -7817,39 +1858,133 @@ snapshots: semver: 6.3.0 transitivePeerDependencies: - supports-color + dev: true + + /@babel/core@7.24.4: + resolution: {integrity: sha512-MBVlMXP+kkl5394RBLSxxk/iLTeVGuXTV3cIDXavPpMMqnSnt6apKgan/U8O3USWZCWZT/TbgfEpKa4uMgN4Dg==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.24.2 + '@babel/generator': 7.24.4 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.4) + '@babel/helpers': 7.24.4 + '@babel/parser': 7.24.4 + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.1 + '@babel/types': 7.24.0 + convert-source-map: 2.0.0 + debug: 4.3.4(supports-color@8.1.1) + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true - '@babel/generator@7.21.4': + /@babel/generator@7.21.4: + resolution: {integrity: sha512-NieM3pVIYW2SwGzKoqfPrQsf4xGs9M9AIG3ThppsSRmO+m7eQhmI6amajKMUeIO37wFfsvnvcxQFx6x6iqxDnA==} + engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.21.4 '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.18 jsesc: 2.5.2 + dev: true + + /@babel/generator@7.24.4: + resolution: {integrity: sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.0 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 2.5.2 + dev: true - '@babel/helper-compilation-targets@7.21.4(@babel/core@7.21.4)': + /@babel/helper-compilation-targets@7.21.4(@babel/core@7.21.4): + resolution: {integrity: sha512-Fa0tTuOXZ1iL8IeDFUWCzjZcn+sJGd9RZdH9esYVjEejGmzf+FFYQpMi/kZUk2kPy/q1H3/GPw7np8qar/stfg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 dependencies: '@babel/compat-data': 7.21.4 '@babel/core': 7.21.4 '@babel/helper-validator-option': 7.21.0 - browserslist: 4.21.5 + browserslist: 4.23.0 lru-cache: 5.1.1 semver: 6.3.0 + dev: true + + /@babel/helper-compilation-targets@7.23.6: + resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/compat-data': 7.24.4 + '@babel/helper-validator-option': 7.23.5 + browserslist: 4.23.0 + lru-cache: 5.1.1 + semver: 6.3.1 + dev: true + + /@babel/helper-environment-visitor@7.18.9: + resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} + engines: {node: '>=6.9.0'} + dev: true - '@babel/helper-environment-visitor@7.18.9': {} + /@babel/helper-environment-visitor@7.22.20: + resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} + engines: {node: '>=6.9.0'} + dev: true - '@babel/helper-function-name@7.21.0': + /@babel/helper-function-name@7.21.0: + resolution: {integrity: sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==} + engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.20.7 '@babel/types': 7.21.4 + dev: true + + /@babel/helper-function-name@7.23.0: + resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.24.0 + '@babel/types': 7.24.0 + dev: true - '@babel/helper-hoist-variables@7.18.6': + /@babel/helper-hoist-variables@7.18.6: + resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} + engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.21.4 + dev: true + + /@babel/helper-hoist-variables@7.22.5: + resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.0 + dev: true - '@babel/helper-module-imports@7.18.6': + /@babel/helper-module-imports@7.18.6: + resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} + engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.21.4 + dev: true - '@babel/helper-module-transforms@7.21.2': + /@babel/helper-module-imports@7.24.3: + resolution: {integrity: sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.0 + dev: true + + /@babel/helper-module-transforms@7.21.2: + resolution: {integrity: sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==} + engines: {node: '>=6.9.0'} dependencies: '@babel/helper-environment-visitor': 7.18.9 '@babel/helper-module-imports': 7.18.6 @@ -7861,132 +1996,318 @@ snapshots: '@babel/types': 7.21.4 transitivePeerDependencies: - supports-color + dev: true + + /@babel/helper-module-transforms@7.23.3(@babel/core@7.24.4): + resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-module-imports': 7.24.3 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.20 + dev: true - '@babel/helper-plugin-utils@7.20.2': {} + /@babel/helper-plugin-utils@7.20.2: + resolution: {integrity: sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==} + engines: {node: '>=6.9.0'} + dev: true - '@babel/helper-simple-access@7.20.2': + /@babel/helper-simple-access@7.20.2: + resolution: {integrity: sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==} + engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.21.4 + dev: true + + /@babel/helper-simple-access@7.22.5: + resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.0 + dev: true - '@babel/helper-split-export-declaration@7.18.6': + /@babel/helper-split-export-declaration@7.18.6: + resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} + engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.21.4 + dev: true + + /@babel/helper-split-export-declaration@7.22.6: + resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.0 + dev: true + + /@babel/helper-string-parser@7.19.4: + resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-string-parser@7.24.1: + resolution: {integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-validator-identifier@7.19.1: + resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} + engines: {node: '>=6.9.0'} + dev: true - '@babel/helper-string-parser@7.19.4': {} + /@babel/helper-validator-identifier@7.22.20: + resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} + engines: {node: '>=6.9.0'} + dev: true - '@babel/helper-validator-identifier@7.19.1': {} + /@babel/helper-validator-option@7.21.0: + resolution: {integrity: sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==} + engines: {node: '>=6.9.0'} + dev: true - '@babel/helper-validator-option@7.21.0': {} + /@babel/helper-validator-option@7.23.5: + resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} + engines: {node: '>=6.9.0'} + dev: true - '@babel/helpers@7.21.0': + /@babel/helpers@7.21.0: + resolution: {integrity: sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==} + engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.20.7 '@babel/traverse': 7.21.4 '@babel/types': 7.21.4 transitivePeerDependencies: - supports-color + dev: true + + /@babel/helpers@7.24.4: + resolution: {integrity: sha512-FewdlZbSiwaVGlgT1DPANDuCHaDMiOo+D/IDYRFYjHOuv66xMSJ7fQwwODwRNAPkADIO/z1EoF/l2BCWlWABDw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.1 + '@babel/types': 7.24.0 + transitivePeerDependencies: + - supports-color + dev: true - '@babel/highlight@7.18.6': + /@babel/highlight@7.18.6: + resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} + engines: {node: '>=6.9.0'} dependencies: '@babel/helper-validator-identifier': 7.19.1 chalk: 2.4.2 js-tokens: 4.0.0 + dev: true + + /@babel/highlight@7.24.2: + resolution: {integrity: sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.22.20 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.0.0 + dev: true - '@babel/parser@7.21.4': + /@babel/parser@7.21.4: + resolution: {integrity: sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw==} + engines: {node: '>=6.0.0'} + hasBin: true dependencies: '@babel/types': 7.21.4 + dev: true + + /@babel/parser@7.24.4: + resolution: {integrity: sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.24.0 + dev: true - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.21.4)': + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.21.4): + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 + dev: true - '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.21.4)': + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.21.4): + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 + dev: true - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.21.4)': + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.21.4): + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 + dev: true - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.21.4)': + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.21.4): + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 + dev: true - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.21.4)': + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.21.4): + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 + dev: true - '@babel/plugin-syntax-jsx@7.18.6(@babel/core@7.21.4)': + /@babel/plugin-syntax-jsx@7.18.6(@babel/core@7.21.4): + resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 + dev: true - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.21.4)': + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.21.4): + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 + dev: true - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.21.4)': + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.21.4): + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 + dev: true - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.21.4)': + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.21.4): + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 + dev: true - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.21.4)': + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.21.4): + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 + dev: true - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.21.4)': + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.21.4): + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 + dev: true - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.21.4)': + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.21.4): + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 + dev: true - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.21.4)': + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.21.4): + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 + dev: true - '@babel/plugin-syntax-typescript@7.20.0(@babel/core@7.21.4)': + /@babel/plugin-syntax-typescript@7.20.0(@babel/core@7.21.4): + resolution: {integrity: sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 + dev: true - '@babel/plugin-transform-react-jsx-self@7.21.0(@babel/core@7.21.4)': + /@babel/plugin-transform-react-jsx-self@7.21.0(@babel/core@7.21.4): + resolution: {integrity: sha512-f/Eq+79JEu+KUANFks9UZCcvydOOGMgF7jBrcwjHa5jTZD8JivnhCJYvmlhR/WTXBWonDExPoW0eO/CR4QJirA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 + dev: true - '@babel/plugin-transform-react-jsx-source@7.19.6(@babel/core@7.21.4)': + /@babel/plugin-transform-react-jsx-source@7.19.6(@babel/core@7.21.4): + resolution: {integrity: sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 + dev: true - '@babel/runtime@7.21.0': + /@babel/runtime@7.21.0: + resolution: {integrity: sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==} + engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.13.11 - '@babel/template@7.20.7': + /@babel/template@7.20.7: + resolution: {integrity: sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==} + engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.21.4 '@babel/parser': 7.21.4 '@babel/types': 7.21.4 + dev: true + + /@babel/template@7.24.0: + resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.24.2 + '@babel/parser': 7.24.4 + '@babel/types': 7.24.0 + dev: true - '@babel/traverse@7.21.4': + /@babel/traverse@7.21.4: + resolution: {integrity: sha512-eyKrRHKdyZxqDm+fV1iqL9UAHMoIg0nDaGqfIOd8rKH17m5snv7Gn4qgjBoFfLz9APvjFU/ICT00NVCv1Epp8Q==} + engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.21.4 '@babel/generator': 7.21.4 @@ -8000,16 +2321,50 @@ snapshots: globals: 11.12.0 transitivePeerDependencies: - supports-color + dev: true + + /@babel/traverse@7.24.1: + resolution: {integrity: sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.24.2 + '@babel/generator': 7.24.4 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.24.4 + '@babel/types': 7.24.0 + debug: 4.3.4(supports-color@8.1.1) + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true - '@babel/types@7.21.4': + /@babel/types@7.21.4: + resolution: {integrity: sha512-rU2oY501qDxE8Pyo7i/Orqma4ziCOrby0/9mvbDUGEfvZjb279Nk9k19e2fiCxHbRRpY2ZyrgW1eq22mvmOIzA==} + engines: {node: '>=6.9.0'} dependencies: '@babel/helper-string-parser': 7.19.4 '@babel/helper-validator-identifier': 7.19.1 to-fast-properties: 2.0.0 + dev: true + + /@babel/types@7.24.0: + resolution: {integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.24.1 + '@babel/helper-validator-identifier': 7.22.20 + to-fast-properties: 2.0.0 + dev: true - '@bcoe/v8-coverage@0.2.3': {} + /@bcoe/v8-coverage@0.2.3: + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + dev: true - '@changesets/apply-release-plan@6.1.3': + /@changesets/apply-release-plan@6.1.3: + resolution: {integrity: sha512-ECDNeoc3nfeAe1jqJb5aFQX7CqzQhD2klXRez2JDb/aVpGUbX673HgKrnrgJRuQR/9f2TtLoYIzrGB9qwD77mg==} dependencies: '@babel/runtime': 7.21.0 '@changesets/config': 2.3.0 @@ -8024,8 +2379,10 @@ snapshots: prettier: 2.8.4 resolve-from: 5.0.0 semver: 5.7.1 + dev: true - '@changesets/assemble-release-plan@5.2.3': + /@changesets/assemble-release-plan@5.2.3: + resolution: {integrity: sha512-g7EVZCmnWz3zMBAdrcKhid4hkHT+Ft1n0mLussFMcB1dE2zCuwcvGoy9ec3yOgPGF4hoMtgHaMIk3T3TBdvU9g==} dependencies: '@babel/runtime': 7.21.0 '@changesets/errors': 0.1.4 @@ -8033,12 +2390,17 @@ snapshots: '@changesets/types': 5.2.1 '@manypkg/get-packages': 1.1.3 semver: 5.7.1 + dev: true - '@changesets/changelog-git@0.1.14': + /@changesets/changelog-git@0.1.14: + resolution: {integrity: sha512-+vRfnKtXVWsDDxGctOfzJsPhaCdXRYoe+KyWYoq5X/GqoISREiat0l3L8B0a453B2B4dfHGcZaGyowHbp9BSaA==} dependencies: '@changesets/types': 5.2.1 + dev: true - '@changesets/cli@2.26.1': + /@changesets/cli@2.26.1: + resolution: {integrity: sha512-XnTa+b51vt057fyAudvDKGB0Sh72xutQZNAdXkCqPBKO2zvs2yYZx5hFZj1u9cbtpwM6Sxtcr02/FQJfZOzemQ==} + hasBin: true dependencies: '@babel/runtime': 7.21.0 '@changesets/apply-release-plan': 6.1.3 @@ -8073,8 +2435,10 @@ snapshots: spawndamnit: 2.0.0 term-size: 2.2.1 tty-table: 4.2.1 + dev: true - '@changesets/config@2.3.0': + /@changesets/config@2.3.0: + resolution: {integrity: sha512-EgP/px6mhCx8QeaMAvWtRrgyxW08k/Bx2tpGT+M84jEdX37v3VKfh4Cz1BkwrYKuMV2HZKeHOh8sHvja/HcXfQ==} dependencies: '@changesets/errors': 0.1.4 '@changesets/get-dependents-graph': 1.3.5 @@ -8083,20 +2447,26 @@ snapshots: '@manypkg/get-packages': 1.1.3 fs-extra: 7.0.1 micromatch: 4.0.5 + dev: true - '@changesets/errors@0.1.4': + /@changesets/errors@0.1.4: + resolution: {integrity: sha512-HAcqPF7snsUJ/QzkWoKfRfXushHTu+K5KZLJWPb34s4eCZShIf8BFO3fwq6KU8+G7L5KdtN2BzQAXOSXEyiY9Q==} dependencies: extendable-error: 0.1.7 + dev: true - '@changesets/get-dependents-graph@1.3.5': + /@changesets/get-dependents-graph@1.3.5: + resolution: {integrity: sha512-w1eEvnWlbVDIY8mWXqWuYE9oKhvIaBhzqzo4ITSJY9hgoqQ3RoBqwlcAzg11qHxv/b8ReDWnMrpjpKrW6m1ZTA==} dependencies: '@changesets/types': 5.2.1 '@manypkg/get-packages': 1.1.3 chalk: 2.4.2 fs-extra: 7.0.1 semver: 5.7.1 + dev: true - '@changesets/get-release-plan@3.0.16': + /@changesets/get-release-plan@3.0.16: + resolution: {integrity: sha512-OpP9QILpBp1bY2YNIKFzwigKh7Qe9KizRsZomzLe6pK8IUo8onkAAVUD8+JRKSr8R7d4+JRuQrfSSNlEwKyPYg==} dependencies: '@babel/runtime': 7.21.0 '@changesets/assemble-release-plan': 5.2.3 @@ -8105,10 +2475,14 @@ snapshots: '@changesets/read': 0.5.9 '@changesets/types': 5.2.1 '@manypkg/get-packages': 1.1.3 + dev: true - '@changesets/get-version-range-type@0.3.2': {} + /@changesets/get-version-range-type@0.3.2: + resolution: {integrity: sha512-SVqwYs5pULYjYT4op21F2pVbcrca4qA/bAA3FmFXKMN7Y+HcO8sbZUTx3TAy2VXulP2FACd1aC7f2nTuqSPbqg==} + dev: true - '@changesets/git@2.0.0': + /@changesets/git@2.0.0: + resolution: {integrity: sha512-enUVEWbiqUTxqSnmesyJGWfzd51PY4H7mH9yUw0hPVpZBJ6tQZFMU3F3mT/t9OJ/GjyiM4770i+sehAn6ymx6A==} dependencies: '@babel/runtime': 7.21.0 '@changesets/errors': 0.1.4 @@ -8117,25 +2491,33 @@ snapshots: is-subdir: 1.2.0 micromatch: 4.0.5 spawndamnit: 2.0.0 + dev: true - '@changesets/logger@0.0.5': + /@changesets/logger@0.0.5: + resolution: {integrity: sha512-gJyZHomu8nASHpaANzc6bkQMO9gU/ib20lqew1rVx753FOxffnCrJlGIeQVxNWCqM+o6OOleCo/ivL8UAO5iFw==} dependencies: chalk: 2.4.2 + dev: true - '@changesets/parse@0.3.16': + /@changesets/parse@0.3.16: + resolution: {integrity: sha512-127JKNd167ayAuBjUggZBkmDS5fIKsthnr9jr6bdnuUljroiERW7FBTDNnNVyJ4l69PzR57pk6mXQdtJyBCJKg==} dependencies: '@changesets/types': 5.2.1 js-yaml: 3.14.1 + dev: true - '@changesets/pre@1.0.14': + /@changesets/pre@1.0.14: + resolution: {integrity: sha512-dTsHmxQWEQekHYHbg+M1mDVYFvegDh9j/kySNuDKdylwfMEevTeDouR7IfHNyVodxZXu17sXoJuf2D0vi55FHQ==} dependencies: '@babel/runtime': 7.21.0 '@changesets/errors': 0.1.4 '@changesets/types': 5.2.1 '@manypkg/get-packages': 1.1.3 fs-extra: 7.0.1 + dev: true - '@changesets/read@0.5.9': + /@changesets/read@0.5.9: + resolution: {integrity: sha512-T8BJ6JS6j1gfO1HFq50kU3qawYxa4NTbI/ASNVVCBTsKquy2HYwM9r7ZnzkiMe8IEObAJtUVGSrePCOxAK2haQ==} dependencies: '@babel/runtime': 7.21.0 '@changesets/git': 2.0.0 @@ -8145,174 +2527,461 @@ snapshots: chalk: 2.4.2 fs-extra: 7.0.1 p-filter: 2.1.0 + dev: true - '@changesets/types@4.1.0': {} + /@changesets/types@4.1.0: + resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} + dev: true - '@changesets/types@5.2.1': {} + /@changesets/types@5.2.1: + resolution: {integrity: sha512-myLfHbVOqaq9UtUKqR/nZA/OY7xFjQMdfgfqeZIBK4d0hA6pgxArvdv8M+6NUzzBsjWLOtvApv8YHr4qM+Kpfg==} + dev: true - '@changesets/write@0.2.3': + /@changesets/write@0.2.3: + resolution: {integrity: sha512-Dbamr7AIMvslKnNYsLFafaVORx4H0pvCA2MHqgtNCySMe1blImEyAEOzDmcgKAkgz4+uwoLz7demIrX+JBr/Xw==} dependencies: '@babel/runtime': 7.21.0 '@changesets/types': 5.2.1 fs-extra: 7.0.1 human-id: 1.0.2 prettier: 2.8.4 + dev: true - '@esbuild-kit/cjs-loader@2.4.2': + /@esbuild-kit/cjs-loader@2.4.2: + resolution: {integrity: sha512-BDXFbYOJzT/NBEtp71cvsrGPwGAMGRB/349rwKuoxNSiKjPraNNnlK6MIIabViCjqZugu6j+xeMDlEkWdHHJSg==} dependencies: '@esbuild-kit/core-utils': 3.1.0 get-tsconfig: 4.5.0 + dev: true - '@esbuild-kit/core-utils@3.1.0': + /@esbuild-kit/core-utils@3.1.0: + resolution: {integrity: sha512-Uuk8RpCg/7fdHSceR1M6XbSZFSuMrxcePFuGgyvsBn+u339dk5OeL4jv2EojwTN2st/unJGsVm4qHWjWNmJ/tw==} dependencies: esbuild: 0.17.17 source-map-support: 0.5.21 + dev: true - '@esbuild-kit/esm-loader@2.5.5': + /@esbuild-kit/esm-loader@2.5.5: + resolution: {integrity: sha512-Qwfvj/qoPbClxCRNuac1Du01r9gvNOT+pMYtJDapfB1eoGN1YlJ1BixLyL9WVENRx5RXgNLdfYdx/CuswlGhMw==} dependencies: '@esbuild-kit/core-utils': 3.1.0 get-tsconfig: 4.5.0 + dev: true - '@esbuild/android-arm64@0.17.15': + /@esbuild/android-arm64@0.17.15: + resolution: {integrity: sha512-0kOB6Y7Br3KDVgHeg8PRcvfLkq+AccreK///B4Z6fNZGr/tNHX0z2VywCc7PTeWp+bPvjA5WMvNXltHw5QjAIA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: false optional: true - '@esbuild/android-arm64@0.17.17': + /@esbuild/android-arm64@0.17.17: + resolution: {integrity: sha512-jaJ5IlmaDLFPNttv0ofcwy/cfeY4bh/n705Tgh+eLObbGtQBK3EPAu+CzL95JVE4nFAliyrnEu0d32Q5foavqg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true optional: true - '@esbuild/android-arm@0.17.15': + /@esbuild/android-arm@0.17.15: + resolution: {integrity: sha512-sRSOVlLawAktpMvDyJIkdLI/c/kdRTOqo8t6ImVxg8yT7LQDUYV5Rp2FKeEosLr6ZCja9UjYAzyRSxGteSJPYg==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: false optional: true - '@esbuild/android-arm@0.17.17': + /@esbuild/android-arm@0.17.17: + resolution: {integrity: sha512-E6VAZwN7diCa3labs0GYvhEPL2M94WLF8A+czO8hfjREXxba8Ng7nM5VxV+9ihNXIY1iQO1XxUU4P7hbqbICxg==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true optional: true - '@esbuild/android-x64@0.17.15': + /@esbuild/android-x64@0.17.15: + resolution: {integrity: sha512-MzDqnNajQZ63YkaUWVl9uuhcWyEyh69HGpMIrf+acR4otMkfLJ4sUCxqwbCyPGicE9dVlrysI3lMcDBjGiBBcQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: false optional: true - '@esbuild/android-x64@0.17.17': + /@esbuild/android-x64@0.17.17: + resolution: {integrity: sha512-446zpfJ3nioMC7ASvJB1pszHVskkw4u/9Eu8s5yvvsSDTzYh4p4ZIRj0DznSl3FBF0Z/mZfrKXTtt0QCoFmoHA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true optional: true - '@esbuild/darwin-arm64@0.17.15': + /@esbuild/darwin-arm64@0.17.15: + resolution: {integrity: sha512-7siLjBc88Z4+6qkMDxPT2juf2e8SJxmsbNVKFY2ifWCDT72v5YJz9arlvBw5oB4W/e61H1+HDB/jnu8nNg0rLA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false optional: true - '@esbuild/darwin-arm64@0.17.17': + /@esbuild/darwin-arm64@0.17.17: + resolution: {integrity: sha512-m/gwyiBwH3jqfUabtq3GH31otL/0sE0l34XKpSIqR7NjQ/XHQ3lpmQHLHbG8AHTGCw8Ao059GvV08MS0bhFIJQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true optional: true - '@esbuild/darwin-x64@0.17.15': + /@esbuild/darwin-x64@0.17.15: + resolution: {integrity: sha512-NbImBas2rXwYI52BOKTW342Tm3LTeVlaOQ4QPZ7XuWNKiO226DisFk/RyPk3T0CKZkKMuU69yOvlapJEmax7cg==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false optional: true - '@esbuild/darwin-x64@0.17.17': + /@esbuild/darwin-x64@0.17.17: + resolution: {integrity: sha512-4utIrsX9IykrqYaXR8ob9Ha2hAY2qLc6ohJ8c0CN1DR8yWeMrTgYFjgdeQ9LIoTOfLetXjuCu5TRPHT9yKYJVg==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true optional: true - '@esbuild/freebsd-arm64@0.17.15': + /@esbuild/freebsd-arm64@0.17.15: + resolution: {integrity: sha512-Xk9xMDjBVG6CfgoqlVczHAdJnCs0/oeFOspFap5NkYAmRCT2qTn1vJWA2f419iMtsHSLm+O8B6SLV/HlY5cYKg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: false optional: true - '@esbuild/freebsd-arm64@0.17.17': + /@esbuild/freebsd-arm64@0.17.17: + resolution: {integrity: sha512-4PxjQII/9ppOrpEwzQ1b0pXCsFLqy77i0GaHodrmzH9zq2/NEhHMAMJkJ635Ns4fyJPFOlHMz4AsklIyRqFZWA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true optional: true - '@esbuild/freebsd-x64@0.17.15': + /@esbuild/freebsd-x64@0.17.15: + resolution: {integrity: sha512-3TWAnnEOdclvb2pnfsTWtdwthPfOz7qAfcwDLcfZyGJwm1SRZIMOeB5FODVhnM93mFSPsHB9b/PmxNNbSnd0RQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: false optional: true - '@esbuild/freebsd-x64@0.17.17': + /@esbuild/freebsd-x64@0.17.17: + resolution: {integrity: sha512-lQRS+4sW5S3P1sv0z2Ym807qMDfkmdhUYX30GRBURtLTrJOPDpoU0kI6pVz1hz3U0+YQ0tXGS9YWveQjUewAJw==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true optional: true - '@esbuild/linux-arm64@0.17.15': + /@esbuild/linux-arm64@0.17.15: + resolution: {integrity: sha512-T0MVnYw9KT6b83/SqyznTs/3Jg2ODWrZfNccg11XjDehIved2oQfrX/wVuev9N936BpMRaTR9I1J0tdGgUgpJA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false optional: true - '@esbuild/linux-arm64@0.17.17': + /@esbuild/linux-arm64@0.17.17: + resolution: {integrity: sha512-2+pwLx0whKY1/Vqt8lyzStyda1v0qjJ5INWIe+d8+1onqQxHLLi3yr5bAa4gvbzhZqBztifYEu8hh1La5+7sUw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true optional: true - '@esbuild/linux-arm@0.17.15': + /@esbuild/linux-arm@0.17.15: + resolution: {integrity: sha512-MLTgiXWEMAMr8nmS9Gigx43zPRmEfeBfGCwxFQEMgJ5MC53QKajaclW6XDPjwJvhbebv+RzK05TQjvH3/aM4Xw==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: false optional: true - '@esbuild/linux-arm@0.17.17': + /@esbuild/linux-arm@0.17.17: + resolution: {integrity: sha512-biDs7bjGdOdcmIk6xU426VgdRUpGg39Yz6sT9Xp23aq+IEHDb/u5cbmu/pAANpDB4rZpY/2USPhCA+w9t3roQg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true optional: true - '@esbuild/linux-ia32@0.17.15': + /@esbuild/linux-ia32@0.17.15: + resolution: {integrity: sha512-wp02sHs015T23zsQtU4Cj57WiteiuASHlD7rXjKUyAGYzlOKDAjqK6bk5dMi2QEl/KVOcsjwL36kD+WW7vJt8Q==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: false optional: true - '@esbuild/linux-ia32@0.17.17': + /@esbuild/linux-ia32@0.17.17: + resolution: {integrity: sha512-IBTTv8X60dYo6P2t23sSUYym8fGfMAiuv7PzJ+0LcdAndZRzvke+wTVxJeCq4WgjppkOpndL04gMZIFvwoU34Q==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true optional: true - '@esbuild/linux-loong64@0.17.15': + /@esbuild/linux-loong64@0.17.15: + resolution: {integrity: sha512-k7FsUJjGGSxwnBmMh8d7IbObWu+sF/qbwc+xKZkBe/lTAF16RqxRCnNHA7QTd3oS2AfGBAnHlXL67shV5bBThQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: false optional: true - '@esbuild/linux-loong64@0.17.17': + /@esbuild/linux-loong64@0.17.17: + resolution: {integrity: sha512-WVMBtcDpATjaGfWfp6u9dANIqmU9r37SY8wgAivuKmgKHE+bWSuv0qXEFt/p3qXQYxJIGXQQv6hHcm7iWhWjiw==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true optional: true - '@esbuild/linux-mips64el@0.17.15': + /@esbuild/linux-mips64el@0.17.15: + resolution: {integrity: sha512-ZLWk6czDdog+Q9kE/Jfbilu24vEe/iW/Sj2d8EVsmiixQ1rM2RKH2n36qfxK4e8tVcaXkvuV3mU5zTZviE+NVQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: false optional: true - '@esbuild/linux-mips64el@0.17.17': + /@esbuild/linux-mips64el@0.17.17: + resolution: {integrity: sha512-2kYCGh8589ZYnY031FgMLy0kmE4VoGdvfJkxLdxP4HJvWNXpyLhjOvxVsYjYZ6awqY4bgLR9tpdYyStgZZhi2A==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true optional: true - '@esbuild/linux-ppc64@0.17.15': + /@esbuild/linux-ppc64@0.17.15: + resolution: {integrity: sha512-mY6dPkIRAiFHRsGfOYZC8Q9rmr8vOBZBme0/j15zFUKM99d4ILY4WpOC7i/LqoY+RE7KaMaSfvY8CqjJtuO4xg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: false optional: true - '@esbuild/linux-ppc64@0.17.17': + /@esbuild/linux-ppc64@0.17.17: + resolution: {integrity: sha512-KIdG5jdAEeAKogfyMTcszRxy3OPbZhq0PPsW4iKKcdlbk3YE4miKznxV2YOSmiK/hfOZ+lqHri3v8eecT2ATwQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true optional: true - '@esbuild/linux-riscv64@0.17.15': + /@esbuild/linux-riscv64@0.17.15: + resolution: {integrity: sha512-EcyUtxffdDtWjjwIH8sKzpDRLcVtqANooMNASO59y+xmqqRYBBM7xVLQhqF7nksIbm2yHABptoioS9RAbVMWVA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: false optional: true - '@esbuild/linux-riscv64@0.17.17': + /@esbuild/linux-riscv64@0.17.17: + resolution: {integrity: sha512-Cj6uWLBR5LWhcD/2Lkfg2NrkVsNb2sFM5aVEfumKB2vYetkA/9Uyc1jVoxLZ0a38sUhFk4JOVKH0aVdPbjZQeA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true optional: true - '@esbuild/linux-s390x@0.17.15': + /@esbuild/linux-s390x@0.17.15: + resolution: {integrity: sha512-BuS6Jx/ezxFuHxgsfvz7T4g4YlVrmCmg7UAwboeyNNg0OzNzKsIZXpr3Sb/ZREDXWgt48RO4UQRDBxJN3B9Rbg==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: false optional: true - '@esbuild/linux-s390x@0.17.17': + /@esbuild/linux-s390x@0.17.17: + resolution: {integrity: sha512-lK+SffWIr0XsFf7E0srBjhpkdFVJf3HEgXCwzkm69kNbRar8MhezFpkIwpk0qo2IOQL4JE4mJPJI8AbRPLbuOQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true optional: true - '@esbuild/linux-x64@0.17.15': + /@esbuild/linux-x64@0.17.15: + resolution: {integrity: sha512-JsdS0EgEViwuKsw5tiJQo9UdQdUJYuB+Mf6HxtJSPN35vez1hlrNb1KajvKWF5Sa35j17+rW1ECEO9iNrIXbNg==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false optional: true - '@esbuild/linux-x64@0.17.17': + /@esbuild/linux-x64@0.17.17: + resolution: {integrity: sha512-XcSGTQcWFQS2jx3lZtQi7cQmDYLrpLRyz1Ns1DzZCtn898cWfm5Icx/DEWNcTU+T+tyPV89RQtDnI7qL2PObPg==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true optional: true - '@esbuild/netbsd-x64@0.17.15': + /@esbuild/netbsd-x64@0.17.15: + resolution: {integrity: sha512-R6fKjtUysYGym6uXf6qyNephVUQAGtf3n2RCsOST/neIwPqRWcnc3ogcielOd6pT+J0RDR1RGcy0ZY7d3uHVLA==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: false optional: true - '@esbuild/netbsd-x64@0.17.17': + /@esbuild/netbsd-x64@0.17.17: + resolution: {integrity: sha512-RNLCDmLP5kCWAJR+ItLM3cHxzXRTe4N00TQyQiimq+lyqVqZWGPAvcyfUBM0isE79eEZhIuGN09rAz8EL5KdLA==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true optional: true - '@esbuild/openbsd-x64@0.17.15': + /@esbuild/openbsd-x64@0.17.15: + resolution: {integrity: sha512-mVD4PGc26b8PI60QaPUltYKeSX0wxuy0AltC+WCTFwvKCq2+OgLP4+fFd+hZXzO2xW1HPKcytZBdjqL6FQFa7w==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: false optional: true - '@esbuild/openbsd-x64@0.17.17': + /@esbuild/openbsd-x64@0.17.17: + resolution: {integrity: sha512-PAXswI5+cQq3Pann7FNdcpSUrhrql3wKjj3gVkmuz6OHhqqYxKvi6GgRBoaHjaG22HV/ZZEgF9TlS+9ftHVigA==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true optional: true - '@esbuild/sunos-x64@0.17.15': + /@esbuild/sunos-x64@0.17.15: + resolution: {integrity: sha512-U6tYPovOkw3459t2CBwGcFYfFRjivcJJc1WC8Q3funIwX8x4fP+R6xL/QuTPNGOblbq/EUDxj9GU+dWKX0oWlQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: false optional: true - '@esbuild/sunos-x64@0.17.17': + /@esbuild/sunos-x64@0.17.17: + resolution: {integrity: sha512-V63egsWKnx/4V0FMYkr9NXWrKTB5qFftKGKuZKFIrAkO/7EWLFnbBZNM1CvJ6Sis+XBdPws2YQSHF1Gqf1oj/Q==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true optional: true - '@esbuild/win32-arm64@0.17.15': + /@esbuild/win32-arm64@0.17.15: + resolution: {integrity: sha512-W+Z5F++wgKAleDABemiyXVnzXgvRFs+GVKThSI+mGgleLWluv0D7Diz4oQpgdpNzh4i2nNDzQtWbjJiqutRp6Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: false optional: true - '@esbuild/win32-arm64@0.17.17': + /@esbuild/win32-arm64@0.17.17: + resolution: {integrity: sha512-YtUXLdVnd6YBSYlZODjWzH+KzbaubV0YVd6UxSfoFfa5PtNJNaW+1i+Hcmjpg2nEe0YXUCNF5bkKy1NnBv1y7Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true optional: true - '@esbuild/win32-ia32@0.17.15': + /@esbuild/win32-ia32@0.17.15: + resolution: {integrity: sha512-Muz/+uGgheShKGqSVS1KsHtCyEzcdOn/W/Xbh6H91Etm+wiIfwZaBn1W58MeGtfI8WA961YMHFYTthBdQs4t+w==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: false optional: true - '@esbuild/win32-ia32@0.17.17': + /@esbuild/win32-ia32@0.17.17: + resolution: {integrity: sha512-yczSLRbDdReCO74Yfc5tKG0izzm+lPMYyO1fFTcn0QNwnKmc3K+HdxZWLGKg4pZVte7XVgcFku7TIZNbWEJdeQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true optional: true - '@esbuild/win32-x64@0.17.15': + /@esbuild/win32-x64@0.17.15: + resolution: {integrity: sha512-DjDa9ywLUUmjhV2Y9wUTIF+1XsmuFGvZoCmOWkli1XcNAh5t25cc7fgsCx4Zi/Uurep3TTLyDiKATgGEg61pkA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false optional: true - '@esbuild/win32-x64@0.17.17': + /@esbuild/win32-x64@0.17.17: + resolution: {integrity: sha512-FNZw7H3aqhF9OyRQbDDnzUApDXfC1N6fgBhkqEO2jvYCJ+DxMTfZVqg3AX0R1khg1wHTBRD5SdcibSJ+XF6bFg==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true optional: true - '@eslint-community/eslint-utils@4.4.0(eslint@8.57.0)': + /@eslint-community/eslint-utils@4.4.0(eslint@8.57.0): + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: eslint: 8.57.0 eslint-visitor-keys: 3.4.3 + dev: true - '@eslint-community/regexpp@4.10.0': {} + /@eslint-community/regexpp@4.10.0: + resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dev: true - '@eslint/eslintrc@2.1.4': + /@eslint/eslintrc@2.1.4: + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 debug: 4.3.4(supports-color@8.1.1) @@ -8325,18 +2994,30 @@ snapshots: strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color + dev: true - '@eslint/js@8.57.0': {} + /@eslint/js@8.57.0: + resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true - '@ethereumjs/rlp@4.0.1': {} + /@ethereumjs/rlp@4.0.1: + resolution: {integrity: sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==} + engines: {node: '>=14'} + hasBin: true + dev: true - '@ethereumjs/util@8.1.0': + /@ethereumjs/util@8.1.0: + resolution: {integrity: sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==} + engines: {node: '>=14'} dependencies: '@ethereumjs/rlp': 4.0.1 ethereum-cryptography: 2.1.3 micro-ftch: 0.3.1 + dev: true - '@ethersproject/abi@5.7.0': + /@ethersproject/abi@5.7.0: + resolution: {integrity: sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==} dependencies: '@ethersproject/address': 5.7.0 '@ethersproject/bignumber': 5.7.0 @@ -8348,7 +3029,8 @@ snapshots: '@ethersproject/properties': 5.7.0 '@ethersproject/strings': 5.7.0 - '@ethersproject/abstract-provider@5.7.0': + /@ethersproject/abstract-provider@5.7.0: + resolution: {integrity: sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==} dependencies: '@ethersproject/bignumber': 5.7.0 '@ethersproject/bytes': 5.7.0 @@ -8358,7 +3040,8 @@ snapshots: '@ethersproject/transactions': 5.7.0 '@ethersproject/web': 5.7.1 - '@ethersproject/abstract-signer@5.7.0': + /@ethersproject/abstract-signer@5.7.0: + resolution: {integrity: sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==} dependencies: '@ethersproject/abstract-provider': 5.7.0 '@ethersproject/bignumber': 5.7.0 @@ -8366,7 +3049,8 @@ snapshots: '@ethersproject/logger': 5.7.0 '@ethersproject/properties': 5.7.0 - '@ethersproject/address@5.7.0': + /@ethersproject/address@5.7.0: + resolution: {integrity: sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==} dependencies: '@ethersproject/bignumber': 5.7.0 '@ethersproject/bytes': 5.7.0 @@ -8374,30 +3058,36 @@ snapshots: '@ethersproject/logger': 5.7.0 '@ethersproject/rlp': 5.7.0 - '@ethersproject/base64@5.7.0': + /@ethersproject/base64@5.7.0: + resolution: {integrity: sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==} dependencies: '@ethersproject/bytes': 5.7.0 - '@ethersproject/basex@5.7.0': + /@ethersproject/basex@5.7.0: + resolution: {integrity: sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==} dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/properties': 5.7.0 - '@ethersproject/bignumber@5.7.0': + /@ethersproject/bignumber@5.7.0: + resolution: {integrity: sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==} dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/logger': 5.7.0 bn.js: 5.2.1 - '@ethersproject/bytes@5.7.0': + /@ethersproject/bytes@5.7.0: + resolution: {integrity: sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==} dependencies: '@ethersproject/logger': 5.7.0 - '@ethersproject/constants@5.7.0': + /@ethersproject/constants@5.7.0: + resolution: {integrity: sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==} dependencies: '@ethersproject/bignumber': 5.7.0 - '@ethersproject/contracts@5.7.0': + /@ethersproject/contracts@5.7.0: + resolution: {integrity: sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==} dependencies: '@ethersproject/abi': 5.7.0 '@ethersproject/abstract-provider': 5.7.0 @@ -8410,7 +3100,8 @@ snapshots: '@ethersproject/properties': 5.7.0 '@ethersproject/transactions': 5.7.0 - '@ethersproject/hash@5.7.0': + /@ethersproject/hash@5.7.0: + resolution: {integrity: sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==} dependencies: '@ethersproject/abstract-signer': 5.7.0 '@ethersproject/address': 5.7.0 @@ -8422,7 +3113,8 @@ snapshots: '@ethersproject/properties': 5.7.0 '@ethersproject/strings': 5.7.0 - '@ethersproject/hdnode@5.7.0': + /@ethersproject/hdnode@5.7.0: + resolution: {integrity: sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==} dependencies: '@ethersproject/abstract-signer': 5.7.0 '@ethersproject/basex': 5.7.0 @@ -8437,7 +3129,8 @@ snapshots: '@ethersproject/transactions': 5.7.0 '@ethersproject/wordlists': 5.7.0 - '@ethersproject/json-wallets@5.7.0': + /@ethersproject/json-wallets@5.7.0: + resolution: {integrity: sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==} dependencies: '@ethersproject/abstract-signer': 5.7.0 '@ethersproject/address': 5.7.0 @@ -8453,27 +3146,33 @@ snapshots: aes-js: 3.0.0 scrypt-js: 3.0.1 - '@ethersproject/keccak256@5.7.0': + /@ethersproject/keccak256@5.7.0: + resolution: {integrity: sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==} dependencies: '@ethersproject/bytes': 5.7.0 js-sha3: 0.8.0 - '@ethersproject/logger@5.7.0': {} + /@ethersproject/logger@5.7.0: + resolution: {integrity: sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==} - '@ethersproject/networks@5.7.1': + /@ethersproject/networks@5.7.1: + resolution: {integrity: sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==} dependencies: '@ethersproject/logger': 5.7.0 - '@ethersproject/pbkdf2@5.7.0': + /@ethersproject/pbkdf2@5.7.0: + resolution: {integrity: sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==} dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/sha2': 5.7.0 - '@ethersproject/properties@5.7.0': + /@ethersproject/properties@5.7.0: + resolution: {integrity: sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==} dependencies: '@ethersproject/logger': 5.7.0 - '@ethersproject/providers@5.7.2': + /@ethersproject/providers@5.7.2: + resolution: {integrity: sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==} dependencies: '@ethersproject/abstract-provider': 5.7.0 '@ethersproject/abstract-signer': 5.7.0 @@ -8499,23 +3198,27 @@ snapshots: - bufferutil - utf-8-validate - '@ethersproject/random@5.7.0': + /@ethersproject/random@5.7.0: + resolution: {integrity: sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==} dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/logger': 5.7.0 - '@ethersproject/rlp@5.7.0': + /@ethersproject/rlp@5.7.0: + resolution: {integrity: sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==} dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/logger': 5.7.0 - '@ethersproject/sha2@5.7.0': + /@ethersproject/sha2@5.7.0: + resolution: {integrity: sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==} dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/logger': 5.7.0 hash.js: 1.1.7 - '@ethersproject/signing-key@5.7.0': + /@ethersproject/signing-key@5.7.0: + resolution: {integrity: sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==} dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/logger': 5.7.0 @@ -8524,7 +3227,8 @@ snapshots: elliptic: 6.5.4 hash.js: 1.1.7 - '@ethersproject/solidity@5.7.0': + /@ethersproject/solidity@5.7.0: + resolution: {integrity: sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==} dependencies: '@ethersproject/bignumber': 5.7.0 '@ethersproject/bytes': 5.7.0 @@ -8533,13 +3237,15 @@ snapshots: '@ethersproject/sha2': 5.7.0 '@ethersproject/strings': 5.7.0 - '@ethersproject/strings@5.7.0': + /@ethersproject/strings@5.7.0: + resolution: {integrity: sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==} dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/constants': 5.7.0 '@ethersproject/logger': 5.7.0 - '@ethersproject/transactions@5.7.0': + /@ethersproject/transactions@5.7.0: + resolution: {integrity: sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==} dependencies: '@ethersproject/address': 5.7.0 '@ethersproject/bignumber': 5.7.0 @@ -8551,13 +3257,15 @@ snapshots: '@ethersproject/rlp': 5.7.0 '@ethersproject/signing-key': 5.7.0 - '@ethersproject/units@5.7.0': + /@ethersproject/units@5.7.0: + resolution: {integrity: sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==} dependencies: '@ethersproject/bignumber': 5.7.0 '@ethersproject/constants': 5.7.0 '@ethersproject/logger': 5.7.0 - '@ethersproject/wallet@5.7.0': + /@ethersproject/wallet@5.7.0: + resolution: {integrity: sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==} dependencies: '@ethersproject/abstract-provider': 5.7.0 '@ethersproject/abstract-signer': 5.7.0 @@ -8575,7 +3283,8 @@ snapshots: '@ethersproject/transactions': 5.7.0 '@ethersproject/wordlists': 5.7.0 - '@ethersproject/web@5.7.1': + /@ethersproject/web@5.7.1: + resolution: {integrity: sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==} dependencies: '@ethersproject/base64': 5.7.0 '@ethersproject/bytes': 5.7.0 @@ -8583,7 +3292,8 @@ snapshots: '@ethersproject/properties': 5.7.0 '@ethersproject/strings': 5.7.0 - '@ethersproject/wordlists@5.7.0': + /@ethersproject/wordlists@5.7.0: + resolution: {integrity: sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==} dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/hash': 5.7.0 @@ -8591,17 +3301,26 @@ snapshots: '@ethersproject/properties': 5.7.0 '@ethersproject/strings': 5.7.0 - '@fastify/accept-negotiator@1.1.0': {} + /@fastify/accept-negotiator@1.1.0: + resolution: {integrity: sha512-OIHZrb2ImZ7XG85HXOONLcJWGosv7sIvM2ifAPQVhg9Lv7qdmMBNVaai4QTdyuaqbKM5eO6sLSQOYI7wEQeCJQ==} + engines: {node: '>=14'} + dev: false - '@fastify/ajv-compiler@3.5.0': + /@fastify/ajv-compiler@3.5.0: + resolution: {integrity: sha512-ebbEtlI7dxXF5ziNdr05mOY8NnDiPB1XvAlLHctRt/Rc+C3LCOVW5imUVX+mhvUhnNzmPBHewUkOFgGlCxgdAA==} dependencies: ajv: 8.12.0 ajv-formats: 2.1.1(ajv@8.12.0) fast-uri: 2.2.0 + dev: false - '@fastify/busboy@2.1.1': {} + /@fastify/busboy@2.1.1: + resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} + engines: {node: '>=14'} + dev: true - '@fastify/compress@6.5.0': + /@fastify/compress@6.5.0: + resolution: {integrity: sha512-AqUOK714jY7qkzbQbS4zyI4yNFgnRoOJ3eH/oV1T9f5fFdPDRdrFxm5de1ya5n+as4bvitjwU9EY7zvtT9pI2A==} dependencies: '@fastify/accept-negotiator': 1.1.0 fastify-plugin: 4.5.1 @@ -8611,54 +3330,89 @@ snapshots: peek-stream: 1.1.3 pump: 3.0.0 pumpify: 2.0.1 + dev: false - '@fastify/cors@8.3.0': + /@fastify/cors@8.3.0: + resolution: {integrity: sha512-oj9xkka2Tg0MrwuKhsSUumcAkfp2YCnKxmFEusi01pjk1YrdDsuSYTHXEelWNW+ilSy/ApZq0c2SvhKrLX0H1g==} dependencies: fastify-plugin: 4.5.1 mnemonist: 0.39.5 + dev: false - '@fastify/deepmerge@1.3.0': {} + /@fastify/deepmerge@1.3.0: + resolution: {integrity: sha512-J8TOSBq3SoZbDhM9+R/u77hP93gz/rajSA+K2kGyijPpORPWUXHUpTaleoj+92As0S9uPRP7Oi8IqMf0u+ro6A==} + dev: false - '@fastify/error@3.3.0': {} + /@fastify/error@3.3.0: + resolution: {integrity: sha512-dj7vjIn1Ar8sVXj2yAXiMNCJDmS9MQ9XMlIecX2dIzzhjSHCyKo4DdXjXMs7wKW2kj6yvVRSpuQjOZ3YLrh56w==} + dev: false - '@fastify/fast-json-stringify-compiler@4.3.0': + /@fastify/fast-json-stringify-compiler@4.3.0: + resolution: {integrity: sha512-aZAXGYo6m22Fk1zZzEUKBvut/CIIQe/BapEORnxiD5Qr0kPHqqI69NtEMCme74h+at72sPhbkb4ZrLd1W3KRLA==} dependencies: fast-json-stringify: 5.8.0 + dev: false - '@gar/promisify@1.1.3': {} + /@gar/promisify@1.1.3: + resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} + dev: false - '@humanwhocodes/config-array@0.11.14': + /@humanwhocodes/config-array@0.11.14: + resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} + engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 2.0.2 debug: 4.3.4(supports-color@8.1.1) minimatch: 3.1.2 transitivePeerDependencies: - supports-color + dev: true - '@humanwhocodes/module-importer@1.0.1': {} + /@humanwhocodes/module-importer@1.0.1: + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + dev: true - '@humanwhocodes/object-schema@2.0.2': {} + /@humanwhocodes/object-schema@2.0.2: + resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} + dev: true - '@improbable-eng/grpc-web-node-http-transport@0.15.0(@improbable-eng/grpc-web@0.15.0(google-protobuf@3.21.2))': + /@improbable-eng/grpc-web-node-http-transport@0.15.0(@improbable-eng/grpc-web@0.15.0): + resolution: {integrity: sha512-HLgJfVolGGpjc9DWPhmMmXJx8YGzkek7jcCFO1YYkSOoO81MWRZentPOd/JiKiZuU08wtc4BG+WNuGzsQB5jZA==} + peerDependencies: + '@improbable-eng/grpc-web': '>=0.13.0' dependencies: '@improbable-eng/grpc-web': 0.15.0(google-protobuf@3.21.2) + dev: false - '@improbable-eng/grpc-web@0.15.0(google-protobuf@3.21.2)': + /@improbable-eng/grpc-web@0.15.0(google-protobuf@3.21.2): + resolution: {integrity: sha512-ERft9/0/8CmYalqOVnJnpdDry28q+j+nAlFFARdjyxXDJ+Mhgv9+F600QC8BR9ygOfrXRlAk6CvST2j+JCpQPg==} + peerDependencies: + google-protobuf: ^3.14.0 dependencies: browser-headers: 0.4.1 google-protobuf: 3.21.2 + dev: false - '@istanbuljs/load-nyc-config@1.1.0': + /@istanbuljs/load-nyc-config@1.1.0: + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} dependencies: camelcase: 5.3.1 find-up: 4.1.0 get-package-type: 0.1.0 js-yaml: 3.14.1 resolve-from: 5.0.0 + dev: true - '@istanbuljs/schema@0.1.3': {} + /@istanbuljs/schema@0.1.3: + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + dev: true - '@jest/console@29.5.0': + /@jest/console@29.5.0: + resolution: {integrity: sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.5.0 '@types/node': 18.15.11 @@ -8666,8 +3420,16 @@ snapshots: jest-message-util: 29.5.0 jest-util: 29.5.0 slash: 3.0.0 + dev: true - '@jest/core@29.5.0': + /@jest/core@29.5.0: + resolution: {integrity: sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true dependencies: '@jest/console': 29.5.0 '@jest/reporters': 29.5.0 @@ -8700,26 +3462,38 @@ snapshots: transitivePeerDependencies: - supports-color - ts-node + dev: true - '@jest/environment@29.5.0': + /@jest/environment@29.5.0: + resolution: {integrity: sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/fake-timers': 29.5.0 '@jest/types': 29.5.0 '@types/node': 18.15.11 jest-mock: 29.5.0 + dev: true - '@jest/expect-utils@29.5.0': + /@jest/expect-utils@29.5.0: + resolution: {integrity: sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: jest-get-type: 29.4.3 + dev: true - '@jest/expect@29.5.0': + /@jest/expect@29.5.0: + resolution: {integrity: sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: expect: 29.5.0 jest-snapshot: 29.5.0 transitivePeerDependencies: - supports-color + dev: true - '@jest/fake-timers@29.5.0': + /@jest/fake-timers@29.5.0: + resolution: {integrity: sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.5.0 '@sinonjs/fake-timers': 10.0.2 @@ -8727,8 +3501,11 @@ snapshots: jest-message-util: 29.5.0 jest-mock: 29.5.0 jest-util: 29.5.0 + dev: true - '@jest/globals@29.5.0': + /@jest/globals@29.5.0: + resolution: {integrity: sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/environment': 29.5.0 '@jest/expect': 29.5.0 @@ -8736,8 +3513,16 @@ snapshots: jest-mock: 29.5.0 transitivePeerDependencies: - supports-color + dev: true - '@jest/reporters@29.5.0': + /@jest/reporters@29.5.0: + resolution: {integrity: sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true dependencies: '@bcoe/v8-coverage': 0.2.3 '@jest/console': 29.5.0 @@ -8765,32 +3550,47 @@ snapshots: v8-to-istanbul: 9.1.0 transitivePeerDependencies: - supports-color + dev: true - '@jest/schemas@29.4.3': + /@jest/schemas@29.4.3: + resolution: {integrity: sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@sinclair/typebox': 0.25.24 + dev: true - '@jest/source-map@29.4.3': + /@jest/source-map@29.4.3: + resolution: {integrity: sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jridgewell/trace-mapping': 0.3.18 callsites: 3.1.0 graceful-fs: 4.2.11 + dev: true - '@jest/test-result@29.5.0': + /@jest/test-result@29.5.0: + resolution: {integrity: sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/console': 29.5.0 '@jest/types': 29.5.0 '@types/istanbul-lib-coverage': 2.0.4 collect-v8-coverage: 1.0.1 + dev: true - '@jest/test-sequencer@29.5.0': + /@jest/test-sequencer@29.5.0: + resolution: {integrity: sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/test-result': 29.5.0 graceful-fs: 4.2.11 jest-haste-map: 29.5.0 slash: 3.0.0 + dev: true - '@jest/transform@29.5.0': + /@jest/transform@29.5.0: + resolution: {integrity: sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/core': 7.21.4 '@jest/types': 29.5.0 @@ -8809,8 +3609,11 @@ snapshots: write-file-atomic: 4.0.2 transitivePeerDependencies: - supports-color + dev: true - '@jest/types@29.5.0': + /@jest/types@29.5.0: + resolution: {integrity: sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/schemas': 29.4.3 '@types/istanbul-lib-coverage': 2.0.4 @@ -8818,31 +3621,78 @@ snapshots: '@types/node': 18.15.11 '@types/yargs': 17.0.24 chalk: 4.1.2 + dev: true - '@jridgewell/gen-mapping@0.3.3': + /@jridgewell/gen-mapping@0.3.3: + resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} + engines: {node: '>=6.0.0'} dependencies: '@jridgewell/set-array': 1.1.2 '@jridgewell/sourcemap-codec': 1.4.15 '@jridgewell/trace-mapping': 0.3.18 + dev: true + + /@jridgewell/gen-mapping@0.3.5: + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.25 + dev: true + + /@jridgewell/resolve-uri@3.1.0: + resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/resolve-uri@3.1.2: + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + dev: true - '@jridgewell/resolve-uri@3.1.0': {} + /@jridgewell/set-array@1.1.2: + resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + engines: {node: '>=6.0.0'} + dev: true - '@jridgewell/set-array@1.1.2': {} + /@jridgewell/set-array@1.2.1: + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + dev: true - '@jridgewell/sourcemap-codec@1.4.14': {} + /@jridgewell/sourcemap-codec@1.4.14: + resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} + dev: true - '@jridgewell/sourcemap-codec@1.4.15': {} + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + dev: true - '@jridgewell/trace-mapping@0.3.18': + /@jridgewell/trace-mapping@0.3.18: + resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==} dependencies: '@jridgewell/resolve-uri': 3.1.0 '@jridgewell/sourcemap-codec': 1.4.14 + dev: true + + /@jridgewell/trace-mapping@0.3.25: + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true - '@koa/cors@4.0.0': + /@koa/cors@4.0.0: + resolution: {integrity: sha512-Y4RrbvGTlAaa04DBoPBWJqDR5gPj32OOz827ULXfgB1F7piD1MB/zwn8JR2LAnvdILhxUbXbkXGWuNVsFuVFCQ==} + engines: {node: '>= 14.0.0'} dependencies: vary: 1.1.2 + dev: false - '@koa/router@12.0.1': + /@koa/router@12.0.1: + resolution: {integrity: sha512-ribfPYfHb+Uw3b27Eiw6NPqjhIhTpVFzEWLwyc/1Xp+DCdwRRyIlAUODX+9bPARF6aQtUu1+/PHzdNvRzcs/+Q==} + engines: {node: '>= 12'} dependencies: debug: 4.3.4(supports-color@8.1.1) http-errors: 2.0.0 @@ -8851,15 +3701,19 @@ snapshots: path-to-regexp: 6.2.1 transitivePeerDependencies: - supports-color + dev: false - '@manypkg/find-root@1.1.0': + /@manypkg/find-root@1.1.0: + resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} dependencies: '@babel/runtime': 7.21.0 '@types/node': 12.20.55 find-up: 4.1.0 fs-extra: 8.1.0 + dev: true - '@manypkg/get-packages@1.1.3': + /@manypkg/get-packages@1.1.3: + resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} dependencies: '@babel/runtime': 7.21.0 '@changesets/types': 4.1.0 @@ -8867,71 +3721,151 @@ snapshots: fs-extra: 8.1.0 globby: 11.1.0 read-yaml-file: 1.1.0 + dev: true - '@metamask/eth-sig-util@4.0.1': + /@metamask/eth-sig-util@4.0.1: + resolution: {integrity: sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ==} + engines: {node: '>=12.0.0'} dependencies: ethereumjs-abi: 0.6.8 ethereumjs-util: 6.2.1 ethjs-util: 0.1.6 tweetnacl: 1.0.3 tweetnacl-util: 0.15.1 + dev: true - '@noble/curves@1.2.0': + /@noble/curves@1.2.0: + resolution: {integrity: sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==} dependencies: '@noble/hashes': 1.3.2 + dev: false - '@noble/curves@1.3.0': + /@noble/curves@1.3.0: + resolution: {integrity: sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA==} dependencies: '@noble/hashes': 1.3.3 + dev: true - '@noble/hashes@1.2.0': {} + /@noble/hashes@1.2.0: + resolution: {integrity: sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==} + dev: true - '@noble/hashes@1.3.2': {} + /@noble/hashes@1.3.2: + resolution: {integrity: sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==} + engines: {node: '>= 16'} + dev: false - '@noble/hashes@1.3.3': {} + /@noble/hashes@1.3.3: + resolution: {integrity: sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==} + engines: {node: '>= 16'} + dev: true - '@noble/secp256k1@1.7.1': {} + /@noble/secp256k1@1.7.1: + resolution: {integrity: sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==} + dev: true - '@nodelib/fs.scandir@2.1.5': + /@nodelib/fs.scandir@2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} dependencies: '@nodelib/fs.stat': 2.0.5 run-parallel: 1.2.0 - '@nodelib/fs.stat@2.0.5': {} + /@nodelib/fs.stat@2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} - '@nodelib/fs.walk@1.2.8': + /@nodelib/fs.walk@1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} dependencies: '@nodelib/fs.scandir': 2.1.5 fastq: 1.15.0 - '@nomicfoundation/edr-darwin-arm64@0.3.0': + /@nomicfoundation/edr-darwin-arm64@0.3.0: + resolution: {integrity: sha512-Gg3jB1NJtqSXHjivSs5tws17r4w0V1aEW6/G6qJFYIGH+EnuNXCDXmNuYQ6++rQ7xBp56wueq93ILmtbyeGLwA==} + engines: {node: '>= 18'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true optional: true - '@nomicfoundation/edr-darwin-x64@0.3.0': + /@nomicfoundation/edr-darwin-x64@0.3.0: + resolution: {integrity: sha512-9leJCZx8jTdb0mIxY/pHypZViToZ7bS49CpwG8TTAi37HhgSUlM/iA4vrC7dA2LiBG+bXx/9BPJ0M/x0xP7EvQ==} + engines: {node: '>= 18'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true optional: true - '@nomicfoundation/edr-linux-arm64-gnu@0.3.0': + /@nomicfoundation/edr-linux-arm64-gnu@0.3.0: + resolution: {integrity: sha512-fU3zE94J3IeFZArpMeOdX4+cPZ2+rJlqd7clIlxI8zAxcTNDE9tV8jQsugQEI6ufi1ibEPuG26kJorEvIhBQgw==} + engines: {node: '>= 18'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true optional: true - '@nomicfoundation/edr-linux-arm64-musl@0.3.0': + /@nomicfoundation/edr-linux-arm64-musl@0.3.0: + resolution: {integrity: sha512-ya+kvEazgGZ+4HeJ/dc12je3DdiE0fzW4HVVkFreWPh1ZVKlH3nXtGN8I5FXO6eOMvvD0gdph6mDLo7z6S2NTg==} + engines: {node: '>= 18'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true optional: true - '@nomicfoundation/edr-linux-x64-gnu@0.3.0': + /@nomicfoundation/edr-linux-x64-gnu@0.3.0: + resolution: {integrity: sha512-ODi6NytOIYJLaKypzbgb7lWvR/YAOj6MhVdj0ZlySjyG/r+4yLfEdWXalYeMtTPw7oWwo7cncZNT7vaxcboSfQ==} + engines: {node: '>= 18'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true optional: true - '@nomicfoundation/edr-linux-x64-musl@0.3.0': + /@nomicfoundation/edr-linux-x64-musl@0.3.0: + resolution: {integrity: sha512-4+5kcETwTrrrRKl7Xi2RsEgN391w1ZyPlZWSC73z3zqHtllriSiynn7yeJedpLOPMUTvZKaoZHf6Ahguj6/UaA==} + engines: {node: '>= 18'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true optional: true - '@nomicfoundation/edr-win32-arm64-msvc@0.3.0': + /@nomicfoundation/edr-win32-arm64-msvc@0.3.0: + resolution: {integrity: sha512-8Tmn2kwnx0ZEuj3E4zlP4CH9hMeuZStq4E1Q1um3LyuZ9f+0XdZoHvgSjskeTwxmkHcp4A5S3yg/noP1Auc8IA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true optional: true - '@nomicfoundation/edr-win32-ia32-msvc@0.3.0': + /@nomicfoundation/edr-win32-ia32-msvc@0.3.0: + resolution: {integrity: sha512-6SRzowPhYeE0dU7oTpHePj0YCHwhZ+VvjHuJh0pJS+FmzduOJgzKX+tU7wLRCtYCMrb9/7sIr9HqsUsD/pTrVg==} + engines: {node: '>= 18'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true optional: true - '@nomicfoundation/edr-win32-x64-msvc@0.3.0': + /@nomicfoundation/edr-win32-x64-msvc@0.3.0: + resolution: {integrity: sha512-f54/qch6q9E5G2zVi5TqONZSwz9ILJckRg2pAbiZlofZMVplef9iEkPT4Q6A40YWdB9Oo+hDfpC3OaYLzcf5OQ==} + engines: {node: '>= 18'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true optional: true - '@nomicfoundation/edr@0.3.0': + /@nomicfoundation/edr@0.3.0: + resolution: {integrity: sha512-ygGAHss97Ii1TqPEo7lz1vfVKe/NhvvDK+78ehayOULhb1dxro+zP5PwVtXEgf5Qpum2TLIu2vZ7EqI9ft9ZwQ==} + engines: {node: '>= 18'} optionalDependencies: '@nomicfoundation/edr-darwin-arm64': 0.3.0 '@nomicfoundation/edr-darwin-x64': 0.3.0 @@ -8942,31 +3876,60 @@ snapshots: '@nomicfoundation/edr-win32-arm64-msvc': 0.3.0 '@nomicfoundation/edr-win32-ia32-msvc': 0.3.0 '@nomicfoundation/edr-win32-x64-msvc': 0.3.0 + dev: true - '@nomicfoundation/ethereumjs-common@4.0.4': + /@nomicfoundation/ethereumjs-common@4.0.4: + resolution: {integrity: sha512-9Rgb658lcWsjiicr5GzNCjI1llow/7r0k50dLL95OJ+6iZJcVbi15r3Y0xh2cIO+zgX0WIHcbzIu6FeQf9KPrg==} dependencies: '@nomicfoundation/ethereumjs-util': 9.0.4 transitivePeerDependencies: - c-kzg + dev: true - '@nomicfoundation/ethereumjs-rlp@5.0.4': {} + /@nomicfoundation/ethereumjs-rlp@5.0.4: + resolution: {integrity: sha512-8H1S3s8F6QueOc/X92SdrA4RDenpiAEqMg5vJH99kcQaCy/a3Q6fgseo75mgWlbanGJXSlAPtnCeG9jvfTYXlw==} + engines: {node: '>=18'} + hasBin: true + dev: true - '@nomicfoundation/ethereumjs-tx@5.0.4': + /@nomicfoundation/ethereumjs-tx@5.0.4: + resolution: {integrity: sha512-Xjv8wAKJGMrP1f0n2PeyfFCCojHd7iS3s/Ab7qzF1S64kxZ8Z22LCMynArYsVqiFx6rzYy548HNVEyI+AYN/kw==} + engines: {node: '>=18'} + peerDependencies: + c-kzg: ^2.1.2 + peerDependenciesMeta: + c-kzg: + optional: true dependencies: '@nomicfoundation/ethereumjs-common': 4.0.4 '@nomicfoundation/ethereumjs-rlp': 5.0.4 '@nomicfoundation/ethereumjs-util': 9.0.4 ethereum-cryptography: 0.1.3 + dev: true - '@nomicfoundation/ethereumjs-util@9.0.4': + /@nomicfoundation/ethereumjs-util@9.0.4: + resolution: {integrity: sha512-sLOzjnSrlx9Bb9EFNtHzK/FJFsfg2re6bsGqinFinH1gCqVfz9YYlXiMWwDM4C/L4ywuHFCYwfKTVr/QHQcU0Q==} + engines: {node: '>=18'} + peerDependencies: + c-kzg: ^2.1.2 + peerDependenciesMeta: + c-kzg: + optional: true dependencies: '@nomicfoundation/ethereumjs-rlp': 5.0.4 ethereum-cryptography: 0.1.3 + dev: true - '@nomicfoundation/hardhat-chai-matchers@1.0.6(@nomiclabs/hardhat-ethers@2.2.3(ethers@5.7.2)(hardhat@2.22.0(typescript@5.4.2)))(chai@4.4.1)(ethers@5.7.2)(hardhat@2.22.0(typescript@5.4.2))': + /@nomicfoundation/hardhat-chai-matchers@1.0.6(@nomiclabs/hardhat-ethers@2.2.3)(chai@4.4.1)(ethers@5.7.2)(hardhat@2.22.0): + resolution: {integrity: sha512-f5ZMNmabZeZegEfuxn/0kW+mm7+yV7VNDxLpMOMGXWFJ2l/Ct3QShujzDRF9cOkK9Ui/hbDeOWGZqyQALDXVCQ==} + peerDependencies: + '@nomiclabs/hardhat-ethers': ^2.0.0 + chai: ^4.2.0 + ethers: ^5.0.0 + hardhat: ^2.9.4 dependencies: '@ethersproject/abi': 5.7.0 - '@nomiclabs/hardhat-ethers': 2.2.3(ethers@5.7.2)(hardhat@2.22.0(typescript@5.4.2)) + '@nomiclabs/hardhat-ethers': 2.2.3(ethers@5.7.2)(hardhat@2.22.0) '@types/chai-as-promised': 7.1.8 chai: 4.4.1 chai-as-promised: 7.1.1(chai@4.4.1) @@ -8974,38 +3937,101 @@ snapshots: ethers: 5.7.2 hardhat: 2.22.0(typescript@5.4.2) ordinal: 1.0.3 + dev: true - '@nomicfoundation/solidity-analyzer-darwin-arm64@0.1.1': + /@nomicfoundation/solidity-analyzer-darwin-arm64@0.1.1: + resolution: {integrity: sha512-KcTodaQw8ivDZyF+D76FokN/HdpgGpfjc/gFCImdLUyqB6eSWVaZPazMbeAjmfhx3R0zm/NYVzxwAokFKgrc0w==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true optional: true - '@nomicfoundation/solidity-analyzer-darwin-x64@0.1.1': + /@nomicfoundation/solidity-analyzer-darwin-x64@0.1.1: + resolution: {integrity: sha512-XhQG4BaJE6cIbjAVtzGOGbK3sn1BO9W29uhk9J8y8fZF1DYz0Doj8QDMfpMu+A6TjPDs61lbsmeYodIDnfveSA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true optional: true - '@nomicfoundation/solidity-analyzer-freebsd-x64@0.1.1': + /@nomicfoundation/solidity-analyzer-freebsd-x64@0.1.1: + resolution: {integrity: sha512-GHF1VKRdHW3G8CndkwdaeLkVBi5A9u2jwtlS7SLhBc8b5U/GcoL39Q+1CSO3hYqePNP+eV5YI7Zgm0ea6kMHoA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true optional: true - '@nomicfoundation/solidity-analyzer-linux-arm64-gnu@0.1.1': + /@nomicfoundation/solidity-analyzer-linux-arm64-gnu@0.1.1: + resolution: {integrity: sha512-g4Cv2fO37ZsUENQ2vwPnZc2zRenHyAxHcyBjKcjaSmmkKrFr64yvzeNO8S3GBFCo90rfochLs99wFVGT/0owpg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true optional: true - '@nomicfoundation/solidity-analyzer-linux-arm64-musl@0.1.1': + /@nomicfoundation/solidity-analyzer-linux-arm64-musl@0.1.1: + resolution: {integrity: sha512-WJ3CE5Oek25OGE3WwzK7oaopY8xMw9Lhb0mlYuJl/maZVo+WtP36XoQTb7bW/i8aAdHW5Z+BqrHMux23pvxG3w==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true optional: true - '@nomicfoundation/solidity-analyzer-linux-x64-gnu@0.1.1': + /@nomicfoundation/solidity-analyzer-linux-x64-gnu@0.1.1: + resolution: {integrity: sha512-5WN7leSr5fkUBBjE4f3wKENUy9HQStu7HmWqbtknfXkkil+eNWiBV275IOlpXku7v3uLsXTOKpnnGHJYI2qsdA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true optional: true - '@nomicfoundation/solidity-analyzer-linux-x64-musl@0.1.1': + /@nomicfoundation/solidity-analyzer-linux-x64-musl@0.1.1: + resolution: {integrity: sha512-KdYMkJOq0SYPQMmErv/63CwGwMm5XHenEna9X9aB8mQmhDBrYrlAOSsIPgFCUSL0hjxE3xHP65/EPXR/InD2+w==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true optional: true - '@nomicfoundation/solidity-analyzer-win32-arm64-msvc@0.1.1': + /@nomicfoundation/solidity-analyzer-win32-arm64-msvc@0.1.1: + resolution: {integrity: sha512-VFZASBfl4qiBYwW5xeY20exWhmv6ww9sWu/krWSesv3q5hA0o1JuzmPHR4LPN6SUZj5vcqci0O6JOL8BPw+APg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true optional: true - '@nomicfoundation/solidity-analyzer-win32-ia32-msvc@0.1.1': + /@nomicfoundation/solidity-analyzer-win32-ia32-msvc@0.1.1: + resolution: {integrity: sha512-JnFkYuyCSA70j6Si6cS1A9Gh1aHTEb8kOTBApp/c7NRTFGNMH8eaInKlyuuiIbvYFhlXW4LicqyYuWNNq9hkpQ==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true optional: true - '@nomicfoundation/solidity-analyzer-win32-x64-msvc@0.1.1': + /@nomicfoundation/solidity-analyzer-win32-x64-msvc@0.1.1: + resolution: {integrity: sha512-HrVJr6+WjIXGnw3Q9u6KQcbZCtk0caVWhCdFADySvRyUxJ8PnzlaP+MhwNE8oyT8OZ6ejHBRrrgjSqDCFXGirw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true optional: true - '@nomicfoundation/solidity-analyzer@0.1.1': + /@nomicfoundation/solidity-analyzer@0.1.1: + resolution: {integrity: sha512-1LMtXj1puAxyFusBgUIy5pZk3073cNXYnXUpuNKFghHbIit/xZgbk0AokpUADbNm3gyD6bFWl3LRFh3dhVdREg==} + engines: {node: '>= 12'} optionalDependencies: '@nomicfoundation/solidity-analyzer-darwin-arm64': 0.1.1 '@nomicfoundation/solidity-analyzer-darwin-x64': 0.1.1 @@ -9017,160 +4043,269 @@ snapshots: '@nomicfoundation/solidity-analyzer-win32-arm64-msvc': 0.1.1 '@nomicfoundation/solidity-analyzer-win32-ia32-msvc': 0.1.1 '@nomicfoundation/solidity-analyzer-win32-x64-msvc': 0.1.1 + dev: true - '@nomiclabs/hardhat-ethers@2.2.3(ethers@5.7.2)(hardhat@2.22.0(typescript@5.4.2))': + /@nomiclabs/hardhat-ethers@2.2.3(ethers@5.7.2)(hardhat@2.22.0): + resolution: {integrity: sha512-YhzPdzb612X591FOe68q+qXVXGG2ANZRvDo0RRUtimev85rCrAlv/TLMEZw5c+kq9AbzocLTVX/h2jVIFPL9Xg==} + peerDependencies: + ethers: ^5.0.0 + hardhat: ^2.0.0 dependencies: ethers: 5.7.2 hardhat: 2.22.0(typescript@5.4.2) + dev: true - '@npmcli/fs@2.1.2': + /@npmcli/fs@2.1.2: + resolution: {integrity: sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} dependencies: '@gar/promisify': 1.1.3 semver: 7.6.0 + dev: false - '@npmcli/move-file@2.0.1': + /@npmcli/move-file@2.0.1: + resolution: {integrity: sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + deprecated: This functionality has been moved to @npmcli/fs dependencies: mkdirp: 1.0.4 rimraf: 3.0.2 + dev: false +<<<<<<< HEAD <<<<<<< HEAD /@opentelemetry/api@1.8.0: resolution: {integrity: sha512-I/s6F7yKUDdtMsoBWXJe8Qz40Tui5vsuKCWJEWVL+5q9sSWRzzx6v2KeNsOBEwd94j0eWkpWCH4yB6rZg9Mf0w==} engines: {node: '>=8.0.0'} dev: false +======= +>>>>>>> 9643c6a1f (Revert "feat: update pnpm and node version") /@oven/bun-darwin-aarch64@1.0.11: resolution: {integrity: sha512-6wCO37lyGNcqefEDQ7IJp4LW7ElKMH50/hlvW5agIBN/XbTwwtv3788dJ9NczEV7RQSlkOI6J3dUoQJ6Pgav6w==} cpu: [arm64] os: [darwin] requiresBuild: true dev: true +<<<<<<< HEAD ======= '@oven/bun-darwin-aarch64@1.0.11': >>>>>>> d2ee83450 (feat: update pnpm and node version) +======= +>>>>>>> 9643c6a1f (Revert "feat: update pnpm and node version") optional: true - '@oven/bun-darwin-x64-baseline@1.0.11': + /@oven/bun-darwin-x64-baseline@1.0.11: + resolution: {integrity: sha512-is9liFB10GUN/UsSZVkO5tfMIJcBkiDqRvVzNkDHix/i5aXyaBb0vX+uOdJTlHDZyNGi+vHhbRMq3c3ezjJKPA==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true optional: true - '@oven/bun-darwin-x64@1.0.11': + /@oven/bun-darwin-x64@1.0.11: + resolution: {integrity: sha512-5eCtrlOfMuhg7es/6p/rZw5+4khBao/hhGKCPHl9LBok1Mrf5QQjGbXj9OoA2RC2Lxm9av4nrAZG/5nMM01B2g==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true optional: true - '@oven/bun-linux-aarch64@1.0.11': + /@oven/bun-linux-aarch64@1.0.11: + resolution: {integrity: sha512-P8hI+vQ+8ffsMLRi2TNzkxsHukrNQD8G2luWo/ndJ55+1uuAMScWZooxm9rgWL6baoB/TL9/Hvi/6INGoE8UlQ==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true optional: true - '@oven/bun-linux-x64-baseline@1.0.11': + /@oven/bun-linux-x64-baseline@1.0.11: + resolution: {integrity: sha512-Asx4pEMDXfmu9Sa0jX4PE1Wijtg1oCfUx8o4FeQEvnVz2+cGG+VoqZXuITmoQC6A4IzAZuJ1tcWOZ8jQCDtvJA==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true optional: true - '@oven/bun-linux-x64@1.0.11': + /@oven/bun-linux-x64@1.0.11: + resolution: {integrity: sha512-F9ZcgVHsPQk6ooHXIeydiLcVcMwhGRjSlOVeHBuHEJ+bI24e/dCY73UKEEz8/hLNA32ocDMmkAGE79qv0ccEIA==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true optional: true - '@protobufjs/aspromise@1.1.2': {} + /@protobufjs/aspromise@1.1.2: + resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} - '@protobufjs/base64@1.1.2': {} + /@protobufjs/base64@1.1.2: + resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} - '@protobufjs/codegen@2.0.4': {} + /@protobufjs/codegen@2.0.4: + resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==} - '@protobufjs/eventemitter@1.1.0': {} + /@protobufjs/eventemitter@1.1.0: + resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==} - '@protobufjs/fetch@1.1.0': + /@protobufjs/fetch@1.1.0: + resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==} dependencies: '@protobufjs/aspromise': 1.1.2 '@protobufjs/inquire': 1.1.0 - '@protobufjs/float@1.0.2': {} + /@protobufjs/float@1.0.2: + resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} - '@protobufjs/inquire@1.1.0': {} + /@protobufjs/inquire@1.1.0: + resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==} - '@protobufjs/path@1.1.2': {} + /@protobufjs/path@1.1.2: + resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} - '@protobufjs/pool@1.1.0': {} + /@protobufjs/pool@1.1.0: + resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} - '@protobufjs/utf8@1.1.0': {} + /@protobufjs/utf8@1.1.0: + resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} - '@remix-run/router@1.6.0': {} + /@remix-run/router@1.6.0: + resolution: {integrity: sha512-N13NRw3T2+6Xi9J//3CGLsK2OqC8NMme3d/YX+nh05K9YHWGcv8DycHJrqGScSP4T75o8IN6nqIMhVFU8ohg8w==} + engines: {node: '>=14'} + dev: false - '@samverschueren/stream-to-observable@0.3.1(rxjs@6.6.7)': + /@samverschueren/stream-to-observable@0.3.1(rxjs@6.6.7): + resolution: {integrity: sha512-c/qwwcHyafOQuVQJj0IlBjf5yYgBI7YPJ77k4fOJYesb41jio65eaJODRUmfYKhTOFBrIZ66kgvGPlNbjuoRdQ==} + engines: {node: '>=6'} + peerDependencies: + rxjs: '*' + zen-observable: '*' + peerDependenciesMeta: + rxjs: + optional: true + zen-observable: + optional: true dependencies: any-observable: 0.3.0(rxjs@6.6.7) - optionalDependencies: rxjs: 6.6.7 transitivePeerDependencies: - zenObservable + dev: true + + /@scure/base@1.1.3: + resolution: {integrity: sha512-/+SgoRjLq7Xlf0CWuLHq2LUZeL/w65kfzAPG5NH9pcmBhs+nunQTn4gvdwgMTIXnt9b2C/1SeL2XiysZEyIC9Q==} + dev: true + + /@scure/base@1.1.5: + resolution: {integrity: sha512-Brj9FiG2W1MRQSTB212YVPRrcbjkv48FoZi/u4l/zds/ieRrqsh7aUf6CLwkAq61oKXr/ZlTzlY66gLIj3TFTQ==} + dev: true - '@scure/base@1.1.5': {} + /@scure/base@1.1.6: + resolution: {integrity: sha512-ok9AWwhcgYuGG3Zfhyqg+zwl+Wn5uE+dwC0NV/2qQkx4dABbb/bx96vWu8NSj+BNjjSjno+JRYRjle1jV08k3g==} + dev: false - '@scure/bip32@1.1.5': + /@scure/bip32@1.1.5: + resolution: {integrity: sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==} dependencies: '@noble/hashes': 1.2.0 '@noble/secp256k1': 1.7.1 - '@scure/base': 1.1.5 + '@scure/base': 1.1.3 + dev: true - '@scure/bip32@1.3.2': + /@scure/bip32@1.3.2: + resolution: {integrity: sha512-N1ZhksgwD3OBlwTv3R6KFEcPojl/W4ElJOeCZdi+vuI5QmTFwLq3OFf2zd2ROpKvxFdgZ6hUpb0dx9bVNEwYCA==} dependencies: '@noble/curves': 1.2.0 - '@noble/hashes': 1.3.3 - '@scure/base': 1.1.5 + '@noble/hashes': 1.3.2 + '@scure/base': 1.1.6 + dev: false - '@scure/bip32@1.3.3': + /@scure/bip32@1.3.3: + resolution: {integrity: sha512-LJaN3HwRbfQK0X1xFSi0Q9amqOgzQnnDngIt+ZlsBC3Bm7/nE7K0kwshZHyaru79yIVRv/e1mQAjZyuZG6jOFQ==} dependencies: '@noble/curves': 1.3.0 '@noble/hashes': 1.3.3 '@scure/base': 1.1.5 + dev: true - '@scure/bip39@1.1.1': + /@scure/bip39@1.1.1: + resolution: {integrity: sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==} dependencies: '@noble/hashes': 1.2.0 - '@scure/base': 1.1.5 + '@scure/base': 1.1.3 + dev: true - '@scure/bip39@1.2.1': + /@scure/bip39@1.2.1: + resolution: {integrity: sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==} dependencies: - '@noble/hashes': 1.3.3 - '@scure/base': 1.1.5 + '@noble/hashes': 1.3.2 + '@scure/base': 1.1.6 + dev: false - '@scure/bip39@1.2.2': + /@scure/bip39@1.2.2: + resolution: {integrity: sha512-HYf9TUXG80beW+hGAt3TRM8wU6pQoYur9iNypTROm42dorCGmLnFe3eWjz3gOq6G62H2WRh0FCzAR1PI+29zIA==} dependencies: '@noble/hashes': 1.3.3 '@scure/base': 1.1.5 + dev: true - '@sentry-internal/tracing@7.86.0': + /@sentry-internal/tracing@7.86.0: + resolution: {integrity: sha512-b4dUsNWlPWRwakGwR7bhOkqiFlqQszH1hhVFwrm/8s3kqEBZ+E4CeIfCvuHBHQ1cM/fx55xpXX/BU163cy+3iQ==} + engines: {node: '>=8'} dependencies: '@sentry/core': 7.86.0 '@sentry/types': 7.86.0 '@sentry/utils': 7.86.0 + dev: false - '@sentry/core@5.30.0': + /@sentry/core@5.30.0: + resolution: {integrity: sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg==} + engines: {node: '>=6'} dependencies: '@sentry/hub': 5.30.0 '@sentry/minimal': 5.30.0 '@sentry/types': 5.30.0 '@sentry/utils': 5.30.0 tslib: 1.14.1 + dev: true - '@sentry/core@7.86.0': + /@sentry/core@7.86.0: + resolution: {integrity: sha512-SbLvqd1bRYzhDS42u7GMnmbDMfth/zRiLElQWbLK/shmuZzTcfQSwNNdF4Yj+VfjOkqPFgGmICHSHVUc9dh01g==} + engines: {node: '>=8'} dependencies: '@sentry/types': 7.86.0 '@sentry/utils': 7.86.0 + dev: false - '@sentry/hub@5.30.0': + /@sentry/hub@5.30.0: + resolution: {integrity: sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ==} + engines: {node: '>=6'} dependencies: '@sentry/types': 5.30.0 '@sentry/utils': 5.30.0 tslib: 1.14.1 + dev: true - '@sentry/hub@7.86.0': + /@sentry/hub@7.86.0: + resolution: {integrity: sha512-tS9g+yoD/Zs4OS/gCO4/ccT0m90o3brkCIm/gRzPqI5dq2hEE1qn8bF7HM/vLQARM+bsmTEzPzZy19104U5Btg==} + engines: {node: '>=8'} dependencies: '@sentry/core': 7.86.0 '@sentry/types': 7.86.0 '@sentry/utils': 7.86.0 + dev: false - '@sentry/minimal@5.30.0': + /@sentry/minimal@5.30.0: + resolution: {integrity: sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw==} + engines: {node: '>=6'} dependencies: '@sentry/hub': 5.30.0 '@sentry/types': 5.30.0 tslib: 1.14.1 + dev: true - '@sentry/node@5.30.0': + /@sentry/node@5.30.0: + resolution: {integrity: sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg==} + engines: {node: '>=6'} dependencies: '@sentry/core': 5.30.0 '@sentry/hub': 5.30.0 @@ -9183,8 +4318,11 @@ snapshots: tslib: 1.14.1 transitivePeerDependencies: - supports-color + dev: true - '@sentry/node@7.86.0': + /@sentry/node@7.86.0: + resolution: {integrity: sha512-cB1bn/LMn2Km97Y3hv63xwWxT50/G5ixGuSxTZ3dCQM6VDhmZoCuC5NGT3itVvaRd6upQXRZa5W0Zgyh0HXKig==} + engines: {node: '>=8'} dependencies: '@sentry-internal/tracing': 7.86.0 '@sentry/core': 7.86.0 @@ -9193,8 +4331,13 @@ snapshots: https-proxy-agent: 5.0.1 transitivePeerDependencies: - supports-color + dev: false - '@sentry/profiling-node@1.2.6': + /@sentry/profiling-node@1.2.6: + resolution: {integrity: sha512-WsXO7VmLze5wPWHpvoRZFTtN+wHw9lYWKZs4T2FwPmvfNVaScGJey/+Wp51aM47Yy12Gj9n/BpqFYDsUXRLMvw==} + engines: {node: '>=8.0.0'} + hasBin: true + requiresBuild: true dependencies: '@sentry/core': 7.86.0 '@sentry/hub': 7.86.0 @@ -9207,39 +4350,60 @@ snapshots: transitivePeerDependencies: - bluebird - supports-color + dev: false - '@sentry/tracing@5.30.0': + /@sentry/tracing@5.30.0: + resolution: {integrity: sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw==} + engines: {node: '>=6'} dependencies: '@sentry/hub': 5.30.0 '@sentry/minimal': 5.30.0 '@sentry/types': 5.30.0 '@sentry/utils': 5.30.0 tslib: 1.14.1 + dev: true - '@sentry/types@5.30.0': {} + /@sentry/types@5.30.0: + resolution: {integrity: sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw==} + engines: {node: '>=6'} + dev: true - '@sentry/types@7.86.0': {} + /@sentry/types@7.86.0: + resolution: {integrity: sha512-pGAt0+bMfWgo0KG2epthfNV4Wae03tURpoxNjGo5Fr4cXxvLTSijSAQ6rmmO4bXBJ7+rErEjX30g30o/eEdP9g==} + engines: {node: '>=8'} + dev: false - '@sentry/utils@5.30.0': + /@sentry/utils@5.30.0: + resolution: {integrity: sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww==} + engines: {node: '>=6'} dependencies: '@sentry/types': 5.30.0 tslib: 1.14.1 + dev: true - '@sentry/utils@7.86.0': + /@sentry/utils@7.86.0: + resolution: {integrity: sha512-6PejFtw9VTFFy5vu0ks+U7Ozkqz+eMt+HN8AZKBKErYzX5/xs0kpkOcSRpu3ETdTYcZf8VAmLVgFgE2BE+3WuQ==} + engines: {node: '>=8'} dependencies: '@sentry/types': 7.86.0 + dev: false - '@sinclair/typebox@0.25.24': {} + /@sinclair/typebox@0.25.24: + resolution: {integrity: sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==} + dev: true - '@sinonjs/commons@2.0.0': + /@sinonjs/commons@2.0.0: + resolution: {integrity: sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==} dependencies: type-detect: 4.0.8 + dev: true - '@sinonjs/fake-timers@10.0.2': + /@sinonjs/fake-timers@10.0.2: + resolution: {integrity: sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw==} dependencies: '@sinonjs/commons': 2.0.0 + dev: true -<<<<<<< HEAD /@smithy/abort-controller@2.2.0: resolution: {integrity: sha512-wRlta7GuLWpTqtFfGo+nZyOO1vEvewdNR1R4rTxpC8XU6vG/NDyrFBhwLZsqg1NUoR1noVaXJPC/7ZK47QCySw==} engines: {node: '>=14.0.0'} @@ -9605,164 +4769,249 @@ snapshots: /@solidity-parser/parser@0.14.5: resolution: {integrity: sha512-6dKnHZn7fg/iQATVEzqyUOyEidbn05q7YA2mQ9hC0MMXhhV3/JrsxmFSYZAcr7j1yUP700LLhTruvJ3MiQmjJg==} -======= - '@solidity-parser/parser@0.14.5': ->>>>>>> 1175edcf0 (feat: update pnpm and node version) dependencies: antlr4ts: 0.5.0-alpha.4 + dev: true - '@solidity-parser/parser@0.16.0': + /@solidity-parser/parser@0.16.0: + resolution: {integrity: sha512-ESipEcHyRHg4Np4SqBCfcXwyxxna1DgFVz69bgpLV8vzl/NP1DtcKsJ4dJZXWQhY/Z4J2LeKBiOkOVZn9ct33Q==} dependencies: antlr4ts: 0.5.0-alpha.4 + dev: false - '@solidity-parser/parser@0.17.0': {} + /@solidity-parser/parser@0.17.0: + resolution: {integrity: sha512-Nko8R0/kUo391jsEHHxrGM07QFdnPGvlmox4rmH0kNiNAashItAilhy4Mv4pK5gQmW5f4sXAF58fwJbmlkGcVw==} - '@testing-library/react-hooks@8.0.1(@types/react@18.2.22)(react-dom@18.2.0(react@18.2.0))(react-test-renderer@18.2.0(react@18.2.0))(react@18.2.0)': + /@testing-library/react-hooks@8.0.1(@types/react@18.2.22)(react-test-renderer@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-Aqhl2IVmLt8IovEVarNDFuJDVWVvhnr9/GCU6UUnrYXwgDFF9h2L2o2P9KBni1AST5sT6riAyoukFLyjQUgD/g==} + engines: {node: '>=12'} + peerDependencies: + '@types/react': ^16.9.0 || ^17.0.0 + react: ^16.9.0 || ^17.0.0 + react-dom: ^16.9.0 || ^17.0.0 + react-test-renderer: ^16.9.0 || ^17.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + react-dom: + optional: true + react-test-renderer: + optional: true dependencies: '@babel/runtime': 7.21.0 + '@types/react': 18.2.22 react: 18.2.0 react-error-boundary: 3.1.4(react@18.2.0) - optionalDependencies: - '@types/react': 18.2.22 - react-dom: 18.2.0(react@18.2.0) react-test-renderer: 18.2.0(react@18.2.0) + dev: true - '@tootallnate/once@2.0.0': {} + /@tootallnate/once@2.0.0: + resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} + engines: {node: '>= 10'} - '@trpc/client@10.34.0(@trpc/server@10.34.0)': + /@trpc/client@10.34.0(@trpc/server@10.34.0): + resolution: {integrity: sha512-nqtDTIqSY/9syo2EjSy4WWWXPU9GsamEh9Tsg698gLAh1nhgFc5+/YYeb+Ne1pbvWGZ5/3t9Dcz3h4wMyyJ9gQ==} + peerDependencies: + '@trpc/server': 10.34.0 dependencies: '@trpc/server': 10.34.0 + dev: false - '@trpc/server@10.34.0': {} + /@trpc/server@10.34.0: + resolution: {integrity: sha512-2VMW44Fpaoyqb50dBtzdSWMhqt8lmoJiocEyBBeDb03R0W+XrzbVD5kU/wqKPlcp1DWeNCkOEIMtetMZCfo1hA==} + dev: false - '@types/accepts@1.3.7': + /@types/accepts@1.3.7: + resolution: {integrity: sha512-Pay9fq2lM2wXPWbteBsRAGiWH2hig4ZE2asK+mm7kUzlxRTfL961rj89I6zV/E3PcIkDqyuBEcMxFT7rccugeQ==} dependencies: '@types/node': 18.15.11 + dev: true - '@types/babel__core@7.20.0': + /@types/babel__core@7.20.0: + resolution: {integrity: sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==} dependencies: '@babel/parser': 7.21.4 '@babel/types': 7.21.4 '@types/babel__generator': 7.6.4 '@types/babel__template': 7.4.1 '@types/babel__traverse': 7.18.3 + dev: true - '@types/babel__generator@7.6.4': + /@types/babel__generator@7.6.4: + resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} dependencies: '@babel/types': 7.21.4 + dev: true - '@types/babel__template@7.4.1': + /@types/babel__template@7.4.1: + resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} dependencies: '@babel/parser': 7.21.4 '@babel/types': 7.21.4 + dev: true - '@types/babel__traverse@7.18.3': + /@types/babel__traverse@7.18.3: + resolution: {integrity: sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w==} dependencies: '@babel/types': 7.21.4 + dev: true - '@types/better-sqlite3@7.6.4': + /@types/better-sqlite3@7.6.4: + resolution: {integrity: sha512-dzrRZCYPXIXfSR1/surNbJ/grU3scTaygS0OMzjlGf71i9sc2fGyHPXXiXmEvNIoE0cGwsanEFMVJxPXmco9Eg==} dependencies: '@types/node': 18.15.11 - '@types/bn.js@4.11.6': + /@types/bn.js@4.11.6: + resolution: {integrity: sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==} dependencies: '@types/node': 18.15.11 + dev: true - '@types/bn.js@5.1.5': + /@types/bn.js@5.1.5: + resolution: {integrity: sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A==} dependencies: '@types/node': 18.15.11 + dev: true - '@types/body-parser@1.19.5': + /@types/body-parser@1.19.5: + resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} dependencies: '@types/connect': 3.4.38 '@types/node': 18.15.11 + dev: true - '@types/chai-as-promised@7.1.8': + /@types/chai-as-promised@7.1.8: + resolution: {integrity: sha512-ThlRVIJhr69FLlh6IctTXFkmhtP3NpMZ2QGq69StYLyKZFp/HOp1VdKZj7RvfNWYYcJ1xlbLGLLWj1UvP5u/Gw==} dependencies: '@types/chai': 4.3.5 + dev: true - '@types/chai-subset@1.3.3': + /@types/chai-subset@1.3.3: + resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} dependencies: '@types/chai': 4.3.5 + dev: true - '@types/chai@4.3.5': {} + /@types/chai@4.3.5: + resolution: {integrity: sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==} + dev: true - '@types/connect@3.4.38': + /@types/connect@3.4.38: + resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} dependencies: '@types/node': 18.15.11 + dev: true - '@types/content-disposition@0.5.8': {} + /@types/content-disposition@0.5.8: + resolution: {integrity: sha512-QVSSvno3dE0MgO76pJhmv4Qyi/j0Yk9pBp0Y7TJ2Tlj+KCgJWY6qX7nnxCOLkZ3VYRSIk1WTxCvwUSdx6CCLdg==} + dev: true - '@types/cookies@0.7.10': + /@types/cookies@0.7.10: + resolution: {integrity: sha512-hmUCjAk2fwZVPPkkPBcI7jGLIR5mg4OVoNMBwU6aVsMm/iNPY7z9/R+x2fSwLt/ZXoGua6C5Zy2k5xOo9jUyhQ==} dependencies: '@types/connect': 3.4.38 '@types/express': 4.17.21 '@types/keygrip': 1.0.6 '@types/node': 18.15.11 + dev: true - '@types/debug@4.1.7': + /@types/debug@4.1.7: + resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==} dependencies: '@types/ms': 0.7.31 + dev: true - '@types/ejs@3.1.1': {} + /@types/ejs@3.1.1: + resolution: {integrity: sha512-RQul5wEfY7BjWm0sYY86cmUN/pcXWGyVxWX93DFFJvcrxax5zKlieLwA3T77xJGwNcZW0YW6CYG70p1m8xPFmA==} + dev: true - '@types/emscripten@1.39.6': {} + /@types/emscripten@1.39.6: + resolution: {integrity: sha512-H90aoynNhhkQP6DRweEjJp5vfUVdIj7tdPLsu7pq89vODD/lcugKfZOsfgwpvM6XUewEp2N5dCg1Uf3Qe55Dcg==} - '@types/express-serve-static-core@4.17.41': + /@types/express-serve-static-core@4.17.41: + resolution: {integrity: sha512-OaJ7XLaelTgrvlZD8/aa0vvvxZdUmlCn6MtWeB7TkiKW70BQLc9XEPpDLPdbo52ZhXUCrznlWdCHWxJWtdyajA==} dependencies: '@types/node': 18.15.11 '@types/qs': 6.9.10 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 + dev: true - '@types/express@4.17.21': + /@types/express@4.17.21: + resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} dependencies: '@types/body-parser': 1.19.5 '@types/express-serve-static-core': 4.17.41 '@types/qs': 6.9.10 '@types/serve-static': 1.15.5 + dev: true - '@types/glob@7.2.0': + /@types/glob@7.2.0: + resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: '@types/minimatch': 3.0.5 '@types/node': 18.15.11 + dev: true - '@types/graceful-fs@4.1.6': + /@types/graceful-fs@4.1.6: + resolution: {integrity: sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==} dependencies: '@types/node': 18.15.11 + dev: true - '@types/http-assert@1.5.5': {} + /@types/http-assert@1.5.5: + resolution: {integrity: sha512-4+tE/lwdAahgZT1g30Jkdm9PzFRde0xwxBNUyRsCitRvCQB90iuA2uJYdUnhnANRcqGXaWOGY4FEoxeElNAK2g==} + dev: true - '@types/http-errors@2.0.4': {} + /@types/http-errors@2.0.4: + resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} + dev: true - '@types/is-ci@3.0.0': + /@types/is-ci@3.0.0: + resolution: {integrity: sha512-Q0Op0hdWbYd1iahB+IFNQcWXFq4O0Q5MwQP7uN0souuQ4rPg1vEYcnIOfr1gY+M+6rc8FGoRaBO1mOOvL29sEQ==} dependencies: ci-info: 3.8.0 + dev: true - '@types/istanbul-lib-coverage@2.0.4': {} + /@types/istanbul-lib-coverage@2.0.4: + resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} + dev: true - '@types/istanbul-lib-report@3.0.0': + /@types/istanbul-lib-report@3.0.0: + resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} dependencies: '@types/istanbul-lib-coverage': 2.0.4 + dev: true - '@types/istanbul-reports@3.0.1': + /@types/istanbul-reports@3.0.1: + resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} dependencies: '@types/istanbul-lib-report': 3.0.0 + dev: true - '@types/jest@27.4.1': + /@types/jest@27.4.1: + resolution: {integrity: sha512-23iPJADSmicDVrWk+HT58LMJtzLAnB2AgIzplQuq/bSrGaxCrlvRFjGbXmamnnk/mAmCdLStiGqggu28ocUyiw==} dependencies: jest-matcher-utils: 27.5.1 pretty-format: 27.5.1 + dev: true - '@types/json-schema@7.0.15': {} + /@types/json-schema@7.0.15: + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + dev: true - '@types/keygrip@1.0.6': {} + /@types/keygrip@1.0.6: + resolution: {integrity: sha512-lZuNAY9xeJt7Bx4t4dx0rYCDqGPW8RXhQZK1td7d4H6E9zYbLoOtjBvfwdTKpsyxQI/2jv+armjX/RW+ZNpXOQ==} + dev: true - '@types/koa-compose@3.2.8': + /@types/koa-compose@3.2.8: + resolution: {integrity: sha512-4Olc63RY+MKvxMwVknCUDhRQX1pFQoBZ/lXcRLP69PQkEpze/0cr8LNqJQe5NFb/b19DWi2a5bTi2VAlQzhJuA==} dependencies: '@types/koa': 2.13.12 + dev: true - '@types/koa@2.13.12': + /@types/koa@2.13.12: + resolution: {integrity: sha512-vAo1KuDSYWFDB4Cs80CHvfmzSQWeUb909aQib0C0aFx4sw0K9UZFz2m5jaEP+b3X1+yr904iQiruS0hXi31jbw==} dependencies: '@types/accepts': 1.3.7 '@types/content-disposition': 0.5.8 @@ -9772,131 +5021,221 @@ snapshots: '@types/keygrip': 1.0.6 '@types/koa-compose': 3.2.8 '@types/node': 18.15.11 + dev: true - '@types/koa__cors@4.0.3': + /@types/koa__cors@4.0.3: + resolution: {integrity: sha512-zj+1sQO/6GGRGINRXlMmoiFwHibKVcjNGdh+p2SpqHDMLyvC+ce0LMHX6UBi1rdpnPZ/+osUwWdGKF945ffrzA==} dependencies: '@types/koa': 2.13.12 + dev: true - '@types/koa__router@12.0.4': + /@types/koa__router@12.0.4: + resolution: {integrity: sha512-Y7YBbSmfXZpa/m5UGGzb7XadJIRBRnwNY9cdAojZGp65Cpe5MAP3mOZE7e3bImt8dfKS4UFcR16SLH8L/z7PBw==} dependencies: '@types/koa': 2.13.12 + dev: true - '@types/long@4.0.2': {} + /@types/long@4.0.2: + resolution: {integrity: sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==} + dev: true - '@types/lru-cache@5.1.1': {} + /@types/lru-cache@5.1.1: + resolution: {integrity: sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==} + dev: true - '@types/mime@1.3.5': {} + /@types/mime@1.3.5: + resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} + dev: true - '@types/mime@3.0.4': {} + /@types/mime@3.0.4: + resolution: {integrity: sha512-iJt33IQnVRkqeqC7PzBHPTC6fDlRNRW8vjrgqtScAhrmMwe8c4Eo7+fUGTa+XdWrpEgpyKWMYmi2dIwMAYRzPw==} + dev: true - '@types/minimatch@3.0.5': {} + /@types/minimatch@3.0.5: + resolution: {integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==} + dev: true - '@types/minimist@1.2.2': {} + /@types/minimist@1.2.2: + resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} + dev: true - '@types/mocha@9.1.1': {} + /@types/mocha@9.1.1: + resolution: {integrity: sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==} + dev: true - '@types/ms@0.7.31': {} + /@types/ms@0.7.31: + resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} + dev: true - '@types/node-fetch@2.6.11': + /@types/node-fetch@2.6.11: + resolution: {integrity: sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==} dependencies: '@types/node': 18.15.11 form-data: 4.0.0 + dev: true - '@types/node@12.20.55': {} + /@types/node@12.20.55: + resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} + dev: true - '@types/node@18.15.11': {} + /@types/node@18.15.11: + resolution: {integrity: sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==} - '@types/normalize-package-data@2.4.1': {} + /@types/normalize-package-data@2.4.1: + resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} + dev: true - '@types/object-hash@1.3.4': {} + /@types/object-hash@1.3.4: + resolution: {integrity: sha512-xFdpkAkikBgqBdG9vIlsqffDV8GpvnPEzs0IUtr1v3BEB97ijsFQ4RXVbUZwjFThhB4MDSTUfvmxUD5PGx0wXA==} + dev: true - '@types/openurl@1.0.0': + /@types/openurl@1.0.0: + resolution: {integrity: sha512-fUHH4T8FmEl3NBtGbUYYzMo1Ev47uVCVEGVjVNjorOMzgjls6zH82yr/zqkkcEOHY2HUC5PZ8dRFwGed/NR7wQ==} dependencies: '@types/node': 18.15.11 + dev: true - '@types/parse-json@4.0.0': {} + /@types/parse-json@4.0.0: + resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} + dev: true - '@types/pbkdf2@3.1.2': + /@types/pbkdf2@3.1.2: + resolution: {integrity: sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew==} dependencies: '@types/node': 18.15.11 + dev: true - '@types/prettier@2.7.2': {} + /@types/prettier@2.7.2: + resolution: {integrity: sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==} + dev: true - '@types/prop-types@15.7.5': {} + /@types/prop-types@15.7.5: + resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} + dev: true - '@types/qs@6.9.10': {} + /@types/qs@6.9.10: + resolution: {integrity: sha512-3Gnx08Ns1sEoCrWssEgTSJs/rsT2vhGP+Ja9cnnk9k4ALxinORlQneLXFeFKOTJMOeZUFD1s7w+w2AphTpvzZw==} + dev: true - '@types/range-parser@1.2.7': {} + /@types/range-parser@1.2.7: + resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} + dev: true - '@types/react-dom@18.2.7': + /@types/react-dom@18.2.7: + resolution: {integrity: sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==} dependencies: '@types/react': 18.2.22 + dev: true - '@types/react@18.2.22': + /@types/react@18.2.22: + resolution: {integrity: sha512-60fLTOLqzarLED2O3UQImc/lsNRgG0jE/a1mPW9KjMemY0LMITWEsbS4VvZ4p6rorEHd5YKxxmMKSDK505GHpA==} dependencies: '@types/prop-types': 15.7.5 '@types/scheduler': 0.16.3 csstype: 3.1.2 + dev: true - '@types/retry@0.12.0': {} + /@types/retry@0.12.0: + resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} + dev: false - '@types/scheduler@0.16.3': {} + /@types/scheduler@0.16.3: + resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==} + dev: true - '@types/secp256k1@4.0.6': + /@types/secp256k1@4.0.6: + resolution: {integrity: sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ==} dependencies: '@types/node': 18.15.11 + dev: true - '@types/semver@6.2.3': {} + /@types/semver@6.2.3: + resolution: {integrity: sha512-KQf+QAMWKMrtBMsB8/24w53tEsxllMj6TuA80TT/5igJalLI/zm0L3oXRbIAl4Ohfc85gyHX/jhMwsVkmhLU4A==} + dev: true - '@types/semver@7.5.8': {} + /@types/semver@7.5.8: + resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} + dev: true - '@types/send@0.17.4': + /@types/send@0.17.4: + resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} dependencies: '@types/mime': 1.3.5 '@types/node': 18.15.11 + dev: true - '@types/serve-static@1.15.5': + /@types/serve-static@1.15.5: + resolution: {integrity: sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==} dependencies: '@types/http-errors': 2.0.4 '@types/mime': 3.0.4 '@types/node': 18.15.11 + dev: true - '@types/sql.js@1.4.4': + /@types/sql.js@1.4.4: + resolution: {integrity: sha512-6EWU2wfiBtzgTy18WQoXZAGTreBjhZcBCfD8CDvyI1Nj0a4KNDDt41IYeAZ40cRUdfqWHb7VGx7t6nK0yBOI5A==} dependencies: '@types/emscripten': 1.39.6 '@types/node': 18.15.11 - '@types/stack-utils@2.0.1': {} + /@types/stack-utils@2.0.1: + resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} + dev: true - '@types/stream-to-array@2.3.1': + /@types/stream-to-array@2.3.1: + resolution: {integrity: sha512-OqV/DIumEm5pT+m4LYGpDFRRLZ0VJRvrz58C8q8rjLGVgP5gRHxThG8eLZfhmK3GVAq9iq3eSvZ0vkZJ5ZH/Pg==} dependencies: '@types/node': 18.15.11 + dev: true - '@types/throttle-debounce@5.0.0': {} + /@types/throttle-debounce@5.0.0: + resolution: {integrity: sha512-Pb7k35iCGFcGPECoNE4DYp3Oyf2xcTd3FbFQxXUI9hEYKUl6YX+KLf7HrBmgVcD05nl50LIH6i+80js4iYmWbw==} + dev: true - '@types/toposort@2.0.6': {} + /@types/toposort@2.0.6: + resolution: {integrity: sha512-9OMv8NIjiJclYZ+FIqNCs6B6/7HSIccWCpgeVmp2TurRXllEIYNxAwGBBFEataTsHwLt8oeVmMCmdld8dVq/hw==} + dev: true - '@types/uuid@8.3.4': {} + /@types/uuid@8.3.4: + resolution: {integrity: sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==} + dev: true - '@types/ws@8.5.4': + /@types/ws@8.5.4: + resolution: {integrity: sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==} dependencies: '@types/node': 18.15.11 + dev: true - '@types/yargs-interactive@2.1.3': + /@types/yargs-interactive@2.1.3: + resolution: {integrity: sha512-bYB8ah0JPR6/lpHlxUzeHsrb3RK5OW7N8Hnth2nefnr6zQ5KFoDQ6wM5x58dTLEDYrwikFy3EPTf/O0HKLNaIg==} dependencies: '@types/yargs': 17.0.24 + dev: false - '@types/yargs-parser@21.0.0': {} + /@types/yargs-parser@21.0.0: + resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} - '@types/yargs@17.0.23': + /@types/yargs@17.0.23: + resolution: {integrity: sha512-yuogunc04OnzGQCrfHx+Kk883Q4X0aSwmYZhKjI21m+SVYzjIbrWl8dOOwSv5hf2Um2pdCOXWo9isteZTNXUZQ==} dependencies: '@types/yargs-parser': 21.0.0 + dev: true - '@types/yargs@17.0.24': + /@types/yargs@17.0.24: + resolution: {integrity: sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==} dependencies: '@types/yargs-parser': 21.0.0 - '@typescript-eslint/eslint-plugin@7.1.1(@typescript-eslint/parser@7.1.1(eslint@8.57.0)(typescript@5.4.2))(eslint@8.57.0)(typescript@5.4.2)': + /@typescript-eslint/eslint-plugin@7.1.1(@typescript-eslint/parser@7.1.1)(eslint@8.57.0)(typescript@5.4.2): + resolution: {integrity: sha512-zioDz623d0RHNhvx0eesUmGfIjzrk18nSBC8xewepKXbBvN/7c1qImV7Hg8TI1URTxKax7/zxfxj3Uph8Chcuw==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + '@typescript-eslint/parser': ^7.0.0 + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true dependencies: '@eslint-community/regexpp': 4.10.0 '@typescript-eslint/parser': 7.1.1(eslint@8.57.0)(typescript@5.4.2) @@ -9911,12 +5250,20 @@ snapshots: natural-compare: 1.4.0 semver: 7.6.0 ts-api-utils: 1.2.1(typescript@5.4.2) - optionalDependencies: typescript: 5.4.2 transitivePeerDependencies: - supports-color + dev: true - '@typescript-eslint/parser@7.1.1(eslint@8.57.0)(typescript@5.4.2)': + /@typescript-eslint/parser@7.1.1(eslint@8.57.0)(typescript@5.4.2): + resolution: {integrity: sha512-ZWUFyL0z04R1nAEgr9e79YtV5LbafdOtN7yapNbn1ansMyaegl2D4bL7vHoJ4HPSc4CaLwuCVas8CVuneKzplQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true dependencies: '@typescript-eslint/scope-manager': 7.1.1 '@typescript-eslint/types': 7.1.1 @@ -9924,31 +5271,52 @@ snapshots: '@typescript-eslint/visitor-keys': 7.1.1 debug: 4.3.4(supports-color@8.1.1) eslint: 8.57.0 - optionalDependencies: typescript: 5.4.2 transitivePeerDependencies: - supports-color + dev: true - '@typescript-eslint/scope-manager@7.1.1': + /@typescript-eslint/scope-manager@7.1.1: + resolution: {integrity: sha512-cirZpA8bJMRb4WZ+rO6+mnOJrGFDd38WoXCEI57+CYBqta8Yc8aJym2i7vyqLL1vVYljgw0X27axkUXz32T8TA==} + engines: {node: ^16.0.0 || >=18.0.0} dependencies: '@typescript-eslint/types': 7.1.1 '@typescript-eslint/visitor-keys': 7.1.1 + dev: true - '@typescript-eslint/type-utils@7.1.1(eslint@8.57.0)(typescript@5.4.2)': + /@typescript-eslint/type-utils@7.1.1(eslint@8.57.0)(typescript@5.4.2): + resolution: {integrity: sha512-5r4RKze6XHEEhlZnJtR3GYeCh1IueUHdbrukV2KSlLXaTjuSfeVF8mZUVPLovidCuZfbVjfhi4c0DNSa/Rdg5g==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true dependencies: '@typescript-eslint/typescript-estree': 7.1.1(typescript@5.4.2) '@typescript-eslint/utils': 7.1.1(eslint@8.57.0)(typescript@5.4.2) debug: 4.3.4(supports-color@8.1.1) eslint: 8.57.0 ts-api-utils: 1.2.1(typescript@5.4.2) - optionalDependencies: typescript: 5.4.2 transitivePeerDependencies: - supports-color + dev: true - '@typescript-eslint/types@7.1.1': {} + /@typescript-eslint/types@7.1.1: + resolution: {integrity: sha512-KhewzrlRMrgeKm1U9bh2z5aoL4s7K3tK5DwHDn8MHv0yQfWFz/0ZR6trrIHHa5CsF83j/GgHqzdbzCXJ3crx0Q==} + engines: {node: ^16.0.0 || >=18.0.0} + dev: true - '@typescript-eslint/typescript-estree@7.1.1(typescript@5.4.2)': + /@typescript-eslint/typescript-estree@7.1.1(typescript@5.4.2): + resolution: {integrity: sha512-9ZOncVSfr+sMXVxxca2OJOPagRwT0u/UHikM2Rd6L/aB+kL/QAuTnsv6MeXtjzCJYb8PzrXarypSGIPx3Jemxw==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true dependencies: '@typescript-eslint/types': 7.1.1 '@typescript-eslint/visitor-keys': 7.1.1 @@ -9958,12 +5326,16 @@ snapshots: minimatch: 9.0.3 semver: 7.6.0 ts-api-utils: 1.2.1(typescript@5.4.2) - optionalDependencies: typescript: 5.4.2 transitivePeerDependencies: - supports-color + dev: true - '@typescript-eslint/utils@7.1.1(eslint@8.57.0)(typescript@5.4.2)': + /@typescript-eslint/utils@7.1.1(eslint@8.57.0)(typescript@5.4.2): + resolution: {integrity: sha512-thOXM89xA03xAE0lW7alstvnyoBUbBX38YtY+zAUcpRPcq9EIhXPuJ0YTv948MbzmKh6e1AUszn5cBFK49Umqg==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^8.56.0 dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@types/json-schema': 7.0.15 @@ -9976,13 +5348,19 @@ snapshots: transitivePeerDependencies: - supports-color - typescript + dev: true - '@typescript-eslint/visitor-keys@7.1.1': + /@typescript-eslint/visitor-keys@7.1.1: + resolution: {integrity: sha512-yTdHDQxY7cSoCcAtiBzVzxleJhkGB9NncSIyMYe2+OGON1ZsP9zOPws/Pqgopa65jvknOjlk/w7ulPlZ78PiLQ==} + engines: {node: ^16.0.0 || >=18.0.0} dependencies: '@typescript-eslint/types': 7.1.1 eslint-visitor-keys: 3.4.3 + dev: true - '@typescript/analyze-trace@0.10.1': + /@typescript/analyze-trace@0.10.1: + resolution: {integrity: sha512-RnlSOPh14QbopGCApgkSx5UBgGda5MX1cHqp2fsqfiDyCwGL/m1jaeB9fzu7didVS81LQqGZZuxFBcg8YU8EVw==} + hasBin: true dependencies: chalk: 4.1.2 exit: 0.1.2 @@ -9992,16 +5370,22 @@ snapshots: split2: 3.2.2 treeify: 1.1.0 yargs: 16.2.0 + dev: true - '@typescript/vfs@1.5.0': + /@typescript/vfs@1.5.0: + resolution: {integrity: sha512-AJS307bPgbsZZ9ggCT3wwpg3VbTKMFNHfaY/uF0ahSkYYrPF2dSSKDNIDIQAHm9qJqbLvCsSJH7yN4Vs/CsMMg==} dependencies: debug: 4.3.4(supports-color@8.1.1) transitivePeerDependencies: - supports-color + dev: true - '@ungap/structured-clone@1.2.0': {} + /@ungap/structured-clone@1.2.0: + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + dev: true - '@viem/anvil@0.0.7(debug@4.3.4)': + /@viem/anvil@0.0.7(debug@4.3.4): + resolution: {integrity: sha512-F+3ljCT1bEt8T4Fzm9gWpIgO3Dc7bzG1TtUtkStkJFMuummqZ8kvYc3UFMo5j3F51fSWZZvEkjs3+i7qf0AOqQ==} dependencies: execa: 7.2.0 get-port: 6.1.2 @@ -10011,8 +5395,13 @@ snapshots: - bufferutil - debug - utf-8-validate + dev: true - '@vitejs/plugin-react@4.0.0(vite@4.3.6(@types/node@18.15.11))': + /@vitejs/plugin-react@4.0.0(vite@4.3.6): + resolution: {integrity: sha512-HX0XzMjL3hhOYm+0s95pb0Z7F8O81G7joUHgfDd/9J/ZZf5k4xX6QAMFkKsHFxaHlf6X7GD7+XuaZ66ULiJuhQ==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.2.0 dependencies: '@babel/core': 7.21.4 '@babel/plugin-transform-react-jsx-self': 7.21.0(@babel/core@7.21.4) @@ -10021,187 +5410,335 @@ snapshots: vite: 4.3.6(@types/node@18.15.11) transitivePeerDependencies: - supports-color + dev: true - '@vitest/expect@0.34.6': + /@vitest/expect@0.34.6: + resolution: {integrity: sha512-QUzKpUQRc1qC7qdGo7rMK3AkETI7w18gTCUrsNnyjjJKYiuUB9+TQK3QnR1unhCnWRC0AbKv2omLGQDF/mIjOw==} dependencies: '@vitest/spy': 0.34.6 '@vitest/utils': 0.34.6 chai: 4.4.1 + dev: true - '@vitest/runner@0.34.6': + /@vitest/runner@0.34.6: + resolution: {integrity: sha512-1CUQgtJSLF47NnhN+F9X2ycxUP0kLHQ/JWvNHbeBfwW8CzEGgeskzNnHDyv1ieKTltuR6sdIHV+nmR6kPxQqzQ==} dependencies: '@vitest/utils': 0.34.6 p-limit: 4.0.0 pathe: 1.1.2 + dev: true - '@vitest/snapshot@0.34.6': + /@vitest/snapshot@0.34.6: + resolution: {integrity: sha512-B3OZqYn6k4VaN011D+ve+AA4whM4QkcwcrwaKwAbyyvS/NB1hCWjFIBQxAQQSQir9/RtyAAGuq+4RJmbn2dH4w==} dependencies: magic-string: 0.30.5 pathe: 1.1.2 pretty-format: 29.5.0 + dev: true - '@vitest/spy@0.34.6': + /@vitest/spy@0.34.6: + resolution: {integrity: sha512-xaCvneSaeBw/cz8ySmF7ZwGvL0lBjfvqc1LpQ/vcdHEvpLn3Ff1vAvjw+CoGn0802l++5L/pxb7whwcWAw+DUQ==} dependencies: tinyspy: 2.2.0 + dev: true - '@vitest/utils@0.34.6': + /@vitest/utils@0.34.6: + resolution: {integrity: sha512-IG5aDD8S6zlvloDsnzHw0Ut5xczlF+kv2BOTo+iXfPr54Yhi5qbVOgGB1hZaVq4iJ4C/MZ2J0y15IlsV/ZcI0A==} dependencies: diff-sequences: 29.6.3 loupe: 2.3.6 pretty-format: 29.5.0 + dev: true - abab@2.0.6: {} + /abab@2.0.6: + resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} + dev: true - abbrev@1.1.1: {} + /abbrev@1.1.1: + resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} + dev: false - abdk-libraries-solidity@3.2.0: {} + /abdk-libraries-solidity@3.2.0: + resolution: {integrity: sha512-JyedKxyqsszb9qCTX+YCOQHA4m0YAq9p77Qvumiy8LJLLrm1FfA9D3pdSAZN5wrmi3PSv0y3Svy8c/C+8S9K8g==} + dev: false - abind@1.0.5: {} + /abind@1.0.5: + resolution: {integrity: sha512-dbaEZphdPje0ihqSdWg36Sb8S20TuqQomiz2593oIx+enQ9Q4vDZRjIzhnkWltGRKVKqC28kTribkgRLBexWVQ==} + engines: {node: '>=6', npm: '>=3'} + dev: false - abitype@1.0.0(typescript@5.4.2)(zod@3.21.4): - optionalDependencies: + /abitype@1.0.0(typescript@5.4.2)(zod@3.21.4): + resolution: {integrity: sha512-NMeMah//6bJ56H5XRj8QCV4AwuW6hB6zqz2LnhhLdcWVQOsXki6/Pn3APeqxCma62nXIcmZWdu1DlHWS74umVQ==} + peerDependencies: + typescript: '>=5.0.4' + zod: ^3 >=3.22.0 + peerDependenciesMeta: + typescript: + optional: true + zod: + optional: true + dependencies: typescript: 5.4.2 zod: 3.21.4 + dev: false - abort-controller-x@0.4.1: {} + /abort-controller-x@0.4.1: + resolution: {integrity: sha512-lJ2ssrl3FoTK3cX/g15lRCkXFWKiwRTRtBjfwounO2EM/Q65rI/MEZsfsch1juWU2pH2aLSaq0HGowlDP/imrw==} + dev: false - abort-controller@3.0.0: + /abort-controller@3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} dependencies: event-target-shim: 5.0.1 + dev: false - abstract-logging@2.0.1: {} + /abstract-logging@2.0.1: + resolution: {integrity: sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==} + dev: false - accepts@1.3.8: + /accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} dependencies: mime-types: 2.1.35 negotiator: 0.6.3 + dev: false - acorn-jsx@5.3.2(acorn@6.4.2): + /acorn-jsx@5.3.2(acorn@6.4.2): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: acorn: 6.4.2 + dev: true - acorn-jsx@5.3.2(acorn@8.11.3): + /acorn-jsx@5.3.2(acorn@8.11.3): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: acorn: 8.11.3 + dev: true - acorn-walk@8.3.2: {} + /acorn-walk@8.3.2: + resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} + engines: {node: '>=0.4.0'} + dev: true - acorn@6.4.2: {} + /acorn@6.4.2: + resolution: {integrity: sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true - acorn@8.11.3: {} + /acorn@8.11.3: + resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true - adm-zip@0.4.16: {} + /adm-zip@0.4.16: + resolution: {integrity: sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==} + engines: {node: '>=0.3.0'} + dev: true - aes-js@3.0.0: {} + /aes-js@3.0.0: + resolution: {integrity: sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==} - agent-base@6.0.2: + /agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} dependencies: debug: 4.3.4(supports-color@8.1.1) transitivePeerDependencies: - supports-color - agentkeepalive@4.5.0: + /agentkeepalive@4.5.0: + resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==} + engines: {node: '>= 8.0.0'} dependencies: humanize-ms: 1.2.1 + dev: false - aggregate-error@3.1.0: + /aggregate-error@3.1.0: + resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} + engines: {node: '>=8'} dependencies: clean-stack: 2.2.0 indent-string: 4.0.0 - ajv-formats@2.1.1(ajv@8.12.0): - optionalDependencies: + /ajv-formats@2.1.1(ajv@8.12.0): + resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + dependencies: ajv: 8.12.0 + dev: false - ajv@6.12.6: + /ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} dependencies: fast-deep-equal: 3.1.3 fast-json-stable-stringify: 2.1.0 json-schema-traverse: 0.4.1 uri-js: 4.4.1 + dev: true - ajv@8.12.0: + /ajv@8.12.0: + resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} dependencies: fast-deep-equal: 3.1.3 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 uri-js: 4.4.1 + dev: false - ansi-align@3.0.1: + /ansi-align@3.0.1: + resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} dependencies: string-width: 4.2.3 + dev: true - ansi-colors@4.1.1: {} + /ansi-colors@4.1.1: + resolution: {integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==} + engines: {node: '>=6'} + dev: true - ansi-colors@4.1.3: {} + /ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + dev: true - ansi-escapes@3.2.0: {} + /ansi-escapes@3.2.0: + resolution: {integrity: sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==} + engines: {node: '>=4'} + dev: true - ansi-escapes@4.3.2: + /ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} dependencies: type-fest: 0.21.3 - ansi-regex@2.1.1: {} + /ansi-regex@2.1.1: + resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} + engines: {node: '>=0.10.0'} - ansi-regex@3.0.1: {} + /ansi-regex@3.0.1: + resolution: {integrity: sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==} + engines: {node: '>=4'} + dev: true - ansi-regex@4.1.1: {} + /ansi-regex@4.1.1: + resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} + engines: {node: '>=6'} - ansi-regex@5.0.1: {} + /ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} - ansi-styles@2.2.1: {} + /ansi-styles@2.2.1: + resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==} + engines: {node: '>=0.10.0'} + dev: true - ansi-styles@3.2.1: + /ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} dependencies: color-convert: 1.9.3 - ansi-styles@4.3.0: + /ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} dependencies: color-convert: 2.0.1 - ansi-styles@5.2.0: {} + /ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + dev: true - antlr4@4.7.1: {} + /antlr4@4.7.1: + resolution: {integrity: sha512-haHyTW7Y9joE5MVs37P2lNYfU2RWBLfcRDD8OWldcdZm5TiCE91B5Xl1oWSwiDUSd4rlExpt2pu1fksYQjRBYQ==} + dev: true - antlr4ts@0.5.0-alpha.4: {} + /antlr4ts@0.5.0-alpha.4: + resolution: {integrity: sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ==} - any-observable@0.3.0(rxjs@6.6.7): - optionalDependencies: + /any-observable@0.3.0(rxjs@6.6.7): + resolution: {integrity: sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==} + engines: {node: '>=6'} + peerDependencies: + rxjs: '*' + zenObservable: '*' + peerDependenciesMeta: + rxjs: + optional: true + zenObservable: + optional: true + dependencies: rxjs: 6.6.7 + dev: true - any-promise@1.3.0: {} + /any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - anymatch@3.1.3: + /anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 - aproba@2.0.0: {} + /aproba@2.0.0: + resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} + dev: false - archy@1.0.0: {} + /archy@1.0.0: + resolution: {integrity: sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==} + dev: false - are-we-there-yet@3.0.1: + /are-we-there-yet@3.0.1: + resolution: {integrity: sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} dependencies: delegates: 1.0.0 readable-stream: 3.6.0 + dev: false - arg@5.0.2: {} + /arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + dev: true - argparse@1.0.10: + /argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} dependencies: sprintf-js: 1.0.3 + dev: true - argparse@2.0.1: {} + /argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + dev: true - argx@3.0.2: + /argx@3.0.2: + resolution: {integrity: sha512-PUyi1r14HG1AH6raqPEW8+vKNWfvHrmerdBXnf5iz7JOnO1hRaG1cGsH9eay/y8dUIreN7NxSEfK208UCGd0wQ==} + engines: {node: '>=4', npm: '>=2'} dependencies: iftype: 3.0.2 + dev: false - argx@4.0.4: + /argx@4.0.4: + resolution: {integrity: sha512-XLWeRTNBJRzQkbMweLIxdtnvpE7iYUBraPwrIJX57FjL4D1RHLMJRM1AyEP6KZHgvjW7TSnxF8MpGic7YdTGOA==} + engines: {node: '>=8', npm: '>=5'} dependencies: iftype: 4.0.9 + dev: false -<<<<<<< HEAD /arktype@1.0.29-alpha: resolution: {integrity: sha512-glMLgVhIQRSkR3tymiS+POAcWVJH09sfrgic0jHnyFL8BlhHAJZX2BzdImU9zYr1y9NBqy+U93ZNrRTHXsKRDw==} dev: false @@ -10212,53 +5749,71 @@ snapshots: '@arktype/schema': 0.0.8 '@arktype/util': 0.0.34 dev: true -======= - arktype@1.0.29-alpha: {} ->>>>>>> 1175edcf0 (feat: update pnpm and node version) - array-includes@3.1.6: + /array-includes@3.1.6: + resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.1.4 es-abstract: 1.20.5 get-intrinsic: 1.1.3 is-string: 1.0.7 + dev: true - array-union@2.1.0: {} + /array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} - array.prototype.flat@1.3.1: + /array.prototype.flat@1.3.1: + resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.1.4 es-abstract: 1.20.5 es-shim-unscopables: 1.0.0 + dev: true - array.prototype.flatmap@1.3.1: + /array.prototype.flatmap@1.3.1: + resolution: {integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.1.4 es-abstract: 1.20.5 es-shim-unscopables: 1.0.0 + dev: true - array.prototype.tosorted@1.1.1: + /array.prototype.tosorted@1.1.1: + resolution: {integrity: sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==} dependencies: call-bind: 1.0.2 define-properties: 1.1.4 es-abstract: 1.20.5 es-shim-unscopables: 1.0.0 get-intrinsic: 1.1.3 + dev: true - arrayreduce@2.1.0: {} + /arrayreduce@2.1.0: + resolution: {integrity: sha512-I5MwrsPJ4faMuuPXM8+EgEy83G16i+FqegFhhHX3geDJbyaqPDWNrVjkrRg9SZq5mepEZdNg36SDPOhiKPWTLA==} + engines: {node: '>=4.0.0'} + dev: false - arrify@1.0.1: {} + /arrify@1.0.1: + resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} + engines: {node: '>=0.10.0'} + dev: true - askconfig@4.0.4: + /askconfig@4.0.4: + resolution: {integrity: sha512-fjB/vmAlUKxGVqcz4mLub3xF8m9rkazhqcXRvrDzeey0iaLhcAg2K8bhJL7pKjE2dFP9qDGv3+yXovYMV9XBJQ==} + engines: {node: '>=8', npm: '>=5'} dependencies: argx: 4.0.4 cli-color: 1.4.0 objnest: 5.1.1 + dev: false -<<<<<<< HEAD /asn1.js@5.4.1: resolution: {integrity: sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==} dependencies: @@ -10272,48 +5827,76 @@ snapshots: resolution: {integrity: sha512-GPKavCMUVZbrU31KTBMtnsRZa9pPN10ApfkPGNdL70Qpu/rORbTCte/37dnIUnQdXHm+5vHmG+iGRWmwJO5hvA==} engines: {node: '>=16.0.0', npm: '>=7.0.0'} hasBin: true -======= - assemblyscript@0.21.7: ->>>>>>> 1175edcf0 (feat: update pnpm and node version) dependencies: binaryen: 110.0.0-nightly.20221006 long: 5.2.1 + dev: true - assertion-error@1.1.0: {} + /assertion-error@1.1.0: + resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + dev: true - ast-parents@0.0.1: {} + /ast-parents@0.0.1: + resolution: {integrity: sha512-XHusKxKz3zoYk1ic8Un640joHbFMhbqneyoZfoKnEGtf2ey9Uh/IdpcQplODdO/kENaMIWsD0nJm4+wX3UNLHA==} + dev: true - astral-regex@1.0.0: {} + /astral-regex@1.0.0: + resolution: {integrity: sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==} + engines: {node: '>=4'} + dev: true - astral-regex@2.0.0: {} + /astral-regex@2.0.0: + resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} + engines: {node: '>=8'} + dev: false - async@1.5.2: {} + /async@1.5.2: + resolution: {integrity: sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==} + dev: false - async@3.2.4: {} + /async@3.2.4: + resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==} - asynckit@0.4.0: {} + /asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + dev: true - atomic-sleep@1.0.0: {} + /atomic-sleep@1.0.0: + resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} + engines: {node: '>=8.0.0'} + dev: false - autoprefixer@10.4.14(postcss@8.4.23): + /autoprefixer@10.4.14(postcss@8.4.23): + resolution: {integrity: sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 dependencies: - browserslist: 4.21.5 - caniuse-lite: 1.0.30001470 + browserslist: 4.23.0 + caniuse-lite: 1.0.30001609 fraction.js: 4.2.0 normalize-range: 0.1.2 picocolors: 1.0.0 postcss: 8.4.23 postcss-value-parser: 4.2.0 + dev: true - avvio@8.2.1: + /avvio@8.2.1: + resolution: {integrity: sha512-TAlMYvOuwGyLK3PfBb5WKBXZmXz2fVCgv23d6zZFdle/q3gPjmxBaeuC0pY0Dzs5PWMSgfqqEZkrye19GlDTgw==} dependencies: archy: 1.0.0 debug: 4.3.4(supports-color@8.1.1) fastq: 1.15.0 transitivePeerDependencies: - supports-color + dev: false - babel-jest@29.5.0(@babel/core@7.21.4): + /babel-jest@29.5.0(@babel/core@7.21.4): + resolution: {integrity: sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.8.0 dependencies: '@babel/core': 7.21.4 '@jest/transform': 29.5.0 @@ -10325,8 +5908,11 @@ snapshots: slash: 3.0.0 transitivePeerDependencies: - supports-color + dev: true - babel-plugin-istanbul@6.1.1: + /babel-plugin-istanbul@6.1.1: + resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} + engines: {node: '>=8'} dependencies: '@babel/helper-plugin-utils': 7.20.2 '@istanbuljs/load-nyc-config': 1.1.0 @@ -10335,15 +5921,22 @@ snapshots: test-exclude: 6.0.0 transitivePeerDependencies: - supports-color + dev: true - babel-plugin-jest-hoist@29.5.0: + /babel-plugin-jest-hoist@29.5.0: + resolution: {integrity: sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/template': 7.20.7 '@babel/types': 7.21.4 '@types/babel__core': 7.20.0 '@types/babel__traverse': 7.18.3 + dev: true - babel-preset-current-node-syntax@1.0.1(@babel/core@7.21.4): + /babel-preset-current-node-syntax@1.0.1(@babel/core@7.21.4): + resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} + peerDependencies: + '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.21.4 '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.21.4) @@ -10358,45 +5951,73 @@ snapshots: '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.21.4) '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.21.4) '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.21.4) + dev: true - babel-preset-jest@29.5.0(@babel/core@7.21.4): + /babel-preset-jest@29.5.0(@babel/core@7.21.4): + resolution: {integrity: sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.21.4 babel-plugin-jest-hoist: 29.5.0 babel-preset-current-node-syntax: 1.0.1(@babel/core@7.21.4) + dev: true - babel-runtime@6.26.0: + /babel-runtime@6.26.0: + resolution: {integrity: sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==} dependencies: core-js: 2.6.12 regenerator-runtime: 0.11.1 + dev: false - balanced-match@1.0.2: {} + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - base-x@3.0.9: + /base-x@3.0.9: + resolution: {integrity: sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==} dependencies: safe-buffer: 5.2.1 + dev: true - base64-js@1.5.1: {} + /base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + dev: false - bech32@1.1.4: {} + /bech32@1.1.4: + resolution: {integrity: sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==} - better-path-resolve@1.0.0: + /better-path-resolve@1.0.0: + resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} + engines: {node: '>=4'} dependencies: is-windows: 1.0.2 + dev: true - better-sqlite3@8.6.0: + /better-sqlite3@8.6.0: + resolution: {integrity: sha512-jwAudeiTMTSyby+/SfbHDebShbmC2MCH8mU2+DXi0WJfv13ypEJm47cd3kljmy/H130CazEvkf2Li//ewcMJ1g==} + requiresBuild: true dependencies: bindings: 1.5.0 prebuild-install: 7.1.1 + dev: false - binary-extensions@2.2.0: {} + /binary-extensions@2.2.0: + resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + engines: {node: '>=8'} - binaryen@110.0.0-nightly.20221006: {} + /binaryen@110.0.0-nightly.20221006: + resolution: {integrity: sha512-yC7ZLoaZmXhm5cB0+g3rZkz5ujPSlhX+FEQtgaQHVxcL78D8cTXdRSdajhgQD345BVPsooOrSxqhX6tnULgBWg==} + hasBin: true + dev: true - bindings@1.5.0: + /bindings@1.5.0: + resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} dependencies: file-uri-to-path: 1.0.0 + dev: false +<<<<<<< HEAD <<<<<<< HEAD /bintrees@1.0.2: resolution: {integrity: sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw==} @@ -10407,20 +6028,30 @@ snapshots: ======= bl@4.1.0: >>>>>>> d2ee83450 (feat: update pnpm and node version) +======= + /bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} +>>>>>>> 9643c6a1f (Revert "feat: update pnpm and node version") dependencies: buffer: 5.7.1 inherits: 2.0.4 readable-stream: 3.6.0 + dev: false - blakejs@1.2.1: {} + /blakejs@1.2.1: + resolution: {integrity: sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==} + dev: true - bn.js@4.11.6: {} + /bn.js@4.11.6: + resolution: {integrity: sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==} + dev: true - bn.js@4.12.0: {} + /bn.js@4.12.0: + resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==} - bn.js@5.2.1: {} + /bn.js@5.2.1: + resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} -<<<<<<< HEAD /bowser@2.11.0: resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==} dev: false @@ -10428,9 +6059,6 @@ snapshots: /boxen@5.1.2: resolution: {integrity: sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==} engines: {node: '>=10'} -======= - boxen@5.1.2: ->>>>>>> 1175edcf0 (feat: update pnpm and node version) dependencies: ansi-align: 3.0.1 camelcase: 6.3.0 @@ -10440,31 +6068,44 @@ snapshots: type-fest: 0.20.2 widest-line: 3.1.0 wrap-ansi: 7.0.0 + dev: true - brace-expansion@1.1.11: + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - brace-expansion@2.0.1: + /brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} dependencies: balanced-match: 1.0.2 - braces@3.0.2: + /braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} dependencies: fill-range: 7.0.1 - breakword@1.0.6: + /breakword@1.0.6: + resolution: {integrity: sha512-yjxDAYyK/pBvws9H4xKYpLDpYKEH6CzrBPAuXq3x18I+c/2MkVtT3qAr7Oloi6Dss9qNhPVueAAVU1CSeNDIXw==} dependencies: wcwidth: 1.0.1 + dev: true - brorand@1.1.0: {} + /brorand@1.1.0: + resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} - browser-headers@0.4.1: {} + /browser-headers@0.4.1: + resolution: {integrity: sha512-CA9hsySZVo9371qEHjHZtYxV2cFtVj5Wj/ZHi8ooEsrtm4vOnl9Y9HmyYWk9q+05d7K3rdoAE0j3MVEFVvtQtg==} + dev: false - browser-stdout@1.3.1: {} + /browser-stdout@1.3.1: + resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} + dev: true - browserify-aes@1.2.0: + /browserify-aes@1.2.0: + resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} dependencies: buffer-xor: 1.0.3 cipher-base: 1.0.4 @@ -10472,49 +6113,77 @@ snapshots: evp_bytestokey: 1.0.3 inherits: 2.0.4 safe-buffer: 5.2.1 + dev: true - browserslist@4.21.5: + /browserslist@4.23.0: + resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true dependencies: - caniuse-lite: 1.0.30001470 - electron-to-chromium: 1.4.340 - node-releases: 2.0.10 - update-browserslist-db: 1.0.10(browserslist@4.21.5) + caniuse-lite: 1.0.30001609 + electron-to-chromium: 1.4.735 + node-releases: 2.0.14 + update-browserslist-db: 1.0.13(browserslist@4.23.0) + dev: true - bs-logger@0.2.6: + /bs-logger@0.2.6: + resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} + engines: {node: '>= 6'} dependencies: fast-json-stable-stringify: 2.1.0 + dev: true - bs58@4.0.1: + /bs58@4.0.1: + resolution: {integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==} dependencies: base-x: 3.0.9 + dev: true - bs58check@2.1.2: + /bs58check@2.1.2: + resolution: {integrity: sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==} dependencies: bs58: 4.0.1 create-hash: 1.2.0 safe-buffer: 5.2.1 + dev: true - bser@2.1.1: + /bser@2.1.1: + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} dependencies: node-int64: 0.4.0 + dev: true - buffer-from@1.1.2: {} + /buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - buffer-lite@1.1.0: {} + /buffer-lite@1.1.0: + resolution: {integrity: sha512-oU0QAzHknj4a3PNzTznNUN61r6OdAqqJJdzTm422yyIM3QyK5/7zi8wPVFooCwoPKk90ybCm9qnvkk+tsQt5sg==} + dev: true - buffer-xor@1.0.3: {} + /buffer-xor@1.0.3: + resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} + dev: true - buffer@5.7.1: + /buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} dependencies: base64-js: 1.5.1 ieee754: 1.2.1 + dev: false - buffer@6.0.3: + /buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} dependencies: base64-js: 1.5.1 ieee754: 1.2.1 + dev: false - bun@1.0.11: + /bun@1.0.11: + resolution: {integrity: sha512-cKyQAQOfWNIP511UpQjkABUp7z/5+1ci2kXfhjL9PozHoCaCtnYFtVjeqU1LovpqEP1agAsMiDpGNKbJP89RIw==} + cpu: [arm64, x64] + os: [darwin, linux] + hasBin: true + requiresBuild: true optionalDependencies: '@oven/bun-darwin-aarch64': 1.0.11 '@oven/bun-darwin-x64': 1.0.11 @@ -10522,17 +6191,31 @@ snapshots: '@oven/bun-linux-aarch64': 1.0.11 '@oven/bun-linux-x64': 1.0.11 '@oven/bun-linux-x64-baseline': 1.0.11 + dev: true - bundle-require@4.0.1(esbuild@0.17.17): + /bundle-require@4.0.1(esbuild@0.17.17): + resolution: {integrity: sha512-9NQkRHlNdNpDBGmLpngF3EFDcwodhMUuLz9PaWYciVcQF9SE4LFjM2DB/xV1Li5JiuDMv7ZUWuC3rGbqR0MAXQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + peerDependencies: + esbuild: '>=0.17' dependencies: esbuild: 0.17.17 load-tsconfig: 0.2.5 + dev: true - bytes@3.1.2: {} + /bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + dev: true - cac@6.7.14: {} + /cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + dev: true - cacache@16.1.3: + /cacache@16.1.3: + resolution: {integrity: sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} dependencies: '@npmcli/fs': 2.1.2 '@npmcli/move-file': 2.0.1 @@ -10554,51 +6237,91 @@ snapshots: unique-filename: 2.0.1 transitivePeerDependencies: - bluebird + dev: false - cache-content-type@1.0.1: + /cache-content-type@1.0.1: + resolution: {integrity: sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==} + engines: {node: '>= 6.0.0'} dependencies: mime-types: 2.1.35 ylru: 1.3.2 + dev: false - call-bind@1.0.2: + /call-bind@1.0.2: + resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} dependencies: function-bind: 1.1.1 get-intrinsic: 1.1.3 + dev: true - caller-callsite@2.0.0: + /caller-callsite@2.0.0: + resolution: {integrity: sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==} + engines: {node: '>=4'} dependencies: callsites: 2.0.0 + dev: true - caller-path@2.0.0: + /caller-path@2.0.0: + resolution: {integrity: sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==} + engines: {node: '>=4'} dependencies: caller-callsite: 2.0.0 + dev: true - callsites@2.0.0: {} + /callsites@2.0.0: + resolution: {integrity: sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==} + engines: {node: '>=4'} + dev: true - callsites@3.1.0: {} + /callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + dev: true - camelcase-css@2.0.1: {} + /camelcase-css@2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} + dev: true - camelcase-keys@6.2.2: + /camelcase-keys@6.2.2: + resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} + engines: {node: '>=8'} dependencies: camelcase: 5.3.1 map-obj: 4.3.0 quick-lru: 4.0.1 + dev: true - camelcase@5.3.1: {} + /camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} - camelcase@6.3.0: {} + /camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + dev: true - caniuse-lite@1.0.30001470: {} + /caniuse-lite@1.0.30001609: + resolution: {integrity: sha512-JFPQs34lHKx1B5t1EpQpWH4c+29zIyn/haGsbpfq3suuV9v56enjFt23zqijxGTMwy1p/4H2tjnQMY+p1WoAyA==} + dev: true - case-anything@2.1.10: {} + /case-anything@2.1.10: + resolution: {integrity: sha512-JczJwVrCP0jPKh05McyVsuOg6AYosrB9XWZKbQzXeDAm2ClE/PJE/BcrrQrVyGYH7Jg8V/LDupmyL4kFlVsVFQ==} + engines: {node: '>=12.13'} + dev: true - chai-as-promised@7.1.1(chai@4.4.1): + /chai-as-promised@7.1.1(chai@4.4.1): + resolution: {integrity: sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==} + peerDependencies: + chai: '>= 2.1.2 < 5' dependencies: chai: 4.4.1 check-error: 1.0.3 + dev: true - chai@4.4.1: + /chai@4.4.1: + resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==} + engines: {node: '>=4'} dependencies: assertion-error: 1.1.0 check-error: 1.0.3 @@ -10607,42 +6330,64 @@ snapshots: loupe: 2.3.6 pathval: 1.1.1 type-detect: 4.0.8 + dev: true - chalk@1.1.3: + /chalk@1.1.3: + resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==} + engines: {node: '>=0.10.0'} dependencies: ansi-styles: 2.2.1 escape-string-regexp: 1.0.5 has-ansi: 2.0.0 strip-ansi: 3.0.1 supports-color: 2.0.0 + dev: true - chalk@2.4.2: + /chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} dependencies: ansi-styles: 3.2.1 escape-string-regexp: 1.0.5 supports-color: 5.5.0 + dev: true - chalk@3.0.0: + /chalk@3.0.0: + resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} + engines: {node: '>=8'} dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 + dev: true - chalk@4.1.2: + /chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 - change-case@5.2.0: {} + /change-case@5.2.0: + resolution: {integrity: sha512-L6VzznESnMIKKdKhVzCG+KPz4+x1FWbjOs1AdhoHStV3qo8aySMRGPUoqC0aL1ThKaQNGhAu6ZfHL/QAyQRuiw==} + dev: false - char-regex@1.0.2: {} + /char-regex@1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} + dev: true - chardet@0.7.0: {} + /chardet@0.7.0: + resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} - check-error@1.0.3: + /check-error@1.0.3: + resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} dependencies: get-func-name: 2.0.2 + dev: true - chokidar@3.5.3: + /chokidar@3.5.3: + resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + engines: {node: '>= 8.10.0'} dependencies: anymatch: 3.1.3 braces: 3.0.2 @@ -10654,26 +6399,46 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - chownr@1.1.4: {} + /chownr@1.1.4: + resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} + dev: false - chownr@2.0.0: {} + /chownr@2.0.0: + resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} + engines: {node: '>=10'} + dev: false - ci-info@2.0.0: {} + /ci-info@2.0.0: + resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} + dev: true - ci-info@3.8.0: {} + /ci-info@3.8.0: + resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} + engines: {node: '>=8'} + dev: true - cipher-base@1.0.4: + /cipher-base@1.0.4: + resolution: {integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==} dependencies: inherits: 2.0.4 safe-buffer: 5.2.1 + dev: true - cjs-module-lexer@1.2.2: {} + /cjs-module-lexer@1.2.2: + resolution: {integrity: sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==} + dev: true - clean-stack@2.2.0: {} + /clean-stack@2.2.0: + resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} + engines: {node: '>=6'} - cli-boxes@2.2.1: {} + /cli-boxes@2.2.1: + resolution: {integrity: sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==} + engines: {node: '>=6'} + dev: true - cli-color@1.4.0: + /cli-color@1.4.0: + resolution: {integrity: sha512-xu6RvQqqrWEo6MPR1eixqGPywhYBHRs653F9jfXB2Hx4jdM/3WxiNE1vppRmxtMIfl16SFYTpYlrnqH/HsK/2w==} dependencies: ansi-regex: 2.1.1 d: 1.0.1 @@ -10681,85 +6446,142 @@ snapshots: es6-iterator: 2.0.3 memoizee: 0.4.15 timers-ext: 0.1.7 + dev: false - cli-cursor@2.1.0: + /cli-cursor@2.1.0: + resolution: {integrity: sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==} + engines: {node: '>=4'} dependencies: restore-cursor: 2.0.0 + dev: true - cli-cursor@3.1.0: + /cli-cursor@3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} dependencies: restore-cursor: 3.1.0 + dev: false - cli-truncate@0.2.1: + /cli-truncate@0.2.1: + resolution: {integrity: sha512-f4r4yJnbT++qUPI9NR4XLDLq41gQ+uqnPItWG0F5ZkehuNiTTa3EY0S4AqTSUOeJ7/zU41oWPQSNkW5BqPL9bg==} + engines: {node: '>=0.10.0'} dependencies: slice-ansi: 0.0.4 string-width: 1.0.2 + dev: true - cli-width@2.2.1: {} + /cli-width@2.2.1: + resolution: {integrity: sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==} + dev: true - cli-width@3.0.0: {} + /cli-width@3.0.0: + resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} + engines: {node: '>= 10'} + dev: false - cliui@5.0.0: + /cliui@5.0.0: + resolution: {integrity: sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==} dependencies: string-width: 3.1.0 strip-ansi: 5.2.0 wrap-ansi: 5.1.0 + dev: false - cliui@6.0.0: + /cliui@6.0.0: + resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} dependencies: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 6.2.0 + dev: true - cliui@7.0.4: + /cliui@7.0.4: + resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} dependencies: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 7.0.0 + dev: true - cliui@8.0.1: + /cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} dependencies: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 7.0.0 - clone@1.0.4: {} + /clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + dev: true - co@4.6.0: {} + /co@4.6.0: + resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} - code-point-at@1.1.0: {} + /code-point-at@1.1.0: + resolution: {integrity: sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==} + engines: {node: '>=0.10.0'} + dev: true - collect-v8-coverage@1.0.1: {} + /collect-v8-coverage@1.0.1: + resolution: {integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==} + dev: true - color-convert@1.9.3: + /color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: color-name: 1.1.3 - color-convert@2.0.1: + /color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} dependencies: color-name: 1.1.4 - color-name@1.1.3: {} + /color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - color-name@1.1.4: {} + /color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - color-support@1.1.3: {} + /color-support@1.1.3: + resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} + hasBin: true + dev: false - combined-stream@1.0.8: + /combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} dependencies: delayed-stream: 1.0.0 + dev: true - command-exists@1.2.9: {} + /command-exists@1.2.9: + resolution: {integrity: sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==} + dev: true - commander@2.18.0: {} + /commander@2.18.0: + resolution: {integrity: sha512-6CYPa+JP2ftfRU2qkDK+UTVeQYosOg/2GbcjIcKPHfinyOLPVGXu/ovN86RP49Re5ndJK1N0kuiidFFuepc4ZQ==} + dev: true - commander@3.0.2: {} + /commander@3.0.2: + resolution: {integrity: sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==} + dev: true - commander@4.1.1: {} + /commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + dev: true - concat-map@0.0.1: {} + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - concurrently@8.2.2: + /concurrently@8.2.2: + resolution: {integrity: sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg==} + engines: {node: ^14.13.0 || >=16.0.0} + hasBin: true dependencies: chalk: 4.1.2 date-fns: 2.30.0 @@ -10770,78 +6592,100 @@ snapshots: supports-color: 8.1.1 tree-kill: 1.2.2 yargs: 17.7.2 + dev: true - console-control-strings@1.1.0: {} + /console-control-strings@1.1.0: + resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} + dev: false - content-disposition@0.5.4: + /content-disposition@0.5.4: + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} + engines: {node: '>= 0.6'} dependencies: safe-buffer: 5.2.1 + dev: false - content-type@1.0.5: {} + /content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + dev: false - convert-source-map@1.9.0: {} + /convert-source-map@1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + dev: true - convert-source-map@2.0.0: {} + /convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + dev: true - cookie@0.4.2: {} + /cookie@0.4.2: + resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} + engines: {node: '>= 0.6'} + dev: true - cookie@0.5.0: {} + /cookie@0.5.0: + resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} + engines: {node: '>= 0.6'} + dev: false - cookies@0.8.0: + /cookies@0.8.0: + resolution: {integrity: sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow==} + engines: {node: '>= 0.8'} dependencies: depd: 2.0.0 keygrip: 1.1.0 + dev: false - copy-anything@3.0.5: + /copy-anything@3.0.5: + resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==} + engines: {node: '>=12.13'} dependencies: is-what: 4.1.15 + dev: false - core-js@2.6.12: {} + /core-js@2.6.12: + resolution: {integrity: sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==} + deprecated: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js. + requiresBuild: true + dev: false - core-util-is@1.0.3: {} + /core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + dev: false - cosmiconfig@5.2.1: + /cosmiconfig@5.2.1: + resolution: {integrity: sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==} + engines: {node: '>=4'} dependencies: import-fresh: 2.0.0 is-directory: 0.3.1 js-yaml: 3.14.1 parse-json: 4.0.0 + dev: true - cosmiconfig@6.0.0: + /cosmiconfig@6.0.0: + resolution: {integrity: sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==} + engines: {node: '>=8'} dependencies: '@types/parse-json': 4.0.0 import-fresh: 3.3.0 parse-json: 5.2.0 path-type: 4.0.0 yaml: 1.10.2 + dev: true - create-create-app@https://codeload.github.com/holic/create-create-app/tar.gz/74376c59b48a04aabbe94d9cacfe9cb1cecccd63(encoding@0.1.13): - dependencies: - '@types/yargs-interactive': 2.1.3 - chalk: 4.1.2 - cross-spawn: 7.0.3 - epicfail: 3.0.0(encoding@0.1.13) - execa: 5.1.1 - gitconfig: 2.0.8 - globby: 11.1.0 - handlebars: 4.7.7 - is-utf8: 0.2.1 - license.js: 3.1.2 - slash: 3.0.0 - uuid: 8.3.2 - yargs-interactive: 3.0.1 - transitivePeerDependencies: - - encoding - - create-hash@1.2.0: + /create-hash@1.2.0: + resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} dependencies: cipher-base: 1.0.4 inherits: 2.0.4 md5.js: 1.3.5 ripemd160: 2.0.2 sha.js: 2.4.11 + dev: true - create-hmac@1.1.7: + /create-hmac@1.1.7: + resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==} dependencies: cipher-base: 1.0.4 create-hash: 1.2.0 @@ -10849,197 +6693,467 @@ snapshots: ripemd160: 2.0.2 safe-buffer: 5.2.1 sha.js: 2.4.11 + dev: true - cross-spawn@5.1.0: + /cross-spawn@5.1.0: + resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} dependencies: lru-cache: 4.1.5 shebang-command: 1.2.0 which: 1.3.1 + dev: true - cross-spawn@6.0.5: + /cross-spawn@6.0.5: + resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==} + engines: {node: '>=4.8'} dependencies: nice-try: 1.0.5 path-key: 2.0.1 semver: 5.7.1 shebang-command: 1.2.0 which: 1.3.1 + dev: true - cross-spawn@7.0.3: + /cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} dependencies: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 - cssesc@3.0.0: {} + /cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + dev: true - cssstyle@3.0.0: + /cssstyle@3.0.0: + resolution: {integrity: sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==} + engines: {node: '>=14'} dependencies: rrweb-cssom: 0.6.0 + dev: true - csstype@3.1.2: {} + /csstype@3.1.2: + resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} + dev: true - csv-generate@3.4.3: {} + /csv-generate@3.4.3: + resolution: {integrity: sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==} + dev: true - csv-parse@4.16.3: {} + /csv-parse@4.16.3: + resolution: {integrity: sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==} + dev: true - csv-stringify@5.6.5: {} + /csv-stringify@5.6.5: + resolution: {integrity: sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A==} + dev: true - csv@5.5.3: + /csv@5.5.3: + resolution: {integrity: sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g==} + engines: {node: '>= 0.1.90'} dependencies: csv-generate: 3.4.3 csv-parse: 4.16.3 csv-stringify: 5.6.5 stream-transform: 2.1.3 + dev: true - d@1.0.1: + /d@1.0.1: + resolution: {integrity: sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==} dependencies: es5-ext: 0.10.62 type: 1.2.0 + dev: false - data-urls@4.0.0: + /data-urls@4.0.0: + resolution: {integrity: sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g==} + engines: {node: '>=14'} dependencies: abab: 2.0.6 whatwg-mimetype: 3.0.0 whatwg-url: 12.0.1 + dev: true - dataloader@1.4.0: {} + /dataloader@1.4.0: + resolution: {integrity: sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==} + dev: true - date-fns@1.30.1: {} + /date-fns@1.30.1: + resolution: {integrity: sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==} + dev: true - date-fns@2.30.0: + /date-fns@2.30.0: + resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} + engines: {node: '>=0.11'} dependencies: '@babel/runtime': 7.21.0 + dev: true - debug@4.3.4(supports-color@8.1.1): + /debug@4.3.4(supports-color@8.1.1): + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true dependencies: ms: 2.1.2 - optionalDependencies: supports-color: 8.1.1 - decamelize-keys@1.1.1: + /decamelize-keys@1.1.1: + resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} + engines: {node: '>=0.10.0'} dependencies: decamelize: 1.2.0 map-obj: 1.0.1 + dev: true - decamelize@1.2.0: {} + /decamelize@1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} - decamelize@4.0.0: {} + /decamelize@4.0.0: + resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} + engines: {node: '>=10'} + dev: true - decimal.js@10.4.3: {} + /decimal.js@10.4.3: + resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} + dev: true - decompress-response@6.0.0: + /decompress-response@6.0.0: + resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} + engines: {node: '>=10'} dependencies: mimic-response: 3.1.0 + dev: false - dedent@0.7.0: {} + /dedent@0.7.0: + resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} + dev: true - deep-eql@4.1.3: + /deep-eql@4.1.3: + resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} + engines: {node: '>=6'} dependencies: type-detect: 4.0.8 + dev: true - deep-equal@1.0.1: {} + /deep-equal@1.0.1: + resolution: {integrity: sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==} + dev: false - deep-extend@0.6.0: {} + /deep-extend@0.6.0: + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} + dev: false - deep-is@0.1.4: {} + /deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + dev: true - deepmerge@4.3.1: {} + /deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + dev: true - defaults@1.0.4: + /defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} dependencies: clone: 1.0.4 + dev: true - define-properties@1.1.4: + /define-properties@1.1.4: + resolution: {integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==} + engines: {node: '>= 0.4'} dependencies: has-property-descriptors: 1.0.0 object-keys: 1.1.1 + dev: true - delayed-stream@1.0.0: {} + /delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + dev: true - delegates@1.0.0: {} + /delegates@1.0.0: + resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} + dev: false - depd@1.1.2: {} + /depd@1.1.2: + resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} + engines: {node: '>= 0.6'} + dev: false - depd@2.0.0: {} + /depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} - destroy@1.2.0: {} + /destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + dev: false - detect-indent@6.1.0: {} + /detect-indent@6.1.0: + resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} + engines: {node: '>=8'} + dev: true - detect-libc@1.0.3: {} + /detect-libc@1.0.3: + resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} + engines: {node: '>=0.10'} + hasBin: true + dev: true - detect-libc@2.0.2: {} + /detect-libc@2.0.2: + resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==} + engines: {node: '>=8'} + dev: false - detect-newline@3.1.0: {} + /detect-newline@3.1.0: + resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} + engines: {node: '>=8'} + dev: true - didyoumean@1.2.2: {} + /didyoumean@1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + dev: true - diff-sequences@27.5.1: {} + /diff-sequences@27.5.1: + resolution: {integrity: sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dev: true - diff-sequences@29.6.3: {} + /diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true - diff@5.0.0: {} + /diff@5.0.0: + resolution: {integrity: sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==} + engines: {node: '>=0.3.1'} + dev: true - dir-glob@3.0.1: + /dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} dependencies: path-type: 4.0.0 - dlv@1.1.3: {} + /dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + dev: true - doctrine@2.1.0: + /doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} dependencies: esutils: 2.0.3 + dev: true - doctrine@3.0.0: + /doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} dependencies: esutils: 2.0.3 + dev: true - domexception@4.0.0: + /domexception@4.0.0: + resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} + engines: {node: '>=12'} dependencies: webidl-conversions: 7.0.0 + dev: true + + /dotenv@16.0.3: + resolution: {integrity: sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==} + engines: {node: '>=12'} + + /dprint-node@1.0.7: + resolution: {integrity: sha512-NTZOW9A7ipb0n7z7nC3wftvsbceircwVHSgzobJsEQa+7RnOMbhrfX5IflA6CtC4GA63DSAiHYXa4JKEy9F7cA==} + dependencies: + detect-libc: 1.0.3 + dev: true - dotenv@16.0.3: {} + /drizzle-orm@0.28.5(@types/better-sqlite3@7.6.4)(better-sqlite3@8.6.0)(postgres@3.3.5): + resolution: {integrity: sha512-6r6Iw4c38NAmW6TiKH3TUpGUQ1YdlEoLJOQptn8XPx3Z63+vFNKfAiANqrIiYZiMjKR9+NYAL219nFrmo1duXA==} + peerDependencies: + '@aws-sdk/client-rds-data': '>=3' + '@cloudflare/workers-types': '>=3' + '@libsql/client': '*' + '@neondatabase/serverless': '>=0.1' + '@opentelemetry/api': ^1.4.1 + '@planetscale/database': '>=1' + '@types/better-sqlite3': '*' + '@types/pg': '*' + '@types/sql.js': '*' + '@vercel/postgres': '*' + better-sqlite3: '>=7' + bun-types: '*' + knex: '*' + kysely: '*' + mysql2: '>=2' + pg: '>=8' + postgres: '>=3' + sql.js: '>=1' + sqlite3: '>=5' + peerDependenciesMeta: + '@aws-sdk/client-rds-data': + optional: true + '@cloudflare/workers-types': + optional: true + '@libsql/client': + optional: true + '@neondatabase/serverless': + optional: true + '@opentelemetry/api': + optional: true + '@planetscale/database': + optional: true + '@types/better-sqlite3': + optional: true + '@types/pg': + optional: true + '@types/sql.js': + optional: true + '@vercel/postgres': + optional: true + better-sqlite3: + optional: true + bun-types: + optional: true + knex: + optional: true + kysely: + optional: true + mysql2: + optional: true + pg: + optional: true + postgres: + optional: true + sql.js: + optional: true + sqlite3: + optional: true + dependencies: + '@types/better-sqlite3': 7.6.4 + better-sqlite3: 8.6.0 + postgres: 3.3.5 + dev: false - dprint-node@1.0.7: + /drizzle-orm@0.28.5(@types/sql.js@1.4.4)(kysely@0.26.3)(postgres@3.3.5)(sql.js@1.8.0): + resolution: {integrity: sha512-6r6Iw4c38NAmW6TiKH3TUpGUQ1YdlEoLJOQptn8XPx3Z63+vFNKfAiANqrIiYZiMjKR9+NYAL219nFrmo1duXA==} + peerDependencies: + '@aws-sdk/client-rds-data': '>=3' + '@cloudflare/workers-types': '>=3' + '@libsql/client': '*' + '@neondatabase/serverless': '>=0.1' + '@opentelemetry/api': ^1.4.1 + '@planetscale/database': '>=1' + '@types/better-sqlite3': '*' + '@types/pg': '*' + '@types/sql.js': '*' + '@vercel/postgres': '*' + better-sqlite3: '>=7' + bun-types: '*' + knex: '*' + kysely: '*' + mysql2: '>=2' + pg: '>=8' + postgres: '>=3' + sql.js: '>=1' + sqlite3: '>=5' + peerDependenciesMeta: + '@aws-sdk/client-rds-data': + optional: true + '@cloudflare/workers-types': + optional: true + '@libsql/client': + optional: true + '@neondatabase/serverless': + optional: true + '@opentelemetry/api': + optional: true + '@planetscale/database': + optional: true + '@types/better-sqlite3': + optional: true + '@types/pg': + optional: true + '@types/sql.js': + optional: true + '@vercel/postgres': + optional: true + better-sqlite3: + optional: true + bun-types: + optional: true + knex: + optional: true + kysely: + optional: true + mysql2: + optional: true + pg: + optional: true + postgres: + optional: true + sql.js: + optional: true + sqlite3: + optional: true dependencies: - detect-libc: 1.0.3 - - drizzle-orm@0.28.5(@types/better-sqlite3@7.6.4)(@types/sql.js@1.4.4)(better-sqlite3@8.6.0)(kysely@0.26.3)(postgres@3.3.5)(sql.js@1.8.0): - optionalDependencies: - '@types/better-sqlite3': 7.6.4 '@types/sql.js': 1.4.4 - better-sqlite3: 8.6.0 kysely: 0.26.3 postgres: 3.3.5 sql.js: 1.8.0 + dev: false - ds-test@https://codeload.github.com/dapphub/ds-test/tar.gz/e282159d5170298eb2455a6c05280ab5a73a4ef0: {} - - duplexify@3.7.1: + /duplexify@3.7.1: + resolution: {integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==} dependencies: end-of-stream: 1.4.4 inherits: 2.0.4 readable-stream: 2.3.8 stream-shift: 1.0.1 + dev: false - duplexify@4.1.2: + /duplexify@4.1.2: + resolution: {integrity: sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==} dependencies: end-of-stream: 1.4.4 inherits: 2.0.4 readable-stream: 3.6.0 stream-shift: 1.0.1 + dev: false - ee-first@1.1.1: {} + /ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + dev: false - ejs@3.1.8: + /ejs@3.1.8: + resolution: {integrity: sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==} + engines: {node: '>=0.10.0'} + hasBin: true dependencies: jake: 10.8.5 - electron-to-chromium@1.4.340: {} + /electron-to-chromium@1.4.735: + resolution: {integrity: sha512-pkYpvwg8VyOTQAeBqZ7jsmpCjko1Qc6We1ZtZCjRyYbT5v4AIUKDy5cQTRotQlSSZmMr8jqpEt6JtOj5k7lR7A==} + dev: true - elegant-spinner@1.0.1: {} + /elegant-spinner@1.0.1: + resolution: {integrity: sha512-B+ZM+RXvRqQaAmkMlO/oSe5nMUOaUnyfGYCEHoR8wrXsZR2mA0XVibsxV1bvTwxdRWah1PkQqso2EzhILGHtEQ==} + engines: {node: '>=0.10.0'} + dev: true - elliptic@6.5.4: + /elliptic@6.5.4: + resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} dependencies: bn.js: 4.12.0 brorand: 1.1.0 @@ -11049,49 +7163,81 @@ snapshots: minimalistic-assert: 1.0.1 minimalistic-crypto-utils: 1.0.1 - emittery@0.13.1: {} + /emittery@0.13.1: + resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} + engines: {node: '>=12'} + dev: true - emoji-regex@7.0.3: {} + /emoji-regex@7.0.3: + resolution: {integrity: sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==} - emoji-regex@8.0.0: {} + /emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - encodeurl@1.0.2: {} + /encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + dev: false - encoding@0.1.13: + /encoding@0.1.13: + resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} + requiresBuild: true dependencies: iconv-lite: 0.6.3 + dev: false optional: true - end-of-stream@1.4.4: + /end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} dependencies: once: 1.4.0 - enquirer@2.3.6: + /enquirer@2.3.6: + resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} + engines: {node: '>=8.6'} dependencies: ansi-colors: 4.1.3 + dev: true - entities@4.5.0: {} + /entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + dev: true - env-paths@2.2.1: {} + /env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} - envinfo@7.8.1: {} + /envinfo@7.8.1: + resolution: {integrity: sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==} + engines: {node: '>=4'} + hasBin: true + dev: false - epicfail@3.0.0(encoding@0.1.13): + /epicfail@3.0.0: + resolution: {integrity: sha512-zf7vvWZ2tI2+P1674dmcyPWopD/0FC2BrAi0DvDY0uKGmrB66rwpRVlOYKFlGwRO4Q6bpkoCTPhjqvi5hMOavQ==} dependencies: chalk: 4.1.2 envinfo: 7.8.1 - node-fetch: 2.6.9(encoding@0.1.13) + node-fetch: 2.6.9 pkg-up: 3.1.0 transitivePeerDependencies: - encoding + dev: false - err-code@2.0.3: {} + /err-code@2.0.3: + resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} + dev: false - error-ex@1.3.2: + /error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: is-arrayish: 0.2.1 + dev: true - es-abstract@1.20.5: + /es-abstract@1.20.5: + resolution: {integrity: sha512-7h8MM2EQhsCA7pU/Nv78qOXFpD8Rhqd12gYiSJVkrH9+e8VuA8JlPJK/hQjjlLv6pJvx/z1iRFKzYb0XT/RuAQ==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 es-to-primitive: 1.2.1 @@ -11118,42 +7264,62 @@ snapshots: string.prototype.trimend: 1.0.6 string.prototype.trimstart: 1.0.6 unbox-primitive: 1.0.2 + dev: true - es-shim-unscopables@1.0.0: + /es-shim-unscopables@1.0.0: + resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} dependencies: has: 1.0.3 + dev: true - es-to-primitive@1.2.1: + /es-to-primitive@1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} dependencies: is-callable: 1.2.7 is-date-object: 1.0.5 is-symbol: 1.0.4 + dev: true - es5-ext@0.10.62: + /es5-ext@0.10.62: + resolution: {integrity: sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==} + engines: {node: '>=0.10'} + requiresBuild: true dependencies: es6-iterator: 2.0.3 es6-symbol: 3.1.3 next-tick: 1.1.0 + dev: false - es6-iterator@2.0.3: + /es6-iterator@2.0.3: + resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==} dependencies: d: 1.0.1 es5-ext: 0.10.62 es6-symbol: 3.1.3 + dev: false - es6-symbol@3.1.3: + /es6-symbol@3.1.3: + resolution: {integrity: sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==} dependencies: d: 1.0.1 ext: 1.7.0 + dev: false - es6-weak-map@2.0.3: + /es6-weak-map@2.0.3: + resolution: {integrity: sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==} dependencies: d: 1.0.1 es5-ext: 0.10.62 es6-iterator: 2.0.3 es6-symbol: 3.1.3 + dev: false - esbuild@0.17.15: + /esbuild@0.17.15: + resolution: {integrity: sha512-LBUV2VsUIc/iD9ME75qhT4aJj0r75abCVS0jakhFzOtR7TQsqQA5w0tZ+KTKnwl3kXE0MhskNdHDh/I5aCR1Zw==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true optionalDependencies: '@esbuild/android-arm': 0.17.15 '@esbuild/android-arm64': 0.17.15 @@ -11177,8 +7343,13 @@ snapshots: '@esbuild/win32-arm64': 0.17.15 '@esbuild/win32-ia32': 0.17.15 '@esbuild/win32-x64': 0.17.15 + dev: false - esbuild@0.17.17: + /esbuild@0.17.17: + resolution: {integrity: sha512-/jUywtAymR8jR4qsa2RujlAF7Krpt5VWi72Q2yuLD4e/hvtNcFQ0I1j8m/bxq238pf3/0KO5yuXNpuLx8BE1KA==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true optionalDependencies: '@esbuild/android-arm': 0.17.17 '@esbuild/android-arm64': 0.17.17 @@ -11202,22 +7373,49 @@ snapshots: '@esbuild/win32-arm64': 0.17.17 '@esbuild/win32-ia32': 0.17.17 '@esbuild/win32-x64': 0.17.17 + dev: true + + /escalade@3.1.1: + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + engines: {node: '>=6'} - escalade@3.1.1: {} + /escalade@3.1.2: + resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} + engines: {node: '>=6'} + dev: true - escape-html@1.0.3: {} + /escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + dev: false - escape-string-regexp@1.0.5: {} + /escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} - escape-string-regexp@2.0.0: {} + /escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + dev: true - escape-string-regexp@4.0.0: {} + /escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + dev: true - eslint-plugin-react-hooks@4.6.0(eslint@8.57.0): + /eslint-plugin-react-hooks@4.6.0(eslint@8.57.0): + resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 dependencies: eslint: 8.57.0 + dev: true - eslint-plugin-react@7.31.11(eslint@8.57.0): + /eslint-plugin-react@7.31.11(eslint@8.57.0): + resolution: {integrity: sha512-TTvq5JsT5v56wPa9OYHzsrOlHzKZKjV+aLgS+55NJP/cuzdiQPC7PfYoUjMoxlffKtvijpk7vA/jmuqRb9nohw==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: array-includes: 3.1.6 array.prototype.flatmap: 1.3.1 @@ -11233,28 +7431,47 @@ snapshots: object.values: 1.1.6 prop-types: 15.8.1 resolve: 2.0.0-next.4 - semver: 6.3.0 + semver: 6.3.1 string.prototype.matchall: 4.0.8 + dev: true - eslint-scope@4.0.3: + /eslint-scope@4.0.3: + resolution: {integrity: sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==} + engines: {node: '>=4.0.0'} dependencies: esrecurse: 4.3.0 estraverse: 4.3.0 + dev: true - eslint-scope@7.2.2: + /eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 + dev: true - eslint-utils@1.4.3: + /eslint-utils@1.4.3: + resolution: {integrity: sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==} + engines: {node: '>=6'} dependencies: eslint-visitor-keys: 1.3.0 + dev: true - eslint-visitor-keys@1.3.0: {} + /eslint-visitor-keys@1.3.0: + resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} + engines: {node: '>=4'} + dev: true - eslint-visitor-keys@3.4.3: {} + /eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true - eslint@5.16.0: + /eslint@5.16.0: + resolution: {integrity: sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==} + engines: {node: ^6.14.0 || ^8.10.0 || >=9.10.0} + hasBin: true dependencies: '@babel/code-frame': 7.21.4 ajv: 6.12.6 @@ -11294,8 +7511,12 @@ snapshots: text-table: 0.2.0 transitivePeerDependencies: - supports-color + dev: true - eslint@8.57.0: + /eslint@8.57.0: + resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@eslint-community/regexpp': 4.10.0 @@ -11337,40 +7558,69 @@ snapshots: text-table: 0.2.0 transitivePeerDependencies: - supports-color + dev: true - espree@5.0.1: + /espree@5.0.1: + resolution: {integrity: sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==} + engines: {node: '>=6.0.0'} dependencies: acorn: 6.4.2 acorn-jsx: 5.3.2(acorn@6.4.2) eslint-visitor-keys: 1.3.0 + dev: true - espree@9.6.1: + /espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: acorn: 8.11.3 acorn-jsx: 5.3.2(acorn@8.11.3) eslint-visitor-keys: 3.4.3 + dev: true - esprima@4.0.1: {} + /esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + dev: true - esquery@1.5.0: + /esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} dependencies: estraverse: 5.3.0 + dev: true - esrecurse@4.3.0: + /esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} dependencies: estraverse: 5.3.0 + dev: true - estraverse@4.3.0: {} + /estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + dev: true - estraverse@5.3.0: {} + /estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + dev: true - esutils@2.0.3: {} + /esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + dev: true - ethereum-bloom-filters@1.0.10: + /ethereum-bloom-filters@1.0.10: + resolution: {integrity: sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA==} dependencies: js-sha3: 0.8.0 + dev: true - ethereum-cryptography@0.1.3: + /ethereum-cryptography@0.1.3: + resolution: {integrity: sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==} dependencies: '@types/pbkdf2': 3.1.2 '@types/secp256k1': 4.0.6 @@ -11387,27 +7637,35 @@ snapshots: scrypt-js: 3.0.1 secp256k1: 4.0.3 setimmediate: 1.0.5 + dev: true - ethereum-cryptography@1.2.0: + /ethereum-cryptography@1.2.0: + resolution: {integrity: sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==} dependencies: '@noble/hashes': 1.2.0 '@noble/secp256k1': 1.7.1 '@scure/bip32': 1.1.5 '@scure/bip39': 1.1.1 + dev: true - ethereum-cryptography@2.1.3: + /ethereum-cryptography@2.1.3: + resolution: {integrity: sha512-BlwbIL7/P45W8FGW2r7LGuvoEZ+7PWsniMvQ4p5s2xCyw9tmaDlpfsN9HjAucbF+t/qpVHwZUisgfK24TCW8aA==} dependencies: '@noble/curves': 1.3.0 '@noble/hashes': 1.3.3 '@scure/bip32': 1.3.3 '@scure/bip39': 1.2.2 + dev: true - ethereumjs-abi@0.6.8: + /ethereumjs-abi@0.6.8: + resolution: {integrity: sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==} dependencies: bn.js: 4.12.0 ethereumjs-util: 6.2.1 + dev: true - ethereumjs-util@6.2.1: + /ethereumjs-util@6.2.1: + resolution: {integrity: sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==} dependencies: '@types/bn.js': 4.11.6 bn.js: 4.12.0 @@ -11416,8 +7674,10 @@ snapshots: ethereum-cryptography: 0.1.3 ethjs-util: 0.1.6 rlp: 2.2.7 + dev: true - ethers@5.7.2: + /ethers@5.7.2: + resolution: {integrity: sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==} dependencies: '@ethersproject/abi': 5.7.0 '@ethersproject/abstract-provider': 5.7.0 @@ -11453,26 +7713,37 @@ snapshots: - bufferutil - utf-8-validate - ethjs-unit@0.1.6: + /ethjs-unit@0.1.6: + resolution: {integrity: sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==} + engines: {node: '>=6.5.0', npm: '>=3'} dependencies: bn.js: 4.11.6 number-to-bn: 1.7.0 + dev: true - ethjs-util@0.1.6: + /ethjs-util@0.1.6: + resolution: {integrity: sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==} + engines: {node: '>=6.5.0', npm: '>=3'} dependencies: is-hex-prefixed: 1.0.0 strip-hex-prefix: 1.0.0 + dev: true - event-emitter@0.3.5: + /event-emitter@0.3.5: + resolution: {integrity: sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==} dependencies: d: 1.0.1 es5-ext: 0.10.62 + dev: false - event-target-shim@5.0.1: {} + /event-target-shim@5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} + dev: false - eventemitter3@4.0.7: {} + /eventemitter3@4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} -<<<<<<< HEAD /eventemitter3@5.0.1: resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} dev: false @@ -11481,16 +7752,17 @@ snapshots: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} dev: false -======= - events@3.3.0: {} ->>>>>>> 1175edcf0 (feat: update pnpm and node version) - evp_bytestokey@1.0.3: + /evp_bytestokey@1.0.3: + resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} dependencies: md5.js: 1.3.5 safe-buffer: 5.2.1 + dev: true - execa@3.4.0: + /execa@3.4.0: + resolution: {integrity: sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g==} + engines: {node: ^8.12.0 || >=9.7.0} dependencies: cross-spawn: 7.0.3 get-stream: 5.2.0 @@ -11502,8 +7774,11 @@ snapshots: p-finally: 2.0.1 signal-exit: 3.0.7 strip-final-newline: 2.0.0 + dev: true - execa@5.1.1: + /execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} dependencies: cross-spawn: 7.0.3 get-stream: 6.0.1 @@ -11515,7 +7790,9 @@ snapshots: signal-exit: 3.0.7 strip-final-newline: 2.0.0 - execa@7.2.0: + /execa@7.2.0: + resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} + engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} dependencies: cross-spawn: 7.0.3 get-stream: 6.0.1 @@ -11526,52 +7803,84 @@ snapshots: onetime: 6.0.0 signal-exit: 3.0.7 strip-final-newline: 3.0.0 + dev: true - execcli@5.0.6: + /execcli@5.0.6: + resolution: {integrity: sha512-du+uy/Ew2P90PKjSHI89u/XuqVaBDzvaJ6ePn40JaOy7owFQNsYDbd5AoR5A559HEAb1i5HO22rJxtgVonf5Bg==} + engines: {node: '>=8', npm: '>=4'} dependencies: argx: 4.0.4 arrayreduce: 2.1.0 findout: 3.0.2 hasbin: 1.2.3 stringcase: 4.3.1 + dev: false - exit@0.1.2: {} + /exit@0.1.2: + resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} + engines: {node: '>= 0.8.0'} + dev: true - expand-template@2.0.3: {} + /expand-template@2.0.3: + resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} + engines: {node: '>=6'} + dev: false - expect@29.5.0: + /expect@29.5.0: + resolution: {integrity: sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/expect-utils': 29.5.0 jest-get-type: 29.4.3 jest-matcher-utils: 29.5.0 jest-message-util: 29.5.0 jest-util: 29.5.0 + dev: true - exponential-backoff@3.1.1: {} + /exponential-backoff@3.1.1: + resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==} + dev: false - ext@1.7.0: + /ext@1.7.0: + resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} dependencies: type: 2.7.2 + dev: false - extend@3.0.2: {} + /extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + dev: false - extendable-error@0.1.7: {} + /extendable-error@0.1.7: + resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} + dev: true - external-editor@3.1.0: + /external-editor@3.1.0: + resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} + engines: {node: '>=4'} dependencies: chardet: 0.7.0 iconv-lite: 0.4.24 tmp: 0.0.33 - fast-content-type-parse@1.0.0: {} + /fast-content-type-parse@1.0.0: + resolution: {integrity: sha512-Xbc4XcysUXcsP5aHUU7Nq3OwvHq97C+WnbkeIefpeYLX+ryzFJlU6OStFJhs6Ol0LkUGpcK+wL0JwfM+FCU5IA==} + dev: false - fast-decode-uri-component@1.0.1: {} + /fast-decode-uri-component@1.0.1: + resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==} + dev: false - fast-deep-equal@3.1.3: {} + /fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - fast-diff@1.2.0: {} + /fast-diff@1.2.0: + resolution: {integrity: sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==} + dev: true - fast-glob@3.2.12: + /fast-glob@3.2.12: + resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} + engines: {node: '>=8.6.0'} dependencies: '@nodelib/fs.stat': 2.0.5 '@nodelib/fs.walk': 1.2.8 @@ -11579,9 +7888,12 @@ snapshots: merge2: 1.4.1 micromatch: 4.0.5 - fast-json-stable-stringify@2.1.0: {} + /fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + dev: true - fast-json-stringify@5.8.0: + /fast-json-stringify@5.8.0: + resolution: {integrity: sha512-VVwK8CFMSALIvt14U8AvrSzQAwN/0vaVRiFFUVlpnXSnDGrSkOAO5MtzyN8oQNjLd5AqTW5OZRgyjoNuAuR3jQ==} dependencies: '@fastify/deepmerge': 1.3.0 ajv: 8.12.0 @@ -11589,18 +7901,27 @@ snapshots: fast-deep-equal: 3.1.3 fast-uri: 2.2.0 rfdc: 1.3.0 + dev: false - fast-levenshtein@2.0.6: {} + /fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + dev: true - fast-querystring@1.1.2: + /fast-querystring@1.1.2: + resolution: {integrity: sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==} dependencies: fast-decode-uri-component: 1.0.1 + dev: false - fast-redact@3.3.0: {} + /fast-redact@3.3.0: + resolution: {integrity: sha512-6T5V1QK1u4oF+ATxs1lWUmlEk6P2T9HqJG3e2DnHOdVgZy2rFJBoEnrIedcTXlkAHU/zKC+7KETJ+KGGKwxgMQ==} + engines: {node: '>=6'} + dev: false - fast-uri@2.2.0: {} + /fast-uri@2.2.0: + resolution: {integrity: sha512-cIusKBIt/R/oI6z/1nyfe2FvGKVTohVRfvkOhvx0nCEW+xf5NoCXjAHcWp93uOUBchzYcsvPlrapAdX1uW+YGg==} + dev: false -<<<<<<< HEAD /fast-xml-parser@4.2.5: resolution: {integrity: sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==} hasBin: true @@ -11611,11 +7932,9 @@ snapshots: /fastify-plugin@4.5.1: resolution: {integrity: sha512-stRHYGeuqpEZTL1Ef0Ovr2ltazUT9g844X5z/zEBFLG8RYlpDiOCIG+ATvYEp+/zmc7sN29mcIMp8gvYplYPIQ==} dev: false -======= - fastify-plugin@4.5.1: {} ->>>>>>> 1175edcf0 (feat: update pnpm and node version) - fastify@4.21.0: + /fastify@4.21.0: + resolution: {integrity: sha512-tsu4bcwE4HetxqW8prA5fbC9bKHMYDp7jGEDWyzK1l90a3uOaLoIcQbdGcWeODNLVJviQnzh1wvIjTZE3MJFEg==} dependencies: '@fastify/ajv-compiler': 3.5.0 '@fastify/error': 3.3.0 @@ -11635,164 +7954,270 @@ snapshots: tiny-lru: 11.0.1 transitivePeerDependencies: - supports-color + dev: false - fastq@1.15.0: + /fastq@1.15.0: + resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} dependencies: reusify: 1.0.4 - fb-watchman@2.0.2: + /fb-watchman@2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} dependencies: bser: 2.1.1 + dev: true - figures@1.7.0: + /figures@1.7.0: + resolution: {integrity: sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ==} + engines: {node: '>=0.10.0'} dependencies: escape-string-regexp: 1.0.5 object-assign: 4.1.1 + dev: true - figures@2.0.0: + /figures@2.0.0: + resolution: {integrity: sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==} + engines: {node: '>=4'} dependencies: escape-string-regexp: 1.0.5 + dev: true - figures@3.2.0: + /figures@3.2.0: + resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} + engines: {node: '>=8'} dependencies: escape-string-regexp: 1.0.5 + dev: false - file-entry-cache@5.0.1: + /file-entry-cache@5.0.1: + resolution: {integrity: sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==} + engines: {node: '>=4'} dependencies: flat-cache: 2.0.1 + dev: true - file-entry-cache@6.0.1: + /file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} dependencies: flat-cache: 3.0.4 + dev: true - file-uri-to-path@1.0.0: {} + /file-uri-to-path@1.0.0: + resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} + dev: false - filelist@1.0.4: + /filelist@1.0.4: + resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} dependencies: minimatch: 5.1.6 - fill-range@7.0.1: + /fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} dependencies: to-regex-range: 5.0.1 - find-my-way@7.6.2: + /find-my-way@7.6.2: + resolution: {integrity: sha512-0OjHn1b1nCX3eVbm9ByeEHiscPYiHLfhei1wOUU9qffQkk98wE0Lo8VrVYfSGMgnSnDh86DxedduAnBf4nwUEw==} + engines: {node: '>=14'} dependencies: fast-deep-equal: 3.1.3 fast-querystring: 1.1.2 safe-regex2: 2.0.0 + dev: false - find-up@2.1.0: + /find-up@2.1.0: + resolution: {integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==} + engines: {node: '>=4'} dependencies: locate-path: 2.0.0 + dev: true - find-up@3.0.0: + /find-up@3.0.0: + resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} + engines: {node: '>=6'} dependencies: locate-path: 3.0.0 + dev: false - find-up@4.1.0: + /find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} dependencies: locate-path: 5.0.0 path-exists: 4.0.0 + dev: true - find-up@5.0.0: + /find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} dependencies: locate-path: 6.0.0 path-exists: 4.0.0 - find-yarn-workspace-root2@1.2.16: + /find-yarn-workspace-root2@1.2.16: + resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} dependencies: micromatch: 4.0.5 pkg-dir: 4.2.0 + dev: true - findout@3.0.2: {} + /findout@3.0.2: + resolution: {integrity: sha512-eatRX+s8jm8ml/S9Y5NBBjR4W8i7IeEmyddB3Lidak/nPZNfDxGzLEIaMKgeNj5/LHA1i0dC4Gwsb13H1bx+AA==} + engines: {node: '>=7.6', npm: '>=4'} + dev: false - flat-cache@2.0.1: + /flat-cache@2.0.1: + resolution: {integrity: sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==} + engines: {node: '>=4'} dependencies: flatted: 2.0.2 rimraf: 2.6.3 write: 1.0.3 + dev: true - flat-cache@3.0.4: + /flat-cache@3.0.4: + resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} + engines: {node: ^10.12.0 || >=12.0.0} dependencies: flatted: 3.2.7 rimraf: 3.0.2 + dev: true - flat@5.0.2: {} + /flat@5.0.2: + resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} + hasBin: true + dev: true - flatted@2.0.2: {} + /flatted@2.0.2: + resolution: {integrity: sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==} + dev: true - flatted@3.2.7: {} + /flatted@3.2.7: + resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} + dev: true - follow-redirects@1.15.2(debug@4.3.4): - optionalDependencies: + /follow-redirects@1.15.2(debug@4.3.4): + resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + dependencies: debug: 4.3.4(supports-color@8.1.1) + dev: true - forge-std@https://codeload.github.com/foundry-rs/forge-std/tar.gz/74cfb77e308dd188d2f58864aaf44963ae6b88b1: {} - - form-data@4.0.0: + /form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 mime-types: 2.1.35 + dev: true - forwarded@0.2.0: {} + /forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + dev: false - fp-ts@1.19.3: {} + /fp-ts@1.19.3: + resolution: {integrity: sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==} + dev: true - fraction.js@4.2.0: {} + /fraction.js@4.2.0: + resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==} + dev: true - fresh@0.5.2: {} + /fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + dev: false - from2@2.3.0: + /from2@2.3.0: + resolution: {integrity: sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==} dependencies: inherits: 2.0.4 readable-stream: 2.3.8 + dev: false - fs-constants@1.0.0: {} + /fs-constants@1.0.0: + resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + dev: false - fs-extra@0.30.0: + /fs-extra@0.30.0: + resolution: {integrity: sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA==} dependencies: graceful-fs: 4.2.11 jsonfile: 2.4.0 klaw: 1.3.1 path-is-absolute: 1.0.1 rimraf: 2.6.3 + dev: true - fs-extra@7.0.1: + /fs-extra@7.0.1: + resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} + engines: {node: '>=6 <7 || >=8'} dependencies: graceful-fs: 4.2.11 jsonfile: 4.0.0 universalify: 0.1.2 + dev: true - fs-extra@8.1.0: + /fs-extra@8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} dependencies: graceful-fs: 4.2.11 jsonfile: 4.0.0 universalify: 0.1.2 + dev: true - fs-minipass@2.1.0: + /fs-minipass@2.1.0: + resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} + engines: {node: '>= 8'} dependencies: minipass: 3.3.6 + dev: false - fs.realpath@1.0.0: {} + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - fsevents@2.3.3: + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true optional: true - function-bind@1.1.1: {} + /function-bind@1.1.1: + resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} + dev: true - function.prototype.name@1.1.5: + /function.prototype.name@1.1.5: + resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.1.4 es-abstract: 1.20.5 functions-have-names: 1.2.3 + dev: true - functional-red-black-tree@1.0.1: {} + /functional-red-black-tree@1.0.1: + resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==} + dev: true - functions-have-names@1.2.3: {} + /functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + dev: true - gauge@4.0.4: + /gauge@4.0.4: + resolution: {integrity: sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} dependencies: aproba: 2.0.0 color-support: 1.1.3 @@ -11802,39 +8227,69 @@ snapshots: string-width: 4.2.3 strip-ansi: 6.0.1 wide-align: 1.1.5 + dev: false - gensync@1.0.0-beta.2: {} + /gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + dev: true - get-caller-file@2.0.5: {} + /get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} - get-func-name@2.0.2: {} + /get-func-name@2.0.2: + resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} + dev: true - get-intrinsic@1.1.3: + /get-intrinsic@1.1.3: + resolution: {integrity: sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==} dependencies: function-bind: 1.1.1 has: 1.0.3 has-symbols: 1.0.3 + dev: true - get-own-enumerable-property-symbols@3.0.2: {} + /get-own-enumerable-property-symbols@3.0.2: + resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==} + dev: true - get-package-type@0.1.0: {} + /get-package-type@0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + dev: true - get-port@6.1.2: {} + /get-port@6.1.2: + resolution: {integrity: sha512-BrGGraKm2uPqurfGVj/z97/zv8dPleC6x9JBNRTrDNtCkkRF4rPwrQXFgL7+I+q8QSdU4ntLQX2D7KIxSy8nGw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true - get-stream@5.2.0: + /get-stream@5.2.0: + resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} + engines: {node: '>=8'} dependencies: pump: 3.0.0 + dev: true - get-stream@6.0.1: {} + /get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} - get-symbol-description@1.0.0: + /get-symbol-description@1.0.0: + resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 get-intrinsic: 1.1.3 + dev: true - get-tsconfig@4.5.0: {} + /get-tsconfig@4.5.0: + resolution: {integrity: sha512-MjhiaIWCJ1sAU4pIQ5i5OfOuHHxVo1oYeNsWTON7jxYkod8pHocXeh+SSbmu5OZZZK73B6cbJ2XADzXehLyovQ==} + dev: true - gitconfig@2.0.8: + /gitconfig@2.0.8: + resolution: {integrity: sha512-qOB1QswIHFNKAOPN0pEu7U1iyajLBv3Tz5X630UlkAtKM904I4dO7XIjH84wmR2SUVAgaVR99UC9U4ABJujAJQ==} + engines: {node: '>=6', npm: '>=3'} dependencies: argx: 3.0.2 arrayreduce: 2.1.0 @@ -11843,18 +8298,27 @@ snapshots: execcli: 5.0.6 lodash.get: 4.4.2 objnest: 5.1.1 + dev: false - github-from-package@0.0.0: {} + /github-from-package@0.0.0: + resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} + dev: false - glob-parent@5.1.2: + /glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} dependencies: is-glob: 4.0.3 - glob-parent@6.0.2: + /glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} dependencies: is-glob: 4.0.3 + dev: true - glob@7.1.6: + /glob@7.1.6: + resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -11862,8 +8326,10 @@ snapshots: minimatch: 3.1.2 once: 1.4.0 path-is-absolute: 1.0.1 + dev: true - glob@7.2.0: + /glob@7.2.0: + resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==} dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -11871,8 +8337,10 @@ snapshots: minimatch: 3.1.2 once: 1.4.0 path-is-absolute: 1.0.1 + dev: true - glob@7.2.3: + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -11881,7 +8349,9 @@ snapshots: once: 1.4.0 path-is-absolute: 1.0.1 - glob@8.0.3: + /glob@8.0.3: + resolution: {integrity: sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==} + engines: {node: '>=12'} dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -11889,21 +8359,32 @@ snapshots: minimatch: 5.1.6 once: 1.4.0 - glob@8.1.0: + /glob@8.1.0: + resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} + engines: {node: '>=12'} dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 inherits: 2.0.4 minimatch: 5.1.6 once: 1.4.0 + dev: true - globals@11.12.0: {} + /globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + dev: true - globals@13.20.0: + /globals@13.20.0: + resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} + engines: {node: '>=8'} dependencies: type-fest: 0.20.2 + dev: true - globby@11.1.0: + /globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} dependencies: array-union: 2.1.0 dir-glob: 3.0.1 @@ -11912,19 +8393,32 @@ snapshots: merge2: 1.4.1 slash: 3.0.0 - google-protobuf@3.21.2: {} + /google-protobuf@3.21.2: + resolution: {integrity: sha512-3MSOYFO5U9mPGikIYCzK0SaThypfGgS6bHqrUGXG3DPHCrb+txNqeEcns1W0lkGfk0rCyNXm7xB9rMxnCiZOoA==} + dev: false - gopd@1.0.1: + /gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: get-intrinsic: 1.1.3 + dev: true - graceful-fs@4.2.11: {} + /graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + requiresBuild: true - grapheme-splitter@1.0.4: {} + /grapheme-splitter@1.0.4: + resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} + dev: true - graphemer@1.4.0: {} + /graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + dev: true - handlebars@4.7.7: + /handlebars@4.7.7: + resolution: {integrity: sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==} + engines: {node: '>=0.4.7'} + hasBin: true dependencies: minimist: 1.2.8 neo-async: 2.6.2 @@ -11932,10 +8426,24 @@ snapshots: wordwrap: 1.0.0 optionalDependencies: uglify-js: 3.17.4 + dev: false - hard-rejection@2.1.0: {} + /hard-rejection@2.1.0: + resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} + engines: {node: '>=6'} + dev: true - hardhat@2.22.0(typescript@5.4.2): + /hardhat@2.22.0(typescript@5.4.2): + resolution: {integrity: sha512-t1J+ThxNYANL6ub6yM5XC84RY38vhfG7ODBtVRNQFQozdALo3qZUjxDzyGQU0U0eswe6orK49hq9UpdB7nPXNQ==} + hasBin: true + peerDependencies: + ts-node: '*' + typescript: '*' + peerDependenciesMeta: + ts-node: + optional: true + typescript: + optional: true dependencies: '@ethersproject/abi': 5.7.0 '@metamask/eth-sig-util': 4.0.1 @@ -11977,90 +8485,139 @@ snapshots: source-map-support: 0.5.21 stacktrace-parser: 0.1.10 tsort: 0.0.1 + typescript: 5.4.2 undici: 5.28.3 uuid: 8.3.2 ws: 7.4.6 - optionalDependencies: - typescript: 5.4.2 transitivePeerDependencies: - bufferutil - c-kzg - supports-color - utf-8-validate + dev: true - has-ansi@2.0.0: + /has-ansi@2.0.0: + resolution: {integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==} + engines: {node: '>=0.10.0'} dependencies: ansi-regex: 2.1.1 + dev: true - has-bigints@1.0.2: {} + /has-bigints@1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + dev: true - has-flag@3.0.0: {} + /has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + dev: true - has-flag@4.0.0: {} + /has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} - has-property-descriptors@1.0.0: + /has-property-descriptors@1.0.0: + resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} dependencies: get-intrinsic: 1.1.3 + dev: true - has-symbols@1.0.3: {} + /has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} - has-tostringtag@1.0.0: + /has-tostringtag@1.0.0: + resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} + engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 - has-unicode@2.0.1: {} + /has-unicode@2.0.1: + resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} + dev: false - has@1.0.3: + /has@1.0.3: + resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} + engines: {node: '>= 0.4.0'} dependencies: function-bind: 1.1.1 + dev: true - hasbin@1.2.3: + /hasbin@1.2.3: + resolution: {integrity: sha512-CCd8e/w2w28G8DyZvKgiHnQJ/5XXDz6qiUHnthvtag/6T5acUeN5lqq+HMoBqcmgWueWDhiCplrw0Kb1zDACRg==} + engines: {node: '>=0.10'} dependencies: async: 1.5.2 + dev: false - hash-base@3.1.0: + /hash-base@3.1.0: + resolution: {integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==} + engines: {node: '>=4'} dependencies: inherits: 2.0.4 readable-stream: 3.6.0 safe-buffer: 5.2.1 + dev: true - hash.js@1.1.7: + /hash.js@1.1.7: + resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} dependencies: inherits: 2.0.4 minimalistic-assert: 1.0.1 - he@1.2.0: {} + /he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + dev: true - hmac-drbg@1.0.1: + /hmac-drbg@1.0.1: + resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} dependencies: hash.js: 1.1.7 minimalistic-assert: 1.0.1 minimalistic-crypto-utils: 1.0.1 - hosted-git-info@2.8.9: {} + /hosted-git-info@2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + dev: true - html-encoding-sniffer@3.0.0: + /html-encoding-sniffer@3.0.0: + resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} + engines: {node: '>=12'} dependencies: whatwg-encoding: 2.0.0 + dev: true - html-escaper@2.0.2: {} + /html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + dev: true - http-assert@1.5.0: + /http-assert@1.5.0: + resolution: {integrity: sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==} + engines: {node: '>= 0.8'} dependencies: deep-equal: 1.0.1 http-errors: 1.8.1 + dev: false - http-cache-semantics@4.1.1: {} + /http-cache-semantics@4.1.1: + resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} + dev: false - http-errors@1.8.1: + /http-errors@1.8.1: + resolution: {integrity: sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==} + engines: {node: '>= 0.6'} dependencies: depd: 1.1.2 inherits: 2.0.4 setprototypeof: 1.2.0 statuses: 1.5.0 toidentifier: 1.0.1 + dev: false - http-errors@2.0.0: + /http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} dependencies: depd: 2.0.0 inherits: 2.0.4 @@ -12068,7 +8625,9 @@ snapshots: statuses: 2.0.1 toidentifier: 1.0.1 - http-proxy-agent@5.0.0: + /http-proxy-agent@5.0.0: + resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} + engines: {node: '>= 6'} dependencies: '@tootallnate/once': 2.0.0 agent-base: 6.0.2 @@ -12076,92 +8635,158 @@ snapshots: transitivePeerDependencies: - supports-color - http-proxy@1.18.1(debug@4.3.4): + /http-proxy@1.18.1(debug@4.3.4): + resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} + engines: {node: '>=8.0.0'} dependencies: eventemitter3: 4.0.7 follow-redirects: 1.15.2(debug@4.3.4) requires-port: 1.0.0 transitivePeerDependencies: - debug + dev: true - https-proxy-agent@5.0.1: + /https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} dependencies: agent-base: 6.0.2 debug: 4.3.4(supports-color@8.1.1) transitivePeerDependencies: - supports-color - human-id@1.0.2: {} + /human-id@1.0.2: + resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} + dev: true - human-signals@1.1.1: {} + /human-signals@1.1.1: + resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==} + engines: {node: '>=8.12.0'} + dev: true - human-signals@2.1.0: {} + /human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} - human-signals@4.3.1: {} + /human-signals@4.3.1: + resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} + engines: {node: '>=14.18.0'} + dev: true - humanize-ms@1.2.1: + /humanize-ms@1.2.1: + resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} dependencies: ms: 2.1.3 + dev: false - husky@6.0.0: {} + /husky@6.0.0: + resolution: {integrity: sha512-SQS2gDTB7tBN486QSoKPKQItZw97BMOd+Kdb6ghfpBc0yXyzrddI0oDV5MkDAbuB4X2mO3/nj60TRMcYxwzZeQ==} + hasBin: true + dev: true - iconv-lite@0.4.24: + /iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} dependencies: safer-buffer: 2.1.2 - iconv-lite@0.6.3: + /iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} dependencies: safer-buffer: 2.1.2 - ieee754@1.2.1: {} + /ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + dev: false - iftype@3.0.2: + /iftype@3.0.2: + resolution: {integrity: sha512-vA/NSyCG3E7XXWC1hmbEDj8WvsduSzLblmj4m2Idywx8YC6CKqGTYzrnoxbMrC+qBcHz85P7uwBwYEY2rX1jvQ==} + engines: {node: '>=4', npm: '>=2'} dependencies: babel-runtime: 6.26.0 + dev: false - iftype@4.0.9: {} + /iftype@4.0.9: + resolution: {integrity: sha512-01Klo+04dkDzY193D1GVfOdQzmpqaYFJTAlZKRztkT/BOaU7sSnvxGimSln+7DMqLUP4tpDTNFgxqVPLYZVypA==} + engines: {node: '>=8', npm: '>=5'} + dev: false - ignore@4.0.6: {} + /ignore@4.0.6: + resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} + engines: {node: '>= 4'} + dev: true - ignore@5.2.4: {} + /ignore@5.2.4: + resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} + engines: {node: '>= 4'} - immutable@4.3.5: {} + /immutable@4.3.5: + resolution: {integrity: sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==} + dev: true - import-fresh@2.0.0: + /import-fresh@2.0.0: + resolution: {integrity: sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==} + engines: {node: '>=4'} dependencies: caller-path: 2.0.0 resolve-from: 3.0.0 + dev: true - import-fresh@3.3.0: + /import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 + dev: true - import-local@3.1.0: + /import-local@3.1.0: + resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} + engines: {node: '>=8'} + hasBin: true dependencies: pkg-dir: 4.2.0 resolve-cwd: 3.0.0 + dev: true - imurmurhash@0.1.4: {} + /imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} - indent-string@3.2.0: {} + /indent-string@3.2.0: + resolution: {integrity: sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ==} + engines: {node: '>=4'} + dev: true - indent-string@4.0.0: {} + /indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} - infer-owner@1.0.4: {} + /infer-owner@1.0.4: + resolution: {integrity: sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==} + dev: false - inflight@1.0.6: + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} dependencies: once: 1.4.0 wrappy: 1.0.2 - inherits@2.0.3: {} + /inherits@2.0.3: + resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} + dev: false - inherits@2.0.4: {} + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - ini@1.3.8: {} + /ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + dev: false - inquirer@6.5.2: + /inquirer@6.5.2: + resolution: {integrity: sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==} + engines: {node: '>=6.0.0'} dependencies: ansi-escapes: 3.2.0 chalk: 2.4.2 @@ -12176,8 +8801,11 @@ snapshots: string-width: 2.1.1 strip-ansi: 5.2.0 through: 2.3.8 + dev: true - inquirer@7.3.3: + /inquirer@7.3.3: + resolution: {integrity: sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==} + engines: {node: '>=8.0.0'} dependencies: ansi-escapes: 4.3.2 chalk: 4.1.2 @@ -12192,198 +8820,351 @@ snapshots: string-width: 4.2.3 strip-ansi: 6.0.1 through: 2.3.8 + dev: false - internal-slot@1.0.3: + /internal-slot@1.0.3: + resolution: {integrity: sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==} + engines: {node: '>= 0.4'} dependencies: get-intrinsic: 1.1.3 has: 1.0.3 side-channel: 1.0.4 + dev: true - into-stream@6.0.0: + /into-stream@6.0.0: + resolution: {integrity: sha512-XHbaOAvP+uFKUFsOgoNPRjLkwB+I22JFPFe5OjTkQ0nwgj6+pSjb4NmB6VMxaPshLiOf+zcpOCBQuLwC1KHhZA==} + engines: {node: '>=10'} dependencies: from2: 2.3.0 p-is-promise: 3.0.0 + dev: false - io-ts@1.10.4: + /io-ts@1.10.4: + resolution: {integrity: sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g==} dependencies: fp-ts: 1.19.3 + dev: true - ip@2.0.0: {} + /ip@2.0.0: + resolution: {integrity: sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==} + dev: false - ipaddr.js@1.9.1: {} + /ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + dev: false - is-arrayish@0.2.1: {} + /is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + dev: true - is-bigint@1.0.4: + /is-bigint@1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} dependencies: has-bigints: 1.0.2 + dev: true - is-binary-path@2.1.0: + /is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} dependencies: binary-extensions: 2.2.0 - is-boolean-object@1.1.2: + /is-boolean-object@1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 has-tostringtag: 1.0.0 + dev: true - is-callable@1.2.7: {} + /is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + dev: true - is-ci@3.0.1: + /is-ci@3.0.1: + resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} + hasBin: true dependencies: ci-info: 3.8.0 + dev: true - is-core-module@2.12.0: + /is-core-module@2.12.0: + resolution: {integrity: sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==} dependencies: has: 1.0.3 + dev: true - is-date-object@1.0.5: + /is-date-object@1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 + dev: true - is-directory@0.3.1: {} + /is-directory@0.3.1: + resolution: {integrity: sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==} + engines: {node: '>=0.10.0'} + dev: true - is-extglob@2.1.1: {} + /is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} - is-fullwidth-code-point@1.0.0: + /is-fullwidth-code-point@1.0.0: + resolution: {integrity: sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==} + engines: {node: '>=0.10.0'} dependencies: number-is-nan: 1.0.1 + dev: true - is-fullwidth-code-point@2.0.0: {} + /is-fullwidth-code-point@2.0.0: + resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} + engines: {node: '>=4'} - is-fullwidth-code-point@3.0.0: {} + /is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} - is-generator-fn@2.1.0: {} + /is-generator-fn@2.1.0: + resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} + engines: {node: '>=6'} + dev: true - is-generator-function@1.0.10: + /is-generator-function@1.0.10: + resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 + dev: false - is-glob@4.0.3: + /is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} dependencies: is-extglob: 2.1.1 - is-hex-prefixed@1.0.0: {} + /is-hex-prefixed@1.0.0: + resolution: {integrity: sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==} + engines: {node: '>=6.5.0', npm: '>=3'} + dev: true - is-lambda@1.0.1: {} + /is-lambda@1.0.1: + resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} + dev: false - is-negative-zero@2.0.2: {} + /is-negative-zero@2.0.2: + resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} + engines: {node: '>= 0.4'} + dev: true - is-number-object@1.0.7: + /is-number-object@1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 + dev: true - is-number@7.0.0: {} + /is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} - is-obj@1.0.1: {} + /is-obj@1.0.1: + resolution: {integrity: sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==} + engines: {node: '>=0.10.0'} + dev: true - is-observable@1.1.0: + /is-observable@1.1.0: + resolution: {integrity: sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==} + engines: {node: '>=4'} dependencies: symbol-observable: 1.2.0 + dev: true - is-path-inside@3.0.3: {} + /is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + dev: true - is-plain-obj@1.1.0: {} + /is-plain-obj@1.1.0: + resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} + engines: {node: '>=0.10.0'} + dev: true - is-plain-obj@2.1.0: {} + /is-plain-obj@2.1.0: + resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} + engines: {node: '>=8'} + dev: true - is-potential-custom-element-name@1.0.1: {} + /is-potential-custom-element-name@1.0.1: + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + dev: true - is-promise@2.2.2: {} + /is-promise@2.2.2: + resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} - is-regex@1.1.4: + /is-regex@1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 has-tostringtag: 1.0.0 + dev: true - is-regexp@1.0.0: {} + /is-regexp@1.0.0: + resolution: {integrity: sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==} + engines: {node: '>=0.10.0'} + dev: true - is-shared-array-buffer@1.0.2: + /is-shared-array-buffer@1.0.2: + resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} dependencies: call-bind: 1.0.2 + dev: true - is-stream@1.1.0: {} + /is-stream@1.1.0: + resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} + engines: {node: '>=0.10.0'} + dev: true - is-stream@2.0.1: {} + /is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} - is-stream@3.0.0: {} + /is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true - is-string@1.0.7: + /is-string@1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 + dev: true - is-subdir@1.2.0: + /is-subdir@1.2.0: + resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} + engines: {node: '>=4'} dependencies: better-path-resolve: 1.0.0 + dev: true - is-symbol@1.0.4: + /is-symbol@1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 + dev: true - is-unicode-supported@0.1.0: {} + /is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + dev: true - is-utf8@0.2.1: {} + /is-utf8@0.2.1: + resolution: {integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==} + dev: false - is-weakref@1.0.2: + /is-weakref@1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: call-bind: 1.0.2 + dev: true - is-what@4.1.15: {} + /is-what@4.1.15: + resolution: {integrity: sha512-uKua1wfy3Yt+YqsD6mTUEa2zSi3G1oPlqTflgaPJ7z63vUGN5pxFpnQfeSLMFnJDEsdvOtkp1rUWkYjB4YfhgA==} + engines: {node: '>=12.13'} + dev: false - is-windows@1.0.2: {} + /is-windows@1.0.2: + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} + engines: {node: '>=0.10.0'} + dev: true - isarray@1.0.0: {} + /isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + dev: false - isexe@2.0.0: {} + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - isows@1.0.3(ws@8.13.0): + /isows@1.0.3(ws@8.13.0): + resolution: {integrity: sha512-2cKei4vlmg2cxEjm3wVSqn8pcoRF/LX/wpifuuNquFO4SQmPwarClT+SUCA2lt+l581tTeZIPIZuIDo2jWN1fg==} + peerDependencies: + ws: '*' dependencies: ws: 8.13.0 + dev: false - istanbul-lib-coverage@3.2.0: {} + /istanbul-lib-coverage@3.2.0: + resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} + engines: {node: '>=8'} + dev: true - istanbul-lib-instrument@5.2.1: + /istanbul-lib-instrument@5.2.1: + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} + engines: {node: '>=8'} dependencies: '@babel/core': 7.21.4 '@babel/parser': 7.21.4 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 - semver: 6.3.0 + semver: 6.3.1 transitivePeerDependencies: - supports-color + dev: true - istanbul-lib-report@3.0.0: + /istanbul-lib-report@3.0.0: + resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} + engines: {node: '>=8'} dependencies: istanbul-lib-coverage: 3.2.0 make-dir: 3.1.0 supports-color: 7.2.0 + dev: true - istanbul-lib-source-maps@4.0.1: + /istanbul-lib-source-maps@4.0.1: + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + engines: {node: '>=10'} dependencies: debug: 4.3.4(supports-color@8.1.1) istanbul-lib-coverage: 3.2.0 source-map: 0.6.1 transitivePeerDependencies: - supports-color + dev: true - istanbul-reports@3.1.5: + /istanbul-reports@3.1.5: + resolution: {integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==} + engines: {node: '>=8'} dependencies: html-escaper: 2.0.2 istanbul-lib-report: 3.0.0 + dev: true - jake@10.8.5: + /jake@10.8.5: + resolution: {integrity: sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==} + engines: {node: '>=10'} + hasBin: true dependencies: async: 3.2.4 chalk: 4.1.2 filelist: 1.0.4 minimatch: 3.1.2 - jest-changed-files@29.5.0: + /jest-changed-files@29.5.0: + resolution: {integrity: sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: execa: 5.1.1 p-limit: 3.1.0 + dev: true - jest-circus@29.5.0: + /jest-circus@29.5.0: + resolution: {integrity: sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/environment': 29.5.0 '@jest/expect': 29.5.0 @@ -12407,8 +9188,17 @@ snapshots: stack-utils: 2.0.6 transitivePeerDependencies: - supports-color + dev: true - jest-cli@29.5.0(@types/node@18.15.11): + /jest-cli@29.5.0(@types/node@18.15.11): + resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true dependencies: '@jest/core': 29.5.0 '@jest/test-result': 29.5.0 @@ -12426,12 +9216,24 @@ snapshots: - '@types/node' - supports-color - ts-node + dev: true - jest-config@29.5.0(@types/node@18.15.11): + /jest-config@29.5.0(@types/node@18.15.11): + resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true dependencies: '@babel/core': 7.21.4 '@jest/test-sequencer': 29.5.0 '@jest/types': 29.5.0 + '@types/node': 18.15.11 babel-jest: 29.5.0(@babel/core@7.21.4) chalk: 4.1.2 ci-info: 3.8.0 @@ -12451,38 +9253,51 @@ snapshots: pretty-format: 29.5.0 slash: 3.0.0 strip-json-comments: 3.1.1 - optionalDependencies: - '@types/node': 18.15.11 transitivePeerDependencies: - supports-color + dev: true - jest-diff@27.5.1: + /jest-diff@27.5.1: + resolution: {integrity: sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: chalk: 4.1.2 diff-sequences: 27.5.1 jest-get-type: 27.5.1 pretty-format: 27.5.1 + dev: true - jest-diff@29.5.0: + /jest-diff@29.5.0: + resolution: {integrity: sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 diff-sequences: 29.6.3 jest-get-type: 29.4.3 pretty-format: 29.5.0 + dev: true - jest-docblock@29.4.3: + /jest-docblock@29.4.3: + resolution: {integrity: sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: detect-newline: 3.1.0 + dev: true - jest-each@29.5.0: + /jest-each@29.5.0: + resolution: {integrity: sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.5.0 chalk: 4.1.2 jest-get-type: 29.4.3 jest-util: 29.5.0 pretty-format: 29.5.0 + dev: true - jest-environment-node@29.5.0: + /jest-environment-node@29.5.0: + resolution: {integrity: sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/environment': 29.5.0 '@jest/fake-timers': 29.5.0 @@ -12490,12 +9305,21 @@ snapshots: '@types/node': 18.15.11 jest-mock: 29.5.0 jest-util: 29.5.0 + dev: true - jest-get-type@27.5.1: {} + /jest-get-type@27.5.1: + resolution: {integrity: sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dev: true - jest-get-type@29.4.3: {} + /jest-get-type@29.4.3: + resolution: {integrity: sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true - jest-haste-map@29.5.0: + /jest-haste-map@29.5.0: + resolution: {integrity: sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.5.0 '@types/graceful-fs': 4.1.6 @@ -12510,27 +9334,39 @@ snapshots: walker: 1.0.8 optionalDependencies: fsevents: 2.3.3 + dev: true - jest-leak-detector@29.5.0: + /jest-leak-detector@29.5.0: + resolution: {integrity: sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: jest-get-type: 29.4.3 pretty-format: 29.5.0 + dev: true - jest-matcher-utils@27.5.1: + /jest-matcher-utils@27.5.1: + resolution: {integrity: sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: chalk: 4.1.2 jest-diff: 27.5.1 jest-get-type: 27.5.1 pretty-format: 27.5.1 + dev: true - jest-matcher-utils@29.5.0: + /jest-matcher-utils@29.5.0: + resolution: {integrity: sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 jest-diff: 29.5.0 jest-get-type: 29.4.3 pretty-format: 29.5.0 + dev: true - jest-message-util@29.5.0: + /jest-message-util@29.5.0: + resolution: {integrity: sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/code-frame': 7.21.4 '@jest/types': 29.5.0 @@ -12541,27 +9377,47 @@ snapshots: pretty-format: 29.5.0 slash: 3.0.0 stack-utils: 2.0.6 + dev: true - jest-mock@29.5.0: + /jest-mock@29.5.0: + resolution: {integrity: sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.5.0 '@types/node': 18.15.11 jest-util: 29.5.0 + dev: true - jest-pnp-resolver@1.2.3(jest-resolve@29.5.0): - optionalDependencies: + /jest-pnp-resolver@1.2.3(jest-resolve@29.5.0): + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} + engines: {node: '>=6'} + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true + dependencies: jest-resolve: 29.5.0 + dev: true - jest-regex-util@29.4.3: {} + /jest-regex-util@29.4.3: + resolution: {integrity: sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true - jest-resolve-dependencies@29.5.0: + /jest-resolve-dependencies@29.5.0: + resolution: {integrity: sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: jest-regex-util: 29.4.3 jest-snapshot: 29.5.0 transitivePeerDependencies: - supports-color + dev: true - jest-resolve@29.5.0: + /jest-resolve@29.5.0: + resolution: {integrity: sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 graceful-fs: 4.2.11 @@ -12572,8 +9428,11 @@ snapshots: resolve: 1.22.2 resolve.exports: 2.0.2 slash: 3.0.0 + dev: true - jest-runner@29.5.0: + /jest-runner@29.5.0: + resolution: {integrity: sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/console': 29.5.0 '@jest/environment': 29.5.0 @@ -12598,8 +9457,11 @@ snapshots: source-map-support: 0.5.13 transitivePeerDependencies: - supports-color + dev: true - jest-runtime@29.5.0: + /jest-runtime@29.5.0: + resolution: {integrity: sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/environment': 29.5.0 '@jest/fake-timers': 29.5.0 @@ -12625,8 +9487,11 @@ snapshots: strip-bom: 4.0.0 transitivePeerDependencies: - supports-color + dev: true - jest-snapshot@29.5.0: + /jest-snapshot@29.5.0: + resolution: {integrity: sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/core': 7.21.4 '@babel/generator': 7.21.4 @@ -12653,8 +9518,11 @@ snapshots: semver: 7.6.0 transitivePeerDependencies: - supports-color + dev: true - jest-util@29.5.0: + /jest-util@29.5.0: + resolution: {integrity: sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.5.0 '@types/node': 18.15.11 @@ -12662,8 +9530,11 @@ snapshots: ci-info: 3.8.0 graceful-fs: 4.2.11 picomatch: 2.3.1 + dev: true - jest-validate@29.5.0: + /jest-validate@29.5.0: + resolution: {integrity: sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.5.0 camelcase: 6.3.0 @@ -12671,8 +9542,11 @@ snapshots: jest-get-type: 29.4.3 leven: 3.1.0 pretty-format: 29.5.0 + dev: true - jest-watcher@29.5.0: + /jest-watcher@29.5.0: + resolution: {integrity: sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/test-result': 29.5.0 '@jest/types': 29.5.0 @@ -12682,15 +9556,27 @@ snapshots: emittery: 0.13.1 jest-util: 29.5.0 string-length: 4.0.2 + dev: true - jest-worker@29.5.0: + /jest-worker@29.5.0: + resolution: {integrity: sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@types/node': 18.15.11 jest-util: 29.5.0 merge-stream: 2.0.0 supports-color: 8.1.1 + dev: true - jest@29.5.0(@types/node@18.15.11): + /jest@29.5.0(@types/node@18.15.11): + resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true dependencies: '@jest/core': 29.5.0 '@jest/types': 29.5.0 @@ -12700,27 +9586,51 @@ snapshots: - '@types/node' - supports-color - ts-node + dev: true - jiti@1.18.2: {} + /jiti@1.18.2: + resolution: {integrity: sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==} + hasBin: true + dev: true - joycon@3.1.1: {} + /joycon@3.1.1: + resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} + engines: {node: '>=10'} + dev: true - js-base64@3.7.5: {} + /js-base64@3.7.5: + resolution: {integrity: sha512-3MEt5DTINKqfScXKfJFrRbxkrnk2AxPWGBL/ycjz4dK8iqiSJ06UxD8jh8xuh6p10TX4t2+7FsBYVxxQbMg+qA==} + dev: false - js-sha3@0.8.0: {} + /js-sha3@0.8.0: + resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} - js-tokens@4.0.0: {} + /js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - js-yaml@3.14.1: + /js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true dependencies: argparse: 1.0.10 esprima: 4.0.1 + dev: true - js-yaml@4.1.0: + /js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true dependencies: argparse: 2.0.1 + dev: true - jsdom@22.1.0: + /jsdom@22.1.0: + resolution: {integrity: sha512-/9AVW7xNbsBv6GfWho4TTNjEo9fe6Zhf9O7s0Fhhr3u+awPwAJMKwAMXnkk5vBxflqLW9hTHX/0cs+P3gW+cQw==} + engines: {node: '>=16'} + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true dependencies: abab: 2.0.6 cssstyle: 3.0.0 @@ -12749,75 +9659,140 @@ snapshots: - bufferutil - supports-color - utf-8-validate + dev: true - jsesc@2.5.2: {} + /jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + dev: true - json-parse-better-errors@1.0.2: {} + /json-parse-better-errors@1.0.2: + resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} + dev: true - json-parse-even-better-errors@2.3.1: {} + /json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + dev: true - json-schema-traverse@0.4.1: {} + /json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + dev: true - json-schema-traverse@1.0.0: {} + /json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + dev: false - json-stable-stringify-without-jsonify@1.0.1: {} + /json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + dev: true - json5@2.2.3: {} + /json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + dev: true - jsonc-parser@3.2.0: {} + /jsonc-parser@3.2.0: + resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} + dev: true - jsonfile@2.4.0: + /jsonfile@2.4.0: + resolution: {integrity: sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==} optionalDependencies: graceful-fs: 4.2.11 + dev: true - jsonfile@4.0.0: + /jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} optionalDependencies: graceful-fs: 4.2.11 + dev: true - jsonparse@1.3.1: {} + /jsonparse@1.3.1: + resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} + engines: {'0': node >= 0.2.0} + dev: true - jsonstream-next@3.0.0: + /jsonstream-next@3.0.0: + resolution: {integrity: sha512-aAi6oPhdt7BKyQn1SrIIGZBt0ukKuOUE1qV6kJ3GgioSOYzsRc8z9Hfr1BVmacA/jLe9nARfmgMGgn68BqIAgg==} + engines: {node: '>=10'} + hasBin: true dependencies: jsonparse: 1.3.1 through2: 4.0.2 + dev: true - jsx-ast-utils@3.3.3: + /jsx-ast-utils@3.3.3: + resolution: {integrity: sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==} + engines: {node: '>=4.0'} dependencies: array-includes: 3.1.6 object.assign: 4.1.4 + dev: true - keccak-wasm@0.10.3(buffer-lite@1.1.0): + /keccak-wasm@0.10.3(buffer-lite@1.1.0): + resolution: {integrity: sha512-HMbeV9BX+hGmrPk5C1PdZBPAGIAVyGzKywQt4OnU9cG+7sI1/moZmH7DXRd3XQBhR6z04LdMXkA15roVINmMsA==} + requiresBuild: true + peerDependencies: + buffer-lite: ^1.0.0 dependencies: buffer-lite: 1.1.0 + dev: true - keccak@3.0.4: + /keccak@3.0.4: + resolution: {integrity: sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==} + engines: {node: '>=10.0.0'} + requiresBuild: true dependencies: node-addon-api: 2.0.2 node-gyp-build: 4.8.0 readable-stream: 3.6.0 + dev: true - keygrip@1.1.0: + /keygrip@1.1.0: + resolution: {integrity: sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==} + engines: {node: '>= 0.6'} dependencies: tsscmp: 1.0.6 + dev: false - kind-of@6.0.3: {} + /kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + dev: true - klaw@1.3.1: + /klaw@1.3.1: + resolution: {integrity: sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==} optionalDependencies: graceful-fs: 4.2.11 + dev: true - kleur@3.0.3: {} + /kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + dev: true - kleur@4.1.5: {} + /kleur@4.1.5: + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} + engines: {node: '>=6'} + dev: true - koa-compose@4.1.0: {} + /koa-compose@4.1.0: + resolution: {integrity: sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==} + dev: false - koa-convert@2.0.0: + /koa-convert@2.0.0: + resolution: {integrity: sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA==} + engines: {node: '>= 10'} dependencies: co: 4.6.0 koa-compose: 4.1.0 + dev: false - koa@2.14.2: + /koa@2.14.2: + resolution: {integrity: sha512-VFI2bpJaodz6P7x2uyLiX6RLYpZmOJqNmoCst/Yyd7hQlszyPwG/I9CQJ63nOtKSxpt5M7NH67V6nJL2BwCl7g==} + engines: {node: ^4.8.4 || ^6.10.1 || ^7.10.1 || >= 8.1.4} dependencies: accepts: 1.3.8 cache-content-type: 1.0.1 @@ -12844,36 +9819,61 @@ snapshots: vary: 1.1.2 transitivePeerDependencies: - supports-color + dev: false - kysely@0.26.3: {} + /kysely@0.26.3: + resolution: {integrity: sha512-yWSgGi9bY13b/W06DD2OCDDHQmq1kwTGYlQ4wpZkMOJqMGCstVCFIvxCCVG4KfY1/3G0MhDAcZsip/Lw8/vJWw==} + engines: {node: '>=14.0.0'} + dev: false - leven@3.1.0: {} + /leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + dev: true - levn@0.3.0: + /levn@0.3.0: + resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} + engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.1.2 type-check: 0.3.2 + dev: true - levn@0.4.1: + /levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.2.1 type-check: 0.4.0 + dev: true - license.js@3.1.2: + /license.js@3.1.2: + resolution: {integrity: sha512-anbqciJ9HfQVMRicsegiZOJ6nrP93ly24alImDOO7KndNLs3Um861fSEpXpWqGPMOv7PfZTJZL1p4cPq+Au4BQ==} + engines: {node: '>=8.0.0'} dependencies: pify: 3.0.0 + dev: false - light-my-request@5.10.0: + /light-my-request@5.10.0: + resolution: {integrity: sha512-ZU2D9GmAcOUculTTdH9/zryej6n8TzT+fNGdNtm6SDp5MMMpHrJJkvAdE3c6d8d2chE9i+a//dS9CWZtisknqA==} dependencies: cookie: 0.5.0 process-warning: 2.2.0 set-cookie-parser: 2.6.0 + dev: false - lilconfig@2.1.0: {} + /lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + dev: true - lines-and-columns@1.2.4: {} + /lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + dev: true - lint-staged@10.0.0: + /lint-staged@10.0.0: + resolution: {integrity: sha512-/MrZOLMnljjMHakxlRd1Z5Kr8wWWlrWFasye7HaTv5tx56icwzT/STRty8flMKsyzBGTfTa9QszNVPsDS/yOug==} + hasBin: true dependencies: chalk: 3.0.0 commander: 4.1.1 @@ -12891,10 +9891,18 @@ snapshots: - supports-color - zen-observable - zenObservable + dev: true - listr-silent-renderer@1.1.1: {} + /listr-silent-renderer@1.1.1: + resolution: {integrity: sha512-L26cIFm7/oZeSNVhWB6faeorXhMg4HNlb/dS/7jHhr708jxlXrtrBWo4YUxZQkc6dGoxEAe6J/D3juTRBUzjtA==} + engines: {node: '>=4'} + dev: true - listr-update-renderer@0.5.0(listr@0.14.3): + /listr-update-renderer@0.5.0(listr@0.14.3): + resolution: {integrity: sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA==} + engines: {node: '>=6'} + peerDependencies: + listr: ^0.14.2 dependencies: chalk: 1.1.3 cli-truncate: 0.2.1 @@ -12905,15 +9913,21 @@ snapshots: log-symbols: 1.0.2 log-update: 2.3.0 strip-ansi: 3.0.1 + dev: true - listr-verbose-renderer@0.5.0: + /listr-verbose-renderer@0.5.0: + resolution: {integrity: sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw==} + engines: {node: '>=4'} dependencies: chalk: 2.4.2 cli-cursor: 2.1.0 date-fns: 1.30.1 figures: 2.0.0 + dev: true - listr@0.14.3: + /listr@0.14.3: + resolution: {integrity: sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA==} + engines: {node: '>=6'} dependencies: '@samverschueren/stream-to-observable': 0.3.1(rxjs@6.6.7) is-observable: 1.1.0 @@ -12927,113 +9941,190 @@ snapshots: transitivePeerDependencies: - zen-observable - zenObservable + dev: true - load-tsconfig@0.2.5: {} + /load-tsconfig@0.2.5: + resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true - load-yaml-file@0.2.0: + /load-yaml-file@0.2.0: + resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} + engines: {node: '>=6'} dependencies: graceful-fs: 4.2.11 js-yaml: 3.14.1 pify: 4.0.1 strip-bom: 3.0.0 + dev: true - local-pkg@0.4.3: {} + /local-pkg@0.4.3: + resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} + engines: {node: '>=14'} + dev: true - locate-path@2.0.0: + /locate-path@2.0.0: + resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==} + engines: {node: '>=4'} dependencies: p-locate: 2.0.0 path-exists: 3.0.0 + dev: true - locate-path@3.0.0: + /locate-path@3.0.0: + resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} + engines: {node: '>=6'} dependencies: p-locate: 3.0.0 path-exists: 3.0.0 + dev: false - locate-path@5.0.0: + /locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} dependencies: p-locate: 4.1.0 + dev: true - locate-path@6.0.0: + /locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} dependencies: p-locate: 5.0.0 - lodash.get@4.4.2: {} + /lodash.get@4.4.2: + resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} + dev: false - lodash.memoize@4.1.2: {} + /lodash.memoize@4.1.2: + resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} + dev: true - lodash.merge@4.6.2: {} + /lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + dev: true - lodash.sortby@4.7.0: {} + /lodash.sortby@4.7.0: + resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} + dev: true - lodash.startcase@4.4.0: {} + /lodash.startcase@4.4.0: + resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} + dev: true - lodash.truncate@4.4.2: {} + /lodash.truncate@4.4.2: + resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} + dev: false - lodash@4.17.21: {} + /lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - log-symbols@1.0.2: + /log-symbols@1.0.2: + resolution: {integrity: sha512-mmPrW0Fh2fxOzdBbFv4g1m6pR72haFLPJ2G5SJEELf1y+iaQrDG6cWCPjy54RHYbZAt7X+ls690Kw62AdWXBzQ==} + engines: {node: '>=0.10.0'} dependencies: chalk: 1.1.3 + dev: true - log-symbols@3.0.0: + /log-symbols@3.0.0: + resolution: {integrity: sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==} + engines: {node: '>=8'} dependencies: chalk: 2.4.2 + dev: true - log-symbols@4.1.0: + /log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} dependencies: chalk: 4.1.2 is-unicode-supported: 0.1.0 + dev: true - log-update@2.3.0: + /log-update@2.3.0: + resolution: {integrity: sha512-vlP11XfFGyeNQlmEn9tJ66rEW1coA/79m5z6BCkudjbAGE83uhAcGYrBFwfs3AdLiLzGRusRPAbSPK9xZteCmg==} + engines: {node: '>=4'} dependencies: ansi-escapes: 3.2.0 cli-cursor: 2.1.0 wrap-ansi: 3.0.1 + dev: true - long@4.0.0: {} + /long@4.0.0: + resolution: {integrity: sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==} + dev: true - long@5.2.1: {} + /long@5.2.1: + resolution: {integrity: sha512-GKSNGeNAtw8IryjjkhZxuKB3JzlcLTwjtiQCHKvqQet81I93kXslhDQruGI/QsddO83mcDToBVy7GqGS/zYf/A==} - loose-envify@1.4.0: + /loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true dependencies: js-tokens: 4.0.0 - loupe@2.3.6: + /loupe@2.3.6: + resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==} + deprecated: Please upgrade to 2.3.7 which fixes GHSA-4q6p-r6v2-jvc5 dependencies: get-func-name: 2.0.2 + dev: true - lru-cache@4.1.5: + /lru-cache@4.1.5: + resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} dependencies: pseudomap: 1.0.2 yallist: 2.1.2 + dev: true - lru-cache@5.1.1: + /lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} dependencies: yallist: 3.1.1 + dev: true - lru-cache@6.0.0: + /lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} dependencies: yallist: 4.0.0 - lru-cache@7.18.3: {} + /lru-cache@7.18.3: + resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} + engines: {node: '>=12'} + dev: false - lru-queue@0.1.0: + /lru-queue@0.1.0: + resolution: {integrity: sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==} dependencies: es5-ext: 0.10.62 + dev: false - lru_map@0.3.3: {} + /lru_map@0.3.3: + resolution: {integrity: sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==} + dev: true - magic-string@0.30.5: + /magic-string@0.30.5: + resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} + engines: {node: '>=12'} dependencies: '@jridgewell/sourcemap-codec': 1.4.15 + dev: true - make-dir@3.1.0: + /make-dir@3.1.0: + resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} + engines: {node: '>=8'} dependencies: - semver: 6.3.0 + semver: 6.3.1 + dev: true - make-error@1.3.6: {} + /make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + dev: true - make-fetch-happen@10.2.1: + /make-fetch-happen@10.2.1: + resolution: {integrity: sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} dependencies: agentkeepalive: 4.5.0 cacache: 16.1.3 @@ -13054,24 +10145,39 @@ snapshots: transitivePeerDependencies: - bluebird - supports-color + dev: false - makeerror@1.0.12: + /makeerror@1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} dependencies: tmpl: 1.0.5 + dev: true - map-obj@1.0.1: {} + /map-obj@1.0.1: + resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} + engines: {node: '>=0.10.0'} + dev: true - map-obj@4.3.0: {} + /map-obj@4.3.0: + resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} + engines: {node: '>=8'} + dev: true - md5.js@1.3.5: + /md5.js@1.3.5: + resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} dependencies: hash-base: 3.1.0 inherits: 2.0.4 safe-buffer: 5.2.1 + dev: true - media-typer@0.3.0: {} + /media-typer@0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} + dev: false - memoizee@0.4.15: + /memoizee@0.4.15: + resolution: {integrity: sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==} dependencies: d: 1.0.1 es5-ext: 0.10.62 @@ -13081,10 +10187,16 @@ snapshots: lru-queue: 0.1.0 next-tick: 1.1.0 timers-ext: 0.1.7 + dev: false - memorystream@0.3.1: {} + /memorystream@0.3.1: + resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} + engines: {node: '>= 0.10.0'} + dev: true - meow@6.1.1: + /meow@6.1.1: + resolution: {integrity: sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==} + engines: {node: '>=8'} dependencies: '@types/minimist': 1.2.2 camelcase-keys: 6.2.2 @@ -13097,129 +10209,223 @@ snapshots: trim-newlines: 3.0.1 type-fest: 0.13.1 yargs-parser: 18.1.3 + dev: true - merge-stream@2.0.0: {} + /merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - merge2@1.4.1: {} + /merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} - methods@1.1.2: {} + /methods@1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} + dev: false - micro-ftch@0.3.1: {} + /micro-ftch@0.3.1: + resolution: {integrity: sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==} + dev: true - micromatch@4.0.5: + /micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} dependencies: braces: 3.0.2 picomatch: 2.3.1 - mime-db@1.52.0: {} + /mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} - mime-types@2.1.35: + /mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} dependencies: mime-db: 1.52.0 - mimic-fn@1.2.0: {} + /mimic-fn@1.2.0: + resolution: {integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==} + engines: {node: '>=4'} + dev: true - mimic-fn@2.1.0: {} + /mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} - mimic-fn@4.0.0: {} + /mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + dev: true - mimic-response@3.1.0: {} + /mimic-response@3.1.0: + resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} + engines: {node: '>=10'} + dev: false - min-indent@1.0.1: {} + /min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + dev: true - minimalistic-assert@1.0.1: {} + /minimalistic-assert@1.0.1: + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} - minimalistic-crypto-utils@1.0.1: {} + /minimalistic-crypto-utils@1.0.1: + resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} - minimatch@3.1.2: + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 - minimatch@5.0.1: + /minimatch@5.0.1: + resolution: {integrity: sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==} + engines: {node: '>=10'} dependencies: brace-expansion: 2.0.1 + dev: true - minimatch@5.1.6: + /minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} dependencies: brace-expansion: 2.0.1 - minimatch@9.0.3: + /minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} dependencies: brace-expansion: 2.0.1 + dev: true - minimist-options@4.1.0: + /minimist-options@4.1.0: + resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} + engines: {node: '>= 6'} dependencies: arrify: 1.0.1 is-plain-obj: 1.1.0 kind-of: 6.0.3 + dev: true - minimist@1.2.8: {} + /minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - minipass-collect@1.0.2: + /minipass-collect@1.0.2: + resolution: {integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==} + engines: {node: '>= 8'} dependencies: minipass: 3.3.6 + dev: false - minipass-fetch@2.1.2: + /minipass-fetch@2.1.2: + resolution: {integrity: sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} dependencies: minipass: 3.3.6 minipass-sized: 1.0.3 minizlib: 2.1.2 optionalDependencies: encoding: 0.1.13 + dev: false - minipass-flush@1.0.5: + /minipass-flush@1.0.5: + resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} + engines: {node: '>= 8'} dependencies: minipass: 3.3.6 + dev: false - minipass-pipeline@1.2.4: + /minipass-pipeline@1.2.4: + resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==} + engines: {node: '>=8'} dependencies: minipass: 3.3.6 + dev: false - minipass-sized@1.0.3: + /minipass-sized@1.0.3: + resolution: {integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==} + engines: {node: '>=8'} dependencies: minipass: 3.3.6 + dev: false - minipass@3.3.6: + /minipass@3.3.6: + resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} + engines: {node: '>=8'} dependencies: yallist: 4.0.0 + dev: false - minipass@5.0.0: {} + /minipass@5.0.0: + resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} + engines: {node: '>=8'} + dev: false - minipass@7.0.4: {} + /minipass@7.0.4: + resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} + engines: {node: '>=16 || 14 >=14.17'} + dev: false - minizlib@2.1.2: + /minizlib@2.1.2: + resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} + engines: {node: '>= 8'} dependencies: minipass: 3.3.6 yallist: 4.0.0 + dev: false - mixme@0.5.9: {} + /mixme@0.5.9: + resolution: {integrity: sha512-VC5fg6ySUscaWUpI4gxCBTQMH2RdUpNrk+MsbpCYtIvf9SBJdiUey4qE7BXviJsJR4nDQxCZ+3yaYNW3guz/Pw==} + engines: {node: '>= 8.0.0'} + dev: true - mkdirp-classic@0.5.3: {} + /mkdirp-classic@0.5.3: + resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} + dev: false - mkdirp@0.5.6: + /mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true dependencies: minimist: 1.2.8 + dev: true - mkdirp@1.0.4: {} + /mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + dev: false - mlly@1.5.0: + /mlly@1.5.0: + resolution: {integrity: sha512-NPVQvAY1xr1QoVeG0cy8yUYC7FQcOx6evl/RjT1wL5FvzPnzOysoqB/jmx/DhssT2dYa8nxECLAaFI/+gVLhDQ==} dependencies: acorn: 8.11.3 pathe: 1.1.2 pkg-types: 1.0.3 ufo: 1.3.2 + dev: true - mnemonist@0.38.5: + /mnemonist@0.38.5: + resolution: {integrity: sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==} dependencies: obliterator: 2.0.4 + dev: true - mnemonist@0.39.5: + /mnemonist@0.39.5: + resolution: {integrity: sha512-FPUtkhtJ0efmEFGpU14x7jGbTB+s18LrzRL2KgoWz9YvcY3cPomz8tih01GbHwnGk/OmkOKfqd/RAQoc8Lm7DQ==} dependencies: obliterator: 2.0.4 + dev: false - mobx@6.9.0: {} + /mobx@6.9.0: + resolution: {integrity: sha512-HdKewQEREEJgsWnErClfbFoVebze6rGazxFLU/XUyrII8dORfVszN1V0BMRnQSzcgsNNtkX8DHj3nC6cdWE9YQ==} + dev: false - mocha@10.3.0: + /mocha@10.3.0: + resolution: {integrity: sha512-uF2XJs+7xSLsrmIvn37i/wnc91nw7XjOQB8ccyx5aEgdnohr7n+rEiZP23WkCYHjilR6+EboEnbq/ZQDz4LSbg==} + engines: {node: '>= 14.0.0'} + hasBin: true dependencies: ansi-colors: 4.1.1 browser-stdout: 1.3.1 @@ -13241,38 +10447,65 @@ snapshots: yargs: 16.2.0 yargs-parser: 20.2.4 yargs-unparser: 2.0.0 + dev: true - ms@2.1.2: {} + /ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - ms@2.1.3: {} + /ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - mute-stream@0.0.7: {} + /mute-stream@0.0.7: + resolution: {integrity: sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==} + dev: true - mute-stream@0.0.8: {} + /mute-stream@0.0.8: + resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} + dev: false - mz@2.7.0: + /mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} dependencies: any-promise: 1.3.0 object-assign: 4.1.1 thenify-all: 1.6.0 + dev: true - nanoid@3.3.6: {} + /nanoid@3.3.6: + resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + dev: true - napi-build-utils@1.0.2: {} + /napi-build-utils@1.0.2: + resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} + dev: false - natural-compare@1.4.0: {} + /natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + dev: true - negotiator@0.6.3: {} + /negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + dev: false - neo-async@2.6.2: {} + /neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + dev: false - next-tick@1.1.0: {} + /next-tick@1.1.0: + resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} + dev: false - nice-grpc-common@2.0.2: + /nice-grpc-common@2.0.2: + resolution: {integrity: sha512-7RNWbls5kAL1QVUOXvBsv1uO0wPQK3lHv+cY1gwkTzirnG1Nop4cBJZubpgziNbaVc/bl9QJcyvsf/NQxa3rjQ==} dependencies: ts-error: 1.0.6 + dev: false - nice-grpc-web@2.0.1(google-protobuf@3.21.2): + /nice-grpc-web@2.0.1(google-protobuf@3.21.2): + resolution: {integrity: sha512-r8jy0TJY6ZO9qWtujiqmtRkqgItAChoJxJyYv+CHacP9G5kRIH03M+sQqtieXNNDUAKfFT/z5yroSy1cPFX0sA==} dependencies: '@improbable-eng/grpc-web': 0.15.0(google-protobuf@3.21.2) abort-controller-x: 0.4.1 @@ -13280,28 +10513,51 @@ snapshots: nice-grpc-common: 2.0.2 transitivePeerDependencies: - google-protobuf + dev: false - nice-try@1.0.5: {} + /nice-try@1.0.5: + resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} + dev: true - node-abi@3.45.0: + /node-abi@3.45.0: + resolution: {integrity: sha512-iwXuFrMAcFVi/ZoZiqq8BzAdsLw9kxDfTC0HMyjXfSL/6CSDAGD5UmR7azrAgWV1zKYq7dUUMj4owusBWKLsiQ==} + engines: {node: '>=10'} dependencies: semver: 7.6.0 + dev: false - node-abi@3.52.0: + /node-abi@3.52.0: + resolution: {integrity: sha512-JJ98b02z16ILv7859irtXn4oUaFWADtvkzy2c0IAatNVX2Mc9Yoh8z6hZInn3QwvMEYhHuQloYi+TTQy67SIdQ==} + engines: {node: '>=10'} dependencies: semver: 7.5.0 + dev: false - node-addon-api@2.0.2: {} + /node-addon-api@2.0.2: + resolution: {integrity: sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==} + dev: true - node-fetch@2.6.9(encoding@0.1.13): + /node-fetch@2.6.9: + resolution: {integrity: sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true dependencies: whatwg-url: 5.0.0 - optionalDependencies: - encoding: 0.1.13 + dev: false - node-gyp-build@4.8.0: {} + /node-gyp-build@4.8.0: + resolution: {integrity: sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==} + hasBin: true + dev: true - node-gyp@9.4.1: + /node-gyp@9.4.1: + resolution: {integrity: sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ==} + engines: {node: ^12.13 || ^14.13 || >=16} + hasBin: true dependencies: env-paths: 2.2.1 exponential-backoff: 3.1.1 @@ -13317,125 +10573,209 @@ snapshots: transitivePeerDependencies: - bluebird - supports-color + dev: false - node-int64@0.4.0: {} + /node-int64@0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + dev: true - node-releases@2.0.10: {} + /node-releases@2.0.14: + resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + dev: true - nopt@6.0.0: + /nopt@6.0.0: + resolution: {integrity: sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + hasBin: true dependencies: abbrev: 1.1.1 + dev: false - normalize-package-data@2.5.0: + /normalize-package-data@2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: hosted-git-info: 2.8.9 resolve: 1.22.2 semver: 5.7.1 validate-npm-package-license: 3.0.4 + dev: true - normalize-path@3.0.0: {} + /normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} - normalize-range@0.1.2: {} + /normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + dev: true - npm-run-path@4.0.1: + /npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} dependencies: path-key: 3.1.1 - npm-run-path@5.1.0: + /npm-run-path@5.1.0: + resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: path-key: 4.0.0 + dev: true - npmlog@6.0.2: + /npmlog@6.0.2: + resolution: {integrity: sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} dependencies: are-we-there-yet: 3.0.1 console-control-strings: 1.1.0 gauge: 4.0.4 set-blocking: 2.0.0 + dev: false - number-is-nan@1.0.1: {} + /number-is-nan@1.0.1: + resolution: {integrity: sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==} + engines: {node: '>=0.10.0'} + dev: true - number-to-bn@1.7.0: + /number-to-bn@1.7.0: + resolution: {integrity: sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==} + engines: {node: '>=6.5.0', npm: '>=3'} dependencies: bn.js: 4.11.6 strip-hex-prefix: 1.0.0 + dev: true - nwsapi@2.2.7: {} + /nwsapi@2.2.7: + resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==} + dev: true - object-assign@4.1.1: {} + /object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + dev: true - object-hash@1.3.1: {} + /object-hash@1.3.1: + resolution: {integrity: sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==} + engines: {node: '>= 0.10.0'} + dev: true - object-hash@3.0.0: {} + /object-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} + dev: true - object-inspect@1.12.2: {} + /object-inspect@1.12.2: + resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==} + dev: true - object-keys@1.1.1: {} + /object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + dev: true - object.assign@4.1.4: + /object.assign@4.1.4: + resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.1.4 has-symbols: 1.0.3 object-keys: 1.1.1 + dev: true - object.entries@1.1.6: + /object.entries@1.1.6: + resolution: {integrity: sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.1.4 es-abstract: 1.20.5 + dev: true - object.fromentries@2.0.6: + /object.fromentries@2.0.6: + resolution: {integrity: sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.1.4 es-abstract: 1.20.5 + dev: true - object.hasown@1.1.2: + /object.hasown@1.1.2: + resolution: {integrity: sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==} dependencies: define-properties: 1.1.4 es-abstract: 1.20.5 + dev: true - object.values@1.1.6: + /object.values@1.1.6: + resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.1.4 es-abstract: 1.20.5 + dev: true - objnest@5.1.1: + /objnest@5.1.1: + resolution: {integrity: sha512-C4fjNlHhUQbHiiFpgzvZse3/WUHq356Da3P8NZazg9JpPHFiQP2Y9lmYvpLU06midap0YpNz/MuA8GGSL8G0YQ==} + engines: {node: '>=8', npm: '>=5'} dependencies: '@babel/runtime': 7.21.0 abind: 1.0.5 extend: 3.0.2 + dev: false - obliterator@2.0.4: {} + /obliterator@2.0.4: + resolution: {integrity: sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==} - on-exit-leak-free@2.1.0: {} + /on-exit-leak-free@2.1.0: + resolution: {integrity: sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w==} + dev: false - on-finished@2.4.1: + /on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} dependencies: ee-first: 1.1.1 + dev: false - once@1.4.0: + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 - onetime@2.0.1: + /onetime@2.0.1: + resolution: {integrity: sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==} + engines: {node: '>=4'} dependencies: mimic-fn: 1.2.0 + dev: true - onetime@5.1.2: + /onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} dependencies: mimic-fn: 2.1.0 - onetime@6.0.0: + /onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} dependencies: mimic-fn: 4.0.0 + dev: true - only@0.0.2: {} + /only@0.0.2: + resolution: {integrity: sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==} + dev: false - openurl@1.1.1: {} + /openurl@1.1.1: + resolution: {integrity: sha512-d/gTkTb1i1GKz5k3XE3XFV/PxQ1k45zDqGP2OA7YhgsaLoqm6qRvARAZOFer1fcXritWlGBRCu/UgeS4HAnXAA==} + dev: false - optionator@0.8.3: + /optionator@0.8.3: + resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} + engines: {node: '>= 0.8.0'} dependencies: deep-is: 0.1.4 fast-levenshtein: 2.0.6 @@ -13443,8 +10783,11 @@ snapshots: prelude-ls: 1.1.2 type-check: 0.3.2 word-wrap: 1.2.3 + dev: true - optionator@0.9.3: + /optionator@0.9.3: + resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} + engines: {node: '>= 0.8.0'} dependencies: '@aashutoshrathi/word-wrap': 1.2.6 deep-is: 0.1.4 @@ -13452,67 +10795,114 @@ snapshots: levn: 0.4.1 prelude-ls: 1.2.1 type-check: 0.4.0 + dev: true - ordinal@1.0.3: {} + /ordinal@1.0.3: + resolution: {integrity: sha512-cMddMgb2QElm8G7vdaa02jhUNbTSrhsgAGUz1OokD83uJTwSUn+nKoNoKVVaRa08yF6sgfO7Maou1+bgLd9rdQ==} + dev: true - os-tmpdir@1.0.2: {} + /os-tmpdir@1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} - outdent@0.5.0: {} + /outdent@0.5.0: + resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} + dev: true - p-filter@2.1.0: + /p-filter@2.1.0: + resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} + engines: {node: '>=8'} dependencies: p-map: 2.1.0 + dev: true - p-finally@1.0.0: {} + /p-finally@1.0.0: + resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} + engines: {node: '>=4'} + dev: false - p-finally@2.0.1: {} + /p-finally@2.0.1: + resolution: {integrity: sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==} + engines: {node: '>=8'} + dev: true - p-is-promise@3.0.0: {} + /p-is-promise@3.0.0: + resolution: {integrity: sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==} + engines: {node: '>=8'} + dev: false - p-limit@1.3.0: + /p-limit@1.3.0: + resolution: {integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==} + engines: {node: '>=4'} dependencies: p-try: 1.0.0 + dev: true - p-limit@2.3.0: + /p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} dependencies: p-try: 2.2.0 - p-limit@3.1.0: + /p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} dependencies: yocto-queue: 0.1.0 - p-limit@4.0.0: + /p-limit@4.0.0: + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: yocto-queue: 1.0.0 + dev: true - p-locate@2.0.0: + /p-locate@2.0.0: + resolution: {integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==} + engines: {node: '>=4'} dependencies: p-limit: 1.3.0 + dev: true - p-locate@3.0.0: + /p-locate@3.0.0: + resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} + engines: {node: '>=6'} dependencies: p-limit: 2.3.0 + dev: false - p-locate@4.1.0: + /p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} dependencies: p-limit: 2.3.0 + dev: true - p-locate@5.0.0: + /p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} dependencies: p-limit: 3.1.0 - p-map@2.1.0: {} + /p-map@2.1.0: + resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} + engines: {node: '>=6'} + dev: true - p-map@4.0.0: + /p-map@4.0.0: + resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} + engines: {node: '>=10'} dependencies: aggregate-error: 3.1.0 - p-queue@6.6.2: + /p-queue@6.6.2: + resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==} + engines: {node: '>=8'} dependencies: eventemitter3: 4.0.7 p-timeout: 3.2.0 + dev: false -<<<<<<< HEAD /p-queue@7.4.1: resolution: {integrity: sha512-vRpMXmIkYF2/1hLBKisKeVYJZ8S2tZ0zEAmIJgdVKP2nq0nh4qCdf8bgw+ZgKrkh71AOCaqzwbJJk1WtdcF3VA==} engines: {node: '>=12'} @@ -13524,18 +10914,18 @@ snapshots: /p-retry@4.6.2: resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} engines: {node: '>=8'} -======= - p-retry@4.6.2: ->>>>>>> 1175edcf0 (feat: update pnpm and node version) dependencies: '@types/retry': 0.12.0 retry: 0.13.1 + dev: false - p-timeout@3.2.0: + /p-timeout@3.2.0: + resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} + engines: {node: '>=8'} dependencies: p-finally: 1.0.0 + dev: false -<<<<<<< HEAD /p-timeout@5.1.0: resolution: {integrity: sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew==} engines: {node: '>=12'} @@ -13545,95 +10935,160 @@ snapshots: resolution: {integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==} engines: {node: '>=4'} dev: true -======= - p-try@1.0.0: {} ->>>>>>> 1175edcf0 (feat: update pnpm and node version) - p-try@2.2.0: {} + /p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} - parent-module@1.0.1: + /parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} dependencies: callsites: 3.1.0 + dev: true - parse-json@4.0.0: + /parse-json@4.0.0: + resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} + engines: {node: '>=4'} dependencies: error-ex: 1.3.2 json-parse-better-errors: 1.0.2 + dev: true - parse-json@5.2.0: + /parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} dependencies: '@babel/code-frame': 7.21.4 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 + dev: true - parse5@7.1.2: + /parse5@7.1.2: + resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} dependencies: entities: 4.5.0 + dev: true - parseurl@1.3.3: {} + /parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + dev: false - path-exists@3.0.0: {} + /path-exists@3.0.0: + resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} + engines: {node: '>=4'} - path-exists@4.0.0: {} + /path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} - path-is-absolute@1.0.1: {} + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} - path-is-inside@1.0.2: {} + /path-is-inside@1.0.2: + resolution: {integrity: sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==} + dev: true - path-key@2.0.1: {} + /path-key@2.0.1: + resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} + engines: {node: '>=4'} + dev: true - path-key@3.1.1: {} + /path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} - path-key@4.0.0: {} + /path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + dev: true - path-parse@1.0.7: {} + /path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + dev: true - path-to-regexp@6.2.1: {} + /path-to-regexp@6.2.1: + resolution: {integrity: sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==} + dev: false - path-type@4.0.0: {} + /path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} - path@0.12.7: + /path@0.12.7: + resolution: {integrity: sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==} dependencies: process: 0.11.10 util: 0.10.4 + dev: false - pathe@1.1.2: {} + /pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + dev: true - pathval@1.1.1: {} + /pathval@1.1.1: + resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + dev: true - pbkdf2@3.1.2: + /pbkdf2@3.1.2: + resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==} + engines: {node: '>=0.12'} dependencies: create-hash: 1.2.0 create-hmac: 1.1.7 ripemd160: 2.0.2 safe-buffer: 5.2.1 sha.js: 2.4.11 + dev: true - peek-stream@1.1.3: + /peek-stream@1.1.3: + resolution: {integrity: sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA==} dependencies: buffer-from: 1.1.2 duplexify: 3.7.1 through2: 2.0.5 + dev: false - picocolors@1.0.0: {} + /picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + dev: true - picomatch@2.3.1: {} + /picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} - pify@2.3.0: {} + /pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + dev: true - pify@3.0.0: {} + /pify@3.0.0: + resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} + engines: {node: '>=4'} + dev: false - pify@4.0.1: {} + /pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + dev: true - pino-abstract-transport@1.0.0: + /pino-abstract-transport@1.0.0: + resolution: {integrity: sha512-c7vo5OpW4wIS42hUVcT5REsL8ZljsUfBjqV/e2sFxmFEFZiq1XLUp5EYLtuDH6PEHq9W1egWqRbnLUP5FuZmOA==} dependencies: readable-stream: 4.4.2 split2: 4.2.0 + dev: false - pino-std-serializers@6.2.2: {} + /pino-std-serializers@6.2.2: + resolution: {integrity: sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==} + dev: false - pino@8.14.2: + /pino@8.14.2: + resolution: {integrity: sha512-zKu9aWeSWTy1JgvxIpZveJKKsAr4+6uNMZ0Vf0KRwzl/UNZA3XjHiIl/0WwqLMkDwuHuDkT5xAgPA2jpKq4whA==} + hasBin: true dependencies: atomic-sleep: 1.0.0 fast-redact: 3.3.0 @@ -13646,74 +11101,136 @@ snapshots: safe-stable-stringify: 2.4.3 sonic-boom: 3.3.0 thread-stream: 2.3.0 + dev: false - pirates@4.0.5: {} + /pirates@4.0.5: + resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} + engines: {node: '>= 6'} + dev: true - pkg-dir@4.2.0: + /pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} dependencies: find-up: 4.1.0 + dev: true - pkg-types@1.0.3: + /pkg-types@1.0.3: + resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} dependencies: jsonc-parser: 3.2.0 mlly: 1.5.0 pathe: 1.1.2 + dev: true - pkg-up@3.1.0: + /pkg-up@3.1.0: + resolution: {integrity: sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==} + engines: {node: '>=8'} dependencies: find-up: 3.0.0 + dev: false - please-upgrade-node@3.2.0: + /please-upgrade-node@3.2.0: + resolution: {integrity: sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==} dependencies: semver-compare: 1.0.0 + dev: true - postcss-import@15.1.0(postcss@8.4.23): + /postcss-import@15.1.0(postcss@8.4.23): + resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} + engines: {node: '>=14.0.0'} + peerDependencies: + postcss: ^8.0.0 dependencies: postcss: 8.4.23 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.2 + dev: true - postcss-js@4.0.1(postcss@8.4.23): + /postcss-js@4.0.1(postcss@8.4.23): + resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.4.21 dependencies: camelcase-css: 2.0.1 postcss: 8.4.23 + dev: true - postcss-load-config@3.1.4(postcss@8.4.23): + /postcss-load-config@3.1.4(postcss@8.4.23): + resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} + engines: {node: '>= 10'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true dependencies: lilconfig: 2.1.0 - yaml: 1.10.2 - optionalDependencies: postcss: 8.4.23 + yaml: 1.10.2 + dev: true - postcss-load-config@4.0.1(postcss@8.4.23): + /postcss-load-config@4.0.1(postcss@8.4.23): + resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==} + engines: {node: '>= 14'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true dependencies: lilconfig: 2.1.0 - yaml: 2.2.2 - optionalDependencies: postcss: 8.4.23 + yaml: 2.2.2 + dev: true - postcss-nested@6.0.1(postcss@8.4.23): + /postcss-nested@6.0.1(postcss@8.4.23): + resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 dependencies: postcss: 8.4.23 postcss-selector-parser: 6.0.11 + dev: true - postcss-selector-parser@6.0.11: + /postcss-selector-parser@6.0.11: + resolution: {integrity: sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==} + engines: {node: '>=4'} dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 + dev: true - postcss-value-parser@4.2.0: {} + /postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + dev: true - postcss@8.4.23: + /postcss@8.4.23: + resolution: {integrity: sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==} + engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.6 picocolors: 1.0.0 source-map-js: 1.0.2 + dev: true - postgres@3.3.5: {} + /postgres@3.3.5: + resolution: {integrity: sha512-+JD93VELV9gHkqpV5gdL5/70HdGtEw4/XE1S4BC8f1mcPmdib3K5XsKVbnR1XcAyC41zOnifJ+9YRKxdIsXiUw==} + dev: false - prebuild-install@7.1.1: + /prebuild-install@7.1.1: + resolution: {integrity: sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==} + engines: {node: '>=10'} + hasBin: true dependencies: detect-libc: 2.0.2 expand-template: 2.0.3 @@ -13727,52 +11244,95 @@ snapshots: simple-get: 4.0.1 tar-fs: 2.1.1 tunnel-agent: 0.6.0 + dev: false - preferred-pm@3.0.3: + /preferred-pm@3.0.3: + resolution: {integrity: sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ==} + engines: {node: '>=10'} dependencies: find-up: 5.0.0 find-yarn-workspace-root2: 1.2.16 path-exists: 4.0.0 which-pm: 2.0.0 + dev: true - prelude-ls@1.1.2: {} + /prelude-ls@1.1.2: + resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} + engines: {node: '>= 0.8.0'} + dev: true - prelude-ls@1.2.1: {} + /prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + dev: true - prettier-plugin-solidity@1.3.1(prettier@3.2.5): + /prettier-plugin-solidity@1.3.1(prettier@3.2.5): + resolution: {integrity: sha512-MN4OP5I2gHAzHZG1wcuJl0FsLS3c4Cc5494bbg+6oQWBPuEamjwDvmGfFMZ6NFzsh3Efd9UUxeT7ImgjNH4ozA==} + engines: {node: '>=16'} + peerDependencies: + prettier: '>=2.3.0' dependencies: '@solidity-parser/parser': 0.17.0 prettier: 3.2.5 semver: 7.6.0 solidity-comments-extractor: 0.0.8 - prettier@1.19.1: + /prettier@1.19.1: + resolution: {integrity: sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==} + engines: {node: '>=4'} + hasBin: true + requiresBuild: true + dev: true optional: true - prettier@2.8.4: {} + /prettier@2.8.4: + resolution: {integrity: sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==} + engines: {node: '>=10.13.0'} + hasBin: true + dev: true - prettier@3.2.5: {} + /prettier@3.2.5: + resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} + engines: {node: '>=14'} + hasBin: true - pretty-format@27.5.1: + /pretty-format@27.5.1: + resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: ansi-regex: 5.0.1 ansi-styles: 5.2.0 react-is: 17.0.2 + dev: true - pretty-format@29.5.0: + /pretty-format@29.5.0: + resolution: {integrity: sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/schemas': 29.4.3 ansi-styles: 5.2.0 react-is: 18.2.0 + dev: true - process-nextick-args@2.0.1: {} + /process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + dev: false - process-warning@2.2.0: {} + /process-warning@2.2.0: + resolution: {integrity: sha512-/1WZ8+VQjR6avWOgHeEPd7SDQmFQ1B5mC1eRXsCm5TarlNmx/wCsa5GEaxGm05BORRtyG/Ex/3xq3TuRvq57qg==} + dev: false - process@0.11.10: {} + /process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + dev: false - progress@2.0.3: {} + /progress@2.0.3: + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} + dev: true +<<<<<<< HEAD <<<<<<< HEAD /prom-client@15.1.2: resolution: {integrity: sha512-on3h1iXb04QFLLThrmVYg1SChBQ9N1c+nKAjebBjokBqipddH3uxmOUcEkTnzmJ8Jh/5TSUnUqS40i2QB2dJHQ==} @@ -13782,6 +11342,8 @@ snapshots: tdigest: 0.1.2 dev: false +======= +>>>>>>> 9643c6a1f (Revert "feat: update pnpm and node version") /promise-inflight@1.0.1: resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} peerDependencies: @@ -13790,27 +11352,41 @@ snapshots: bluebird: optional: true dev: false +<<<<<<< HEAD ======= promise-inflight@1.0.1: {} >>>>>>> d2ee83450 (feat: update pnpm and node version) +======= +>>>>>>> 9643c6a1f (Revert "feat: update pnpm and node version") - promise-retry@2.0.1: + /promise-retry@2.0.1: + resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} + engines: {node: '>=10'} dependencies: err-code: 2.0.3 retry: 0.12.0 + dev: false - prompts@2.4.2: + /prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} dependencies: kleur: 3.0.3 sisteransi: 1.0.5 + dev: true - prop-types@15.8.1: + /prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} dependencies: loose-envify: 1.4.0 object-assign: 4.1.1 react-is: 16.13.1 + dev: true - protobufjs@6.11.3: + /protobufjs@6.11.3: + resolution: {integrity: sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg==} + hasBin: true + requiresBuild: true dependencies: '@protobufjs/aspromise': 1.1.2 '@protobufjs/base64': 1.1.2 @@ -13825,8 +11401,12 @@ snapshots: '@types/long': 4.0.2 '@types/node': 18.15.11 long: 4.0.0 + dev: true - protobufjs@7.2.3: + /protobufjs@7.2.3: + resolution: {integrity: sha512-TtpvOqwB5Gdz/PQmOjgsrGH1nHjAQVCN7JG4A6r1sXRWESL5rNMAiRcBQlCAdKxZcAbstExQePYG8xof/JVRgg==} + engines: {node: '>=12.0.0'} + requiresBuild: true dependencies: '@protobufjs/aspromise': 1.1.2 '@protobufjs/base64': 1.1.2 @@ -13840,140 +11420,216 @@ snapshots: '@protobufjs/utf8': 1.1.0 '@types/node': 18.15.11 long: 5.2.1 + dev: false - proxy-addr@2.0.7: + /proxy-addr@2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} dependencies: forwarded: 0.2.0 ipaddr.js: 1.9.1 + dev: false - proxy-deep@3.1.1: {} + /proxy-deep@3.1.1: + resolution: {integrity: sha512-kppbvLUNJ4IOMZds9/4gz/rtT5OFiesy3XosLsgMKlF3vb6GA5Y3ptyDlzKLcOcUBW+zaY+RiMINTsgE+O6e+Q==} + dev: false - pseudomap@1.0.2: {} + /pseudomap@1.0.2: + resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} + dev: true - psl@1.9.0: {} + /psl@1.9.0: + resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} + dev: true - pump@3.0.0: + /pump@3.0.0: + resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} dependencies: end-of-stream: 1.4.4 once: 1.4.0 - pumpify@2.0.1: + /pumpify@2.0.1: + resolution: {integrity: sha512-m7KOje7jZxrmutanlkS1daj1dS6z6BgslzOXmcSEpIlCxM3VJH7lG5QLeck/6hgF6F4crFf01UtQmNsJfweTAw==} dependencies: duplexify: 4.1.2 inherits: 2.0.4 pump: 3.0.0 + dev: false -<<<<<<< HEAD /punycode@2.3.0: resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} engines: {node: '>=6'} -======= - punycode@2.1.1: {} - punycode@2.3.0: {} ->>>>>>> 1175edcf0 (feat: update pnpm and node version) - - pure-rand@6.0.1: {} + /pure-rand@6.0.1: + resolution: {integrity: sha512-t+x1zEHDjBwkDGY5v5ApnZ/utcd4XYDiJsaQQoptTXgUXX95sDg1elCdJghzicm7n2mbCBJ3uYWr6M22SO19rg==} + dev: true - querystringify@2.2.0: {} + /querystringify@2.2.0: + resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} + dev: true - queue-microtask@1.2.3: {} + /queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - quick-format-unescaped@4.0.4: {} + /quick-format-unescaped@4.0.4: + resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} + dev: false - quick-lru@4.0.1: {} + /quick-lru@4.0.1: + resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} + engines: {node: '>=8'} + dev: true - randombytes@2.1.0: + /randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} dependencies: safe-buffer: 5.2.1 + dev: true - raw-body@2.5.2: + /raw-body@2.5.2: + resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} + engines: {node: '>= 0.8'} dependencies: bytes: 3.1.2 http-errors: 2.0.0 iconv-lite: 0.4.24 unpipe: 1.0.0 + dev: true - rc@1.2.8: + /rc@1.2.8: + resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} + hasBin: true dependencies: deep-extend: 0.6.0 ini: 1.3.8 minimist: 1.2.8 strip-json-comments: 2.0.1 + dev: false - react-dom@18.2.0(react@18.2.0): + /react-dom@18.2.0(react@18.2.0): + resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} + peerDependencies: + react: ^18.2.0 dependencies: loose-envify: 1.4.0 react: 18.2.0 scheduler: 0.23.0 + dev: false - react-error-boundary@3.1.4(react@18.2.0): + /react-error-boundary@3.1.4(react@18.2.0): + resolution: {integrity: sha512-uM9uPzZJTF6wRQORmSrvOIgt4lJ9MC1sNgEOj2XGsDTRE4kmpWxg7ENK9EWNKJRMAOY9z0MuF4yIfl6gp4sotA==} + engines: {node: '>=10', npm: '>=6'} + peerDependencies: + react: '>=16.13.1' dependencies: '@babel/runtime': 7.21.0 react: 18.2.0 + dev: true - react-is@16.13.1: {} + /react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + dev: true - react-is@17.0.2: {} + /react-is@17.0.2: + resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + dev: true - react-is@18.2.0: {} + /react-is@18.2.0: + resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + dev: true - react-refresh@0.14.0: {} + /react-refresh@0.14.0: + resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==} + engines: {node: '>=0.10.0'} + dev: true - react-router-dom@6.11.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + /react-router-dom@6.11.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-Q3mK1c/CYoF++J6ZINz7EZzwlgSOZK/kc7lxIA7PhtWhKju4KfF1WHqlx0kVCIFJAWztuYVpXZeljEbds8z4Og==} + engines: {node: '>=14'} + peerDependencies: + react: '>=16.8' + react-dom: '>=16.8' dependencies: '@remix-run/router': 1.6.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) react-router: 6.11.0(react@18.2.0) + dev: false - react-router@6.11.0(react@18.2.0): + /react-router@6.11.0(react@18.2.0): + resolution: {integrity: sha512-hTm6KKNpj9SDG4syIWRjCU219O0RZY8RUPobCFt9p+PlF7nnkRgMoh2DieTKvw3F3Mw6zg565HGnSv8BuoY5oQ==} + engines: {node: '>=14'} + peerDependencies: + react: '>=16.8' dependencies: '@remix-run/router': 1.6.0 react: 18.2.0 + dev: false - react-shallow-renderer@16.15.0(react@18.2.0): + /react-shallow-renderer@16.15.0(react@18.2.0): + resolution: {integrity: sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==} + peerDependencies: + react: ^16.0.0 || ^17.0.0 || ^18.0.0 dependencies: object-assign: 4.1.1 react: 18.2.0 react-is: 18.2.0 + dev: true - react-test-renderer@18.2.0(react@18.2.0): + /react-test-renderer@18.2.0(react@18.2.0): + resolution: {integrity: sha512-JWD+aQ0lh2gvh4NM3bBM42Kx+XybOxCpgYK7F8ugAlpaTSnWsX+39Z4XkOykGZAHrjwwTZT3x3KxswVWxHPUqA==} + peerDependencies: + react: ^18.2.0 dependencies: react: 18.2.0 react-is: 18.2.0 react-shallow-renderer: 16.15.0(react@18.2.0) scheduler: 0.23.0 + dev: true - react@18.2.0: + /react@18.2.0: + resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} + engines: {node: '>=0.10.0'} dependencies: loose-envify: 1.4.0 - read-cache@1.0.0: + /read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} dependencies: pify: 2.3.0 + dev: true - read-pkg-up@7.0.1: + /read-pkg-up@7.0.1: + resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} + engines: {node: '>=8'} dependencies: find-up: 4.1.0 read-pkg: 5.2.0 type-fest: 0.8.1 + dev: true - read-pkg@5.2.0: + /read-pkg@5.2.0: + resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} + engines: {node: '>=8'} dependencies: '@types/normalize-package-data': 2.4.1 normalize-package-data: 2.5.0 parse-json: 5.2.0 type-fest: 0.6.0 + dev: true - read-yaml-file@1.1.0: + /read-yaml-file@1.1.0: + resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} + engines: {node: '>=6'} dependencies: graceful-fs: 4.2.11 js-yaml: 3.14.1 pify: 4.0.1 strip-bom: 3.0.0 + dev: true - readable-stream@2.3.8: + /readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} dependencies: core-util-is: 1.0.3 inherits: 2.0.4 @@ -13982,266 +11638,450 @@ snapshots: safe-buffer: 5.1.2 string_decoder: 1.1.1 util-deprecate: 1.0.2 + dev: false - readable-stream@3.6.0: + /readable-stream@3.6.0: + resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} + engines: {node: '>= 6'} dependencies: inherits: 2.0.4 string_decoder: 1.3.0 util-deprecate: 1.0.2 - readable-stream@4.4.2: + /readable-stream@4.4.2: + resolution: {integrity: sha512-Lk/fICSyIhodxy1IDK2HazkeGjSmezAWX2egdtJnYhtzKEsBPJowlI6F6LPb5tqIQILrMbx22S5o3GuJavPusA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: abort-controller: 3.0.0 buffer: 6.0.3 events: 3.3.0 process: 0.11.10 string_decoder: 1.3.0 + dev: false - readdirp@3.6.0: + /readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} dependencies: picomatch: 2.3.1 - real-require@0.2.0: {} + /real-require@0.2.0: + resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} + engines: {node: '>= 12.13.0'} + dev: false - redent@3.0.0: + /redent@3.0.0: + resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} + engines: {node: '>=8'} dependencies: indent-string: 4.0.0 strip-indent: 3.0.0 + dev: true - regenerator-runtime@0.11.1: {} + /regenerator-runtime@0.11.1: + resolution: {integrity: sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==} + dev: false - regenerator-runtime@0.13.11: {} + /regenerator-runtime@0.13.11: + resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} - regexp.prototype.flags@1.4.3: + /regexp.prototype.flags@1.4.3: + resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.1.4 functions-have-names: 1.2.3 + dev: true - regexpp@2.0.1: {} + /regexpp@2.0.1: + resolution: {integrity: sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==} + engines: {node: '>=6.5.0'} + dev: true - require-directory@2.1.1: {} + /require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} - require-from-string@2.0.2: {} + /require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} - require-main-filename@2.0.0: {} + /require-main-filename@2.0.0: + resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} - requires-port@1.0.0: {} + /requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + dev: true - resolve-cwd@3.0.0: + /resolve-cwd@3.0.0: + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} dependencies: resolve-from: 5.0.0 + dev: true - resolve-from@3.0.0: {} + /resolve-from@3.0.0: + resolution: {integrity: sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==} + engines: {node: '>=4'} + dev: true - resolve-from@4.0.0: {} + /resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + dev: true - resolve-from@5.0.0: {} + /resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + dev: true - resolve.exports@2.0.2: {} + /resolve.exports@2.0.2: + resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} + engines: {node: '>=10'} + dev: true - resolve@1.17.0: + /resolve@1.17.0: + resolution: {integrity: sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==} dependencies: path-parse: 1.0.7 + dev: true - resolve@1.22.2: + /resolve@1.22.2: + resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} + hasBin: true dependencies: is-core-module: 2.12.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + dev: true - resolve@2.0.0-next.4: + /resolve@2.0.0-next.4: + resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==} + hasBin: true dependencies: is-core-module: 2.12.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + dev: true - restore-cursor@2.0.0: + /restore-cursor@2.0.0: + resolution: {integrity: sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==} + engines: {node: '>=4'} dependencies: onetime: 2.0.1 signal-exit: 3.0.7 + dev: true - restore-cursor@3.1.0: + /restore-cursor@3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} dependencies: onetime: 5.1.2 signal-exit: 3.0.7 + dev: false - ret@0.2.2: {} + /ret@0.2.2: + resolution: {integrity: sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==} + engines: {node: '>=4'} + dev: false - retry@0.12.0: {} + /retry@0.12.0: + resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} + engines: {node: '>= 4'} + dev: false - retry@0.13.1: {} + /retry@0.13.1: + resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} + engines: {node: '>= 4'} + dev: false - reusify@1.0.4: {} + /reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - rfdc@1.3.0: {} + /rfdc@1.3.0: + resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} + dev: false - rimraf@2.6.3: + /rimraf@2.6.3: + resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} + hasBin: true dependencies: glob: 7.2.3 + dev: true - rimraf@3.0.2: + /rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true dependencies: glob: 7.2.3 - ripemd160@2.0.2: + /ripemd160@2.0.2: + resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} dependencies: hash-base: 3.1.0 inherits: 2.0.4 + dev: true - rlp@2.2.7: + /rlp@2.2.7: + resolution: {integrity: sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==} + hasBin: true dependencies: bn.js: 5.2.1 + dev: true - rollup@3.21.8: + /rollup@3.21.8: + resolution: {integrity: sha512-SSFV2T2fWtQ/vvBip85u2Nr0GNKireabH9d7nXswBg+XSH+jbVDSYptRAEbCEsquhs503rpPA9POYAp0/Jhasw==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} + hasBin: true optionalDependencies: fsevents: 2.3.3 + dev: true - rrweb-cssom@0.6.0: {} + /rrweb-cssom@0.6.0: + resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} + dev: true - run-async@2.4.1: {} + /run-async@2.4.1: + resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} + engines: {node: '>=0.12.0'} - run-parallel@1.2.0: + /run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: queue-microtask: 1.2.3 - rxjs@6.6.7: + /rxjs@6.6.7: + resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==} + engines: {npm: '>=2.0.0'} dependencies: tslib: 1.14.1 - rxjs@7.5.5: + /rxjs@7.5.5: + resolution: {integrity: sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==} dependencies: tslib: 2.5.0 + dev: false - rxjs@7.8.1: + /rxjs@7.8.1: + resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} dependencies: -<<<<<<< HEAD tslib: 2.6.2 dev: true -======= - tslib: 2.5.0 ->>>>>>> 1175edcf0 (feat: update pnpm and node version) - safe-buffer@5.1.2: {} + /safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + dev: false - safe-buffer@5.2.1: {} + /safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - safe-regex-test@1.0.0: + /safe-regex-test@1.0.0: + resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} dependencies: call-bind: 1.0.2 get-intrinsic: 1.1.3 is-regex: 1.1.4 + dev: true - safe-regex2@2.0.0: + /safe-regex2@2.0.0: + resolution: {integrity: sha512-PaUSFsUaNNuKwkBijoAPHAK6/eM6VirvyPWlZ7BAQy4D+hCvh4B6lIG+nPdhbFfIbP+gTGBcrdsOaUs0F+ZBOQ==} dependencies: ret: 0.2.2 + dev: false - safe-stable-stringify@2.4.3: {} + /safe-stable-stringify@2.4.3: + resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==} + engines: {node: '>=10'} + dev: false - safer-buffer@2.1.2: {} + /safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - saxes@6.0.0: + /saxes@6.0.0: + resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} + engines: {node: '>=v12.22.7'} dependencies: xmlchars: 2.2.0 + dev: true - scheduler@0.23.0: + /scheduler@0.23.0: + resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} dependencies: loose-envify: 1.4.0 - scrypt-js@3.0.1: {} + /scrypt-js@3.0.1: + resolution: {integrity: sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==} - secp256k1@4.0.3: + /secp256k1@4.0.3: + resolution: {integrity: sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==} + engines: {node: '>=10.0.0'} + requiresBuild: true dependencies: elliptic: 6.5.4 node-addon-api: 2.0.2 node-gyp-build: 4.8.0 + dev: true + + /secure-json-parse@2.7.0: + resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} + dev: false - secure-json-parse@2.7.0: {} + /semver-compare@1.0.0: + resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==} + dev: true - semver-compare@1.0.0: {} + /semver@5.7.1: + resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} + hasBin: true + dev: true - semver@5.7.1: {} + /semver@6.3.0: + resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} + hasBin: true + dev: true - semver@6.3.0: {} + /semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + dev: true - semver@7.5.0: + /semver@7.5.0: + resolution: {integrity: sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==} + engines: {node: '>=10'} + hasBin: true dependencies: lru-cache: 6.0.0 - semver@7.6.0: + /semver@7.6.0: + resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} + engines: {node: '>=10'} + hasBin: true dependencies: lru-cache: 6.0.0 - serialize-javascript@6.0.0: + /serialize-javascript@6.0.0: + resolution: {integrity: sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==} dependencies: randombytes: 2.1.0 + dev: true - set-blocking@2.0.0: {} + /set-blocking@2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - set-cookie-parser@2.6.0: {} + /set-cookie-parser@2.6.0: + resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} + dev: false - setimmediate@1.0.5: {} + /setimmediate@1.0.5: + resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} + dev: true - setprototypeof@1.2.0: {} + /setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - sha.js@2.4.11: + /sha.js@2.4.11: + resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} + hasBin: true dependencies: inherits: 2.0.4 safe-buffer: 5.2.1 + dev: true - shebang-command@1.2.0: + /shebang-command@1.2.0: + resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} + engines: {node: '>=0.10.0'} dependencies: shebang-regex: 1.0.0 + dev: true - shebang-command@2.0.0: + /shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} dependencies: shebang-regex: 3.0.0 - shebang-regex@1.0.0: {} + /shebang-regex@1.0.0: + resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} + engines: {node: '>=0.10.0'} + dev: true - shebang-regex@3.0.0: {} + /shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} - shell-quote@1.8.1: {} + /shell-quote@1.8.1: + resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} + dev: true - side-channel@1.0.4: + /side-channel@1.0.4: + resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} dependencies: call-bind: 1.0.2 get-intrinsic: 1.1.3 object-inspect: 1.12.2 + dev: true - siginfo@2.0.0: {} + /siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + dev: true - signal-exit@3.0.7: {} + /signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - simple-concat@1.0.1: {} + /simple-concat@1.0.1: + resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} + dev: false - simple-get@4.0.1: + /simple-get@4.0.1: + resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} dependencies: decompress-response: 6.0.0 once: 1.4.0 simple-concat: 1.0.1 + dev: false - sisteransi@1.0.5: {} + /sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + dev: true - slash@3.0.0: {} + /slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} - slice-ansi@0.0.4: {} + /slice-ansi@0.0.4: + resolution: {integrity: sha512-up04hB2hR92PgjpyU3y/eg91yIBILyjVY26NvvciY3EVVPjybkMszMpXQ9QAkcS3I5rtJBDLoTxxg+qvW8c7rw==} + engines: {node: '>=0.10.0'} + dev: true - slice-ansi@2.1.0: + /slice-ansi@2.1.0: + resolution: {integrity: sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==} + engines: {node: '>=6'} dependencies: ansi-styles: 3.2.1 astral-regex: 1.0.0 is-fullwidth-code-point: 2.0.0 + dev: true - slice-ansi@4.0.0: + /slice-ansi@4.0.0: + resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} + engines: {node: '>=10'} dependencies: ansi-styles: 4.3.0 astral-regex: 2.0.0 is-fullwidth-code-point: 3.0.0 + dev: false - smart-buffer@4.2.0: {} + /smart-buffer@4.2.0: + resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} + engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} + dev: false - smartwrap@2.0.2: + /smartwrap@2.0.2: + resolution: {integrity: sha512-vCsKNQxb7PnCNd2wY1WClWifAc2lwqsG8OaswpJkVJsvMGcnEntdTCDajZCkk93Ay1U3t/9puJmb525Rg5MZBA==} + engines: {node: '>=6'} + hasBin: true dependencies: array.prototype.flat: 1.3.1 breakword: 1.0.6 @@ -14249,21 +12089,31 @@ snapshots: strip-ansi: 6.0.1 wcwidth: 1.0.1 yargs: 15.4.1 + dev: true - socks-proxy-agent@7.0.0: + /socks-proxy-agent@7.0.0: + resolution: {integrity: sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==} + engines: {node: '>= 10'} dependencies: agent-base: 6.0.2 debug: 4.3.4(supports-color@8.1.1) socks: 2.7.1 transitivePeerDependencies: - supports-color + dev: false - socks@2.7.1: + /socks@2.7.1: + resolution: {integrity: sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==} + engines: {node: '>= 10.13.0', npm: '>= 3.0.0'} dependencies: ip: 2.0.0 smart-buffer: 4.2.0 + dev: false - solc@0.7.3(debug@4.3.4): + /solc@0.7.3(debug@4.3.4): + resolution: {integrity: sha512-GAsWNAjGzIDg7VxzP6mPjdurby3IkGCjQcM8GFYZT6RyaoUZKmMU6Y7YwG+tFGhv7dwZ8rmR4iwFDrrD99JwqA==} + engines: {node: '>=8.0.0'} + hasBin: true dependencies: command-exists: 1.2.9 commander: 3.0.2 @@ -14276,8 +12126,11 @@ snapshots: tmp: 0.0.33 transitivePeerDependencies: - debug + dev: true - solhint@3.3.7: + /solhint@3.3.7: + resolution: {integrity: sha512-NjjjVmXI3ehKkb3aNtRJWw55SUVJ8HMKKodwe0HnejA+k0d2kmhw7jvpa+MCTbcEgt8IWSwx0Hu6aCo/iYOZzQ==} + hasBin: true dependencies: '@solidity-parser/parser': 0.14.5 ajv: 6.12.6 @@ -14297,121 +12150,196 @@ snapshots: prettier: 1.19.1 transitivePeerDependencies: - supports-color + dev: true - solidity-comments-extractor@0.0.8: {} + /solidity-comments-extractor@0.0.8: + resolution: {integrity: sha512-htM7Vn6LhHreR+EglVMd2s+sZhcXAirB1Zlyrv5zBuTxieCvjfnRpd7iZk75m/u6NOlEyQ94C6TWbBn2cY7w8g==} - sonic-boom@3.3.0: + /sonic-boom@3.3.0: + resolution: {integrity: sha512-LYxp34KlZ1a2Jb8ZQgFCK3niIHzibdwtwNUWKg0qQRzsDoJ3Gfgkf8KdBTFU3SkejDEIlWwnSnpVdOZIhFMl/g==} dependencies: atomic-sleep: 1.0.0 + dev: false - source-map-js@1.0.2: {} + /source-map-js@1.0.2: + resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + engines: {node: '>=0.10.0'} + dev: true - source-map-support@0.5.13: + /source-map-support@0.5.13: + resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} dependencies: buffer-from: 1.1.2 source-map: 0.6.1 + dev: true - source-map-support@0.5.21: + /source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} dependencies: buffer-from: 1.1.2 source-map: 0.6.1 + dev: true - source-map@0.6.1: {} + /source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} - source-map@0.8.0-beta.0: + /source-map@0.8.0-beta.0: + resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} + engines: {node: '>= 8'} dependencies: whatwg-url: 7.1.0 + dev: true - spawn-command@0.0.2: {} + /spawn-command@0.0.2: + resolution: {integrity: sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==} + dev: true - spawndamnit@2.0.0: + /spawndamnit@2.0.0: + resolution: {integrity: sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA==} dependencies: cross-spawn: 5.1.0 signal-exit: 3.0.7 + dev: true - spdx-correct@3.2.0: + /spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} dependencies: spdx-expression-parse: 3.0.1 spdx-license-ids: 3.0.13 + dev: true - spdx-exceptions@2.3.0: {} + /spdx-exceptions@2.3.0: + resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} + dev: true - spdx-expression-parse@3.0.1: + /spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} dependencies: spdx-exceptions: 2.3.0 spdx-license-ids: 3.0.13 + dev: true - spdx-license-ids@3.0.13: {} + /spdx-license-ids@3.0.13: + resolution: {integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==} + dev: true - split2@3.2.2: + /split2@3.2.2: + resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==} dependencies: readable-stream: 3.6.0 + dev: true - split2@4.2.0: {} + /split2@4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} + engines: {node: '>= 10.x'} + dev: false - sprintf-js@1.0.3: {} + /sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + dev: true - sql.js@1.8.0: {} + /sql.js@1.8.0: + resolution: {integrity: sha512-3HD8pSkZL+5YvYUI8nlvNILs61ALqq34xgmF+BHpqxe68yZIJ1H+sIVIODvni25+CcxHUxDyrTJUL0lE/m7afw==} + dev: false - ssri@9.0.1: + /ssri@9.0.1: + resolution: {integrity: sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} dependencies: minipass: 3.3.6 + dev: false - stack-utils@2.0.6: + /stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} dependencies: escape-string-regexp: 2.0.0 + dev: true - stackback@0.0.2: {} + /stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + dev: true - stacktrace-parser@0.1.10: + /stacktrace-parser@0.1.10: + resolution: {integrity: sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==} + engines: {node: '>=6'} dependencies: type-fest: 0.7.1 + dev: true - statuses@1.5.0: {} + /statuses@1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} + dev: false - statuses@2.0.1: {} + /statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} - std-env@3.7.0: {} + /std-env@3.7.0: + resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} + dev: true - stream-shift@1.0.1: {} + /stream-shift@1.0.1: + resolution: {integrity: sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==} + dev: false - stream-to-array@2.3.0: + /stream-to-array@2.3.0: + resolution: {integrity: sha512-UsZtOYEn4tWU2RGLOXr/o/xjRBftZRlG3dEWoaHr8j4GuypJ3isitGbVyjQKAuMu+xbiop8q224TjiZWc4XTZA==} dependencies: any-promise: 1.3.0 + dev: false - stream-transform@2.1.3: + /stream-transform@2.1.3: + resolution: {integrity: sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ==} dependencies: mixme: 0.5.9 + dev: true - string-length@4.0.2: + /string-length@4.0.2: + resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} + engines: {node: '>=10'} dependencies: char-regex: 1.0.2 strip-ansi: 6.0.1 + dev: true - string-width@1.0.2: + /string-width@1.0.2: + resolution: {integrity: sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==} + engines: {node: '>=0.10.0'} dependencies: code-point-at: 1.1.0 is-fullwidth-code-point: 1.0.0 strip-ansi: 3.0.1 + dev: true - string-width@2.1.1: + /string-width@2.1.1: + resolution: {integrity: sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==} + engines: {node: '>=4'} dependencies: is-fullwidth-code-point: 2.0.0 strip-ansi: 4.0.0 + dev: true - string-width@3.1.0: + /string-width@3.1.0: + resolution: {integrity: sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==} + engines: {node: '>=6'} dependencies: emoji-regex: 7.0.3 is-fullwidth-code-point: 2.0.0 strip-ansi: 5.2.0 - string-width@4.2.3: + /string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} dependencies: emoji-regex: 8.0.0 is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 - string.prototype.matchall@4.0.8: + /string.prototype.matchall@4.0.8: + resolution: {integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==} dependencies: call-bind: 1.0.2 define-properties: 1.1.4 @@ -14421,76 +12349,123 @@ snapshots: internal-slot: 1.0.3 regexp.prototype.flags: 1.4.3 side-channel: 1.0.4 + dev: true - string.prototype.trimend@1.0.6: + /string.prototype.trimend@1.0.6: + resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} dependencies: call-bind: 1.0.2 define-properties: 1.1.4 es-abstract: 1.20.5 + dev: true - string.prototype.trimstart@1.0.6: + /string.prototype.trimstart@1.0.6: + resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} dependencies: call-bind: 1.0.2 define-properties: 1.1.4 es-abstract: 1.20.5 + dev: true - string_decoder@1.1.1: + /string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} dependencies: safe-buffer: 5.1.2 + dev: false - string_decoder@1.3.0: + /string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} dependencies: safe-buffer: 5.2.1 - stringcase@4.3.1: {} + /stringcase@4.3.1: + resolution: {integrity: sha512-Ov7McNX1sFaEX9NWijD1hIOVDDhKdnFzN9tvoa1N8xgrclouhsO4kBPVrTPhjO/zP5mn1Ww03uZ2SThNMXS7zg==} + engines: {node: '>=8', npm: '>=5'} + dev: false - stringify-object@3.3.0: + /stringify-object@3.3.0: + resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==} + engines: {node: '>=4'} dependencies: get-own-enumerable-property-symbols: 3.0.2 is-obj: 1.0.1 is-regexp: 1.0.0 + dev: true - strip-ansi@3.0.1: + /strip-ansi@3.0.1: + resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==} + engines: {node: '>=0.10.0'} dependencies: ansi-regex: 2.1.1 + dev: true - strip-ansi@4.0.0: + /strip-ansi@4.0.0: + resolution: {integrity: sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==} + engines: {node: '>=4'} dependencies: ansi-regex: 3.0.1 + dev: true - strip-ansi@5.2.0: + /strip-ansi@5.2.0: + resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} + engines: {node: '>=6'} dependencies: ansi-regex: 4.1.1 - strip-ansi@6.0.1: + /strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} dependencies: ansi-regex: 5.0.1 - strip-bom@3.0.0: {} + /strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + dev: true - strip-bom@4.0.0: {} + /strip-bom@4.0.0: + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} + dev: true - strip-final-newline@2.0.0: {} + /strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} - strip-final-newline@3.0.0: {} + /strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + dev: true - strip-hex-prefix@1.0.0: + /strip-hex-prefix@1.0.0: + resolution: {integrity: sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==} + engines: {node: '>=6.5.0', npm: '>=3'} dependencies: is-hex-prefixed: 1.0.0 + dev: true - strip-indent@3.0.0: + /strip-indent@3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} dependencies: min-indent: 1.0.1 + dev: true - strip-json-comments@2.0.1: {} + /strip-json-comments@2.0.1: + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} + engines: {node: '>=0.10.0'} - strip-json-comments@3.1.1: {} + /strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + dev: true - strip-literal@1.3.0: + /strip-literal@1.3.0: + resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==} dependencies: acorn: 8.11.3 + dev: true -<<<<<<< HEAD /strnum@1.0.5: resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} dev: false @@ -14499,9 +12474,6 @@ snapshots: resolution: {integrity: sha512-ydQOU34rpSyj2TGyz4D2p8rbktIOZ8QY9s+DGLvFU1i5pWJE8vkpruCjGCMHsdXwnD7JDcS+noSwM/a7zyNFDQ==} engines: {node: '>=8'} hasBin: true -======= - sucrase@3.32.0: ->>>>>>> 1175edcf0 (feat: update pnpm and node version) dependencies: '@jridgewell/gen-mapping': 0.3.3 commander: 4.1.1 @@ -14510,49 +12482,82 @@ snapshots: mz: 2.7.0 pirates: 4.0.5 ts-interface-checker: 0.1.13 + dev: true - superjson@1.12.4: + /superjson@1.12.4: + resolution: {integrity: sha512-vkpPQAxdCg9SLfPv5GPC5fnGrui/WryktoN9O5+Zif/14QIMjw+RITf/5LbBh+9QpBFb3KNvJth+puz2H8o6GQ==} + engines: {node: '>=10'} dependencies: copy-anything: 3.0.5 + dev: false - supports-color@2.0.0: {} + /supports-color@2.0.0: + resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==} + engines: {node: '>=0.8.0'} + dev: true - supports-color@5.5.0: + /supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} dependencies: has-flag: 3.0.0 + dev: true - supports-color@7.2.0: + /supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} dependencies: has-flag: 4.0.0 - supports-color@8.1.1: + /supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} dependencies: has-flag: 4.0.0 - supports-preserve-symlinks-flag@1.0.0: {} + /supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + dev: true - symbol-observable@1.2.0: {} + /symbol-observable@1.2.0: + resolution: {integrity: sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==} + engines: {node: '>=0.10.0'} + dev: true - symbol-tree@3.2.4: {} + /symbol-tree@3.2.4: + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + dev: true - table@5.4.6: + /table@5.4.6: + resolution: {integrity: sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==} + engines: {node: '>=6.0.0'} dependencies: ajv: 6.12.6 lodash: 4.17.21 slice-ansi: 2.1.0 string-width: 3.1.0 + dev: true - table@6.8.1: + /table@6.8.1: + resolution: {integrity: sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==} + engines: {node: '>=10.0.0'} dependencies: ajv: 8.12.0 lodash.truncate: 4.4.2 slice-ansi: 4.0.0 string-width: 4.2.3 strip-ansi: 6.0.1 + dev: false - tailwind-merge@1.12.0: {} + /tailwind-merge@1.12.0: + resolution: {integrity: sha512-Y17eDp7FtN1+JJ4OY0Bqv9OA41O+MS8c1Iyr3T6JFLnOgLg3EvcyMKZAnQ8AGyvB5Nxm3t9Xb5Mhe139m8QT/g==} + dev: false - tailwindcss@3.3.2: + /tailwindcss@3.3.2: + resolution: {integrity: sha512-9jPkMiIBXvPc2KywkraqsUfbfj+dHDb+JPWtSJa9MLFdrPyazI7q6WX2sUrm7R9eVR7qqv3Pas7EvQFzxKnI6w==} + engines: {node: '>=14.0.0'} + hasBin: true dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -14579,23 +12584,31 @@ snapshots: sucrase: 3.32.0 transitivePeerDependencies: - ts-node + dev: true - tar-fs@2.1.1: + /tar-fs@2.1.1: + resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} dependencies: chownr: 1.1.4 mkdirp-classic: 0.5.3 pump: 3.0.0 tar-stream: 2.2.0 + dev: false - tar-stream@2.2.0: + /tar-stream@2.2.0: + resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} + engines: {node: '>=6'} dependencies: bl: 4.1.0 end-of-stream: 1.4.4 fs-constants: 1.0.0 inherits: 2.0.4 readable-stream: 3.6.0 + dev: false - tar@6.2.0: + /tar@6.2.0: + resolution: {integrity: sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==} + engines: {node: '>=10'} dependencies: chownr: 2.0.0 fs-minipass: 2.1.0 @@ -14603,7 +12616,9 @@ snapshots: minizlib: 2.1.2 mkdirp: 1.0.4 yallist: 4.0.0 + dev: false +<<<<<<< HEAD <<<<<<< HEAD /tdigest@0.1.2: resolution: {integrity: sha512-+G0LLgjjo9BZX2MfdvPfH+MKLCrxlXSYec5DaPYP1fe6Iyhf0/fSmJ0bFiZ1F8BT6cGXl2LpltQptzjXKWEkKA==} @@ -14611,115 +12626,220 @@ snapshots: bintrees: 1.0.2 dev: false +======= +>>>>>>> 9643c6a1f (Revert "feat: update pnpm and node version") /term-size@2.2.1: resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} engines: {node: '>=8'} dev: true +<<<<<<< HEAD ======= term-size@2.2.1: {} >>>>>>> d2ee83450 (feat: update pnpm and node version) +======= +>>>>>>> 9643c6a1f (Revert "feat: update pnpm and node version") - test-exclude@6.0.0: + /test-exclude@6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} dependencies: '@istanbuljs/schema': 0.1.3 glob: 7.2.3 minimatch: 3.1.2 + dev: true - text-table@0.2.0: {} + /text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + dev: true - thenify-all@1.6.0: + /thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} dependencies: thenify: 3.3.1 + dev: true - thenify@3.3.1: + /thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} dependencies: any-promise: 1.3.0 + dev: true - thread-stream@2.3.0: + /thread-stream@2.3.0: + resolution: {integrity: sha512-kaDqm1DET9pp3NXwR8382WHbnpXnRkN9xGN9dQt3B2+dmXiW8X1SOwmFOxAErEQ47ObhZ96J6yhZNXuyCOL7KA==} dependencies: real-require: 0.2.0 + dev: false - throttle-debounce@5.0.0: {} + /throttle-debounce@5.0.0: + resolution: {integrity: sha512-2iQTSgkkc1Zyk0MeVrt/3BvuOXYPl/R8Z0U2xxo9rjwNciaHDG3R+Lm6dh4EeUci49DanvBnuqI6jshoQQRGEg==} + engines: {node: '>=12.22'} + dev: false - through2@2.0.5: + /through2@2.0.5: + resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} dependencies: readable-stream: 2.3.8 xtend: 4.0.2 + dev: false - through2@4.0.2: + /through2@4.0.2: + resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==} dependencies: readable-stream: 3.6.0 + dev: true - through@2.3.8: {} + /through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - timers-ext@0.1.7: + /timers-ext@0.1.7: + resolution: {integrity: sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==} dependencies: es5-ext: 0.10.62 next-tick: 1.1.0 + dev: false - tiny-lru@11.0.1: {} + /tiny-lru@11.0.1: + resolution: {integrity: sha512-iNgFugVuQgBKrqeO/mpiTTgmBsTP0WL6yeuLfLs/Ctf0pI/ixGqIRm8sDCwMcXGe9WWvt2sGXI5mNqZbValmJg==} + engines: {node: '>=12'} + dev: false - tinybench@2.6.0: {} + /tinybench@2.6.0: + resolution: {integrity: sha512-N8hW3PG/3aOoZAN5V/NSAEDz0ZixDSSt5b/a05iqtpgfLWMSVuCo7w0k2vVvEjdrIoeGqZzweX2WlyioNIHchA==} + dev: true - tinypool@0.7.0: {} + /tinypool@0.7.0: + resolution: {integrity: sha512-zSYNUlYSMhJ6Zdou4cJwo/p7w5nmAH17GRfU/ui3ctvjXFErXXkruT4MWW6poDeXgCaIBlGLrfU6TbTXxyGMww==} + engines: {node: '>=14.0.0'} + dev: true - tinyspy@2.2.0: {} + /tinyspy@2.2.0: + resolution: {integrity: sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg==} + engines: {node: '>=14.0.0'} + dev: true - tmp@0.0.33: + /tmp@0.0.33: + resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} + engines: {node: '>=0.6.0'} dependencies: os-tmpdir: 1.0.2 - tmpl@1.0.5: {} + /tmpl@1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + dev: true - to-fast-properties@2.0.0: {} + /to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + dev: true - to-regex-range@5.0.1: + /to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} dependencies: is-number: 7.0.0 - toidentifier@1.0.1: {} + /toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} - toposort@2.0.2: {} + /toposort@2.0.2: + resolution: {integrity: sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==} + dev: false - tough-cookie@4.1.3: + /tough-cookie@4.1.3: + resolution: {integrity: sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==} + engines: {node: '>=6'} dependencies: psl: 1.9.0 punycode: 2.3.0 universalify: 0.2.0 url-parse: 1.5.10 + dev: true - tr46@0.0.3: {} + /tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + dev: false - tr46@1.0.1: + /tr46@1.0.1: + resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} dependencies: punycode: 2.3.0 + dev: true - tr46@4.1.1: + /tr46@4.1.1: + resolution: {integrity: sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==} + engines: {node: '>=14'} dependencies: punycode: 2.3.0 + dev: true - tree-kill@1.2.2: {} + /tree-kill@1.2.2: + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + hasBin: true + dev: true - treeify@1.1.0: {} + /treeify@1.1.0: + resolution: {integrity: sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==} + engines: {node: '>=0.6'} + dev: true - trim-newlines@3.0.1: {} + /trim-newlines@3.0.1: + resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} + engines: {node: '>=8'} + dev: true - trpc-koa-adapter@1.1.3(@trpc/server@10.34.0)(koa@2.14.2): + /trpc-koa-adapter@1.1.3(@trpc/server@10.34.0)(koa@2.14.2): + resolution: {integrity: sha512-2rdmVuuFGLMyrUtW6ktroAzBsp2fc8oFuOEhNAcroJBei3DPF/UISr9qAeQX4MUEi9FCT2+bi4pBPcm8HKj8PA==} + peerDependencies: + '@trpc/server': ^10.0.0-rc.4 + koa: '>=2.13.0' dependencies: '@trpc/server': 10.34.0 koa: 2.14.2 + dev: false - ts-api-utils@1.2.1(typescript@5.4.2): + /ts-api-utils@1.2.1(typescript@5.4.2): + resolution: {integrity: sha512-RIYA36cJn2WiH9Hy77hdF9r7oEwxAtB/TS9/S4Qd90Ap4z5FSiin5zEiTL44OII1Y3IIlEvxwxFUVgrHSZ/UpA==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' dependencies: typescript: 5.4.2 + dev: true - ts-error@1.0.6: {} + /ts-error@1.0.6: + resolution: {integrity: sha512-tLJxacIQUM82IR7JO1UUkKlYuUTmoY9HBJAmNWFzheSlDS5SPMcNIepejHJa4BpPQLAcbRhRf3GDJzyj6rbKvA==} + dev: false - ts-interface-checker@0.1.13: {} + /ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + dev: true - ts-jest@29.0.5(@babel/core@7.21.4)(@jest/types@29.5.0)(babel-jest@29.5.0(@babel/core@7.21.4))(esbuild@0.17.17)(jest@29.5.0(@types/node@18.15.11))(typescript@5.4.2): + /ts-jest@29.0.5(@babel/core@7.24.4)(esbuild@0.17.17)(jest@29.5.0)(typescript@5.4.2): + resolution: {integrity: sha512-PL3UciSgIpQ7f6XjVOmbi96vmDHUqAyqDr8YxzopDqX3kfgYtX1cuNeBjP+L9sFXi6nzsGGA6R3fP3DDDJyrxA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + '@babel/core': '>=7.0.0-beta.0 <8' + '@jest/types': ^29.0.0 + babel-jest: ^29.0.0 + esbuild: '*' + jest: ^29.0.0 + typescript: '>=4.3' + peerDependenciesMeta: + '@babel/core': + optional: true + '@jest/types': + optional: true + babel-jest: + optional: true + esbuild: + optional: true dependencies: + '@babel/core': 7.24.4 bs-logger: 0.2.6 + esbuild: 0.17.17 fast-json-stable-stringify: 2.1.0 jest: 29.5.0(@types/node@18.15.11) jest-util: 29.5.0 @@ -14729,22 +12849,24 @@ snapshots: semver: 7.5.0 typescript: 5.4.2 yargs-parser: 21.1.1 - optionalDependencies: - '@babel/core': 7.21.4 - '@jest/types': 29.5.0 - babel-jest: 29.5.0(@babel/core@7.21.4) - esbuild: 0.17.17 + dev: true - ts-poet@6.4.1: + /ts-poet@6.4.1: + resolution: {integrity: sha512-AjZEs4h2w4sDfwpHMxQKHrTlNh2wRbM5NRXmLz0RiH+yPGtSQFbe9hBpNocU8vqVNgfh0BIOiXR80xDz3kKxUQ==} dependencies: dprint-node: 1.0.7 + dev: true - ts-proto-descriptors@1.8.0: + /ts-proto-descriptors@1.8.0: + resolution: {integrity: sha512-iV20plcI8+GRkeZIAygxOOH0p2xpOsKfw9kI1W20NCwawi1/4bG/YRd9rQY9XSJP+lD9j7XbSy3tFFuikfsljw==} dependencies: long: 4.0.0 protobufjs: 6.11.3 + dev: true - ts-proto@1.146.0: + /ts-proto@1.146.0: + resolution: {integrity: sha512-OyBZRjmqqw+aatLEUbRooWO6VKTtOLJQyaQFMciigEZPNgTsWtApqHpQDtqDMQFWEXhIARqEV+B7ZJx8cljhZA==} + hasBin: true dependencies: '@types/object-hash': 1.3.4 case-anything: 2.1.10 @@ -14753,25 +12875,42 @@ snapshots: protobufjs: 6.11.3 ts-poet: 6.4.1 ts-proto-descriptors: 1.8.0 + dev: true - tslib@1.14.1: {} + /tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} -<<<<<<< HEAD /tslib@2.5.0: resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} dev: false /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} -======= - tslib@2.5.0: {} ->>>>>>> 1175edcf0 (feat: update pnpm and node version) - tsort@0.0.1: {} + /tsort@0.0.1: + resolution: {integrity: sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==} + dev: true - tsscmp@1.0.6: {} + /tsscmp@1.0.6: + resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==} + engines: {node: '>=0.6.x'} + dev: false - tsup@6.7.0(postcss@8.4.23)(typescript@5.4.2): + /tsup@6.7.0(postcss@8.4.23)(typescript@5.4.2): + resolution: {integrity: sha512-L3o8hGkaHnu5TdJns+mCqFsDBo83bJ44rlK7e6VdanIvpea4ArPcU3swWGsLVbXak1PqQx/V+SSmFPujBK+zEQ==} + engines: {node: '>=14.18'} + hasBin: true + peerDependencies: + '@swc/core': ^1 + postcss: ^8.4.12 + typescript: '>=4.1.0' + peerDependenciesMeta: + '@swc/core': + optional: true + postcss: + optional: true + typescript: + optional: true dependencies: bundle-require: 4.0.1(esbuild@0.17.17) cac: 6.7.14 @@ -14781,28 +12920,34 @@ snapshots: execa: 5.1.1 globby: 11.1.0 joycon: 3.1.1 + postcss: 8.4.23 postcss-load-config: 3.1.4(postcss@8.4.23) resolve-from: 5.0.0 rollup: 3.21.8 source-map: 0.8.0-beta.0 sucrase: 3.32.0 tree-kill: 1.2.2 - optionalDependencies: - postcss: 8.4.23 typescript: 5.4.2 transitivePeerDependencies: - supports-color - ts-node + dev: true - tsx@3.12.6: + /tsx@3.12.6: + resolution: {integrity: sha512-q93WgS3lBdHlPgS0h1i+87Pt6n9K/qULIMNYZo07nSeu2z5QE2CellcAZfofVXBo2tQg9av2ZcRMQ2S2i5oadQ==} + hasBin: true dependencies: '@esbuild-kit/cjs-loader': 2.4.2 '@esbuild-kit/core-utils': 3.1.0 '@esbuild-kit/esm-loader': 2.5.5 optionalDependencies: fsevents: 2.3.3 + dev: true - tty-table@4.2.1: + /tty-table@4.2.1: + resolution: {integrity: sha512-xz0uKo+KakCQ+Dxj1D/tKn2FSyreSYWzdkL/BYhgN6oMW808g8QRMuh1atAV9fjTPbWBjfbkKQpI/5rEcnAc7g==} + engines: {node: '>=8.0.0'} + hasBin: true dependencies: chalk: 4.1.2 csv: 5.5.3 @@ -14810,36 +12955,67 @@ snapshots: smartwrap: 2.0.2 strip-ansi: 6.0.1 wcwidth: 1.0.1 -<<<<<<< HEAD yargs: 17.7.2 dev: true -======= - yargs: 17.7.1 ->>>>>>> 1175edcf0 (feat: update pnpm and node version) - tunnel-agent@0.6.0: + /tunnel-agent@0.6.0: + resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} dependencies: safe-buffer: 5.2.1 + dev: false - turbo-darwin-64@1.9.3: + /turbo-darwin-64@1.9.3: + resolution: {integrity: sha512-0dFc2cWXl82kRE4Z+QqPHhbEFEpUZho1msHXHWbz5+PqLxn8FY0lEVOHkq5tgKNNEd5KnGyj33gC/bHhpZOk5g==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true optional: true - turbo-darwin-arm64@1.9.3: + /turbo-darwin-arm64@1.9.3: + resolution: {integrity: sha512-1cYbjqLBA2zYE1nbf/qVnEkrHa4PkJJbLo7hnuMuGM0bPzh4+AnTNe98gELhqI1mkTWBu/XAEeF5u6dgz0jLNA==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true optional: true - turbo-linux-64@1.9.3: + /turbo-linux-64@1.9.3: + resolution: {integrity: sha512-UuBPFefawEwpuxh5pM9Jqq3q4C8M0vYxVYlB3qea/nHQ80pxYq7ZcaLGEpb10SGnr3oMUUs1zZvkXWDNKCJb8Q==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true optional: true - turbo-linux-arm64@1.9.3: + /turbo-linux-arm64@1.9.3: + resolution: {integrity: sha512-vUrNGa3hyDtRh9W0MkO+l1dzP8Co2gKnOVmlJQW0hdpOlWlIh22nHNGGlICg+xFa2f9j4PbQlWTsc22c019s8Q==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true optional: true - turbo-windows-64@1.9.3: + /turbo-windows-64@1.9.3: + resolution: {integrity: sha512-0BZ7YaHs6r+K4ksqWus1GKK3W45DuDqlmfjm/yuUbTEVc8szmMCs12vugU2Zi5GdrdJSYfoKfEJ/PeegSLIQGQ==} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true optional: true - turbo-windows-arm64@1.9.3: + /turbo-windows-arm64@1.9.3: + resolution: {integrity: sha512-QJUYLSsxdXOsR1TquiOmLdAgtYcQ/RuSRpScGvnZb1hY0oLc7JWU0llkYB81wVtWs469y8H9O0cxbKwCZGR4RQ==} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true optional: true - turbo@1.9.3: + /turbo@1.9.3: + resolution: {integrity: sha512-ID7mxmaLUPKG/hVkp+h0VuucB1U99RPCJD9cEuSEOdIPoSIuomcIClEJtKamUsdPLhLCud+BvapBNnhgh58Nzw==} + hasBin: true + requiresBuild: true optionalDependencies: turbo-darwin-64: 1.9.3 turbo-darwin-arm64: 1.9.3 @@ -14847,111 +13023,206 @@ snapshots: turbo-linux-arm64: 1.9.3 turbo-windows-64: 1.9.3 turbo-windows-arm64: 1.9.3 + dev: true - tweetnacl-util@0.15.1: {} + /tweetnacl-util@0.15.1: + resolution: {integrity: sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==} + dev: true - tweetnacl@1.0.3: {} + /tweetnacl@1.0.3: + resolution: {integrity: sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==} + dev: true - type-check@0.3.2: + /type-check@0.3.2: + resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} + engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.1.2 + dev: true - type-check@0.4.0: + /type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.2.1 + dev: true - type-detect@4.0.8: {} + /type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + dev: true - type-fest@0.13.1: {} + /type-fest@0.13.1: + resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} + engines: {node: '>=10'} + dev: true - type-fest@0.20.2: {} + /type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + dev: true - type-fest@0.21.3: {} + /type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} - type-fest@0.6.0: {} + /type-fest@0.6.0: + resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} + engines: {node: '>=8'} + dev: true - type-fest@0.7.1: {} + /type-fest@0.7.1: + resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} + engines: {node: '>=8'} + dev: true - type-fest@0.8.1: {} + /type-fest@0.8.1: + resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} + engines: {node: '>=8'} + dev: true - type-fest@2.14.0: {} + /type-fest@2.14.0: + resolution: {integrity: sha512-hQnTQkFjL5ik6HF2fTAM8ycbr94UbQXK364wF930VHb0dfBJ5JBP8qwrR8TaK9zwUEk7meruo2JAUDMwvuxd/w==} + engines: {node: '>=12.20'} + dev: true - type-is@1.6.18: + /type-is@1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} dependencies: media-typer: 0.3.0 mime-types: 2.1.35 + dev: false - type@1.2.0: {} + /type@1.2.0: + resolution: {integrity: sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==} + dev: false - type@2.7.2: {} + /type@2.7.2: + resolution: {integrity: sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==} + dev: false - typescript@5.4.2: {} + /typescript@5.4.2: + resolution: {integrity: sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==} + engines: {node: '>=14.17'} + hasBin: true - ufo@1.3.2: {} + /ufo@1.3.2: + resolution: {integrity: sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==} + dev: true - uglify-js@3.17.4: + /uglify-js@3.17.4: + resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==} + engines: {node: '>=0.8.0'} + hasBin: true + requiresBuild: true + dev: false optional: true - unbox-primitive@1.0.2: + /unbox-primitive@1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} dependencies: call-bind: 1.0.2 has-bigints: 1.0.2 has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 + dev: true - undici@5.28.3: + /undici@5.28.3: + resolution: {integrity: sha512-3ItfzbrhDlINjaP0duwnNsKpDQk3acHI3gVJ1z4fmwMK31k5G9OVIAMLSIaP6w4FaGkaAkN6zaQO9LUvZ1t7VA==} + engines: {node: '>=14.0'} dependencies: '@fastify/busboy': 2.1.1 + dev: true - unique-filename@2.0.1: + /unique-filename@2.0.1: + resolution: {integrity: sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} dependencies: unique-slug: 3.0.0 + dev: false - unique-slug@3.0.0: + /unique-slug@3.0.0: + resolution: {integrity: sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} dependencies: imurmurhash: 0.1.4 + dev: false - universalify@0.1.2: {} + /universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + dev: true - universalify@0.2.0: {} + /universalify@0.2.0: + resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} + engines: {node: '>= 4.0.0'} + dev: true - unpipe@1.0.0: {} + /unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + dev: true - update-browserslist-db@1.0.10(browserslist@4.21.5): + /update-browserslist-db@1.0.13(browserslist@4.23.0): + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' dependencies: - browserslist: 4.21.5 - escalade: 3.1.1 + browserslist: 4.23.0 + escalade: 3.1.2 picocolors: 1.0.0 + dev: true - uri-js@4.4.1: + /uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: punycode: 2.3.0 - url-parse@1.5.10: + /url-parse@1.5.10: + resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} dependencies: querystringify: 2.2.0 requires-port: 1.0.0 + dev: true - use-local-storage-state@18.3.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + /use-local-storage-state@18.3.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-JiTuQsJmmKvc0mH0hiSjaTkKFlwtwXTeOlJ+cdg7rRJzZWwv+s/Rr2S2r2NR68O0W5ogwwt1MX1y+P2wQ1lY4w==} + engines: {node: '>=12'} + peerDependencies: + react: '>=18' + react-dom: '>=18' dependencies: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + dev: false - use-sync-external-store@1.2.0(react@18.2.0): + /use-sync-external-store@1.2.0(react@18.2.0): + resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: react: 18.2.0 + dev: false - utf8@3.0.0: {} + /utf8@3.0.0: + resolution: {integrity: sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==} + dev: true - util-deprecate@1.0.2: {} + /util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - util@0.10.4: + /util@0.10.4: + resolution: {integrity: sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==} dependencies: inherits: 2.0.3 + dev: false - uuid@8.3.2: {} + /uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true -<<<<<<< HEAD /uuid@9.0.1: resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} hasBin: true @@ -14960,22 +13231,31 @@ snapshots: /v8-to-istanbul@9.1.0: resolution: {integrity: sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==} engines: {node: '>=10.12.0'} -======= - v8-to-istanbul@9.1.0: ->>>>>>> 1175edcf0 (feat: update pnpm and node version) dependencies: '@jridgewell/trace-mapping': 0.3.18 '@types/istanbul-lib-coverage': 2.0.4 convert-source-map: 1.9.0 + dev: true - validate-npm-package-license@3.0.4: + /validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} dependencies: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 + dev: true - vary@1.1.2: {} + /vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + dev: false - viem@2.9.20(typescript@5.4.2)(zod@3.21.4): + /viem@2.9.20(typescript@5.4.2)(zod@3.21.4): + resolution: {integrity: sha512-PHb1MrBHMrSZ8Ayuk3Y/6wUTcMbzlACQaM6AJBSv9kRKX3xYSZ/kehi+gvS0swQJeAlTQ4eZM7jsHQJNAOarmg==} + peerDependencies: + typescript: '>=5.0.4' + peerDependenciesMeta: + typescript: + optional: true dependencies: '@adraffy/ens-normalize': 1.10.0 '@noble/curves': 1.2.0 @@ -14984,15 +13264,18 @@ snapshots: '@scure/bip39': 1.2.1 abitype: 1.0.0(typescript@5.4.2)(zod@3.21.4) isows: 1.0.3(ws@8.13.0) - ws: 8.13.0 - optionalDependencies: typescript: 5.4.2 + ws: 8.13.0 transitivePeerDependencies: - bufferutil - utf-8-validate - zod + dev: false - vite-node@0.34.6(@types/node@18.15.11): + /vite-node@0.34.6(@types/node@18.15.11): + resolution: {integrity: sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA==} + engines: {node: '>=v14.18.0'} + hasBin: true dependencies: cac: 6.7.14 debug: 4.3.4(supports-color@8.1.1) @@ -15008,17 +13291,71 @@ snapshots: - sugarss - supports-color - terser + dev: true - vite@4.3.6(@types/node@18.15.11): + /vite@4.3.6(@types/node@18.15.11): + resolution: {integrity: sha512-cqIyLSbA6gornMS659AXTVKF7cvSHMdKmJJwQ9DXq3lwsT1uZSdktuBRlpHQ8VnOWx0QHtjDwxPpGtyo9Fh/Qg==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + '@types/node': '>= 14' + less: '*' + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true dependencies: + '@types/node': 18.15.11 esbuild: 0.17.17 postcss: 8.4.23 rollup: 3.21.8 optionalDependencies: - '@types/node': 18.15.11 fsevents: 2.3.3 + dev: true - vitest@0.34.6(jsdom@22.1.0): + /vitest@0.34.6(jsdom@22.1.0): + resolution: {integrity: sha512-+5CALsOvbNKnS+ZHMXtuUC7nL8/7F1F2DnHGjSsszX8zCjWSSviphCb/NuS9Nzf4Q03KyyDRBAXhF/8lffME4Q==} + engines: {node: '>=v14.18.0'} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@vitest/browser': '*' + '@vitest/ui': '*' + happy-dom: '*' + jsdom: '*' + playwright: '*' + safaridriver: '*' + webdriverio: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + playwright: + optional: true + safaridriver: + optional: true + webdriverio: + optional: true dependencies: '@types/chai': 4.3.5 '@types/chai-subset': 1.3.3 @@ -15033,6 +13370,7 @@ snapshots: cac: 6.7.14 chai: 4.4.1 debug: 4.3.4(supports-color@8.1.1) + jsdom: 22.1.0 local-pkg: 0.4.3 magic-string: 0.30.5 pathe: 1.1.2 @@ -15044,8 +13382,6 @@ snapshots: vite: 4.3.6(@types/node@18.15.11) vite-node: 0.34.6(@types/node@18.15.11) why-is-node-running: 2.2.2 - optionalDependencies: - jsdom: 22.1.0 transitivePeerDependencies: - less - sass @@ -15053,20 +13389,30 @@ snapshots: - sugarss - supports-color - terser + dev: true - w3c-xmlserializer@4.0.0: + /w3c-xmlserializer@4.0.0: + resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} + engines: {node: '>=14'} dependencies: xml-name-validator: 4.0.0 + dev: true - walker@1.0.8: + /walker@1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} dependencies: makeerror: 1.0.12 + dev: true - wcwidth@1.0.1: + /wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} dependencies: defaults: 1.0.4 + dev: true - web3-utils@1.10.4: + /web3-utils@1.10.4: + resolution: {integrity: sha512-tsu8FiKJLk2PzhDl9fXbGUWTkkVXYhtTA+SmEFkKft+9BgwLxfCRpU96sWv7ICC8zixBNd3JURVoiR3dUXgP8A==} + engines: {node: '>=8.0.0'} dependencies: '@ethereumjs/util': 8.1.0 bn.js: 5.2.1 @@ -15076,164 +13422,293 @@ snapshots: number-to-bn: 1.7.0 randombytes: 2.1.0 utf8: 3.0.0 + dev: true - webidl-conversions@3.0.1: {} + /webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + dev: false - webidl-conversions@4.0.2: {} + /webidl-conversions@4.0.2: + resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} + dev: true - webidl-conversions@7.0.0: {} + /webidl-conversions@7.0.0: + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + engines: {node: '>=12'} + dev: true - whatwg-encoding@2.0.0: + /whatwg-encoding@2.0.0: + resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} + engines: {node: '>=12'} dependencies: iconv-lite: 0.6.3 + dev: true - whatwg-mimetype@3.0.0: {} + /whatwg-mimetype@3.0.0: + resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} + engines: {node: '>=12'} + dev: true - whatwg-url@12.0.1: + /whatwg-url@12.0.1: + resolution: {integrity: sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==} + engines: {node: '>=14'} dependencies: tr46: 4.1.1 webidl-conversions: 7.0.0 + dev: true - whatwg-url@5.0.0: + /whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} dependencies: tr46: 0.0.3 webidl-conversions: 3.0.1 + dev: false - whatwg-url@7.1.0: + /whatwg-url@7.1.0: + resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} dependencies: lodash.sortby: 4.7.0 tr46: 1.0.1 webidl-conversions: 4.0.2 + dev: true - which-boxed-primitive@1.0.2: + /which-boxed-primitive@1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} dependencies: is-bigint: 1.0.4 is-boolean-object: 1.1.2 is-number-object: 1.0.7 is-string: 1.0.7 is-symbol: 1.0.4 + dev: true - which-module@2.0.0: {} + /which-module@2.0.0: + resolution: {integrity: sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==} - which-pm@2.0.0: + /which-pm@2.0.0: + resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==} + engines: {node: '>=8.15'} dependencies: load-yaml-file: 0.2.0 path-exists: 4.0.0 + dev: true - which@1.3.1: + /which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true dependencies: isexe: 2.0.0 + dev: true - which@2.0.2: + /which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true dependencies: isexe: 2.0.0 - why-is-node-running@2.2.2: + /why-is-node-running@2.2.2: + resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} + engines: {node: '>=8'} + hasBin: true dependencies: siginfo: 2.0.0 stackback: 0.0.2 + dev: true - wide-align@1.1.5: + /wide-align@1.1.5: + resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} dependencies: string-width: 4.2.3 + dev: false - widest-line@3.1.0: + /widest-line@3.1.0: + resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==} + engines: {node: '>=8'} dependencies: string-width: 4.2.3 + dev: true - word-wrap@1.2.3: {} + /word-wrap@1.2.3: + resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} + engines: {node: '>=0.10.0'} + dev: true - wordwrap@1.0.0: {} + /wordwrap@1.0.0: + resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} + dev: false - workerpool@6.2.1: {} + /workerpool@6.2.1: + resolution: {integrity: sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==} + dev: true - wrap-ansi@3.0.1: + /wrap-ansi@3.0.1: + resolution: {integrity: sha512-iXR3tDXpbnTpzjKSylUJRkLuOrEC7hwEB221cgn6wtF8wpmz28puFXAEfPT5zrjM3wahygB//VuWEr1vTkDcNQ==} + engines: {node: '>=4'} dependencies: string-width: 2.1.1 strip-ansi: 4.0.0 + dev: true - wrap-ansi@5.1.0: + /wrap-ansi@5.1.0: + resolution: {integrity: sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==} + engines: {node: '>=6'} dependencies: ansi-styles: 3.2.1 string-width: 3.1.0 strip-ansi: 5.2.0 + dev: false - wrap-ansi@6.2.0: + /wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} dependencies: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 + dev: true - wrap-ansi@7.0.0: + /wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} dependencies: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 - wrappy@1.0.2: {} + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - write-file-atomic@4.0.2: + /write-file-atomic@4.0.2: + resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} dependencies: imurmurhash: 0.1.4 signal-exit: 3.0.7 + dev: true - write@1.0.3: + /write@1.0.3: + resolution: {integrity: sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==} + engines: {node: '>=4'} dependencies: mkdirp: 0.5.6 + dev: true - ws@7.4.6: {} + /ws@7.4.6: + resolution: {integrity: sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true - ws@8.13.0: {} + /ws@8.13.0: + resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true - xml-name-validator@4.0.0: {} + /xml-name-validator@4.0.0: + resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} + engines: {node: '>=12'} + dev: true - xmlchars@2.2.0: {} + /xmlchars@2.2.0: + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + dev: true - xtend@4.0.2: {} + /xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + dev: false - y18n@4.0.3: {} + /y18n@4.0.3: + resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} - y18n@5.0.8: {} + /y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} - yallist@2.1.2: {} + /yallist@2.1.2: + resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} + dev: true - yallist@3.1.1: {} + /yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + dev: true - yallist@4.0.0: {} + /yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - yaml@1.10.2: {} + /yaml@1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + dev: true - yaml@2.2.2: {} + /yaml@2.2.2: + resolution: {integrity: sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA==} + engines: {node: '>= 14'} + dev: true - yargs-interactive@3.0.1: + /yargs-interactive@3.0.1: + resolution: {integrity: sha512-Jnp88uiuz+ZRpM10Lwvs0nRetWPog+6lcgQrhwKsyEanAe3wgTlaPPzcYlZWp53aOMTzOcR5wEpEsFOMOPmLlw==} + engines: {node: '>=8', npm: '>=6'} dependencies: inquirer: 7.3.3 yargs: 14.2.3 + dev: false - yargs-parser@15.0.3: + /yargs-parser@15.0.3: + resolution: {integrity: sha512-/MVEVjTXy/cGAjdtQf8dW3V9b97bPN7rNn8ETj6BmAQL7ibC7O1Q9SPJbGjgh3SlwoBNXMzj/ZGIj8mBgl12YA==} dependencies: camelcase: 5.3.1 decamelize: 1.2.0 + dev: false - yargs-parser@18.1.3: + /yargs-parser@18.1.3: + resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} + engines: {node: '>=6'} dependencies: camelcase: 5.3.1 decamelize: 1.2.0 + dev: true - yargs-parser@20.2.4: {} + /yargs-parser@20.2.4: + resolution: {integrity: sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==} + engines: {node: '>=10'} + dev: true - yargs-parser@20.2.9: {} + /yargs-parser@20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} + dev: true - yargs-parser@21.1.1: {} + /yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} - yargs-unparser@2.0.0: + /yargs-unparser@2.0.0: + resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==} + engines: {node: '>=10'} dependencies: camelcase: 6.3.0 decamelize: 4.0.0 flat: 5.0.2 is-plain-obj: 2.1.0 + dev: true - yargs@14.2.3: + /yargs@14.2.3: + resolution: {integrity: sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg==} dependencies: cliui: 5.0.0 decamelize: 1.2.0 @@ -15246,8 +13721,11 @@ snapshots: which-module: 2.0.0 y18n: 4.0.3 yargs-parser: 15.0.3 + dev: false - yargs@15.4.1: + /yargs@15.4.1: + resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} + engines: {node: '>=8'} dependencies: cliui: 6.0.0 decamelize: 1.2.0 @@ -15260,8 +13738,11 @@ snapshots: which-module: 2.0.0 y18n: 4.0.3 yargs-parser: 18.1.3 + dev: true - yargs@16.2.0: + /yargs@16.2.0: + resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} + engines: {node: '>=10'} dependencies: cliui: 7.0.4 escalade: 3.1.1 @@ -15270,8 +13751,11 @@ snapshots: string-width: 4.2.3 y18n: 5.0.8 yargs-parser: 20.2.9 + dev: true - yargs@17.7.1: + /yargs@17.7.1: + resolution: {integrity: sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==} + engines: {node: '>=12'} dependencies: cliui: 8.0.1 escalade: 3.1.1 @@ -15282,7 +13766,9 @@ snapshots: yargs-parser: 21.1.1 dev: false - yargs@17.7.2: + /yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} dependencies: cliui: 8.0.1 escalade: 3.1.1 @@ -15291,21 +13777,80 @@ snapshots: string-width: 4.2.3 y18n: 5.0.8 yargs-parser: 21.1.1 + dev: true - ylru@1.3.2: {} + /ylru@1.3.2: + resolution: {integrity: sha512-RXRJzMiK6U2ye0BlGGZnmpwJDPgakn6aNQ0A7gHRbD4I0uvK4TW6UqkK1V0pp9jskjJBAXd3dRrbzWkqJ+6cxA==} + engines: {node: '>= 4.0.0'} + dev: false - yocto-queue@0.1.0: {} + /yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} - yocto-queue@1.0.0: {} + /yocto-queue@1.0.0: + resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} + engines: {node: '>=12.20'} + dev: true - zod-validation-error@1.3.0(zod@3.21.4): + /zod-validation-error@1.3.0(zod@3.21.4): + resolution: {integrity: sha512-4WoQnuWnj06kwKR4A+cykRxFmy+CTvwMQO5ogTXLiVx1AuvYYmMjixh7sbkSsQTr1Fvtss6d5kVz8PGeMPUQjQ==} + engines: {node: '>=16.0.0'} + peerDependencies: + zod: ^3.18.0 dependencies: zod: 3.21.4 + dev: false - zod@3.21.4: {} + /zod@3.21.4: + resolution: {integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==} + dev: false - zustand@4.3.7(react@18.2.0): + /zustand@4.3.7(react@18.2.0): + resolution: {integrity: sha512-dY8ERwB9Nd21ellgkBZFhudER8KVlelZm8388B5nDAXhO/+FZDhYMuRnqDgu5SYyRgz/iaf8RKnbUs/cHfOGlQ==} + engines: {node: '>=12.7.0'} + peerDependencies: + immer: '>=9.0' + react: '>=16.8' + peerDependenciesMeta: + immer: + optional: true + react: + optional: true dependencies: - use-sync-external-store: 1.2.0(react@18.2.0) - optionalDependencies: react: 18.2.0 + use-sync-external-store: 1.2.0(react@18.2.0) + dev: false + + github.com/dapphub/ds-test/e282159d5170298eb2455a6c05280ab5a73a4ef0: + resolution: {tarball: https://codeload.github.com/dapphub/ds-test/tar.gz/e282159d5170298eb2455a6c05280ab5a73a4ef0} + name: ds-test + version: 1.0.0 + + github.com/foundry-rs/forge-std/74cfb77e308dd188d2f58864aaf44963ae6b88b1: + resolution: {tarball: https://codeload.github.com/foundry-rs/forge-std/tar.gz/74cfb77e308dd188d2f58864aaf44963ae6b88b1} + name: forge-std + version: 1.6.0 + + github.com/holic/create-create-app/74376c59b48a04aabbe94d9cacfe9cb1cecccd63: + resolution: {tarball: https://codeload.github.com/holic/create-create-app/tar.gz/74376c59b48a04aabbe94d9cacfe9cb1cecccd63} + name: create-create-app + version: 7.3.0 + hasBin: true + dependencies: + '@types/yargs-interactive': 2.1.3 + chalk: 4.1.2 + cross-spawn: 7.0.3 + epicfail: 3.0.0 + execa: 5.1.1 + gitconfig: 2.0.8 + globby: 11.1.0 + handlebars: 4.7.7 + is-utf8: 0.2.1 + license.js: 3.1.2 + slash: 3.0.0 + uuid: 8.3.2 + yargs-interactive: 3.0.1 + transitivePeerDependencies: + - encoding + dev: false From 2304e74d038fee6ffb60e58c2aba1933a691e4c7 Mon Sep 17 00:00:00 2001 From: Dhvani Patel Date: Fri, 19 Apr 2024 13:24:18 +0100 Subject: [PATCH 28/32] fix: cjs types for arktype --- e2e/packages/contracts/.env | 5 --- packages/noise/build/release.d.ts | 11 ------ packages/noise/build/release.js | 41 ------------------- packages/noise/build/release.wasm.map | 1 - packages/noise/dist/index.js | 6 --- packages/noise/dist/index.js.map | 5 --- packages/noise/dist/index.mjs | 6 --- packages/noise/dist/index.mjs.map | 5 --- packages/store-sync/src/createStoreSync.ts | 43 ++++++++++---------- packages/store/package.json | 2 +- packages/store/ts/config/v2/store.ts | 12 +++--- packages/world/package.json | 2 +- pnpm-lock.yaml | 46 +++++++++++++++++++--- 13 files changed, 72 insertions(+), 113 deletions(-) delete mode 100644 e2e/packages/contracts/.env delete mode 100644 packages/noise/build/release.d.ts delete mode 100644 packages/noise/build/release.js delete mode 100644 packages/noise/build/release.wasm.map delete mode 100644 packages/noise/dist/index.js delete mode 100644 packages/noise/dist/index.js.map delete mode 100644 packages/noise/dist/index.mjs delete mode 100644 packages/noise/dist/index.mjs.map diff --git a/e2e/packages/contracts/.env b/e2e/packages/contracts/.env deleted file mode 100644 index cc220e7518..0000000000 --- a/e2e/packages/contracts/.env +++ /dev/null @@ -1,5 +0,0 @@ -# This .env file is for local testing only. -# -# Anvil default private key: -PRIVATE_KEY=0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 -VITE_CHAIN_ID=31337 diff --git a/packages/noise/build/release.d.ts b/packages/noise/build/release.d.ts deleted file mode 100644 index 5c96ceec81..0000000000 --- a/packages/noise/build/release.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -/** Exported memory */ -export declare const memory: WebAssembly.Memory; -/** - * assembly/perlin/perlin - * @param _x `i32` - * @param _y `i32` - * @param _z `i32` - * @param denom `i32` - * @returns `f64` - */ -export declare function perlin(_x: number, _y: number, _z: number, denom: number): number; diff --git a/packages/noise/build/release.js b/packages/noise/build/release.js deleted file mode 100644 index c70e086ca6..0000000000 --- a/packages/noise/build/release.js +++ /dev/null @@ -1,41 +0,0 @@ -async function instantiate(module, imports = {}) { - const adaptedImports = { - env: Object.assign(Object.create(globalThis), imports.env || {}, { - abort(message, fileName, lineNumber, columnNumber) { - // ~lib/builtins/abort(~lib/string/String | null?, ~lib/string/String | null?, u32?, u32?) => void - message = __liftString(message >>> 0); - fileName = __liftString(fileName >>> 0); - lineNumber = lineNumber >>> 0; - columnNumber = columnNumber >>> 0; - (() => { - // @external.js - throw Error(`${message} in ${fileName}:${lineNumber}:${columnNumber}`); - })(); - }, - }), - }; - const { exports } = await WebAssembly.instantiate(module, adaptedImports); - const memory = exports.memory || imports.env.memory; - function __liftString(pointer) { - if (!pointer) return null; - const - end = pointer + new Uint32Array(memory.buffer)[pointer - 4 >>> 2] >>> 1, - memoryU16 = new Uint16Array(memory.buffer); - let - start = pointer >>> 1, - string = ""; - while (end - start > 1024) string += String.fromCharCode(...memoryU16.subarray(start, start += 1024)); - return string + String.fromCharCode(...memoryU16.subarray(start, end)); - } - return exports; -} -export const { - memory, - perlin -} = await (async url => instantiate( - await (async () => { - try { return await globalThis.WebAssembly.compileStreaming(globalThis.fetch(url)); } - catch { return globalThis.WebAssembly.compile(await (await import("node:fs/promises")).readFile(url)); } - })(), { - } -))(new URL("release.wasm", import.meta.url)); diff --git a/packages/noise/build/release.wasm.map b/packages/noise/build/release.wasm.map deleted file mode 100644 index e8ffd88f7a..0000000000 --- a/packages/noise/build/release.wasm.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["~lib/rt/common.ts","~lib/rt/tlsf.ts","~lib/shared/typeinfo.ts","~lib/rt/itcms.ts","assembly/perlin.ts","~lib/util/math.ts","~lib/util/number.ts","~lib/util/string.ts","~lib/math.ts","~lib/shared/runtime.ts","~lib/util/sort.ts","~lib/array.ts","~lib/util/error.ts"],"names":[],"mappings":"yGWiHI,AAAI,EAAc,AAAK,SAAmC,eAO1D,AANoB,MAAkB,EAAgB,6CPvDhD,EAAO,uBAEJ,EAAI,KAEJ,AAAK,EAAJ,KAED,EAAI,KAEJ,AAAC,GAAI,KAEL,EAAI,KAEJ,AAAK,EAAJ,KAED,EAAI,KAEJ,AAAC,GAAI,KAEL,EAAI,KAEJ,AAAK,EAAJ,KAED,EAAI,KAEJ,AAAC,GAAI,KAEL,EAAI,KAEJ,AAAK,EAAJ,KAED,EAAI,KAEJ,AAAC,GAAI,KAhChB,iEAnCiB,AAfF,AAAe,AALjB,GAAU,aAKa,QAed,AAdP,AAAe,AALjB,GAAU,UAKa,WAepB,MAAE,IAAK,AAdR,AAAe,AALjB,GAAU,UAKa,WAepB,MAAE,EAAI,KAAK,OACZ,MAAE,EAAI,KAAK,OACV,MAAE,IAAK,OACP,MAAE,EAAI,KAAK,OAOV,MAAE,IAAK,AAtBxB,EAAK,KAsBsB,AArB3B,EAAK,KAqByB,AApB9B,EAAK,WAoBkC,QAmB5B,AApCI,AAgCR,AAhCa,EAgCT,GAAI,GAAK,EAAK,EAAI,UAAI,WAAM,aAfE,IAAK,EAAI,YAAG,EAAG,IAmBpC,SAlBH,MAAE,IAAK,EAAG,EAAI,YAAG,QAAS,QAkBhC,AAnCI,AA+BR,AA/Ba,EA+BT,GAAI,GAAK,EAAK,EAAI,UAAI,WAAM,eAI5B,EAlBkC,IAAK,EAAO,EAAO,IAkB5C,cAdH,MAAE,EAAK,KAAI,EAAG,EAAG,EAAI,kBAAS,QAcpC,EAdsC,EAAK,KAAI,EAAO,EAAG,IAchD,SAbH,MAAE,EAAK,KAAI,EAAG,EAAO,QAAa,QAaxC,AAJJ,AA9Ba,EA8BT,GAAI,GAAK,EAAK,EAAI,UAAI,WAAM,aAI5B,MAb0C,EAAK,KAAI,EAAO,EAAO,IAaxD,eARR,UAAK","sourceRoot":"./release","sourcesContent":["// Alignment guarantees\n\n// @ts-ignore: decorator\n@inline export const AL_BITS: u32 = 4; // 16 bytes to fit up to v128\n// @ts-ignore: decorator\n@inline export const AL_SIZE: usize = 1 << AL_BITS;\n// @ts-ignore: decorator\n@inline export const AL_MASK: usize = AL_SIZE - 1;\n\n// Extra debugging\n\n// @ts-ignore: decorator\n@inline export const DEBUG = true;\n// @ts-ignore: decorator\n@inline export const TRACE = false;\n// @ts-ignore: decorator\n@inline export const RTRACE = isDefined(ASC_RTRACE);\n// @ts-ignore: decorator\n@inline export const PROFILE = isDefined(ASC_PROFILE);\n\n// Memory manager\n\n// ╒════════════ Memory manager block layout (32-bit) ═════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤\n// │ MM info │ -4\n// ╞>ptr═══════════════════════════════════════════════════════════╡\n// │ ... │\n@unmanaged export class BLOCK {\n /** Memory manager info. */\n mmInfo: usize;\n}\n\n/** Overhead of a memory manager block. */\n// @ts-ignore: decorator\n@inline export const BLOCK_OVERHEAD: usize = offsetof();\n\n/** Maximum size of a memory manager block's payload. */\n// @ts-ignore: decorator\n@inline export const BLOCK_MAXSIZE: usize = (1 << 30) - BLOCK_OVERHEAD;\n\n// Garbage collector\n\n// ╒══════════ Garbage collector object layout (32-bit) ═══════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤\n// │ Memory manager block │ -20\n// ╞═══════════════════════════════════════════════════════════════╡\n// │ GC info │ -16\n// ├───────────────────────────────────────────────────────────────┤\n// │ GC info │ -12\n// ├───────────────────────────────────────────────────────────────┤\n// │ RT id │ -8\n// ├───────────────────────────────────────────────────────────────┤\n// │ RT size │ -4\n// ╞>ptr═══════════════════════════════════════════════════════════╡\n// │ ... │\n@unmanaged export class OBJECT extends BLOCK {\n /** Garbage collector info. */\n gcInfo: u32;\n /** Garbage collector info. */\n gcInfo2: u32;\n /** Runtime class id. */\n rtId: u32;\n /** Runtime object size. */\n rtSize: u32;\n}\n\n/** Overhead of a garbage collector object. Excludes memory manager block overhead. */\n// @ts-ignore: decorator\n@inline export const OBJECT_OVERHEAD: usize = (offsetof() - BLOCK_OVERHEAD + AL_MASK) & ~AL_MASK;\n\n/** Maximum size of a garbage collector object's payload. */\n// @ts-ignore: decorator\n@inline export const OBJECT_MAXSIZE: usize = BLOCK_MAXSIZE - OBJECT_OVERHEAD;\n\n/** Total of memory manager and garbage collector overhead. */\n// @ts-ignore: decorator\n@inline export const TOTAL_OVERHEAD: usize = BLOCK_OVERHEAD + OBJECT_OVERHEAD;\n","import { AL_BITS, AL_SIZE, AL_MASK, DEBUG, BLOCK, BLOCK_OVERHEAD, BLOCK_MAXSIZE } from \"./common\";\nimport { oninit, onalloc, onresize, onmove, onfree } from \"./rtrace\";\nimport { E_ALLOCATION_TOO_LARGE } from \"../util/error\";\n\n// === The TLSF (Two-Level Segregate Fit) memory allocator ===\n// see: http://www.gii.upv.es/tlsf/\n\n// - `ffs(x)` is equivalent to `ctz(x)` with x != 0\n// - `fls(x)` is equivalent to `sizeof(x) * 8 - clz(x) - 1`\n\n// ╒══════════════ Block size interpretation (32-bit) ═════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┼─┴─┴─┴─╫─┴─┴─┴─┤\n// │ | FL │ SB = SL + AL │ ◄─ usize\n// └───────────────────────────────────────────────┴───────╨───────┘\n// FL: first level, SL: second level, AL: alignment, SB: small block\n\n// @ts-ignore: decorator\n@inline const SL_BITS: u32 = 4;\n// @ts-ignore: decorator\n@inline const SL_SIZE: u32 = 1 << SL_BITS;\n\n// @ts-ignore: decorator\n@inline const SB_BITS: u32 = SL_BITS + AL_BITS;\n// @ts-ignore: decorator\n@inline const SB_SIZE: u32 = 1 << SB_BITS;\n\n// @ts-ignore: decorator\n@inline const FL_BITS: u32 = 31 - SB_BITS;\n\n// [00]: < 256B (SB) [12]: < 1M\n// [01]: < 512B [13]: < 2M\n// [02]: < 1K [14]: < 4M\n// [03]: < 2K [15]: < 8M\n// [04]: < 4K [16]: < 16M\n// [05]: < 8K [17]: < 32M\n// [06]: < 16K [18]: < 64M\n// [07]: < 32K [19]: < 128M\n// [08]: < 64K [20]: < 256M\n// [09]: < 128K [21]: < 512M\n// [10]: < 256K [22]: <= 1G - OVERHEAD\n// [11]: < 512K\n// VMs limit to 2GB total (currently), making one 1G block max (or three 512M etc.) due to block overhead\n\n// Tags stored in otherwise unused alignment bits\n\n// @ts-ignore: decorator\n@inline const FREE: usize = 1 << 0;\n// @ts-ignore: decorator\n@inline const LEFTFREE: usize = 1 << 1;\n// @ts-ignore: decorator\n@inline const TAGS_MASK: usize = FREE | LEFTFREE; // <= AL_MASK\n\n// ╒════════════════════ Block layout (32-bit) ════════════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┼─┼─┤ ┐\n// │ size │L│F│ ◄─┐ info overhead\n// ╞>ptr═══════════════════════════════════════════════════════╧═╧═╡ │ ┘\n// │ if free: ◄ prev │ ◄─┤ usize\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ if free: next ► │ ◄─┤\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ ... │ │ >= 0\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ if free: back ▲ │ ◄─┘\n// └───────────────────────────────────────────────────────────────┘ >= MIN SIZE\n// F: FREE, L: LEFTFREE\n@unmanaged export class Block extends BLOCK {\n\n /** Previous free block, if any. Only valid if free, otherwise part of payload. */\n prev: Block | null;\n /** Next free block, if any. Only valid if free, otherwise part of payload. */\n next: Block | null;\n\n // If the block is free, there is a 'back'reference at its end pointing at its start.\n}\n\n// Block constants. A block must have a minimum size of three pointers so it can hold `prev`,\n// `next` and `back` if free.\n\n// @ts-ignore: decorator\n@inline const BLOCK_MINSIZE: usize = ((3 * sizeof() + BLOCK_OVERHEAD + AL_MASK) & ~AL_MASK) - BLOCK_OVERHEAD; // prev + next + back\n// @ts-ignore: decorator\n// @inline const BLOCK_MAXSIZE: usize = 1 << (FL_BITS + SB_BITS - 1); // exclusive, lives in common.ts\n\n/** Gets the left block of a block. Only valid if the left block is free. */\n// @ts-ignore: decorator\n@inline function GETFREELEFT(block: Block): Block {\n return load(changetype(block) - sizeof());\n}\n\n/** Gets the right block of a block by advancing to the right by its size. */\n// @ts-ignore: decorator\n@inline function GETRIGHT(block: Block): Block {\n return changetype(changetype(block) + BLOCK_OVERHEAD + (block.mmInfo & ~TAGS_MASK));\n}\n\n// ╒═════════════════════ Root layout (32-bit) ════════════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤ ┐\n// │ 0 | flMap S│ ◄────┐\n// ╞═══════════════════════════════════════════════════════════════╡ │\n// │ slMap[0] S │ ◄─┐ │\n// ├───────────────────────────────────────────────────────────────┤ │ │\n// │ slMap[1] │ ◄─┤ │\n// ├───────────────────────────────────────────────────────────────┤ u32 │\n// │ slMap[22] │ ◄─┘ │\n// ╞═══════════════════════════════════════════════════════════════╡ usize\n// │ head[0] │ ◄────┤\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ ... │ ◄────┤\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ head[367] │ ◄────┤\n// ╞═══════════════════════════════════════════════════════════════╡ │\n// │ tail │ ◄────┘\n// └───────────────────────────────────────────────────────────────┘ SIZE ┘\n// S: Small blocks map\n@unmanaged class Root {\n /** First level bitmap. */\n flMap: usize;\n}\n\n// Root constants. Where stuff is stored inside of the root structure.\n\n// @ts-ignore: decorator\n@inline const SL_START: usize = sizeof();\n// @ts-ignore: decorator\n@inline const SL_END: usize = SL_START + (FL_BITS << alignof());\n// @ts-ignore: decorator\n@inline const HL_START: usize = (SL_END + AL_MASK) & ~AL_MASK;\n// @ts-ignore: decorator\n@inline const HL_END: usize = HL_START + FL_BITS * SL_SIZE * sizeof();\n// @ts-ignore: decorator\n@inline const ROOT_SIZE: usize = HL_END + sizeof();\n\n// @ts-ignore: decorator\n@lazy export var ROOT: Root;\n\n/** Gets the second level map of the specified first level. */\n// @ts-ignore: decorator\n@inline function GETSL(root: Root, fl: usize): u32 {\n return load(\n changetype(root) + (fl << alignof()),\n SL_START\n );\n}\n\n/** Sets the second level map of the specified first level. */\n// @ts-ignore: decorator\n@inline function SETSL(root: Root, fl: usize, slMap: u32): void {\n store(\n changetype(root) + (fl << alignof()),\n slMap,\n SL_START\n );\n}\n\n/** Gets the head of the free list for the specified combination of first and second level. */\n// @ts-ignore: decorator\n@inline function GETHEAD(root: Root, fl: usize, sl: u32): Block | null {\n return load(\n changetype(root) + (((fl << SL_BITS) + sl) << alignof()),\n HL_START\n );\n}\n\n/** Sets the head of the free list for the specified combination of first and second level. */\n// @ts-ignore: decorator\n@inline function SETHEAD(root: Root, fl: usize, sl: u32, head: Block | null): void {\n store(\n changetype(root) + (((fl << SL_BITS) + sl) << alignof()),\n head,\n HL_START\n );\n}\n\n/** Gets the tail block.. */\n// @ts-ignore: decorator\n@inline function GETTAIL(root: Root): Block {\n return load(\n changetype(root),\n HL_END\n );\n}\n\n/** Sets the tail block. */\n// @ts-ignore: decorator\n@inline function SETTAIL(root: Root, tail: Block): void {\n store(\n changetype(root),\n tail,\n HL_END\n );\n}\n\n/** Inserts a previously used block back into the free list. */\nfunction insertBlock(root: Root, block: Block): void {\n if (DEBUG) assert(block); // cannot be null\n var blockInfo = block.mmInfo;\n if (DEBUG) assert(blockInfo & FREE); // must be free\n\n var right = GETRIGHT(block);\n var rightInfo = right.mmInfo;\n\n // merge with right block if also free\n if (rightInfo & FREE) {\n removeBlock(root, right);\n block.mmInfo = blockInfo = blockInfo + BLOCK_OVERHEAD + (rightInfo & ~TAGS_MASK); // keep block tags\n right = GETRIGHT(block);\n rightInfo = right.mmInfo;\n // 'back' is set below\n }\n\n // merge with left block if also free\n if (blockInfo & LEFTFREE) {\n let left = GETFREELEFT(block);\n let leftInfo = left.mmInfo;\n if (DEBUG) assert(leftInfo & FREE); // must be free according to right tags\n removeBlock(root, left);\n block = left;\n block.mmInfo = blockInfo = leftInfo + BLOCK_OVERHEAD + (blockInfo & ~TAGS_MASK); // keep left tags\n // 'back' is set below\n }\n\n right.mmInfo = rightInfo | LEFTFREE;\n // reference to right is no longer used now, hence rightInfo is not synced\n\n // we now know the size of the block\n var size = blockInfo & ~TAGS_MASK;\n if (DEBUG) assert(size >= BLOCK_MINSIZE); // must be a valid size\n if (DEBUG) assert(changetype(block) + BLOCK_OVERHEAD + size == changetype(right)); // must match\n\n // set 'back' to itself at the end of block\n store(changetype(right) - sizeof(), block);\n\n // mapping_insert\n var fl: usize, sl: u32;\n if (size < SB_SIZE) {\n fl = 0;\n sl = (size >> AL_BITS);\n } else {\n const inv: usize = sizeof() * 8 - 1;\n let boundedSize = min(size, BLOCK_MAXSIZE);\n fl = inv - clz(boundedSize);\n sl = ((boundedSize >> (fl - SL_BITS)) ^ (1 << SL_BITS));\n fl -= SB_BITS - 1;\n }\n if (DEBUG) assert(fl < FL_BITS && sl < SL_SIZE); // fl/sl out of range\n\n // perform insertion\n var head = GETHEAD(root, fl, sl);\n block.prev = null;\n block.next = head;\n if (head) head.prev = block;\n SETHEAD(root, fl, sl, block);\n\n // update first and second level maps\n root.flMap |= (1 << fl);\n SETSL(root, fl, GETSL(root, fl) | (1 << sl));\n}\n\n/** Removes a free block from internal lists. */\nfunction removeBlock(root: Root, block: Block): void {\n var blockInfo = block.mmInfo;\n if (DEBUG) assert(blockInfo & FREE); // must be free\n var size = blockInfo & ~TAGS_MASK;\n if (DEBUG) assert(size >= BLOCK_MINSIZE); // must be valid\n\n // mapping_insert\n var fl: usize, sl: u32;\n if (size < SB_SIZE) {\n fl = 0;\n sl = (size >> AL_BITS);\n } else {\n const inv: usize = sizeof() * 8 - 1;\n let boundedSize = min(size, BLOCK_MAXSIZE);\n fl = inv - clz(boundedSize);\n sl = ((boundedSize >> (fl - SL_BITS)) ^ (1 << SL_BITS));\n fl -= SB_BITS - 1;\n }\n if (DEBUG) assert(fl < FL_BITS && sl < SL_SIZE); // fl/sl out of range\n\n // link previous and next free block\n var prev = block.prev;\n var next = block.next;\n if (prev) prev.next = next;\n if (next) next.prev = prev;\n\n // update head if we are removing it\n if (block == GETHEAD(root, fl, sl)) {\n SETHEAD(root, fl, sl, next);\n\n // clear second level map if head is empty now\n if (!next) {\n let slMap = GETSL(root, fl);\n SETSL(root, fl, slMap &= ~(1 << sl));\n\n // clear first level map if second level is empty now\n if (!slMap) root.flMap &= ~(1 << fl);\n }\n }\n // note: does not alter left/back because it is likely that splitting\n // is performed afterwards, invalidating those changes. so, the caller\n // must perform those updates.\n}\n\n/** Searches for a free block of at least the specified size. */\nfunction searchBlock(root: Root, size: usize): Block | null {\n // size was already asserted by caller\n\n // mapping_search\n var fl: usize, sl: u32;\n if (size < SB_SIZE) {\n fl = 0;\n sl = (size >> AL_BITS);\n } else {\n const halfMaxSize = BLOCK_MAXSIZE >> 1; // don't round last fl\n const inv: usize = sizeof() * 8 - 1;\n const invRound = inv - SL_BITS;\n let requestSize = size < halfMaxSize\n ? size + (1 << (invRound - clz(size))) - 1\n : size;\n fl = inv - clz(requestSize);\n sl = ((requestSize >> (fl - SL_BITS)) ^ (1 << SL_BITS));\n fl -= SB_BITS - 1;\n }\n if (DEBUG) assert(fl < FL_BITS && sl < SL_SIZE); // fl/sl out of range\n\n // search second level\n var slMap = GETSL(root, fl) & (~0 << sl);\n var head: Block | null = null;\n if (!slMap) {\n // search next larger first level\n let flMap = root.flMap & (~0 << (fl + 1));\n if (!flMap) {\n head = null;\n } else {\n fl = ctz(flMap);\n slMap = GETSL(root, fl);\n if (DEBUG) assert(slMap); // can't be zero if fl points here\n head = GETHEAD(root, fl, ctz(slMap));\n }\n } else {\n head = GETHEAD(root, fl, ctz(slMap));\n }\n return head;\n}\n\n/** Prepares the specified block before (re-)use, possibly splitting it. */\nfunction prepareBlock(root: Root, block: Block, size: usize): void {\n // size was already asserted by caller\n\n var blockInfo = block.mmInfo;\n if (DEBUG) assert(!((size + BLOCK_OVERHEAD) & AL_MASK)); // size must be aligned so the new block is\n\n // split if the block can hold another MINSIZE block incl. overhead\n var remaining = (blockInfo & ~TAGS_MASK) - size;\n if (remaining >= BLOCK_OVERHEAD + BLOCK_MINSIZE) {\n block.mmInfo = size | (blockInfo & LEFTFREE); // also discards FREE\n\n let spare = changetype(changetype(block) + BLOCK_OVERHEAD + size);\n spare.mmInfo = (remaining - BLOCK_OVERHEAD) | FREE; // not LEFTFREE\n insertBlock(root, spare); // also sets 'back'\n\n // otherwise tag block as no longer FREE and right as no longer LEFTFREE\n } else {\n block.mmInfo = blockInfo & ~FREE;\n GETRIGHT(block).mmInfo &= ~LEFTFREE;\n }\n}\n\n/** Adds more memory to the pool. */\nfunction addMemory(root: Root, start: usize, end: usize): bool {\n if (DEBUG) assert(start <= end); // must be valid\n start = ((start + BLOCK_OVERHEAD + AL_MASK) & ~AL_MASK) - BLOCK_OVERHEAD;\n end &= ~AL_MASK;\n\n var tail = GETTAIL(root);\n var tailInfo: usize = 0;\n if (tail) { // more memory\n if (DEBUG) assert(start >= changetype(tail) + BLOCK_OVERHEAD);\n\n // merge with current tail if adjacent\n const offsetToTail = AL_SIZE;\n if (start - offsetToTail == changetype(tail)) {\n start -= offsetToTail;\n tailInfo = tail.mmInfo;\n } else {\n // We don't do this, but a user might `memory.grow` manually\n // leading to non-adjacent pages managed by TLSF.\n }\n\n } else if (DEBUG) { // first memory\n assert(start >= changetype(root) + ROOT_SIZE); // starts after root\n }\n\n // check if size is large enough for a free block and the tail block\n var size = end - start;\n if (size < BLOCK_OVERHEAD + BLOCK_MINSIZE + BLOCK_OVERHEAD) {\n return false;\n }\n\n // left size is total minus its own and the zero-length tail's header\n var leftSize = size - 2 * BLOCK_OVERHEAD;\n var left = changetype(start);\n left.mmInfo = leftSize | FREE | (tailInfo & LEFTFREE);\n left.prev = null;\n left.next = null;\n\n // tail is a zero-length used block\n tail = changetype(start + BLOCK_OVERHEAD + leftSize);\n tail.mmInfo = 0 | LEFTFREE;\n SETTAIL(root, tail);\n\n insertBlock(root, left); // also merges with free left before tail / sets 'back'\n\n return true;\n}\n\n/** Grows memory to fit at least another block of the specified size. */\nfunction growMemory(root: Root, size: usize): void {\n if (ASC_LOW_MEMORY_LIMIT) {\n unreachable();\n return;\n }\n // Here, both rounding performed in searchBlock ...\n const halfMaxSize = BLOCK_MAXSIZE >> 1;\n if (size < halfMaxSize) { // don't round last fl\n const invRound = (sizeof() * 8 - 1) - SL_BITS;\n size += (1 << (invRound - clz(size))) - 1;\n }\n // and additional BLOCK_OVERHEAD must be taken into account. If we are going\n // to merge with the tail block, that's one time, otherwise it's two times.\n var pagesBefore = memory.size();\n size += BLOCK_OVERHEAD << usize((pagesBefore << 16) - BLOCK_OVERHEAD != changetype(GETTAIL(root)));\n var pagesNeeded = (((size + 0xffff) & ~0xffff) >>> 16);\n var pagesWanted = max(pagesBefore, pagesNeeded); // double memory\n if (memory.grow(pagesWanted) < 0) {\n if (memory.grow(pagesNeeded) < 0) unreachable();\n }\n var pagesAfter = memory.size();\n addMemory(root, pagesBefore << 16, pagesAfter << 16);\n}\n\n/** Computes the size (excl. header) of a block. */\nfunction computeSize(size: usize): usize {\n // Size must be large enough and aligned minus preceeding overhead\n return size <= BLOCK_MINSIZE\n ? BLOCK_MINSIZE\n : ((size + BLOCK_OVERHEAD + AL_MASK) & ~AL_MASK) - BLOCK_OVERHEAD;\n}\n\n/** Prepares and checks an allocation size. */\nfunction prepareSize(size: usize): usize {\n if (size > BLOCK_MAXSIZE) throw new Error(E_ALLOCATION_TOO_LARGE);\n return computeSize(size);\n}\n\n/** Initializes the root structure. */\nfunction initialize(): void {\n if (isDefined(ASC_RTRACE)) oninit(__heap_base);\n var rootOffset = (__heap_base + AL_MASK) & ~AL_MASK;\n var pagesBefore = memory.size();\n var pagesNeeded = ((((rootOffset + ROOT_SIZE) + 0xffff) & ~0xffff) >>> 16);\n if (pagesNeeded > pagesBefore && memory.grow(pagesNeeded - pagesBefore) < 0) unreachable();\n var root = changetype(rootOffset);\n root.flMap = 0;\n SETTAIL(root, changetype(0));\n for (let fl: usize = 0; fl < FL_BITS; ++fl) {\n SETSL(root, fl, 0);\n for (let sl: u32 = 0; sl < SL_SIZE; ++sl) {\n SETHEAD(root, fl, sl, null);\n }\n }\n var memStart = rootOffset + ROOT_SIZE;\n if (ASC_LOW_MEMORY_LIMIT) {\n const memEnd = ASC_LOW_MEMORY_LIMIT & ~AL_MASK;\n if (memStart <= memEnd) addMemory(root, memStart, memEnd);\n else unreachable(); // low memory limit already exceeded\n } else {\n addMemory(root, memStart, memory.size() << 16);\n }\n ROOT = root;\n}\n\n/** Allocates a block of the specified size. */\nexport function allocateBlock(root: Root, size: usize): Block {\n var payloadSize = prepareSize(size);\n var block = searchBlock(root, payloadSize);\n if (!block) {\n growMemory(root, payloadSize);\n block = changetype(searchBlock(root, payloadSize));\n if (DEBUG) assert(block); // must be found now\n }\n if (DEBUG) assert((block.mmInfo & ~TAGS_MASK) >= payloadSize); // must fit\n removeBlock(root, block);\n prepareBlock(root, block, payloadSize);\n if (isDefined(ASC_RTRACE)) onalloc(block);\n return block;\n}\n\n/** Reallocates a block to the specified size. */\nexport function reallocateBlock(root: Root, block: Block, size: usize): Block {\n var payloadSize = prepareSize(size);\n var blockInfo = block.mmInfo;\n var blockSize = blockInfo & ~TAGS_MASK;\n\n // possibly split and update runtime size if it still fits\n if (payloadSize <= blockSize) {\n prepareBlock(root, block, payloadSize);\n if (isDefined(ASC_RTRACE)) {\n if (payloadSize != blockSize) onresize(block, BLOCK_OVERHEAD + blockSize);\n }\n return block;\n }\n\n // merge with right free block if merger is large enough\n var right = GETRIGHT(block);\n var rightInfo = right.mmInfo;\n if (rightInfo & FREE) {\n let mergeSize = blockSize + BLOCK_OVERHEAD + (rightInfo & ~TAGS_MASK);\n if (mergeSize >= payloadSize) {\n removeBlock(root, right);\n block.mmInfo = (blockInfo & TAGS_MASK) | mergeSize;\n prepareBlock(root, block, payloadSize);\n if (isDefined(ASC_RTRACE)) onresize(block, BLOCK_OVERHEAD + blockSize);\n return block;\n }\n }\n\n // otherwise move the block\n return moveBlock(root, block, size);\n}\n\n/** Moves a block to a new one of the specified size. */\nfunction moveBlock(root: Root, block: Block, newSize: usize): Block {\n var newBlock = allocateBlock(root, newSize);\n memory.copy(changetype(newBlock) + BLOCK_OVERHEAD, changetype(block) + BLOCK_OVERHEAD, block.mmInfo & ~TAGS_MASK);\n if (changetype(block) >= __heap_base) {\n if (isDefined(ASC_RTRACE)) onmove(block, newBlock);\n freeBlock(root, block);\n }\n return newBlock;\n}\n\n/** Frees a block. */\nexport function freeBlock(root: Root, block: Block): void {\n if (isDefined(ASC_RTRACE)) onfree(block);\n block.mmInfo = block.mmInfo | FREE;\n insertBlock(root, block);\n}\n\n/** Checks that a used block is valid to be freed or reallocated. */\nfunction checkUsedBlock(ptr: usize): Block {\n var block = changetype(ptr - BLOCK_OVERHEAD);\n assert(\n ptr != 0 && !(ptr & AL_MASK) && // must exist and be aligned\n !(block.mmInfo & FREE) // must be used\n );\n return block;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __alloc(size: usize): usize {\n if (!ROOT) initialize();\n return changetype(allocateBlock(ROOT, size)) + BLOCK_OVERHEAD;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __realloc(ptr: usize, size: usize): usize {\n if (!ROOT) initialize();\n return (ptr < __heap_base\n ? changetype(moveBlock(ROOT, checkUsedBlock(ptr), size))\n : changetype(reallocateBlock(ROOT, checkUsedBlock(ptr), size))\n ) + BLOCK_OVERHEAD;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __free(ptr: usize): void {\n if (ptr < __heap_base) return;\n if (!ROOT) initialize();\n freeBlock(ROOT, checkUsedBlock(ptr));\n}\n","// This file is shared with the compiler and must remain portable\n\n// ╒═══════════════════ Typeinfo interpretation ═══════════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤ ◄─ __rtti_base\n// │ count │\n// ╞═══════════════════════════════════════════════════════════════╡ ┐\n// │ Typeinfo#flags [id=0] │ id < count\n// ├ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┤\n// │ Typeinfo#base [id=0] │\n// ├───────────────────────────────────────────────────────────────┤\n// │ ... │\n\n/** Runtime type information data structure. */\n@unmanaged\nexport class Typeinfo {\n /** Flags describing the shape of this class type. */\n flags: TypeinfoFlags = TypeinfoFlags.NONE;\n /** Base class id or `0` if none. */\n base: u32 = 0;\n}\n\n/** Runtime type information flags. */\nexport const enum TypeinfoFlags {\n /** No specific flags. */\n NONE = 0,\n /** Type is an `ArrayBufferView`. */\n ARRAYBUFFERVIEW = 1 << 0,\n /** Type is an `Array`. */\n ARRAY = 1 << 1,\n /** Type is a `StaticArray`. */\n STATICARRAY = 1 << 2,\n /** Type is a `Set`. */\n SET = 1 << 3,\n /** Type is a `Map`. */\n MAP = 1 << 4,\n /** Type has no outgoing pointers. */\n POINTERFREE = 1 << 5,\n /** Value alignment of 1 byte. */\n VALUE_ALIGN_0 = 1 << 6,\n /** Value alignment of 2 bytes. */\n VALUE_ALIGN_1 = 1 << 7,\n /** Value alignment of 4 bytes. */\n VALUE_ALIGN_2 = 1 << 8,\n /** Value alignment of 8 bytes. */\n VALUE_ALIGN_3 = 1 << 9,\n /** Value alignment of 16 bytes. */\n VALUE_ALIGN_4 = 1 << 10,\n /** Value is a signed type. */\n VALUE_SIGNED = 1 << 11,\n /** Value is a float type. */\n VALUE_FLOAT = 1 << 12,\n /** Value type is nullable. */\n VALUE_NULLABLE = 1 << 13,\n /** Value type is managed. */\n VALUE_MANAGED = 1 << 14,\n /** Key alignment of 1 byte. */\n KEY_ALIGN_0 = 1 << 15,\n /** Key alignment of 2 bytes. */\n KEY_ALIGN_1 = 1 << 16,\n /** Key alignment of 4 bytes. */\n KEY_ALIGN_2 = 1 << 17,\n /** Key alignment of 8 bytes. */\n KEY_ALIGN_3 = 1 << 18,\n /** Key alignment of 16 bytes. */\n KEY_ALIGN_4 = 1 << 19,\n /** Key is a signed type. */\n KEY_SIGNED = 1 << 20,\n /** Key is a float type. */\n KEY_FLOAT = 1 << 21,\n /** Key type is nullable. */\n KEY_NULLABLE = 1 << 22,\n /** Key type is managed. */\n KEY_MANAGED = 1 << 23\n}\n","import { BLOCK, BLOCK_OVERHEAD, OBJECT_OVERHEAD, OBJECT_MAXSIZE, TOTAL_OVERHEAD, DEBUG, TRACE, RTRACE, PROFILE } from \"./common\";\nimport { onvisit, oncollect, oninterrupt, onyield } from \"./rtrace\";\nimport { TypeinfoFlags } from \"../shared/typeinfo\";\nimport { E_ALLOCATION_TOO_LARGE, E_ALREADY_PINNED, E_NOT_PINNED } from \"../util/error\";\n\n// === ITCMS: An incremental Tri-Color Mark & Sweep garbage collector ===\n// Adapted from Bach Le's μgc, see: https://github.com/bullno1/ugc\n\n// ╒═════════════╤══════════════ Colors ═══════════════════════════╕\n// │ Color │ Meaning │\n// ├─────────────┼─────────────────────────────────────────────────┤\n// │ WHITE* │ Unprocessed │\n// │ BLACK* │ Processed │\n// │ GRAY │ Processed with unprocessed children │\n// │ TRANSPARENT │ Manually pinned (always reachable) │\n// └─────────────┴─────────────────────────────────────────────────┘\n// * flipped between cycles\n\n// @ts-ignore: decorator\n@lazy var white = 0;\n// @ts-ignore: decorator\n@inline const gray = 2;\n// @ts-ignore: decorator\n@inline const transparent = 3;\n// @ts-ignore: decorator\n@inline const COLOR_MASK = 3;\n\n/** Size in memory of all objects currently managed by the GC. */\n// @ts-ignore: decorator\n@lazy var total: usize = 0;\n\n/** Currently transitioning from SWEEP to MARK state. */\n// @ts-ignore: decorator\n@inline const STATE_IDLE = 0;\n/** Currently marking reachable objects. */\n// @ts-ignore: decorator\n@inline const STATE_MARK = 1;\n/** Currently sweeping unreachable objects. */\n// @ts-ignore: decorator\n@inline const STATE_SWEEP = 2;\n/** Current collector state. */\n// @ts-ignore: decorator\n@lazy var state = STATE_IDLE;\n\n// @ts-ignore: decorator\n@lazy var fromSpace = initLazy(changetype(memory.data(offsetof())));\n// @ts-ignore: decorator\n@lazy var toSpace = initLazy(changetype(memory.data(offsetof())));\n// @ts-ignore: decorator\n@lazy var pinSpace = initLazy(changetype(memory.data(offsetof())));\n// @ts-ignore: decorator\n@lazy var iter: Object; // null\n\nfunction initLazy(space: Object): Object {\n space.nextWithColor = changetype(space);\n space.prev = space;\n return space;\n}\n\n/** Visit cookie indicating scanning of an object. */\n// @ts-ignore: decorator\n@inline const VISIT_SCAN = 0;\n\n// ╒═══════════════ Managed object layout (32-bit) ════════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤\n// │ Memory manager block │\n// ╞═══════════════════════════════════════════════════════════╤═══╡\n// │ next │ C │ = nextWithColor\n// ├───────────────────────────────────────────────────────────┴───┤\n// │ prev │\n// ├───────────────────────────────────────────────────────────────┤\n// │ rtId │\n// ├───────────────────────────────────────────────────────────────┤\n// │ rtSize │\n// ╞>ptr═══════════════════════════════════════════════════════════╡\n// │ ... │\n// C: color\n\n/** Represents a managed object in memory, consisting of a header followed by the object's data. */\n@unmanaged class Object extends BLOCK {\n /** Pointer to the next object with color flags stored in the alignment bits. */\n nextWithColor: usize; // *u32\n /** Pointer to the previous object. */\n prev: Object; // *u32\n /** Runtime id. */\n rtId: u32;\n /** Runtime size. */\n rtSize: u32;\n\n /** Gets the pointer to the next object. */\n get next(): Object {\n return changetype(this.nextWithColor & ~COLOR_MASK);\n }\n\n /** Sets the pointer to the next object. */\n set next(obj: Object) {\n this.nextWithColor = changetype(obj) | (this.nextWithColor & COLOR_MASK);\n }\n\n /** Gets this object's color. */\n get color(): i32 {\n return i32(this.nextWithColor & COLOR_MASK);\n }\n\n /** Sets this object's color. */\n set color(color: i32) {\n this.nextWithColor = (this.nextWithColor & ~COLOR_MASK) | color;\n }\n\n /** Gets the size of this object in memory. */\n get size(): usize {\n return BLOCK_OVERHEAD + (this.mmInfo & ~3);\n }\n\n /** Tests if this object is pointerfree. */\n get isPointerfree(): bool {\n var rtId = this.rtId;\n return rtId <= idof() || (__typeinfo(rtId) & TypeinfoFlags.POINTERFREE) != 0;\n }\n\n /** Unlinks this object from its list. */\n unlink(): void {\n var next = this.next;\n if (next == null) {\n if (DEBUG) assert(this.prev == null && changetype(this) < __heap_base);\n return; // static data not yet linked\n }\n var prev = this.prev;\n if (DEBUG) assert(prev);\n next.prev = prev;\n prev.next = next;\n }\n\n /** Links this object to the specified list, with the given color. */\n linkTo(list: Object, withColor: i32): void {\n let prev = list.prev;\n this.nextWithColor = changetype(list) | withColor;\n this.prev = prev;\n prev.next = this;\n list.prev = this;\n }\n\n /** Marks this object as gray, that is reachable with unscanned children. */\n makeGray(): void {\n if (this == iter) iter = assert(this.prev);\n this.unlink();\n this.linkTo(toSpace, this.isPointerfree ? i32(!white) : gray);\n }\n}\n\n/** Visits all objects considered to be program roots. */\nfunction visitRoots(cookie: u32): void {\n __visit_globals(cookie);\n var pn = pinSpace;\n var iter = pn.next;\n while (iter != pn) {\n if (DEBUG) assert(iter.color == transparent);\n __visit_members(changetype(iter) + TOTAL_OVERHEAD, cookie);\n iter = iter.next;\n }\n}\n\n/** Visits all objects on the stack. */\nfunction visitStack(cookie: u32): void {\n var ptr = __stack_pointer;\n while (ptr < __heap_base) {\n __visit(load(ptr), cookie);\n ptr += sizeof();\n }\n}\n\n/** Performs a single step according to the current state. */\nfunction step(): usize {\n // Magic constants responsible for pause times. Obtained experimentally\n // using the compiler compiling itself. 2048 budget pro run by default.\n const MARKCOST = isDefined(ASC_GC_MARKCOST) ? ASC_GC_MARKCOST : 1;\n const SWEEPCOST = isDefined(ASC_GC_SWEEPCOST) ? ASC_GC_SWEEPCOST : 10;\n var obj: Object;\n switch (state) {\n case STATE_IDLE: {\n state = STATE_MARK;\n visitCount = 0;\n visitRoots(VISIT_SCAN);\n iter = toSpace;\n return visitCount * MARKCOST;\n }\n case STATE_MARK: {\n let black = i32(!white);\n obj = iter.next;\n while (obj != toSpace) {\n iter = obj;\n if (obj.color != black) { // skip already-blacks (pointerfree)\n obj.color = black;\n visitCount = 0;\n __visit_members(changetype(obj) + TOTAL_OVERHEAD, VISIT_SCAN);\n return visitCount * MARKCOST;\n }\n obj = obj.next;\n }\n visitCount = 0;\n visitRoots(VISIT_SCAN);\n obj = iter.next;\n if (obj == toSpace) {\n visitStack(VISIT_SCAN);\n obj = iter.next;\n while (obj != toSpace) {\n if (obj.color != black) {\n obj.color = black;\n __visit_members(changetype(obj) + TOTAL_OVERHEAD, VISIT_SCAN);\n }\n obj = obj.next;\n }\n let from = fromSpace;\n fromSpace = toSpace;\n toSpace = from;\n white = black;\n iter = from.next;\n state = STATE_SWEEP;\n }\n return visitCount * MARKCOST;\n }\n case STATE_SWEEP: {\n obj = iter;\n if (obj != toSpace) {\n iter = obj.next;\n if (DEBUG) assert(obj.color == i32(!white)); // old white\n free(obj);\n return SWEEPCOST;\n }\n toSpace.nextWithColor = changetype(toSpace);\n toSpace.prev = toSpace;\n state = STATE_IDLE;\n break;\n }\n }\n return 0;\n}\n\n/** Frees an object. */\nfunction free(obj: Object): void {\n if (changetype(obj) < __heap_base) {\n obj.nextWithColor = 0; // may become linked again\n obj.prev = changetype(0);\n } else {\n total -= obj.size;\n if (isDefined(__finalize)) {\n __finalize(changetype(obj) + TOTAL_OVERHEAD);\n }\n __free(changetype(obj) + BLOCK_OVERHEAD);\n }\n}\n\n// Garbage collector interface\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __new(size: usize, id: i32): usize {\n if (size >= OBJECT_MAXSIZE) throw new Error(E_ALLOCATION_TOO_LARGE);\n if (total >= threshold) interrupt();\n var obj = changetype(__alloc(OBJECT_OVERHEAD + size) - BLOCK_OVERHEAD);\n obj.rtId = id;\n obj.rtSize = size;\n obj.linkTo(fromSpace, white); // inits next/prev\n total += obj.size;\n var ptr = changetype(obj) + TOTAL_OVERHEAD;\n // may be visited before being fully initialized, so must fill\n memory.fill(ptr, 0, size);\n return ptr;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __renew(oldPtr: usize, size: usize): usize {\n var oldObj = changetype(oldPtr - TOTAL_OVERHEAD);\n // Update object size if its block is large enough\n if (size <= (oldObj.mmInfo & ~3) - OBJECT_OVERHEAD) {\n oldObj.rtSize = size;\n return oldPtr;\n }\n // If not the same object anymore, we have to move it move it due to the\n // shadow stack potentially still referencing the old object\n var newPtr = __new(size, oldObj.rtId);\n memory.copy(newPtr, oldPtr, min(size, oldObj.rtSize));\n return newPtr;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __link(parentPtr: usize, childPtr: usize, expectMultiple: bool): void {\n // Write barrier is unnecessary if non-incremental\n if (!childPtr) return;\n if (DEBUG) assert(parentPtr);\n var child = changetype(childPtr - TOTAL_OVERHEAD);\n if (child.color == white) {\n let parent = changetype(parentPtr - TOTAL_OVERHEAD);\n let parentColor = parent.color;\n if (parentColor == i32(!white)) {\n // Maintain the invariant that no black object may point to a white object.\n if (expectMultiple) {\n // Move the barrier \"backward\". Suitable for containers receiving multiple stores.\n // Avoids a barrier for subsequent objects stored into the same container.\n parent.makeGray();\n } else {\n // Move the barrier \"forward\". Suitable for objects receiving isolated stores.\n child.makeGray();\n }\n } else if (parentColor == transparent && state == STATE_MARK) {\n // Pinned objects are considered 'black' during the mark phase.\n child.makeGray();\n }\n }\n}\n\n// @ts-ignore: decorator\n@lazy var visitCount = 0;\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __visit(ptr: usize, cookie: i32): void {\n if (!ptr) return;\n let obj = changetype(ptr - TOTAL_OVERHEAD);\n if (RTRACE) if (!onvisit(obj)) return;\n if (obj.color == white) {\n obj.makeGray();\n ++visitCount;\n }\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __pin(ptr: usize): usize {\n if (ptr) {\n let obj = changetype(ptr - TOTAL_OVERHEAD);\n if (obj.color == transparent) {\n throw new Error(E_ALREADY_PINNED);\n }\n obj.unlink(); // from fromSpace\n obj.linkTo(pinSpace, transparent);\n }\n return ptr;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __unpin(ptr: usize): void {\n if (!ptr) return;\n var obj = changetype(ptr - TOTAL_OVERHEAD);\n if (obj.color != transparent) {\n throw new Error(E_NOT_PINNED);\n }\n if (state == STATE_MARK) {\n // We may be right at the point after marking roots for the second time and\n // entering the sweep phase, in which case the object would be missed if it\n // is not only pinned but also a root. Make sure it isn't missed.\n obj.makeGray();\n } else {\n obj.unlink();\n obj.linkTo(fromSpace, white);\n }\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __collect(): void {\n if (TRACE) trace(\"GC (full) at\", 1, total);\n if (state > STATE_IDLE) {\n // finish current cycle\n while (state != STATE_IDLE) step();\n }\n // perform a full cycle\n step();\n while (state != STATE_IDLE) step();\n threshold = (total * IDLEFACTOR / 100) + GRANULARITY;\n if (TRACE) trace(\"GC (full) done at cur/max\", 2, total, memory.size() << 16);\n if (RTRACE || PROFILE) oncollect(total);\n}\n\n// Garbage collector automation\n\n/** How often to interrupt. The default of 1024 means \"interrupt each 1024 bytes allocated\". */\n// @ts-ignore: decorator\n@inline const GRANULARITY: usize = isDefined(ASC_GC_GRANULARITY) ? ASC_GC_GRANULARITY : 1024;\n/** How long to interrupt. The default of 200% means \"run at double the speed of allocations\". */\n// @ts-ignore: decorator\n@inline const STEPFACTOR: usize = isDefined(ASC_GC_SWEEPFACTOR) ? ASC_GC_SWEEPFACTOR : 200;\n/** How long to idle. The default of 200% means \"wait for memory to double before kicking in again\". */\n// @ts-ignore: decorator\n@inline const IDLEFACTOR: usize = isDefined(ASC_GC_IDLEFACTOR) ? ASC_GC_IDLEFACTOR : 200;\n\n/** Threshold of memory used by objects to exceed before interrupting again. */\n// @ts-ignore: decorator\n@lazy var threshold: usize = ((memory.size() << 16) - __heap_base) >> 1;\n\n/** Performs a reasonable amount of incremental GC steps. */\nfunction interrupt(): void {\n if (PROFILE) oninterrupt(total);\n if (TRACE) trace(\"GC (auto) at\", 1, total);\n var budget: isize = GRANULARITY * STEPFACTOR / 100;\n do {\n budget -= step();\n if (state == STATE_IDLE) {\n if (TRACE) trace(\"└ GC (auto) done at cur/max\", 2, total, memory.size() << 16);\n threshold = (total * IDLEFACTOR / 100) + GRANULARITY;\n if (PROFILE) onyield(total);\n return;\n }\n } while (budget > 0);\n if (TRACE) trace(\"└ GC (auto) ongoing at\", 1, total);\n threshold = total + GRANULARITY * usize(total - threshold < GRANULARITY);\n if (PROFILE) onyield(total);\n}\n","// Ported from perlin reference implementation (https://cs.nyu.edu/~perlin/noise/)\n\nexport function perlin(_x: i32, _y: i32, _z: i32, denom: i32): f64 {\n // Convert fraction into f64\n let x: f64 = f64(_x) / f64(denom);\n let y: f64 = f64(_y) / f64(denom);\n let z: f64 = f64(_z) / f64(denom);\n\n // Find unit cube that contains point\n const X: i32 = i32(Math.floor(x)) & 255;\n const Y: i32 = i32(Math.floor(y)) & 255;\n const Z: i32 = i32(Math.floor(z)) & 255;\n\n // Find relative x,y,z of point in cube\n x -= Math.floor(x);\n y -= Math.floor(y);\n z -= Math.floor(z);\n\n // Compute fade curves for each x,y,z\n const u: f64 = fade(x);\n const v: f64 = fade(y);\n const w: f64 = fade(z);\n\n // Hash coordinates of the 8 cube corners\n const A: i32 = p[X] + Y;\n const AA: i32 = p[A] + Z;\n const AB: i32 = p[A + 1] + Z;\n const B: i32 = p[X + 1] + Y;\n const BA: i32 = p[B] + Z;\n const BB: i32 = p[B + 1] + Z;\n\n // Add blended results from 8 corners of cube\n const r: f64 = lerp(\n w,\n lerp(\n v,\n lerp(u, grad(p[AA], x, y, z), grad(p[BA], x - 1, y, z)),\n lerp(u, grad(p[AB], x, y - 1, z), grad(p[BB], x - 1, y - 1, z))\n ),\n lerp(\n v,\n lerp(u, grad(p[AA + 1], x, y, z - 1), grad(p[BA + 1], x - 1, y, z - 1)),\n lerp(u, grad(p[AB + 1], x, y - 1, z - 1), grad(p[BB + 1], x - 1, y - 1, z - 1))\n )\n );\n\n // Shift to range from 0 to 1\n return (r + 1) / 2;\n}\n\nfunction fade(t: f64): f64 {\n return t * t * t * (t * (t * 6 - 15) + 10);\n}\n\nfunction lerp(t: f64, a: f64, b: f64): f64 {\n return a + t * (b - a);\n}\n\nfunction grad(hash: i32, x: f64, y: f64, z: f64): f64 {\n switch (hash & 0xf) {\n case 0x0:\n return x + y;\n case 0x1:\n return -x + y;\n case 0x2:\n return x - y;\n case 0x3:\n return -x - y;\n case 0x4:\n return x + z;\n case 0x5:\n return -x + z;\n case 0x6:\n return x - z;\n case 0x7:\n return -x - z;\n case 0x8:\n return y + z;\n case 0x9:\n return -y + z;\n case 0xa:\n return y - z;\n case 0xb:\n return -y - z;\n case 0xc:\n return y + x;\n case 0xd:\n return -y + z;\n case 0xe:\n return y - x;\n case 0xf:\n return -y - z;\n default:\n return 0; // never happens\n }\n}\n\nconst p: i32[] = [\n 151, 160, 137, 91, 90, 15, 131, 13, 201, 95, 96, 53, 194, 233, 7, 225, 140, 36, 103, 30, 69, 142, 8, 99, 37, 240, 21,\n 10, 23, 190, 6, 148, 247, 120, 234, 75, 0, 26, 197, 62, 94, 252, 219, 203, 117, 35, 11, 32, 57, 177, 33, 88, 237, 149,\n 56, 87, 174, 20, 125, 136, 171, 168, 68, 175, 74, 165, 71, 134, 139, 48, 27, 166, 77, 146, 158, 231, 83, 111, 229,\n 122, 60, 211, 133, 230, 220, 105, 92, 41, 55, 46, 245, 40, 244, 102, 143, 54, 65, 25, 63, 161, 1, 216, 80, 73, 209,\n 76, 132, 187, 208, 89, 18, 169, 200, 196, 135, 130, 116, 188, 159, 86, 164, 100, 109, 198, 173, 186, 3, 64, 52, 217,\n 226, 250, 124, 123, 5, 202, 38, 147, 118, 126, 255, 82, 85, 212, 207, 206, 59, 227, 47, 16, 58, 17, 182, 189, 28, 42,\n 223, 183, 170, 213, 119, 248, 152, 2, 44, 154, 163, 70, 221, 153, 101, 155, 167, 43, 172, 9, 129, 22, 39, 253, 19, 98,\n 108, 110, 79, 113, 224, 232, 178, 185, 112, 104, 218, 246, 97, 228, 251, 34, 242, 193, 238, 210, 144, 12, 191, 179,\n 162, 241, 81, 51, 145, 235, 249, 14, 239, 107, 49, 192, 214, 31, 181, 199, 106, 157, 184, 84, 204, 176, 115, 121, 50,\n 45, 127, 4, 150, 254, 138, 236, 205, 93, 222, 114, 67, 29, 24, 72, 243, 141, 128, 195, 78, 66, 215, 61, 156, 180, 151,\n 160, 137, 91, 90, 15, 131, 13, 201, 95, 96, 53, 194, 233, 7, 225, 140, 36, 103, 30, 69, 142, 8, 99, 37, 240, 21, 10,\n 23, 190, 6, 148, 247, 120, 234, 75, 0, 26, 197, 62, 94, 252, 219, 203, 117, 35, 11, 32, 57, 177, 33, 88, 237, 149, 56,\n 87, 174, 20, 125, 136, 171, 168, 68, 175, 74, 165, 71, 134, 139, 48, 27, 166, 77, 146, 158, 231, 83, 111, 229, 122,\n 60, 211, 133, 230, 220, 105, 92, 41, 55, 46, 245, 40, 244, 102, 143, 54, 65, 25, 63, 161, 1, 216, 80, 73, 209, 76,\n 132, 187, 208, 89, 18, 169, 200, 196, 135, 130, 116, 188, 159, 86, 164, 100, 109, 198, 173, 186, 3, 64, 52, 217, 226,\n 250, 124, 123, 5, 202, 38, 147, 118, 126, 255, 82, 85, 212, 207, 206, 59, 227, 47, 16, 58, 17, 182, 189, 28, 42, 223,\n 183, 170, 213, 119, 248, 152, 2, 44, 154, 163, 70, 221, 153, 101, 155, 167, 43, 172, 9, 129, 22, 39, 253, 19, 98, 108,\n 110, 79, 113, 224, 232, 178, 185, 112, 104, 218, 246, 97, 228, 251, 34, 242, 193, 238, 210, 144, 12, 191, 179, 162,\n 241, 81, 51, 145, 235, 249, 14, 239, 107, 49, 192, 214, 31, 181, 199, 106, 157, 184, 84, 204, 176, 115, 121, 50, 45,\n 127, 4, 150, 254, 138, 236, 205, 93, 222, 114, 67, 29, 24, 72, 243, 141, 128, 195, 78, 66, 215, 61, 156, 180,\n];\n","//\n// Lookup data for exp2f\n//\n\n// @ts-ignore: decorator\n@inline const EXP2F_TABLE_BITS = 5;\n\n// @ts-ignore: decorator\n@lazy @inline const EXP2F_DATA_TAB = memory.data([\n // exp2f_data_tab[i] = uint(2^(i/N)) - (i << 52-BITS)\n // used for computing 2^(k/N) for an int |k| < 150 N as\n // double(tab[k%N] + (k << 52-BITS))\n 0x3FF0000000000000, 0x3FEFD9B0D3158574, 0x3FEFB5586CF9890F, 0x3FEF9301D0125B51,\n 0x3FEF72B83C7D517B, 0x3FEF54873168B9AA, 0x3FEF387A6E756238, 0x3FEF1E9DF51FDEE1,\n 0x3FEF06FE0A31B715, 0x3FEEF1A7373AA9CB, 0x3FEEDEA64C123422, 0x3FEECE086061892D,\n 0x3FEEBFDAD5362A27, 0x3FEEB42B569D4F82, 0x3FEEAB07DD485429, 0x3FEEA47EB03A5585,\n 0x3FEEA09E667F3BCD, 0x3FEE9F75E8EC5F74, 0x3FEEA11473EB0187, 0x3FEEA589994CCE13,\n 0x3FEEACE5422AA0DB, 0x3FEEB737B0CDC5E5, 0x3FEEC49182A3F090, 0x3FEED503B23E255D,\n 0x3FEEE89F995AD3AD, 0x3FEEFF76F2FB5E47, 0x3FEF199BDD85529C, 0x3FEF3720DCEF9069,\n 0x3FEF5818DCFBA487, 0x3FEF7C97337B9B5F, 0x3FEFA4AFA2A490DA, 0x3FEFD0765B6E4540\n]);\n\n// ULP error: 0.502 (nearest rounding.)\n// Relative error: 1.69 * 2^-34 in [-1/64, 1/64] (before rounding.)\n// Wrong count: 168353 (all nearest rounding wrong results with fma.)\n// @ts-ignore: decorator\n@inline\nexport function exp2f_lut(x: f32): f32 {\n const\n N = 1 << EXP2F_TABLE_BITS,\n N_MASK = N - 1,\n shift = reinterpret(0x4338000000000000) / N, // 0x1.8p+52\n Ox127f = reinterpret(0x7F000000);\n\n const\n C0 = reinterpret(0x3FAC6AF84B912394), // 0x1.c6af84b912394p-5\n C1 = reinterpret(0x3FCEBFCE50FAC4F3), // 0x1.ebfce50fac4f3p-3\n C2 = reinterpret(0x3FE62E42FF0C52D6); // 0x1.62e42ff0c52d6p-1\n\n var xd = x;\n var ix = reinterpret(x);\n var ux = ix >> 20 & 0x7FF;\n if (ux >= 0x430) {\n // |x| >= 128 or x is nan.\n if (ix == 0xFF800000) return 0; // x == -Inf -> 0\n if (ux >= 0x7F8) return x + x; // x == Inf/NaN -> Inf/NaN\n if (x > 0) return x * Ox127f; // x > 0 -> HugeVal (Owerflow)\n if (x <= -150) return 0; // x <= -150 -> 0 (Underflow)\n }\n\n // x = k/N + r with r in [-1/(2N), 1/(2N)] and int k.\n var kd = xd + shift;\n var ki = reinterpret(kd);\n var r = xd - (kd - shift);\n var t: u64, y: f64, s: f64;\n\n // exp2(x) = 2^(k/N) * 2^r ~= s * (C0*r^3 + C1*r^2 + C2*r + 1)\n t = load(EXP2F_DATA_TAB + ((ki & N_MASK) << alignof()));\n t += ki << (52 - EXP2F_TABLE_BITS);\n s = reinterpret(t);\n y = C2 * r + 1;\n y += (C0 * r + C1) * (r * r);\n y *= s;\n\n return y;\n}\n\n// ULP error: 0.502 (nearest rounding.)\n// Relative error: 1.69 * 2^-34 in [-ln2/64, ln2/64] (before rounding.)\n// Wrong count: 170635 (all nearest rounding wrong results with fma.)\n// @ts-ignore: decorator\n@inline\nexport function expf_lut(x: f32): f32 {\n const\n N = 1 << EXP2F_TABLE_BITS,\n N_MASK = N - 1,\n shift = reinterpret(0x4338000000000000), // 0x1.8p+52\n InvLn2N = reinterpret(0x3FF71547652B82FE) * N, // 0x1.71547652b82fep+0\n Ox1p127f = reinterpret(0x7F000000);\n\n const\n C0 = reinterpret(0x3FAC6AF84B912394) / N / N / N, // 0x1.c6af84b912394p-5\n C1 = reinterpret(0x3FCEBFCE50FAC4F3) / N / N, // 0x1.ebfce50fac4f3p-3\n C2 = reinterpret(0x3FE62E42FF0C52D6) / N; // 0x1.62e42ff0c52d6p-1\n\n var xd = x;\n var ix = reinterpret(x);\n var ux = ix >> 20 & 0x7FF;\n if (ux >= 0x42B) {\n // |x| >= 88 or x is nan.\n if (ix == 0xFF800000) return 0; // x == -Inf -> 0\n if (ux >= 0x7F8) return x + x; // x == Inf/NaN -> Inf/NaN\n if (x > reinterpret(0x42B17217)) return x * Ox1p127f; // x > log(0x1p128) ~= 88.72 -> HugeVal (Owerflow)\n if (x < reinterpret(0xC2CFF1B4)) return 0; // x < log(0x1p-150) ~= -103.97 -> 0 (Underflow)\n }\n\n // x*N/Ln2 = k + r with r in [-1/2, 1/2] and int k.\n var z = InvLn2N * xd;\n\n // Round and convert z to int, the result is in [-150*N, 128*N] and\n // ideally ties-to-even rule is used, otherwise the magnitude of r\n // can be bigger which gives larger approximation error.\n var kd = (z + shift);\n var ki = reinterpret(kd);\n var r = z - (kd - shift);\n var s: f64, y: f64, t: u64;\n\n // exp(x) = 2^(k/N) * 2^(r/N) ~= s * (C0*r^3 + C1*r^2 + C2*r + 1)\n t = load(EXP2F_DATA_TAB + ((ki & N_MASK) << alignof()));\n t += ki << (52 - EXP2F_TABLE_BITS);\n s = reinterpret(t);\n z = C0 * r + C1;\n y = C2 * r + 1;\n y += z * (r * r);\n y *= s;\n\n return y;\n}\n\n//\n// Lookup data for log2f\n//\n\n// @ts-ignore: decorator\n@inline const LOG2F_TABLE_BITS = 4;\n\n// @ts-ignore: decorator\n@lazy @inline const LOG2F_DATA_TAB = memory.data([\n reinterpret(0x3FF661EC79F8F3BE), reinterpret(0xBFDEFEC65B963019), // 0x1.661ec79f8f3bep+0, -0x1.efec65b963019p-2,\n reinterpret(0x3FF571ED4AAF883D), reinterpret(0xBFDB0B6832D4FCA4), // 0x1.571ed4aaf883dp+0, -0x1.b0b6832d4fca4p-2,\n reinterpret(0x3FF49539F0F010B0), reinterpret(0xBFD7418B0A1FB77B), // 0x1.49539f0f010bp+0 , -0x1.7418b0a1fb77bp-2,\n reinterpret(0x3FF3C995B0B80385), reinterpret(0xBFD39DE91A6DCF7B), // 0x1.3c995b0b80385p+0, -0x1.39de91a6dcf7bp-2,\n reinterpret(0x3FF30D190C8864A5), reinterpret(0xBFD01D9BF3F2B631), // 0x1.30d190c8864a5p+0, -0x1.01d9bf3f2b631p-2,\n reinterpret(0x3FF25E227B0B8EA0), reinterpret(0xBFC97C1D1B3B7AF0), // 0x1.25e227b0b8eap+0 , -0x1.97c1d1b3b7afp-3 ,\n reinterpret(0x3FF1BB4A4A1A343F), reinterpret(0xBFC2F9E393AF3C9F), // 0x1.1bb4a4a1a343fp+0, -0x1.2f9e393af3c9fp-3,\n reinterpret(0x3FF12358F08AE5BA), reinterpret(0xBFB960CBBF788D5C), // 0x1.12358f08ae5bap+0, -0x1.960cbbf788d5cp-4,\n reinterpret(0x3FF0953F419900A7), reinterpret(0xBFAA6F9DB6475FCE), // 0x1.0953f419900a7p+0, -0x1.a6f9db6475fcep-5,\n reinterpret(0x3FF0000000000000), 0, // 0x1p+0, 0x0,\n reinterpret(0x3FEE608CFD9A47AC), reinterpret(0x3FB338CA9F24F53D), // 0x1.e608cfd9a47acp-1, 0x1.338ca9f24f53dp-4,\n reinterpret(0x3FECA4B31F026AA0), reinterpret(0x3FC476A9543891BA), // 0x1.ca4b31f026aap-1 , 0x1.476a9543891bap-3,\n reinterpret(0x3FEB2036576AFCE6), reinterpret(0x3FCE840B4AC4E4D2), // 0x1.b2036576afce6p-1, 0x1.e840b4ac4e4d2p-3,\n reinterpret(0x3FE9C2D163A1AA2D), reinterpret(0x3FD40645F0C6651C), // 0x1.9c2d163a1aa2dp-1, 0x1.40645f0c6651cp-2,\n reinterpret(0x3FE886E6037841ED), reinterpret(0x3FD88E9C2C1B9FF8), // 0x1.886e6037841edp-1, 0x1.88e9c2c1b9ff8p-2,\n reinterpret(0x3FE767DCF5534862), reinterpret(0x3FDCE0A44EB17BCC) // 0x1.767dcf5534862p-1, 0x1.ce0a44eb17bccp-2\n]);\n\n// ULP error: 0.752 (nearest rounding.)\n// Relative error: 1.9 * 2^-26 (before rounding.)\n// @ts-ignore: decorator\n@inline\nexport function log2f_lut(x: f32): f32 {\n const\n N_MASK = (1 << LOG2F_TABLE_BITS) - 1,\n Ox1p23f = reinterpret(0x4B000000); // 0x1p23f\n\n const\n A0 = reinterpret(0xBFD712B6F70A7E4D), // -0x1.712b6f70a7e4dp-2\n A1 = reinterpret(0x3FDECABF496832E0), // 0x1.ecabf496832ep-2\n A2 = reinterpret(0xBFE715479FFAE3DE), // -0x1.715479ffae3dep-1\n A3 = reinterpret(0x3FF715475F35C8B8); // 0x1.715475f35c8b8p0\n\n var ux = reinterpret(x);\n // Fix sign of zero with downward rounding when x==1.\n // if (WANT_ROUNDING && predict_false(ix == 0x3f800000)) return 0;\n if (ux - 0x00800000 >= 0x7F800000 - 0x00800000) {\n // x < 0x1p-126 or inf or nan.\n if (ux * 2 == 0) return -Infinity;\n if (ux == 0x7F800000) return x; // log2(inf) == inf.\n if ((ux >> 31) || ux * 2 >= 0xFF000000) return (x - x) / (x - x);\n // x is subnormal, normalize it.\n ux = reinterpret(x * Ox1p23f);\n ux -= 23 << 23;\n }\n // x = 2^k z; where z is in range [OFF,2*OFF] and exact.\n // The range is split into N subintervals.\n // The ith subinterval contains z and c is near its center.\n var tmp = ux - 0x3F330000;\n var i = (tmp >> (23 - LOG2F_TABLE_BITS)) & N_MASK;\n var top = tmp & 0xFF800000;\n var iz = ux - top;\n var k = tmp >> 23;\n\n var invc = load(LOG2F_DATA_TAB + (i << (1 + alignof())), 0 << alignof());\n var logc = load(LOG2F_DATA_TAB + (i << (1 + alignof())), 1 << alignof());\n var z = reinterpret(iz);\n\n // log2(x) = log1p(z/c-1)/ln2 + log2(c) + k\n var r = z * invc - 1;\n var y0 = logc + k;\n\n // Pipelined polynomial evaluation to approximate log1p(r)/ln2.\n var y = A1 * r + A2;\n var p = A3 * r + y0;\n var r2 = r * r;\n y += A0 * r2;\n y = y * r2 + p;\n\n return y;\n}\n\n//\n// Lookup data for logf. See: https://git.musl-libc.org/cgit/musl/tree/src/math/logf.c\n//\n\n// @ts-ignore: decorator\n@inline const LOGF_TABLE_BITS = 4;\n\n// @ts-ignore: decorator\n@lazy @inline const LOGF_DATA_TAB = memory.data([\n reinterpret(0x3FF661EC79F8F3BE), reinterpret(0xBFD57BF7808CAADE), // 0x1.661ec79f8f3bep+0, -0x1.57bf7808caadep-2,\n reinterpret(0x3FF571ED4AAF883D), reinterpret(0xBFD2BEF0A7C06DDB), // 0x1.571ed4aaf883dp+0, -0x1.2bef0a7c06ddbp-2,\n reinterpret(0x3FF49539F0F010B0), reinterpret(0xBFD01EAE7F513A67), // 0x1.49539f0f010bp+0 , -0x1.01eae7f513a67p-2,\n reinterpret(0x3FF3C995B0B80385), reinterpret(0xBFCB31D8A68224E9), // 0x1.3c995b0b80385p+0, -0x1.b31d8a68224e9p-3,\n reinterpret(0x3FF30D190C8864A5), reinterpret(0xBFC6574F0AC07758), // 0x1.30d190c8864a5p+0, -0x1.6574f0ac07758p-3,\n reinterpret(0x3FF25E227B0B8EA0), reinterpret(0xBFC1AA2BC79C8100), // 0x1.25e227b0b8eap+0 , -0x1.1aa2bc79c81p-3 ,\n reinterpret(0x3FF1BB4A4A1A343F), reinterpret(0xBFBA4E76CE8C0E5E), // 0x1.1bb4a4a1a343fp+0, -0x1.a4e76ce8c0e5ep-4,\n reinterpret(0x3FF12358F08AE5BA), reinterpret(0xBFB1973C5A611CCC), // 0x1.12358f08ae5bap+0, -0x1.1973c5a611cccp-4,\n reinterpret(0x3FF0953F419900A7), reinterpret(0xBFA252F438E10C1E), // 0x1.0953f419900a7p+0, -0x1.252f438e10c1ep-5,\n reinterpret(0x3FF0000000000000), 0, // 0x1p+0, 0,\n reinterpret(0x3FEE608CFD9A47AC), reinterpret(0x3FAAA5AA5DF25984), // 0x1.e608cfd9a47acp-1, 0x1.aa5aa5df25984p-5,\n reinterpret(0x3FECA4B31F026AA0), reinterpret(0x3FBC5E53AA362EB4), // 0x1.ca4b31f026aap-1 , 0x1.c5e53aa362eb4p-4,\n reinterpret(0x3FEB2036576AFCE6), reinterpret(0x3FC526E57720DB08), // 0x1.b2036576afce6p-1, 0x1.526e57720db08p-3,\n reinterpret(0x3FE9C2D163A1AA2D), reinterpret(0x3FCBC2860D224770), // 0x1.9c2d163a1aa2dp-1, 0x1.bc2860d22477p-3 ,\n reinterpret(0x3FE886E6037841ED), reinterpret(0x3FD1058BC8A07EE1), // 0x1.886e6037841edp-1, 0x1.1058bc8a07ee1p-2,\n reinterpret(0x3FE767DCF5534862), reinterpret(0x3FD4043057B6EE09) // 0x1.767dcf5534862p-1, 0x1.4043057b6ee09p-2\n]);\n\n// ULP error: 0.818 (nearest rounding.)\n// Relative error: 1.957 * 2^-26 (before rounding.)\n// @ts-ignore: decorator\n@inline\nexport function logf_lut(x: f32): f32 {\n const\n N_MASK = (1 << LOGF_TABLE_BITS) - 1,\n Ox1p23f = reinterpret(0x4B000000); // 0x1p23f\n\n const\n Ln2 = reinterpret(0x3FE62E42FEFA39EF), // 0x1.62e42fefa39efp-1;\n A0 = reinterpret(0xBFD00EA348B88334), // -0x1.00ea348b88334p-2\n A1 = reinterpret(0x3FD5575B0BE00B6A), // 0x1.5575b0be00b6ap-2\n A2 = reinterpret(0xBFDFFFFEF20A4123); // -0x1.ffffef20a4123p-2\n\n var ux = reinterpret(x);\n // Fix sign of zero with downward rounding when x==1.\n // if (WANT_ROUNDING && ux == 0x3f800000) return 0;\n if (ux - 0x00800000 >= 0x7F800000 - 0x00800000) {\n // x < 0x1p-126 or inf or nan.\n if ((ux << 1) == 0) return -Infinity;\n if (ux == 0x7F800000) return x; // log(inf) == inf.\n if ((ux >> 31) || (ux << 1) >= 0xFF000000) return (x - x) / (x - x);\n // x is subnormal, normalize it.\n ux = reinterpret(x * Ox1p23f);\n ux -= 23 << 23;\n }\n // x = 2^k z; where z is in range [OFF,2*OFF] and exact.\n // The range is split into N subintervals.\n // The ith subinterval contains z and c is near its center.\n var tmp = ux - 0x3F330000;\n var i = (tmp >> (23 - LOGF_TABLE_BITS)) & N_MASK;\n var k = tmp >> 23;\n var iz = ux - (tmp & 0x1FF << 23);\n\n var invc = load(LOGF_DATA_TAB + (i << (1 + alignof())), 0 << alignof());\n var logc = load(LOGF_DATA_TAB + (i << (1 + alignof())), 1 << alignof());\n\n var z = reinterpret(iz);\n\n // log(x) = log1p(z/c-1) + log(c) + k*Ln2\n var r = z * invc - 1;\n var y0 = logc + k * Ln2;\n\n // Pipelined polynomial evaluation to approximate log1p(r).\n var r2 = r * r;\n var y = A1 * r + A2;\n y += A0 * r2;\n y = y * r2 + (y0 + r);\n\n return y;\n}\n\n//\n// Lookup data for powf. See: https://git.musl-libc.org/cgit/musl/tree/src/math/powf.c\n//\n\n// @ts-ignore: decorator\n@inline\nfunction zeroinfnanf(ux: u32): bool {\n return (ux << 1) - 1 >= (0x7f800000 << 1) - 1;\n}\n\n// Returns 0 if not int, 1 if odd int, 2 if even int. The argument is\n// the bit representation of a non-zero finite floating-point value.\n// @ts-ignore: decorator\n@inline\nfunction checkintf(iy: u32): i32 {\n var e = iy >> 23 & 0xFF;\n if (e < 0x7F ) return 0;\n if (e > 0x7F + 23) return 2;\n e = 1 << (0x7F + 23 - e);\n if (iy & (e - 1)) return 0;\n if (iy & e ) return 1;\n return 2;\n}\n\n// Subnormal input is normalized so ix has negative biased exponent.\n// Output is multiplied by N (POWF_SCALE) if TOINT_INTRINICS is set.\n// @ts-ignore: decorator\n@inline\nfunction log2f_inline(ux: u32): f64 {\n const N_MASK = (1 << LOG2F_TABLE_BITS) - 1;\n\n const\n A0 = reinterpret(0x3FD27616C9496E0B), // 0x1.27616c9496e0bp-2\n A1 = reinterpret(0xBFD71969A075C67A), // -0x1.71969a075c67ap-2\n A2 = reinterpret(0x3FDEC70A6CA7BADD), // 0x1.ec70a6ca7baddp-2\n A3 = reinterpret(0xBFE7154748BEF6C8), // -0x1.7154748bef6c8p-1\n A4 = reinterpret(0x3FF71547652AB82B); // 0x1.71547652ab82bp+0\n\n // x = 2^k z; where z is in range [OFF,2*OFF] and exact.\n // The range is split into N subintervals.\n // The ith subinterval contains z and c is near its center.\n var tmp = ux - 0x3F330000;\n var i = usize((tmp >> (23 - LOG2F_TABLE_BITS)) & N_MASK);\n var top = tmp & 0xFF800000;\n var uz = ux - top;\n var k = top >> 23;\n\n var invc = load(LOG2F_DATA_TAB + (i << (1 + alignof())), 0 << alignof());\n var logc = load(LOG2F_DATA_TAB + (i << (1 + alignof())), 1 << alignof());\n var z = reinterpret(uz);\n\n // log2(x) = log1p(z/c-1)/ln2 + log2(c) + k\n var r = z * invc - 1;\n var y0 = logc + k;\n\n // Pipelined polynomial evaluation to approximate log1p(r)/ln2.\n var y = A0 * r + A1;\n var p = A2 * r + A3;\n var q = A4 * r + y0;\n\n r *= r;\n q += p * r;\n y = y * (r * r) + q;\n\n return y;\n}\n\n// The output of log2 and thus the input of exp2 is either scaled by N\n// (in case of fast toint intrinsics) or not. The unscaled xd must be\n// in [-1021,1023], sign_bias sets the sign of the result.\n// @ts-ignore: decorator\n@inline\nfunction exp2f_inline(xd: f64, signBias: u32): f32 {\n const\n N = 1 << EXP2F_TABLE_BITS,\n N_MASK = N - 1,\n shift = reinterpret(0x4338000000000000) / N; // 0x1.8p+52\n\n const\n C0 = reinterpret(0x3FAC6AF84B912394), // 0x1.c6af84b912394p-5\n C1 = reinterpret(0x3FCEBFCE50FAC4F3), // 0x1.ebfce50fac4f3p-3\n C2 = reinterpret(0x3FE62E42FF0C52D6); // 0x1.62e42ff0c52d6p-1\n\n // x = k/N + r with r in [-1/(2N), 1/(2N)]\n var kd = (xd + shift);\n var ki = reinterpret(kd);\n var r = xd - (kd - shift);\n var t: u64, z: f64, y: f64, s: f64;\n\n // exp2(x) = 2^(k/N) * 2^r ~= s * (C0*r^3 + C1*r^2 + C2*r + 1)\n t = load(EXP2F_DATA_TAB + ((ki & N_MASK) << alignof()));\n t += (ki + signBias) << (52 - EXP2F_TABLE_BITS);\n s = reinterpret(t);\n z = C0 * r + C1;\n y = C2 * r + 1;\n y += z * (r * r);\n y *= s;\n return y;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction xflowf(sign: u32, y: f32): f32 {\n return select(-y, y, sign) * y;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction oflowf(sign: u32): f32 {\n return xflowf(sign, reinterpret(0x70000000)); // 0x1p97f\n}\n\n// @ts-ignore: decorator\n@inline\nfunction uflowf(sign: u32): f32 {\n return xflowf(sign, reinterpret(0x10000000)); // 0x1p-95f\n}\n\n// @ts-ignore: decorator\n@inline\nexport function powf_lut(x: f32, y: f32): f32 {\n const\n Ox1p23f = reinterpret(0x4B000000), // 0x1p23f\n UPPER_LIMIT = reinterpret(0x405FFFFFFFD1D571), // 0x1.fffffffd1d571p+6\n LOWER_LIMIT = -150.0,\n SIGN_BIAS = 1 << (EXP2F_TABLE_BITS + 11);\n\n var signBias: u32 = 0;\n var ix = reinterpret(x);\n var iy = reinterpret(y);\n var ny = 0;\n\n if (i32(ix - 0x00800000 >= 0x7f800000 - 0x00800000) | (ny = i32(zeroinfnanf(iy)))) {\n // Either (x < 0x1p-126 or inf or nan) or (y is 0 or inf or nan).\n if (ny) {\n if ((iy << 1) == 0) return 1.0;\n if (ix == 0x3F800000) return NaN; // original: 1.0\n if ((ix << 1) > (0x7F800000 << 1) || (iy << 1) > (0x7F800000 << 1)) return x + y;\n if ((ix << 1) == (0x3F800000 << 1)) return NaN; // original: 1.0\n if (((ix << 1) < (0x3F800000 << 1)) == !(iy >> 31)) return 0; // |x| < 1 && y==inf or |x| > 1 && y==-inf.\n return y * y;\n }\n if (zeroinfnanf(ix)) {\n let x2 = x * x;\n if ((ix >> 31) && checkintf(iy) == 1) x2 = -x2;\n return iy < 0 ? 1 / x2 : x2;\n }\n // x and y are non-zero finite.\n if (ix < 0) {\n // Finite x < 0.\n let yint = checkintf(iy);\n if (yint == 0) return (x - x) / (x - x);\n if (yint == 1) signBias = SIGN_BIAS;\n ix &= 0x7FFFFFFF;\n }\n if (ix < 0x00800000) {\n // Normalize subnormal x so exponent becomes negative.\n ix = reinterpret(x * Ox1p23f);\n ix &= 0x7FFFFFFF;\n ix -= 23 << 23;\n }\n }\n var logx = log2f_inline(ix);\n var ylogx = y * logx; // cannot overflow, y is single prec.\n if ((reinterpret(ylogx) >> 47 & 0xFFFF) >= 0x80BF) { // reinterpret(126.0) >> 47\n // |y * log(x)| >= 126\n if (ylogx > UPPER_LIMIT) return oflowf(signBias); // overflow\n if (ylogx <= LOWER_LIMIT) return uflowf(signBias); // underflow\n }\n return exp2f_inline(ylogx, signBias);\n}\n\n//\n// Lookup data for exp. See: https://git.musl-libc.org/cgit/musl/tree/src/math/exp.c\n//\n\n// @ts-ignore: decorator\n@inline const EXP_TABLE_BITS = 7;\n\n// @ts-ignore: decorator\n@lazy @inline const EXP_DATA_TAB = memory.data([\n 0x0000000000000000, 0x3FF0000000000000,\n 0x3C9B3B4F1A88BF6E, 0x3FEFF63DA9FB3335,\n 0xBC7160139CD8DC5D, 0x3FEFEC9A3E778061,\n 0xBC905E7A108766D1, 0x3FEFE315E86E7F85,\n 0x3C8CD2523567F613, 0x3FEFD9B0D3158574,\n 0xBC8BCE8023F98EFA, 0x3FEFD06B29DDF6DE,\n 0x3C60F74E61E6C861, 0x3FEFC74518759BC8,\n 0x3C90A3E45B33D399, 0x3FEFBE3ECAC6F383,\n 0x3C979AA65D837B6D, 0x3FEFB5586CF9890F,\n 0x3C8EB51A92FDEFFC, 0x3FEFAC922B7247F7,\n 0x3C3EBE3D702F9CD1, 0x3FEFA3EC32D3D1A2,\n 0xBC6A033489906E0B, 0x3FEF9B66AFFED31B,\n 0xBC9556522A2FBD0E, 0x3FEF9301D0125B51,\n 0xBC5080EF8C4EEA55, 0x3FEF8ABDC06C31CC,\n 0xBC91C923B9D5F416, 0x3FEF829AAEA92DE0,\n 0x3C80D3E3E95C55AF, 0x3FEF7A98C8A58E51,\n 0xBC801B15EAA59348, 0x3FEF72B83C7D517B,\n 0xBC8F1FF055DE323D, 0x3FEF6AF9388C8DEA,\n 0x3C8B898C3F1353BF, 0x3FEF635BEB6FCB75,\n 0xBC96D99C7611EB26, 0x3FEF5BE084045CD4,\n 0x3C9AECF73E3A2F60, 0x3FEF54873168B9AA,\n 0xBC8FE782CB86389D, 0x3FEF4D5022FCD91D,\n 0x3C8A6F4144A6C38D, 0x3FEF463B88628CD6,\n 0x3C807A05B0E4047D, 0x3FEF3F49917DDC96,\n 0x3C968EFDE3A8A894, 0x3FEF387A6E756238,\n 0x3C875E18F274487D, 0x3FEF31CE4FB2A63F,\n 0x3C80472B981FE7F2, 0x3FEF2B4565E27CDD,\n 0xBC96B87B3F71085E, 0x3FEF24DFE1F56381,\n 0x3C82F7E16D09AB31, 0x3FEF1E9DF51FDEE1,\n 0xBC3D219B1A6FBFFA, 0x3FEF187FD0DAD990,\n 0x3C8B3782720C0AB4, 0x3FEF1285A6E4030B,\n 0x3C6E149289CECB8F, 0x3FEF0CAFA93E2F56,\n 0x3C834D754DB0ABB6, 0x3FEF06FE0A31B715,\n 0x3C864201E2AC744C, 0x3FEF0170FC4CD831,\n 0x3C8FDD395DD3F84A, 0x3FEEFC08B26416FF,\n 0xBC86A3803B8E5B04, 0x3FEEF6C55F929FF1,\n 0xBC924AEDCC4B5068, 0x3FEEF1A7373AA9CB,\n 0xBC9907F81B512D8E, 0x3FEEECAE6D05D866,\n 0xBC71D1E83E9436D2, 0x3FEEE7DB34E59FF7,\n 0xBC991919B3CE1B15, 0x3FEEE32DC313A8E5,\n 0x3C859F48A72A4C6D, 0x3FEEDEA64C123422,\n 0xBC9312607A28698A, 0x3FEEDA4504AC801C,\n 0xBC58A78F4817895B, 0x3FEED60A21F72E2A,\n 0xBC7C2C9B67499A1B, 0x3FEED1F5D950A897,\n 0x3C4363ED60C2AC11, 0x3FEECE086061892D,\n 0x3C9666093B0664EF, 0x3FEECA41ED1D0057,\n 0x3C6ECCE1DAA10379, 0x3FEEC6A2B5C13CD0,\n 0x3C93FF8E3F0F1230, 0x3FEEC32AF0D7D3DE,\n 0x3C7690CEBB7AAFB0, 0x3FEEBFDAD5362A27,\n 0x3C931DBDEB54E077, 0x3FEEBCB299FDDD0D,\n 0xBC8F94340071A38E, 0x3FEEB9B2769D2CA7,\n 0xBC87DECCDC93A349, 0x3FEEB6DAA2CF6642,\n 0xBC78DEC6BD0F385F, 0x3FEEB42B569D4F82,\n 0xBC861246EC7B5CF6, 0x3FEEB1A4CA5D920F,\n 0x3C93350518FDD78E, 0x3FEEAF4736B527DA,\n 0x3C7B98B72F8A9B05, 0x3FEEAD12D497C7FD,\n 0x3C9063E1E21C5409, 0x3FEEAB07DD485429,\n 0x3C34C7855019C6EA, 0x3FEEA9268A5946B7,\n 0x3C9432E62B64C035, 0x3FEEA76F15AD2148,\n 0xBC8CE44A6199769F, 0x3FEEA5E1B976DC09,\n 0xBC8C33C53BEF4DA8, 0x3FEEA47EB03A5585,\n 0xBC845378892BE9AE, 0x3FEEA34634CCC320,\n 0xBC93CEDD78565858, 0x3FEEA23882552225,\n 0x3C5710AA807E1964, 0x3FEEA155D44CA973,\n 0xBC93B3EFBF5E2228, 0x3FEEA09E667F3BCD,\n 0xBC6A12AD8734B982, 0x3FEEA012750BDABF,\n 0xBC6367EFB86DA9EE, 0x3FEE9FB23C651A2F,\n 0xBC80DC3D54E08851, 0x3FEE9F7DF9519484,\n 0xBC781F647E5A3ECF, 0x3FEE9F75E8EC5F74,\n 0xBC86EE4AC08B7DB0, 0x3FEE9F9A48A58174,\n 0xBC8619321E55E68A, 0x3FEE9FEB564267C9,\n 0x3C909CCB5E09D4D3, 0x3FEEA0694FDE5D3F,\n 0xBC7B32DCB94DA51D, 0x3FEEA11473EB0187,\n 0x3C94ECFD5467C06B, 0x3FEEA1ED0130C132,\n 0x3C65EBE1ABD66C55, 0x3FEEA2F336CF4E62,\n 0xBC88A1C52FB3CF42, 0x3FEEA427543E1A12,\n 0xBC9369B6F13B3734, 0x3FEEA589994CCE13,\n 0xBC805E843A19FF1E, 0x3FEEA71A4623C7AD,\n 0xBC94D450D872576E, 0x3FEEA8D99B4492ED,\n 0x3C90AD675B0E8A00, 0x3FEEAAC7D98A6699,\n 0x3C8DB72FC1F0EAB4, 0x3FEEACE5422AA0DB,\n 0xBC65B6609CC5E7FF, 0x3FEEAF3216B5448C,\n 0x3C7BF68359F35F44, 0x3FEEB1AE99157736,\n 0xBC93091FA71E3D83, 0x3FEEB45B0B91FFC6,\n 0xBC5DA9B88B6C1E29, 0x3FEEB737B0CDC5E5,\n 0xBC6C23F97C90B959, 0x3FEEBA44CBC8520F,\n 0xBC92434322F4F9AA, 0x3FEEBD829FDE4E50,\n 0xBC85CA6CD7668E4B, 0x3FEEC0F170CA07BA,\n 0x3C71AFFC2B91CE27, 0x3FEEC49182A3F090,\n 0x3C6DD235E10A73BB, 0x3FEEC86319E32323,\n 0xBC87C50422622263, 0x3FEECC667B5DE565,\n 0x3C8B1C86E3E231D5, 0x3FEED09BEC4A2D33,\n 0xBC91BBD1D3BCBB15, 0x3FEED503B23E255D,\n 0x3C90CC319CEE31D2, 0x3FEED99E1330B358,\n 0x3C8469846E735AB3, 0x3FEEDE6B5579FDBF,\n 0xBC82DFCD978E9DB4, 0x3FEEE36BBFD3F37A,\n 0x3C8C1A7792CB3387, 0x3FEEE89F995AD3AD,\n 0xBC907B8F4AD1D9FA, 0x3FEEEE07298DB666,\n 0xBC55C3D956DCAEBA, 0x3FEEF3A2B84F15FB,\n 0xBC90A40E3DA6F640, 0x3FEEF9728DE5593A,\n 0xBC68D6F438AD9334, 0x3FEEFF76F2FB5E47,\n 0xBC91EEE26B588A35, 0x3FEF05B030A1064A,\n 0x3C74FFD70A5FDDCD, 0x3FEF0C1E904BC1D2,\n 0xBC91BDFBFA9298AC, 0x3FEF12C25BD71E09,\n 0x3C736EAE30AF0CB3, 0x3FEF199BDD85529C,\n 0x3C8EE3325C9FFD94, 0x3FEF20AB5FFFD07A,\n 0x3C84E08FD10959AC, 0x3FEF27F12E57D14B,\n 0x3C63CDAF384E1A67, 0x3FEF2F6D9406E7B5,\n 0x3C676B2C6C921968, 0x3FEF3720DCEF9069,\n 0xBC808A1883CCB5D2, 0x3FEF3F0B555DC3FA,\n 0xBC8FAD5D3FFFFA6F, 0x3FEF472D4A07897C,\n 0xBC900DAE3875A949, 0x3FEF4F87080D89F2,\n 0x3C74A385A63D07A7, 0x3FEF5818DCFBA487,\n 0xBC82919E2040220F, 0x3FEF60E316C98398,\n 0x3C8E5A50D5C192AC, 0x3FEF69E603DB3285,\n 0x3C843A59AC016B4B, 0x3FEF7321F301B460,\n 0xBC82D52107B43E1F, 0x3FEF7C97337B9B5F,\n 0xBC892AB93B470DC9, 0x3FEF864614F5A129,\n 0x3C74B604603A88D3, 0x3FEF902EE78B3FF6,\n 0x3C83C5EC519D7271, 0x3FEF9A51FBC74C83,\n 0xBC8FF7128FD391F0, 0x3FEFA4AFA2A490DA,\n 0xBC8DAE98E223747D, 0x3FEFAF482D8E67F1,\n 0x3C8EC3BC41AA2008, 0x3FEFBA1BEE615A27,\n 0x3C842B94C3A9EB32, 0x3FEFC52B376BBA97,\n 0x3C8A64A931D185EE, 0x3FEFD0765B6E4540,\n 0xBC8E37BAE43BE3ED, 0x3FEFDBFDAD9CBE14,\n 0x3C77893B4D91CD9D, 0x3FEFE7C1819E90D8,\n 0x3C5305C14160CC89, 0x3FEFF3C22B8F71F1\n]);\n\n// Handle cases that may overflow or underflow when computing the result that\n// is scale*(1+TMP) without intermediate rounding. The bit representation of\n// scale is in SBITS, however it has a computed exponent that may have\n// overflown into the sign bit so that needs to be adjusted before using it as\n// a double. (int32_t)KI is the k used in the argument reduction and exponent\n// adjustment of scale, positive k here means the result may overflow and\n// negative k means the result may underflow.\n// @ts-ignore: decorator\n@inline\nfunction specialcase(tmp: f64, sbits: u64, ki: u64): f64 {\n const\n Ox1p_1022 = reinterpret(0x0010000000000000), // 0x1p-1022\n Ox1p1009 = reinterpret(0x7F00000000000000); // 0x1p1009\n\n var scale: f64;\n if (!(ki & 0x80000000)) {\n // k > 0, the exponent of scale might have overflowed by <= 460.\n sbits -= u64(1009) << 52;\n scale = reinterpret(sbits);\n return Ox1p1009 * (scale + scale * tmp); // 0x1p1009\n }\n // k < 0, need special care in the subnormal range.\n sbits += u64(1022) << 52;\n // Note: sbits is signed scale.\n scale = reinterpret(sbits);\n var y = scale + scale * tmp;\n if (abs(y) < 1.0) {\n // Round y to the right precision before scaling it into the subnormal\n // range to avoid double rounding that can cause 0.5+E/2 ulp error where\n // E is the worst-case ulp error outside the subnormal range. So this\n // is only useful if the goal is better than 1 ulp worst-case error.\n let one = copysign(1.0, y);\n let lo = scale - y + scale * tmp;\n let hi = one + y;\n lo = one - hi + y + lo;\n y = (hi + lo) - one;\n // Fix the sign of 0.\n if (y == 0.0) y = reinterpret(sbits & 0x8000000000000000);\n }\n return y * Ox1p_1022;\n}\n\n// @ts-ignore: decorator\n@inline\nexport function exp_lut(x: f64): f64 {\n const\n N = 1 << EXP_TABLE_BITS,\n N_MASK = N - 1;\n\n const\n InvLn2N = reinterpret(0x3FF71547652B82FE) * N, // 0x1.71547652b82fep0\n NegLn2hiN = reinterpret(0xBF762E42FEFA0000), // -0x1.62e42fefa0000p-8\n NegLn2loN = reinterpret(0xBD0CF79ABC9E3B3A), // -0x1.cf79abc9e3b3ap-47\n shift = reinterpret(0x4338000000000000); // 0x1.8p52;\n\n const\n C2 = reinterpret(0x3FDFFFFFFFFFFDBD), // __exp_data.poly[0] (0x1.ffffffffffdbdp-2)\n C3 = reinterpret(0x3FC555555555543C), // __exp_data.poly[1] (0x1.555555555543cp-3)\n C4 = reinterpret(0x3FA55555CF172B91), // __exp_data.poly[2] (0x1.55555cf172b91p-5)\n C5 = reinterpret(0x3F81111167A4D017); // __exp_data.poly[3] (0x1.1111167a4d017p-7)\n\n var ux = reinterpret(x);\n var abstop = u32(ux >> 52) & 0x7FF;\n if (abstop - 0x3C9 >= 0x03F) {\n if (abstop - 0x3C9 >= 0x80000000) return 1;\n if (abstop >= 0x409) {\n if (ux == 0xFFF0000000000000) return 0;\n if (abstop >= 0x7FF) {\n return 1.0 + x;\n } else {\n return select(0, Infinity, ux < 0);\n }\n }\n // Large x is special cased below.\n abstop = 0;\n }\n\n // exp(x) = 2^(k/N) * exp(r), with exp(r) in [2^(-1/2N),2^(1/2N)]\n // x = ln2/N*k + r, with int k and r in [-ln2/2N, ln2/2N]\n var z = InvLn2N * x;\n // #if TOINT_INTRINSICS\n // \tkd = roundtoint(z);\n // \tki = converttoint(z);\n // #elif EXP_USE_TOINT_NARROW\n // \t// z - kd is in [-0.5-2^-16, 0.5] in all rounding modes.\n // var kd = z + shift;\n // var ki = reinterpret(kd) >> 16;\n // var kd = ki;\n // #else\n // z - kd is in [-1, 1] in non-nearest rounding modes.\n var kd = z + shift;\n var ki = reinterpret(kd);\n kd -= shift;\n // #endif\n var r = x + kd * NegLn2hiN + kd * NegLn2loN;\n // 2^(k/N) ~= scale * (1 + tail).\n var idx = usize((ki & N_MASK) << 1);\n var top = ki << (52 - EXP_TABLE_BITS);\n\n var tail = reinterpret(load(EXP_DATA_TAB + (idx << alignof()))); // T[idx]\n // This is only a valid scale when -1023*N < k < 1024*N\n var sbits = load(EXP_DATA_TAB + (idx << alignof()), 1 << alignof()) + top; // T[idx + 1]\n // exp(x) = 2^(k/N) * exp(r) ~= scale + scale * (tail + exp(r) - 1).\n // Evaluation is optimized assuming superscalar pipelined execution.\n var r2 = r * r;\n // Without fma the worst case error is 0.25/N ulp larger.\n // Worst case error is less than 0.5+1.11/N+(abs poly error * 2^53) ulp.\n var tmp = tail + r + r2 * (C2 + r * C3) + r2 * r2 * (C4 + r * C5);\n if (abstop == 0) return specialcase(tmp, sbits, ki);\n var scale = reinterpret(sbits);\n // Note: tmp == 0 or |tmp| > 2^-200 and scale > 2^-739, so there\n // is no spurious underflow here even without fma.\n return scale + scale * tmp;\n}\n\n//\n// Lookup data for exp2. See: https://git.musl-libc.org/cgit/musl/tree/src/math/exp2.c\n//\n\n// Handle cases that may overflow or underflow when computing the result that\n// is scale*(1+TMP) without intermediate rounding. The bit representation of\n// scale is in SBITS, however it has a computed exponent that may have\n// overflown into the sign bit so that needs to be adjusted before using it as\n// a double. (int32_t)KI is the k used in the argument reduction and exponent\n// adjustment of scale, positive k here means the result may overflow and\n// negative k means the result may underflow.\n// @ts-ignore: decorator\n@inline\nfunction specialcase2(tmp: f64, sbits: u64, ki: u64): f64 {\n const Ox1p_1022 = reinterpret(0x10000000000000); // 0x1p-1022\n var scale: f64;\n if ((ki & 0x80000000) == 0) {\n // k > 0, the exponent of scale might have overflowed by 1\n sbits -= u64(1) << 52;\n scale = reinterpret(sbits);\n return 2 * (scale * tmp + scale);\n }\n // k < 0, need special care in the subnormal range\n sbits += u64(1022) << 52;\n scale = reinterpret(sbits);\n var y = scale * tmp + scale;\n if (y < 1.0) {\n // Round y to the right precision before scaling it into the subnormal\n // range to avoid double rounding that can cause 0.5+E/2 ulp error where\n // E is the worst-case ulp error outside the subnormal range. So this\n // is only useful if the goal is better than 1 ulp worst-case error.\n let hi: f64, lo: f64;\n lo = scale - y + scale * tmp;\n hi = 1.0 + y;\n lo = 1.0 - hi + y + lo;\n y = (hi + lo) - 1.0;\n }\n return y * Ox1p_1022;\n}\n\n// @ts-ignore: decorator\n@inline\nexport function exp2_lut(x: f64): f64 {\n const\n N = 1 << EXP_TABLE_BITS,\n N_MASK = N - 1,\n shift = reinterpret(0x4338000000000000) / N; // 0x1.8p52\n\n const\n C1 = reinterpret(0x3FE62E42FEFA39EF), // 0x1.62e42fefa39efp-1\n C2 = reinterpret(0x3FCEBFBDFF82C424), // 0x1.ebfbdff82c424p-3\n C3 = reinterpret(0x3FAC6B08D70CF4B5), // 0x1.c6b08d70cf4b5p-5\n C4 = reinterpret(0x3F83B2ABD24650CC), // 0x1.3b2abd24650ccp-7\n C5 = reinterpret(0x3F55D7E09B4E3A84); // 0x1.5d7e09b4e3a84p-10\n\n var ux = reinterpret(x);\n var abstop = u32(ux >> 52) & 0x7ff;\n if (abstop - 0x3C9 >= 0x03F) {\n if (abstop - 0x3C9 >= 0x80000000) return 1.0;\n if (abstop >= 0x409) {\n if (ux == 0xFFF0000000000000) return 0;\n if (abstop >= 0x7FF) return 1.0 + x;\n if (ux >= 0) return Infinity;\n else if (ux >= 0xC090CC0000000000) return 0;\n }\n if ((ux << 1) > 0x811A000000000000) abstop = 0; // Large x is special cased below.\n }\n\n // exp2(x) = 2^(k/N) * 2^r, with 2^r in [2^(-1/2N),2^(1/2N)].\n // x = k/N + r, with int k and r in [-1/2N, 1/2N]\n var kd = x + shift;\n var ki = reinterpret(kd);\n kd -= shift; // k/N for int k\n var r = x - kd;\n // 2^(k/N) ~= scale * (1 + tail)\n var idx = usize((ki & N_MASK) << 1);\n var top = ki << (52 - EXP_TABLE_BITS);\n\n var tail = reinterpret(load(EXP_DATA_TAB + (idx << alignof()), 0 << alignof())); // T[idx])\n // This is only a valid scale when -1023*N < k < 1024*N\n var sbits = load(EXP_DATA_TAB + (idx << alignof()), 1 << alignof()) + top; // T[idx + 1]\n // exp2(x) = 2^(k/N) * 2^r ~= scale + scale * (tail + 2^r - 1).\n // Evaluation is optimized assuming superscalar pipelined execution\n var r2 = r * r;\n // Without fma the worst case error is 0.5/N ulp larger.\n // Worst case error is less than 0.5+0.86/N+(abs poly error * 2^53) ulp.\n var tmp = tail + r * C1 + r2 * (C2 + r * C3) + r2 * r2 * (C4 + r * C5);\n if (abstop == 0) return specialcase2(tmp, sbits, ki);\n var scale = reinterpret(sbits);\n // Note: tmp == 0 or |tmp| > 2^-65 and scale > 2^-928, so there\n // is no spurious underflow here even without fma.\n return scale * tmp + scale;\n}\n\n//\n// Lookup data for log2. See: https://git.musl-libc.org/cgit/musl/tree/src/math/log2.c\n//\n\n// @ts-ignore: decorator\n@inline const LOG2_TABLE_BITS = 6;\n\n/* Algorithm:\n\n x = 2^k z\n log2(x) = k + log2(c) + log2(z/c)\n log2(z/c) = poly(z/c - 1)\n\nwhere z is in [1.6p-1; 1.6p0] which is split into N subintervals and z falls\ninto the ith one, then table entries are computed as\n\n tab[i].invc = 1/c\n tab[i].logc = (double)log2(c)\n tab2[i].chi = (double)c\n tab2[i].clo = (double)(c - (double)c)\n\nwhere c is near the center of the subinterval and is chosen by trying +-2^29\nfloating point invc candidates around 1/center and selecting one for which\n\n 1) the rounding error in 0x1.8p10 + logc is 0,\n 2) the rounding error in z - chi - clo is < 0x1p-64 and\n 3) the rounding error in (double)log2(c) is minimized (< 0x1p-68).\n\nNote: 1) ensures that k + logc can be computed without rounding error, 2)\nensures that z/c - 1 can be computed as (z - chi - clo)*invc with close to a\nsingle rounding error when there is no fast fma for z*invc - 1, 3) ensures\nthat logc + poly(z/c - 1) has small error, however near x == 1 when\n|log2(x)| < 0x1p-4, this is not enough so that is special cased. */\n\n// @ts-ignore: decorator\n@lazy @inline const LOG2_DATA_TAB1 = memory.data([\n // invc , logc\n reinterpret(0x3FF724286BB1ACF8), reinterpret(0xBFE1095FEECDB000),\n reinterpret(0x3FF6E1F766D2CCA1), reinterpret(0xBFE08494BD76D000),\n reinterpret(0x3FF6A13D0E30D48A), reinterpret(0xBFE00143AEE8F800),\n reinterpret(0x3FF661EC32D06C85), reinterpret(0xBFDEFEC5360B4000),\n reinterpret(0x3FF623FA951198F8), reinterpret(0xBFDDFDD91AB7E000),\n reinterpret(0x3FF5E75BA4CF026C), reinterpret(0xBFDCFFAE0CC79000),\n reinterpret(0x3FF5AC055A214FB8), reinterpret(0xBFDC043811FDA000),\n reinterpret(0x3FF571ED0F166E1E), reinterpret(0xBFDB0B67323AE000),\n reinterpret(0x3FF53909590BF835), reinterpret(0xBFDA152F5A2DB000),\n reinterpret(0x3FF5014FED61ADDD), reinterpret(0xBFD9217F5AF86000),\n reinterpret(0x3FF4CAB88E487BD0), reinterpret(0xBFD8304DB0719000),\n reinterpret(0x3FF49539B4334FEE), reinterpret(0xBFD74189F9A9E000),\n reinterpret(0x3FF460CBDFAFD569), reinterpret(0xBFD6552BB5199000),\n reinterpret(0x3FF42D664EE4B953), reinterpret(0xBFD56B23A29B1000),\n reinterpret(0x3FF3FB01111DD8A6), reinterpret(0xBFD483650F5FA000),\n reinterpret(0x3FF3C995B70C5836), reinterpret(0xBFD39DE937F6A000),\n reinterpret(0x3FF3991C4AB6FD4A), reinterpret(0xBFD2BAA1538D6000),\n reinterpret(0x3FF3698E0CE099B5), reinterpret(0xBFD1D98340CA4000),\n reinterpret(0x3FF33AE48213E7B2), reinterpret(0xBFD0FA853A40E000),\n reinterpret(0x3FF30D191985BDB1), reinterpret(0xBFD01D9C32E73000),\n reinterpret(0x3FF2E025CAB271D7), reinterpret(0xBFCE857DA2FA6000),\n reinterpret(0x3FF2B404CF13CD82), reinterpret(0xBFCCD3C8633D8000),\n reinterpret(0x3FF288B02C7CCB50), reinterpret(0xBFCB26034C14A000),\n reinterpret(0x3FF25E2263944DE5), reinterpret(0xBFC97C1C2F4FE000),\n reinterpret(0x3FF234563D8615B1), reinterpret(0xBFC7D6023F800000),\n reinterpret(0x3FF20B46E33EAF38), reinterpret(0xBFC633A71A05E000),\n reinterpret(0x3FF1E2EEFDCDA3DD), reinterpret(0xBFC494F5E9570000),\n reinterpret(0x3FF1BB4A580B3930), reinterpret(0xBFC2F9E424E0A000),\n reinterpret(0x3FF19453847F2200), reinterpret(0xBFC162595AFDC000),\n reinterpret(0x3FF16E06C0D5D73C), reinterpret(0xBFBF9C9A75BD8000),\n reinterpret(0x3FF1485F47B7E4C2), reinterpret(0xBFBC7B575BF9C000),\n reinterpret(0x3FF12358AD0085D1), reinterpret(0xBFB960C60FF48000),\n reinterpret(0x3FF0FEF00F532227), reinterpret(0xBFB64CE247B60000),\n reinterpret(0x3FF0DB2077D03A8F), reinterpret(0xBFB33F78B2014000),\n reinterpret(0x3FF0B7E6D65980D9), reinterpret(0xBFB0387D1A42C000),\n reinterpret(0x3FF0953EFE7B408D), reinterpret(0xBFAA6F9208B50000),\n reinterpret(0x3FF07325CAC53B83), reinterpret(0xBFA47A954F770000),\n reinterpret(0x3FF05197E40D1B5C), reinterpret(0xBF9D23A8C50C0000),\n reinterpret(0x3FF03091C1208EA2), reinterpret(0xBF916A2629780000),\n reinterpret(0x3FF0101025B37E21), reinterpret(0xBF7720F8D8E80000),\n reinterpret(0x3FEFC07EF9CAA76B), reinterpret(0x3F86FE53B1500000),\n reinterpret(0x3FEF4465D3F6F184), reinterpret(0x3FA11CCCE10F8000),\n reinterpret(0x3FEECC079F84107F), reinterpret(0x3FAC4DFC8C8B8000),\n reinterpret(0x3FEE573A99975AE8), reinterpret(0x3FB3AA321E574000),\n reinterpret(0x3FEDE5D6F0BD3DE6), reinterpret(0x3FB918A0D08B8000),\n reinterpret(0x3FED77B681FF38B3), reinterpret(0x3FBE72E9DA044000),\n reinterpret(0x3FED0CB5724DE943), reinterpret(0x3FC1DCD2507F6000),\n reinterpret(0x3FECA4B2DC0E7563), reinterpret(0x3FC476AB03DEA000),\n reinterpret(0x3FEC3F8EE8D6CB51), reinterpret(0x3FC7074377E22000),\n reinterpret(0x3FEBDD2B4F020C4C), reinterpret(0x3FC98EDE8BA94000),\n reinterpret(0x3FEB7D6C006015CA), reinterpret(0x3FCC0DB86AD2E000),\n reinterpret(0x3FEB20366E2E338F), reinterpret(0x3FCE840AAFCEE000),\n reinterpret(0x3FEAC57026295039), reinterpret(0x3FD0790AB4678000),\n reinterpret(0x3FEA6D01BC2731DD), reinterpret(0x3FD1AC056801C000),\n reinterpret(0x3FEA16D3BC3FF18B), reinterpret(0x3FD2DB11D4FEE000),\n reinterpret(0x3FE9C2D14967FEAD), reinterpret(0x3FD406464EC58000),\n reinterpret(0x3FE970E4F47C9902), reinterpret(0x3FD52DBE093AF000),\n reinterpret(0x3FE920FB3982BCF2), reinterpret(0x3FD651902050D000),\n reinterpret(0x3FE8D30187F759F1), reinterpret(0x3FD771D2CDEAF000),\n reinterpret(0x3FE886E5EBB9F66D), reinterpret(0x3FD88E9C857D9000),\n reinterpret(0x3FE83C97B658B994), reinterpret(0x3FD9A80155E16000),\n reinterpret(0x3FE7F405FFC61022), reinterpret(0x3FDABE186ED3D000),\n reinterpret(0x3FE7AD22181415CA), reinterpret(0x3FDBD0F2AEA0E000),\n reinterpret(0x3FE767DCF99EFF8C), reinterpret(0x3FDCE0A43DBF4000)\n]);\n\n// @ts-ignore: decorator\n@lazy @inline const LOG2_DATA_TAB2 = memory.data([\n // chi , clo\n reinterpret(0x3FE6200012B90A8E), reinterpret(0x3C8904AB0644B605),\n reinterpret(0x3FE66000045734A6), reinterpret(0x3C61FF9BEA62F7A9),\n reinterpret(0x3FE69FFFC325F2C5), reinterpret(0x3C827ECFCB3C90BA),\n reinterpret(0x3FE6E00038B95A04), reinterpret(0x3C88FF8856739326),\n reinterpret(0x3FE71FFFE09994E3), reinterpret(0x3C8AFD40275F82B1),\n reinterpret(0x3FE7600015590E10), reinterpret(0xBC72FD75B4238341),\n reinterpret(0x3FE7A00012655BD5), reinterpret(0x3C7808E67C242B76),\n reinterpret(0x3FE7E0003259E9A6), reinterpret(0xBC6208E426F622B7),\n reinterpret(0x3FE81FFFEDB4B2D2), reinterpret(0xBC8402461EA5C92F),\n reinterpret(0x3FE860002DFAFCC3), reinterpret(0x3C6DF7F4A2F29A1F),\n reinterpret(0x3FE89FFFF78C6B50), reinterpret(0xBC8E0453094995FD),\n reinterpret(0x3FE8E00039671566), reinterpret(0xBC8A04F3BEC77B45),\n reinterpret(0x3FE91FFFE2BF1745), reinterpret(0xBC77FA34400E203C),\n reinterpret(0x3FE95FFFCC5C9FD1), reinterpret(0xBC76FF8005A0695D),\n reinterpret(0x3FE9A0003BBA4767), reinterpret(0x3C70F8C4C4EC7E03),\n reinterpret(0x3FE9DFFFE7B92DA5), reinterpret(0x3C8E7FD9478C4602),\n reinterpret(0x3FEA1FFFD72EFDAF), reinterpret(0xBC6A0C554DCDAE7E),\n reinterpret(0x3FEA5FFFDE04FF95), reinterpret(0x3C867DA98CE9B26B),\n reinterpret(0x3FEA9FFFCA5E8D2B), reinterpret(0xBC8284C9B54C13DE),\n reinterpret(0x3FEADFFFDDAD03EA), reinterpret(0x3C5812C8EA602E3C),\n reinterpret(0x3FEB1FFFF10D3D4D), reinterpret(0xBC8EFADDAD27789C),\n reinterpret(0x3FEB5FFFCE21165A), reinterpret(0x3C53CB1719C61237),\n reinterpret(0x3FEB9FFFD950E674), reinterpret(0x3C73F7D94194CE00),\n reinterpret(0x3FEBE000139CA8AF), reinterpret(0x3C750AC4215D9BC0),\n reinterpret(0x3FEC20005B46DF99), reinterpret(0x3C6BEEA653E9C1C9),\n reinterpret(0x3FEC600040B9F7AE), reinterpret(0xBC7C079F274A70D6),\n reinterpret(0x3FECA0006255FD8A), reinterpret(0xBC7A0B4076E84C1F),\n reinterpret(0x3FECDFFFD94C095D), reinterpret(0x3C88F933F99AB5D7),\n reinterpret(0x3FED1FFFF975D6CF), reinterpret(0xBC582C08665FE1BE),\n reinterpret(0x3FED5FFFA2561C93), reinterpret(0xBC7B04289BD295F3),\n reinterpret(0x3FED9FFF9D228B0C), reinterpret(0x3C870251340FA236),\n reinterpret(0x3FEDE00065BC7E16), reinterpret(0xBC75011E16A4D80C),\n reinterpret(0x3FEE200002F64791), reinterpret(0x3C89802F09EF62E0),\n reinterpret(0x3FEE600057D7A6D8), reinterpret(0xBC7E0B75580CF7FA),\n reinterpret(0x3FEEA00027EDC00C), reinterpret(0xBC8C848309459811),\n reinterpret(0x3FEEE0006CF5CB7C), reinterpret(0xBC8F8027951576F4),\n reinterpret(0x3FEF2000782B7DCC), reinterpret(0xBC8F81D97274538F),\n reinterpret(0x3FEF6000260C450A), reinterpret(0xBC4071002727FFDC),\n reinterpret(0x3FEF9FFFE88CD533), reinterpret(0xBC581BDCE1FDA8B0),\n reinterpret(0x3FEFDFFFD50F8689), reinterpret(0x3C87F91ACB918E6E),\n reinterpret(0x3FF0200004292367), reinterpret(0x3C9B7FF365324681),\n reinterpret(0x3FF05FFFE3E3D668), reinterpret(0x3C86FA08DDAE957B),\n reinterpret(0x3FF0A0000A85A757), reinterpret(0xBC57E2DE80D3FB91),\n reinterpret(0x3FF0E0001A5F3FCC), reinterpret(0xBC91823305C5F014),\n reinterpret(0x3FF11FFFF8AFBAF5), reinterpret(0xBC8BFABB6680BAC2),\n reinterpret(0x3FF15FFFE54D91AD), reinterpret(0xBC9D7F121737E7EF),\n reinterpret(0x3FF1A00011AC36E1), reinterpret(0x3C9C000A0516F5FF),\n reinterpret(0x3FF1E00019C84248), reinterpret(0xBC9082FBE4DA5DA0),\n reinterpret(0x3FF220000FFE5E6E), reinterpret(0xBC88FDD04C9CFB43),\n reinterpret(0x3FF26000269FD891), reinterpret(0x3C8CFE2A7994D182),\n reinterpret(0x3FF2A00029A6E6DA), reinterpret(0xBC700273715E8BC5),\n reinterpret(0x3FF2DFFFE0293E39), reinterpret(0x3C9B7C39DAB2A6F9),\n reinterpret(0x3FF31FFFF7DCF082), reinterpret(0x3C7DF1336EDC5254),\n reinterpret(0x3FF35FFFF05A8B60), reinterpret(0xBC9E03564CCD31EB),\n reinterpret(0x3FF3A0002E0EAECC), reinterpret(0x3C75F0E74BD3A477),\n reinterpret(0x3FF3E000043BB236), reinterpret(0x3C9C7DCB149D8833),\n reinterpret(0x3FF4200002D187FF), reinterpret(0x3C7E08AFCF2D3D28),\n reinterpret(0x3FF460000D387CB1), reinterpret(0x3C820837856599A6),\n reinterpret(0x3FF4A00004569F89), reinterpret(0xBC89FA5C904FBCD2),\n reinterpret(0x3FF4E000043543F3), reinterpret(0xBC781125ED175329),\n reinterpret(0x3FF51FFFCC027F0F), reinterpret(0x3C9883D8847754DC),\n reinterpret(0x3FF55FFFFD87B36F), reinterpret(0xBC8709E731D02807),\n reinterpret(0x3FF59FFFF21DF7BA), reinterpret(0x3C87F79F68727B02),\n reinterpret(0x3FF5DFFFEBFC3481), reinterpret(0xBC9180902E30E93E)\n]);\n\n// @ts-ignore: decorator\n@inline\nexport function log2_lut(x: f64): f64 {\n const N_MASK = (1 << LOG2_TABLE_BITS) - 1;\n\n const\n LO: u64 = 0x3FEEA4AF00000000, // reinterpret(1.0 - 0x1.5b51p-5)\n HI: u64 = 0x3FF0B55900000000; // reinterpret(1.0 + 0x1.6ab2p-5)\n\n const\n InvLn2hi = reinterpret(0x3FF7154765200000), // 0x1.7154765200000p+0\n InvLn2lo = reinterpret(0x3DE705FC2EEFA200), // 0x1.705fc2eefa200p-33\n Ox1p52 = reinterpret(0x4330000000000000); // 0x1p52\n\n const\n B0 = reinterpret(0xBFE71547652B82FE), // -0x1.71547652b82fep-1\n B1 = reinterpret(0x3FDEC709DC3A03F7), // 0x1.ec709dc3a03f7p-2\n B2 = reinterpret(0xBFD71547652B7C3F), // -0x1.71547652b7c3fp-2\n B3 = reinterpret(0x3FD2776C50F05BE4), // 0x1.2776c50f05be4p-2\n B4 = reinterpret(0xBFCEC709DD768FE5), // -0x1.ec709dd768fe5p-3\n B5 = reinterpret(0x3FCA61761EC4E736), // 0x1.a61761ec4e736p-3\n B6 = reinterpret(0xBFC7153FBC64A79B), // -0x1.7153fbc64a79bp-3\n B7 = reinterpret(0x3FC484D154F01B4A), // 0x1.484d154f01b4ap-3\n B8 = reinterpret(0xBFC289E4A72C383C), // -0x1.289e4a72c383cp-3\n B9 = reinterpret(0x3FC0B32F285AEE66); // 0x1.0b32f285aee66p-3\n\n const\n A0 = reinterpret(0xBFE71547652B8339), // -0x1.71547652b8339p-1\n A1 = reinterpret(0x3FDEC709DC3A04BE), // 0x1.ec709dc3a04bep-2\n A2 = reinterpret(0xBFD7154764702FFB), // -0x1.7154764702ffbp-2\n A3 = reinterpret(0x3FD2776C50034C48), // 0x1.2776c50034c48p-2\n A4 = reinterpret(0xBFCEC7B328EA92BC), // -0x1.ec7b328ea92bcp-3\n A5 = reinterpret(0x3FCA6225E117F92E); // 0x1.a6225e117f92ep-3\n\n var ix = reinterpret(x);\n if (ix - LO < HI - LO) {\n let r = x - 1.0;\n // #if __FP_FAST_FMA\n // hi = r * InvLn2hi;\n // lo = r * InvLn2lo + __builtin_fma(r, InvLn2hi, -hi);\n // #else\n let rhi = reinterpret(reinterpret(r) & 0xFFFFFFFF00000000);\n let rlo = r - rhi;\n let hi = rhi * InvLn2hi;\n let lo = rlo * InvLn2hi + r * InvLn2lo;\n // #endif\n let r2 = r * r; // rounding error: 0x1p-62\n let r4 = r2 * r2;\n // Worst-case error is less than 0.54 ULP (0.55 ULP without fma)\n let p = r2 * (B0 + r * B1);\n let y = hi + p;\n lo += hi - y + p;\n lo += r4 * (B2 + r * B3 + r2 * (B4 + r * B5) +\n r4 * (B6 + r * B7 + r2 * (B8 + r * B9)));\n return y + lo;\n }\n var top = u32(ix >> 48);\n if (top - 0x0010 >= 0x7ff0 - 0x0010) {\n // x < 0x1p-1022 or inf or nan.\n if ((ix << 1) == 0) return -1.0 / (x * x);\n if (ix == 0x7FF0000000000000) return x; // log(inf) == inf\n if ((top & 0x8000) || (top & 0x7FF0) == 0x7FF0) return (x - x) / (x - x);\n // x is subnormal, normalize it.\n ix = reinterpret(x * Ox1p52);\n ix -= u64(52) << 52;\n }\n\n // x = 2^k z; where z is in range [OFF,2*OFF) and exact.\n // The range is split into N subintervals.\n // The ith subinterval contains z and c is near its center.\n var tmp = ix - 0x3FE6000000000000;\n var i = ((tmp >> (52 - LOG2_TABLE_BITS)) & N_MASK);\n var k = tmp >> 52;\n var iz = ix - (tmp & 0xFFF0000000000000);\n\n var invc = load(LOG2_DATA_TAB1 + (i << (1 + alignof())), 0 << alignof()); // T[i].invc;\n var logc = load(LOG2_DATA_TAB1 + (i << (1 + alignof())), 1 << alignof()); // T[i].logc;\n var z = reinterpret(iz);\n var kd = k;\n\n // log2(x) = log2(z/c) + log2(c) + k.\n // r ~= z/c - 1, |r| < 1/(2*N).\n // #if __FP_FAST_FMA\n // \t// rounding error: 0x1p-55/N.\n // \tr = __builtin_fma(z, invc, -1.0);\n // \tt1 = r * InvLn2hi;\n // \tt2 = r * InvLn2lo + __builtin_fma(r, InvLn2hi, -t1);\n // #else\n // rounding error: 0x1p-55/N + 0x1p-65.\n var chi = load(LOG2_DATA_TAB2 + (i << (1 + alignof())), 0 << alignof()); // T[i].chi;\n var clo = load(LOG2_DATA_TAB2 + (i << (1 + alignof())), 1 << alignof()); // T[i].clo;\n\n var r = (z - chi - clo) * invc;\n var rhi = reinterpret(reinterpret(r) & 0xFFFFFFFF00000000);\n var rlo = r - rhi;\n var t1 = rhi * InvLn2hi;\n var t2 = rlo * InvLn2hi + r * InvLn2lo;\n // #endif\n\n // hi + lo = r/ln2 + log2(c) + k\n var t3 = kd + logc;\n var hi = t3 + t1;\n var lo = t3 - hi + t1 + t2;\n\n // log2(r+1) = r/ln2 + r^2*poly(r)\n // Evaluation is optimized assuming superscalar pipelined execution\n var r2 = r * r; // rounding error: 0x1p-54/N^2\n // Worst-case error if |y| > 0x1p-4: 0.547 ULP (0.550 ULP without fma).\n // ~ 0.5 + 2/N/ln2 + abs-poly-error*0x1p56 ULP (+ 0.003 ULP without fma).\n var p = A0 + r * A1 + r2 * (A2 + r * A3) + (r2 * r2) * (A4 + r * A5);\n return lo + r2 * p + hi;\n}\n\n//\n// Lookup data for log. See: https://git.musl-libc.org/cgit/musl/tree/src/math/log.c\n//\n\n// @ts-ignore: decorator\n@inline const LOG_TABLE_BITS = 7;\n\n/* Algorithm:\n\n x = 2^k z\n log(x) = k ln2 + log(c) + log(z/c)\n log(z/c) = poly(z/c - 1)\n\nwhere z is in [1.6p-1; 1.6p0] which is split into N subintervals and z falls\ninto the ith one, then table entries are computed as\n\n tab[i].invc = 1/c\n tab[i].logc = (double)log(c)\n tab2[i].chi = (double)c\n tab2[i].clo = (double)(c - (double)c)\n\nwhere c is near the center of the subinterval and is chosen by trying +-2^29\nfloating point invc candidates around 1/center and selecting one for which\n\n 1) the rounding error in 0x1.8p9 + logc is 0,\n 2) the rounding error in z - chi - clo is < 0x1p-66 and\n 3) the rounding error in (double)log(c) is minimized (< 0x1p-66).\n\nNote: 1) ensures that k*ln2hi + logc can be computed without rounding error,\n2) ensures that z/c - 1 can be computed as (z - chi - clo)*invc with close to\na single rounding error when there is no fast fma for z*invc - 1, 3) ensures\nthat logc + poly(z/c - 1) has small error, however near x == 1 when\n|log(x)| < 0x1p-4, this is not enough so that is special cased.*/\n\n// @ts-ignore: decorator\n@lazy @inline const LOG_DATA_TAB1 = memory.data([\n // invc , logc\n reinterpret(0x3FF734F0C3E0DE9F), reinterpret(0xBFD7CC7F79E69000),\n reinterpret(0x3FF713786A2CE91F), reinterpret(0xBFD76FEEC20D0000),\n reinterpret(0x3FF6F26008FAB5A0), reinterpret(0xBFD713E31351E000),\n reinterpret(0x3FF6D1A61F138C7D), reinterpret(0xBFD6B85B38287800),\n reinterpret(0x3FF6B1490BC5B4D1), reinterpret(0xBFD65D5590807800),\n reinterpret(0x3FF69147332F0CBA), reinterpret(0xBFD602D076180000),\n reinterpret(0x3FF6719F18224223), reinterpret(0xBFD5A8CA86909000),\n reinterpret(0x3FF6524F99A51ED9), reinterpret(0xBFD54F4356035000),\n reinterpret(0x3FF63356AA8F24C4), reinterpret(0xBFD4F637C36B4000),\n reinterpret(0x3FF614B36B9DDC14), reinterpret(0xBFD49DA7FDA85000),\n reinterpret(0x3FF5F66452C65C4C), reinterpret(0xBFD445923989A800),\n reinterpret(0x3FF5D867B5912C4F), reinterpret(0xBFD3EDF439B0B800),\n reinterpret(0x3FF5BABCCB5B90DE), reinterpret(0xBFD396CE448F7000),\n reinterpret(0x3FF59D61F2D91A78), reinterpret(0xBFD3401E17BDA000),\n reinterpret(0x3FF5805612465687), reinterpret(0xBFD2E9E2EF468000),\n reinterpret(0x3FF56397CEE76BD3), reinterpret(0xBFD2941B3830E000),\n reinterpret(0x3FF54725E2A77F93), reinterpret(0xBFD23EC58CDA8800),\n reinterpret(0x3FF52AFF42064583), reinterpret(0xBFD1E9E129279000),\n reinterpret(0x3FF50F22DBB2BDDF), reinterpret(0xBFD1956D2B48F800),\n reinterpret(0x3FF4F38F4734DED7), reinterpret(0xBFD141679AB9F800),\n reinterpret(0x3FF4D843CFDE2840), reinterpret(0xBFD0EDD094EF9800),\n reinterpret(0x3FF4BD3EC078A3C8), reinterpret(0xBFD09AA518DB1000),\n reinterpret(0x3FF4A27FC3E0258A), reinterpret(0xBFD047E65263B800),\n reinterpret(0x3FF4880524D48434), reinterpret(0xBFCFEB224586F000),\n reinterpret(0x3FF46DCE1B192D0B), reinterpret(0xBFCF474A7517B000),\n reinterpret(0x3FF453D9D3391854), reinterpret(0xBFCEA4443D103000),\n reinterpret(0x3FF43A2744B4845A), reinterpret(0xBFCE020D44E9B000),\n reinterpret(0x3FF420B54115F8FB), reinterpret(0xBFCD60A22977F000),\n reinterpret(0x3FF40782DA3EF4B1), reinterpret(0xBFCCC00104959000),\n reinterpret(0x3FF3EE8F5D57FE8F), reinterpret(0xBFCC202956891000),\n reinterpret(0x3FF3D5D9A00B4CE9), reinterpret(0xBFCB81178D811000),\n reinterpret(0x3FF3BD60C010C12B), reinterpret(0xBFCAE2C9CCD3D000),\n reinterpret(0x3FF3A5242B75DAB8), reinterpret(0xBFCA45402E129000),\n reinterpret(0x3FF38D22CD9FD002), reinterpret(0xBFC9A877681DF000),\n reinterpret(0x3FF3755BC5847A1C), reinterpret(0xBFC90C6D69483000),\n reinterpret(0x3FF35DCE49AD36E2), reinterpret(0xBFC87120A645C000),\n reinterpret(0x3FF34679984DD440), reinterpret(0xBFC7D68FB4143000),\n reinterpret(0x3FF32F5CCEFFCB24), reinterpret(0xBFC73CB83C627000),\n reinterpret(0x3FF3187775A10D49), reinterpret(0xBFC6A39A9B376000),\n reinterpret(0x3FF301C8373E3990), reinterpret(0xBFC60B3154B7A000),\n reinterpret(0x3FF2EB4EBB95F841), reinterpret(0xBFC5737D76243000),\n reinterpret(0x3FF2D50A0219A9D1), reinterpret(0xBFC4DC7B8FC23000),\n reinterpret(0x3FF2BEF9A8B7FD2A), reinterpret(0xBFC4462C51D20000),\n reinterpret(0x3FF2A91C7A0C1BAB), reinterpret(0xBFC3B08ABC830000),\n reinterpret(0x3FF293726014B530), reinterpret(0xBFC31B996B490000),\n reinterpret(0x3FF27DFA5757A1F5), reinterpret(0xBFC2875490A44000),\n reinterpret(0x3FF268B39B1D3BBF), reinterpret(0xBFC1F3B9F879A000),\n reinterpret(0x3FF2539D838FF5BD), reinterpret(0xBFC160C8252CA000),\n reinterpret(0x3FF23EB7AAC9083B), reinterpret(0xBFC0CE7F57F72000),\n reinterpret(0x3FF22A012BA940B6), reinterpret(0xBFC03CDC49FEA000),\n reinterpret(0x3FF2157996CC4132), reinterpret(0xBFBF57BDBC4B8000),\n reinterpret(0x3FF201201DD2FC9B), reinterpret(0xBFBE370896404000),\n reinterpret(0x3FF1ECF4494D480B), reinterpret(0xBFBD17983EF94000),\n reinterpret(0x3FF1D8F5528F6569), reinterpret(0xBFBBF9674ED8A000),\n reinterpret(0x3FF1C52311577E7C), reinterpret(0xBFBADC79202F6000),\n reinterpret(0x3FF1B17C74CB26E9), reinterpret(0xBFB9C0C3E7288000),\n reinterpret(0x3FF19E010C2C1AB6), reinterpret(0xBFB8A646B372C000),\n reinterpret(0x3FF18AB07BB670BD), reinterpret(0xBFB78D01B3AC0000),\n reinterpret(0x3FF1778A25EFBCB6), reinterpret(0xBFB674F145380000),\n reinterpret(0x3FF1648D354C31DA), reinterpret(0xBFB55E0E6D878000),\n reinterpret(0x3FF151B990275FDD), reinterpret(0xBFB4485CDEA1E000),\n reinterpret(0x3FF13F0EA432D24C), reinterpret(0xBFB333D94D6AA000),\n reinterpret(0x3FF12C8B7210F9DA), reinterpret(0xBFB22079F8C56000),\n reinterpret(0x3FF11A3028ECB531), reinterpret(0xBFB10E4698622000),\n reinterpret(0x3FF107FBDA8434AF), reinterpret(0xBFAFFA6C6AD20000),\n reinterpret(0x3FF0F5EE0F4E6BB3), reinterpret(0xBFADDA8D4A774000),\n reinterpret(0x3FF0E4065D2A9FCE), reinterpret(0xBFABBCECE4850000),\n reinterpret(0x3FF0D244632CA521), reinterpret(0xBFA9A1894012C000),\n reinterpret(0x3FF0C0A77CE2981A), reinterpret(0xBFA788583302C000),\n reinterpret(0x3FF0AF2F83C636D1), reinterpret(0xBFA5715E67D68000),\n reinterpret(0x3FF09DDB98A01339), reinterpret(0xBFA35C8A49658000),\n reinterpret(0x3FF08CABAF52E7DF), reinterpret(0xBFA149E364154000),\n reinterpret(0x3FF07B9F2F4E28FB), reinterpret(0xBF9E72C082EB8000),\n reinterpret(0x3FF06AB58C358F19), reinterpret(0xBF9A55F152528000),\n reinterpret(0x3FF059EEA5ECF92C), reinterpret(0xBF963D62CF818000),\n reinterpret(0x3FF04949CDD12C90), reinterpret(0xBF9228FB8CAA0000),\n reinterpret(0x3FF038C6C6F0ADA9), reinterpret(0xBF8C317B20F90000),\n reinterpret(0x3FF02865137932A9), reinterpret(0xBF8419355DAA0000),\n reinterpret(0x3FF0182427EA7348), reinterpret(0xBF781203C2EC0000),\n reinterpret(0x3FF008040614B195), reinterpret(0xBF60040979240000),\n reinterpret(0x3FEFE01FF726FA1A), reinterpret(0x3F6FEFF384900000),\n reinterpret(0x3FEFA11CC261EA74), reinterpret(0x3F87DC41353D0000),\n reinterpret(0x3FEF6310B081992E), reinterpret(0x3F93CEA3C4C28000),\n reinterpret(0x3FEF25F63CEEADCD), reinterpret(0x3F9B9FC114890000),\n reinterpret(0x3FEEE9C8039113E7), reinterpret(0x3FA1B0D8CE110000),\n reinterpret(0x3FEEAE8078CBB1AB), reinterpret(0x3FA58A5BD001C000),\n reinterpret(0x3FEE741AA29D0C9B), reinterpret(0x3FA95C8340D88000),\n reinterpret(0x3FEE3A91830A99B5), reinterpret(0x3FAD276AEF578000),\n reinterpret(0x3FEE01E009609A56), reinterpret(0x3FB07598E598C000),\n reinterpret(0x3FEDCA01E577BB98), reinterpret(0x3FB253F5E30D2000),\n reinterpret(0x3FED92F20B7C9103), reinterpret(0x3FB42EDD8B380000),\n reinterpret(0x3FED5CAC66FB5CCE), reinterpret(0x3FB606598757C000),\n reinterpret(0x3FED272CAA5EDE9D), reinterpret(0x3FB7DA76356A0000),\n reinterpret(0x3FECF26E3E6B2CCD), reinterpret(0x3FB9AB434E1C6000),\n reinterpret(0x3FECBE6DA2A77902), reinterpret(0x3FBB78C7BB0D6000),\n reinterpret(0x3FEC8B266D37086D), reinterpret(0x3FBD431332E72000),\n reinterpret(0x3FEC5894BD5D5804), reinterpret(0x3FBF0A3171DE6000),\n reinterpret(0x3FEC26B533BB9F8C), reinterpret(0x3FC067152B914000),\n reinterpret(0x3FEBF583EEECE73F), reinterpret(0x3FC147858292B000),\n reinterpret(0x3FEBC4FD75DB96C1), reinterpret(0x3FC2266ECDCA3000),\n reinterpret(0x3FEB951E0C864A28), reinterpret(0x3FC303D7A6C55000),\n reinterpret(0x3FEB65E2C5EF3E2C), reinterpret(0x3FC3DFC33C331000),\n reinterpret(0x3FEB374867C9888B), reinterpret(0x3FC4BA366B7A8000),\n reinterpret(0x3FEB094B211D304A), reinterpret(0x3FC5933928D1F000),\n reinterpret(0x3FEADBE885F2EF7E), reinterpret(0x3FC66ACD2418F000),\n reinterpret(0x3FEAAF1D31603DA2), reinterpret(0x3FC740F8EC669000),\n reinterpret(0x3FEA82E63FD358A7), reinterpret(0x3FC815C0F51AF000),\n reinterpret(0x3FEA5740EF09738B), reinterpret(0x3FC8E92954F68000),\n reinterpret(0x3FEA2C2A90AB4B27), reinterpret(0x3FC9BB3602F84000),\n reinterpret(0x3FEA01A01393F2D1), reinterpret(0x3FCA8BED1C2C0000),\n reinterpret(0x3FE9D79F24DB3C1B), reinterpret(0x3FCB5B515C01D000),\n reinterpret(0x3FE9AE2505C7B190), reinterpret(0x3FCC2967CCBCC000),\n reinterpret(0x3FE9852EF297CE2F), reinterpret(0x3FCCF635D5486000),\n reinterpret(0x3FE95CBAEEA44B75), reinterpret(0x3FCDC1BD3446C000),\n reinterpret(0x3FE934C69DE74838), reinterpret(0x3FCE8C01B8CFE000),\n reinterpret(0x3FE90D4F2F6752E6), reinterpret(0x3FCF5509C0179000),\n reinterpret(0x3FE8E6528EFFD79D), reinterpret(0x3FD00E6C121FB800),\n reinterpret(0x3FE8BFCE9FCC007C), reinterpret(0x3FD071B80E93D000),\n reinterpret(0x3FE899C0DABEC30E), reinterpret(0x3FD0D46B9E867000),\n reinterpret(0x3FE87427AA2317FB), reinterpret(0x3FD13687334BD000),\n reinterpret(0x3FE84F00ACB39A08), reinterpret(0x3FD1980D67234800),\n reinterpret(0x3FE82A49E8653E55), reinterpret(0x3FD1F8FFE0CC8000),\n reinterpret(0x3FE8060195F40260), reinterpret(0x3FD2595FD7636800),\n reinterpret(0x3FE7E22563E0A329), reinterpret(0x3FD2B9300914A800),\n reinterpret(0x3FE7BEB377DCB5AD), reinterpret(0x3FD3187210436000),\n reinterpret(0x3FE79BAA679725C2), reinterpret(0x3FD377266DEC1800),\n reinterpret(0x3FE77907F2170657), reinterpret(0x3FD3D54FFBAF3000),\n reinterpret(0x3FE756CADBD6130C), reinterpret(0x3FD432EEE32FE000)\n]);\n\n// @ts-ignore: decorator\n@lazy @inline const LOG_DATA_TAB2 = memory.data([\n // chi , clo\n reinterpret(0x3FE61000014FB66B), reinterpret(0x3C7E026C91425B3C),\n reinterpret(0x3FE63000034DB495), reinterpret(0x3C8DBFEA48005D41),\n reinterpret(0x3FE650000D94D478), reinterpret(0x3C8E7FA786D6A5B7),\n reinterpret(0x3FE67000074E6FAD), reinterpret(0x3C61FCEA6B54254C),\n reinterpret(0x3FE68FFFFEDF0FAE), reinterpret(0xBC7C7E274C590EFD),\n reinterpret(0x3FE6B0000763C5BC), reinterpret(0xBC8AC16848DCDA01),\n reinterpret(0x3FE6D0001E5CC1F6), reinterpret(0x3C833F1C9D499311),\n reinterpret(0x3FE6EFFFEB05F63E), reinterpret(0xBC7E80041AE22D53),\n reinterpret(0x3FE710000E869780), reinterpret(0x3C7BFF6671097952),\n reinterpret(0x3FE72FFFFC67E912), reinterpret(0x3C8C00E226BD8724),\n reinterpret(0x3FE74FFFDF81116A), reinterpret(0xBC6E02916EF101D2),\n reinterpret(0x3FE770000F679C90), reinterpret(0xBC67FC71CD549C74),\n reinterpret(0x3FE78FFFFA7EC835), reinterpret(0x3C81BEC19EF50483),\n reinterpret(0x3FE7AFFFFE20C2E6), reinterpret(0xBC707E1729CC6465),\n reinterpret(0x3FE7CFFFED3FC900), reinterpret(0xBC808072087B8B1C),\n reinterpret(0x3FE7EFFFE9261A76), reinterpret(0x3C8DC0286D9DF9AE),\n reinterpret(0x3FE81000049CA3E8), reinterpret(0x3C897FD251E54C33),\n reinterpret(0x3FE8300017932C8F), reinterpret(0xBC8AFEE9B630F381),\n reinterpret(0x3FE850000633739C), reinterpret(0x3C89BFBF6B6535BC),\n reinterpret(0x3FE87000204289C6), reinterpret(0xBC8BBF65F3117B75),\n reinterpret(0x3FE88FFFEBF57904), reinterpret(0xBC89006EA23DCB57),\n reinterpret(0x3FE8B00022BC04DF), reinterpret(0xBC7D00DF38E04B0A),\n reinterpret(0x3FE8CFFFE50C1B8A), reinterpret(0xBC88007146FF9F05),\n reinterpret(0x3FE8EFFFFC918E43), reinterpret(0x3C83817BD07A7038),\n reinterpret(0x3FE910001EFA5FC7), reinterpret(0x3C893E9176DFB403),\n reinterpret(0x3FE9300013467BB9), reinterpret(0x3C7F804E4B980276),\n reinterpret(0x3FE94FFFE6EE076F), reinterpret(0xBC8F7EF0D9FF622E),\n reinterpret(0x3FE96FFFDE3C12D1), reinterpret(0xBC7082AA962638BA),\n reinterpret(0x3FE98FFFF4458A0D), reinterpret(0xBC87801B9164A8EF),\n reinterpret(0x3FE9AFFFDD982E3E), reinterpret(0xBC8740E08A5A9337),\n reinterpret(0x3FE9CFFFED49FB66), reinterpret(0x3C3FCE08C19BE000),\n reinterpret(0x3FE9F00020F19C51), reinterpret(0xBC8A3FAA27885B0A),\n reinterpret(0x3FEA10001145B006), reinterpret(0x3C74FF489958DA56),\n reinterpret(0x3FEA300007BBF6FA), reinterpret(0x3C8CBEAB8A2B6D18),\n reinterpret(0x3FEA500010971D79), reinterpret(0x3C88FECADD787930),\n reinterpret(0x3FEA70001DF52E48), reinterpret(0xBC8F41763DD8ABDB),\n reinterpret(0x3FEA90001C593352), reinterpret(0xBC8EBF0284C27612),\n reinterpret(0x3FEAB0002A4F3E4B), reinterpret(0xBC69FD043CFF3F5F),\n reinterpret(0x3FEACFFFD7AE1ED1), reinterpret(0xBC823EE7129070B4),\n reinterpret(0x3FEAEFFFEE510478), reinterpret(0x3C6A063EE00EDEA3),\n reinterpret(0x3FEB0FFFDB650D5B), reinterpret(0x3C5A06C8381F0AB9),\n reinterpret(0x3FEB2FFFFEAACA57), reinterpret(0xBC79011E74233C1D),\n reinterpret(0x3FEB4FFFD995BADC), reinterpret(0xBC79FF1068862A9F),\n reinterpret(0x3FEB7000249E659C), reinterpret(0x3C8AFF45D0864F3E),\n reinterpret(0x3FEB8FFFF9871640), reinterpret(0x3C7CFE7796C2C3F9),\n reinterpret(0x3FEBAFFFD204CB4F), reinterpret(0xBC63FF27EEF22BC4),\n reinterpret(0x3FEBCFFFD2415C45), reinterpret(0xBC6CFFB7EE3BEA21),\n reinterpret(0x3FEBEFFFF86309DF), reinterpret(0xBC814103972E0B5C),\n reinterpret(0x3FEC0FFFE1B57653), reinterpret(0x3C8BC16494B76A19),\n reinterpret(0x3FEC2FFFF1FA57E3), reinterpret(0xBC64FEEF8D30C6ED),\n reinterpret(0x3FEC4FFFDCBFE424), reinterpret(0xBC843F68BCEC4775),\n reinterpret(0x3FEC6FFFED54B9F7), reinterpret(0x3C847EA3F053E0EC),\n reinterpret(0x3FEC8FFFEB998FD5), reinterpret(0x3C7383068DF992F1),\n reinterpret(0x3FECB0002125219A), reinterpret(0xBC68FD8E64180E04),\n reinterpret(0x3FECCFFFDD94469C), reinterpret(0x3C8E7EBE1CC7EA72),\n reinterpret(0x3FECEFFFEAFDC476), reinterpret(0x3C8EBE39AD9F88FE),\n reinterpret(0x3FED1000169AF82B), reinterpret(0x3C757D91A8B95A71),\n reinterpret(0x3FED30000D0FF71D), reinterpret(0x3C89C1906970C7DA),\n reinterpret(0x3FED4FFFEA790FC4), reinterpret(0xBC580E37C558FE0C),\n reinterpret(0x3FED70002EDC87E5), reinterpret(0xBC7F80D64DC10F44),\n reinterpret(0x3FED900021DC82AA), reinterpret(0xBC747C8F94FD5C5C),\n reinterpret(0x3FEDAFFFD86B0283), reinterpret(0x3C8C7F1DC521617E),\n reinterpret(0x3FEDD000296C4739), reinterpret(0x3C88019EB2FFB153),\n reinterpret(0x3FEDEFFFE54490F5), reinterpret(0x3C6E00D2C652CC89),\n reinterpret(0x3FEE0FFFCDABF694), reinterpret(0xBC7F8340202D69D2),\n reinterpret(0x3FEE2FFFDB52C8DD), reinterpret(0x3C7B00C1CA1B0864),\n reinterpret(0x3FEE4FFFF24216EF), reinterpret(0x3C72FFA8B094AB51),\n reinterpret(0x3FEE6FFFE88A5E11), reinterpret(0xBC57F673B1EFBE59),\n reinterpret(0x3FEE9000119EFF0D), reinterpret(0xBC84808D5E0BC801),\n reinterpret(0x3FEEAFFFDFA51744), reinterpret(0x3C780006D54320B5),\n reinterpret(0x3FEED0001A127FA1), reinterpret(0xBC5002F860565C92),\n reinterpret(0x3FEEF00007BABCC4), reinterpret(0xBC8540445D35E611),\n reinterpret(0x3FEF0FFFF57A8D02), reinterpret(0xBC4FFB3139EF9105),\n reinterpret(0x3FEF30001EE58AC7), reinterpret(0x3C8A81ACF2731155),\n reinterpret(0x3FEF4FFFF5823494), reinterpret(0x3C8A3F41D4D7C743),\n reinterpret(0x3FEF6FFFFCA94C6B), reinterpret(0xBC6202F41C987875),\n reinterpret(0x3FEF8FFFE1F9C441), reinterpret(0x3C777DD1F477E74B),\n reinterpret(0x3FEFAFFFD2E0E37E), reinterpret(0xBC6F01199A7CA331),\n reinterpret(0x3FEFD0001C77E49E), reinterpret(0x3C7181EE4BCEACB1),\n reinterpret(0x3FEFEFFFF7E0C331), reinterpret(0xBC6E05370170875A),\n reinterpret(0x3FF00FFFF465606E), reinterpret(0xBC8A7EAD491C0ADA),\n reinterpret(0x3FF02FFFF3867A58), reinterpret(0xBC977F69C3FCB2E0),\n reinterpret(0x3FF04FFFFDFC0D17), reinterpret(0x3C97BFFE34CB945B),\n reinterpret(0x3FF0700003CD4D82), reinterpret(0x3C820083C0E456CB),\n reinterpret(0x3FF08FFFF9F2CBE8), reinterpret(0xBC6DFFDFBE37751A),\n reinterpret(0x3FF0B000010CDA65), reinterpret(0xBC913F7FAEE626EB),\n reinterpret(0x3FF0D00001A4D338), reinterpret(0x3C807DFA79489FF7),\n reinterpret(0x3FF0EFFFFADAFDFD), reinterpret(0xBC77040570D66BC0),\n reinterpret(0x3FF110000BBAFD96), reinterpret(0x3C8E80D4846D0B62),\n reinterpret(0x3FF12FFFFAE5F45D), reinterpret(0x3C9DBFFA64FD36EF),\n reinterpret(0x3FF150000DD59AD9), reinterpret(0x3C9A0077701250AE),\n reinterpret(0x3FF170000F21559A), reinterpret(0x3C8DFDF9E2E3DEEE),\n reinterpret(0x3FF18FFFFC275426), reinterpret(0x3C910030DC3B7273),\n reinterpret(0x3FF1B000123D3C59), reinterpret(0x3C997F7980030188),\n reinterpret(0x3FF1CFFFF8299EB7), reinterpret(0xBC65F932AB9F8C67),\n reinterpret(0x3FF1EFFFF48AD400), reinterpret(0x3C937FBF9DA75BEB),\n reinterpret(0x3FF210000C8B86A4), reinterpret(0x3C9F806B91FD5B22),\n reinterpret(0x3FF2300003854303), reinterpret(0x3C93FFC2EB9FBF33),\n reinterpret(0x3FF24FFFFFBCF684), reinterpret(0x3C7601E77E2E2E72),\n reinterpret(0x3FF26FFFF52921D9), reinterpret(0x3C7FFCBB767F0C61),\n reinterpret(0x3FF2900014933A3C), reinterpret(0xBC7202CA3C02412B),\n reinterpret(0x3FF2B00014556313), reinterpret(0xBC92808233F21F02),\n reinterpret(0x3FF2CFFFEBFE523B), reinterpret(0xBC88FF7E384FDCF2),\n reinterpret(0x3FF2F0000BB8AD96), reinterpret(0xBC85FF51503041C5),\n reinterpret(0x3FF30FFFFB7AE2AF), reinterpret(0xBC810071885E289D),\n reinterpret(0x3FF32FFFFEAC5F7F), reinterpret(0xBC91FF5D3FB7B715),\n reinterpret(0x3FF350000CA66756), reinterpret(0x3C957F82228B82BD),\n reinterpret(0x3FF3700011FBF721), reinterpret(0x3C8000BAC40DD5CC),\n reinterpret(0x3FF38FFFF9592FB9), reinterpret(0xBC943F9D2DB2A751),\n reinterpret(0x3FF3B00004DDD242), reinterpret(0x3C857F6B707638E1),\n reinterpret(0x3FF3CFFFF5B2C957), reinterpret(0x3C7A023A10BF1231),\n reinterpret(0x3FF3EFFFEAB0B418), reinterpret(0x3C987F6D66B152B0),\n reinterpret(0x3FF410001532AFF4), reinterpret(0x3C67F8375F198524),\n reinterpret(0x3FF4300017478B29), reinterpret(0x3C8301E672DC5143),\n reinterpret(0x3FF44FFFE795B463), reinterpret(0x3C89FF69B8B2895A),\n reinterpret(0x3FF46FFFE80475E0), reinterpret(0xBC95C0B19BC2F254),\n reinterpret(0x3FF48FFFEF6FC1E7), reinterpret(0x3C9B4009F23A2A72),\n reinterpret(0x3FF4AFFFE5BEA704), reinterpret(0xBC94FFB7BF0D7D45),\n reinterpret(0x3FF4D000171027DE), reinterpret(0xBC99C06471DC6A3D),\n reinterpret(0x3FF4F0000FF03EE2), reinterpret(0x3C977F890B85531C),\n reinterpret(0x3FF5100012DC4BD1), reinterpret(0x3C6004657166A436),\n reinterpret(0x3FF530001605277A), reinterpret(0xBC96BFCECE233209),\n reinterpret(0x3FF54FFFECDB704C), reinterpret(0xBC8902720505A1D7),\n reinterpret(0x3FF56FFFEF5F54A9), reinterpret(0x3C9BBFE60EC96412),\n reinterpret(0x3FF5900017E61012), reinterpret(0x3C887EC581AFEF90),\n reinterpret(0x3FF5B00003C93E92), reinterpret(0xBC9F41080ABF0CC0),\n reinterpret(0x3FF5D0001D4919BC), reinterpret(0xBC98812AFB254729),\n reinterpret(0x3FF5EFFFE7B87A89), reinterpret(0xBC947EB780ED6904)\n]);\n\n// @ts-ignore: decorator\n@inline\nexport function log_lut(x: f64): f64 {\n const N_MASK = (1 << LOG_TABLE_BITS) - 1;\n\n const\n B0 = reinterpret(0xBFE0000000000000), // -0x1p-1\n B1 = reinterpret(0x3FD5555555555577), // 0x1.5555555555577p-2\n B2 = reinterpret(0xBFCFFFFFFFFFFDCB), // -0x1.ffffffffffdcbp-3\n B3 = reinterpret(0x3FC999999995DD0C), // 0x1.999999995dd0cp-3\n B4 = reinterpret(0xBFC55555556745A7), // -0x1.55555556745a7p-3\n B5 = reinterpret(0x3FC24924A344DE30), // 0x1.24924a344de3p-3\n B6 = reinterpret(0xBFBFFFFFA4423D65), // -0x1.fffffa4423d65p-4\n B7 = reinterpret(0x3FBC7184282AD6CA), // 0x1.c7184282ad6cap-4\n B8 = reinterpret(0xBFB999EB43B068FF), // -0x1.999eb43b068ffp-4\n B9 = reinterpret(0x3FB78182F7AFD085), // 0x1.78182f7afd085p-4\n B10 = reinterpret(0xBFB5521375D145CD); // -0x1.5521375d145cdp-4\n\n const\n A0 = reinterpret(0xBFE0000000000001), // -0x1.0000000000001p-1\n A1 = reinterpret(0x3FD555555551305B), // 0x1.555555551305bp-2\n A2 = reinterpret(0xBFCFFFFFFFEB4590), // -0x1.fffffffeb459p-3\n A3 = reinterpret(0x3FC999B324F10111), // 0x1.999b324f10111p-3\n A4 = reinterpret(0xBFC55575E506C89F); // -0x1.55575e506c89fp-3\n\n const\n LO: u64 = 0x3FEE000000000000,\n HI: u64 = 0x3FF1090000000000;\n\n const\n Ln2hi = reinterpret(0x3FE62E42FEFA3800), // 0x1.62e42fefa3800p-1\n Ln2lo = reinterpret(0x3D2EF35793C76730), // 0x1.ef35793c76730p-45\n Ox1p27 = reinterpret(0x41A0000000000000), // 0x1p27\n Ox1p52 = reinterpret(0x4330000000000000); // 0x1p52\n\n var ix = reinterpret(x);\n if (ix - LO < HI - LO) {\n let r = x - 1.0;\n let r2 = r * r;\n let r3 = r2 * r;\n let y =\n r3 * (B1 + r * B2 + r2 * B3 +\n r3 * (B4 + r * B5 + r2 * B6 +\n r3 * (B7 + r * B8 + r2 * B9 + r3 * B10)));\n // Worst-case error is around 0.507 ULP\n let w = r * Ox1p27;\n let rhi = r + w - w;\n let rlo = r - rhi;\n w = rhi * rhi * B0; // B[0] == -0.5\n let hi = r + w;\n let lo = r - hi + w;\n lo += B0 * rlo * (rhi + r);\n return y + lo + hi;\n }\n var top = u32(ix >> 48);\n if (top - 0x0010 >= 0x7FF0 - 0x0010) {\n // x < 0x1p-1022 or inf or nan\n if ((ix << 1) == 0) return -1.0 / (x * x);\n if (ix == reinterpret(Infinity)) return x; // log(inf) == inf\n if ((top & 0x8000) || (top & 0x7FF0) == 0x7FF0) return (x - x) / (x - x);\n // x is subnormal, normalize it\n ix = reinterpret(x * Ox1p52);\n ix -= u64(52) << 52;\n }\n\n // x = 2^k z; where z is in range [OFF,2*OFF) and exact.\n // The range is split into N subintervals.\n // The ith subinterval contains z and c is near its center.\n var tmp = ix - 0x3FE6000000000000;\n var i = ((tmp >> (52 - LOG_TABLE_BITS)) & N_MASK);\n var k = tmp >> 52;\n var iz = ix - (tmp & (u64(0xFFF) << 52));\n\n var invc = load(LOG_DATA_TAB1 + (i << (1 + alignof())), 0 << alignof()); // T[i].invc;\n var logc = load(LOG_DATA_TAB1 + (i << (1 + alignof())), 1 << alignof()); // T[i].logc;\n var z = reinterpret(iz);\n\n // log(x) = log1p(z/c-1) + log(c) + k*Ln2.\n // r ~= z/c - 1, |r| < 1/(2*N)\n // #if __FP_FAST_FMA\n // \t// rounding error: 0x1p-55/N\n // \tr = __builtin_fma(z, invc, -1.0);\n // #else\n // rounding error: 0x1p-55/N + 0x1p-66\n const chi = load(LOG_DATA_TAB2 + (i << (1 + alignof())), 0 << alignof()); // T2[i].chi\n const clo = load(LOG_DATA_TAB2 + (i << (1 + alignof())), 1 << alignof()); // T2[i].clo\n var r = (z - chi - clo) * invc;\n // #endif\n var kd = k;\n\n // hi + lo = r + log(c) + k*Ln2\n var w = kd * Ln2hi + logc;\n var hi = w + r;\n var lo = w - hi + r + kd * Ln2lo;\n\n // log(x) = lo + (log1p(r) - r) + hi\n var r2 = r * r; // rounding error: 0x1p-54/N^2\n // Worst case error if |y| > 0x1p-5:\n // 0.5 + 4.13/N + abs-poly-error*2^57 ULP (+ 0.002 ULP without fma)\n // Worst case error if |y| > 0x1p-4:\n // 0.5 + 2.06/N + abs-poly-error*2^56 ULP (+ 0.001 ULP without fma).\n return lo + r2 * A0 + r * r2 * (A1 + r * A2 + r2 * (A3 + r * A4)) + hi;\n}\n\n//\n// Lookup data for pow. See: https://git.musl-libc.org/cgit/musl/tree/src/math/pow.c\n//\n\n// @ts-ignore: decorator\n@inline const POW_LOG_TABLE_BITS = 7;\n\n/* Algorithm:\n\n x = 2^k z\n log(x) = k ln2 + log(c) + log(z/c)\n log(z/c) = poly(z/c - 1)\n\nwhere z is in [0x1.69555p-1; 0x1.69555p0] which is split into N subintervals\nand z falls into the ith one, then table entries are computed as\n\n tab[i].invc = 1/c\n tab[i].logc = round(0x1p43*log(c))/0x1p43\n tab[i].logctail = (double)(log(c) - logc)\n\nwhere c is chosen near the center of the subinterval such that 1/c has only a\nfew precision bits so z/c - 1 is exactly representible as double:\n\n 1/c = center < 1 ? round(N/center)/N : round(2*N/center)/N/2\n\nNote: |z/c - 1| < 1/N for the chosen c, |log(c) - logc - logctail| < 0x1p-97,\nthe last few bits of logc are rounded away so k*ln2hi + logc has no rounding\nerror and the interval for z is selected such that near x == 1, where log(x)\nis tiny, large cancellation error is avoided in logc + poly(z/c - 1). */\n\n// @ts-ignore: decorator\n@lazy @inline const POW_LOG_DATA_TAB = memory.data([\n // invc ,pad, logc , logctail\n reinterpret(0x3FF6A00000000000), 0, reinterpret(0xBFD62C82F2B9C800), reinterpret(0x3CFAB42428375680),\n reinterpret(0x3FF6800000000000), 0, reinterpret(0xBFD5D1BDBF580800), reinterpret(0xBD1CA508D8E0F720),\n reinterpret(0x3FF6600000000000), 0, reinterpret(0xBFD5767717455800), reinterpret(0xBD2362A4D5B6506D),\n reinterpret(0x3FF6400000000000), 0, reinterpret(0xBFD51AAD872DF800), reinterpret(0xBCE684E49EB067D5),\n reinterpret(0x3FF6200000000000), 0, reinterpret(0xBFD4BE5F95777800), reinterpret(0xBD041B6993293EE0),\n reinterpret(0x3FF6000000000000), 0, reinterpret(0xBFD4618BC21C6000), reinterpret(0x3D13D82F484C84CC),\n reinterpret(0x3FF5E00000000000), 0, reinterpret(0xBFD404308686A800), reinterpret(0x3CDC42F3ED820B3A),\n reinterpret(0x3FF5C00000000000), 0, reinterpret(0xBFD3A64C55694800), reinterpret(0x3D20B1C686519460),\n reinterpret(0x3FF5A00000000000), 0, reinterpret(0xBFD347DD9A988000), reinterpret(0x3D25594DD4C58092),\n reinterpret(0x3FF5800000000000), 0, reinterpret(0xBFD2E8E2BAE12000), reinterpret(0x3D267B1E99B72BD8),\n reinterpret(0x3FF5600000000000), 0, reinterpret(0xBFD2895A13DE8800), reinterpret(0x3D15CA14B6CFB03F),\n reinterpret(0x3FF5600000000000), 0, reinterpret(0xBFD2895A13DE8800), reinterpret(0x3D15CA14B6CFB03F),\n reinterpret(0x3FF5400000000000), 0, reinterpret(0xBFD22941FBCF7800), reinterpret(0xBD165A242853DA76),\n reinterpret(0x3FF5200000000000), 0, reinterpret(0xBFD1C898C1699800), reinterpret(0xBD1FAFBC68E75404),\n reinterpret(0x3FF5000000000000), 0, reinterpret(0xBFD1675CABABA800), reinterpret(0x3D1F1FC63382A8F0),\n reinterpret(0x3FF4E00000000000), 0, reinterpret(0xBFD1058BF9AE4800), reinterpret(0xBD26A8C4FD055A66),\n reinterpret(0x3FF4C00000000000), 0, reinterpret(0xBFD0A324E2739000), reinterpret(0xBD0C6BEE7EF4030E),\n reinterpret(0x3FF4A00000000000), 0, reinterpret(0xBFD0402594B4D000), reinterpret(0xBCF036B89EF42D7F),\n reinterpret(0x3FF4A00000000000), 0, reinterpret(0xBFD0402594B4D000), reinterpret(0xBCF036B89EF42D7F),\n reinterpret(0x3FF4800000000000), 0, reinterpret(0xBFCFB9186D5E4000), reinterpret(0x3D0D572AAB993C87),\n reinterpret(0x3FF4600000000000), 0, reinterpret(0xBFCEF0ADCBDC6000), reinterpret(0x3D2B26B79C86AF24),\n reinterpret(0x3FF4400000000000), 0, reinterpret(0xBFCE27076E2AF000), reinterpret(0xBD172F4F543FFF10),\n reinterpret(0x3FF4200000000000), 0, reinterpret(0xBFCD5C216B4FC000), reinterpret(0x3D21BA91BBCA681B),\n reinterpret(0x3FF4000000000000), 0, reinterpret(0xBFCC8FF7C79AA000), reinterpret(0x3D27794F689F8434),\n reinterpret(0x3FF4000000000000), 0, reinterpret(0xBFCC8FF7C79AA000), reinterpret(0x3D27794F689F8434),\n reinterpret(0x3FF3E00000000000), 0, reinterpret(0xBFCBC286742D9000), reinterpret(0x3D194EB0318BB78F),\n reinterpret(0x3FF3C00000000000), 0, reinterpret(0xBFCAF3C94E80C000), reinterpret(0x3CBA4E633FCD9066),\n reinterpret(0x3FF3A00000000000), 0, reinterpret(0xBFCA23BC1FE2B000), reinterpret(0xBD258C64DC46C1EA),\n reinterpret(0x3FF3A00000000000), 0, reinterpret(0xBFCA23BC1FE2B000), reinterpret(0xBD258C64DC46C1EA),\n reinterpret(0x3FF3800000000000), 0, reinterpret(0xBFC9525A9CF45000), reinterpret(0xBD2AD1D904C1D4E3),\n reinterpret(0x3FF3600000000000), 0, reinterpret(0xBFC87FA06520D000), reinterpret(0x3D2BBDBF7FDBFA09),\n reinterpret(0x3FF3400000000000), 0, reinterpret(0xBFC7AB890210E000), reinterpret(0x3D2BDB9072534A58),\n reinterpret(0x3FF3400000000000), 0, reinterpret(0xBFC7AB890210E000), reinterpret(0x3D2BDB9072534A58),\n reinterpret(0x3FF3200000000000), 0, reinterpret(0xBFC6D60FE719D000), reinterpret(0xBD10E46AA3B2E266),\n reinterpret(0x3FF3000000000000), 0, reinterpret(0xBFC5FF3070A79000), reinterpret(0xBD1E9E439F105039),\n reinterpret(0x3FF3000000000000), 0, reinterpret(0xBFC5FF3070A79000), reinterpret(0xBD1E9E439F105039),\n reinterpret(0x3FF2E00000000000), 0, reinterpret(0xBFC526E5E3A1B000), reinterpret(0xBD20DE8B90075B8F),\n reinterpret(0x3FF2C00000000000), 0, reinterpret(0xBFC44D2B6CCB8000), reinterpret(0x3D170CC16135783C),\n reinterpret(0x3FF2C00000000000), 0, reinterpret(0xBFC44D2B6CCB8000), reinterpret(0x3D170CC16135783C),\n reinterpret(0x3FF2A00000000000), 0, reinterpret(0xBFC371FC201E9000), reinterpret(0x3CF178864D27543A),\n reinterpret(0x3FF2800000000000), 0, reinterpret(0xBFC29552F81FF000), reinterpret(0xBD248D301771C408),\n reinterpret(0x3FF2600000000000), 0, reinterpret(0xBFC1B72AD52F6000), reinterpret(0xBD2E80A41811A396),\n reinterpret(0x3FF2600000000000), 0, reinterpret(0xBFC1B72AD52F6000), reinterpret(0xBD2E80A41811A396),\n reinterpret(0x3FF2400000000000), 0, reinterpret(0xBFC0D77E7CD09000), reinterpret(0x3D0A699688E85BF4),\n reinterpret(0x3FF2400000000000), 0, reinterpret(0xBFC0D77E7CD09000), reinterpret(0x3D0A699688E85BF4),\n reinterpret(0x3FF2200000000000), 0, reinterpret(0xBFBFEC9131DBE000), reinterpret(0xBD2575545CA333F2),\n reinterpret(0x3FF2000000000000), 0, reinterpret(0xBFBE27076E2B0000), reinterpret(0x3D2A342C2AF0003C),\n reinterpret(0x3FF2000000000000), 0, reinterpret(0xBFBE27076E2B0000), reinterpret(0x3D2A342C2AF0003C),\n reinterpret(0x3FF1E00000000000), 0, reinterpret(0xBFBC5E548F5BC000), reinterpret(0xBD1D0C57585FBE06),\n reinterpret(0x3FF1C00000000000), 0, reinterpret(0xBFBA926D3A4AE000), reinterpret(0x3D253935E85BAAC8),\n reinterpret(0x3FF1C00000000000), 0, reinterpret(0xBFBA926D3A4AE000), reinterpret(0x3D253935E85BAAC8),\n reinterpret(0x3FF1A00000000000), 0, reinterpret(0xBFB8C345D631A000), reinterpret(0x3D137C294D2F5668),\n reinterpret(0x3FF1A00000000000), 0, reinterpret(0xBFB8C345D631A000), reinterpret(0x3D137C294D2F5668),\n reinterpret(0x3FF1800000000000), 0, reinterpret(0xBFB6F0D28AE56000), reinterpret(0xBD269737C93373DA),\n reinterpret(0x3FF1600000000000), 0, reinterpret(0xBFB51B073F062000), reinterpret(0x3D1F025B61C65E57),\n reinterpret(0x3FF1600000000000), 0, reinterpret(0xBFB51B073F062000), reinterpret(0x3D1F025B61C65E57),\n reinterpret(0x3FF1400000000000), 0, reinterpret(0xBFB341D7961BE000), reinterpret(0x3D2C5EDACCF913DF),\n reinterpret(0x3FF1400000000000), 0, reinterpret(0xBFB341D7961BE000), reinterpret(0x3D2C5EDACCF913DF),\n reinterpret(0x3FF1200000000000), 0, reinterpret(0xBFB16536EEA38000), reinterpret(0x3D147C5E768FA309),\n reinterpret(0x3FF1000000000000), 0, reinterpret(0xBFAF0A30C0118000), reinterpret(0x3D2D599E83368E91),\n reinterpret(0x3FF1000000000000), 0, reinterpret(0xBFAF0A30C0118000), reinterpret(0x3D2D599E83368E91),\n reinterpret(0x3FF0E00000000000), 0, reinterpret(0xBFAB42DD71198000), reinterpret(0x3D1C827AE5D6704C),\n reinterpret(0x3FF0E00000000000), 0, reinterpret(0xBFAB42DD71198000), reinterpret(0x3D1C827AE5D6704C),\n reinterpret(0x3FF0C00000000000), 0, reinterpret(0xBFA77458F632C000), reinterpret(0xBD2CFC4634F2A1EE),\n reinterpret(0x3FF0C00000000000), 0, reinterpret(0xBFA77458F632C000), reinterpret(0xBD2CFC4634F2A1EE),\n reinterpret(0x3FF0A00000000000), 0, reinterpret(0xBFA39E87B9FEC000), reinterpret(0x3CF502B7F526FEAA),\n reinterpret(0x3FF0A00000000000), 0, reinterpret(0xBFA39E87B9FEC000), reinterpret(0x3CF502B7F526FEAA),\n reinterpret(0x3FF0800000000000), 0, reinterpret(0xBF9F829B0E780000), reinterpret(0xBD2980267C7E09E4),\n reinterpret(0x3FF0800000000000), 0, reinterpret(0xBF9F829B0E780000), reinterpret(0xBD2980267C7E09E4),\n reinterpret(0x3FF0600000000000), 0, reinterpret(0xBF97B91B07D58000), reinterpret(0xBD288D5493FAA639),\n reinterpret(0x3FF0400000000000), 0, reinterpret(0xBF8FC0A8B0FC0000), reinterpret(0xBCDF1E7CF6D3A69C),\n reinterpret(0x3FF0400000000000), 0, reinterpret(0xBF8FC0A8B0FC0000), reinterpret(0xBCDF1E7CF6D3A69C),\n reinterpret(0x3FF0200000000000), 0, reinterpret(0xBF7FE02A6B100000), reinterpret(0xBD19E23F0DDA40E4),\n reinterpret(0x3FF0200000000000), 0, reinterpret(0xBF7FE02A6B100000), reinterpret(0xBD19E23F0DDA40E4),\n reinterpret(0x3FF0000000000000), 0, 0, 0,\n reinterpret(0x3FF0000000000000), 0, 0, 0,\n reinterpret(0x3FEFC00000000000), 0, reinterpret(0x3F80101575890000), reinterpret(0xBD10C76B999D2BE8),\n reinterpret(0x3FEF800000000000), 0, reinterpret(0x3F90205658938000), reinterpret(0xBD23DC5B06E2F7D2),\n reinterpret(0x3FEF400000000000), 0, reinterpret(0x3F98492528C90000), reinterpret(0xBD2AA0BA325A0C34),\n reinterpret(0x3FEF000000000000), 0, reinterpret(0x3FA0415D89E74000), reinterpret(0x3D0111C05CF1D753),\n reinterpret(0x3FEEC00000000000), 0, reinterpret(0x3FA466AED42E0000), reinterpret(0xBD2C167375BDFD28),\n reinterpret(0x3FEE800000000000), 0, reinterpret(0x3FA894AA149FC000), reinterpret(0xBD197995D05A267D),\n reinterpret(0x3FEE400000000000), 0, reinterpret(0x3FACCB73CDDDC000), reinterpret(0xBD1A68F247D82807),\n reinterpret(0x3FEE200000000000), 0, reinterpret(0x3FAEEA31C006C000), reinterpret(0xBD0E113E4FC93B7B),\n reinterpret(0x3FEDE00000000000), 0, reinterpret(0x3FB1973BD1466000), reinterpret(0xBD25325D560D9E9B),\n reinterpret(0x3FEDA00000000000), 0, reinterpret(0x3FB3BDF5A7D1E000), reinterpret(0x3D2CC85EA5DB4ED7),\n reinterpret(0x3FED600000000000), 0, reinterpret(0x3FB5E95A4D97A000), reinterpret(0xBD2C69063C5D1D1E),\n reinterpret(0x3FED400000000000), 0, reinterpret(0x3FB700D30AEAC000), reinterpret(0x3CEC1E8DA99DED32),\n reinterpret(0x3FED000000000000), 0, reinterpret(0x3FB9335E5D594000), reinterpret(0x3D23115C3ABD47DA),\n reinterpret(0x3FECC00000000000), 0, reinterpret(0x3FBB6AC88DAD6000), reinterpret(0xBD1390802BF768E5),\n reinterpret(0x3FECA00000000000), 0, reinterpret(0x3FBC885801BC4000), reinterpret(0x3D2646D1C65AACD3),\n reinterpret(0x3FEC600000000000), 0, reinterpret(0x3FBEC739830A2000), reinterpret(0xBD2DC068AFE645E0),\n reinterpret(0x3FEC400000000000), 0, reinterpret(0x3FBFE89139DBE000), reinterpret(0xBD2534D64FA10AFD),\n reinterpret(0x3FEC000000000000), 0, reinterpret(0x3FC1178E8227E000), reinterpret(0x3D21EF78CE2D07F2),\n reinterpret(0x3FEBE00000000000), 0, reinterpret(0x3FC1AA2B7E23F000), reinterpret(0x3D2CA78E44389934),\n reinterpret(0x3FEBA00000000000), 0, reinterpret(0x3FC2D1610C868000), reinterpret(0x3D039D6CCB81B4A1),\n reinterpret(0x3FEB800000000000), 0, reinterpret(0x3FC365FCB0159000), reinterpret(0x3CC62FA8234B7289),\n reinterpret(0x3FEB400000000000), 0, reinterpret(0x3FC4913D8333B000), reinterpret(0x3D25837954FDB678),\n reinterpret(0x3FEB200000000000), 0, reinterpret(0x3FC527E5E4A1B000), reinterpret(0x3D2633E8E5697DC7),\n reinterpret(0x3FEAE00000000000), 0, reinterpret(0x3FC6574EBE8C1000), reinterpret(0x3D19CF8B2C3C2E78),\n reinterpret(0x3FEAC00000000000), 0, reinterpret(0x3FC6F0128B757000), reinterpret(0xBD25118DE59C21E1),\n reinterpret(0x3FEAA00000000000), 0, reinterpret(0x3FC7898D85445000), reinterpret(0xBD1C661070914305),\n reinterpret(0x3FEA600000000000), 0, reinterpret(0x3FC8BEAFEB390000), reinterpret(0xBD073D54AAE92CD1),\n reinterpret(0x3FEA400000000000), 0, reinterpret(0x3FC95A5ADCF70000), reinterpret(0x3D07F22858A0FF6F),\n reinterpret(0x3FEA000000000000), 0, reinterpret(0x3FCA93ED3C8AE000), reinterpret(0xBD28724350562169),\n reinterpret(0x3FE9E00000000000), 0, reinterpret(0x3FCB31D8575BD000), reinterpret(0xBD0C358D4EACE1AA),\n reinterpret(0x3FE9C00000000000), 0, reinterpret(0x3FCBD087383BE000), reinterpret(0xBD2D4BC4595412B6),\n reinterpret(0x3FE9A00000000000), 0, reinterpret(0x3FCC6FFBC6F01000), reinterpret(0xBCF1EC72C5962BD2),\n reinterpret(0x3FE9600000000000), 0, reinterpret(0x3FCDB13DB0D49000), reinterpret(0xBD2AFF2AF715B035),\n reinterpret(0x3FE9400000000000), 0, reinterpret(0x3FCE530EFFE71000), reinterpret(0x3CC212276041F430),\n reinterpret(0x3FE9200000000000), 0, reinterpret(0x3FCEF5ADE4DD0000), reinterpret(0xBCCA211565BB8E11),\n reinterpret(0x3FE9000000000000), 0, reinterpret(0x3FCF991C6CB3B000), reinterpret(0x3D1BCBECCA0CDF30),\n reinterpret(0x3FE8C00000000000), 0, reinterpret(0x3FD07138604D5800), reinterpret(0x3CF89CDB16ED4E91),\n reinterpret(0x3FE8A00000000000), 0, reinterpret(0x3FD0C42D67616000), reinterpret(0x3D27188B163CEAE9),\n reinterpret(0x3FE8800000000000), 0, reinterpret(0x3FD1178E8227E800), reinterpret(0xBD2C210E63A5F01C),\n reinterpret(0x3FE8600000000000), 0, reinterpret(0x3FD16B5CCBACF800), reinterpret(0x3D2B9ACDF7A51681),\n reinterpret(0x3FE8400000000000), 0, reinterpret(0x3FD1BF99635A6800), reinterpret(0x3D2CA6ED5147BDB7),\n reinterpret(0x3FE8200000000000), 0, reinterpret(0x3FD214456D0EB800), reinterpret(0x3D0A87DEBA46BAEA),\n reinterpret(0x3FE7E00000000000), 0, reinterpret(0x3FD2BEF07CDC9000), reinterpret(0x3D2A9CFA4A5004F4),\n reinterpret(0x3FE7C00000000000), 0, reinterpret(0x3FD314F1E1D36000), reinterpret(0xBD28E27AD3213CB8),\n reinterpret(0x3FE7A00000000000), 0, reinterpret(0x3FD36B6776BE1000), reinterpret(0x3D116ECDB0F177C8),\n reinterpret(0x3FE7800000000000), 0, reinterpret(0x3FD3C25277333000), reinterpret(0x3D183B54B606BD5C),\n reinterpret(0x3FE7600000000000), 0, reinterpret(0x3FD419B423D5E800), reinterpret(0x3D08E436EC90E09D),\n reinterpret(0x3FE7400000000000), 0, reinterpret(0x3FD4718DC271C800), reinterpret(0xBD2F27CE0967D675),\n reinterpret(0x3FE7200000000000), 0, reinterpret(0x3FD4C9E09E173000), reinterpret(0xBD2E20891B0AD8A4),\n reinterpret(0x3FE7000000000000), 0, reinterpret(0x3FD522AE0738A000), reinterpret(0x3D2EBE708164C759),\n reinterpret(0x3FE6E00000000000), 0, reinterpret(0x3FD57BF753C8D000), reinterpret(0x3D1FADEDEE5D40EF),\n reinterpret(0x3FE6C00000000000), 0, reinterpret(0x3FD5D5BDDF596000), reinterpret(0xBD0A0B2A08A465DC)\n]);\n\n// Returns 0 if not int, 1 if odd int, 2 if even int. The argument is\n// the bit representation of a non-zero finite floating-point value.\n// @ts-ignore: decorator\n@inline\nfunction checkint(iy: u64): i32 {\n var e = iy >> 52 & 0x7FF;\n if (e < 0x3FF ) return 0;\n if (e > 0x3FF + 52) return 2;\n e = u64(1) << (0x3FF + 52 - e);\n if (iy & (e - 1)) return 0;\n if (iy & e ) return 1;\n return 2;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction xflow(sign: u32, y: f64): f64 {\n return select(-y, y, sign) * y;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction uflow(sign: u32): f64 {\n return xflow(sign, reinterpret(0x1000000000000000)); // 0x1p-767\n}\n\n// @ts-ignore: decorator\n@inline\nfunction oflow(sign: u32): f64 {\n return xflow(sign, reinterpret(0x7000000000000000)); // 0x1p769\n}\n\n// Returns 1 if input is the bit representation of 0, infinity or nan.\n// @ts-ignore: decorator\n@inline\nfunction zeroinfnan(u: u64): bool {\n return (u << 1) - 1 >= 0xFFE0000000000000 - 1;\n}\n\n// @ts-ignore: decorator\n@lazy var log_tail: f64 = 0;\n\n// Compute y+TAIL = log(x) where the rounded result is y and TAIL has about\n// additional 15 bits precision. IX is the bit representation of x, but\n// normalized in the subnormal range using the sign bit for the exponent.\n// @ts-ignore: decorator\n@inline\nfunction log_inline(ix: u64): f64 {\n const N = 1 << POW_LOG_TABLE_BITS;\n const N_MASK = N - 1;\n\n const\n Ln2hi = reinterpret(0x3FE62E42FEFA3800),\n Ln2lo = reinterpret(0x3D2EF35793C76730);\n\n const\n A0 = reinterpret(0xBFE0000000000000),\n A1 = reinterpret(0xBFE5555555555560),\n A2 = reinterpret(0x3FE0000000000006),\n A3 = reinterpret(0x3FE999999959554E),\n A4 = reinterpret(0xBFE555555529A47A),\n A5 = reinterpret(0xBFF2495B9B4845E9),\n A6 = reinterpret(0x3FF0002B8B263FC3);\n\n // x = 2^k z; where z is in range [OFF,2*OFF) and exact.\n // The range is split into N subintervals.\n // The ith subinterval contains z and c is near its center.\n var tmp = ix - 0x3fE6955500000000;\n var i = usize((tmp >> (52 - POW_LOG_TABLE_BITS)) & N_MASK);\n var k = tmp >> 52;\n var iz = ix - (tmp & u64(0xFFF) << 52);\n var z = reinterpret(iz);\n var kd = k;\n\n // log(x) = k*Ln2 + log(c) + log1p(z/c-1).\n var invc = load(POW_LOG_DATA_TAB + (i << (2 + alignof())), 0 << alignof()); // tab[i].invc\n var logc = load(POW_LOG_DATA_TAB + (i << (2 + alignof())), 2 << alignof()); // tab[i].logc\n var logctail = load(POW_LOG_DATA_TAB + (i << (2 + alignof())), 3 << alignof()); // tab[i].logctail\n\n // Note: 1/c is j/N or j/N/2 where j is an integer in [N,2N) and\n // |z/c - 1| < 1/N, so r = z/c - 1 is exactly representible.\n // Split z such that rhi, rlo and rhi*rhi are exact and |rlo| <= |r|.\n var zhi = reinterpret((iz + u64(0x80000000)) & 0xFFFFFFFF00000000);\n var zlo = z - zhi;\n var rhi = zhi * invc - 1.0;\n var rlo = zlo * invc;\n var r = rhi + rlo;\n\n // k * Ln2 + log(c) + r.\n var t1 = kd * Ln2hi + logc;\n var t2 = t1 + r;\n var lo1 = kd * Ln2lo + logctail;\n var lo2 = t1 - t2 + r;\n\n // Evaluation is optimized assuming superscalar pipelined execution.\n var ar = A0 * r; // A[0] = -0.5\n var ar2 = r * ar;\n var ar3 = r * ar2;\n // k * Ln2 + log(c) + r + A[0] * r * r.\n var arhi = A0 * rhi;\n var arhi2 = rhi * arhi;\n var hi = t2 + arhi2;\n var lo3 = rlo * (ar + arhi);\n var lo4 = t2 - hi + arhi2;\n\n // p = log1p(r) - r - A[0] * r * r.\n var p = ar3 * (A1 + r * A2 + ar2 * (A3 + r * A4 + ar2 * (A5 + r * A6)));\n var lo = lo1 + lo2 + lo3 + lo4 + p;\n var y = hi + lo;\n log_tail = hi - y + lo;\n\n return y;\n}\n\n// @ts-ignore: decorator\n@inline const SIGN_BIAS = 0x800 << EXP_TABLE_BITS;\n\n// Computes sign*exp(x+xtail) where |xtail| < 2^-8/N and |xtail| <= |x|.\n// The sign_bias argument is SIGN_BIAS or 0 and sets the sign to -1 or 1.\n// @ts-ignore: decorator\n@inline\nfunction exp_inline(x: f64, xtail: f64, sign_bias: u32): f64 {\n const N = 1 << EXP_TABLE_BITS;\n const N_MASK = N - 1;\n\n const\n InvLn2N = reinterpret(0x3FF71547652B82FE) * N, // 0x1.71547652b82fep0\n NegLn2hiN = reinterpret(0xBF762E42FEFA0000), // -0x1.62e42fefa0000p-8\n NegLn2loN = reinterpret(0xBD0CF79ABC9E3B3A), // -0x1.cf79abc9e3b3ap-47\n shift = reinterpret(0x4338000000000000); // 0x1.8p52\n\n const\n C2 = reinterpret(0x3FDFFFFFFFFFFDBD), // __exp_data.poly[0] (0x1.ffffffffffdbdp-2)\n C3 = reinterpret(0x3FC555555555543C), // __exp_data.poly[1] (0x1.555555555543cp-3)\n C4 = reinterpret(0x3FA55555CF172B91), // __exp_data.poly[2] (0x1.55555cf172b91p-5)\n C5 = reinterpret(0x3F81111167A4D017); // __exp_data.poly[3] (0x1.1111167a4d017p-7)\n\n var abstop: u32;\n var ki: u64, top: u64, sbits: u64;\n var idx: usize;\n // double_t for better performance on targets with FLT_EVAL_METHOD==2.\n var kd: f64, z: f64, r: f64, r2: f64, scale: f64, tail: f64, tmp: f64;\n\n var ux = reinterpret(x);\n abstop = u32(ux >> 52) & 0x7FF;\n if (abstop - 0x3C9 >= 0x03F) {\n if (abstop - 0x3C9 >= 0x80000000) {\n // Avoid spurious underflow for tiny x.\n // Note: 0 is common input.\n return select(-1.0, 1.0, sign_bias);\n }\n if (abstop >= 0x409) { // top12(1024.0)\n // Note: inf and nan are already handled.\n return ux < 0\n ? uflow(sign_bias)\n : oflow(sign_bias);\n }\n // Large x is special cased below.\n abstop = 0;\n }\n\n // exp(x) = 2^(k/N) * exp(r), with exp(r) in [2^(-1/2N),2^(1/2N)].\n // x = ln2/N*k + r, with int k and r in [-ln2/2N, ln2/2N].\n z = InvLn2N * x;\n\n // #if TOINT_INTRINSICS\n // kd = roundtoint(z);\n // ki = converttoint(z);\n // #elif EXP_USE_TOINT_NARROW\n // // z - kd is in [-0.5-2^-16, 0.5] in all rounding modes.\n // kd = eval_as_double(z + shift);\n // ki = asuint64(kd) >> 16;\n // kd = (double_t)(int32_t)ki;\n // #else\n // z - kd is in [-1, 1] in non-nearest rounding modes\n kd = z + shift;\n ki = reinterpret(kd);\n kd -= shift;\n // #endif\n r = x + kd * NegLn2hiN + kd * NegLn2loN;\n // The code assumes 2^-200 < |xtail| < 2^-8/N\n r += xtail;\n // 2^(k/N) ~= scale * (1 + tail)\n idx = usize((ki & N_MASK) << 1);\n top = (ki + sign_bias) << (52 - EXP_TABLE_BITS);\n\n tail = reinterpret(load(EXP_DATA_TAB + (idx << alignof())));\n // This is only a valid scale when -1023*N < k < 1024*N\n sbits = load(EXP_DATA_TAB + (idx << alignof()), 1 << alignof()) + top;\n // exp(x) = 2^(k/N) * exp(r) ~= scale + scale * (tail + exp(r) - 1).\n // Evaluation is optimized assuming superscalar pipelined execution.\n r2 = r * r;\n // Without fma the worst case error is 0.25/N ulp larger.\n // Worst case error is less than 0.5+1.11/N+(abs poly error * 2^53) ulp\n tmp = tail + r + r2 * (C2 + r * C3) + r2 * r2 * (C4 + r * C5);\n if (abstop == 0) return specialcase(tmp, sbits, ki);\n scale = reinterpret(sbits);\n // Note: tmp == 0 or |tmp| > 2^-200 and scale > 2^-739, so there\n // is no spurious underflow here even without fma.\n return scale + scale * tmp;\n}\n\n// @ts-ignore: decorator\n@inline\nexport function pow_lut(x: f64, y: f64): f64 {\n const Ox1p52 = reinterpret(0x4330000000000000); // 0x1p52\n\n var sign_bias: u32 = 0;\n var ix = reinterpret(x);\n var iy = reinterpret(y);\n var topx = ix >> 52;\n var topy = iy >> 52;\n\n if (topx - 0x001 >= 0x7FF - 0x001 || (topy & 0x7FF) - 0x3BE >= 0x43e - 0x3BE) {\n // Note: if |y| > 1075 * ln2 * 2^53 ~= 0x1.749p62 then pow(x,y) = inf/0\n // and if |y| < 2^-54 / 1075 ~= 0x1.e7b6p-65 then pow(x,y) = +-1.\n // Special cases: (x < 0x1p-126 or inf or nan) or\n // (|y| < 0x1p-65 or |y| >= 0x1p63 or nan).\n if (zeroinfnan(iy)) {\n if ((iy << 1) == 0) return 1.0;\n if (ix == 0x3FF0000000000000) return NaN; // original: 1.0\n if ((ix << 1) > 0xFFE0000000000000 || (iy << 1) > 0xFFE0000000000000) return x + y;\n if ((ix << 1) == 0x7FE0000000000000) return NaN; // original: 1.0\n if (((ix << 1) < 0x7FE0000000000000) == !(iy >> 63)) return 0; // |x|<1 && y==inf or |x|>1 && y==-inf.\n return y * y;\n }\n if (zeroinfnan(ix)) {\n let x2 = x * x;\n if (i32(ix >> 63) && checkint(iy) == 1) x2 = -x2;\n return iy < 0 ? 1 / x2 : x2;\n }\n // Here x and y are non-zero finite\n if (ix < 0) {\n // Finite x < 0\n let yint = checkint(iy);\n if (yint == 0) return (x - x) / (x - x);\n if (yint == 1) sign_bias = SIGN_BIAS;\n ix &= 0x7FFFFFFFFFFFFFFF;\n topx &= 0x7FF;\n }\n if ((topy & 0x7FF) - 0x3BE >= 0x43E - 0x3BE) {\n // Note: sign_bias == 0 here because y is not odd.\n if (ix == 0x3FF0000000000000) return 1;\n if ((topy & 0x7FF) < 0x3BE) return 1; // |y| < 2^-65, x^y ~= 1 + y*log(x).\n return (ix > 0x3FF0000000000000) == (topy < 0x800) ? Infinity : 0;\n }\n if (topx == 0) {\n // Normalize subnormal x so exponent becomes negative.\n ix = reinterpret(x * Ox1p52);\n ix &= 0x7FFFFFFFFFFFFFFF;\n ix -= u64(52) << 52;\n }\n }\n\n var hi = log_inline(ix);\n var lo = log_tail;\n var ehi: f64, elo: f64;\n // #if __FP_FAST_FMA\n // ehi = y * hi;\n // elo = y * lo + __builtin_fma(y, hi, -ehi);\n // #else\n var yhi = reinterpret(iy & 0xFFFFFFFFF8000000);\n var ylo = y - yhi;\n var lhi = reinterpret(reinterpret(hi) & 0xFFFFFFFFF8000000);\n var llo = hi - lhi + lo;\n ehi = yhi * lhi;\n elo = ylo * lhi + y * llo; // |elo| < |ehi| * 2^-25.\n // #endif\n return exp_inline(ehi, elo, sign_bias);\n}\n","/// \n\nimport { idof } from \"../builtins\";\nimport { CharCode } from \"./string\";\n\n// @ts-ignore: decorator\n@inline\nexport const MAX_DOUBLE_LENGTH = 28;\n\n// @ts-ignore: decorator\n@lazy @inline const POWERS10 = memory.data([\n 1,\n 10,\n 100,\n 1000,\n 10000,\n 100000,\n 1000000,\n 10000000,\n 100000000,\n 1000000000\n]);\n\n/*\n Lookup table for pairwise char codes in range [0-99]\n\n \"00\", \"01\", \"02\", \"03\", \"04\", \"05\", \"06\", \"07\", \"08\", \"09\",\n \"10\", \"11\", \"12\", \"13\", \"14\", \"15\", \"16\", \"17\", \"18\", \"19\",\n \"20\", \"21\", \"22\", \"23\", \"24\", \"25\", \"26\", \"27\", \"28\", \"29\",\n \"30\", \"31\", \"32\", \"33\", \"34\", \"35\", \"36\", \"37\", \"38\", \"39\",\n \"40\", \"41\", \"42\", \"43\", \"44\", \"45\", \"46\", \"47\", \"48\", \"49\",\n \"50\", \"51\", \"52\", \"53\", \"54\", \"55\", \"56\", \"57\", \"58\", \"59\",\n \"60\", \"61\", \"62\", \"63\", \"64\", \"65\", \"66\", \"67\", \"68\", \"69\",\n \"70\", \"71\", \"72\", \"73\", \"74\", \"75\", \"76\", \"77\", \"78\", \"79\",\n \"80\", \"81\", \"82\", \"83\", \"84\", \"85\", \"86\", \"87\", \"88\", \"89\",\n \"90\", \"91\", \"92\", \"93\", \"94\", \"95\", \"96\", \"97\", \"98\", \"99\"\n*/\n// @ts-ignore: decorator\n@lazy @inline const DIGITS = memory.data([\n 0x00300030, 0x00310030, 0x00320030, 0x00330030, 0x00340030,\n 0x00350030, 0x00360030, 0x00370030, 0x00380030, 0x00390030,\n 0x00300031, 0x00310031, 0x00320031, 0x00330031, 0x00340031,\n 0x00350031, 0x00360031, 0x00370031, 0x00380031, 0x00390031,\n 0x00300032, 0x00310032, 0x00320032, 0x00330032, 0x00340032,\n 0x00350032, 0x00360032, 0x00370032, 0x00380032, 0x00390032,\n 0x00300033, 0x00310033, 0x00320033, 0x00330033, 0x00340033,\n 0x00350033, 0x00360033, 0x00370033, 0x00380033, 0x00390033,\n 0x00300034, 0x00310034, 0x00320034, 0x00330034, 0x00340034,\n 0x00350034, 0x00360034, 0x00370034, 0x00380034, 0x00390034,\n 0x00300035, 0x00310035, 0x00320035, 0x00330035, 0x00340035,\n 0x00350035, 0x00360035, 0x00370035, 0x00380035, 0x00390035,\n 0x00300036, 0x00310036, 0x00320036, 0x00330036, 0x00340036,\n 0x00350036, 0x00360036, 0x00370036, 0x00380036, 0x00390036,\n 0x00300037, 0x00310037, 0x00320037, 0x00330037, 0x00340037,\n 0x00350037, 0x00360037, 0x00370037, 0x00380037, 0x00390037,\n 0x00300038, 0x00310038, 0x00320038, 0x00330038, 0x00340038,\n 0x00350038, 0x00360038, 0x00370038, 0x00380038, 0x00390038,\n 0x00300039, 0x00310039, 0x00320039, 0x00330039, 0x00340039,\n 0x00350039, 0x00360039, 0x00370039, 0x00380039, 0x00390039\n]);\n\n// Lookup table for pairwise char codes in range [0x00-0xFF]\n// @ts-ignore: decorator\n@lazy @inline const HEX_DIGITS =\n\"000102030405060708090a0b0c0d0e0f\\\n101112131415161718191a1b1c1d1e1f\\\n202122232425262728292a2b2c2d2e2f\\\n303132333435363738393a3b3c3d3e3f\\\n404142434445464748494a4b4c4d4e4f\\\n505152535455565758595a5b5c5d5e5f\\\n606162636465666768696a6b6c6d6e6f\\\n707172737475767778797a7b7c7d7e7f\\\n808182838485868788898a8b8c8d8e8f\\\n909192939495969798999a9b9c9d9e9f\\\na0a1a2a3a4a5a6a7a8a9aaabacadaeaf\\\nb0b1b2b3b4b5b6b7b8b9babbbcbdbebf\\\nc0c1c2c3c4c5c6c7c8c9cacbcccdcecf\\\nd0d1d2d3d4d5d6d7d8d9dadbdcdddedf\\\ne0e1e2e3e4e5e6e7e8e9eaebecedeeef\\\nf0f1f2f3f4f5f6f7f8f9fafbfcfdfeff\";\n\n// @ts-ignore: decorator\n@lazy @inline const ANY_DIGITS = \"0123456789abcdefghijklmnopqrstuvwxyz\";\n\n// @ts-ignore: decorator\n@lazy @inline const EXP_POWERS = memory.data([/* eslint-disable indent */\n -1220, -1193, -1166, -1140, -1113, -1087, -1060, -1034, -1007, -980,\n -954, -927, -901, -874, -847, -821, -794, -768, -741, -715,\n -688, -661, -635, -608, -582, -555, -529, -502, -475, -449,\n -422, -396, -369, -343, -316, -289, -263, -236, -210, -183,\n -157, -130, -103, -77, -50, -24, 3, 30, 56, 83,\n 109, 136, 162, 189, 216, 242, 269, 295, 322, 348,\n 375, 402, 428, 455, 481, 508, 534, 561, 588, 614,\n 641, 667, 694, 720, 747, 774, 800, 827, 853, 880,\n 907, 933, 960, 986, 1013, 1039, 1066\n/* eslint-enable indent */]);\n\n// 1e-348, 1e-340, ..., 1e340\n// @ts-ignore: decorator\n@lazy @inline const FRC_POWERS = memory.data([\n 0xFA8FD5A0081C0288, 0xBAAEE17FA23EBF76, 0x8B16FB203055AC76, 0xCF42894A5DCE35EA,\n 0x9A6BB0AA55653B2D, 0xE61ACF033D1A45DF, 0xAB70FE17C79AC6CA, 0xFF77B1FCBEBCDC4F,\n 0xBE5691EF416BD60C, 0x8DD01FAD907FFC3C, 0xD3515C2831559A83, 0x9D71AC8FADA6C9B5,\n 0xEA9C227723EE8BCB, 0xAECC49914078536D, 0x823C12795DB6CE57, 0xC21094364DFB5637,\n 0x9096EA6F3848984F, 0xD77485CB25823AC7, 0xA086CFCD97BF97F4, 0xEF340A98172AACE5,\n 0xB23867FB2A35B28E, 0x84C8D4DFD2C63F3B, 0xC5DD44271AD3CDBA, 0x936B9FCEBB25C996,\n 0xDBAC6C247D62A584, 0xA3AB66580D5FDAF6, 0xF3E2F893DEC3F126, 0xB5B5ADA8AAFF80B8,\n 0x87625F056C7C4A8B, 0xC9BCFF6034C13053, 0x964E858C91BA2655, 0xDFF9772470297EBD,\n 0xA6DFBD9FB8E5B88F, 0xF8A95FCF88747D94, 0xB94470938FA89BCF, 0x8A08F0F8BF0F156B,\n 0xCDB02555653131B6, 0x993FE2C6D07B7FAC, 0xE45C10C42A2B3B06, 0xAA242499697392D3,\n 0xFD87B5F28300CA0E, 0xBCE5086492111AEB, 0x8CBCCC096F5088CC, 0xD1B71758E219652C,\n 0x9C40000000000000, 0xE8D4A51000000000, 0xAD78EBC5AC620000, 0x813F3978F8940984,\n 0xC097CE7BC90715B3, 0x8F7E32CE7BEA5C70, 0xD5D238A4ABE98068, 0x9F4F2726179A2245,\n 0xED63A231D4C4FB27, 0xB0DE65388CC8ADA8, 0x83C7088E1AAB65DB, 0xC45D1DF942711D9A,\n 0x924D692CA61BE758, 0xDA01EE641A708DEA, 0xA26DA3999AEF774A, 0xF209787BB47D6B85,\n 0xB454E4A179DD1877, 0x865B86925B9BC5C2, 0xC83553C5C8965D3D, 0x952AB45CFA97A0B3,\n 0xDE469FBD99A05FE3, 0xA59BC234DB398C25, 0xF6C69A72A3989F5C, 0xB7DCBF5354E9BECE,\n 0x88FCF317F22241E2, 0xCC20CE9BD35C78A5, 0x98165AF37B2153DF, 0xE2A0B5DC971F303A,\n 0xA8D9D1535CE3B396, 0xFB9B7CD9A4A7443C, 0xBB764C4CA7A44410, 0x8BAB8EEFB6409C1A,\n 0xD01FEF10A657842C, 0x9B10A4E5E9913129, 0xE7109BFBA19C0C9D, 0xAC2820D9623BF429,\n 0x80444B5E7AA7CF85, 0xBF21E44003ACDD2D, 0x8E679C2F5E44FF8F, 0xD433179D9C8CB841,\n 0x9E19DB92B4E31BA9, 0xEB96BF6EBADF77D9, 0xAF87023B9BF0EE6B\n]);\n\n// @ts-ignore: decorator\n@inline\nexport function isPowerOf2(value: T): bool {\n return popcnt(value) == 1;\n}\n\n// Count number of decimals for u32 values\n// In our case input value always non-zero so we can simplify some parts\nexport function decimalCount32(value: u32): u32 {\n if (value < 100000) {\n if (value < 100) {\n return 1 + u32(value >= 10);\n } else {\n return 3 + u32(value >= 10000) + u32(value >= 1000);\n }\n } else {\n if (value < 10000000) {\n return 6 + u32(value >= 1000000);\n } else {\n return 8 + u32(value >= 1000000000) + u32(value >= 100000000);\n }\n }\n}\n\n// Count number of decimals for u64 values\n// In our case input value always greater than 2^32-1 so we can skip some parts\nexport function decimalCount64High(value: u64): u32 {\n if (value < 1000000000000000) {\n if (value < 1000000000000) {\n return 10 + u32(value >= 100000000000) + u32(value >= 10000000000);\n } else {\n return 13 + u32(value >= 100000000000000) + u32(value >= 10000000000000);\n }\n } else {\n if (value < 100000000000000000) {\n return 16 + u32(value >= 10000000000000000);\n } else {\n return 18 + u32(value >= 10000000000000000000) + u32(value >= 1000000000000000000);\n }\n }\n}\n\nfunction ulog_base(num: u64, base: i32): u32 {\n if (isPowerOf2(base)) {\n return (63 - clz(num)) / (31 - clz(base)) + 1;\n }\n var b64 = u64(base), b = b64, e: u32 = 1;\n while (num >= b) {\n num /= b;\n b *= b;\n e <<= 1;\n }\n while (num >= 1) {\n num /= b64;\n e++;\n }\n return e - 1;\n}\n\nfunction utoa32_dec_lut(buffer: usize, num: u32, offset: usize): void {\n while (num >= 10000) {\n // in most VMs i32/u32 div and modulo by constant can be shared and simplificate\n let t = num / 10000;\n let r = num % 10000;\n num = t;\n\n let d1 = r / 100;\n let d2 = r % 100;\n\n let digits1 = load(DIGITS + (d1 << alignof()));\n let digits2 = load(DIGITS + (d2 << alignof()));\n\n offset -= 4;\n store(buffer + (offset << 1), digits1 | (digits2 << 32));\n }\n\n if (num >= 100) {\n let t = num / 100;\n let d1 = num % 100;\n num = t;\n offset -= 2;\n let digits = load(DIGITS + (d1 << alignof()));\n store(buffer + (offset << 1), digits);\n }\n\n if (num >= 10) {\n offset -= 2;\n let digits = load(DIGITS + (num << alignof()));\n store(buffer + (offset << 1), digits);\n } else {\n offset -= 1;\n let digit = CharCode._0 + num;\n store(buffer + (offset << 1), digit);\n }\n}\n\nfunction utoa64_dec_lut(buffer: usize, num: u64, offset: usize): void {\n while (num >= 100000000) {\n let t = num / 100000000;\n let r = (num - t * 100000000);\n num = t;\n\n let b = r / 10000;\n let c = r % 10000;\n\n let b1 = b / 100;\n let b2 = b % 100;\n let c1 = c / 100;\n let c2 = c % 100;\n\n let digits1 = load(DIGITS + (c1 << alignof()));\n let digits2 = load(DIGITS + (c2 << alignof()));\n\n offset -= 4;\n store(buffer + (offset << 1), digits1 | (digits2 << 32));\n\n digits1 = load(DIGITS + (b1 << alignof()));\n digits2 = load(DIGITS + (b2 << alignof()));\n\n offset -= 4;\n store(buffer + (offset << 1), digits1 | (digits2 << 32));\n }\n\n utoa32_dec_lut(buffer, num, offset);\n}\n\nfunction utoa_hex_lut(buffer: usize, num: u64, offset: usize): void {\n const lut = changetype(HEX_DIGITS);\n while (offset >= 2) {\n offset -= 2;\n store(\n buffer + (offset << 1),\n load(lut + ((num & 0xFF) << alignof()))\n );\n num >>= 8;\n }\n if (offset & 1) {\n store(buffer, load(lut + (num << 6)));\n }\n}\n\nfunction utoa_dec_simple(buffer: usize, num: T, offset: usize): void {\n do {\n let t = num / 10;\n let r = (num % 10);\n num = changetype(t);\n offset--;\n store(buffer + (offset << 1), CharCode._0 + r);\n } while (num);\n}\n\nfunction utoa_hex_simple(buffer: usize, num: T, offset: usize): void {\n do {\n let d = num & 0x0F | CharCode._0;\n d += select(0x27, 0, d > CharCode._9);\n offset--;\n store(buffer + (offset << 1), d);\n // @ts-ignore: type\n num >>= 4;\n } while (num);\n}\n\n// @ts-ignore: decorator\n@inline\nexport function utoa32_dec_core(buffer: usize, num: u32, offset: usize): void {\n if (ASC_SHRINK_LEVEL >= 1) {\n utoa_dec_simple(buffer, num, offset);\n } else {\n utoa32_dec_lut(buffer, num, offset);\n }\n}\n\n// @ts-ignore: decorator\n@inline\nfunction utoa32_hex_core(buffer: usize, num: u32, offset: usize): void {\n if (ASC_SHRINK_LEVEL >= 1) {\n utoa_hex_simple(buffer, num, offset);\n } else {\n utoa_hex_lut(buffer, num, offset);\n }\n}\n\n// @ts-ignore: decorator\n@inline\nfunction utoa64_dec_core(buffer: usize, num: u64, offset: usize): void {\n if (ASC_SHRINK_LEVEL >= 1) {\n utoa_dec_simple(buffer, num, offset);\n } else {\n utoa64_dec_lut(buffer, num, offset);\n }\n}\n\n// @ts-ignore: decorator\n@inline\nfunction utoa64_hex_core(buffer: usize, num: u64, offset: usize): void {\n if (ASC_SHRINK_LEVEL >= 1) {\n utoa_hex_simple(buffer, num, offset);\n } else {\n utoa_hex_lut(buffer, num, offset);\n }\n}\n\nfunction utoa64_any_core(buffer: usize, num: u64, offset: usize, radix: i32): void {\n const lut = changetype(ANY_DIGITS);\n var base = u64(radix);\n if ((radix & (radix - 1)) == 0) { // for radix which pow of two\n let shift = u64(ctz(radix) & 7);\n let mask = base - 1;\n do {\n offset--;\n store(buffer + (offset << 1), load(lut + (usize(num & mask) << 1)));\n num >>= shift;\n } while (num);\n } else {\n do {\n offset--;\n let q = num / base;\n store(buffer + (offset << 1), load(lut + (usize(num - q * base) << 1)));\n num = q;\n } while (num);\n }\n}\n\nexport function utoa32(value: u32, radix: i32): String {\n if (radix < 2 || radix > 36) {\n throw new RangeError(\"toString() radix argument must be between 2 and 36\");\n }\n if (!value) return \"0\";\n var out: String;\n\n if (radix == 10) {\n let decimals = decimalCount32(value);\n out = changetype(__new(decimals << 1, idof()));\n utoa32_dec_core(changetype(out), value, decimals);\n } else if (radix == 16) {\n let decimals = (31 - clz(value) >> 2) + 1;\n out = changetype(__new(decimals << 1, idof()));\n utoa32_hex_core(changetype(out), value, decimals);\n } else {\n let decimals = ulog_base(value, radix);\n out = changetype(__new(decimals << 1, idof()));\n utoa64_any_core(changetype(out), value, decimals, radix);\n }\n return out;\n}\n\nexport function itoa32(value: i32, radix: i32): String {\n if (radix < 2 || radix > 36) {\n throw new RangeError(\"toString() radix argument must be between 2 and 36\");\n }\n if (!value) return \"0\";\n\n var sign = (value >>> 31) << 1;\n if (sign) value = -value;\n var out: String;\n\n if (radix == 10) {\n let decimals = decimalCount32(value);\n out = changetype(__new((decimals << 1) + sign, idof()));\n utoa32_dec_core(changetype(out) + sign, value, decimals);\n } else if (radix == 16) {\n let decimals = (31 - clz(value) >> 2) + 1;\n out = changetype(__new((decimals << 1) + sign, idof()));\n utoa32_hex_core(changetype(out) + sign, value, decimals);\n } else {\n let val32 = u32(value);\n let decimals = ulog_base(val32, radix);\n out = changetype(__new((decimals << 1) + sign, idof()));\n utoa64_any_core(changetype(out) + sign, val32, decimals, radix);\n }\n if (sign) store(changetype(out), CharCode.MINUS);\n return out;\n}\n\nexport function utoa64(value: u64, radix: i32): String {\n if (radix < 2 || radix > 36) {\n throw new RangeError(\"toString() radix argument must be between 2 and 36\");\n }\n if (!value) return \"0\";\n var out: String;\n\n if (radix == 10) {\n if (value <= u32.MAX_VALUE) {\n let val32 = value;\n let decimals = decimalCount32(val32);\n out = changetype(__new(decimals << 1, idof()));\n utoa32_dec_core(changetype(out), val32, decimals);\n } else {\n let decimals = decimalCount64High(value);\n out = changetype(__new(decimals << 1, idof()));\n utoa64_dec_core(changetype(out), value, decimals);\n }\n } else if (radix == 16) {\n let decimals = (63 - u32(clz(value)) >> 2) + 1;\n out = changetype(__new(decimals << 1, idof()));\n utoa64_hex_core(changetype(out), value, decimals);\n } else {\n let decimals = ulog_base(value, radix);\n out = changetype(__new(decimals << 1, idof()));\n utoa64_any_core(changetype(out), value, decimals, radix);\n }\n return out;\n}\n\nexport function itoa64(value: i64, radix: i32): String {\n if (radix < 2 || radix > 36) {\n throw new RangeError(\"toString() radix argument must be between 2 and 36\");\n }\n if (!value) return \"0\";\n\n var sign = u32(value >>> 63) << 1;\n if (sign) value = -value;\n var out: String;\n\n if (radix == 10) {\n if (value <= u32.MAX_VALUE) {\n let val32 = value;\n let decimals = decimalCount32(val32);\n out = changetype(__new((decimals << 1) + sign, idof()));\n utoa32_dec_core(changetype(out) + sign, val32, decimals);\n } else {\n let decimals = decimalCount64High(value);\n out = changetype(__new((decimals << 1) + sign, idof()));\n utoa64_dec_core(changetype(out) + sign, value, decimals);\n }\n } else if (radix == 16) {\n let decimals = (63 - u32(clz(value)) >> 2) + 1;\n out = changetype(__new((decimals << 1) + sign, idof()));\n utoa64_hex_core(changetype(out) + sign, value, decimals);\n } else {\n let decimals = ulog_base(value, radix);\n out = changetype(__new((decimals << 1) + sign, idof()));\n utoa64_any_core(changetype(out) + sign, value, decimals, radix);\n }\n if (sign) store(changetype(out), CharCode.MINUS);\n return out;\n}\n\n// @ts-ignore: decorator\n@lazy var _K: i32 = 0;\n\n// // @ts-ignore: decorator\n// @lazy\n// var _frc: u64 = 0;\n\n// @ts-ignore: decorator\n@lazy var _exp: i32 = 0;\n\n// @ts-ignore: decorator\n@lazy var _frc_minus: u64 = 0;\n\n// @ts-ignore: decorator\n@lazy var _frc_plus: u64 = 0;\n\n// @ts-ignore: decorator\n@lazy var _frc_pow: u64 = 0;\n\n// @ts-ignore: decorator\n@lazy var _exp_pow: i32 = 0;\n\n// @ts-ignore: decorator\n@inline\nfunction umul64f(u: u64, v: u64): u64 {\n var u0 = u & 0xFFFFFFFF;\n var v0 = v & 0xFFFFFFFF;\n\n var u1 = u >> 32;\n var v1 = v >> 32;\n\n var l = u0 * v0;\n var t = u1 * v0 + (l >> 32);\n var w = u0 * v1 + (t & 0xFFFFFFFF);\n\n w += 0x7FFFFFFF; // rounding\n\n t >>= 32;\n w >>= 32;\n\n return u1 * v1 + t + w;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction umul64e(e1: i32, e2: i32): i32 {\n return e1 + e2 + 64; // where 64 is significand size\n}\n\n// @ts-ignore: decorator\n@inline\nfunction normalizedBoundaries(f: u64, e: i32): void {\n var frc = (f << 1) + 1;\n var exp = e - 1;\n var off = clz(frc);\n frc <<= off;\n exp -= off;\n\n var m = 1 + i32(f == 0x0010000000000000);\n\n _frc_plus = frc;\n _frc_minus = ((f << m) - 1) << e - m - exp;\n _exp = exp;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction grisuRound(buffer: usize, len: i32, delta: u64, rest: u64, ten_kappa: u64, wp_w: u64): void {\n var lastp = buffer + ((len - 1) << 1);\n var digit = load(lastp);\n while (\n rest < wp_w &&\n delta - rest >= ten_kappa && (\n rest + ten_kappa < wp_w ||\n wp_w - rest > rest + ten_kappa - wp_w\n )\n ) {\n --digit;\n rest += ten_kappa;\n }\n store(lastp, digit);\n}\n\n// @ts-ignore: decorator\n@inline\nfunction getCachedPower(minExp: i32): void {\n const c = reinterpret(0x3FD34413509F79FE); // 1 / lg(10) = 0.30102999566398114\n var dk = (-61 - minExp) * c + 347;\t // dk must be positive, so can do ceiling in positive\n var k = dk;\n k += i32(k != dk); // conversion with ceil\n\n var index = (k >> 3) + 1;\n _K = 348 - (index << 3);\t// decimal exponent no need lookup table\n _frc_pow = load(FRC_POWERS + (index << alignof()));\n _exp_pow = load(EXP_POWERS + (index << alignof()));\n}\n\n// @ts-ignore: decorator\n@inline\nfunction grisu2(value: f64, buffer: usize, sign: i32): i32 {\n\n // frexp routine\n var uv = reinterpret(value);\n var exp = i32((uv & 0x7FF0000000000000) >>> 52);\n var sid = uv & 0x000FFFFFFFFFFFFF;\n var frc = (u64(exp != 0) << 52) + sid;\n exp = select(exp, 1, exp) - (0x3FF + 52);\n\n normalizedBoundaries(frc, exp);\n getCachedPower(_exp);\n\n // normalize\n var off = clz(frc);\n frc <<= off;\n exp -= off;\n\n var frc_pow = _frc_pow;\n var exp_pow = _exp_pow;\n\n var w_frc = umul64f(frc, frc_pow);\n var w_exp = umul64e(exp, exp_pow);\n\n var wp_frc = umul64f(_frc_plus, frc_pow) - 1;\n var wp_exp = umul64e(_exp, exp_pow);\n\n var wm_frc = umul64f(_frc_minus, frc_pow) + 1;\n var delta = wp_frc - wm_frc;\n\n return genDigits(buffer, w_frc, w_exp, wp_frc, wp_exp, delta, sign);\n}\n\nfunction genDigits(buffer: usize, w_frc: u64, w_exp: i32, mp_frc: u64, mp_exp: i32, delta: u64, sign: i32): i32 {\n var one_exp = -mp_exp;\n var one_frc = (1) << one_exp;\n var mask = one_frc - 1;\n\n var wp_w_frc = mp_frc - w_frc;\n\n var p1 = u32(mp_frc >> one_exp);\n var p2 = mp_frc & mask;\n\n var kappa = decimalCount32(p1);\n var len = sign;\n\n while (kappa > 0) {\n let d: u32;\n switch (kappa) {\n case 10: { d = p1 / 1000000000; p1 %= 1000000000; break; }\n case 9: { d = p1 / 100000000; p1 %= 100000000; break; }\n case 8: { d = p1 / 10000000; p1 %= 10000000; break; }\n case 7: { d = p1 / 1000000; p1 %= 1000000; break; }\n case 6: { d = p1 / 100000; p1 %= 100000; break; }\n case 5: { d = p1 / 10000; p1 %= 10000; break; }\n case 4: { d = p1 / 1000; p1 %= 1000; break; }\n case 3: { d = p1 / 100; p1 %= 100; break; }\n case 2: { d = p1 / 10; p1 %= 10; break; }\n case 1: { d = p1; p1 = 0; break; }\n default: { d = 0; break; }\n }\n\n if (d | len) store(buffer + (len++ << 1), CharCode._0 + d);\n\n --kappa;\n let tmp = ((p1) << one_exp) + p2;\n if (tmp <= delta) {\n _K += kappa;\n grisuRound(buffer, len, delta, tmp, load(POWERS10 + (kappa << alignof())) << one_exp, wp_w_frc);\n return len;\n }\n }\n\n while (true) {\n p2 *= 10;\n delta *= 10;\n\n let d = p2 >> one_exp;\n if (d | len) store(buffer + (len++ << 1), CharCode._0 + d);\n\n p2 &= mask;\n --kappa;\n if (p2 < delta) {\n _K += kappa;\n wp_w_frc *= load(POWERS10 + (-kappa << alignof()));\n grisuRound(buffer, len, delta, p2, one_frc, wp_w_frc);\n return len;\n }\n }\n}\n\n// @ts-ignore: decorator\n@inline\nfunction genExponent(buffer: usize, k: i32): i32 {\n var sign = k < 0;\n if (sign) k = -k;\n var decimals = decimalCount32(k) + 1;\n utoa32_dec_core(buffer, k, decimals);\n store(buffer, select(CharCode.MINUS, CharCode.PLUS, sign));\n return decimals;\n}\n\nfunction prettify(buffer: usize, length: i32, k: i32): i32 {\n if (!k) {\n store(buffer + (length << 1), CharCode.DOT | (CharCode._0 << 16));\n return length + 2;\n }\n\n var kk = length + k;\n if (length <= kk && kk <= 21) {\n // 1234e7 -> 12340000000\n for (let i = length; i < kk; ++i) {\n store(buffer + (i << 1), CharCode._0);\n }\n store(buffer + (kk << 1), CharCode.DOT | (CharCode._0 << 16));\n return kk + 2;\n } else if (kk > 0 && kk <= 21) {\n // 1234e-2 -> 12.34\n let ptr = buffer + (kk << 1);\n memory.copy(\n ptr + 2,\n ptr,\n -k << 1\n );\n store(buffer + (kk << 1), CharCode.DOT);\n return length + 1;\n } else if (-6 < kk && kk <= 0) {\n // 1234e-6 -> 0.001234\n let offset = 2 - kk;\n memory.copy(\n buffer + (offset << 1),\n buffer,\n length << 1\n );\n store(buffer, CharCode._0 | (CharCode.DOT << 16));\n for (let i = 2; i < offset; ++i) {\n store(buffer + (i << 1), CharCode._0);\n }\n return length + offset;\n } else if (length == 1) {\n // 1e30\n store(buffer, CharCode.e, 2);\n length = genExponent(buffer + 4, kk - 1);\n return length + 2;\n } else {\n let len = length << 1;\n memory.copy(\n buffer + 4,\n buffer + 2,\n len - 2\n );\n store(buffer, CharCode.DOT, 2);\n store(buffer + len, CharCode.e, 2);\n length += genExponent(buffer + len + 4, kk - 1);\n return length + 2;\n }\n}\n\nfunction dtoa_core(buffer: usize, value: f64): i32 {\n var sign = i32(value < 0);\n if (sign) {\n value = -value;\n store(buffer, CharCode.MINUS);\n }\n // assert(value > 0 && value <= 1.7976931348623157e308);\n var len = grisu2(value, buffer, sign);\n len = prettify(buffer + (sign << 1), len - sign, _K);\n return len + sign;\n}\n\n// @ts-ignore: decorator\n@lazy @inline const dtoa_buf = memory.data(MAX_DOUBLE_LENGTH << 1);\n\nexport function dtoa(value: f64): String {\n if (value == 0) return \"0.0\";\n if (!isFinite(value)) {\n if (isNaN(value)) return \"NaN\";\n return select(\"-Infinity\", \"Infinity\", value < 0);\n }\n var size = dtoa_core(dtoa_buf, value) << 1;\n var result = changetype(__new(size, idof()));\n memory.copy(changetype(result), dtoa_buf, size);\n return result;\n}\n\nexport function itoa_buffered(buffer: usize, value: T): u32 {\n var sign: u32 = 0;\n if (isSigned()) {\n sign = u32(value < 0);\n if (sign) {\n if (sizeof() == 1) {\n if (value == -0x80) {\n // -0x80 -> -128\n store(buffer,\n CharCode.MINUS |\n (CharCode._0 + 1) << 16 |\n (CharCode._0 + 2) << 32 |\n (CharCode._0 + 8) << 48\n );\n return 4;\n }\n }\n if (sizeof() == 2) {\n if (value == -0x8000) {\n // -0x8000 -> -32768\n store(buffer,\n CharCode.MINUS |\n (CharCode._0 + 3) << 16 |\n (CharCode._0 + 2) << 32 |\n (CharCode._0 + 7) << 48\n ); // -327\n store(buffer + 8,\n (CharCode._0 + 6) << 0 |\n (CharCode._0 + 8) << 16\n ); // 68\n return 6;\n }\n }\n store(buffer, CharCode.MINUS);\n // @ts-ignore\n value = -value;\n }\n }\n var dest = buffer + (sign << 1);\n if (ASC_SHRINK_LEVEL <= 1) {\n if (isSigned()) {\n if (sizeof() <= 4) {\n if (value < 10) {\n store(dest, value | CharCode._0);\n return 1 + sign;\n }\n } else {\n if (value < 10) {\n store(dest, value | CharCode._0);\n return 1 + sign;\n }\n }\n } else {\n if (value < 10) {\n store(buffer, value | CharCode._0);\n return 1;\n }\n }\n }\n var decimals: u32 = 0;\n if (sizeof() <= 4) {\n let val32 = value;\n decimals = decimalCount32(val32);\n utoa32_dec_core(dest, val32, decimals);\n } else {\n if (value <= u32.MAX_VALUE) {\n let val32 = value;\n decimals = decimalCount32(val32);\n utoa32_dec_core(dest, val32, decimals);\n } else {\n let val64 = value;\n decimals = decimalCount64High(val64);\n utoa64_dec_core(dest, val64, decimals);\n }\n }\n return sign + decimals;\n}\n\nexport function dtoa_buffered(buffer: usize, value: f64): u32 {\n if (value == 0) {\n store(buffer, CharCode._0);\n store(buffer, CharCode.DOT, 2);\n store(buffer, CharCode._0, 4);\n return 3;\n }\n if (!isFinite(value)) {\n if (isNaN(value)) {\n store(buffer, CharCode.N);\n store(buffer, CharCode.a, 2);\n store(buffer, CharCode.N, 4);\n return 3;\n } else {\n let sign = value < 0;\n if (sign) {\n store(buffer, CharCode.MINUS); // -\n buffer += 2;\n }\n store(buffer, 0x690066006E0049, 0); // ifnI\n store(buffer, 0x7900740069006E, 8); // ytin\n return 8 + u32(sign);\n }\n }\n return dtoa_core(buffer, value);\n}\n","import {\n itoa32,\n utoa32,\n itoa64,\n utoa64,\n dtoa,\n itoa_buffered,\n dtoa_buffered,\n MAX_DOUBLE_LENGTH\n} from \"./number\";\n\nimport {\n ipow32\n} from \"../math\";\n\n// All tables are stored as two staged lookup tables (static tries)\n// because the full range of Unicode symbols can't be efficiently\n// represented as-is in memory (see Unicode spec ch 5, p.196):\n// https://www.unicode.org/versions/Unicode12.0.0/ch05.pdf\n// Tables have been generated using these forked musl tools:\n// https://github.com/MaxGraey/musl-chartable-tools/tree/case-ignorable\n\n// Lookup table to check if a character is alphanumeric or not\n// See: https://git.musl-libc.org/cgit/musl/tree/src/ctype/alpha.h\n// size: 3904 bytes\n// @ts-ignore\n@inline @lazy const ALPHA_TABLE = memory.data([\n 18,17,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,17,34,35,36,17,37,38,39,40,\n 41,42,43,44,17,45,46,47,16,16,48,16,16,16,16,16,16,16,49,50,51,16,52,53,16,16,\n 17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,54,\n 17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,\n 17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,\n 17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,\n 17,17,17,55,17,17,17,17,56,17,57,58,59,60,61,62,17,17,17,17,17,17,17,17,17,17,\n 17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,\n 17,17,17,17,17,17,17,63,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,17,64,65,17,66,67,\n 68,69,70,71,72,73,74,17,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,\n 93,94,16,95,96,97,98,17,17,17,99,100,101,16,16,16,16,16,16,16,16,16,16,17,17,\n 17,17,102,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,17,17,103,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,17,17,104,105,16,16,106,107,17,17,17,17,17,17,17,17,17,17,17,17,17,\n 17,17,17,17,17,17,17,17,17,17,108,17,17,17,17,109,110,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 17,111,112,16,16,16,16,16,16,16,16,16,113,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,114,115,116,117,16,16,16,16,16,16,16,16,118,\n 119,120,16,16,16,16,16,121,122,16,16,16,16,123,16,16,124,16,16,16,16,16,16,16,\n 16,16,125,16,16,16,\n 16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,254,255,255,7,254,\n 255,255,7,0,0,0,0,0,4,32,4,255,255,127,255,255,255,127,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,195,255,3,0,31,80,0,0,0,0,0,0,0,0,0,0,32,0,0,0,0,0,223,188,64,215,255,255,\n 251,255,255,255,255,255,255,255,255,255,191,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,3,252,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,254,255,255,255,127,2,255,255,255,\n 255,255,1,0,0,0,0,255,191,182,0,255,255,255,135,7,0,0,0,255,7,255,255,255,255,\n 255,255,255,254,255,195,255,255,255,255,255,255,255,255,255,255,255,255,239,\n 31,254,225,255,\n 159,0,0,255,255,255,255,255,255,0,224,255,255,255,255,255,255,255,255,255,255,\n 255,255,3,0,255,255,255,255,255,7,48,4,255,255,255,252,255,31,0,0,255,255,255,\n 1,255,7,0,0,0,0,0,0,255,255,223,255,255,0,240,255,248,3,255,255,255,255,255,\n 255,255,255,255,239,255,223,225,255,207,255,254,255,239,159,249,255,255,253,\n 197,227,159,89,128,176,207,255,3,16,238,135,249,255,255,253,109,195,135,25,2,\n 94,192,255,63,0,238,191,251,255,255,253,237,227,191,27,1,0,207,255,0,30,238,\n 159,249,255,255,253,237,227,159,25,192,176,207,255,2,0,236,199,61,214,24,199,\n 255,195,199,29,129,0,192,255,0,0,239,223,253,255,255,253,255,227,223,29,96,7,\n 207,255,0,0,239,223,253,255,255,253,239,227,223,29,96,64,207,255,6,0,255,223,\n 253,255,255,255,255,231,223,93,240,128,207,255,0,252,238,255,127,252,255,255,\n 251,47,127,128,95,255,192,255,12,0,254,255,255,255,255,127,255,7,63,32,255,3,\n 0,0,0,0,214,247,255,255,175,255,255,59,95,32,255,243,0,0,0,\n 0,1,0,0,0,255,3,0,0,255,254,255,255,255,31,254,255,3,255,255,254,255,255,255,\n 31,0,0,0,0,0,0,0,0,255,255,255,255,255,255,127,249,255,3,255,255,255,255,255,\n 255,255,255,255,63,255,255,255,255,191,32,255,255,255,255,255,247,255,255,255,\n 255,255,255,255,255,255,61,127,61,255,255,255,255,255,61,255,255,255,255,61,\n 127,61,255,127,255,255,255,255,255,255,255,61,255,255,255,255,255,255,255,255,\n 7,0,0,0,0,255,255,0,0,255,255,255,255,255,255,255,255,255,255,63,63,254,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,159,255,255,254,255,255,7,255,255,255,255,255,255,255,255,\n 255,199,255,1,255,223,15,0,255,255,15,0,255,255,15,0,255,223,13,0,255,255,255,\n 255,255,255,207,255,255,1,128,16,255,3,0,0,0,0,255,3,255,255,255,255,255,255,\n 255,255,255,255,255,1,255,255,255,255,255,7,255,255,255,255,255,255,255,255,\n 63,\n 0,255,255,255,127,255,15,255,1,192,255,255,255,255,63,31,0,255,255,255,255,\n 255,15,255,255,255,3,255,3,0,0,0,0,255,255,255,15,255,255,255,255,255,255,255,\n 127,254,255,31,0,255,3,255,3,128,0,0,128,1,0,0,0,0,0,0,0,255,255,255,255,255,\n 255,239,255,239,15,255,3,0,0,0,0,255,255,255,255,255,243,255,255,255,255,255,\n 255,191,255,3,0,255,255,255,255,255,255,127,0,255,227,255,255,255,255,255,63,\n 255,1,255,255,255,255,255,231,0,0,0,0,0,222,111,4,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,\n 128,255,31,0,255,255,63,63,255,255,255,255,63,63,255,170,255,255,255,63,255,\n 255,255,255,255,255,223,95,220,31,207,15,255,31,220,31,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,2,128,0,0,255,31,0,0,0,0,0,0,0,0,0,0,0,0,132,252,47,62,80,189,255,243,\n 224,67,0,0,255,255,255,255,255,1,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,255,255,255,255,255,255,3,0,\n 0,255,255,255,255,255,127,255,255,255,255,255,127,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,31,120,12,0,255,255,255,255,191,32,255,\n 255,255,255,255,255,255,128,0,0,255,255,127,0,127,127,127,127,127,127,127,127,\n 255,255,255,255,0,0,0,0,0,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,224,0,0,0,254,3,62,31,254,255,255,255,255,255,255,255,255,255,127,224,254,\n 255,255,255,255,255,255,255,255,255,255,247,224,255,255,255,255,255,254,255,\n 255,255,255,255,255,255,255,255,255,127,0,0,255,255,255,255,0,0,0,0,0,0,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,\n 31,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,31,0,0,\n 0,0,0,0,0,0,255,255,255,255,255,63,255,31,255,255,255,15,0,0,255,255,255,255,\n 255,127,240,143,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,\n 0,128,255,252,255,255,255,255,255,255,255,255,255,255,255,255,249,255,255,255,\n 255,255,255,252,7,0,0,0,0,224,255,191,255,255,255,255,0,0,0,255,255,255,255,\n 255,255,15,0,255,255,255,255,255,255,255,255,47,0,255,3,0,0,252,232,255,255,\n 255,255,255,7,255,255,255,255,7,0,255,255,255,31,255,255,255,255,255,255,247,\n 255,0,128,255,3,255,255,255,127,255,255,255,255,255,255,127,0,255,63,255,3,\n 255,255,127,252,255,255,255,255,255,255,255,127,5,0,0,56,255,255,60,0,126,126,\n 126,0,127,127,255,255,255,255,255,247,255,3,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,7,255,3,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,15,0,255,255,127,248,255,255,255,255,\n 255,\n 15,255,255,255,255,255,255,255,255,255,255,255,255,255,63,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,3,0,0,0,0,127,0,248,224,255,253,127,95,219,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,3,0,0,0,248,255,255,255,\n 255,255,255,255,255,255,255,255,255,63,0,0,255,255,255,255,255,255,255,255,\n 252,255,255,255,255,255,255,0,0,0,0,0,255,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,31,0,0,255,3,\n 254,255,255,7,254,255,255,7,192,255,255,255,255,255,255,255,255,255,255,127,\n 252,252,252,28,0,0,0,0,255,239,255,255,127,255,255,183,255,63,255,63,0,0,0,0,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,7,0,0,0,0,0,0,0,0,\n 255,255,255,255,255,255,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,255,255,255,31,255,255,255,255,255,255,1,0,0,0,0,\n 0,255,255,255,255,0,224,255,255,255,7,255,255,255,255,255,7,255,255,255,63,\n 255,255,255,255,15,255,62,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,63,255,3,255,255,255,255,15,255,255,255,\n 255,15,255,255,255,255,255,0,255,255,255,255,255,255,15,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,255,255,255,255,255,255,127,0,255,255,63,0,255,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,63,253,255,255,255,255,191,145,255,255,63,0,255,255,\n 127,0,255,255,255,127,0,0,0,0,0,0,0,0,255,255,55,0,255,255,63,0,255,255,255,3,\n 0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,192,0,0,0,0,0,0,0,0,111,240,239,\n 254,255,255,63,0,0,0,0,0,255,255,255,31,255,255,255,31,0,0,0,0,255,254,255,\n 255,31,0,0,0,255,255,255,255,255,255,63,0,255,255,63,0,255,255,7,0,255,255,3,\n 0,0,0,0,0,0,0,0,0,0,0,0,\n 0,255,255,255,255,255,255,255,255,255,1,0,0,0,0,0,0,255,255,255,255,255,255,7,\n 0,255,255,255,255,255,255,7,0,255,255,255,255,255,0,255,3,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,\n 255,27,3,0,0,0,0,0,0,0,0,0,255,255,255,31,128,0,255,255,63,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,255,255,31,0,0,0,255,255,127,0,255,255,255,255,255,255,255,255,63,0,0,\n 0,192,255,0,0,252,255,255,255,255,255,255,1,0,0,255,255,255,1,255,3,255,255,\n 255,255,255,255,199,255,240,0,255,255,255,255,71,0,255,255,255,255,255,255,\n 255,255,30,192,255,23,0,0,0,0,255,255,251,255,255,255,159,64,0,0,0,0,0,0,0,0,\n 127,189,255,191,255,1,255,255,255,255,255,255,255,1,255,3,239,159,249,255,255,\n 253,237,227,159,25,129,224,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,255,255,255,255,255,255,255,255,187,7,255,131,3,0,0,0,255,255,255,255,255,\n 255,255,255,179,0,255,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,\n 255,255,255,63,127,0,0,0,63,0,0,0,0,255,255,255,255,255,255,255,127,17,0,255,\n 3,0,0,0,0,255,255,255,255,255,255,63,1,255,3,0,0,0,0,0,0,255,255,255,231,255,\n 7,255,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,\n 255,255,1,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,3,0,128,\n 127,242,111,255,255,255,191,153,7,0,255,3,0,0,0,0,0,0,0,0,255,252,255,255,255,\n 255,255,252,26,0,0,0,255,255,255,255,255,255,231,127,0,0,255,255,255,255,255,\n 255,255,255,255,32,0,0,0,0,255,255,255,255,255,255,255,1,255,253,255,255,255,\n 255,127,127,1,0,255,3,0,0,252,255,255,255,252,255,255,254,127,0,0,0,0,0,0,0,0,\n 0,127,251,255,255,255,255,127,180,203,0,255,3,191,253,255,255,255,127,123,1,\n 255,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,255,255,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,\n 0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,3,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,127,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,255,255,255,255,255,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,255,255,255,255,255,255,255,255,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,\n 0,255,255,255,255,255,255,255,1,255,255,255,127,255,3,0,0,0,0,0,0,0,0,0,0,0,0,\n 255,255,255,63,0,0,255,255,255,255,255,255,0,0,15,0,255,3,248,255,255,224,255,\n 255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,\n 255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,135,\n 255,255,255,255,255,255,255,128,255,255,0,0,0,0,0,0,0,0,11,0,3,0,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,0,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,63,0,0,0,0,0,\n 255,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,\n 127,0,0,0,0,0,0,7,0,240,0,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,15,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,7,255,31,255,1,255,67,0,0,0,0,0,0,0,0,0,0,0,0,\n 255,255,255,255,255,255,255,255,255,255,223,255,255,255,255,255,255,255,255,\n 223,100,222,255,235,239,255,255,255,255,255,255,255,191,231,223,223,255,255,\n 255,123,95,252,253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,63,255,255,255,253,255,255,247,255,255,255,\n 247,255,255,223,255,255,255,223,255,255,127,255,255,255,127,255,255,255,253,\n 255,255,255,253,255,255,247,207,255,255,255,255,255,255,127,255,255,249,219,7,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,31,\n 128,63,255,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,15,255,\n 3,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,31,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,143,8,\n 255,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,255,255,255,150,254,247,10,\n 132,234,150,170,150,247,247,94,255,251,255,15,238,251,255,15,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,255,255,255,3,255,255,255,3,255,255,255,3,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,3\n]);\n\n// size: 1568 bytes (compressed to ~1380 bytes after binaryen)\n// @ts-ignore: decorator\n@lazy @inline const CASED = memory.data([\n 18,19,20,21,22,23,16,16,16,16,16,16,16,16,16,16,\n 24,16,16,25,16,16,16,16,16,16,16,16,26,27,17,28,\n 29,30,16,16,31,16,16,16,16,16,16,16,32,33,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,34,35,16,16,16,36,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,37,16,16,16,38,\n 16,16,16,16,39,16,16,16,16,16,16,16,40,16,16,16,\n 16,16,16,16,16,16,16,16,41,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,42,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,43,44,45,46,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,47,16,16,16,16,16,16,\n 16,48,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 0,0,0,0,0,0,0,0,254,255,255,7,254,255,255,7,0,0,0,0,0,4,32,4,\n 255,255,127,255,255,255,127,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,247,240,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,239,255,255,255,255,1,3,0,0,0,31,0,0,0,\n 0,0,0,0,0,0,0,0,32,0,0,0,0,0,207,188,64,215,255,255,251,255,255,255,\n 255,255,255,255,255,255,191,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 3,252,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,255,\n 255,255,127,0,255,255,255,255,255,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,\n 191,32,255,255,255,255,255,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,255,255,255,255,255,255,255,255,255,255,63,63,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,255,1,255,255,255,255,255,231,0,0,0,0,0,0,0,0,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 0,0,0,0,0,0,0,0,255,255,63,63,255,255,255,255,63,63,255,170,255,255,255,63,\n 255,255,255,255,255,255,223,95,220,31,207,15,255,31,220,31,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,2,128,0,0,255,31,0,0,0,0,0,0,0,0,0,0,0,0,\n 132,252,47,62,80,189,31,242,224,67,0,0,255,255,255,255,24,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,192,255,255,255,255,255,255,3,0,0,255,255,255,255,255,127,255,255,\n 255,255,255,127,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,31,120,12,0,\n 255,255,255,255,191,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,63,0,0,\n 255,255,255,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,255,255,255,\n 255,255,255,255,255,255,255,255,255,120,255,255,255,255,255,255,252,7,0,0,0,0,96,7,\n 0,0,0,0,0,0,255,255,255,255,255,247,255,1,255,255,255,255,255,255,255,255,255,255,\n 0,0,0,0,0,0,0,0,127,0,248,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,255,255,7,\n 254,255,255,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,255,255,\n 255,255,15,255,255,255,255,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 255,255,255,255,255,255,7,0,255,255,255,255,255,255,7,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,0,0,0,0,\n 0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,223,255,255,255,255,255,\n 255,255,255,223,100,222,255,235,239,255,255,255,255,255,255,255,191,231,223,223,255,255,255,123,\n 95,252,253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,63,255,255,255,\n 253,255,255,247,255,255,255,247,255,255,223,255,255,255,223,255,255,127,255,255,255,127,255,255,\n 255,253,255,255,255,253,255,255,247,15,0,0,0,0,0,0,255,255,255,255,255,255,255,255,\n 15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,255,255,255,3,255,255,255,3,255,255,255,3,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0\n]);\n\n// size: 2976 bytes (compressed to ~2050 bytes after binaryen)\n// @ts-ignore: decorator\n@lazy @inline const CASE_IGNORABLES = memory.data([\n 18,16,19,20,21,22,23,24,25,26,27,28,29,30,31,32,\n 33,16,16,34,16,16,16,35,36,37,38,39,40,41,16,42,\n 43,16,16,16,16,16,16,16,16,16,16,16,44,45,46,16,\n 47,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 48,16,16,16,49,16,50,51,52,53,54,55,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,56,16,16,57,58,\n 16,59,60,61,16,16,16,16,16,16,62,16,16,63,64,65,\n 66,67,68,69,70,71,72,73,74,75,76,16,77,78,79,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,80,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,81,82,16,16,16,83,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,84,16,16,16,\n 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\n 16,85,86,16,16,16,16,16,16,16,87,16,16,16,16,16,\n 88,89,90,16,16,16,16,16,91,92,16,16,16,16,16,16,\n 16,16,16,93,16,16,16,16,16,16,16,16,16,16,16,16,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 0,0,0,0,128,64,0,4,0,0,0,64,1,0,0,0,0,0,0,0,0,161,144,1,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,48,4,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,3,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,0,0,0,0,\n 0,0,254,255,255,255,255,191,182,0,0,0,0,0,16,0,63,0,255,23,0,0,0,0,\n 1,248,255,255,0,0,1,0,0,0,0,0,0,0,0,0,0,0,192,191,255,61,0,0,\n 0,128,2,0,0,0,255,255,255,7,0,0,0,0,0,0,0,0,0,0,192,255,1,0,\n 0,0,0,0,0,248,63,36,0,0,192,255,255,63,0,0,0,0,0,14,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,248,255,255,255,255,255,7,0,0,0,0,0,0,20,\n 254,33,254,0,12,0,2,0,2,0,0,0,0,0,0,16,30,32,0,0,12,0,0,64,\n 6,0,0,0,0,0,0,16,134,57,2,0,0,0,35,0,6,0,0,0,0,0,0,16,\n 190,33,0,0,12,0,0,252,2,0,0,0,0,0,0,144,30,32,96,0,12,0,0,0,\n 4,0,0,0,0,0,0,0,1,32,0,0,0,0,0,0,17,0,0,0,0,0,0,192,\n 193,61,96,0,12,0,0,0,2,0,0,0,0,0,0,144,64,48,0,0,12,0,0,0,\n 3,0,0,0,0,0,0,24,30,32,0,0,12,0,0,0,2,0,0,0,0,0,0,0,\n 0,4,92,0,0,0,0,0,0,0,0,0,0,0,242,7,192,127,0,0,0,0,0,0,\n 0,0,0,0,0,0,242,31,64,63,0,0,0,0,0,0,0,0,0,3,0,0,160,2,\n 0,0,0,0,0,0,254,127,223,224,255,254,255,255,255,31,64,0,0,0,0,0,0,0,\n 0,0,0,0,0,224,253,102,0,0,0,195,1,0,30,0,100,32,0,32,0,0,0,0,\n 0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,224,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,0,0,28,0,\n 0,0,12,0,0,0,12,0,0,0,0,0,0,0,176,63,64,254,143,32,0,0,0,0,\n 0,120,0,0,0,0,0,0,8,0,0,0,0,0,0,0,96,0,0,0,0,2,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,135,1,4,14,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,9,0,0,0,0,\n 0,0,64,127,229,31,248,159,0,0,0,0,128,0,255,255,1,0,0,0,0,0,0,0,\n 15,0,0,0,0,0,208,23,4,0,0,0,0,248,15,0,3,0,0,0,60,59,0,0,\n 0,0,0,0,64,163,3,0,0,0,0,0,0,240,207,0,0,0,0,0,0,0,0,63,\n 0,0,0,0,0,0,0,0,0,0,247,255,253,33,16,3,0,0,0,0,0,240,255,255,\n 255,255,255,255,255,7,0,1,0,0,0,248,255,255,255,255,255,255,255,255,255,255,255,251,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,\n 3,224,0,224,0,224,0,96,0,248,0,3,144,124,0,0,0,0,0,0,223,255,2,128,\n 0,0,255,31,0,0,0,0,0,0,255,255,255,255,1,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,0,0,0,0,0,0,128,3,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,128,0,128,0,0,0,0,0,0,0,0,\n 0,0,0,0,255,255,255,255,0,0,0,0,0,128,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,0,0,0,60,62,8,\n 0,0,0,0,0,0,0,0,0,0,0,126,0,0,0,0,0,0,0,0,0,0,0,112,\n 0,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,16,0,0,0,0,0,0,\n 0,0,0,0,0,128,247,191,0,0,0,240,0,0,0,0,0,0,0,0,0,0,3,0,\n 255,255,255,255,3,0,0,0,0,0,0,0,0,0,1,0,0,7,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,3,68,8,0,0,96,16,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,48,0,0,0,255,255,3,128,0,0,0,0,192,63,0,0,\n 128,255,3,0,0,0,0,0,7,0,0,0,0,0,200,51,0,128,0,0,96,0,0,0,\n 0,0,0,0,0,126,102,0,8,16,0,0,0,0,1,16,0,0,0,0,0,0,157,193,\n 2,0,0,32,0,48,88,0,0,0,0,0,0,0,0,0,0,0,0,248,0,14,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,32,33,0,0,0,0,0,64,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,255,3,0,0,0,0,0,0,0,\n 255,255,8,0,255,255,0,0,0,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,128,128,64,0,4,0,0,0,64,1,0,0,0,0,0,1,0,\n 0,0,0,192,0,0,0,0,0,0,0,0,8,0,0,14,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,7,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,240,0,0,0,0,0,135,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,0,\n 0,0,0,0,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 192,255,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 2,0,0,0,0,0,0,255,127,0,0,0,0,0,0,128,3,0,0,0,0,0,120,38,\n 0,32,0,0,0,0,0,0,7,0,0,0,128,239,31,0,0,0,0,0,0,0,8,0,\n 3,0,0,0,0,0,192,127,0,158,0,0,0,0,0,0,0,0,0,0,0,128,211,64,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,248,7,0,0,\n 3,0,0,0,0,0,0,24,1,0,0,0,192,31,31,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,92,0,0,64,0,0,0,0,\n 0,0,0,0,0,0,248,133,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,176,1,0,0,48,0,0,0,0,\n 0,0,0,0,0,0,248,167,1,0,0,0,0,0,0,0,0,0,0,0,0,40,191,0,\n 0,0,0,0,0,0,0,0,0,0,0,224,188,15,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,6,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,88,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,240,12,1,0,0,0,254,7,0,0,0,0,248,121,128,0,126,14,0,0,0,0,\n 0,252,127,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,191,\n 0,0,0,0,0,0,0,0,0,0,252,255,255,252,109,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,126,180,191,0,0,0,0,0,0,0,0,0,163,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,255,1,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,31,0,0,0,0,0,0,0,127,0,15,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,128,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,27,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,15,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,3,248,255,\n 231,15,0,0,0,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 255,255,255,255,255,255,127,248,255,255,255,255,255,31,32,0,16,0,0,248,254,255,0,0,\n 0,0,0,0,0,0,0,0,127,255,255,249,219,7,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,63,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 240,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,248\n]);\n\n// @ts-ignore: decorator\n@lazy @inline const LOWER127 = memory.data([\n 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,\n 16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,\n 32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,\n 48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,\n 64,\n 97,98,99,100,101,102,103,104,105,106,107,108,109,\n 110,111,112,113,114,115,116,117,118,119,120,121,122,\n 91,92,93,94,95,96,\n 97,98,99,100,101,102,103,104,105,106,107,108,109,\n 110,111,112,113,114,115,116,117,118,119,120,121,122,\n 123,124,125,126,127\n]);\n\n// @ts-ignore: decorator\n@lazy @inline const UPPER127 = memory.data([\n 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,\n 16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,\n 32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,\n 48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,\n 64,\n 65,66,67,68,69,70,71,72,73,74,75,76,77,\n 78,79,80,81,82,83,84,85,86,87,88,89,90,\n 91,92,93,94,95,96,\n 65,66,67,68,69,70,71,72,73,74,75,76,77,\n 78,79,80,81,82,83,84,85,86,87,88,89,90,\n 123,124,125,126,127\n]);\n\n// 23 * 8 = 184 bytes\n// @ts-ignore: decorator\n@lazy @inline const POWERS10 = memory.data([\n 1e00, 1e01, 1e02, 1e03, 1e04, 1e05, 1e06, 1e07, 1e08, 1e09,\n 1e10, 1e11, 1e12, 1e13, 1e14, 1e15, 1e16, 1e17, 1e18, 1e19,\n 1e20, 1e21, 1e22\n]);\n\n// @ts-ignore: decorator\n@inline\nexport const enum CharCode {\n PERCENT = 0x25,\n PLUS = 0x2B,\n MINUS = 0x2D,\n DOT = 0x2E,\n _0 = 0x30,\n _1 = 0x31,\n _2 = 0x32,\n _3 = 0x33,\n _4 = 0x34,\n _5 = 0x35,\n _6 = 0x36,\n _7 = 0x37,\n _8 = 0x38,\n _9 = 0x39,\n A = 0x41,\n B = 0x42,\n E = 0x45,\n I = 0x49,\n N = 0x4E,\n O = 0x4F,\n X = 0x58,\n Z = 0x5A,\n a = 0x61,\n b = 0x62,\n e = 0x65,\n n = 0x6E,\n o = 0x6F,\n u = 0x75,\n x = 0x78,\n z = 0x7A\n}\n\n// @ts-ignore: decorator\n@inline\nexport function isAscii(c: u32): bool {\n return !(c >> 7);\n}\n\n// @ts-ignore: decorator\n@inline\nexport function isLower8(c: u32): bool {\n return c - CharCode.a < 26;\n}\n\n// @ts-ignore: decorator\n@inline\nexport function isUpper8(c: u32): bool {\n return c - CharCode.A < 26;\n}\n\nexport function isSpace(c: u32): bool {\n if (c < 0x1680) { // < (1)\n // , , , , , and \n // (c == 0x20 || c == 0xA0) was optimized to (c | 0x80) == 0xA0\n return ((c | 0x80) == 0xA0) || (c - 0x09 <= 0x0D - 0x09);\n }\n if (c - 0x2000 <= 0x200A - 0x2000) return true;\n switch (c) {\n case 0x1680: // (1)\n case 0x2028: // (2)\n case 0x2029: // \n case 0x202F: // \n case 0x205F: // \n case 0x3000: // \n case 0xFEFF: return true; // \n }\n return false;\n}\n\nexport function isAlpha(c: u32): bool {\n if (isAscii(c)) return (c | 32) - CharCode.a < 26;\n if (c < 0x20000) {\n // @ts-ignore: cast\n return stagedBinaryLookup(ALPHA_TABLE, c);\n }\n return c < 0x2FFFE;\n}\n\n// @ts-ignore: decorator\n@inline\nexport function isCased(c: u32): bool {\n // @ts-ignore: cast\n return c < 0x1F18A && stagedBinaryLookup(CASED, c);\n}\n\n// @ts-ignore: decorator\n@inline\nexport function isCaseIgnorable(c: u32): bool {\n // @ts-ignore: cast\n return c < 0xE01F0 && stagedBinaryLookup(CASE_IGNORABLES, c);\n}\n\n// @ts-ignore: decorator\n@inline\nexport function isFinalSigma(buffer: usize, index: isize, len: isize): bool {\n const lookaheadLimit = 30; // max lookahead limit\n var found = false;\n var pos = index;\n var minPos = max(0, pos - lookaheadLimit);\n while (pos > minPos) {\n let c = codePointBefore(buffer, pos);\n if (!isCaseIgnorable(c)) {\n if (isCased(c)) {\n found = true;\n } else {\n return false;\n }\n }\n pos -= isize(c >= 0x10000) + 1;\n }\n if (!found) return false;\n pos = index + 1;\n var maxPos = min(pos + lookaheadLimit, len);\n while (pos < maxPos) {\n let c = load(buffer + (pos << 1));\n if (u32((c & 0xFC00) == 0xD800) & u32(pos + 1 != len)) {\n let c1 = load(buffer + (pos << 1), 2);\n if ((c1 & 0xFC00) == 0xDC00) {\n c = (c - 0xD800 << 10) + (c1 - 0xDC00) + 0x10000;\n }\n }\n if (!isCaseIgnorable(c)) {\n return !isCased(c);\n }\n pos += isize(c >= 0x10000) + 1;\n }\n return true;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction codePointBefore(buffer: usize, index: isize): i32 {\n if (index <= 0) return -1;\n var c = load(buffer + (index - 1 << 1));\n if (u32((c & 0xFC00) == 0xDC00) & u32(index - 2 >= 0)) {\n let c1 = load(buffer + (index - 2 << 1));\n if ((c1 & 0xFC00) == 0xD800) {\n return ((c1 & 0x3FF) << 10) + (c & 0x3FF) + 0x10000;\n }\n }\n return (c & 0xF800) == 0xD800 ? 0xFFFD : c;\n}\n\n// Search routine for two-staged lookup tables\nfunction stagedBinaryLookup(table: usize, c: u32): bool {\n return ((load(table + (load(table + (c >>> 8)) << 5) + ((c & 255) >> 3)) >>> (c & 7)) & 1);\n}\n\nexport function compareImpl(str1: string, index1: usize, str2: string, index2: usize, len: usize): i32 {\n var ptr1 = changetype(str1) + (index1 << 1);\n var ptr2 = changetype(str2) + (index2 << 1);\n if (ASC_SHRINK_LEVEL < 2) {\n if (len >= 4 && !((ptr1 & 7) | (ptr2 & 7))) {\n do {\n if (load(ptr1) != load(ptr2)) break;\n ptr1 += 8;\n ptr2 += 8;\n len -= 4;\n } while (len >= 4);\n }\n }\n while (len--) {\n let a = load(ptr1);\n let b = load(ptr2);\n if (a != b) return a - b;\n ptr1 += 2;\n ptr2 += 2;\n }\n return 0;\n}\n\n// @ts-ignore: decorator\n@inline\nexport function toLower8(c: u32): u32 {\n if (ASC_SHRINK_LEVEL > 0) {\n return c | u32(isUpper8(c)) << 5;\n } else {\n return load(LOWER127 + c);\n }\n}\n\n// @ts-ignore: decorator\n@inline\nexport function toUpper8(c: u32): u32 {\n if (ASC_SHRINK_LEVEL > 0) {\n return c & ~(u32(isLower8(c)) << 5);\n } else {\n return load(UPPER127 + c);\n }\n}\n\n/** Parses a string to an integer (usually), using the specified radix. */\nexport function strtol(str: string, radix: i32 = 0): T {\n var len = str.length;\n if (!len) {\n if (isFloat()) {\n // @ts-ignore: cast\n return NaN;\n } else {\n // @ts-ignore: cast\n return 0;\n }\n }\n\n var ptr = changetype(str) /* + HEAD -> offset */;\n var code = load(ptr);\n\n // trim white spaces\n while (isSpace(code)) {\n code = load(ptr += 2);\n --len;\n }\n // determine sign\n // @ts-ignore\n var sign: T = 1;\n if (code == CharCode.MINUS || code == CharCode.PLUS) {\n if (!--len) {\n if (isFloat()) {\n // @ts-ignore: cast\n return NaN;\n } else {\n // @ts-ignore: cast\n return 0;\n }\n }\n if (code == CharCode.MINUS) {\n // @ts-ignore: type\n sign = -1;\n }\n code = load(ptr += 2);\n }\n\n // See https://tc39.es/ecma262/#sec-parseint-string-radix\n if (radix) {\n if (radix < 2 || radix > 36) {\n if (isFloat()) {\n // @ts-ignore: cast\n return NaN;\n } else {\n // @ts-ignore: cast\n return 0;\n }\n }\n // handle case as parseInt(\"0xFF\", 16) by spec\n if (radix == 16) {\n if (\n len > 2 &&\n code == CharCode._0 &&\n (load(ptr, 2) | 32) == CharCode.x\n ) {\n ptr += 4; len -= 2;\n }\n }\n } else {\n // determine radix by literal prefix\n if (code == CharCode._0 && len > 2) {\n switch (load(ptr, 2) | 32) {\n case CharCode.b: {\n ptr += 4; len -= 2;\n radix = 2;\n break;\n }\n case CharCode.o: {\n ptr += 4; len -= 2;\n radix = 8;\n break;\n }\n case CharCode.x: {\n ptr += 4; len -= 2;\n radix = 16;\n break;\n }\n }\n }\n if (!radix) radix = 10;\n }\n\n // calculate value\n // @ts-ignore: type\n var num: T = 0;\n var initial = len - 1;\n while (len--) {\n code = load(ptr);\n if (code - CharCode._0 < 10) {\n code -= CharCode._0;\n } else if (code - CharCode.A <= (CharCode.Z - CharCode.A)) {\n code -= CharCode.A - 10;\n } else if (code - CharCode.a <= (CharCode.z - CharCode.a)) {\n code -= CharCode.a - 10;\n }\n if (code >= radix) {\n if (initial == len) {\n if (isFloat()) {\n // @ts-ignore: cast\n return NaN;\n } else {\n // @ts-ignore: cast\n return 0;\n }\n }\n break;\n }\n // @ts-ignore: type\n num = num * radix + code;\n ptr += 2;\n }\n // @ts-ignore: type\n return sign * num;\n}\n\nexport function strtod(str: string): f64 {\n var len = str.length;\n if (!len) return NaN;\n\n var ptr = changetype(str);\n var code = load(ptr);\n\n var sign = 1.0;\n // skip white spaces\n while (len && isSpace(code)) {\n code = load(ptr += 2);\n --len;\n }\n if (!len) return NaN;\n\n // try parse '-' or '+'\n if (code == CharCode.MINUS) {\n if (!--len) return NaN;\n code = load(ptr += 2);\n sign = -1;\n } else if (code == CharCode.PLUS) {\n if (!--len) return NaN;\n code = load(ptr += 2);\n }\n\n // try parse Infinity\n if (len >= 8 && code == CharCode.I) {\n if (\n load(ptr, 0) == 0x690066006E0049 && // ifnI\n load(ptr, 8) == 0x7900740069006E // ytin\n ) {\n return Infinity * sign;\n }\n return NaN;\n }\n // validate next symbol\n if (code != CharCode.DOT && (code - CharCode._0) >= 10) {\n return NaN;\n }\n var savedPtr = ptr;\n // skip zeros\n while (code == CharCode._0) {\n code = load(ptr += 2);\n --len;\n }\n if (len <= 0) return 0.0 * sign;\n const capacity = 19; // int(64 * 0.3010)\n var pointed = false;\n var consumed = 0;\n var position = 0;\n var x: u64 = 0;\n if (code == CharCode.DOT) {\n let noDigits = !(savedPtr - ptr);\n ptr += 2; --len;\n if (!len && noDigits) return NaN;\n for (pointed = true; (code = load(ptr)) == CharCode._0; --position, ptr += 2) --len;\n if (len <= 0) return 0.0 * sign;\n if (!position && noDigits && code - CharCode._0 >= 10) return NaN;\n }\n for (let digit = code - CharCode._0; digit < 10 || (code == CharCode.DOT && !pointed); digit = code - CharCode._0) {\n if (digit < 10) {\n x = consumed < capacity ? 10 * x + digit : x | u64(!!digit);\n ++consumed;\n } else {\n position = consumed;\n pointed = true;\n }\n if (!--len) break;\n code = load(ptr += 2);\n }\n\n if (!pointed) position = consumed;\n return copysign(scientific(x, position - min(capacity, consumed) + parseExp(ptr, len)), sign);\n}\n\nexport function strtob(str: string): bool {\n var size: usize = str.length << 1;\n var offset: usize = 0;\n if (size > 8) {\n // try trim end whitespaces first\n while (size && isSpace(load(changetype(str) + size - 2))) size -= 2;\n if (size > 8) {\n // trim start whitespaces\n while (offset < size && isSpace(load(changetype(str) + offset))) offset += 2;\n size -= offset;\n }\n }\n if (size != 8) return false;\n // \"true\" represents as \\00\\e\\00\\u\\00\\e\\00\\t (00 65 00 75 00 72 00 74)\n return load(changetype(str) + offset) == 0x0065_0075_0072_0074;\n}\n\nexport function joinBooleanArray(dataStart: usize, length: i32, separator: string): string {\n var lastIndex = length - 1;\n if (lastIndex < 0) return \"\";\n if (!lastIndex) return select(\"true\", \"false\", load(dataStart));\n\n var sepLen = separator.length;\n var valueLen = 5; // max possible length of element len(\"false\")\n var estLen = (valueLen + sepLen) * lastIndex + valueLen;\n var result = changetype(__new(estLen << 1, idof()));\n var offset = 0;\n var value: bool;\n for (let i = 0; i < lastIndex; ++i) {\n value = load(dataStart + i);\n valueLen = 4 + i32(!value);\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(select(\"true\", \"false\", value)),\n valueLen << 1\n );\n offset += valueLen;\n if (sepLen) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(separator),\n sepLen << 1\n );\n offset += sepLen;\n }\n }\n value = load(dataStart + lastIndex);\n valueLen = 4 + i32(!value);\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(select(\"true\", \"false\", value)),\n valueLen << 1\n );\n offset += valueLen;\n\n if (estLen > offset) return result.substring(0, offset);\n return result;\n}\n\nexport function joinIntegerArray(dataStart: usize, length: i32, separator: string): string {\n var lastIndex = length - 1;\n if (lastIndex < 0) return \"\";\n if (!lastIndex) {\n let value = load(dataStart);\n if (isSigned()) {\n if (sizeof() <= 4) {\n // @ts-ignore: type\n return changetype(itoa32(value, 10));\n } else {\n // @ts-ignore: type\n return changetype(itoa64(value, 10));\n }\n } else {\n if (sizeof() <= 4) {\n // @ts-ignore: type\n return changetype(utoa32(value, 10));\n } else {\n // @ts-ignore: type\n return changetype(utoa64(value, 10));\n }\n }\n }\n\n var sepLen = separator.length;\n const valueLen = (sizeof() <= 4 ? 10 : 20) + i32(isSigned());\n var estLen = (valueLen + sepLen) * lastIndex + valueLen;\n var result = changetype(__new(estLen << 1, idof()));\n var offset = 0;\n var value: T;\n for (let i = 0; i < lastIndex; ++i) {\n value = load(dataStart + (i << alignof()));\n // @ts-ignore: type\n offset += itoa_buffered(changetype(result) + (offset << 1), value);\n if (sepLen) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(separator),\n sepLen << 1\n );\n offset += sepLen;\n }\n }\n value = load(dataStart + (lastIndex << alignof()));\n // @ts-ignore: type\n offset += itoa_buffered(changetype(result) + (offset << 1), value);\n if (estLen > offset) return result.substring(0, offset);\n return result;\n}\n\nexport function joinFloatArray(dataStart: usize, length: i32, separator: string): string {\n var lastIndex = length - 1;\n if (lastIndex < 0) return \"\";\n if (!lastIndex) {\n return changetype(dtoa(\n // @ts-ignore: type\n load(dataStart))\n );\n }\n\n const valueLen = MAX_DOUBLE_LENGTH;\n var sepLen = separator.length;\n var estLen = (valueLen + sepLen) * lastIndex + valueLen;\n var result = changetype(__new(estLen << 1, idof()));\n var offset = 0;\n var value: T;\n for (let i = 0; i < lastIndex; ++i) {\n value = load(dataStart + (i << alignof()));\n // @ts-ignore: type\n offset += dtoa_buffered(changetype(result) + (offset << 1), value);\n if (sepLen) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(separator),\n sepLen << 1\n );\n offset += sepLen;\n }\n }\n value = load(dataStart + (lastIndex << alignof()));\n // @ts-ignore: type\n offset += dtoa_buffered(changetype(result) + (offset << 1), value);\n if (estLen > offset) return result.substring(0, offset);\n return result;\n}\n\nexport function joinStringArray(dataStart: usize, length: i32, separator: string): string {\n var lastIndex = length - 1;\n if (lastIndex < 0) return \"\";\n if (!lastIndex) {\n // @ts-ignore: type\n return load(dataStart) || \"\";\n }\n var estLen = 0;\n var value: string;\n for (let i = 0; i < length; ++i) {\n value = load(dataStart + (i << alignof()));\n if (changetype(value) != 0) estLen += value.length;\n }\n var offset = 0;\n var sepLen = separator.length;\n var result = changetype(__new((estLen + sepLen * lastIndex) << 1, idof()));\n for (let i = 0; i < lastIndex; ++i) {\n value = load(dataStart + (i << alignof()));\n if (changetype(value) != 0) {\n let valueLen = value.length;\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(value),\n valueLen << 1\n );\n offset += valueLen;\n }\n if (sepLen) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(separator),\n sepLen << 1\n );\n offset += sepLen;\n }\n }\n value = load(dataStart + (lastIndex << alignof()));\n if (changetype(value) != 0) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(value),\n value.length << 1\n );\n }\n return result;\n}\n\nexport function joinReferenceArray(dataStart: usize, length: i32, separator: string): string {\n var lastIndex = length - 1;\n if (lastIndex < 0) return \"\";\n var value: T;\n if (!lastIndex) {\n value = load(dataStart);\n // @ts-ignore: type\n return value != null ? value.toString() : \"\";\n }\n var result = \"\";\n var sepLen = separator.length;\n for (let i = 0; i < lastIndex; ++i) {\n value = load(dataStart + (i << alignof()));\n // @ts-ignore: type\n if (value != null) result += value.toString();\n if (sepLen) result += separator;\n }\n value = load(dataStart + (lastIndex << alignof()));\n // @ts-ignore: type\n if (value != null) result += value.toString();\n return result;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction scientific(significand: u64, exp: i32): f64 {\n if (!significand || exp < -342) return 0;\n if (exp > 308) return Infinity;\n // Try use fast path\n // Use fast path for string-to-double conversion if possible\n // see http://www.exploringbinary.com/fast-path-decimal-to-floating-point-conversion\n // Simple integer\n var significandf = significand;\n if (!exp) return significandf;\n if (exp > 22 && exp <= 22 + 15) {\n significandf *= pow10(exp - 22);\n exp = 22;\n }\n if (significand <= 9007199254740991 && abs(exp) <= 22) {\n if (exp > 0) return significandf * pow10(exp);\n return significandf / pow10(-exp);\n } else if (exp < 0) {\n return scaledown(significand, exp);\n } else {\n return scaleup(significand, exp);\n }\n}\n\n// Adopted from metallic lib:\n// https://github.com/jdh8/metallic/blob/master/src/stdlib/parse/scientific.h\n// @ts-ignore: decorator\n@inline\nfunction scaledown(significand: u64, exp: i32): f64 {\n const denom: u64 = 6103515625; // 1e14 * 0x1p-14\n const scale = reinterpret(0x3F06849B86A12B9B); // 1e-14 * 0x1p32\n\n var shift = clz(significand);\n significand <<= shift;\n shift = exp - shift;\n\n for (; exp <= -14; exp += 14) {\n let q = significand / denom;\n let r = significand % denom;\n let s = clz(q);\n significand = (q << s) + nearest(scale * (r << (s - 18)));\n shift -= s;\n }\n var b = ipow32(5, -exp);\n var q = significand / b;\n var r = significand % b;\n var s = clz(q);\n significand = (q << s) + (reinterpret(reinterpret(r) + (s << 52)) / b);\n shift -= s;\n\n return NativeMath.scalbn(significand, shift);\n}\n\n// Adopted from metallic lib:\n// https://github.com/jdh8/metallic/blob/master/src/stdlib/parse/scientific.h\n// @ts-ignore: decorator\n@inline\nfunction scaleup(significand: u64, exp: i32): f64 {\n const coeff: u32 = 1220703125; // 1e13 * 0x1p-13;\n var shift = ctz(significand);\n significand >>= shift;\n shift += exp;\n\n __fixmulShift = shift;\n for (; exp >= 13; exp -= 13) {\n significand = fixmul(significand, coeff);\n }\n significand = fixmul(significand, ipow32(5, exp));\n shift = __fixmulShift;\n return NativeMath.scalbn(significand, shift);\n}\n\n// Adopted from metallic lib:\n// https://github.com/jdh8/metallic/blob/master/src/stdlib/parse/scientific.h\n// @ts-ignore: decorator\n@inline\nfunction parseExp(ptr: usize, len: i32): i32 {\n var sign = 1, magnitude = 0;\n var code = load(ptr);\n // check code is 'e' or 'E'\n if ((code | 32) != CharCode.e) return 0;\n\n if (!--len) return 0;\n code = load(ptr += 2);\n if (code == CharCode.MINUS) {\n if (!--len) return 0;\n code = load(ptr += 2);\n sign = -1;\n } else if (code == CharCode.PLUS) {\n if (!--len) return 0;\n code = load(ptr += 2);\n }\n // skip zeros\n while (code == CharCode._0) {\n if (!--len) return 0;\n code = load(ptr += 2);\n }\n for (let digit: u32 = code - CharCode._0; len && digit < 10; digit = code - CharCode._0) {\n if (magnitude >= 3200) return sign * 3200;\n magnitude = 10 * magnitude + digit;\n code = load(ptr += 2);\n --len;\n }\n return sign * magnitude;\n}\n\n// @ts-ignore: decorator\n@lazy var __fixmulShift: u64 = 0;\n\n// Adopted from metallic lib:\n// https://github.com/jdh8/metallic/blob/master/src/stdlib/parse/scientific.h\n// @ts-ignore: decorator\n@inline\nfunction fixmul(a: u64, b: u32): u64 {\n var low = (a & 0xFFFFFFFF) * b;\n var high = (a >> 32) * b + (low >> 32);\n var overflow = (high >> 32);\n var space = clz(overflow);\n var revspace: u64 = 32 - space;\n __fixmulShift += revspace;\n return (high << space | (low & 0xFFFFFFFF) >> revspace) + (low << space >> 31 & 1);\n}\n\n// @ts-ignore: decorator\n@inline\nfunction pow10(n: i32): f64 {\n // argument `n` should bounds in [0, 22] range\n return load(POWERS10 + (n << alignof()));\n}\n","import { Math as JSMath } from \"./bindings/dom\";\nexport { JSMath };\n\nimport {\n pow_lut, exp_lut, exp2_lut, log_lut, log2_lut,\n powf_lut, expf_lut, exp2f_lut, logf_lut, log2f_lut\n} from \"./util/math\";\n\nimport {\n abs as builtin_abs,\n ceil as builtin_ceil,\n clz as builtin_clz,\n copysign as builtin_copysign,\n floor as builtin_floor,\n max as builtin_max,\n min as builtin_min,\n sqrt as builtin_sqrt,\n trunc as builtin_trunc\n} from \"./builtins\";\n\n// SUN COPYRIGHT NOTICE\n//\n// Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.\n// Developed at SunPro, a Sun Microsystems, Inc. business.\n// Permission to use, copy, modify, and distribute this software\n// is freely granted, provided that this notice is preserved.\n//\n// Applies to all functions marked with a comment referring here.\n\n/** @internal */\n// @ts-ignore: decorator\n@lazy var rempio2_y0: f64, rempio2_y1: f64, res128_hi: u64;\n\n/** @internal */\n// @ts-ignore: decorator\n@lazy @inline const PIO2_TABLE = memory.data([\n 0x00000000A2F9836E, 0x4E441529FC2757D1, 0xF534DDC0DB629599, 0x3C439041FE5163AB,\n 0xDEBBC561B7246E3A, 0x424DD2E006492EEA, 0x09D1921CFE1DEB1C, 0xB129A73EE88235F5,\n 0x2EBB4484E99C7026, 0xB45F7E413991D639, 0x835339F49C845F8B, 0xBDF9283B1FF897FF,\n 0xDE05980FEF2F118B, 0x5A0A6D1F6D367ECF, 0x27CB09B74F463F66, 0x9E5FEA2D7527BAC7,\n 0xEBE5F17B3D0739F7, 0x8A5292EA6BFB5FB1, 0x1F8D5D0856033046, 0xFC7B6BABF0CFBC20,\n 0x9AF4361DA9E39161, 0x5EE61B086599855F, 0x14A068408DFFD880, 0x4D73273106061557\n]);\n\n/** @internal */\nfunction R(z: f64): f64 { // Rational approximation of (asin(x)-x)/x^3\n const // see: musl/src/math/asin.c and SUN COPYRIGHT NOTICE above\n pS0 = reinterpret(0x3FC5555555555555), // 1.66666666666666657415e-01\n pS1 = reinterpret(0xBFD4D61203EB6F7D), // -3.25565818622400915405e-01\n pS2 = reinterpret(0x3FC9C1550E884455), // 2.01212532134862925881e-01\n pS3 = reinterpret(0xBFA48228B5688F3B), // -4.00555345006794114027e-02\n pS4 = reinterpret(0x3F49EFE07501B288), // 7.91534994289814532176e-04\n pS5 = reinterpret(0x3F023DE10DFDF709), // 3.47933107596021167570e-05\n qS1 = reinterpret(0xC0033A271C8A2D4B), // -2.40339491173441421878e+00\n qS2 = reinterpret(0x40002AE59C598AC8), // 2.02094576023350569471e+00\n qS3 = reinterpret(0xBFE6066C1B8D0159), // -6.88283971605453293030e-01\n qS4 = reinterpret(0x3FB3B8C5B12E9282); // 7.70381505559019352791e-02\n\n var p = z * (pS0 + z * (pS1 + z * (pS2 + z * (pS3 + z * (pS4 + z * pS5)))));\n var q = 1.0 + z * (qS1 + z * (qS2 + z * (qS3 + z * qS4)));\n return p / q;\n}\n\n/** @internal */\n// @ts-ignore: decorator\n@inline\nfunction expo2(x: f64, sign: f64): f64 { // exp(x)/2 for x >= log(DBL_MAX)\n const // see: musl/src/math/__expo2.c\n k = 2043,\n kln2 = reinterpret(0x40962066151ADD8B); // 0x1.62066151add8bp+10\n var scale = reinterpret(((0x3FF + k / 2) << 20) << 32);\n // in directed rounding correct sign before rounding or overflow is important\n return NativeMath.exp(x - kln2) * (sign * scale) * scale;\n}\n\n/** @internal */\n/* Helper function to eventually get bits of π/2 * |x|\n *\n * y = π/4 * (frac << clz(frac) >> 11)\n * return clz(frac)\n *\n * Right shift 11 bits to make upper half fit in `double`\n */\n// @ts-ignore: decorator\n@inline\nfunction pio2_right(q0: u64, q1: u64): u64 { // see: jdh8/metallic/blob/master/src/math/double/rem_pio2.c\n // Bits of π/4\n const p0: u64 = 0xC4C6628B80DC1CD1;\n const p1: u64 = 0xC90FDAA22168C234;\n\n const Ox1p_64 = reinterpret(0x3BF0000000000000); // 0x1p-64\n const Ox1p_75 = reinterpret(0x3B40000000000000); // 0x1p-75\n\n var shift = clz(q1);\n\n q1 = q1 << shift | q0 >> (64 - shift);\n q0 <<= shift;\n\n var lo = umuldi(p1, q1);\n var hi = res128_hi;\n\n var ahi = hi >> 11;\n var alo = lo >> 11 | hi << 53;\n var blo = (Ox1p_75 * p0 * q1 + Ox1p_75 * p1 * q0);\n\n rempio2_y0 = (ahi + u64(lo < blo));\n rempio2_y1 = Ox1p_64 * (alo + blo);\n\n return shift;\n}\n\n/** @internal */\n// @ts-ignore: decorator\n@inline\nfunction umuldi(u: u64, v: u64): u64 {\n var u1: u64 , v1: u64, w0: u64, w1: u64, t: u64;\n\n u1 = u & 0xFFFFFFFF;\n v1 = v & 0xFFFFFFFF;\n\n u >>= 32;\n v >>= 32;\n\n t = u1 * v1;\n w0 = t & 0xFFFFFFFF;\n t = u * v1 + (t >> 32);\n w1 = t >> 32;\n t = u1 * v + (t & 0xFFFFFFFF);\n\n res128_hi = u * v + w1 + (t >> 32);\n return (t << 32) + w0;\n}\n\n/** @internal */\nfunction pio2_large_quot(x: f64, u: i64): i32 { // see: jdh8/metallic/blob/master/src/math/double/rem_pio2.c\n var magnitude = u & 0x7FFFFFFFFFFFFFFF;\n var offset = (magnitude >> 52) - 1045;\n var shift = offset & 63;\n var tblPtr = PIO2_TABLE + ((offset >> 6) << 3);\n var s0: u64, s1: u64, s2: u64;\n\n var b0 = load(tblPtr, 0 << 3);\n var b1 = load(tblPtr, 1 << 3);\n var b2 = load(tblPtr, 2 << 3);\n\n // Get 192 bits of 0x1p-31 / π with `offset` bits skipped\n if (shift) {\n let rshift = 64 - shift;\n let b3 = load(tblPtr, 3 << 3);\n s0 = b1 >> rshift | b0 << shift;\n s1 = b2 >> rshift | b1 << shift;\n s2 = b3 >> rshift | b2 << shift;\n } else {\n s0 = b0;\n s1 = b1;\n s2 = b2;\n }\n\n var significand = (u & 0x000FFFFFFFFFFFFF) | 0x0010000000000000;\n\n // First 128 bits of fractional part of x/(2π)\n var blo = umuldi(s1, significand);\n var bhi = res128_hi;\n\n var ahi = s0 * significand;\n var clo = (s2 >> 32) * (significand >> 32);\n var plo = blo + clo;\n var phi = ahi + bhi + u64(plo < clo);\n\n // r: u128 = p << 2\n var rlo = plo << 2;\n var rhi = phi << 2 | plo >> 62;\n\n // s: i128 = r >> 127\n var slo = rhi >> 63;\n var shi = slo >> 1;\n var q = (phi >> 62) - slo;\n\n var shifter = 0x3CB0000000000000 - (pio2_right(rlo ^ slo, rhi ^ shi) << 52);\n var signbit = (u ^ rhi) & 0x8000000000000000;\n var coeff = reinterpret(shifter | signbit);\n\n rempio2_y0 *= coeff;\n rempio2_y1 *= coeff;\n\n return q;\n}\n\n/** @internal */\n// @ts-ignore: decorator\n@inline\nfunction rempio2(x: f64, u: u64, sign: i32): i32 {\n const\n pio2_1 = reinterpret(0x3FF921FB54400000), // 1.57079632673412561417e+00\n pio2_1t = reinterpret(0x3DD0B4611A626331), // 6.07710050650619224932e-11\n pio2_2 = reinterpret(0x3DD0B4611A600000), // 6.07710050630396597660e-11\n pio2_2t = reinterpret(0x3BA3198A2E037073), // 2.02226624879595063154e-21\n pio2_3 = reinterpret(0x3BA3198A2E000000), // 2.02226624871116645580e-21\n pio2_3t = reinterpret(0x397B839A252049C1), // 8.47842766036889956997e-32\n invpio2 = reinterpret(0x3FE45F306DC9C883); // 0.63661977236758134308\n\n var ix = (u >> 32) & 0x7FFFFFFF;\n\n if (ASC_SHRINK_LEVEL < 1) {\n if (ix < 0x4002D97C) { // |x| < 3pi/4, special case with n=+-1\n let q = 1, z: f64, y0: f64, y1: f64;\n if (!sign) {\n z = x - pio2_1;\n if (ix != 0x3FF921FB) { // 33+53 bit pi is good enough\n y0 = z - pio2_1t;\n y1 = (z - y0) - pio2_1t;\n } else { // near pi/2, use 33+33+53 bit pi\n z -= pio2_2;\n y0 = z - pio2_2t;\n y1 = (z - y0) - pio2_2t;\n }\n } else { // negative x\n z = x + pio2_1;\n if (ix != 0x3FF921FB) { // 33+53 bit pi is good enough\n y0 = z + pio2_1t;\n y1 = (z - y0) + pio2_1t;\n } else { // near pi/2, use 33+33+53 bit pi\n z += pio2_2;\n y0 = z + pio2_2t;\n y1 = (z - y0) + pio2_2t;\n }\n q = -1;\n }\n rempio2_y0 = y0;\n rempio2_y1 = y1;\n return q;\n }\n }\n\n if (ix < 0x413921FB) { // |x| ~< 2^20*pi/2 (1647099)\n // Use precise Cody Waite scheme\n let q = nearest(x * invpio2);\n let r = x - q * pio2_1;\n let w = q * pio2_1t; // 1st round good to 85 bit\n let j = ix >> 20;\n let y0 = r - w;\n let hi = (reinterpret(y0) >> 32);\n let i = j - ((hi >> 20) & 0x7FF);\n\n if (i > 16) { // 2nd iteration needed, good to 118\n let t = r;\n w = q * pio2_2;\n r = t - w;\n w = q * pio2_2t - ((t - r) - w);\n y0 = r - w;\n hi = (reinterpret(y0) >> 32);\n i = j - ((hi >> 20) & 0x7FF);\n if (i > 49) { // 3rd iteration need, 151 bits acc\n let t = r;\n w = q * pio2_3;\n r = t - w;\n w = q * pio2_3t - ((t - r) - w);\n y0 = r - w;\n }\n }\n let y1 = (r - y0) - w;\n rempio2_y0 = y0;\n rempio2_y1 = y1;\n return q;\n }\n var q = pio2_large_quot(x, u);\n return select(-q, q, sign);\n}\n\n/** @internal */\n// @ts-ignore: decorator\n@inline\nfunction sin_kern(x: f64, y: f64, iy: i32): f64 { // see: musl/tree/src/math/__sin.c\n const\n S1 = reinterpret(0xBFC5555555555549), // -1.66666666666666324348e-01\n S2 = reinterpret(0x3F8111111110F8A6), // 8.33333333332248946124e-03\n S3 = reinterpret(0xBF2A01A019C161D5), // -1.98412698298579493134e-04\n S4 = reinterpret(0x3EC71DE357B1FE7D), // 2.75573137070700676789e-06\n S5 = reinterpret(0xBE5AE5E68A2B9CEB), // -2.50507602534068634195e-08\n S6 = reinterpret(0x3DE5D93A5ACFD57C); // 1.58969099521155010221e-10\n\n var z = x * x;\n var w = z * z;\n var r = S2 + z * (S3 + z * S4) + z * w * (S5 + z * S6);\n var v = z * x;\n if (!iy) {\n return x + v * (S1 + z * r);\n } else {\n return x - ((z * (0.5 * y - v * r) - y) - v * S1);\n }\n}\n\n/** @internal */\n// @ts-ignore: decorator\n@inline\nfunction cos_kern(x: f64, y: f64): f64 { // see: musl/tree/src/math/__cos.c\n const\n C1 = reinterpret(0x3FA555555555554C), // 4.16666666666666019037e-02\n C2 = reinterpret(0xBF56C16C16C15177), // -1.38888888888741095749e-03\n C3 = reinterpret(0x3EFA01A019CB1590), // 2.48015872894767294178e-05\n C4 = reinterpret(0xBE927E4F809C52AD), // -2.75573143513906633035e-07\n C5 = reinterpret(0x3E21EE9EBDB4B1C4), // 2.08757232129817482790e-09\n C6 = reinterpret(0xBDA8FAE9BE8838D4); // -1.13596475577881948265e-11\n\n var z = x * x;\n var w = z * z;\n var r = z * (C1 + z * (C2 + z * C3)) + w * w * (C4 + z * (C5 + z * C6));\n var hz = 0.5 * z;\n w = 1.0 - hz;\n return w + (((1.0 - w) - hz) + (z * r - x * y));\n}\n\n/** @internal */\nfunction tan_kern(x: f64, y: f64, iy: i32): f64 { // see: src/lib/msun/src/k_tan.c\n const\n T0 = reinterpret(0x3FD5555555555563), // 3.33333333333334091986e-01\n T1 = reinterpret(0x3FC111111110FE7A), // 1.33333333333201242699e-01\n T2 = reinterpret(0x3FABA1BA1BB341FE), // 5.39682539762260521377e-02\n T3 = reinterpret(0x3F9664F48406D637), // 2.18694882948595424599e-02\n T4 = reinterpret(0x3F8226E3E96E8493), // 8.86323982359930005737e-03\n T5 = reinterpret(0x3F6D6D22C9560328), // 3.59207910759131235356e-03\n T6 = reinterpret(0x3F57DBC8FEE08315), // 1.45620945432529025516e-03\n T7 = reinterpret(0x3F4344D8F2F26501), // 5.88041240820264096874e-04\n T8 = reinterpret(0x3F3026F71A8D1068), // 2.46463134818469906812e-04\n T9 = reinterpret(0x3F147E88A03792A6), // 7.81794442939557092300e-05\n T10 = reinterpret(0x3F12B80F32F0A7E9), // 7.14072491382608190305e-05\n T11 = reinterpret(0xBEF375CBDB605373), // -1.85586374855275456654e-05\n T12 = reinterpret(0x3EFB2A7074BF7AD4); // 2.59073051863633712884e-05\n\n const\n one = reinterpret(0x3FF0000000000000), // 1.00000000000000000000e+00\n pio4 = reinterpret(0x3FE921FB54442D18), // 7.85398163397448278999e-01\n pio4lo = reinterpret(0x3C81A62633145C07); // 3.06161699786838301793e-17\n\n var z: f64, r: f64, v: f64, w: f64, s: f64;\n var hx = (reinterpret(x) >> 32); // high word of x\n var ix = hx & 0x7FFFFFFF; // high word of |x|\n var big = ix >= 0x3FE59428;\n if (big) { // |x| >= 0.6744\n if (hx < 0) { x = -x, y = -y; }\n z = pio4 - x;\n w = pio4lo - y;\n x = z + w;\n y = 0.0;\n }\n z = x * x;\n w = z * z;\n r = T1 + w * (T3 + w * (T5 + w * (T7 + w * (T9 + w * T11))));\n v = z * (T2 + w * (T4 + w * (T6 + w * (T8 + w * (T10 + w * T12)))));\n s = z * x;\n r = y + z * (s * (r + v) + y);\n r += T0 * s;\n w = x + r;\n if (big) {\n v = iy;\n return (1 - ((hx >> 30) & 2)) * (v - 2.0 * (x - (w * w / (w + v) - r)));\n }\n if (iy == 1) return w;\n var a: f64, t: f64;\n z = w;\n z = reinterpret(reinterpret(z) & 0xFFFFFFFF00000000);\n v = r - (z - x); // z + v = r + x\n t = a = -one / w; // a = -1.0 / w\n t = reinterpret(reinterpret(t) & 0xFFFFFFFF00000000);\n s = one + t * z;\n return t + a * (s + t * v);\n}\n\n/** @internal */\nfunction dtoi32(x: f64): i32 {\n if (ASC_SHRINK_LEVEL > 0) {\n const inv32 = 1.0 / 4294967296;\n return (x - 4294967296 * floor(x * inv32));\n } else {\n let result = 0;\n let u = reinterpret(x);\n let e = (u >> 52) & 0x7FF;\n if (e <= 1023 + 30) {\n result = x;\n } else if (e <= 1023 + 30 + 53) {\n let v = (u & ((1 << 52) - 1)) | (1 << 52);\n v = v << e - 1023 - 52 + 32;\n result = (v >> 32);\n result = select(-result, result, u < 0);\n }\n return result;\n }\n}\n\n// @ts-ignore: decorator\n@lazy var random_seeded = false;\n\n// @ts-ignore: decorator\n@lazy var random_state0_64: u64, random_state1_64: u64;\n\n// @ts-ignore: decorator\n@lazy var random_state0_32: u32, random_state1_32: u32;\n\nfunction murmurHash3(h: u64): u64 { // Force all bits of a hash block to avalanche\n h ^= h >> 33; // see: https://github.com/aappleby/smhasher\n h *= 0xFF51AFD7ED558CCD;\n h ^= h >> 33;\n h *= 0xC4CEB9FE1A85EC53;\n h ^= h >> 33;\n return h;\n}\n\nfunction splitMix32(h: u32): u32 {\n h += 0x6D2B79F5;\n h = (h ^ (h >> 15)) * (h | 1);\n h ^= h + (h ^ (h >> 7)) * (h | 61);\n return h ^ (h >> 14);\n}\n\nexport namespace NativeMath {\n\n // @ts-ignore: decorator\n @lazy\n export const E = reinterpret(0x4005BF0A8B145769); // 2.7182818284590452354\n\n // @ts-ignore: decorator\n @lazy\n export const LN2 = reinterpret(0x3FE62E42FEFA39EF); // 0.69314718055994530942\n\n // @ts-ignore: decorator\n @lazy\n export const LN10 = reinterpret(0x40026BB1BBB55516); // 2.30258509299404568402\n\n // @ts-ignore: decorator\n @lazy\n export const LOG2E = reinterpret(0x3FF71547652B82FE); // 1.4426950408889634074\n\n // @ts-ignore: decorator\n @lazy\n export const LOG10E = reinterpret(0x3FDBCB7B1526E50E); // 0.43429448190325182765\n\n // @ts-ignore: decorator\n @lazy\n export const PI = reinterpret(0x400921FB54442D18); // 3.14159265358979323846\n\n // @ts-ignore: decorator\n @lazy\n export const SQRT1_2 = reinterpret(0x3FE6A09E667F3BCD); // 0.70710678118654752440\n\n // @ts-ignore: decorator\n @lazy\n export const SQRT2 = reinterpret(0x3FF6A09E667F3BCD); // 1.41421356237309504880\n\n // @ts-ignore: decorator\n @lazy\n export var sincos_sin: f64 = 0;\n\n // @ts-ignore: decorator\n @lazy\n export var sincos_cos: f64 = 0;\n\n // @ts-ignore: decorator\n @inline export function abs(x: f64): f64 {\n return builtin_abs(x);\n }\n\n export function acos(x: f64): f64 { // see: musl/src/math/acos.c and SUN COPYRIGHT NOTICE above\n const\n pio2_hi = reinterpret(0x3FF921FB54442D18), // 1.57079632679489655800e+00\n pio2_lo = reinterpret(0x3C91A62633145C07), // 6.12323399573676603587e-17\n Ox1p_120f = reinterpret(0x03800000);\n\n var hx = (reinterpret(x) >> 32);\n var ix = hx & 0x7FFFFFFF;\n if (ix >= 0x3FF00000) {\n let lx = reinterpret(x);\n if ((ix - 0x3FF00000 | lx) == 0) {\n if (hx < 0) return 2 * pio2_hi + Ox1p_120f;\n return 0;\n }\n return 0 / (x - x);\n }\n if (ix < 0x3FE00000) {\n if (ix <= 0x3C600000) return pio2_hi + Ox1p_120f;\n return pio2_hi - (x - (pio2_lo - x * R(x * x)));\n }\n var s: f64, w: f64, z: f64;\n if (hx < 0) {\n // z = (1.0 + x) * 0.5;\n z = 0.5 + x * 0.5;\n s = builtin_sqrt(z);\n w = R(z) * s - pio2_lo;\n return 2 * (pio2_hi - (s + w));\n }\n // z = (1.0 - x) * 0.5;\n z = 0.5 - x * 0.5;\n s = builtin_sqrt(z);\n var df = reinterpret(reinterpret(s) & 0xFFFFFFFF00000000);\n var c = (z - df * df) / (s + df);\n w = R(z) * s + c;\n return 2 * (df + w);\n }\n\n export function acosh(x: f64): f64 { // see: musl/src/math/acosh.c\n const s = reinterpret(0x3FE62E42FEFA39EF);\n var u = reinterpret(x);\n // Prevent propagation for all input values less than 1.0.\n // Note musl lib didn't fix this yet.\n if (u < 0x3FF0000000000000) return (x - x) / 0.0;\n var e = u >> 52 & 0x7FF;\n if (e < 0x3FF + 1) return log1p(x - 1 + builtin_sqrt((x - 1) * (x - 1) + 2 * (x - 1)));\n if (e < 0x3FF + 26) return log(2 * x - 1 / (x + builtin_sqrt(x * x - 1)));\n return log(x) + s;\n }\n\n export function asin(x: f64): f64 { // see: musl/src/math/asin.c and SUN COPYRIGHT NOTICE above\n const\n pio2_hi = reinterpret(0x3FF921FB54442D18), // 1.57079632679489655800e+00\n pio2_lo = reinterpret(0x3C91A62633145C07), // 6.12323399573676603587e-17\n Ox1p_120f = reinterpret(0x03800000);\n\n var hx = (reinterpret(x) >> 32);\n var ix = hx & 0x7FFFFFFF;\n if (ix >= 0x3FF00000) {\n let lx = reinterpret(x);\n if ((ix - 0x3FF00000 | lx) == 0) return x * pio2_hi + Ox1p_120f;\n return 0 / (x - x);\n }\n if (ix < 0x3FE00000) {\n if (ix < 0x3E500000 && ix >= 0x00100000) return x;\n return x + x * R(x * x);\n }\n // var z = (1.0 - builtin_abs(x)) * 0.5;\n var z = 0.5 - builtin_abs(x) * 0.5;\n var s = builtin_sqrt(z);\n var r = R(z);\n if (ix >= 0x3FEF3333) x = pio2_hi - (2 * (s + s * r) - pio2_lo);\n else {\n let f = reinterpret(reinterpret(s) & 0xFFFFFFFF00000000);\n let c = (z - f * f) / (s + f);\n x = 0.5 * pio2_hi - (2 * s * r - (pio2_lo - 2 * c) - (0.5 * pio2_hi - 2 * f));\n }\n return select(-x, x, hx < 0);\n }\n\n export function asinh(x: f64): f64 { // see: musl/src/math/asinh.c\n const c = reinterpret(0x3FE62E42FEFA39EF); // 0.693147180559945309417232121458176568\n var u = reinterpret(x);\n var e = u >> 52 & 0x7FF;\n var y = reinterpret(u & 0x7FFFFFFFFFFFFFFF);\n if (e >= 0x3FF + 26) y = log(y) + c;\n else if (e >= 0x3FF + 1) y = log(2 * y + 1 / (builtin_sqrt(y * y + 1) + y));\n else if (e >= 0x3FF - 26) y = log1p(y + y * y / (builtin_sqrt(y * y + 1) + 1));\n return builtin_copysign(y, x);\n }\n\n export function atan(x: f64): f64 { // see musl/src/math/atan.c and SUN COPYRIGHT NOTICE above\n const\n atanhi0 = reinterpret(0x3FDDAC670561BB4F), // 4.63647609000806093515e-01\n atanhi1 = reinterpret(0x3FE921FB54442D18), // 7.85398163397448278999e-01\n atanhi2 = reinterpret(0x3FEF730BD281F69B), // 9.82793723247329054082e-01\n atanhi3 = reinterpret(0x3FF921FB54442D18), // 1.57079632679489655800e+00\n atanlo0 = reinterpret(0x3C7A2B7F222F65E2), // 2.26987774529616870924e-17\n atanlo1 = reinterpret(0x3C81A62633145C07), // 3.06161699786838301793e-17\n atanlo2 = reinterpret(0x3C7007887AF0CBBD), // 1.39033110312309984516e-17\n atanlo3 = reinterpret(0x3C91A62633145C07), // 6.12323399573676603587e-17\n aT0 = reinterpret(0x3FD555555555550D), // 3.33333333333329318027e-01\n aT1 = reinterpret(0xBFC999999998EBC4), // -1.99999999998764832476e-01\n aT2 = reinterpret(0x3FC24924920083FF), // 1.42857142725034663711e-01\n aT3 = reinterpret(0xBFBC71C6FE231671), // -1.11111104054623557880e-01,\n aT4 = reinterpret(0x3FB745CDC54C206E), // 9.09088713343650656196e-02\n aT5 = reinterpret(0xBFB3B0F2AF749A6D), // -7.69187620504482999495e-02\n aT6 = reinterpret(0x3FB10D66A0D03D51), // 6.66107313738753120669e-02\n aT7 = reinterpret(0xBFADDE2D52DEFD9A), // -5.83357013379057348645e-02\n aT8 = reinterpret(0x3FA97B4B24760DEB), // 4.97687799461593236017e-02\n aT9 = reinterpret(0xBFA2B4442C6A6C2F), // -3.65315727442169155270e-02\n aT10 = reinterpret(0x3F90AD3AE322DA11), // 1.62858201153657823623e-02\n Ox1p_120f = reinterpret(0x03800000);\n\n var ix = (reinterpret(x) >> 32);\n var sx = x;\n ix &= 0x7FFFFFFF;\n var z: f64;\n if (ix >= 0x44100000) {\n if (isNaN(x)) return x;\n z = atanhi3 + Ox1p_120f;\n return builtin_copysign(z, sx);\n }\n var id: i32;\n if (ix < 0x3FDC0000) {\n if (ix < 0x3E400000) return x;\n id = -1;\n } else {\n x = builtin_abs(x);\n if (ix < 0x3FF30000) {\n if (ix < 0x3FE60000) {\n id = 0;\n x = (2.0 * x - 1.0) / (2.0 + x);\n } else {\n id = 1;\n x = (x - 1.0) / (x + 1.0);\n }\n } else {\n if (ix < 0x40038000) {\n id = 2;\n x = (x - 1.5) / (1.0 + 1.5 * x);\n } else {\n id = 3;\n x = -1.0 / x;\n }\n }\n }\n z = x * x;\n var w = z * z;\n var s1 = z * (aT0 + w * (aT2 + w * (aT4 + w * (aT6 + w * (aT8 + w * aT10)))));\n var s2 = w * (aT1 + w * (aT3 + w * (aT5 + w * (aT7 + w * aT9))));\n var s3 = x * (s1 + s2);\n if (id < 0) return x - s3;\n switch (id) {\n case 0: { z = atanhi0 - ((s3 - atanlo0) - x); break; }\n case 1: { z = atanhi1 - ((s3 - atanlo1) - x); break; }\n case 2: { z = atanhi2 - ((s3 - atanlo2) - x); break; }\n case 3: { z = atanhi3 - ((s3 - atanlo3) - x); break; }\n default: unreachable();\n }\n return builtin_copysign(z, sx);\n }\n\n export function atanh(x: f64): f64 { // see: musl/src/math/atanh.c\n var u = reinterpret(x);\n var e = u >> 52 & 0x7FF;\n var y = builtin_abs(x);\n if (e < 0x3FF - 1) {\n if (e >= 0x3FF - 32) y = 0.5 * log1p(2 * y + 2 * y * y / (1 - y));\n } else {\n y = 0.5 * log1p(2 * (y / (1 - y)));\n }\n return builtin_copysign(y, x);\n }\n\n export function atan2(y: f64, x: f64): f64 { // see: musl/src/math/atan2.c and SUN COPYRIGHT NOTICE above\n const pi_lo = reinterpret(0x3CA1A62633145C07); // 1.2246467991473531772E-16\n if (isNaN(x) || isNaN(y)) return x + y;\n var u = reinterpret(x);\n var ix = (u >> 32);\n var lx = u;\n u = reinterpret(y);\n var iy = (u >> 32);\n var ly = u;\n if ((ix - 0x3FF00000 | lx) == 0) return atan(y);\n var m = ((iy >> 31) & 1) | ((ix >> 30) & 2);\n ix = ix & 0x7FFFFFFF;\n iy = iy & 0x7FFFFFFF;\n if ((iy | ly) == 0) {\n switch (m) {\n case 0:\n case 1: return y;\n case 2: return PI;\n case 3: return -PI;\n }\n }\n if ((ix | lx) == 0) return m & 1 ? -PI / 2 : PI / 2;\n if (ix == 0x7FF00000) {\n if (iy == 0x7FF00000) {\n let t = m & 2 ? 3 * PI / 4 : PI / 4;\n return m & 1 ? -t : t;\n } else {\n let t = m & 2 ? PI : 0;\n return m & 1 ? -t : t;\n }\n }\n var z: f64;\n if (ix + (64 << 20) < iy || iy == 0x7FF00000) return m & 1 ? -PI / 2 : PI / 2;\n if ((m & 2) && iy + (64 << 20) < ix) z = 0;\n else z = atan(builtin_abs(y / x));\n switch (m) {\n case 0: return z;\n case 1: return -z;\n case 2: return PI - (z - pi_lo);\n case 3: return (z - pi_lo) - PI;\n }\n unreachable();\n return 0;\n }\n\n export function cbrt(x: f64): f64 { // see: musl/src/math/cbrt.c and SUN COPYRIGHT NOTICE above\n const\n B1 = 715094163,\n B2 = 696219795,\n P0 = reinterpret(0x3FFE03E60F61E692), // 1.87595182427177009643\n P1 = reinterpret(0xBFFE28E092F02420), // -1.88497979543377169875\n P2 = reinterpret(0x3FF9F1604A49D6C2), // 1.621429720105354466140\n P3 = reinterpret(0xBFE844CBBEE751D9), // -0.758397934778766047437\n P4 = reinterpret(0x3FC2B000D4E4EDD7), // 0.145996192886612446982\n Ox1p54 = reinterpret(0x4350000000000000); // 0x1p54\n\n var u = reinterpret(x);\n var hx = (u >> 32) & 0x7FFFFFFF;\n if (hx >= 0x7FF00000) return x + x;\n if (hx < 0x00100000) {\n u = reinterpret(x * Ox1p54);\n hx = (u >> 32) & 0x7FFFFFFF;\n if (hx == 0) return x;\n hx = hx / 3 + B2;\n } else {\n hx = hx / 3 + B1;\n }\n u &= 1 << 63;\n u |= hx << 32;\n var t = reinterpret(u);\n var r = (t * t) * (t / x);\n t = t * ((P0 + r * (P1 + r * P2)) + ((r * r) * r) * (P3 + r * P4));\n t = reinterpret((reinterpret(t) + 0x80000000) & 0xFFFFFFFFC0000000);\n var s = t * t;\n r = x / s;\n r = (r - t) / (2 * t + r);\n t = t + t * r;\n return t;\n }\n\n // @ts-ignore: decorator\n @inline\n export function ceil(x: f64): f64 {\n return builtin_ceil(x);\n }\n\n export function clz32(x: f64): f64 {\n if (!isFinite(x)) return 32;\n /*\n * Wasm (MVP) and JS have different approaches for double->int conversions.\n *\n * For emulate JS conversion behavior and avoid trapping from wasm we should modulate by MAX_INT\n * our float-point arguments before actual convertion to integers.\n */\n return builtin_clz(dtoi32(x));\n }\n\n export function cos(x: f64): f64 { // see: musl/src/math/cos.c\n var u = reinterpret(x);\n var ux = u32(u >> 32);\n var sign = ux >> 31;\n\n ux &= 0x7FFFFFFF;\n\n // |x| ~< pi/4\n if (ux <= 0x3FE921FB) {\n if (ux < 0x3E46A09E) { // |x| < 2**-27 * sqrt(2)\n return 1.0;\n }\n return cos_kern(x, 0);\n }\n\n // sin(Inf or NaN) is NaN\n if (ux >= 0x7FF00000) return x - x;\n\n // argument reduction needed\n var n = rempio2(x, u, sign);\n var y0 = rempio2_y0;\n var y1 = rempio2_y1;\n\n x = n & 1 ? sin_kern(y0, y1, 1) : cos_kern(y0, y1);\n return (n + 1) & 2 ? -x : x;\n }\n\n export function cosh(x: f64): f64 { // see: musl/src/math/cosh.c\n var u = reinterpret(x);\n u &= 0x7FFFFFFFFFFFFFFF;\n x = reinterpret(u);\n var w = (u >> 32);\n var t: f64;\n if (w < 0x3FE62E42) {\n if (w < 0x3FF00000 - (26 << 20)) return 1;\n t = expm1(x);\n // return 1 + t * t / (2 * (1 + t));\n return 1 + t * t / (2 + 2 * t);\n }\n if (w < 0x40862E42) {\n t = exp(x);\n return 0.5 * (t + 1 / t);\n }\n t = expo2(x, 1);\n return t;\n }\n\n export function exp(x: f64): f64 { // see: musl/src/math/exp.c and SUN COPYRIGHT NOTICE above\n if (ASC_SHRINK_LEVEL < 1) {\n return exp_lut(x);\n } else {\n const\n ln2hi = reinterpret(0x3FE62E42FEE00000), // 6.93147180369123816490e-01\n ln2lo = reinterpret(0x3DEA39EF35793C76), // 1.90821492927058770002e-10\n invln2 = reinterpret(0x3FF71547652B82FE), // 1.44269504088896338700e+00\n P1 = reinterpret(0x3FC555555555553E), // 1.66666666666666019037e-01\n P2 = reinterpret(0xBF66C16C16BEBD93), // -2.77777777770155933842e-03\n P3 = reinterpret(0x3F11566AAF25DE2C), // 6.61375632143793436117e-05\n P4 = reinterpret(0xBEBBBD41C5D26BF1), // -1.65339022054652515390e-06\n P5 = reinterpret(0x3E66376972BEA4D0), // 4.13813679705723846039e-08\n overflow = reinterpret(0x40862E42FEFA39EF), // 709.782712893383973096\n underflow = reinterpret(0xC0874910D52D3051), // -745.13321910194110842\n Ox1p1023 = reinterpret(0x7FE0000000000000); // 0x1p1023\n\n let hx = u32(reinterpret(x) >> 32);\n let sign = hx >> 31;\n hx &= 0x7FFFFFFF;\n if (hx >= 0x4086232B) {\n if (isNaN(x)) return x;\n if (x > overflow) return x * Ox1p1023;\n if (x < underflow) return 0;\n }\n let hi: f64, lo: f64 = 0;\n let k = 0;\n if (hx > 0x3FD62E42) {\n if (hx >= 0x3FF0A2B2) {\n k = i32(invln2 * x + builtin_copysign(0.5, x));\n } else {\n k = 1 - (sign << 1);\n }\n hi = x - k * ln2hi;\n lo = k * ln2lo;\n x = hi - lo;\n } else if (hx > 0x3E300000) {\n hi = x;\n } else return 1.0 + x;\n let xs = x * x;\n // var c = x - xp2 * (P1 + xp2 * (P2 + xp2 * (P3 + xp2 * (P4 + xp2 * P5))));\n let xq = xs * xs;\n let c = x - (xs * P1 + xq * ((P2 + xs * P3) + xq * (P4 + xs * P5)));\n let y = 1.0 + (x * c / (2 - c) - lo + hi);\n return k == 0 ? y : scalbn(y, k);\n }\n }\n\n export function exp2(x: f64): f64 {\n return exp2_lut(x);\n }\n\n export function expm1(x: f64): f64 { // see: musl/src/math/expm1.c and SUN COPYRIGHT NOTICE above\n const\n o_threshold = reinterpret(0x40862E42FEFA39EF), // 7.09782712893383973096e+02\n ln2_hi = reinterpret(0x3FE62E42FEE00000), // 6.93147180369123816490e-01\n ln2_lo = reinterpret(0x3DEA39EF35793C76), // 1.90821492927058770002e-10\n invln2 = reinterpret(0x3FF71547652B82FE), // 1.44269504088896338700e+00\n Q1 = reinterpret(0xBFA11111111110F4), // -3.33333333333331316428e-02\n Q2 = reinterpret(0x3F5A01A019FE5585), // 1.58730158725481460165e-03\n Q3 = reinterpret(0xBF14CE199EAADBB7), // -7.93650757867487942473e-05\n Q4 = reinterpret(0x3ED0CFCA86E65239), // 4.00821782732936239552e-06\n Q5 = reinterpret(0xBE8AFDB76E09C32D), // -2.01099218183624371326e-07\n Ox1p1023 = reinterpret(0x7FE0000000000000); // 0x1p1023\n\n var u = reinterpret(x);\n var hx = u32(u >> 32) & 0x7FFFFFFF;\n var sign = u32(u >> 63);\n var k = 0;\n if (hx >= 0x4043687A) {\n if (isNaN(x)) return x;\n if (sign) return -1;\n if (x > o_threshold) return x * Ox1p1023;\n }\n var c = 0.0, t: f64;\n if (hx > 0x3FD62E42) {\n k = select(\n 1 - (sign << 1),\n i32(invln2 * x + builtin_copysign(0.5, x)),\n hx < 0x3FF0A2B2\n );\n t = k;\n let hi = x - t * ln2_hi;\n let lo = t * ln2_lo;\n x = hi - lo;\n c = (hi - x) - lo;\n } else if (hx < 0x3C900000) return x;\n var hfx = 0.5 * x;\n var hxs = x * hfx;\n // var r1 = 1.0 + hxs * (Q1 + hxs * (Q2 + hxs * (Q3 + hxs * (Q4 + hxs * Q5))));\n var hxq = hxs * hxs;\n var r1 = (1.0 + hxs * Q1) + hxq * ((Q2 + hxs * Q3) + hxq * (Q4 + hxs * Q5));\n t = 3.0 - r1 * hfx;\n var e = hxs * ((r1 - t) / (6.0 - x * t));\n if (k == 0) return x - (x * e - hxs);\n e = x * (e - c) - c;\n e -= hxs;\n if (k == -1) return 0.5 * (x - e) - 0.5;\n if (k == 1) {\n if (x < -0.25) return -2.0 * (e - (x + 0.5));\n return 1.0 + 2.0 * (x - e);\n }\n u = (0x3FF + k) << 52;\n var twopk = reinterpret(u);\n var y: f64;\n if (k < 0 || k > 56) {\n y = x - e + 1.0;\n if (k == 1024) y = y * 2.0 * Ox1p1023;\n else y = y * twopk;\n return y - 1.0;\n }\n u = (0x3FF - k) << 52;\n y = reinterpret(u);\n if (k < 20) y = (1 - y) - e;\n else y = 1 - (e + y);\n return (x + y) * twopk;\n }\n\n // @ts-ignore: decorator\n @inline\n export function floor(x: f64): f64 {\n return builtin_floor(x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function fround(x: f64): f64 {\n return x;\n }\n\n export function hypot(x: f64, y: f64): f64 { // see: musl/src/math/hypot.c\n const\n SPLIT = reinterpret(0x41A0000000000000) + 1, // 0x1p27 + 1\n Ox1p700 = reinterpret(0x6BB0000000000000),\n Ox1p_700 = reinterpret(0x1430000000000000);\n\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n ux &= 0x7FFFFFFFFFFFFFFF;\n uy &= 0x7FFFFFFFFFFFFFFF;\n if (ux < uy) {\n let ut = ux;\n ux = uy;\n uy = ut;\n }\n var ex = i32(ux >> 52);\n var ey = i32(uy >> 52);\n y = reinterpret(uy);\n if (ey == 0x7FF) return y;\n x = reinterpret(ux);\n if (ex == 0x7FF || uy == 0) return x;\n if (ex - ey > 64) return x + y;\n var z = 1.0;\n if (ex > 0x3FF + 510) {\n z = Ox1p700;\n x *= Ox1p_700;\n y *= Ox1p_700;\n } else if (ey < 0x3FF - 450) {\n z = Ox1p_700;\n x *= Ox1p700;\n y *= Ox1p700;\n }\n var c = x * SPLIT;\n var h = x - c + c;\n var l = x - h;\n var hx = x * x;\n var lx = h * h - hx + (2 * h + l) * l;\n c = y * SPLIT;\n h = y - c + c;\n l = y - h;\n var hy = y * y;\n var ly = h * h - hy + (2 * h + l) * l;\n return z * builtin_sqrt(ly + lx + hy + hx);\n }\n\n export function imul(x: f64, y: f64): f64 {\n /*\n * Wasm (MVP) and JS have different approaches for double->int conversions.\n *\n * For emulate JS conversion behavior and avoid trapping from wasm we should modulate by MAX_INT\n * our float-point arguments before actual convertion to integers.\n */\n if (!isFinite(x + y)) return 0;\n return dtoi32(x) * dtoi32(y);\n }\n\n export function log(x: f64): f64 { // see: musl/src/math/log.c and SUN COPYRIGHT NOTICE above\n if (ASC_SHRINK_LEVEL < 1) {\n return log_lut(x);\n } else {\n const\n ln2_hi = reinterpret(0x3FE62E42FEE00000), // 6.93147180369123816490e-01\n ln2_lo = reinterpret(0x3DEA39EF35793C76), // 1.90821492927058770002e-10\n Lg1 = reinterpret(0x3FE5555555555593), // 6.666666666666735130e-01\n Lg2 = reinterpret(0x3FD999999997FA04), // 3.999999999940941908e-01\n Lg3 = reinterpret(0x3FD2492494229359), // 2.857142874366239149e-01\n Lg4 = reinterpret(0x3FCC71C51D8E78AF), // 2.222219843214978396e-01\n Lg5 = reinterpret(0x3FC7466496CB03DE), // 1.818357216161805012e-01\n Lg6 = reinterpret(0x3FC39A09D078C69F), // 1.531383769920937332e-01\n Lg7 = reinterpret(0x3FC2F112DF3E5244), // 1.479819860511658591e-01\n Ox1p54 = reinterpret(0x4350000000000000); // 0x1p54\n\n let u = reinterpret(x);\n let hx = u32(u >> 32);\n let k = 0;\n let sign = hx >> 31;\n if (sign || hx < 0x00100000) {\n if (u << 1 == 0) return -1 / (x * x);\n if (sign) return (x - x) / 0.0;\n k -= 54;\n x *= Ox1p54;\n u = reinterpret(x);\n hx = u32(u >> 32);\n } else if (hx >= 0x7FF00000) {\n return x;\n } else if (hx == 0x3FF00000 && u << 32 == 0) {\n return 0;\n }\n hx += 0x3FF00000 - 0x3FE6A09E;\n k += (hx >> 20) - 0x3FF;\n hx = (hx & 0x000FFFFF) + 0x3FE6A09E;\n u = hx << 32 | (u & 0xFFFFFFFF);\n x = reinterpret(u);\n let f = x - 1.0;\n let hfsq = 0.5 * f * f;\n let s = f / (2.0 + f);\n let z = s * s;\n let w = z * z;\n let t1 = w * (Lg2 + w * (Lg4 + w * Lg6));\n let t2 = z * (Lg1 + w * (Lg3 + w * (Lg5 + w * Lg7)));\n let r = t2 + t1;\n let dk = k;\n return s * (hfsq + r) + dk * ln2_lo - hfsq + f + dk * ln2_hi;\n }\n }\n\n export function log10(x: f64): f64 { // see: musl/src/math/log10.c and SUN COPYRIGHT NOTICE above\n const\n ivln10hi = reinterpret(0x3FDBCB7B15200000), // 4.34294481878168880939e-01\n ivln10lo = reinterpret(0x3DBB9438CA9AADD5), // 2.50829467116452752298e-11\n log10_2hi = reinterpret(0x3FD34413509F6000), // 3.01029995663611771306e-01\n log10_2lo = reinterpret(0x3D59FEF311F12B36), // 3.69423907715893078616e-13\n Lg1 = reinterpret(0x3FE5555555555593), // 6.666666666666735130e-01\n Lg2 = reinterpret(0x3FD999999997FA04), // 3.999999999940941908e-01\n Lg3 = reinterpret(0x3FD2492494229359), // 2.857142874366239149e-01\n Lg4 = reinterpret(0x3FCC71C51D8E78AF), // 2.222219843214978396e-01\n Lg5 = reinterpret(0x3FC7466496CB03DE), // 1.818357216161805012e-01\n Lg6 = reinterpret(0x3FC39A09D078C69F), // 1.531383769920937332e-01\n Lg7 = reinterpret(0x3FC2F112DF3E5244), // 1.479819860511658591e-01\n Ox1p54 = reinterpret(0x4350000000000000); // 0x1p54\n\n var u = reinterpret(x);\n var hx = u32(u >> 32);\n var k = 0;\n var sign = hx >> 31;\n if (sign || hx < 0x00100000) {\n if (u << 1 == 0) return -1 / (x * x);\n if (sign) return (x - x) / 0.0;\n k -= 54;\n x *= Ox1p54;\n u = reinterpret(x);\n hx = u32(u >> 32);\n } else if (hx >= 0x7FF00000) {\n return x;\n } else if (hx == 0x3FF00000 && u << 32 == 0) {\n return 0;\n }\n hx += 0x3FF00000 - 0x3FE6A09E;\n k += i32(hx >> 20) - 0x3FF;\n hx = (hx & 0x000FFFFF) + 0x3FE6A09E;\n u = hx << 32 | (u & 0xFFFFFFFF);\n x = reinterpret(u);\n var f = x - 1.0;\n var hfsq = 0.5 * f * f;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * (Lg4 + w * Lg6));\n var t2 = z * (Lg1 + w * (Lg3 + w * (Lg5 + w * Lg7)));\n var r = t2 + t1;\n var hi = f - hfsq;\n u = reinterpret(hi);\n u &= 0xFFFFFFFF00000000;\n hi = reinterpret(u);\n var lo = f - hi - hfsq + s * (hfsq + r);\n var val_hi = hi * ivln10hi;\n var dk = k;\n var y = dk * log10_2hi;\n var val_lo = dk * log10_2lo + (lo + hi) * ivln10lo + lo * ivln10hi;\n w = y + val_hi;\n val_lo += (y - w) + val_hi;\n return val_lo + w;\n }\n\n export function log1p(x: f64): f64 { // see: musl/src/math/log1p.c and SUN COPYRIGHT NOTICE above\n const\n ln2_hi = reinterpret(0x3FE62E42FEE00000), // 6.93147180369123816490e-01\n ln2_lo = reinterpret(0x3DEA39EF35793C76), // 1.90821492927058770002e-10\n Lg1 = reinterpret(0x3FE5555555555593), // 6.666666666666735130e-01\n Lg2 = reinterpret(0x3FD999999997FA04), // 3.999999999940941908e-01\n Lg3 = reinterpret(0x3FD2492494229359), // 2.857142874366239149e-01\n Lg4 = reinterpret(0x3FCC71C51D8E78AF), // 2.222219843214978396e-01\n Lg5 = reinterpret(0x3FC7466496CB03DE), // 1.818357216161805012e-01\n Lg6 = reinterpret(0x3FC39A09D078C69F), // 1.531383769920937332e-01\n Lg7 = reinterpret(0x3FC2F112DF3E5244); // 1.479819860511658591e-01\n\n var u = reinterpret(x);\n var hx = u32(u >> 32);\n var k = 1;\n var c = 0.0, f = 0.0;\n if (hx < 0x3FDA827A || bool(hx >> 31)) {\n if (hx >= 0xBFF00000) {\n if (x == -1) return x / 0.0;\n return (x - x) / 0.0;\n }\n if (hx << 1 < 0x3CA00000 << 1) return x;\n if (hx <= 0xBFD2BEC4) {\n k = 0;\n c = 0;\n f = x;\n }\n } else if (hx >= 0x7FF00000) return x;\n if (k) {\n u = reinterpret(1 + x);\n let hu = u32(u >> 32);\n hu += 0x3FF00000 - 0x3FE6A09E;\n k = i32(hu >> 20) - 0x3FF;\n if (k < 54) {\n let uf = reinterpret(u);\n c = k >= 2 ? 1 - (uf - x) : x - (uf - 1);\n c /= uf;\n } else c = 0;\n hu = (hu & 0x000FFFFF) + 0x3FE6A09E;\n u = hu << 32 | (u & 0xFFFFFFFF);\n f = reinterpret(u) - 1;\n }\n var hfsq = 0.5 * f * f;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * (Lg4 + w * Lg6));\n var t2 = z * (Lg1 + w * (Lg3 + w * (Lg5 + w * Lg7)));\n var r = t2 + t1;\n var dk = k;\n return s * (hfsq + r) + (dk * ln2_lo + c) - hfsq + f + dk * ln2_hi;\n }\n\n export function log2(x: f64): f64 { // see: musl/src/math/log2.c and SUN COPYRIGHT NOTICE above\n if (ASC_SHRINK_LEVEL < 1) {\n return log2_lut(x);\n } else {\n const\n ivln2hi = reinterpret(0x3FF7154765200000), // 1.44269504072144627571e+00\n ivln2lo = reinterpret(0x3DE705FC2EEFA200), // 1.67517131648865118353e-10\n Lg1 = reinterpret(0x3FE5555555555593), // 6.666666666666735130e-01\n Lg2 = reinterpret(0x3FD999999997FA04), // 3.999999999940941908e-01\n Lg3 = reinterpret(0x3FD2492494229359), // 2.857142874366239149e-01\n Lg4 = reinterpret(0x3FCC71C51D8E78AF), // 2.222219843214978396e-01\n Lg5 = reinterpret(0x3FC7466496CB03DE), // 1.818357216161805012e-01\n Lg6 = reinterpret(0x3FC39A09D078C69F), // 1.531383769920937332e-01\n Lg7 = reinterpret(0x3FC2F112DF3E5244), // 1.479819860511658591e-01\n Ox1p54 = reinterpret(0x4350000000000000); // 1p54\n\n let u = reinterpret(x);\n let hx = u32(u >> 32);\n let k = 0;\n let sign = hx >> 31;\n if (sign || hx < 0x00100000) {\n if (u << 1 == 0) return -1 / (x * x);\n if (sign) return (x - x) / 0.0;\n k -= 54;\n x *= Ox1p54;\n u = reinterpret(x);\n hx = u32(u >> 32);\n } else if (hx >= 0x7FF00000) {\n return x;\n } else if (hx == 0x3FF00000 && u << 32 == 0) {\n return 0;\n }\n hx += 0x3FF00000 - 0x3FE6A09E;\n k += i32(hx >> 20) - 0x3FF;\n hx = (hx & 0x000FFFFF) + 0x3FE6A09E;\n u = hx << 32 | (u & 0xFFFFFFFF);\n x = reinterpret(u);\n let f = x - 1.0;\n let hfsq = 0.5 * f * f;\n let s = f / (2.0 + f);\n let z = s * s;\n let w = z * z;\n let t1 = w * (Lg2 + w * (Lg4 + w * Lg6));\n let t2 = z * (Lg1 + w * (Lg3 + w * (Lg5 + w * Lg7)));\n let r = t2 + t1;\n let hi = f - hfsq;\n u = reinterpret(hi);\n u &= 0xFFFFFFFF00000000;\n hi = reinterpret(u);\n let lo = f - hi - hfsq + s * (hfsq + r);\n let val_hi = hi * ivln2hi;\n let val_lo = (lo + hi) * ivln2lo + lo * ivln2hi;\n let y = k;\n w = y + val_hi;\n val_lo += (y - w) + val_hi;\n val_hi = w;\n return val_lo + val_hi;\n }\n }\n\n // @ts-ignore: decorator\n @inline\n export function max(value1: f64, value2: f64): f64 {\n return builtin_max(value1, value2);\n }\n\n // @ts-ignore: decorator\n @inline\n export function min(value1: f64, value2: f64): f64 {\n return builtin_min(value1, value2);\n }\n\n export function pow(x: f64, y: f64): f64 { // see: musl/src/math/pow.c and SUN COPYRIGHT NOTICE above\n // TODO: remove this fast pathes after introduced own mid-end IR with \"stdlib call simplify\" transforms\n if (builtin_abs(y) <= 2) {\n if (y == 2.0) return x * x;\n if (y == 0.5) {\n return select(\n builtin_abs(builtin_sqrt(x)),\n Infinity,\n x != -Infinity\n );\n }\n if (y == -1.0) return 1 / x;\n if (y == 1.0) return x;\n if (y == 0.0) return 1.0;\n }\n if (ASC_SHRINK_LEVEL < 1) {\n return pow_lut(x, y);\n } else {\n const\n dp_h1 = reinterpret(0x3FE2B80340000000), // 5.84962487220764160156e-01\n dp_l1 = reinterpret(0x3E4CFDEB43CFD006), // 1.35003920212974897128e-08\n two53 = reinterpret(0x4340000000000000), // 9007199254740992.0\n huge = reinterpret(0x7E37E43C8800759C), // 1e+300\n tiny = reinterpret(0x01A56E1FC2F8F359), // 1e-300\n L1 = reinterpret(0x3FE3333333333303), // 5.99999999999994648725e-01\n L2 = reinterpret(0x3FDB6DB6DB6FABFF), // 4.28571428578550184252e-01\n L3 = reinterpret(0x3FD55555518F264D), // 3.33333329818377432918e-01\n L4 = reinterpret(0x3FD17460A91D4101), // 2.72728123808534006489e-01\n L5 = reinterpret(0x3FCD864A93C9DB65), // 2.30660745775561754067e-01\n L6 = reinterpret(0x3FCA7E284A454EEF), // 2.06975017800338417784e-01\n P1 = reinterpret(0x3FC555555555553E), // 1.66666666666666019037e-01\n P2 = reinterpret(0xBF66C16C16BEBD93), // -2.77777777770155933842e-03\n P3 = reinterpret(0x3F11566AAF25DE2C), // 6.61375632143793436117e-05\n P4 = reinterpret(0xBEBBBD41C5D26BF1), // -1.65339022054652515390e-06\n P5 = reinterpret(0x3E66376972BEA4D0), // 4.13813679705723846039e-08\n lg2 = reinterpret(0x3FE62E42FEFA39EF), // 6.93147180559945286227e-01\n lg2_h = reinterpret(0x3FE62E4300000000), // 6.93147182464599609375e-01\n lg2_l = reinterpret(0xBE205C610CA86C39), // -1.90465429995776804525e-09\n ovt = reinterpret(0x3C971547652B82FE), // 8.0085662595372944372e-017\n cp = reinterpret(0x3FEEC709DC3A03FD), // 9.61796693925975554329e-01\n cp_h = reinterpret(0x3FEEC709E0000000), // 9.61796700954437255859e-01\n cp_l = reinterpret(0xBE3E2FE0145B01F5), // -7.02846165095275826516e-09\n ivln2 = reinterpret(0x3FF71547652B82FE), // 1.44269504088896338700e+00\n ivln2_h = reinterpret(0x3FF7154760000000), // 1.44269502162933349609e+00\n ivln2_l = reinterpret(0x3E54AE0BF85DDF44), // 1.92596299112661746887e-08\n inv3 = reinterpret(0x3FD5555555555555); // 0.3333333333333333333333\n\n let u_ = reinterpret(x);\n let hx = i32(u_ >> 32);\n let lx = u_;\n u_ = reinterpret(y);\n let hy = i32(u_ >> 32);\n let ly = u_;\n let ix = hx & 0x7FFFFFFF;\n let iy = hy & 0x7FFFFFFF;\n if ((iy | ly) == 0) return 1.0; // x**0 = 1, even if x is NaN\n // if (hx == 0x3FF00000 && lx == 0) return 1.0; // C: 1**y = 1, even if y is NaN, JS: NaN\n if ( // NaN if either arg is NaN\n ix > 0x7FF00000 || (ix == 0x7FF00000 && lx != 0) ||\n iy > 0x7FF00000 || (iy == 0x7FF00000 && ly != 0)\n ) return x + y;\n let yisint = 0, k: i32;\n if (hx < 0) {\n if (iy >= 0x43400000) yisint = 2;\n else if (iy >= 0x3FF00000) {\n k = (iy >> 20) - 0x3FF;\n let offset = select(52, 20, k > 20) - k;\n let Ly = select(ly, iy, k > 20);\n let jj = Ly >> offset;\n if ((jj << offset) == Ly) yisint = 2 - (jj & 1);\n }\n }\n if (ly == 0) {\n if (iy == 0x7FF00000) { // y is +-inf\n if (((ix - 0x3FF00000) | lx) == 0) return NaN; // C: (-1)**+-inf is 1, JS: NaN\n else if (ix >= 0x3FF00000) return hy >= 0 ? y : 0.0; // (|x|>1)**+-inf = inf,0\n else return hy >= 0 ? 0.0 : -y; // (|x|<1)**+-inf = 0,inf\n }\n if (iy == 0x3FF00000) {\n if (hy >= 0) return x;\n return 1 / x;\n }\n if (hy == 0x40000000) return x * x;\n if (hy == 0x3FE00000) {\n if (hx >= 0) return builtin_sqrt(x);\n }\n }\n let ax = builtin_abs(x), z: f64;\n if (lx == 0) {\n if (ix == 0 || ix == 0x7FF00000 || ix == 0x3FF00000) {\n z = ax;\n if (hy < 0) z = 1.0 / z;\n if (hx < 0) {\n if (((ix - 0x3FF00000) | yisint) == 0) {\n let d = z - z;\n z = d / d;\n } else if (yisint == 1) z = -z;\n }\n return z;\n }\n }\n let s = 1.0;\n if (hx < 0) {\n if (yisint == 0) {\n let d = x - x;\n return d / d;\n }\n if (yisint == 1) s = -1.0;\n }\n let t1: f64, t2: f64, p_h: f64, p_l: f64, r: f64, t: f64, u: f64, v: f64, w: f64;\n let j: i32, n: i32;\n if (iy > 0x41E00000) {\n if (iy > 0x43F00000) {\n if (ix <= 0x3FEFFFFF) return hy < 0 ? huge * huge : tiny * tiny;\n if (ix >= 0x3FF00000) return hy > 0 ? huge * huge : tiny * tiny;\n }\n if (ix < 0x3FEFFFFF) return hy < 0 ? s * huge * huge : s * tiny * tiny;\n if (ix > 0x3FF00000) return hy > 0 ? s * huge * huge : s * tiny * tiny;\n t = ax - 1.0;\n w = (t * t) * (0.5 - t * (inv3 - t * 0.25));\n u = ivln2_h * t;\n v = t * ivln2_l - w * ivln2;\n t1 = u + v;\n t1 = reinterpret(reinterpret(t1) & 0xFFFFFFFF00000000);\n t2 = v - (t1 - u);\n } else {\n let ss: f64, s2: f64, s_h: f64, s_l: f64, t_h: f64, t_l: f64;\n n = 0;\n if (ix < 0x00100000) {\n ax *= two53;\n n -= 53;\n ix = (reinterpret(ax) >> 32);\n }\n n += (ix >> 20) - 0x3FF;\n j = ix & 0x000FFFFF;\n ix = j | 0x3FF00000;\n if (j <= 0x3988E) k = 0;\n else if (j < 0xBB67A) k = 1;\n else {\n k = 0;\n n += 1;\n ix -= 0x00100000;\n }\n ax = reinterpret(reinterpret(ax) & 0xFFFFFFFF | (ix << 32));\n let bp = select(1.5, 1.0, k); // k ? 1.5 : 1.0\n u = ax - bp;\n v = 1.0 / (ax + bp);\n ss = u * v;\n s_h = ss;\n s_h = reinterpret(reinterpret(s_h) & 0xFFFFFFFF00000000);\n t_h = reinterpret(u64(((ix >> 1) | 0x20000000) + 0x00080000 + (k << 18)) << 32);\n t_l = ax - (t_h - bp);\n s_l = v * ((u - s_h * t_h) - s_h * t_l);\n s2 = ss * ss;\n r = s2 * s2 * (L1 + s2 * (L2 + s2 * (L3 + s2 * (L4 + s2 * (L5 + s2 * L6)))));\n r += s_l * (s_h + ss);\n s2 = s_h * s_h;\n t_h = 3.0 + s2 + r;\n t_h = reinterpret(reinterpret(t_h) & 0xFFFFFFFF00000000);\n t_l = r - ((t_h - 3.0) - s2);\n u = s_h * t_h;\n v = s_l * t_h + t_l * ss;\n p_h = u + v;\n p_h = reinterpret(reinterpret(p_h) & 0xFFFFFFFF00000000);\n p_l = v - (p_h - u);\n let z_h = cp_h * p_h;\n let dp_l = select(dp_l1, 0.0, k);\n let z_l = cp_l * p_h + p_l * cp + dp_l;\n t = n;\n let dp_h = select(dp_h1, 0.0, k);\n t1 = ((z_h + z_l) + dp_h) + t;\n t1 = reinterpret(reinterpret(t1) & 0xFFFFFFFF00000000);\n t2 = z_l - (((t1 - t) - dp_h) - z_h);\n }\n let y1 = y;\n y1 = reinterpret(reinterpret(y1) & 0xFFFFFFFF00000000);\n p_l = (y - y1) * t1 + y * t2;\n p_h = y1 * t1;\n z = p_l + p_h;\n u_ = reinterpret(z);\n j = u32(u_ >> 32);\n let i = u_;\n if (j >= 0x40900000) {\n if (((j - 0x40900000) | i) != 0) return s * huge * huge;\n if (p_l + ovt > z - p_h) return s * huge * huge;\n } else if ((j & 0x7FFFFFFF) >= 0x4090CC00) {\n if (((j - 0xC090CC00) | i) != 0) return s * tiny * tiny;\n if (p_l <= z - p_h) return s * tiny * tiny;\n }\n i = j & 0x7FFFFFFF;\n k = (i >> 20) - 0x3FF;\n n = 0;\n if (i > 0x3FE00000) {\n n = j + (0x00100000 >> (k + 1));\n k = ((n & 0x7FFFFFFF) >> 20) - 0x3FF;\n t = 0.0;\n t = reinterpret(u64(n & ~(0x000FFFFF >> k)) << 32);\n n = ((n & 0x000FFFFF) | 0x00100000) >> (20 - k);\n if (j < 0) n = -n;\n p_h -= t;\n }\n t = p_l + p_h;\n t = reinterpret(reinterpret(t) & 0xFFFFFFFF00000000);\n u = t * lg2_h;\n v = (p_l - (t - p_h)) * lg2 + t * lg2_l;\n z = u + v;\n w = v - (z - u);\n t = z * z;\n t1 = z - t * (P1 + t * (P2 + t * (P3 + t * (P4 + t * P5))));\n r = (z * t1) / (t1 - 2.0) - (w + z * w);\n z = 1.0 - (r - z);\n j = u32(reinterpret(z) >> 32);\n j += n << 20;\n if ((j >> 20) <= 0) z = scalbn(z, n);\n else z = reinterpret(reinterpret(z) & 0xFFFFFFFF | (j << 32));\n return s * z;\n }\n }\n\n export function seedRandom(value: i64): void {\n // Instead zero seed use golden ratio:\n // phi = (1 + sqrt(5)) / 2\n // trunc(2^64 / phi) = 0x9e3779b97f4a7c15\n if (value == 0) value = 0x9e3779b97f4a7c15;\n random_state0_64 = murmurHash3(value);\n random_state1_64 = murmurHash3(~random_state0_64);\n random_state0_32 = splitMix32(value);\n random_state1_32 = splitMix32(random_state0_32);\n random_seeded = true;\n }\n\n export function random(): f64 { // see: v8/src/base/utils/random-number-generator.cc\n if (!random_seeded) seedRandom(reinterpret(seed()));\n var s1 = random_state0_64;\n var s0 = random_state1_64;\n random_state0_64 = s0;\n s1 ^= s1 << 23;\n s1 ^= s1 >> 17;\n s1 ^= s0;\n s1 ^= s0 >> 26;\n random_state1_64 = s1;\n var r = (s0 >> 12) | 0x3FF0000000000000;\n return reinterpret(r) - 1;\n }\n\n export function round(x: f64): f64 {\n if (ASC_SHRINK_LEVEL > 0) {\n return builtin_ceil(x) - f64(builtin_ceil(x) - 0.5 > x);\n } else {\n let roundUp = builtin_ceil(x);\n return select(roundUp, roundUp - 1.0, roundUp - 0.5 <= x);\n }\n }\n\n export function sign(x: f64): f64 {\n if (ASC_SHRINK_LEVEL > 0) {\n return select(builtin_copysign(1, x), x, builtin_abs(x) > 0);\n } else {\n return select(1, select(-1, x, x < 0), x > 0);\n }\n }\n\n // @ts-ignore: decorator\n @inline\n export function signbit(x: f64): bool {\n return bool(reinterpret(x) >>> 63);\n }\n\n export function sin(x: f64): f64 { // see: musl/src/math/sin.c\n var u = reinterpret(x);\n var ux = u32(u >> 32);\n var sign = ux >> 31;\n\n ux &= 0x7FFFFFFF;\n\n // |x| ~< pi/4\n if (ux <= 0x3FE921FB) {\n if (ux < 0x3E500000) { // |x| < 2**-26\n return x;\n }\n return sin_kern(x, 0.0, 0);\n }\n\n // sin(Inf or NaN) is NaN\n if (ux >= 0x7FF00000) return x - x;\n\n // argument reduction needed\n var n = rempio2(x, u, sign);\n var y0 = rempio2_y0;\n var y1 = rempio2_y1;\n\n x = n & 1 ? cos_kern(y0, y1) : sin_kern(y0, y1, 1);\n return n & 2 ? -x : x;\n }\n\n export function sinh(x: f64): f64 { // see: musl/src/math/sinh.c\n var u = reinterpret(x) & 0x7FFFFFFFFFFFFFFF;\n var a = reinterpret(u);\n var w = u32(u >> 32);\n var h = builtin_copysign(0.5, x);\n if (w < 0x40862E42) {\n let t = expm1(a);\n if (w < 0x3FF00000) {\n if (w < 0x3FF00000 - (26 << 20)) return x;\n return h * (2 * t - t * t / (t + 1));\n }\n return h * (t + t / (t + 1));\n }\n return expo2(a, 2 * h);\n }\n\n // @ts-ignore: decorator\n @inline\n export function sqrt(x: f64): f64 {\n return builtin_sqrt(x);\n }\n\n export function tan(x: f64): f64 { // see: musl/src/math/tan.c\n var u = reinterpret(x);\n var ux = u32(u >> 32);\n var sign = ux >>> 31;\n\n ux &= 0x7FFFFFFF;\n\n // |x| ~< pi/4\n if (ux <= 0x3FE921FB) {\n if (ux < 0x3E400000) { // |x| < 2**-27\n return x;\n }\n return tan_kern(x, 0.0, 1);\n }\n\n // tan(Inf or NaN) is NaN\n if (ux >= 0x7FF00000) return x - x;\n\n var n = rempio2(x, u, sign);\n return tan_kern(rempio2_y0, rempio2_y1, 1 - ((n & 1) << 1));\n }\n\n export function tanh(x: f64): f64 { // see: musl/src/math/tanh.c\n var u = reinterpret(x);\n u &= 0x7FFFFFFFFFFFFFFF;\n var y = reinterpret(u);\n var w = u32(u >> 32);\n var t: f64;\n if (w > 0x3FE193EA) {\n if (w > 0x40340000) {\n t = 1 - 0 / y;\n } else {\n t = expm1(2 * y);\n t = 1 - 2 / (t + 2);\n }\n } else if (w > 0x3FD058AE) {\n t = expm1(2 * y);\n t = t / (t + 2);\n } else if (w >= 0x00100000) {\n t = expm1(-2 * y);\n t = -t / (t + 2);\n } else t = y;\n return builtin_copysign(t, x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function trunc(x: f64): f64 {\n return builtin_trunc(x);\n }\n\n export function scalbn(x: f64, n: i32): f64 { // see: https://git.musl-libc.org/cgit/musl/tree/src/math/scalbn.c\n const\n Ox1p53 = reinterpret(0x4340000000000000),\n Ox1p1023 = reinterpret(0x7FE0000000000000),\n Ox1p_1022 = reinterpret(0x0010000000000000);\n\n var y = x;\n if (n > 1023) {\n y *= Ox1p1023;\n n -= 1023;\n if (n > 1023) {\n y *= Ox1p1023;\n n = builtin_min(n - 1023, 1023);\n }\n } else if (n < -1022) {\n // make sure final n < -53 to avoid double\n // rounding in the subnormal range\n y *= Ox1p_1022 * Ox1p53;\n n += 1022 - 53;\n if (n < -1022) {\n y *= Ox1p_1022 * Ox1p53;\n n = builtin_max(n + 1022 - 53, -1022);\n }\n }\n return y * reinterpret((0x3FF + n) << 52);\n }\n\n export function mod(x: f64, y: f64): f64 { // see: musl/src/math/fmod.c\n if (builtin_abs(y) == 1.0) {\n // x % 1, x % -1 ==> sign(x) * abs(x - 1.0 * trunc(x / 1.0))\n // TODO: move this rule to compiler's optimization pass.\n // It could be apply for any x % C_pot, where \"C_pot\" is pow of two const.\n return builtin_copysign(x - builtin_trunc(x), x);\n }\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n var ex = i64(ux >> 52 & 0x7FF);\n var ey = i64(uy >> 52 & 0x7FF);\n var sx = ux >> 63;\n var uy1 = uy << 1;\n if (uy1 == 0 || ex == 0x7FF || isNaN(y)) {\n let m = x * y;\n return m / m;\n }\n var ux1 = ux << 1;\n if (ux1 <= uy1) {\n return x * f64(ux1 != uy1);\n }\n if (!ex) {\n ex -= builtin_clz(ux << 12);\n ux <<= 1 - ex;\n } else {\n ux &= u64(-1) >> 12;\n ux |= 1 << 52;\n }\n if (!ey) {\n ey -= builtin_clz(uy << 12);\n uy <<= 1 - ey;\n } else {\n uy &= u64(-1) >> 12;\n uy |= 1 << 52;\n }\n while (ex > ey) {\n if (ux >= uy) {\n if (ux == uy) return 0 * x;\n ux -= uy;\n }\n ux <<= 1;\n --ex;\n }\n if (ux >= uy) {\n if (ux == uy) return 0 * x;\n ux -= uy;\n }\n // for (; !(ux >> 52); ux <<= 1) --ex;\n var shift = builtin_clz(ux << 11);\n ex -= shift;\n ux <<= shift;\n if (ex > 0) {\n ux -= 1 << 52;\n ux |= ex << 52;\n } else {\n ux >>= -ex + 1;\n }\n return reinterpret(ux | (sx << 63));\n }\n\n export function rem(x: f64, y: f64): f64 { // see: musl/src/math/remquo.c\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n var ex = i64(ux >> 52 & 0x7FF);\n var ey = i64(uy >> 52 & 0x7FF);\n if (uy << 1 == 0 || ex == 0x7FF || isNaN(y)) {\n let m = x * y;\n return m / m;\n }\n if (ux << 1 == 0) return x;\n var uxi = ux;\n if (!ex) {\n ex -= builtin_clz(uxi << 12);\n uxi <<= 1 - ex;\n } else {\n uxi &= u64(-1) >> 12;\n uxi |= 1 << 52;\n }\n if (!ey) {\n ey -= builtin_clz(uy << 12);\n uy <<= 1 - ey;\n } else {\n uy &= u64(-1) >> 12;\n uy |= 1 << 52;\n }\n var q: u32 = 0;\n do {\n if (ex < ey) {\n if (ex + 1 == ey) break; // goto end\n return x;\n }\n while (ex > ey) {\n if (uxi >= uy) {\n uxi -= uy;\n ++q;\n }\n uxi <<= 1;\n q <<= 1;\n --ex;\n }\n if (uxi >= uy) {\n uxi -= uy;\n ++q;\n }\n if (uxi == 0) ex = -60;\n else {\n let shift = builtin_clz(uxi << 11);\n ex -= shift;\n uxi <<= shift;\n }\n break;\n } while (false);\n // end:\n if (ex > 0) {\n uxi -= 1 << 52;\n uxi |= ex << 52;\n } else {\n uxi >>= -ex + 1;\n }\n x = reinterpret(uxi);\n y = builtin_abs(y);\n var x2 = x + x;\n if (ex == ey || (ex + 1 == ey && (x2 > y || (x2 == y && (q & 1))))) {\n x -= y;\n // ++q;\n }\n return ux < 0 ? -x : x;\n }\n\n export function sincos(x: f64): void { // see: musl/tree/src/math/sincos.c\n var u = reinterpret(x);\n var ux = u32(u >> 32);\n var sign = ux >> 31;\n ux &= 0x7FFFFFFF;\n\n if (ux <= 0x3FE921FB) { // |x| ~<= π/4\n if (ux < 0x3E46A09E) { // if |x| < 2**-27 * sqrt(2)\n sincos_sin = x;\n sincos_cos = 1;\n return;\n }\n sincos_sin = sin_kern(x, 0, 0);\n sincos_cos = cos_kern(x, 0);\n return;\n }\n // sin(Inf or NaN) is NaN\n if (ux >= 0x7F800000) {\n let xx = x - x;\n sincos_sin = xx;\n sincos_cos = xx;\n return;\n }\n // general argument reduction needed\n var n = rempio2(x, u, sign);\n var y0 = rempio2_y0;\n var y1 = rempio2_y1;\n var s = sin_kern(y0, y1, 1);\n var c = cos_kern(y0, y1);\n var sin = s, cos = c;\n if (n & 1) {\n sin = c;\n cos = -s;\n }\n if (n & 2) {\n sin = -sin;\n cos = -cos;\n }\n sincos_sin = sin;\n sincos_cos = cos;\n }\n}\n\n// @ts-ignore: decorator\n@lazy var rempio2f_y: f64;\n\n// @ts-ignore: decorator\n@lazy @inline const PIO2F_TABLE = memory.data([\n 0xA2F9836E4E441529,\n 0xFC2757D1F534DDC0,\n 0xDB6295993C439041,\n 0xFE5163ABDEBBC561\n]);\n\nfunction Rf(z: f32): f32 { // Rational approximation of (asin(x)-x)/x^3\n const // see: musl/src/math/asinf.c and SUN COPYRIGHT NOTICE above\n pS0 = reinterpret(0x3E2AAA75), // 1.6666586697e-01f\n pS1 = reinterpret(0xBD2F13BA), // -4.2743422091e-02f\n pS2 = reinterpret(0xBC0DD36B), // -8.6563630030e-03f\n qS1 = reinterpret(0xBF34E5AE); // -7.0662963390e-01f\n\n var p = z * (pS0 + z * (pS1 + z * pS2));\n var q: f32 = 1 + z * qS1;\n return p / q;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction expo2f(x: f32, sign: f32): f32 { // exp(x)/2 for x >= log(DBL_MAX)\n const // see: musl/src/math/__expo2f.c\n k = 235,\n kln2 = reinterpret(0x4322E3BC); // 0x1.45c778p+7f\n var scale = reinterpret(u32(0x7F + (k >> 1)) << 23);\n // in directed rounding correct sign before rounding or overflow is important\n return NativeMathf.exp(x - kln2) * (sign * scale) * scale;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction pio2f_large_quot(x: f32, u: i32): i32 { // see: jdh8/metallic/blob/master/src/math/float/rem_pio2f.c\n const coeff = reinterpret(0x3BF921FB54442D18); // π * 0x1p-65 = 8.51530395021638647334e-20\n\n var offset = (u >> 23) - 152;\n var shift = u64(offset & 63);\n var tblPtr = PIO2F_TABLE + (offset >> 6 << 3);\n\n var b0 = load(tblPtr, 0 << 3);\n var b1 = load(tblPtr, 1 << 3);\n var lo: u64;\n\n if (shift > 32) {\n let b2 = load(tblPtr, 2 << 3);\n lo = b2 >> (96 - shift);\n lo |= b1 << (shift - 32);\n } else {\n lo = b1 >> (32 - shift);\n }\n\n var hi = (b1 >> (64 - shift)) | (b0 << shift);\n var mantissa: u64 = (u & 0x007FFFFF) | 0x00800000;\n var product = mantissa * hi + (mantissa * lo >> 32);\n var r: i64 = product << 2;\n var q = i32((product >> 62) + (r >>> 63));\n rempio2f_y = copysign(coeff, x) * r;\n return q;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction rempio2f(x: f32, u: u32, sign: i32): i32 { // see: jdh8/metallic/blob/master/src/math/float/rem_pio2f.c\n const\n pi2hi = reinterpret(0x3FF921FB50000000), // 1.57079631090164184570\n pi2lo = reinterpret(0x3E5110B4611A6263), // 1.58932547735281966916e-8\n _2_pi = reinterpret(0x3FE45F306DC9C883); // 0.63661977236758134308\n\n if (u < 0x4DC90FDB) { // π * 0x1p28\n let q = nearest(x * _2_pi);\n rempio2f_y = x - q * pi2hi - q * pi2lo;\n return q;\n }\n\n var q = pio2f_large_quot(x, u);\n return select(-q, q, sign);\n}\n\n// |sin(x)/x - s(x)| < 2**-37.5 (~[-4.89e-12, 4.824e-12]).\n// @ts-ignore: decorator\n@inline\nfunction sin_kernf(x: f64): f32 { // see: musl/tree/src/math/__sindf.c\n const\n S1 = reinterpret(0xBFC5555554CBAC77), // -0x15555554cbac77.0p-55\n S2 = reinterpret(0x3F811110896EFBB2), // 0x111110896efbb2.0p-59\n S3 = reinterpret(0xBF2A00F9E2CAE774), // -0x1a00f9e2cae774.0p-65\n S4 = reinterpret(0x3EC6CD878C3B46A7); // 0x16cd878c3b46a7.0p-71\n\n var z = x * x;\n var w = z * z;\n var r = S3 + z * S4;\n var s = z * x;\n return f32((x + s * (S1 + z * S2)) + s * w * r);\n}\n\n// |cos(x) - c(x)| < 2**-34.1 (~[-5.37e-11, 5.295e-11]).\n// @ts-ignore: decorator\n@inline\nfunction cos_kernf(x: f64): f32 { // see: musl/tree/src/math/__cosdf.c\n const\n C0 = reinterpret(0xBFDFFFFFFD0C5E81), // -0x1ffffffd0c5e81.0p-54\n C1 = reinterpret(0x3FA55553E1053A42), // 0x155553e1053a42.0p-57\n C2 = reinterpret(0xBF56C087E80F1E27), // -0x16c087e80f1e27.0p-62\n C3 = reinterpret(0x3EF99342E0EE5069); // 0x199342e0ee5069.0p-68\n\n var z = x * x;\n var w = z * z;\n var r = C2 + z * C3;\n return f32(((1 + z * C0) + w * C1) + (w * z) * r);\n}\n\n// |tan(x)/x - t(x)| < 2**-25.5 (~[-2e-08, 2e-08]).\n// @ts-ignore: decorator\n@inline\nfunction tan_kernf(x: f64, odd: i32): f32 { // see: musl/tree/src/math/__tandf.c\n const\n T0 = reinterpret(0x3FD5554D3418C99F), // 0x15554d3418c99f.0p-54\n T1 = reinterpret(0x3FC112FD38999F72), // 0x1112fd38999f72.0p-55\n T2 = reinterpret(0x3FAB54C91D865AFE), // 0x1b54c91d865afe.0p-57\n T3 = reinterpret(0x3F991DF3908C33CE), // 0x191df3908c33ce.0p-58\n T4 = reinterpret(0x3F685DADFCECF44E), // 0x185dadfcecf44e.0p-61\n T5 = reinterpret(0x3F8362B9BF971BCD); // 0x1362b9bf971bcd.0p-59\n\n var z = x * x;\n var r = T4 + z * T5;\n var t = T2 + z * T3;\n var w = z * z;\n var s = z * x;\n var u = T0 + z * T1;\n\n r = (x + s * u) + (s * w) * (t + w * r);\n return f32(odd ? -1 / r : r);\n}\n\n// See: jdh8/metallic/src/math/float/log2f.c and jdh8/metallic/src/math/float/kernel/atanh.h\n// @ts-ignore: decorator\n@inline\nfunction log2f(x: f64): f64 {\n const\n log2e = reinterpret(0x3FF71547652B82FE), // 1.44269504088896340736\n c0 = reinterpret(0x3FD555554FD9CAEF), // 0.33333332822728226129\n c1 = reinterpret(0x3FC999A7A8AF4132), // 0.20000167595436263505\n c2 = reinterpret(0x3FC2438D79437030), // 0.14268654271188685375\n c3 = reinterpret(0x3FBE2F663B001C97); // 0.11791075649681414150\n\n var i = reinterpret(x);\n var exponent = (i - 0x3FE6A09E667F3BCD) >> 52;\n x = reinterpret(i - (exponent << 52));\n x = (x - 1) / (x + 1);\n var xx = x * x;\n var y = x + x * xx * (c0 + c1 * xx + (c2 + c3 * xx) * (xx * xx));\n return (2 * log2e) * y + exponent;\n}\n\n// See: jdh8/metallic/src/math/float/exp2f.h and jdh8/metallic/blob/master/src/math/float/kernel/exp2f.h\n// @ts-ignore: decorator\n@inline\nfunction exp2f(x: f64): f64 {\n const\n c0 = reinterpret(0x3FE62E4302FCC24A), // 6.931471880289532425e-1\n c1 = reinterpret(0x3FCEBFBE07D97B91), // 2.402265108421173406e-1\n c2 = reinterpret(0x3FAC6AF6CCFC1A65), // 5.550357105498874537e-2\n c3 = reinterpret(0x3F83B29E3CE9AEF6), // 9.618030771171497658e-3\n c4 = reinterpret(0x3F55F0896145A89F), // 1.339086685300950937e-3\n c5 = reinterpret(0x3F2446C81E384864); // 1.546973499989028719e-4\n\n if (x < -1022) return 0;\n if (x >= 1024) return Infinity;\n\n var n = nearest(x);\n x -= n;\n var xx = x * x;\n var y = 1 + x * (c0 + c1 * x + (c2 + c3 * x) * xx + (c4 + c5 * x) * (xx * xx));\n return reinterpret(reinterpret(y) + (n << 52));\n}\n\nexport namespace NativeMathf {\n\n // @ts-ignore: decorator\n @lazy\n export const E = NativeMath.E;\n\n // @ts-ignore: decorator\n @lazy\n export const LN2 = NativeMath.LN2;\n\n // @ts-ignore: decorator\n @lazy\n export const LN10 = NativeMath.LN10;\n\n // @ts-ignore: decorator\n @lazy\n export const LOG2E = NativeMath.LOG2E;\n\n // @ts-ignore: decorator\n @lazy\n export const LOG10E = NativeMath.LOG10E;\n\n // @ts-ignore: decorator\n @lazy\n export const PI = NativeMath.PI;\n\n // @ts-ignore: decorator\n @lazy\n export const SQRT1_2 = NativeMath.SQRT1_2;\n\n // @ts-ignore: decorator\n @lazy\n export const SQRT2 = NativeMath.SQRT2;\n\n // @ts-ignore: decorator\n @lazy\n export var sincos_sin: f32 = 0;\n\n // @ts-ignore: decorator\n @lazy\n export var sincos_cos: f32 = 0;\n\n // @ts-ignore: decorator\n @inline\n export function abs(x: f32): f32 {\n return builtin_abs(x);\n }\n\n export function acos(x: f32): f32 { // see: musl/src/math/acosf.c and SUN COPYRIGHT NOTICE above\n const\n pio2_hi = reinterpret(0x3FC90FDA), // 1.5707962513e+00f\n pio2_lo = reinterpret(0x33A22168), // 7.5497894159e-08f\n Ox1p_120f = reinterpret(0x03800000); // 0x1p-120f\n\n var hx = reinterpret(x);\n var ix = hx & 0x7FFFFFFF;\n if (ix >= 0x3F800000) {\n if (ix == 0x3F800000) {\n return select(2 * pio2_hi + Ox1p_120f, 0, hx < 0);\n }\n return 0 / (x - x);\n }\n if (ix < 0x3F000000) {\n if (ix <= 0x32800000) return pio2_hi + Ox1p_120f;\n return pio2_hi - (x - (pio2_lo - x * Rf(x * x)));\n }\n var z: f32, w: f32, s: f32;\n if (hx < 0) {\n // z = (1 + x) * 0.5;\n z = 0.5 + x * 0.5;\n s = builtin_sqrt(z);\n w = Rf(z) * s - pio2_lo;\n return 2 * (pio2_hi - (s + w));\n }\n // z = (1 - x) * 0.5;\n z = 0.5 - x * 0.5;\n s = builtin_sqrt(z);\n hx = reinterpret(s);\n var df = reinterpret(hx & 0xFFFFF000);\n var c = (z - df * df) / (s + df);\n w = Rf(z) * s + c;\n return 2 * (df + w);\n }\n\n export function acosh(x: f32): f32 { // see: musl/src/math/acoshf.c\n const s = reinterpret(0x3F317218); // 0.693147180559945309417232121458176568f\n var u = reinterpret(x);\n var a = u & 0x7FFFFFFF;\n if (a < 0x3F800000 + (1 << 23)) { // |x| < 2, invalid if x < 1\n let xm1 = x - 1;\n return log1p(xm1 + builtin_sqrt(xm1 * (xm1 + 2)));\n }\n if (u < 0x3F800000 + (12 << 23)) { // 2 <= x < 0x1p12\n return log(2 * x - 1 / (x + builtin_sqrt(x * x - 1)));\n }\n // x >= 0x1p12 or x <= -2 or NaN\n return log(x) + s;\n }\n\n export function asin(x: f32): f32 { // see: musl/src/math/asinf.c and SUN COPYRIGHT NOTICE above\n const\n pio2 = reinterpret(0x3FC90FDB), // 1.570796326794896558e+00f\n Ox1p_120f = reinterpret(0x03800000); // 0x1p-120f\n\n var sx = x;\n var hx = reinterpret(x) & 0x7FFFFFFF;\n if (hx >= 0x3F800000) {\n if (hx == 0x3F800000) return x * pio2 + Ox1p_120f;\n return 0 / (x - x);\n }\n if (hx < 0x3F000000) {\n if (hx < 0x39800000 && hx >= 0x00800000) return x;\n return x + x * Rf(x * x);\n }\n // var z: f32 = (1 - builtin_abs(x)) * 0.5;\n var z: f32 = 0.5 - builtin_abs(x) * 0.5;\n var s = builtin_sqrt(z); // sic\n x = f32(pio2 - 2 * (s + s * Rf(z)));\n return builtin_copysign(x, sx);\n }\n\n export function asinh(x: f32): f32 { // see: musl/src/math/asinhf.c\n const c = reinterpret(0x3F317218); // 0.693147180559945309417232121458176568f\n var u = reinterpret(x) & 0x7FFFFFFF;\n var y = reinterpret(u);\n if (u >= 0x3F800000 + (12 << 23)) y = log(y) + c;\n else if (u >= 0x3F800000 + (1 << 23)) y = log(2 * y + 1 / (builtin_sqrt(y * y + 1) + y));\n else if (u >= 0x3F800000 - (12 << 23)) y = log1p(y + y * y / (builtin_sqrt(y * y + 1) + 1));\n return builtin_copysign(y, x);\n }\n\n export function atan(x: f32): f32 { // see: musl/src/math/atanf.c and SUN COPYRIGHT NOTICE above\n const\n atanhi0 = reinterpret(0x3EED6338), // 4.6364760399e-01f\n atanhi1 = reinterpret(0x3F490FDA), // 7.8539812565e-01f\n atanhi2 = reinterpret(0x3F7B985E), // 9.8279368877e-01f\n atanhi3 = reinterpret(0x3FC90FDA), // 1.5707962513e+00f\n atanlo0 = reinterpret(0x31AC3769), // 5.0121582440e-09f\n atanlo1 = reinterpret(0x33222168), // 3.7748947079e-08f\n atanlo2 = reinterpret(0x33140FB4), // 3.4473217170e-08f\n atanlo3 = reinterpret(0x33A22168), // 7.5497894159e-08f\n aT0 = reinterpret(0x3EAAAAA9), // 3.3333328366e-01f\n aT1 = reinterpret(0xBE4CCA98), // -1.9999158382e-01f\n aT2 = reinterpret(0x3E11F50D), // 1.4253635705e-01f\n aT3 = reinterpret(0xBDDA1247), // -1.0648017377e-01f\n aT4 = reinterpret(0x3D7CAC25), // 6.1687607318e-02f\n Ox1p_120f = reinterpret(0x03800000); // 0x1p-120f\n\n var ix = reinterpret(x);\n var sx = x;\n ix &= 0x7FFFFFFF;\n var z: f32;\n if (ix >= 0x4C800000) {\n if (isNaN(x)) return x;\n z = atanhi3 + Ox1p_120f;\n return builtin_copysign(z, sx);\n }\n var id: i32;\n if (ix < 0x3EE00000) {\n if (ix < 0x39800000) return x;\n id = -1;\n } else {\n x = builtin_abs(x);\n if (ix < 0x3F980000) {\n if (ix < 0x3F300000) {\n id = 0;\n x = (2.0 * x - 1.0) / (2.0 + x);\n } else {\n id = 1;\n x = (x - 1.0) / (x + 1.0);\n }\n } else {\n if (ix < 0x401C0000) {\n id = 2;\n x = (x - 1.5) / (1.0 + 1.5 * x);\n } else {\n id = 3;\n x = -1.0 / x;\n }\n }\n }\n z = x * x;\n var w = z * z;\n var s1 = z * (aT0 + w * (aT2 + w * aT4));\n var s2 = w * (aT1 + w * aT3);\n var s3 = x * (s1 + s2);\n if (id < 0) return x - s3;\n switch (id) {\n case 0: { z = atanhi0 - ((s3 - atanlo0) - x); break; }\n case 1: { z = atanhi1 - ((s3 - atanlo1) - x); break; }\n case 2: { z = atanhi2 - ((s3 - atanlo2) - x); break; }\n case 3: { z = atanhi3 - ((s3 - atanlo3) - x); break; }\n default: unreachable();\n }\n return builtin_copysign(z, sx);\n }\n\n export function atanh(x: f32): f32 { // see: musl/src/math/atanhf.c\n var u = reinterpret(x);\n var y = builtin_abs(x);\n if (u < 0x3F800000 - (1 << 23)) {\n if (u >= 0x3F800000 - (32 << 23)) y = 0.5 * log1p(2 * y * (1.0 + y / (1 - y)));\n } else y = 0.5 * log1p(2 * (y / (1 - y)));\n return builtin_copysign(y, x);\n }\n\n export function atan2(y: f32, x: f32): f32 { // see: musl/src/math/atan2f.c and SUN COPYRIGHT NOTICE above\n const\n pi = reinterpret(0x40490FDB), // 3.1415927410e+00f\n pi_lo = reinterpret(0xB3BBBD2E); // -8.7422776573e-08f\n\n if (isNaN(x) || isNaN(y)) return x + y;\n var ix = reinterpret(x);\n var iy = reinterpret(y);\n if (ix == 0x3F800000) return atan(y);\n var m = u32(((iy >> 31) & 1) | ((ix >> 30) & 2));\n ix &= 0x7FFFFFFF;\n iy &= 0x7FFFFFFF;\n if (iy == 0) {\n switch (m) {\n case 0:\n case 1: return y;\n case 2: return pi;\n case 3: return -pi;\n }\n }\n if (ix == 0) return m & 1 ? -pi / 2 : pi / 2;\n if (ix == 0x7F800000) {\n if (iy == 0x7F800000) {\n let t: f32 = m & 2 ? 3 * pi / 4 : pi / 4;\n return m & 1 ? -t : t;\n } else {\n let t: f32 = m & 2 ? pi : 0.0;\n return m & 1 ? -t : t;\n }\n }\n if (ix + (26 << 23) < iy || iy == 0x7F800000) return m & 1 ? -pi / 2 : pi / 2;\n var z: f32;\n if ((m & 2) && iy + (26 << 23) < ix) z = 0.0;\n else z = atan(builtin_abs(y / x));\n switch (m) {\n case 0: return z;\n case 1: return -z;\n case 2: return pi - (z - pi_lo);\n case 3: return (z - pi_lo) - pi;\n }\n unreachable();\n return 0;\n }\n\n export function cbrt(x: f32): f32 { // see: musl/src/math/cbrtf.c and SUN COPYRIGHT NOTICE above\n const\n B1 = 709958130,\n B2 = 642849266,\n Ox1p24f = reinterpret(0x4B800000);\n\n var u = reinterpret(x);\n var hx = u & 0x7FFFFFFF;\n if (hx >= 0x7F800000) return x + x;\n if (hx < 0x00800000) {\n if (hx == 0) return x;\n u = reinterpret(x * Ox1p24f);\n hx = u & 0x7FFFFFFF;\n hx = hx / 3 + B2;\n } else {\n hx = hx / 3 + B1;\n }\n u &= 0x80000000;\n u |= hx;\n var t = reinterpret(u);\n var r = t * t * t;\n t = t * (x + x + r) / (x + r + r);\n r = t * t * t;\n t = t * (x + x + r) / (x + r + r);\n return t;\n }\n\n // @ts-ignore: decorator\n @inline\n export function ceil(x: f32): f32 {\n return builtin_ceil(x);\n }\n\n export function clz32(x: f32): f32 {\n if (!isFinite(x)) return 32;\n return builtin_clz(dtoi32(x));\n }\n\n export function cos(x: f32): f32 { // see: musl/src/math/cosf.c\n const\n c1pio2 = reinterpret(0x3FF921FB54442D18), // M_PI_2 * 1\n c2pio2 = reinterpret(0x400921FB54442D18), // M_PI_2 * 2\n c3pio2 = reinterpret(0x4012D97C7F3321D2), // M_PI_2 * 3\n c4pio2 = reinterpret(0x401921FB54442D18); // M_PI_2 * 4\n\n var ux = reinterpret(x);\n var sign = ux >> 31;\n ux &= 0x7FFFFFFF;\n\n if (ux <= 0x3F490FDA) { // |x| ~<= π/4\n if (ux < 0x39800000) { // |x| < 2**-12\n // raise inexact if x != 0\n return 1;\n }\n return cos_kernf(x);\n }\n\n if (ASC_SHRINK_LEVEL < 1) {\n if (ux <= 0x407B53D1) { // |x| ~<= 5π/4\n if (ux > 0x4016CBE3) { // |x| ~> 3π/4\n return -cos_kernf(sign ? x + c2pio2 : x - c2pio2);\n } else {\n return sign ? sin_kernf(x + c1pio2) : sin_kernf(c1pio2 - x);\n }\n }\n if (ux <= 0x40E231D5) { // |x| ~<= 9π/4\n if (ux > 0x40AFEDDF) { // |x| ~> 7π/4\n return cos_kernf(sign ? x + c4pio2 : x - c4pio2);\n } else {\n return sign ? sin_kernf(-x - c3pio2) : sin_kernf(x - c3pio2);\n }\n }\n }\n\n // cos(Inf or NaN) is NaN\n if (ux >= 0x7F800000) return x - x;\n\n // general argument reduction needed\n var n = rempio2f(x, ux, sign);\n var y = rempio2f_y;\n\n var t = n & 1 ? sin_kernf(y) : cos_kernf(y);\n return (n + 1) & 2 ? -t : t;\n }\n\n export function cosh(x: f32): f32 { // see: musl/src/math/coshf.c\n var u = reinterpret(x);\n u &= 0x7FFFFFFF;\n x = reinterpret(u);\n if (u < 0x3F317217) {\n if (u < 0x3F800000 - (12 << 23)) return 1;\n let t = expm1(x);\n // return 1 + t * t / (2 * (1 + t));\n return 1 + t * t / (2 + 2 * t);\n }\n if (u < 0x42B17217) {\n let t = exp(x);\n // return 0.5 * (t + 1 / t);\n return 0.5 * t + 0.5 / t;\n }\n return expo2f(x, 1);\n }\n\n // @ts-ignore: decorator\n @inline\n export function floor(x: f32): f32 {\n return builtin_floor(x);\n }\n\n export function exp(x: f32): f32 { // see: musl/src/math/expf.c and SUN COPYRIGHT NOTICE above\n if (ASC_SHRINK_LEVEL < 1) {\n return expf_lut(x);\n } else {\n const\n ln2hi = reinterpret(0x3F317200), // 6.9314575195e-1f\n ln2lo = reinterpret(0x35BFBE8E), // 1.4286067653e-6f\n invln2 = reinterpret(0x3FB8AA3B), // 1.4426950216e+0f\n P1 = reinterpret(0x3E2AAA8F), // 1.6666625440e-1f\n P2 = reinterpret(0xBB355215), // -2.7667332906e-3f\n Ox1p127f = reinterpret(0x7F000000); // 0x1p+127f\n\n let hx = reinterpret(x);\n let sign = hx >> 31;\n hx &= 0x7FFFFFFF;\n if (hx >= 0x42AEAC50) {\n if (hx > 0x7F800000) return x; // NaN\n if (hx >= 0x42B17218) {\n if (!sign) return x * Ox1p127f;\n else if (hx >= 0x42CFF1B5) return 0;\n }\n }\n let hi: f32, lo: f32;\n let k: i32;\n if (hx > 0x3EB17218) {\n if (hx > 0x3F851592) {\n k = i32(invln2 * x + builtin_copysign(0.5, x));\n } else {\n k = 1 - (sign << 1);\n }\n hi = x - k * ln2hi;\n lo = k * ln2lo;\n x = hi - lo;\n } else if (hx > 0x39000000) {\n k = 0;\n hi = x;\n lo = 0;\n } else {\n return 1 + x;\n }\n let xx = x * x;\n let c = x - xx * (P1 + xx * P2);\n let y: f32 = 1 + (x * c / (2 - c) - lo + hi);\n return k == 0 ? y : scalbn(y, k);\n }\n }\n\n export function exp2(x: f32): f32 {\n return exp2f_lut(x);\n }\n\n export function expm1(x: f32): f32 { // see: musl/src/math/expm1f.c and SUN COPYRIGHT NOTICE above\n const\n ln2_hi = reinterpret(0x3F317180), // 6.9313812256e-01f\n ln2_lo = reinterpret(0x3717F7D1), // 9.0580006145e-06f\n invln2 = reinterpret(0x3FB8AA3B), // 1.4426950216e+00f\n Q1 = reinterpret(0xBD088868), // -3.3333212137e-02f\n Q2 = reinterpret(0x3ACF3010), // 1.5807170421e-03f\n Ox1p127f = reinterpret(0x7F000000); // 0x1p+127f\n\n var u = reinterpret(x);\n var hx = u & 0x7FFFFFFF;\n var sign = u >> 31;\n if (hx >= 0x4195B844) {\n if (hx > 0x7F800000) return x;\n if (sign) return -1;\n if (hx > 0x42B17217) { // x > log(FLT_MAX)\n x *= Ox1p127f;\n return x;\n }\n }\n var c: f32 = 0.0, t: f32, k: i32;\n if (hx > 0x3EB17218) {\n k = select(\n 1 - (sign << 1),\n i32(invln2 * x + builtin_copysign(0.5, x)),\n hx < 0x3F851592\n );\n t = k;\n let hi = x - t * ln2_hi;\n let lo = t * ln2_lo;\n x = hi - lo;\n c = (hi - x) - lo;\n } else if (hx < 0x33000000) {\n return x;\n } else k = 0;\n var hfx: f32 = 0.5 * x;\n var hxs: f32 = x * hfx;\n var r1: f32 = 1.0 + hxs * (Q1 + hxs * Q2);\n t = 3.0 - r1 * hfx;\n var e = hxs * ((r1 - t) / (6.0 - x * t));\n if (k == 0) return x - (x * e - hxs);\n e = x * (e - c) - c;\n e -= hxs;\n if (k == -1) return 0.5 * (x - e) - 0.5;\n if (k == 1) {\n if (x < -0.25) return -2.0 * (e - (x + 0.5));\n return 1.0 + 2.0 * (x - e);\n }\n u = (0x7F + k) << 23;\n var twopk = reinterpret(u);\n var y: f32;\n if (k < 0 || k > 56) {\n y = x - e + 1.0;\n if (k == 128) y = y * 2.0 * Ox1p127f;\n else y = y * twopk;\n return y - 1.0;\n }\n u = (0x7F - k) << 23;\n y = reinterpret(u);\n if (k < 20) y = (1 - y) - e;\n else y = 1 - (e + y);\n return (x + y) * twopk;\n }\n\n // @ts-ignore: decorator\n @inline\n export function fround(x: f32): f32 {\n return x;\n }\n\n export function hypot(x: f32, y: f32): f32 { // see: musl/src/math/hypotf.c\n const\n Ox1p90f = reinterpret(0x6C800000),\n Ox1p_90f = reinterpret(0x12800000);\n\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n ux &= 0x7FFFFFFF;\n uy &= 0x7FFFFFFF;\n if (ux < uy) {\n let ut = ux;\n ux = uy;\n uy = ut;\n }\n x = reinterpret(ux);\n y = reinterpret(uy);\n if (uy == 0xFF << 23) return y;\n if (ux >= 0xFF << 23 || uy == 0 || ux - uy >= 25 << 23) return x + y;\n var z: f32 = 1;\n if (ux >= (0x7F + 60) << 23) {\n z = Ox1p90f;\n x *= Ox1p_90f;\n y *= Ox1p_90f;\n } else if (uy < (0x7F - 60) << 23) {\n z = Ox1p_90f;\n x *= Ox1p90f;\n y *= Ox1p90f;\n }\n return z * builtin_sqrt(f32(x * x + y * y));\n }\n\n // @ts-ignore: decorator\n @inline\n export function imul(x: f32, y: f32): f32 {\n /*\n * Wasm (MVP) and JS have different approaches for double->int conversions.\n *\n * For emulate JS conversion behavior and avoid trapping from wasm we should modulate by MAX_INT\n * our float-point arguments before actual convertion to integers.\n */\n if (!isFinite(x + y)) return 0;\n return (dtoi32(x) * dtoi32(y));\n }\n\n export function log(x: f32): f32 { // see: musl/src/math/logf.c and SUN COPYRIGHT NOTICE above\n if (ASC_SHRINK_LEVEL < 1) {\n return logf_lut(x);\n } else {\n const\n ln2_hi = reinterpret(0x3F317180), // 6.9313812256e-01f\n ln2_lo = reinterpret(0x3717F7D1), // 9.0580006145e-06f\n Lg1 = reinterpret(0x3F2AAAAA), // 0xaaaaaa.0p-24f\n Lg2 = reinterpret(0x3ECCCE13), // 0xccce13.0p-25f\n Lg3 = reinterpret(0x3E91E9EE), // 0x91e9ee.0p-25f\n Lg4 = reinterpret(0x3E789E26), // 0xf89e26.0p-26f\n Ox1p25f = reinterpret(0x4C000000);\n\n let u = reinterpret(x);\n let k = 0;\n let sign = u >> 31;\n if (sign || u < 0x00800000) {\n if (u << 1 == 0) return -1 / (x * x);\n if (sign) return (x - x) / 0;\n k -= 25;\n x *= Ox1p25f;\n u = reinterpret(x);\n } else if (u >= 0x7F800000) {\n return x;\n } else if (u == 0x3F800000) {\n return 0;\n }\n u += 0x3F800000 - 0x3F3504F3;\n k += i32(u >> 23) - 0x7F;\n u = (u & 0x007FFFFF) + 0x3F3504F3;\n x = reinterpret(u);\n let f = x - 1.0;\n let s = f / (2.0 + f);\n let z = s * s;\n let w = z * z;\n let t1 = w * (Lg2 + w * Lg4);\n let t2 = z * (Lg1 + w * Lg3);\n let r = t2 + t1;\n let hfsq = 0.5 * f * f;\n let dk = k;\n return s * (hfsq + r) + dk * ln2_lo - hfsq + f + dk * ln2_hi;\n }\n }\n\n export function log10(x: f32): f32 { // see: musl/src/math/log10f.c and SUN COPYRIGHT NOTICE above\n const\n ivln10hi = reinterpret(0x3EDE6000), // 4.3432617188e-01f\n ivln10lo = reinterpret(0xB804EAD9), // -3.1689971365e-05f\n log10_2hi = reinterpret(0x3E9A2080), // 3.0102920532e-01f\n log10_2lo = reinterpret(0x355427DB), // 7.9034151668e-07f\n Lg1 = reinterpret(0x3F2AAAAA), // 0xaaaaaa.0p-24f, 0.66666662693f\n Lg2 = reinterpret(0x3ECCCE13), // 0xccce13.0p-25f, 0.40000972152f\n Lg3 = reinterpret(0x3E91E9EE), // 0x91e9ee.0p-25f, 0.28498786688f\n Lg4 = reinterpret(0x3E789E26), // 0xf89e26.0p-26f, 0.24279078841f\n Ox1p25f = reinterpret(0x4C000000); // 0x1p25f\n\n var ux = reinterpret(x);\n var k = 0;\n var sign = ux >> 31;\n if (sign || ux < 0x00800000) {\n if (ux << 1 == 0) return -1 / (x * x);\n if (sign) return (x - x) / 0.0;\n k -= 25;\n x *= Ox1p25f;\n ux = reinterpret(x);\n } else if (ux >= 0x7F800000) {\n return x;\n } else if (ux == 0x3F800000) {\n return 0;\n }\n ux += 0x3F800000 - 0x3F3504F3;\n k += i32(ux >> 23) - 0x7F;\n ux = (ux & 0x007FFFFF) + 0x3F3504F3;\n x = reinterpret(ux);\n var f = x - 1.0;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * Lg4);\n var t2 = z * (Lg1 + w * Lg3);\n var r = t2 + t1;\n var hfsq: f32 = 0.5 * f * f;\n var hi = f - hfsq;\n ux = reinterpret(hi);\n ux &= 0xFFFFF000;\n hi = reinterpret(ux);\n var lo = f - hi - hfsq + s * (hfsq + r);\n var dk = k;\n return dk * log10_2lo + (lo + hi) * ivln10lo + lo * ivln10hi + hi * ivln10hi + dk * log10_2hi;\n }\n\n export function log1p(x: f32): f32 { // see: musl/src/math/log1pf.c and SUN COPYRIGHT NOTICE above\n const\n ln2_hi = reinterpret(0x3F317180), // 6.9313812256e-01\n ln2_lo = reinterpret(0x3717F7D1), // 9.0580006145e-06\n Lg1 = reinterpret(0x3F2AAAAA), // 0xaaaaaa.0p-24f, 0.66666662693f\n Lg2 = reinterpret(0x3ECCCE13), // 0xccce13.0p-25f, 0.40000972152f\n Lg3 = reinterpret(0x3E91E9EE), // 0x91e9ee.0p-25f, 0.28498786688f\n Lg4 = reinterpret(0x3E789E26); // 0xf89e26.0p-26f, 0.24279078841f\n\n var ix = reinterpret(x);\n var c: f32 = 0;\n var f: f32 = 0;\n var k = 1;\n if (ix < 0x3ED413D0 || bool(ix >> 31)) {\n if (ix >= 0xBF800000) {\n if (x == -1) return x / 0.0;\n return (x - x) / 0.0;\n }\n if (ix << 1 < 0x33800000 << 1) return x;\n if (ix <= 0xBE95F619) {\n k = 0;\n c = 0;\n f = x;\n }\n } else if (ix >= 0x7F800000) return x;\n if (k) {\n let uf: f32 = 1 + x;\n let iu = reinterpret(uf);\n iu += 0x3F800000 - 0x3F3504F3;\n k = i32(iu >> 23) - 0x7F;\n if (k < 25) {\n c = k >= 2 ? 1 - (uf - x) : x - (uf - 1);\n c /= uf;\n } else c = 0;\n iu = (iu & 0x007FFFFF) + 0x3F3504F3;\n f = reinterpret(iu) - 1;\n }\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * Lg4);\n var t2 = z * (Lg1 + w * Lg3);\n var r = t2 + t1;\n var hfsq: f32 = 0.5 * f * f;\n var dk = k;\n return s * (hfsq + r) + (dk * ln2_lo + c) - hfsq + f + dk * ln2_hi;\n }\n\n export function log2(x: f32): f32 { // see: musl/src/math/log2f.c and SUN COPYRIGHT NOTICE above\n if (ASC_SHRINK_LEVEL < 1) {\n return log2f_lut(x);\n } else {\n const\n ivln2hi = reinterpret(0x3FB8B000), // 1.4428710938e+00f\n ivln2lo = reinterpret(0xB9389AD4), // -1.7605285393e-04\n Lg1 = reinterpret(0x3F2AAAAA), // 0xaaaaaa.0p-24f, 0.66666662693f\n Lg2 = reinterpret(0x3ECCCE13), // 0xccce13.0p-25f, 0.40000972152f\n Lg3 = reinterpret(0x3E91E9EE), // 0x91e9ee.0p-25f, 0.28498786688f\n Lg4 = reinterpret(0x3E789E26), // 0xf89e26.0p-26f, 0.24279078841f\n Ox1p25f = reinterpret(0x4C000000); // 0x1p25f\n\n let ux = reinterpret(x);\n let k = 0;\n let sign = ux >> 31;\n if (sign || ux < 0x00800000) {\n if (ux << 1 == 0) return -1 / (x * x);\n if (sign) return (x - x) / 0.0;\n k -= 25;\n x *= Ox1p25f;\n ux = reinterpret(x);\n } else if (ux >= 0x7F800000) {\n return x;\n } else if (ux == 0x3F800000) {\n return 0;\n }\n ux += 0x3F800000 - 0x3F3504F3;\n k += i32(ux >> 23) - 0x7F;\n ux = (ux & 0x007FFFFF) + 0x3F3504F3;\n x = reinterpret(ux);\n let f = x - 1.0;\n let s = f / (2.0 + f);\n let z = s * s;\n let w = z * z;\n let t1 = w * (Lg2 + w * Lg4);\n let t2 = z * (Lg1 + w * Lg3);\n let r = t2 + t1;\n let hfsq: f32 = 0.5 * f * f;\n let hi = f - hfsq;\n let u = reinterpret(hi);\n u &= 0xFFFFF000;\n hi = reinterpret(u);\n let lo: f32 = f - hi - hfsq + s * (hfsq + r);\n let dk = k;\n return (lo + hi) * ivln2lo + lo * ivln2hi + hi * ivln2hi + dk;\n }\n }\n\n // @ts-ignore: decorator\n @inline\n export function max(value1: f32, value2: f32): f32 {\n return builtin_max(value1, value2);\n }\n\n // @ts-ignore: decorator\n @inline\n export function min(value1: f32, value2: f32): f32 {\n return builtin_min(value1, value2);\n }\n\n export function pow(x: f32, y: f32): f32 {\n // TODO: remove this fast pathes after introduced own mid-end IR with \"stdlib call simplify\" transforms\n if (builtin_abs(y) <= 2) {\n if (y == 2.0) return x * x;\n if (y == 0.5) {\n return select(\n builtin_abs(builtin_sqrt(x)),\n Infinity,\n x != -Infinity\n );\n }\n if (y == -1.0) return 1 / x;\n if (y == 1.0) return x;\n if (y == 0.0) return 1.0;\n }\n if (ASC_SHRINK_LEVEL < 1) {\n // see: musl/src/math/powf.c\n return powf_lut(x, y);\n } else {\n // based on: jdh8/metallic/src/math/float/powf.c\n if (y == 0) return 1;\n // @ts-ignore: cast\n if (isNaN(x) | isNaN(y)) {\n return NaN;\n }\n let sign: u32 = 0;\n let uy = reinterpret(y);\n let ux = reinterpret(x);\n let sx = ux >> 31;\n ux &= 0x7FFFFFFF;\n if (sx && nearest(y) == y) {\n x = -x;\n sx = 0;\n sign = u32(nearest(y * 0.5) != y * 0.5) << 31;\n }\n let m: u32;\n if (ux == 0x3F800000) { // x == 1\n m = sx | u32((uy & 0x7FFFFFFF) == 0x7F800000) ? 0x7FC00000 : 0x3F800000;\n } else if (ux == 0) {\n m = uy < 0 ? 0x7F800000 : 0;\n } else if (ux == 0x7F800000) {\n m = uy < 0 ? 0 : 0x7F800000;\n } else if (sx) {\n m = 0x7FC00000;\n } else {\n m = reinterpret(exp2f(y * log2f(x)));\n }\n return reinterpret(m | sign);\n }\n }\n\n // @ts-ignore: decorator\n @inline\n export function seedRandom(value: i64): void {\n NativeMath.seedRandom(value);\n }\n\n // Using xoroshiro64starstar from http://xoshiro.di.unimi.it/xoroshiro64starstar.c\n export function random(): f32 {\n if (!random_seeded) seedRandom(reinterpret(seed()));\n\n var s0 = random_state0_32;\n var s1 = random_state1_32;\n var r = rotl(s0 * 0x9E3779BB, 5) * 5;\n\n s1 ^= s0;\n random_state0_32 = rotl(s0, 26) ^ s1 ^ (s1 << 9);\n random_state1_32 = rotl(s1, 13);\n\n return reinterpret((r >> 9) | (127 << 23)) - 1.0;\n }\n\n export function round(x: f32): f32 {\n if (ASC_SHRINK_LEVEL > 0) {\n return builtin_ceil(x) - f32(builtin_ceil(x) - 0.5 > x);\n } else {\n let roundUp = builtin_ceil(x);\n return select(roundUp, roundUp - 1.0, roundUp - 0.5 <= x);\n }\n }\n\n export function sign(x: f32): f32 {\n if (ASC_SHRINK_LEVEL > 0) {\n return select(builtin_copysign(1, x), x, builtin_abs(x) > 0);\n } else {\n return select(1, select(-1, x, x < 0), x > 0);\n }\n }\n\n // @ts-ignore: decorator\n @inline\n export function signbit(x: f32): bool {\n return (reinterpret(x) >>> 31);\n }\n\n export function sin(x: f32): f32 { // see: musl/src/math/sinf.c\n const\n s1pio2 = reinterpret(0x3FF921FB54442D18), // M_PI_2 * 1\n s2pio2 = reinterpret(0x400921FB54442D18), // M_PI_2 * 2\n s3pio2 = reinterpret(0x4012D97C7F3321D2), // M_PI_2 * 3\n s4pio2 = reinterpret(0x401921FB54442D18); // M_PI_2 * 4\n\n var ux = reinterpret(x);\n var sign = ux >> 31;\n ux &= 0x7FFFFFFF;\n\n if (ux <= 0x3F490FDA) { // |x| ~<= π/4\n if (ux < 0x39800000) { // |x| < 2**-12\n return x;\n }\n return sin_kernf(x);\n }\n\n if (ASC_SHRINK_LEVEL < 1) {\n if (ux <= 0x407B53D1) { // |x| ~<= 5π/4\n if (ux <= 0x4016CBE3) { // |x| ~<= 3π/4\n return sign ? -cos_kernf(x + s1pio2) : cos_kernf(x - s1pio2);\n }\n return sin_kernf(-(sign ? x + s2pio2 : x - s2pio2));\n }\n\n if (ux <= 0x40E231D5) { // |x| ~<= 9π/4\n if (ux <= 0x40AFEDDF) { // |x| ~<= 7π/4\n return sign ? cos_kernf(x + s3pio2) : -cos_kernf(x - s3pio2);\n }\n return sin_kernf(sign ? x + s4pio2 : x - s4pio2);\n }\n }\n\n // sin(Inf or NaN) is NaN\n if (ux >= 0x7F800000) return x - x;\n\n var n = rempio2f(x, ux, sign);\n var y = rempio2f_y;\n\n var t = n & 1 ? cos_kernf(y) : sin_kernf(y);\n return n & 2 ? -t : t;\n }\n\n export function sinh(x: f32): f32 { // see: musl/src/math/sinhf.c\n var u = reinterpret(x) & 0x7FFFFFFF;\n var a = reinterpret(u);\n var h = builtin_copysign(0.5, x);\n if (u < 0x42B17217) {\n let t = expm1(a);\n if (u < 0x3F800000) {\n if (u < 0x3F800000 - (12 << 23)) return x;\n return h * (2 * t - t * t / (t + 1));\n }\n return h * (t + t / (t + 1));\n }\n return expo2f(a, 2 * h);\n }\n\n // @ts-ignore: decorator\n @inline\n export function sqrt(x: f32): f32 {\n return builtin_sqrt(x);\n }\n\n export function tan(x: f32): f32 { // see: musl/src/math/tanf.c\n const\n t1pio2 = reinterpret(0x3FF921FB54442D18), // 1 * M_PI_2\n t2pio2 = reinterpret(0x400921FB54442D18), // 2 * M_PI_2\n t3pio2 = reinterpret(0x4012D97C7F3321D2), // 3 * M_PI_2\n t4pio2 = reinterpret(0x401921FB54442D18); // 4 * M_PI_2\n\n var ux = reinterpret(x);\n var sign = ux >> 31;\n ux &= 0x7FFFFFFF;\n\n if (ux <= 0x3F490FDA) { // |x| ~<= π/4\n if (ux < 0x39800000) { // |x| < 2**-12\n return x;\n }\n return tan_kernf(x, 0);\n }\n\n if (ASC_SHRINK_LEVEL < 1) {\n if (ux <= 0x407B53D1) { // |x| ~<= 5π/4\n if (ux <= 0x4016CBE3) { // |x| ~<= 3π/4\n return tan_kernf((sign ? x + t1pio2 : x - t1pio2), 1);\n } else {\n return tan_kernf((sign ? x + t2pio2 : x - t2pio2), 0);\n }\n }\n if (ux <= 0x40E231D5) { // |x| ~<= 9π/4\n if (ux <= 0x40AFEDDF) { // |x| ~<= 7π/4\n return tan_kernf((sign ? x + t3pio2 : x - t3pio2), 1);\n } else {\n return tan_kernf((sign ? x + t4pio2 : x - t4pio2), 0);\n }\n }\n }\n\n // tan(Inf or NaN) is NaN\n if (ux >= 0x7F800000) return x - x;\n\n // argument reduction\n var n = rempio2f(x, ux, sign);\n var y = rempio2f_y;\n return tan_kernf(y, n & 1);\n }\n\n export function tanh(x: f32): f32 { // see: musl/src/math/tanhf.c\n var u = reinterpret(x);\n u &= 0x7FFFFFFF;\n var y = reinterpret(u);\n var t: f32;\n if (u > 0x3F0C9F54) {\n if (u > 0x41200000) t = 1 + 0 / y;\n else {\n t = expm1(2 * y);\n t = 1 - 2 / (t + 2);\n }\n } else if (u > 0x3E82C578) {\n t = expm1(2 * y);\n t = t / (t + 2);\n } else if (u >= 0x00800000) {\n t = expm1(-2 * y);\n t = -t / (t + 2);\n } else t = y;\n return builtin_copysign(t, x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function trunc(x: f32): f32 {\n return builtin_trunc(x);\n }\n\n export function scalbn(x: f32, n: i32): f32 { // see: https://git.musl-libc.org/cgit/musl/tree/src/math/scalbnf.c\n const\n Ox1p24f = reinterpret(0x4B800000),\n Ox1p127f = reinterpret(0x7F000000),\n Ox1p_126f = reinterpret(0x00800000);\n\n var y = x;\n if (n > 127) {\n y *= Ox1p127f;\n n -= 127;\n if (n > 127) {\n y *= Ox1p127f;\n n = builtin_min(n - 127, 127);\n }\n } else if (n < -126) {\n y *= Ox1p_126f * Ox1p24f;\n n += 126 - 24;\n if (n < -126) {\n y *= Ox1p_126f * Ox1p24f;\n n = builtin_max(n + 126 - 24, -126);\n }\n }\n return y * reinterpret((0x7F + n) << 23);\n }\n\n export function mod(x: f32, y: f32): f32 { // see: musl/src/math/fmodf.c\n if (builtin_abs(y) == 1.0) {\n // x % 1, x % -1 ==> sign(x) * abs(x - 1.0 * trunc(x / 1.0))\n // TODO: move this rule to compiler's optimization pass.\n // It could be apply for any x % C_pot, where \"C_pot\" is pow of two const.\n return builtin_copysign(x - builtin_trunc(x), x);\n }\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n var ex = i32(ux >> 23 & 0xFF);\n var ey = i32(uy >> 23 & 0xFF);\n var sm = ux & 0x80000000;\n var uy1 = uy << 1;\n if (uy1 == 0 || ex == 0xFF || isNaN(y)) {\n let m = x * y;\n return m / m;\n }\n var ux1 = ux << 1;\n if (ux1 <= uy1) {\n return x * f32(ux1 != uy1);\n }\n if (!ex) {\n ex -= builtin_clz(ux << 9);\n ux <<= 1 - ex;\n } else {\n ux &= -1 >> 9;\n ux |= 1 << 23;\n }\n if (!ey) {\n ey -= builtin_clz(uy << 9);\n uy <<= 1 - ey;\n } else {\n uy &= u32(-1) >> 9;\n uy |= 1 << 23;\n }\n while (ex > ey) {\n if (ux >= uy) {\n if (ux == uy) return 0 * x;\n ux -= uy;\n }\n ux <<= 1;\n --ex;\n }\n if (ux >= uy) {\n if (ux == uy) return 0 * x;\n ux -= uy;\n }\n // for (; !(ux >> 23); ux <<= 1) --ex;\n var shift = builtin_clz(ux << 8);\n ex -= shift;\n ux <<= shift;\n if (ex > 0) {\n ux -= 1 << 23;\n ux |= ex << 23;\n } else {\n ux >>= -ex + 1;\n }\n return reinterpret(ux | sm);\n }\n\n export function rem(x: f32, y: f32): f32 { // see: musl/src/math/remquof.c\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n var ex = i32(ux >> 23 & 0xFF);\n var ey = i32(uy >> 23 & 0xFF);\n var uxi = ux;\n if (uy << 1 == 0 || ex == 0xFF || isNaN(y)) return (x * y) / (x * y);\n if (ux << 1 == 0) return x;\n if (!ex) {\n ex -= builtin_clz(uxi << 9);\n uxi <<= 1 - ex;\n } else {\n uxi &= u32(-1) >> 9;\n uxi |= 1 << 23;\n }\n if (!ey) {\n ey -= builtin_clz(uy << 9);\n uy <<= 1 - ey;\n } else {\n uy &= u32(-1) >> 9;\n uy |= 1 << 23;\n }\n var q = 0;\n do {\n if (ex < ey) {\n if (ex + 1 == ey) break; // goto end\n return x;\n }\n while (ex > ey) {\n if (uxi >= uy) {\n uxi -= uy;\n ++q;\n }\n uxi <<= 1;\n q <<= 1;\n --ex;\n }\n if (uxi >= uy) {\n uxi -= uy;\n ++q;\n }\n if (uxi == 0) ex = -30;\n else {\n let shift = builtin_clz(uxi << 8);\n ex -= shift;\n uxi <<= shift;\n }\n break;\n } while (false);\n // end:\n if (ex > 0) {\n uxi -= 1 << 23;\n uxi |= ex << 23;\n } else {\n uxi >>= -ex + 1;\n }\n x = reinterpret(uxi);\n y = builtin_abs(y);\n var x2 = x + x;\n if (ex == ey || (ex + 1 == ey && (x2 > y || (x2 == y && bool(q & 1))))) {\n x -= y;\n // q++;\n }\n return ux < 0 ? -x : x;\n }\n\n export function sincos(x: f32): void { // see: musl/tree/src/math/sincosf.c\n const\n s1pio2 = reinterpret(0x3FF921FB54442D18), // 1 * M_PI_2\n s2pio2 = reinterpret(0x400921FB54442D18), // 2 * M_PI_2\n s3pio2 = reinterpret(0x4012D97C7F3321D2), // 3 * M_PI_2\n s4pio2 = reinterpret(0x401921FB54442D18); // 4 * M_PI_2\n\n var ux = reinterpret(x);\n var sign = ux >> 31;\n ux &= 0x7FFFFFFF;\n\n if (ux <= 0x3F490FDA) { // |x| ~<= π/4\n if (ux < 0x39800000) { // |x| < 2**-12\n sincos_sin = x;\n sincos_cos = 1;\n return;\n }\n sincos_sin = sin_kernf(x);\n sincos_cos = cos_kernf(x);\n return;\n }\n if (ASC_SHRINK_LEVEL < 1) {\n if (ux <= 0x407B53D1) { // |x| ~<= 5π/4\n if (ux <= 0x4016CBE3) { // |x| ~<= 3π/4\n if (sign) {\n sincos_sin = -cos_kernf(x + s1pio2);\n sincos_cos = sin_kernf(x + s1pio2);\n } else {\n sincos_sin = cos_kernf(s1pio2 - x);\n sincos_cos = sin_kernf(s1pio2 - x);\n }\n return;\n }\n // -sin(x + c) is not correct if x+c could be 0: -0 vs +0\n sincos_sin = -sin_kernf(sign ? x + s2pio2 : x - s2pio2);\n sincos_cos = -cos_kernf(sign ? x + s2pio2 : x - s2pio2);\n return;\n }\n if (ux <= 0x40E231D5) { // |x| ~<= 9π/4\n if (ux <= 0x40AFEDDF) { // |x| ~<= 7π/4\n if (sign) {\n sincos_sin = cos_kernf(x + s3pio2);\n sincos_cos = -sin_kernf(x + s3pio2);\n } else {\n sincos_sin = -cos_kernf(x - s3pio2);\n sincos_cos = sin_kernf(x - s3pio2);\n }\n return;\n }\n sincos_sin = sin_kernf(sign ? x + s4pio2 : x - s4pio2);\n sincos_cos = cos_kernf(sign ? x + s4pio2 : x - s4pio2);\n return;\n }\n }\n // sin(Inf or NaN) is NaN\n if (ux >= 0x7F800000) {\n let xx = x - x;\n sincos_sin = xx;\n sincos_cos = xx;\n return;\n }\n // general argument reduction needed\n var n = rempio2f(x, ux, sign);\n var y = rempio2f_y;\n var s = sin_kernf(y);\n var c = cos_kernf(y);\n var sin = s, cos = c;\n if (n & 1) {\n sin = c;\n cos = -s;\n }\n if (n & 2) {\n sin = -sin;\n cos = -cos;\n }\n sincos_sin = sin;\n sincos_cos = cos;\n }\n}\n\nexport function ipow32(x: i32, e: i32): i32 {\n var out = 1;\n if (ASC_SHRINK_LEVEL < 1) {\n if (x == 2) {\n return select(1 << e, 0, e < 32);\n }\n if (e <= 0) {\n if (x == -1) return select(-1, 1, e & 1);\n return i32(e == 0) | i32(x == 1);\n }\n else if (e == 1) return x;\n else if (e == 2) return x * x;\n else if (e < 32) {\n let log = 32 - clz(e);\n // 32 = 2 ^ 5, so need only five cases.\n // But some extra cases needs for properly overflowing\n switch (log) {\n case 5: {\n if (e & 1) out *= x;\n e >>>= 1;\n x *= x;\n }\n case 4: {\n if (e & 1) out *= x;\n e >>>= 1;\n x *= x;\n }\n case 3: {\n if (e & 1) out *= x;\n e >>>= 1;\n x *= x;\n }\n case 2: {\n if (e & 1) out *= x;\n e >>>= 1;\n x *= x;\n }\n case 1: {\n if (e & 1) out *= x;\n }\n }\n return out;\n }\n }\n while (e) {\n if (e & 1) out *= x;\n e >>>= 1;\n x *= x;\n }\n return out;\n}\n\nexport function ipow64(x: i64, e: i64): i64 {\n var out: i64 = 1;\n if (ASC_SHRINK_LEVEL < 1) {\n if (x == 2) {\n return select(1 << e, 0, e < 64);\n }\n if (e <= 0) {\n if (x == -1) return select(-1, 1, e & 1);\n return i64(e == 0) | i64(x == 1);\n }\n else if (e == 1) return x;\n else if (e == 2) return x * x;\n else if (e < 64) {\n let log = 64 - clz(e);\n // 64 = 2 ^ 6, so need only six cases.\n // But some extra cases needs for properly overflowing\n switch (log) {\n case 6: {\n if (e & 1) out *= x;\n e >>>= 1;\n x *= x;\n }\n case 5: {\n if (e & 1) out *= x;\n e >>>= 1;\n x *= x;\n }\n case 4: {\n if (e & 1) out *= x;\n e >>>= 1;\n x *= x;\n }\n case 3: {\n if (e & 1) out *= x;\n e >>>= 1;\n x *= x;\n }\n case 2: {\n if (e & 1) out *= x;\n e >>>= 1;\n x *= x;\n }\n case 1: {\n if (e & 1) out *= x;\n }\n }\n return out;\n }\n }\n while (e) {\n if (e & 1) out *= x;\n e >>>= 1;\n x *= x;\n }\n return out;\n}\n\n/*\nTODO:\nIn compile time if only exponent is constant we could replace ipow32/ipow64 by shortest addition chains\nwhich usually faster than exponentiation by squaring\n\nfor ipow32 and e < 32:\n\nlet b: i32, c: i32, d: i32, h: i32, k: i32, g: i32;\nswitch (e) {\n case 1: return x;\n case 2: return x * x;\n case 3: return x * x * x;\n case 4: return (b = x * x) * b;\n case 5: return (b = x * x) * b * x;\n case 6: return (b = x * x) * b * b;\n case 7: return (b = x * x) * b * b * x;\n case 8: return (d = (b = x * x) * b) * d;\n case 9: return (c = x * x * x) * c * c;\n case 10: return (d = (b = x * x) * b) * d * b;\n case 11: return (d = (b = x * x) * b) * d * b * x;\n case 12: return (d = (b = x * x) * b) * d * d;\n case 13: return (d = (b = x * x) * b) * d * d * x;\n case 14: return (d = (b = x * x) * b) * d * d * b;\n case 15: return (k = (b = x * x) * b * x) * k * k;\n case 16: return (h = (d = (b = x * x) * b) * d) * h;\n case 17: return (h = (d = (b = x * x) * b) * d) * h * x;\n case 18: return (h = (d = (b = x * x) * b) * d * x) * h;\n case 19: return (h = (d = (b = x * x) * b) * d * x) * h * x;\n case 20: return (h = (k = (b = x * x) * b * x) * k) * h;\n case 21: return (h = (k = (b = x * x) * b * x) * k) * h * x;\n case 22: return (g = (h = (k = (b = x * x) * b * x) * k) * x) * g;\n case 23: return (h = (d = (c = (b = x * x) * x) * b) * d) * h * c;\n case 24: return (h = (d = (c = x * x * x) * c) * d) * h;\n case 25: return (h = (d = (c = x * x * x) * c) * d) * h * x;\n case 26: return (g = (h = (d = (c = x * x * x) * c) * d) * x) * g;\n case 27: return (h = (d = (c = x * x * x) * c) * d) * h * c;\n case 28: return (h = (d = (c = x * x * x) * c * x) * d) * h;\n case 29: return (h = (d = (c = x * x * x) * c * x) * d) * h * x;\n case 30: return (h = (d = (c = x * x * x) * c) * d * c) * h;\n case 31: return (h = (d = (c = x * x * x) * c) * d * c) * h * x;\n}\n\nfor ipow64: TODO\nswitch (e) {\n case 32:\n ...\n case 63:\n}\n*/\n","// This file is shared with the compiler and must remain portable\n\n/** Runtime types. */\nexport enum Runtime {\n /** Simple bump allocator without GC. */\n Stub = 0,\n /** Stop the world semi-automatic GC. */\n Minimal = 1,\n /** incremental GC. */\n Incremental = 2,\n}\n","import { compareImpl } from \"./string\";\n\ntype Comparator = (a: T, b: T) => i32;\n\n// @ts-ignore: decorator\n@lazy @inline const EMPTY = u32.MAX_VALUE;\n// @ts-ignore: decorator\n@inline const INSERTION_SORT_THRESHOLD = 48;\n// @ts-ignore: decorator\n@inline const MIN_RUN_LENGTH = 32;\n\n// @ts-ignore: decorator\n@inline\nfunction log2u(n: u32): u32 {\n return 31 - clz(n);\n}\n\n// @ts-ignore: decorator\n@inline\nexport function COMPARATOR(): Comparator {\n if (isInteger()) {\n if (isSigned() && sizeof() <= 4) {\n return (a, b) => i32(a) - i32(b);\n } else {\n return (a, b) => i32(a > b) - i32(a < b);\n }\n } else if (isFloat()) {\n if (sizeof() == 4) {\n return (a, b) => {\n var ia = reinterpret(f32(a));\n var ib = reinterpret(f32(b));\n ia ^= ia >> 31 >>> 1;\n ib ^= ib >> 31 >>> 1;\n return i32(ia > ib) - i32(ia < ib);\n };\n } else {\n return (a, b) => {\n var ia = reinterpret(f64(a));\n var ib = reinterpret(f64(b));\n ia ^= ia >> 63 >>> 1;\n ib ^= ib >> 63 >>> 1;\n return i32(ia > ib) - i32(ia < ib);\n };\n }\n } else if (isString()) {\n return (a, b) => {\n if (\n changetype(a) == changetype(b) ||\n changetype(a) == 0 ||\n changetype(b) == 0\n ) return 0;\n var alen = changetype(a).length;\n var blen = changetype(b).length;\n if (!(alen | blen)) return 0;\n if (!alen) return -1;\n if (!blen) return 1;\n let res = compareImpl(\n changetype(a), 0,\n changetype(b), 0,\n min(alen, blen)\n );\n return res ? res : alen - blen;\n };\n } else {\n return (a, b) => i32(a > b) - i32(a < b);\n }\n}\n\n// Power Sort implementation (stable) from paper \"Nearly-Optimal Mergesorts\"\n// https://arxiv.org/pdf/1805.04154.pdf\n// This method usually outperform TimSort.\n// TODO: refactor c >>> 31 to c < 0 when binaryen will support this opt\nexport function SORT(\n ptr: usize,\n len: i32,\n comparator: Comparator\n): void {\n if (len <= INSERTION_SORT_THRESHOLD) {\n if (len <= 1) return;\n if (ASC_SHRINK_LEVEL < 1) {\n switch (len) {\n case 3: {\n let a = load(ptr, 0);\n let b = load(ptr, 1 << alignof());\n let c = comparator(a, b) > 0;\n store(ptr, select(b, a, c), 0);\n a = select(a, b, c);\n b = load(ptr, 2 << alignof());\n c = comparator(a, b) > 0;\n store(ptr, select(b, a, c), 1 << alignof());\n store(ptr, select(a, b, c), 2 << alignof());\n }\n case 2: {\n let a = load(ptr, 0);\n let b = load(ptr, 1 << alignof());\n let c = comparator(a, b) > 0;\n store(ptr, select(b, a, c), 0);\n store(ptr, select(a, b, c), 1 << alignof());\n return;\n }\n }\n }\n insertionSort(ptr, 0, len - 1, 0, comparator);\n return;\n }\n\n var lgPlus2 = log2u(len) + 2;\n var lgPlus2Size = lgPlus2 << alignof();\n var leftRunStartBuf = __alloc(lgPlus2Size << 1);\n var leftRunEndBuf = leftRunStartBuf + lgPlus2Size;\n\n for (let i: u32 = 0; i < lgPlus2; ++i) {\n store(leftRunStartBuf + (i << alignof()), EMPTY);\n }\n\n var buffer = __alloc(len << alignof());\n\n var hi = len - 1;\n var endA = extendRunRight(ptr, 0, hi, comparator);\n var lenA = endA + 1;\n\n if (lenA < MIN_RUN_LENGTH) {\n endA = min(hi, MIN_RUN_LENGTH - 1);\n insertionSort(ptr, 0, endA, lenA, comparator);\n }\n\n var top: u32 = 0, startA = 0;\n while (endA < hi) {\n let startB = endA + 1;\n let endB = extendRunRight(ptr, startB, hi, comparator);\n let lenB = endB - startB + 1;\n\n if (lenB < MIN_RUN_LENGTH) {\n endB = min(hi, startB + MIN_RUN_LENGTH - 1);\n insertionSort(ptr, startB, endB, lenB, comparator);\n }\n\n let k = nodePower(0, hi, startA, startB, endB);\n\n for (let i = top; i > k; --i) {\n let start = load(leftRunStartBuf + (i << alignof()));\n if (start != EMPTY) {\n mergeRuns(\n ptr,\n start,\n load(leftRunEndBuf + (i << alignof())) + 1,\n endA,\n buffer,\n comparator\n );\n startA = start;\n store(leftRunStartBuf + (i << alignof()), EMPTY);\n }\n }\n\n store(leftRunStartBuf + (k << alignof()), startA);\n store(leftRunEndBuf + (k << alignof()), endA);\n startA = startB;\n endA = endB;\n top = k;\n }\n\n for (let i = top; i != 0; --i) {\n let start = load(leftRunStartBuf + (i << alignof()));\n if (start != EMPTY) {\n mergeRuns(\n ptr,\n start,\n load(leftRunEndBuf + (i << alignof())) + 1,\n hi,\n buffer,\n comparator\n );\n }\n }\n // dealloc aux buffers\n __free(buffer);\n __free(leftRunStartBuf);\n}\n\nfunction insertionSort(\n ptr: usize,\n left: i32,\n right: i32,\n presorted: i32,\n comparator: Comparator\n): void {\n if (ASC_SHRINK_LEVEL >= 1) {\n // slightly improved original insertion sort\n for (let i = left + presorted; i <= right; ++i) {\n let j = i - 1;\n let a = load(ptr + (i << alignof()));\n while (j >= left) {\n let b = load(ptr + (j << alignof()));\n if (comparator(a, b) < 0) {\n store(ptr + (j << alignof()), b, 1 << alignof()); --j;\n } else break;\n }\n store(ptr + (j << alignof()), a, 1 << alignof());\n }\n } else {\n // even-odd two-way insertion sort which allow increase minRunLen\n let range = right - left + 1;\n let i = left + select(range & 1, presorted - ((range - presorted) & 1), presorted == 0);\n for (; i <= right; i += 2) {\n let a = load(ptr + (i << alignof()), 0);\n let b = load(ptr + (i << alignof()), 1 << alignof());\n let min = b, max = a;\n if (comparator(a, b) <= 0) {\n min = a, max = b;\n }\n let j = i - 1;\n while (j >= left) {\n a = load(ptr + (j << alignof()));\n if (comparator(a, max) > 0) {\n store(ptr + (j << alignof()), a, 2 << alignof()); --j;\n } else break;\n }\n store(ptr + (j << alignof()), max, 2 << alignof());\n while (j >= left) {\n a = load(ptr + (j << alignof()));\n if (comparator(a, min) > 0) {\n store(ptr + (j << alignof()), a, 1 << alignof()); --j;\n } else break;\n }\n store(ptr + (j << alignof()), min, 1 << alignof());\n }\n }\n}\n\nfunction nodePower(left: u32, right: u32, startA: u32, startB: u32, endB: u32): u32 {\n var n: u64 = right - left + 1;\n var s = startB - (left << 1);\n var l = startA + s;\n var r = endB + s + 1;\n var a = (l << 30) / n;\n var b = (r << 30) / n;\n return clz((a ^ b));\n}\n\nfunction extendRunRight(\n ptr: usize,\n i: i32,\n right: i32,\n comparator: Comparator\n): i32 {\n if (i == right) return i;\n var j = i;\n if (comparator(\n load(ptr + ( j << alignof())),\n load(ptr + (++j << alignof()))\n ) > 0) {\n while (\n j < right &&\n (comparator(\n load(ptr + (j << alignof()), 1 << alignof()),\n load(ptr + (j << alignof()))\n ) >>> 31) // < 0\n ) ++j;\n // reverse\n let k = j;\n while (i < k) {\n let tmp = load(ptr + (i << alignof()));\n store(ptr + (i << alignof()), load(ptr + (k << alignof()))); ++i;\n store(ptr + (k << alignof()), tmp); --k;\n }\n } else {\n while (\n j < right &&\n comparator(\n load(ptr + (j << alignof()), 1 << alignof()),\n load(ptr + (j << alignof()))\n ) >= 0\n ) ++j;\n }\n return j;\n}\n\n// Merges arr[l..m - 1] and arr[m..r]\nfunction mergeRuns(\n ptr: usize,\n l: i32,\n m: i32,\n r: i32,\n buffer: usize,\n comparator: Comparator\n): void {\n --m;\n var i: i32, j: i32, t = r + m;\n for (i = m + 1; i > l; --i) {\n store(\n buffer + ((i - 1) << alignof()),\n load(ptr + ((i - 1) << alignof()))\n );\n }\n for (j = m; j < r; ++j) {\n store(\n buffer + ((t - j) << alignof()),\n load(ptr + (j << alignof()), 1 << alignof())\n );\n }\n for (let k = l; k <= r; ++k) {\n let a = load(buffer + (j << alignof()));\n let b = load(buffer + (i << alignof()));\n if (comparator(a, b) < 0) {\n store(ptr + (k << alignof()), a);\n --j;\n } else {\n store(ptr + (k << alignof()), b);\n ++i;\n }\n }\n}\n","/// \n\nimport { BLOCK_MAXSIZE } from \"./rt/common\";\nimport { Runtime } from \"shared/runtime\";\nimport { COMPARATOR, SORT } from \"./util/sort\";\nimport { REVERSE, FILL } from \"./util/bytes\";\nimport { joinBooleanArray, joinIntegerArray, joinFloatArray, joinStringArray, joinReferenceArray } from \"./util/string\";\nimport { idof, isArray as builtin_isArray } from \"./builtins\";\nimport { E_INDEXOUTOFRANGE, E_INVALIDLENGTH, E_EMPTYARRAY, E_HOLEYARRAY } from \"./util/error\";\n\n// @ts-ignore: decorator\n@inline @lazy const MIN_SIZE: usize = 8;\n\n/** Ensures that the given array has _at least_ the specified backing size. */\nfunction ensureCapacity(array: usize, newSize: usize, alignLog2: u32, canGrow: bool = true): void {\n // Depends on the fact that Arrays mimic ArrayBufferView\n var oldCapacity = changetype(array).byteLength;\n if (newSize > oldCapacity >>> alignLog2) {\n if (newSize > BLOCK_MAXSIZE >>> alignLog2) throw new RangeError(E_INVALIDLENGTH);\n let oldData = changetype(changetype(array).buffer);\n // Grows old capacity by factor of two.\n // Make sure we don't reach BLOCK_MAXSIZE for new growed capacity.\n let newCapacity = max(newSize, MIN_SIZE) << alignLog2;\n if (canGrow) newCapacity = max(min(oldCapacity << 1, BLOCK_MAXSIZE), newCapacity);\n let newData = __renew(oldData, newCapacity);\n // __new / __renew already init memory range as zeros in Incremental runtime.\n // So try to avoid this.\n if (ASC_RUNTIME != Runtime.Incremental) {\n memory.fill(newData + oldCapacity, 0, newCapacity - oldCapacity);\n }\n if (newData != oldData) { // oldData has been free'd\n store(array, newData, offsetof(\"buffer\"));\n store(array, newData, offsetof(\"dataStart\"));\n __link(array, changetype(newData), false);\n }\n store(array, newCapacity, offsetof(\"byteLength\"));\n }\n}\n\nexport class Array {\n [key: number]: T;\n\n // Mimicking ArrayBufferView isn't strictly necessary here but is done to allow glue code\n // to work with typed and normal arrays interchangeably. Technically, normal arrays do not need\n // `dataStart` (equals `buffer`) and `byteLength` (equals computed `buffer.byteLength`), but the\n // block is 16 bytes anyway so it's fine to have a couple extra fields in there.\n\n private buffer: ArrayBuffer;\n @unsafe readonly dataStart: usize;\n private byteLength: i32; // Uses here as capacity\n\n // Also note that Array with non-nullable T must guard against uninitialized null values\n // whenever an element is accessed. Otherwise, the compiler wouldn't be able to guarantee\n // type-safety anymore. For lack of a better word, such an array is \"holey\".\n\n private length_: i32;\n\n static isArray(value: U): bool {\n return isReference() ? changetype(value) != 0 && builtin_isArray(value) : false;\n }\n\n static create(capacity: i32 = 0): Array {\n WARNING(\"'Array.create' is deprecated. Use 'new Array' instead, making sure initial elements are initialized.\");\n var array = new Array(capacity);\n array.length = 0;\n return array;\n }\n\n constructor(length: i32 = 0) {\n if (length > BLOCK_MAXSIZE >>> alignof()) throw new RangeError(E_INVALIDLENGTH);\n // reserve capacity for at least MIN_SIZE elements\n var bufferSize = max(length, MIN_SIZE) << alignof();\n var buffer = changetype(__new(bufferSize, idof()));\n if (ASC_RUNTIME != Runtime.Incremental) {\n memory.fill(changetype(buffer), 0, bufferSize);\n }\n this.buffer = buffer; // links\n this.dataStart = changetype(buffer);\n this.byteLength = bufferSize;\n this.length_ = length;\n }\n\n get length(): i32 {\n return this.length_;\n }\n\n set length(newLength: i32) {\n ensureCapacity(changetype(this), newLength, alignof(), false);\n this.length_ = newLength;\n }\n\n every(fn: (value: T, index: i32, array: Array) => bool): bool {\n for (let i = 0, len = this.length_; i < min(len, this.length_); ++i) {\n if (!fn(load(this.dataStart + (i << alignof())), i, this)) return false;\n }\n return true;\n }\n\n findIndex(fn: (value: T, index: i32, array: Array) => bool): i32 {\n for (let i = 0, len = this.length_; i < min(len, this.length_); ++i) {\n if (fn(load(this.dataStart + (i << alignof())), i, this)) return i;\n }\n return -1;\n }\n\n findLastIndex(fn: (value: T, index: i32, array: Array) => bool): i32 {\n for (let i = this.length_ - 1; i >= 0; --i) {\n if (fn(load(this.dataStart + (i << alignof())), i, this)) return i;\n }\n return -1;\n }\n\n @operator(\"[]\") private __get(index: i32): T {\n if (index >= this.length_) throw new RangeError(E_INDEXOUTOFRANGE);\n var value = load(this.dataStart + (index << alignof()));\n if (isReference()) {\n if (!isNullable()) {\n if (!changetype(value)) throw new Error(E_HOLEYARRAY);\n }\n }\n return value;\n }\n\n @unsafe @operator(\"{}\") private __uget(index: i32): T {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator(\"[]=\") private __set(index: i32, value: T): void {\n if (index >= this.length_) {\n if (index < 0) throw new RangeError(E_INDEXOUTOFRANGE);\n ensureCapacity(changetype(this), index + 1, alignof());\n this.length_ = index + 1;\n }\n this.__uset(index, value);\n }\n\n @unsafe @operator(\"{}=\") private __uset(index: i32, value: T): void {\n store(this.dataStart + (index << alignof()), value);\n if (isManaged()) {\n __link(changetype(this), changetype(value), true);\n }\n }\n\n at(index: i32): T {\n var len = this.length_;\n index += select(0, len, index >= 0);\n if (index >= len) throw new RangeError(E_INDEXOUTOFRANGE);\n var value = load(this.dataStart + (index << alignof()));\n if (isReference()) {\n if (!isNullable()) {\n if (!changetype(value)) throw new Error(E_HOLEYARRAY);\n }\n }\n return value;\n }\n\n fill(value: T, start: i32 = 0, end: i32 = i32.MAX_VALUE): Array {\n if (isManaged()) {\n FILL(this.dataStart, this.length_, changetype(value), start, end);\n __link(changetype(this), changetype(value), false);\n } else {\n FILL(this.dataStart, this.length_, value, start, end);\n }\n return this;\n }\n\n includes(value: T, fromIndex: i32 = 0): bool {\n if (isFloat()) {\n let len = this.length_;\n if (len == 0 || fromIndex >= len) return false;\n if (fromIndex < 0) fromIndex = max(len + fromIndex, 0);\n let ptr = this.dataStart;\n while (fromIndex < len) {\n let elem = load(ptr + (fromIndex << alignof()));\n // @ts-ignore\n if (elem == value || isNaN(elem) & isNaN(value)) return true;\n ++fromIndex;\n }\n return false;\n } else {\n return this.indexOf(value, fromIndex) >= 0;\n }\n }\n\n indexOf(value: T, fromIndex: i32 = 0): i32 {\n var len = this.length_;\n if (len == 0 || fromIndex >= len) return -1;\n if (fromIndex < 0) fromIndex = max(len + fromIndex, 0);\n var ptr = this.dataStart;\n while (fromIndex < len) {\n if (load(ptr + (fromIndex << alignof())) == value) return fromIndex;\n ++fromIndex;\n }\n return -1;\n }\n\n lastIndexOf(value: T, fromIndex: i32 = this.length_): i32 {\n var len = this.length_;\n if (len == 0) return -1;\n if (fromIndex < 0) fromIndex = len + fromIndex;\n else if (fromIndex >= len) fromIndex = len - 1;\n var ptr = this.dataStart;\n while (fromIndex >= 0) {\n if (load(ptr + (fromIndex << alignof())) == value) return fromIndex;\n --fromIndex;\n }\n return -1;\n }\n\n push(value: T): i32 {\n var oldLen = this.length_;\n var len = oldLen + 1;\n ensureCapacity(changetype(this), len, alignof());\n if (isManaged()) {\n store(this.dataStart + (oldLen << alignof()), changetype(value));\n __link(changetype(this), changetype(value), true);\n } else {\n store(this.dataStart + (oldLen << alignof()), value);\n }\n this.length_ = len;\n return len;\n }\n\n concat(other: Array): Array {\n var thisLen = this.length_;\n var otherLen = other.length_;\n var outLen = thisLen + otherLen;\n if (outLen > BLOCK_MAXSIZE >>> alignof()) throw new Error(E_INVALIDLENGTH);\n var out = changetype>(__newArray(outLen, alignof(), idof>()));\n var outStart = out.dataStart;\n var thisSize = thisLen << alignof();\n if (isManaged()) {\n let thisStart = this.dataStart;\n for (let offset: usize = 0; offset < thisSize; offset += sizeof()) {\n let ref = load(thisStart + offset);\n store(outStart + offset, ref);\n __link(changetype(out), ref, true);\n }\n outStart += thisSize;\n let otherStart = other.dataStart;\n let otherSize = otherLen << alignof();\n for (let offset: usize = 0; offset < otherSize; offset += sizeof()) {\n let ref = load(otherStart + offset);\n store(outStart + offset, ref);\n __link(changetype(out), ref, true);\n }\n } else {\n memory.copy(outStart, this.dataStart, thisSize);\n memory.copy(outStart + thisSize, other.dataStart, otherLen << alignof());\n }\n return out;\n }\n\n copyWithin(target: i32, start: i32, end: i32 = i32.MAX_VALUE): Array {\n var ptr = this.dataStart;\n var len = this.length_;\n\n end = min(end, len);\n\n var to = target < 0 ? max(len + target, 0) : min(target, len);\n var from = start < 0 ? max(len + start, 0) : min(start, len);\n var last = end < 0 ? max(len + end, 0) : min(end, len);\n var count = min(last - from, len - to);\n\n memory.copy( // is memmove\n ptr + (to << alignof()),\n ptr + (from << alignof()),\n count << alignof()\n );\n return this;\n }\n\n pop(): T {\n var len = this.length_;\n if (len < 1) throw new RangeError(E_EMPTYARRAY);\n var val = load(this.dataStart + ((--len) << alignof()));\n this.length_ = len;\n return val;\n }\n\n forEach(fn: (value: T, index: i32, array: Array) => void): void {\n for (let i = 0, len = this.length_; i < min(len, this.length_); ++i) {\n fn(load(this.dataStart + (i << alignof())), i, this);\n }\n }\n\n map(fn: (value: T, index: i32, array: Array) => U): Array {\n var len = this.length_;\n var out = changetype>(__newArray(len, alignof(), idof>()));\n var outStart = out.dataStart;\n for (let i = 0; i < min(len, this.length_); ++i) {\n let result = fn(load(this.dataStart + (i << alignof())), i, this);\n store(outStart + (i << alignof()), result);\n if (isManaged()) {\n __link(changetype(out), changetype(result), true);\n }\n }\n return out;\n }\n\n filter(fn: (value: T, index: i32, array: Array) => bool): Array {\n var result = changetype>(__newArray(0, alignof(), idof>()));\n for (let i = 0, len = this.length_; i < min(len, this.length_); ++i) {\n let value = load(this.dataStart + (i << alignof()));\n if (fn(value, i, this)) result.push(value);\n }\n return result;\n }\n\n reduce(\n fn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U,\n initialValue: U\n ): U {\n var acc = initialValue;\n for (let i = 0, len = this.length_; i < min(len, this.length_); ++i) {\n acc = fn(acc, load(this.dataStart + (i << alignof())), i, this);\n }\n return acc;\n }\n\n reduceRight(\n fn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U,\n initialValue: U\n ): U {\n var acc = initialValue;\n for (let i = this.length_ - 1; i >= 0; --i) {\n acc = fn(acc, load(this.dataStart + (i << alignof())), i, this);\n }\n return acc;\n }\n\n shift(): T {\n var len = this.length_;\n if (len < 1) throw new RangeError(E_EMPTYARRAY);\n var base = this.dataStart;\n var element = load(base);\n var lastIndex = len - 1;\n memory.copy(\n base,\n base + sizeof(),\n lastIndex << alignof()\n );\n if (isReference()) {\n store(base + (lastIndex << alignof()), 0);\n } else {\n // @ts-ignore\n store(base + (lastIndex << alignof()), 0);\n }\n this.length_ = lastIndex;\n return element;\n }\n\n some(fn: (value: T, index: i32, array: Array) => bool): bool {\n for (let i = 0, len = this.length_; i < min(len, this.length_); ++i) {\n if (fn(load(this.dataStart + (i << alignof())), i, this)) return true;\n }\n return false;\n }\n\n unshift(value: T): i32 {\n var len = this.length_ + 1;\n ensureCapacity(changetype(this), len, alignof());\n var ptr = this.dataStart;\n memory.copy(\n ptr + sizeof(),\n ptr,\n (len - 1) << alignof()\n );\n store(ptr, value);\n if (isManaged()) {\n __link(changetype(this), changetype(value), true);\n }\n this.length_ = len;\n return len;\n }\n\n slice(start: i32 = 0, end: i32 = i32.MAX_VALUE): Array {\n var len = this.length_;\n start = start < 0 ? max(start + len, 0) : min(start, len);\n end = end < 0 ? max(end + len, 0) : min(end , len);\n len = max(end - start, 0);\n var slice = changetype>(__newArray(len, alignof(), idof>()));\n var sliceBase = slice.dataStart;\n var thisBase = this.dataStart + (start << alignof());\n if (isManaged()) {\n let off = 0;\n let end = len << alignof();\n while (off < end) {\n let ref = load(thisBase + off);\n store(sliceBase + off, ref);\n __link(changetype(slice), ref, true);\n off += sizeof();\n }\n } else {\n memory.copy(sliceBase, thisBase, len << alignof());\n }\n return slice;\n }\n\n splice(start: i32, deleteCount: i32 = i32.MAX_VALUE): Array {\n var len = this.length_;\n start = start < 0 ? max(len + start, 0) : min(start, len);\n deleteCount = max(min(deleteCount, len - start), 0);\n var result = changetype>(__newArray(deleteCount, alignof(), idof>()));\n var resultStart = result.dataStart;\n var thisStart = this.dataStart;\n var thisBase = thisStart + (start << alignof());\n memory.copy(\n resultStart,\n thisBase,\n deleteCount << alignof()\n );\n var offset = start + deleteCount;\n if (len != offset) {\n memory.copy(\n thisBase,\n thisStart + (offset << alignof()),\n (len - offset) << alignof()\n );\n }\n this.length_ = len - deleteCount;\n return result;\n }\n\n reverse(): Array {\n REVERSE(this.dataStart, this.length_);\n return this;\n }\n\n sort(comparator: (a: T, b: T) => i32 = COMPARATOR()): Array {\n SORT(this.dataStart, this.length_, comparator);\n return this;\n }\n\n join(separator: string = \",\"): string {\n var ptr = this.dataStart;\n var len = this.length_;\n if (isBoolean()) return joinBooleanArray(ptr, len, separator);\n if (isInteger()) return joinIntegerArray(ptr, len, separator);\n if (isFloat()) return joinFloatArray(ptr, len, separator);\n\n if (ASC_SHRINK_LEVEL < 1) {\n if (isString()) return joinStringArray(ptr, len, separator);\n }\n // For rest objects and arrays use general join routine\n if (isReference()) return joinReferenceArray(ptr, len, separator);\n ERROR(\"unspported element type\");\n return unreachable();\n }\n\n flat(): T {\n if (!isArray()) {\n ERROR(\"Cannot call flat() on Array where T is not an Array.\");\n }\n // Get the length and data start values\n var ptr = this.dataStart;\n var len = this.length_;\n\n // calculate the end size with an initial pass\n var size = 0;\n for (let i = 0; i < len; ++i) {\n let child = load(ptr + (i << alignof()));\n size += child == 0 ? 0 : load(child, offsetof(\"length_\"));\n }\n\n // calculate the byteLength of the resulting backing ArrayBuffer\n const align = alignof>();\n var byteLength = size << align;\n var outBuffer = changetype(__new(byteLength, idof()));\n\n // create the return value and initialize it\n var outArray = changetype(__new(offsetof(), idof()));\n store(changetype(outArray), size, offsetof(\"length_\"));\n\n // byteLength, dataStart, and buffer are all readonly\n store(changetype(outArray), byteLength, offsetof(\"byteLength\"));\n store(changetype(outArray), changetype(outBuffer), offsetof(\"dataStart\"));\n store(changetype(outArray), changetype(outBuffer), offsetof(\"buffer\"));\n __link(changetype(outArray), changetype(outBuffer), false);\n\n // set the elements\n var resultOffset: usize = 0;\n for (let i = 0; i < len; ++i) { // for each child\n let child = load(ptr + (i << alignof()));\n\n // ignore null arrays\n if (!child) continue;\n\n // copy the underlying buffer data to the result buffer\n let childDataLength = load(child, offsetof(\"length_\")) << align;\n memory.copy(\n changetype(outBuffer) + resultOffset,\n load(child, offsetof(\"dataStart\")),\n childDataLength\n );\n\n // advance the result length\n resultOffset += childDataLength;\n }\n\n // if the `valueof` type is managed, we must link each reference\n if (isManaged>()) {\n for (let i = 0; i < size; ++i) {\n let ref = load(changetype(outBuffer) + (i << usize(alignof>())));\n __link(changetype(outBuffer), ref, true);\n }\n }\n\n return outArray;\n }\n\n toString(): string {\n return this.join();\n }\n\n // RT integration\n\n @unsafe private __visit(cookie: u32): void {\n if (isManaged()) {\n let cur = this.dataStart;\n let end = cur + (this.length_ << alignof());\n while (cur < end) {\n let val = load(cur);\n if (val) __visit(val, cookie);\n cur += sizeof();\n }\n }\n __visit(changetype(this.buffer), cookie);\n }\n}\n","// Common error messages for use across the standard library. Keeping error messages compact\n// and reusing them where possible ensures minimal static data in binaries.\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_INDEXOUTOFRANGE: string = \"Index out of range\";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_VALUEOUTOFRANGE: string = \"Value out of range\";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_INVALIDLENGTH: string = \"Invalid length\";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_EMPTYARRAY: string = \"Array is empty\";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_HOLEYARRAY: string = \"Element type must be nullable if array is holey\";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_NOTIMPLEMENTED: string = \"Not implemented\";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_KEYNOTFOUND: string = \"Key does not exist\";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_ALLOCATION_TOO_LARGE: string = \"Allocation too large\";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_ALREADY_PINNED: string = \"Object already pinned\";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_NOT_PINNED: string = \"Object is not pinned\";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_URI_MALFORMED: string = \"URI malformed\";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_INVALIDDATE: string = \"Invalid Date\";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_UNPAIRED_SURROGATE: string = \"Unpaired surrogate\";\n"]} diff --git a/packages/noise/dist/index.js b/packages/noise/dist/index.js deleted file mode 100644 index 2f13e1a1f5..0000000000 --- a/packages/noise/dist/index.js +++ /dev/null @@ -1,6 +0,0 @@ -<<<<<<< HEAD -"use strict";var p=Object.create;var i=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var w=Object.getPrototypeOf,h=Object.prototype.hasOwnProperty;var y=(e,r)=>{for(var n in r)i(e,n,{get:r[n],enumerable:!0})},o=(e,r,n,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let m of d(r))!h.call(e,m)&&m!==n&&i(e,m,{get:()=>r[m],enumerable:!(t=f(r,m))||t.enumerable});return e};var u=(e,r,n)=>(n=e!=null?p(w(e)):{},o(r||!e||!e.__esModule?i(n,"default",{value:e,enumerable:!0}):n,e)),g=e=>o(i({},"__esModule",{value:!0}),e);var A={};y(A,{createPerlin:()=>_,createSplines:()=>P,fetchAndCompileWasmModule:()=>c,lerp:()=>l});module.exports=g(A);var s=u(require("fs")),b=u(require("path")),a={};async function c(e){try{return await WebAssembly.compileStreaming(fetch(e))}catch{return WebAssembly.compile(s.default.readFileSync(e))}}function l(e,r,n){return r+e*(n-r)}function x(e,r){let n=e.findIndex(t=>t[0]>=r);if(n>0)return[e[n-1],e[n]];console.warn("out of reach",r,e)}function P(e){return r=>{let n=x(e,r);if(!n)return r;let t=(r-n[0][0])/(n[1][0]-n[0][0]);return l(t,n[0][1],n[1][1])}}async function _(){let e=await c(a.url?new URL("../build/release.wasm",a.url):b.default.resolve(__dirname,"../build/release.wasm"));return(await WebAssembly.instantiate(e,{env:{abort:n=>{throw new Error("abort called in wasm perlin: "+n)}}})).exports.perlin}0&&(module.exports={createPerlin,createSplines,fetchAndCompileWasmModule,lerp}); -======= -"use strict";var p=Object.create;var o=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var w=Object.getPrototypeOf,h=Object.prototype.hasOwnProperty;var y=(e,r)=>{for(var n in r)o(e,n,{get:r[n],enumerable:!0})},i=(e,r,n,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let m of d(r))!h.call(e,m)&&m!==n&&o(e,m,{get:()=>r[m],enumerable:!(t=f(r,m))||t.enumerable});return e};var u=(e,r,n)=>(n=e!=null?p(w(e)):{},i(r||!e||!e.__esModule?o(n,"default",{value:e,enumerable:!0}):n,e)),x=e=>i(o({},"__esModule",{value:!0}),e);var A={};y(A,{createPerlin:()=>_,createSplines:()=>P,fetchAndCompileWasmModule:()=>c,lerp:()=>l});module.exports=x(A);var s=u(require("fs")),b=u(require("path")),a={};async function c(e){try{return await WebAssembly.compileStreaming(fetch(e))}catch{return WebAssembly.compile(s.default.readFileSync(e))}}function l(e,r,n){return r+e*(n-r)}function g(e,r){let n=e.findIndex(t=>t[0]>=r);if(n>0)return[e[n-1],e[n]];console.warn("out of reach",r,e)}function P(e){return r=>{let n=g(e,r);if(!n)return r;let t=(r-n[0][0])/(n[1][0]-n[0][0]);return l(t,n[0][1],n[1][1])}}async function _(){let e=await c(a.url?new URL("../build/release.wasm",a.url):b.default.resolve(__dirname,"../build/release.wasm"));return(await WebAssembly.instantiate(e,{env:{abort:n=>{throw new Error("abort called in wasm perlin: "+n)}}})).exports.perlin}0&&(module.exports={createPerlin,createSplines,fetchAndCompileWasmModule,lerp}); ->>>>>>> a4f03cd4 (chore: export types) -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/packages/noise/dist/index.js.map b/packages/noise/dist/index.js.map deleted file mode 100644 index 3308c1340f..0000000000 --- a/packages/noise/dist/index.js.map +++ /dev/null @@ -1,5 +0,0 @@ -<<<<<<< HEAD -{"version":3,"sources":["../ts/index.ts"],"sourcesContent":["import fs from \"fs\";\nimport path from \"path\";\n// import * as buffer from \"buffer\";\n// const { Buffer } = buffer;\n\n// export function encodePackedU32(inputs: number[]): Buffer {\n// const buffer = Buffer.from(inputs.map((i) => i.toString(16).padStart(8, \"0\")).join(\"\"), \"hex\");\n// return buffer;\n// }\n\nexport async function fetchAndCompileWasmModule(url: URL | string) {\n try {\n return await WebAssembly.compileStreaming(fetch(url));\n } catch {\n return WebAssembly.compile(fs.readFileSync(url));\n }\n}\n\nexport function lerp(t: number, a: number, b: number): number {\n return a + t * (b - a);\n}\n\nfunction getSplinePoints(splines: [number, number][], x: number) {\n const index = splines.findIndex((s) => s[0] >= x);\n if (index > 0) return [splines[index - 1], splines[index]];\n console.warn(\"out of reach\", x, splines);\n return undefined;\n}\n\nexport function createSplines(splines: [number, number][]): (x: number) => number {\n return (x: number) => {\n const points = getSplinePoints(splines, x);\n if (!points) return x;\n\n const t = (x - points[0][0]) / (points[1][0] - points[0][0]);\n const height = lerp(t, points[0][1], points[1][1]);\n\n return height;\n };\n}\n\ntype Perlin = (_x: number, _y: number, _z: number, denom: number) => number;\n\nexport async function createPerlin(): Promise {\n const wasmModule = await fetchAndCompileWasmModule(\n import.meta.url\n ? new URL(\"../build/release.wasm\", import.meta.url)\n : path.resolve(__dirname, \"../build/release.wasm\"),\n );\n const wasmInstance = await WebAssembly.instantiate(wasmModule, {\n env: {\n abort: (e: string) => {\n throw new Error(\"abort called in wasm perlin: \" + e);\n },\n },\n });\n\n return wasmInstance.exports.perlin as Perlin;\n}\n"],"mappings":"0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,kBAAAE,EAAA,kBAAAC,EAAA,8BAAAC,EAAA,SAAAC,IAAA,eAAAC,EAAAN,GAAA,IAAAO,EAAe,iBACfC,EAAiB,mBADjBC,EAAA,GAUA,eAAsBL,EAA0BM,EAAmB,CACjE,GAAI,CACF,OAAO,MAAM,YAAY,iBAAiB,MAAMA,CAAG,CAAC,CACtD,MAAE,CACA,OAAO,YAAY,QAAQ,EAAAC,QAAG,aAAaD,CAAG,CAAC,CACjD,CACF,CAEO,SAASL,EAAKO,EAAWC,EAAWC,EAAmB,CAC5D,OAAOD,EAAID,GAAKE,EAAID,EACtB,CAEA,SAASE,EAAgBC,EAA6BC,EAAW,CAC/D,IAAMC,EAAQF,EAAQ,UAAWG,GAAMA,EAAE,CAAC,GAAKF,CAAC,EAChD,GAAIC,EAAQ,EAAG,MAAO,CAACF,EAAQE,EAAQ,CAAC,EAAGF,EAAQE,CAAK,CAAC,EACzD,QAAQ,KAAK,eAAgBD,EAAGD,CAAO,CAEzC,CAEO,SAASb,EAAca,EAAoD,CAChF,OAAQC,GAAc,CACpB,IAAMG,EAASL,EAAgBC,EAASC,CAAC,EACzC,GAAI,CAACG,EAAQ,OAAOH,EAEpB,IAAM,GAAKA,EAAIG,EAAO,CAAC,EAAE,CAAC,IAAMA,EAAO,CAAC,EAAE,CAAC,EAAIA,EAAO,CAAC,EAAE,CAAC,GAG1D,OAFef,EAAK,EAAGe,EAAO,CAAC,EAAE,CAAC,EAAGA,EAAO,CAAC,EAAE,CAAC,CAAC,CAGnD,CACF,CAIA,eAAsBlB,GAAgC,CACpD,IAAMmB,EAAa,MAAMjB,EACvBK,EAAY,IACR,IAAI,IAAI,wBAAyBA,EAAY,GAAG,EAChD,EAAAa,QAAK,QAAQ,UAAW,uBAAuB,CACrD,EASA,OARqB,MAAM,YAAY,YAAYD,EAAY,CAC7D,IAAK,CACH,MAAQE,GAAc,CACpB,MAAM,IAAI,MAAM,gCAAkCA,CAAC,CACrD,CACF,CACF,CAAC,GAEmB,QAAQ,MAC9B","names":["ts_exports","__export","createPerlin","createSplines","fetchAndCompileWasmModule","lerp","__toCommonJS","import_fs","import_path","import_meta","url","fs","t","a","b","getSplinePoints","splines","x","index","s","points","wasmModule","path","e"]} -======= -{"version":3,"sources":["../ts/index.ts"],"sourcesContent":["import fs from \"fs\";\nimport path from \"path\";\n// import * as buffer from \"buffer\";\n// const { Buffer } = buffer;\n\n// export function encodePackedU32(inputs: number[]): Buffer {\n// const buffer = Buffer.from(inputs.map((i) => i.toString(16).padStart(8, \"0\")).join(\"\"), \"hex\");\n// return buffer;\n// }\n\nexport async function fetchAndCompileWasmModule(url: URL | string) {\n try {\n return await WebAssembly.compileStreaming(fetch(url));\n } catch {\n return WebAssembly.compile(fs.readFileSync(url));\n }\n}\n\nexport function lerp(t: number, a: number, b: number): number {\n return a + t * (b - a);\n}\n\nfunction getSplinePoints(splines: [number, number][], x: number) {\n const index = splines.findIndex((s) => s[0] >= x);\n if (index > 0) return [splines[index - 1], splines[index]];\n console.warn(\"out of reach\", x, splines);\n return undefined;\n}\n\nexport function createSplines(splines: [number, number][]): (x: number) => number {\n return (x: number) => {\n const points = getSplinePoints(splines, x);\n if (!points) return x;\n\n const t = (x - points[0][0]) / (points[1][0] - points[0][0]);\n const height = lerp(t, points[0][1], points[1][1]);\n\n return height;\n };\n}\n\nexport type Perlin = (_x: number, _y: number, _z: number, denom: number) => number;\n\nexport async function createPerlin(): Promise {\n const wasmModule = await fetchAndCompileWasmModule(\n import.meta.url\n ? new URL(\"../build/release.wasm\", import.meta.url)\n : path.resolve(__dirname, \"../build/release.wasm\")\n );\n const wasmInstance = await WebAssembly.instantiate(wasmModule, {\n env: {\n abort: (e: string) => {\n throw new Error(\"abort called in wasm perlin: \" + e);\n },\n },\n });\n\n return wasmInstance.exports.perlin as Perlin;\n}\n"],"mappings":"0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,kBAAAE,EAAA,kBAAAC,EAAA,8BAAAC,EAAA,SAAAC,IAAA,eAAAC,EAAAN,GAAA,IAAAO,EAAe,iBACfC,EAAiB,mBADjBC,EAAA,GAUA,eAAsBL,EAA0BM,EAAmB,CACjE,GAAI,CACF,OAAO,MAAM,YAAY,iBAAiB,MAAMA,CAAG,CAAC,CACtD,MAAE,CACA,OAAO,YAAY,QAAQ,EAAAC,QAAG,aAAaD,CAAG,CAAC,CACjD,CACF,CAEO,SAASL,EAAKO,EAAWC,EAAWC,EAAmB,CAC5D,OAAOD,EAAID,GAAKE,EAAID,EACtB,CAEA,SAASE,EAAgBC,EAA6BC,EAAW,CAC/D,IAAMC,EAAQF,EAAQ,UAAWG,GAAMA,EAAE,CAAC,GAAKF,CAAC,EAChD,GAAIC,EAAQ,EAAG,MAAO,CAACF,EAAQE,EAAQ,CAAC,EAAGF,EAAQE,CAAK,CAAC,EACzD,QAAQ,KAAK,eAAgBD,EAAGD,CAAO,CAEzC,CAEO,SAASb,EAAca,EAAoD,CAChF,OAAQC,GAAc,CACpB,IAAMG,EAASL,EAAgBC,EAASC,CAAC,EACzC,GAAI,CAACG,EAAQ,OAAOH,EAEpB,IAAM,GAAKA,EAAIG,EAAO,CAAC,EAAE,CAAC,IAAMA,EAAO,CAAC,EAAE,CAAC,EAAIA,EAAO,CAAC,EAAE,CAAC,GAG1D,OAFef,EAAK,EAAGe,EAAO,CAAC,EAAE,CAAC,EAAGA,EAAO,CAAC,EAAE,CAAC,CAAC,CAGnD,CACF,CAIA,eAAsBlB,GAAgC,CACpD,IAAMmB,EAAa,MAAMjB,EACvBK,EAAY,IACR,IAAI,IAAI,wBAAyBA,EAAY,GAAG,EAChD,EAAAa,QAAK,QAAQ,UAAW,uBAAuB,CACrD,EASA,OARqB,MAAM,YAAY,YAAYD,EAAY,CAC7D,IAAK,CACH,MAAQE,GAAc,CACpB,MAAM,IAAI,MAAM,gCAAkCA,CAAC,CACrD,CACF,CACF,CAAC,GAEmB,QAAQ,MAC9B","names":["ts_exports","__export","createPerlin","createSplines","fetchAndCompileWasmModule","lerp","__toCommonJS","import_fs","import_path","import_meta","url","fs","t","a","b","getSplinePoints","splines","x","index","s","points","wasmModule","path","e"]} ->>>>>>> a4f03cd4 (chore: export types) diff --git a/packages/noise/dist/index.mjs b/packages/noise/dist/index.mjs deleted file mode 100644 index f41ab31244..0000000000 --- a/packages/noise/dist/index.mjs +++ /dev/null @@ -1,6 +0,0 @@ -<<<<<<< HEAD -import m from"fs";import i from"path";async function o(n){try{return await WebAssembly.compileStreaming(fetch(n))}catch{return WebAssembly.compile(m.readFileSync(n))}}function u(n,r,e){return r+n*(e-r)}function a(n,r){let e=n.findIndex(t=>t[0]>=r);if(e>0)return[n[e-1],n[e]];console.warn("out of reach",r,n)}function l(n){return r=>{let e=a(n,r);if(!e)return r;let t=(r-e[0][0])/(e[1][0]-e[0][0]);return u(t,e[0][1],e[1][1])}}async function p(){let n=await o(import.meta.url?new URL("../build/release.wasm",import.meta.url):i.resolve(__dirname,"../build/release.wasm"));return(await WebAssembly.instantiate(n,{env:{abort:e=>{throw new Error("abort called in wasm perlin: "+e)}}})).exports.perlin}export{p as createPerlin,l as createSplines,o as fetchAndCompileWasmModule,u as lerp}; -======= -import m from"fs";import o from"path";async function i(n){try{return await WebAssembly.compileStreaming(fetch(n))}catch{return WebAssembly.compile(m.readFileSync(n))}}function u(n,r,e){return r+n*(e-r)}function a(n,r){let e=n.findIndex(t=>t[0]>=r);if(e>0)return[n[e-1],n[e]];console.warn("out of reach",r,n)}function l(n){return r=>{let e=a(n,r);if(!e)return r;let t=(r-e[0][0])/(e[1][0]-e[0][0]);return u(t,e[0][1],e[1][1])}}async function p(){let n=await i(import.meta.url?new URL("../build/release.wasm",import.meta.url):o.resolve(__dirname,"../build/release.wasm"));return(await WebAssembly.instantiate(n,{env:{abort:e=>{throw new Error("abort called in wasm perlin: "+e)}}})).exports.perlin}export{p as createPerlin,l as createSplines,i as fetchAndCompileWasmModule,u as lerp}; ->>>>>>> a4f03cd4 (chore: export types) -//# sourceMappingURL=index.mjs.map \ No newline at end of file diff --git a/packages/noise/dist/index.mjs.map b/packages/noise/dist/index.mjs.map deleted file mode 100644 index e812c5e5b7..0000000000 --- a/packages/noise/dist/index.mjs.map +++ /dev/null @@ -1,5 +0,0 @@ -<<<<<<< HEAD -{"version":3,"sources":["../ts/index.ts"],"sourcesContent":["import fs from \"fs\";\nimport path from \"path\";\n// import * as buffer from \"buffer\";\n// const { Buffer } = buffer;\n\n// export function encodePackedU32(inputs: number[]): Buffer {\n// const buffer = Buffer.from(inputs.map((i) => i.toString(16).padStart(8, \"0\")).join(\"\"), \"hex\");\n// return buffer;\n// }\n\nexport async function fetchAndCompileWasmModule(url: URL | string) {\n try {\n return await WebAssembly.compileStreaming(fetch(url));\n } catch {\n return WebAssembly.compile(fs.readFileSync(url));\n }\n}\n\nexport function lerp(t: number, a: number, b: number): number {\n return a + t * (b - a);\n}\n\nfunction getSplinePoints(splines: [number, number][], x: number) {\n const index = splines.findIndex((s) => s[0] >= x);\n if (index > 0) return [splines[index - 1], splines[index]];\n console.warn(\"out of reach\", x, splines);\n return undefined;\n}\n\nexport function createSplines(splines: [number, number][]): (x: number) => number {\n return (x: number) => {\n const points = getSplinePoints(splines, x);\n if (!points) return x;\n\n const t = (x - points[0][0]) / (points[1][0] - points[0][0]);\n const height = lerp(t, points[0][1], points[1][1]);\n\n return height;\n };\n}\n\ntype Perlin = (_x: number, _y: number, _z: number, denom: number) => number;\n\nexport async function createPerlin(): Promise {\n const wasmModule = await fetchAndCompileWasmModule(\n import.meta.url\n ? new URL(\"../build/release.wasm\", import.meta.url)\n : path.resolve(__dirname, \"../build/release.wasm\"),\n );\n const wasmInstance = await WebAssembly.instantiate(wasmModule, {\n env: {\n abort: (e: string) => {\n throw new Error(\"abort called in wasm perlin: \" + e);\n },\n },\n });\n\n return wasmInstance.exports.perlin as Perlin;\n}\n"],"mappings":"AAAA,OAAOA,MAAQ,KACf,OAAOC,MAAU,OASjB,eAAsBC,EAA0BC,EAAmB,CACjE,GAAI,CACF,OAAO,MAAM,YAAY,iBAAiB,MAAMA,CAAG,CAAC,CACtD,MAAE,CACA,OAAO,YAAY,QAAQH,EAAG,aAAaG,CAAG,CAAC,CACjD,CACF,CAEO,SAASC,EAAKC,EAAWC,EAAWC,EAAmB,CAC5D,OAAOD,EAAID,GAAKE,EAAID,EACtB,CAEA,SAASE,EAAgBC,EAA6BC,EAAW,CAC/D,IAAMC,EAAQF,EAAQ,UAAWG,GAAMA,EAAE,CAAC,GAAKF,CAAC,EAChD,GAAIC,EAAQ,EAAG,MAAO,CAACF,EAAQE,EAAQ,CAAC,EAAGF,EAAQE,CAAK,CAAC,EACzD,QAAQ,KAAK,eAAgBD,EAAGD,CAAO,CAEzC,CAEO,SAASI,EAAcJ,EAAoD,CAChF,OAAQC,GAAc,CACpB,IAAMI,EAASN,EAAgBC,EAASC,CAAC,EACzC,GAAI,CAACI,EAAQ,OAAOJ,EAEpB,IAAM,GAAKA,EAAII,EAAO,CAAC,EAAE,CAAC,IAAMA,EAAO,CAAC,EAAE,CAAC,EAAIA,EAAO,CAAC,EAAE,CAAC,GAG1D,OAFeV,EAAK,EAAGU,EAAO,CAAC,EAAE,CAAC,EAAGA,EAAO,CAAC,EAAE,CAAC,CAAC,CAGnD,CACF,CAIA,eAAsBC,GAAgC,CACpD,IAAMC,EAAa,MAAMd,EACvB,YAAY,IACR,IAAI,IAAI,wBAAyB,YAAY,GAAG,EAChDD,EAAK,QAAQ,UAAW,uBAAuB,CACrD,EASA,OARqB,MAAM,YAAY,YAAYe,EAAY,CAC7D,IAAK,CACH,MAAQ,GAAc,CACpB,MAAM,IAAI,MAAM,gCAAkC,CAAC,CACrD,CACF,CACF,CAAC,GAEmB,QAAQ,MAC9B","names":["fs","path","fetchAndCompileWasmModule","url","lerp","t","a","b","getSplinePoints","splines","x","index","s","createSplines","points","createPerlin","wasmModule"]} -======= -{"version":3,"sources":["../ts/index.ts"],"sourcesContent":["import fs from \"fs\";\nimport path from \"path\";\n// import * as buffer from \"buffer\";\n// const { Buffer } = buffer;\n\n// export function encodePackedU32(inputs: number[]): Buffer {\n// const buffer = Buffer.from(inputs.map((i) => i.toString(16).padStart(8, \"0\")).join(\"\"), \"hex\");\n// return buffer;\n// }\n\nexport async function fetchAndCompileWasmModule(url: URL | string) {\n try {\n return await WebAssembly.compileStreaming(fetch(url));\n } catch {\n return WebAssembly.compile(fs.readFileSync(url));\n }\n}\n\nexport function lerp(t: number, a: number, b: number): number {\n return a + t * (b - a);\n}\n\nfunction getSplinePoints(splines: [number, number][], x: number) {\n const index = splines.findIndex((s) => s[0] >= x);\n if (index > 0) return [splines[index - 1], splines[index]];\n console.warn(\"out of reach\", x, splines);\n return undefined;\n}\n\nexport function createSplines(splines: [number, number][]): (x: number) => number {\n return (x: number) => {\n const points = getSplinePoints(splines, x);\n if (!points) return x;\n\n const t = (x - points[0][0]) / (points[1][0] - points[0][0]);\n const height = lerp(t, points[0][1], points[1][1]);\n\n return height;\n };\n}\n\nexport type Perlin = (_x: number, _y: number, _z: number, denom: number) => number;\n\nexport async function createPerlin(): Promise {\n const wasmModule = await fetchAndCompileWasmModule(\n import.meta.url\n ? new URL(\"../build/release.wasm\", import.meta.url)\n : path.resolve(__dirname, \"../build/release.wasm\")\n );\n const wasmInstance = await WebAssembly.instantiate(wasmModule, {\n env: {\n abort: (e: string) => {\n throw new Error(\"abort called in wasm perlin: \" + e);\n },\n },\n });\n\n return wasmInstance.exports.perlin as Perlin;\n}\n"],"mappings":"AAAA,OAAOA,MAAQ,KACf,OAAOC,MAAU,OASjB,eAAsBC,EAA0BC,EAAmB,CACjE,GAAI,CACF,OAAO,MAAM,YAAY,iBAAiB,MAAMA,CAAG,CAAC,CACtD,MAAE,CACA,OAAO,YAAY,QAAQH,EAAG,aAAaG,CAAG,CAAC,CACjD,CACF,CAEO,SAASC,EAAKC,EAAWC,EAAWC,EAAmB,CAC5D,OAAOD,EAAID,GAAKE,EAAID,EACtB,CAEA,SAASE,EAAgBC,EAA6BC,EAAW,CAC/D,IAAMC,EAAQF,EAAQ,UAAWG,GAAMA,EAAE,CAAC,GAAKF,CAAC,EAChD,GAAIC,EAAQ,EAAG,MAAO,CAACF,EAAQE,EAAQ,CAAC,EAAGF,EAAQE,CAAK,CAAC,EACzD,QAAQ,KAAK,eAAgBD,EAAGD,CAAO,CAEzC,CAEO,SAASI,EAAcJ,EAAoD,CAChF,OAAQC,GAAc,CACpB,IAAMI,EAASN,EAAgBC,EAASC,CAAC,EACzC,GAAI,CAACI,EAAQ,OAAOJ,EAEpB,IAAM,GAAKA,EAAII,EAAO,CAAC,EAAE,CAAC,IAAMA,EAAO,CAAC,EAAE,CAAC,EAAIA,EAAO,CAAC,EAAE,CAAC,GAG1D,OAFeV,EAAK,EAAGU,EAAO,CAAC,EAAE,CAAC,EAAGA,EAAO,CAAC,EAAE,CAAC,CAAC,CAGnD,CACF,CAIA,eAAsBC,GAAgC,CACpD,IAAMC,EAAa,MAAMd,EACvB,YAAY,IACR,IAAI,IAAI,wBAAyB,YAAY,GAAG,EAChDD,EAAK,QAAQ,UAAW,uBAAuB,CACrD,EASA,OARqB,MAAM,YAAY,YAAYe,EAAY,CAC7D,IAAK,CACH,MAAQ,GAAc,CACpB,MAAM,IAAI,MAAM,gCAAkC,CAAC,CACrD,CACF,CACF,CAAC,GAEmB,QAAQ,MAC9B","names":["fs","path","fetchAndCompileWasmModule","url","lerp","t","a","b","getSplinePoints","splines","x","index","s","createSplines","points","createPerlin","wasmModule"]} ->>>>>>> a4f03cd4 (chore: export types) diff --git a/packages/store-sync/src/createStoreSync.ts b/packages/store-sync/src/createStoreSync.ts index 5bc3f14c3c..8a93e8c133 100644 --- a/packages/store-sync/src/createStoreSync.ts +++ b/packages/store-sync/src/createStoreSync.ts @@ -1,22 +1,4 @@ import { storeEventsAbi } from "@latticexyz/store"; -import { - catchError, - combineLatest, - concat, - concatMap, - defer, - filter, - firstValueFrom, - from, - identity, - map, - of, - scan, - share, - shareReplay, - tap, - mergeMap, -} from "rxjs"; import { Hex, TransactionReceiptNotFoundError } from "viem"; import { StorageAdapter, @@ -29,6 +11,25 @@ import { WaitForTransactionResult, } from "./common"; import { createBlockStream } from "@latticexyz/block-logs-stream"; +import { + filter, + map, + tap, + from, + concat, + concatMap, + share, + firstValueFrom, + defer, + of, + catchError, + shareReplay, + combineLatest, + scan, + identity, + retry, + mergeMap, +} from "rxjs"; import { debug as parentDebug } from "./debug"; import { SyncStep } from "./SyncStep"; import { bigIntMax, chunk, isDefined, waitForIdle } from "@latticexyz/common/utils"; @@ -283,8 +284,10 @@ export async function createStoreSync( try { const lastBlock = blocks[0]; debug("fetching tx receipt for block", lastBlock.blockNumber); - const receipt = await publicClient.getTransactionReceipt({ hash: tx }); - return lastBlock.blockNumber >= receipt.blockNumber; + const { status, blockNumber, transactionHash } = await publicClient.getTransactionReceipt({ hash: tx }); + if (lastBlock.blockNumber >= blockNumber) { + return { status, blockNumber, transactionHash }; + } // eslint-disable-next-line @typescript-eslint/no-explicit-any } catch (error: any) { if (error instanceof TransactionReceiptNotFoundError || error.name === "TransactionReceiptNotFoundError") { diff --git a/packages/store/package.json b/packages/store/package.json index 20fe8dd76f..391219fd94 100644 --- a/packages/store/package.json +++ b/packages/store/package.json @@ -58,7 +58,7 @@ "test:ci": "pnpm run test" }, "dependencies": { - "@arktype/util": "0.0.29", + "@arktype/util": "0.0.27", "@latticexyz/common": "workspace:*", "@latticexyz/config": "workspace:*", "@latticexyz/protocol-parser": "workspace:*", diff --git a/packages/store/ts/config/v2/store.ts b/packages/store/ts/config/v2/store.ts index 2305f2fba4..2a694fac44 100644 --- a/packages/store/ts/config/v2/store.ts +++ b/packages/store/ts/config/v2/store.ts @@ -1,4 +1,4 @@ -import { flatMorph, narrow } from "@arktype/util"; +import { narrow } from "@arktype/util"; import { get, hasOwnKey, mergeIfUndefined } from "./generics"; import { UserTypes } from "./output"; import { CONFIG_DEFAULTS } from "./defaults"; @@ -64,10 +64,12 @@ export type resolveStore = { export function resolveStore(store: store): resolveStore { return { tables: resolveTables( - flatMorph(store.tables ?? {}, (tableKey, table) => { - const key = store.namespace ? `${store.namespace}__${tableKey}` : tableKey; - return [key, mergeIfUndefined(table, { namespace: store.namespace, name: tableKey })]; - }), + Object.fromEntries( + Object.entries(store.tables ?? {}).map(([tableKey, table]) => { + const key = store.namespace ? `${store.namespace}__${tableKey}` : tableKey; + return [key, mergeIfUndefined(table, { namespace: store.namespace, name: tableKey })]; + }), + ), extendedScope(store), ), userTypes: store.userTypes ?? {}, diff --git a/packages/world/package.json b/packages/world/package.json index 7a1273acc8..9b235ef3a4 100644 --- a/packages/world/package.json +++ b/packages/world/package.json @@ -53,7 +53,7 @@ "test:ci": "pnpm run test" }, "dependencies": { - "@arktype/util": "0.0.29", + "@arktype/util": "0.0.27", "@latticexyz/common": "workspace:*", "@latticexyz/config": "workspace:*", "@latticexyz/protocol-parser": "workspace:*", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 826b955231..a9eaddde34 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -799,8 +799,8 @@ importers: packages/store: dependencies: '@arktype/util': - specifier: 0.0.29 - version: 0.0.29 + specifier: 0.0.27 + version: 0.0.27 '@latticexyz/common': specifier: workspace:* version: link:../common @@ -1097,8 +1097,8 @@ importers: packages/world: dependencies: '@arktype/util': - specifier: 0.0.29 - version: 0.0.29 + specifier: 0.0.27 + version: 0.0.27 '@latticexyz/common': specifier: workspace:* version: link:../common @@ -1329,8 +1329,8 @@ packages: resolution: {integrity: sha512-MwtDGjbgfXWxlExjIL78HvPlWOma1XFEcDd3VWuCPMt/f+3TR7fXyiGFNlIYZGOYdOIU7qgjaE8dmbd6jdJa3Q==} dev: true - /@arktype/util@0.0.29: - resolution: {integrity: sha512-fDTBSVzxLj9k1ZjinkawmaQdcXFKMBVK8c+vqMPxwoa94mPMZxBo84yQcqyFVcIcWIkg6qQQmH1ozyT4nqFT/g==} + /@arktype/util@0.0.27: + resolution: {integrity: sha512-ZkPuSU8Q56YVgPInFhojLTujejM+VPfaZx6Guop41CvnozWFOTlC0uAHuDqvY4nYq3zXsMkRwm8LmaRZ3mslMg==} dev: false /@arktype/util@0.0.34: @@ -6126,6 +6126,17 @@ packages: update-browserslist-db: 1.0.13(browserslist@4.23.0) dev: true + /browserslist@4.23.0: + resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001611 + electron-to-chromium: 1.4.744 + node-releases: 2.0.14 + update-browserslist-db: 1.0.13(browserslist@4.23.0) + dev: true + /bs-logger@0.2.6: resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} engines: {node: '>= 6'} @@ -6305,6 +6316,10 @@ packages: resolution: {integrity: sha512-JFPQs34lHKx1B5t1EpQpWH4c+29zIyn/haGsbpfq3suuV9v56enjFt23zqijxGTMwy1p/4H2tjnQMY+p1WoAyA==} dev: true + /caniuse-lite@1.0.30001611: + resolution: {integrity: sha512-19NuN1/3PjA3QI8Eki55N8my4LzfkMCRLgCVfrl/slbSAchQfV0+GwjPrK3rq37As4UCLlM/DHajbKkAqbv92Q==} + dev: true + /case-anything@2.1.10: resolution: {integrity: sha512-JczJwVrCP0jPKh05McyVsuOg6AYosrB9XWZKbQzXeDAm2ClE/PJE/BcrrQrVyGYH7Jg8V/LDupmyL4kFlVsVFQ==} engines: {node: '>=12.13'} @@ -7147,6 +7162,10 @@ packages: resolution: {integrity: sha512-pkYpvwg8VyOTQAeBqZ7jsmpCjko1Qc6We1ZtZCjRyYbT5v4AIUKDy5cQTRotQlSSZmMr8jqpEt6JtOj5k7lR7A==} dev: true + /electron-to-chromium@1.4.744: + resolution: {integrity: sha512-nAGcF0yeKKfrP13LMFr5U1eghfFSvFLg302VUFzWlcjPOnUYd52yU5x6PBYrujhNbc4jYmZFrGZFK+xasaEzVA==} + dev: true + /elegant-spinner@1.0.1: resolution: {integrity: sha512-B+ZM+RXvRqQaAmkMlO/oSe5nMUOaUnyfGYCEHoR8wrXsZR2mA0XVibsxV1bvTwxdRWah1PkQqso2EzhILGHtEQ==} engines: {node: '>=0.10.0'} @@ -10583,6 +10602,10 @@ packages: resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} dev: true + /node-releases@2.0.14: + resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + dev: true + /nopt@6.0.0: resolution: {integrity: sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} @@ -13175,6 +13198,17 @@ packages: picocolors: 1.0.0 dev: true + /update-browserslist-db@1.0.13(browserslist@4.23.0): + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.23.0 + escalade: 3.1.2 + picocolors: 1.0.0 + dev: true + /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: From 40b865e789296c326fa7471d7a9ca390aae5f838 Mon Sep 17 00:00:00 2001 From: Dhvani Patel Date: Fri, 19 Apr 2024 14:15:31 +0100 Subject: [PATCH 29/32] fix: remove unused --- packages/cli/src/build.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/cli/src/build.ts b/packages/cli/src/build.ts index bc1355b478..094023ac18 100644 --- a/packages/cli/src/build.ts +++ b/packages/cli/src/build.ts @@ -5,7 +5,6 @@ import { World as WorldConfig } from "@latticexyz/world"; import { worldToV1 } from "@latticexyz/world/config/v2"; import { forge, getRemappings } from "@latticexyz/common/foundry"; import { getExistingContracts } from "./utils/getExistingContracts"; -import { debug as parentDebug } from "./debug"; import execa from "execa"; type BuildOptions = { From 7656a85b3491b8ec6eccc824b06f8d7a7824f7f0 Mon Sep 17 00:00:00 2001 From: Dhvani Patel Date: Tue, 23 Apr 2024 11:45:50 +0100 Subject: [PATCH 30/32] chore: import unused --- packages/store-sync/src/createStoreSync.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/store-sync/src/createStoreSync.ts b/packages/store-sync/src/createStoreSync.ts index 8a93e8c133..42966a1084 100644 --- a/packages/store-sync/src/createStoreSync.ts +++ b/packages/store-sync/src/createStoreSync.ts @@ -26,7 +26,6 @@ import { shareReplay, combineLatest, scan, - identity, retry, mergeMap, } from "rxjs"; From 258a36403cc449dce8edda4d9a05dea6c05f8c27 Mon Sep 17 00:00:00 2001 From: Dhvani Patel Date: Thu, 25 Apr 2024 13:31:24 +0100 Subject: [PATCH 31/32] fix: cjs --- packages/cli/package.json | 2 +- pnpm-lock.yaml | 55 ++------------------------------------- 2 files changed, 3 insertions(+), 54 deletions(-) diff --git a/packages/cli/package.json b/packages/cli/package.json index ea0ed54105..dd850c5c6d 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -56,7 +56,7 @@ "glob": "^8.0.3", "nice-grpc-web": "^2.0.1", "openurl": "^1.1.1", - "p-queue": "^7.4.1", + "p-queue": "6.6.2", "p-retry": "4.6.2", "path": "^0.12.7", "rxjs": "7.5.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a9eaddde34..c14a4ec18a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -212,8 +212,8 @@ importers: specifier: ^1.1.1 version: 1.1.1 p-queue: - specifier: ^7.4.1 - version: 7.4.1 + specifier: 6.6.2 + version: 6.6.2 p-retry: specifier: 4.6.2 version: 4.6.2 @@ -6126,17 +6126,6 @@ packages: update-browserslist-db: 1.0.13(browserslist@4.23.0) dev: true - /browserslist@4.23.0: - resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - dependencies: - caniuse-lite: 1.0.30001611 - electron-to-chromium: 1.4.744 - node-releases: 2.0.14 - update-browserslist-db: 1.0.13(browserslist@4.23.0) - dev: true - /bs-logger@0.2.6: resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} engines: {node: '>= 6'} @@ -6316,10 +6305,6 @@ packages: resolution: {integrity: sha512-JFPQs34lHKx1B5t1EpQpWH4c+29zIyn/haGsbpfq3suuV9v56enjFt23zqijxGTMwy1p/4H2tjnQMY+p1WoAyA==} dev: true - /caniuse-lite@1.0.30001611: - resolution: {integrity: sha512-19NuN1/3PjA3QI8Eki55N8my4LzfkMCRLgCVfrl/slbSAchQfV0+GwjPrK3rq37As4UCLlM/DHajbKkAqbv92Q==} - dev: true - /case-anything@2.1.10: resolution: {integrity: sha512-JczJwVrCP0jPKh05McyVsuOg6AYosrB9XWZKbQzXeDAm2ClE/PJE/BcrrQrVyGYH7Jg8V/LDupmyL4kFlVsVFQ==} engines: {node: '>=12.13'} @@ -7162,10 +7147,6 @@ packages: resolution: {integrity: sha512-pkYpvwg8VyOTQAeBqZ7jsmpCjko1Qc6We1ZtZCjRyYbT5v4AIUKDy5cQTRotQlSSZmMr8jqpEt6JtOj5k7lR7A==} dev: true - /electron-to-chromium@1.4.744: - resolution: {integrity: sha512-nAGcF0yeKKfrP13LMFr5U1eghfFSvFLg302VUFzWlcjPOnUYd52yU5x6PBYrujhNbc4jYmZFrGZFK+xasaEzVA==} - dev: true - /elegant-spinner@1.0.1: resolution: {integrity: sha512-B+ZM+RXvRqQaAmkMlO/oSe5nMUOaUnyfGYCEHoR8wrXsZR2mA0XVibsxV1bvTwxdRWah1PkQqso2EzhILGHtEQ==} engines: {node: '>=0.10.0'} @@ -7763,10 +7744,6 @@ packages: /eventemitter3@4.0.7: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} - /eventemitter3@5.0.1: - resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} - dev: false - /events@3.3.0: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} @@ -10602,10 +10579,6 @@ packages: resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} dev: true - /node-releases@2.0.14: - resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} - dev: true - /nopt@6.0.0: resolution: {integrity: sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} @@ -10926,14 +10899,6 @@ packages: p-timeout: 3.2.0 dev: false - /p-queue@7.4.1: - resolution: {integrity: sha512-vRpMXmIkYF2/1hLBKisKeVYJZ8S2tZ0zEAmIJgdVKP2nq0nh4qCdf8bgw+ZgKrkh71AOCaqzwbJJk1WtdcF3VA==} - engines: {node: '>=12'} - dependencies: - eventemitter3: 5.0.1 - p-timeout: 5.1.0 - dev: false - /p-retry@4.6.2: resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} engines: {node: '>=8'} @@ -10949,11 +10914,6 @@ packages: p-finally: 1.0.0 dev: false - /p-timeout@5.1.0: - resolution: {integrity: sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew==} - engines: {node: '>=12'} - dev: false - /p-try@1.0.0: resolution: {integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==} engines: {node: '>=4'} @@ -13198,17 +13158,6 @@ packages: picocolors: 1.0.0 dev: true - /update-browserslist-db@1.0.13(browserslist@4.23.0): - resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - dependencies: - browserslist: 4.23.0 - escalade: 3.1.2 - picocolors: 1.0.0 - dev: true - /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: From f980256e59a9bb6f93ff29b310b9903a5c1050b2 Mon Sep 17 00:00:00 2001 From: Dhvani Patel Date: Fri, 26 Apr 2024 17:45:59 +0100 Subject: [PATCH 32/32] fix: rebase --- pnpm-lock.yaml | 59 +------------------------------------------------- 1 file changed, 1 insertion(+), 58 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c14a4ec18a..d776f33e7b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1309,7 +1309,7 @@ packages: '@arktype/util': 0.0.23 '@typescript/analyze-trace': 0.10.1 '@typescript/vfs': 1.5.0 - arktype: 2.0.0-dev.8 + arktype: 1.0.29-alpha typescript: 5.4.2 transitivePeerDependencies: - supports-color @@ -1319,12 +1319,6 @@ packages: resolution: {integrity: sha512-f3p8apUMOTl6KlFNTrOX6twQJDeSdSmtYPVca7SaQjUUTAxfUlaROY1/i1C3y2llYDrrQBEbsggk8k2Oxxgrvw==} dev: true - /@arktype/schema@0.0.8: - resolution: {integrity: sha512-X4WCMpiS4EOdTjb6NFI2cYw0QAzXXitj5oMPryv0topEeC8smuMOe3rlesbE/nG2eNUE0OpzDCY+LY/o1S5ktA==} - dependencies: - '@arktype/util': 0.0.34 - dev: true - /@arktype/util@0.0.23: resolution: {integrity: sha512-MwtDGjbgfXWxlExjIL78HvPlWOma1XFEcDd3VWuCPMt/f+3TR7fXyiGFNlIYZGOYdOIU7qgjaE8dmbd6jdJa3Q==} dev: true @@ -1333,10 +1327,6 @@ packages: resolution: {integrity: sha512-ZkPuSU8Q56YVgPInFhojLTujejM+VPfaZx6Guop41CvnozWFOTlC0uAHuDqvY4nYq3zXsMkRwm8LmaRZ3mslMg==} dev: false - /@arktype/util@0.0.34: - resolution: {integrity: sha512-P3opb4q9eDZYbKo1pzLa34Dytg+vMuq8fkY0xQ98BN3RrjHtAVRPFmK3CeAz4fSa39yhrYlLUBfuUEvi52Hb8w==} - dev: true - /@aws-crypto/ie11-detection@3.0.0: resolution: {integrity: sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==} dependencies: @@ -4072,27 +4062,17 @@ packages: rimraf: 3.0.2 dev: false -<<<<<<< HEAD -<<<<<<< HEAD /@opentelemetry/api@1.8.0: resolution: {integrity: sha512-I/s6F7yKUDdtMsoBWXJe8Qz40Tui5vsuKCWJEWVL+5q9sSWRzzx6v2KeNsOBEwd94j0eWkpWCH4yB6rZg9Mf0w==} engines: {node: '>=8.0.0'} dev: false -======= ->>>>>>> 9643c6a1f (Revert "feat: update pnpm and node version") /@oven/bun-darwin-aarch64@1.0.11: resolution: {integrity: sha512-6wCO37lyGNcqefEDQ7IJp4LW7ElKMH50/hlvW5agIBN/XbTwwtv3788dJ9NczEV7RQSlkOI6J3dUoQJ6Pgav6w==} cpu: [arm64] os: [darwin] requiresBuild: true dev: true -<<<<<<< HEAD -======= - '@oven/bun-darwin-aarch64@1.0.11': ->>>>>>> d2ee83450 (feat: update pnpm and node version) -======= ->>>>>>> 9643c6a1f (Revert "feat: update pnpm and node version") optional: true /@oven/bun-darwin-x64-baseline@1.0.11: @@ -5741,14 +5721,6 @@ packages: /arktype@1.0.29-alpha: resolution: {integrity: sha512-glMLgVhIQRSkR3tymiS+POAcWVJH09sfrgic0jHnyFL8BlhHAJZX2BzdImU9zYr1y9NBqy+U93ZNrRTHXsKRDw==} - dev: false - - /arktype@2.0.0-dev.8: - resolution: {integrity: sha512-WaQ5fBos/VIhBNAKtJmBKK1GXMJuD/OCKUfY1tWpxzLG8Fz4RMCz7NEs7xRGjUw+J5ODExbvSguTdsrcE0R37w==} - dependencies: - '@arktype/schema': 0.0.8 - '@arktype/util': 0.0.34 - dev: true /array-includes@3.1.6: resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==} @@ -6017,21 +5989,12 @@ packages: file-uri-to-path: 1.0.0 dev: false -<<<<<<< HEAD -<<<<<<< HEAD /bintrees@1.0.2: resolution: {integrity: sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw==} dev: false /bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} -======= - bl@4.1.0: ->>>>>>> d2ee83450 (feat: update pnpm and node version) -======= - /bl@4.1.0: - resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} ->>>>>>> 9643c6a1f (Revert "feat: update pnpm and node version") dependencies: buffer: 5.7.1 inherits: 2.0.4 @@ -11315,8 +11278,6 @@ packages: engines: {node: '>=0.4.0'} dev: true -<<<<<<< HEAD -<<<<<<< HEAD /prom-client@15.1.2: resolution: {integrity: sha512-on3h1iXb04QFLLThrmVYg1SChBQ9N1c+nKAjebBjokBqipddH3uxmOUcEkTnzmJ8Jh/5TSUnUqS40i2QB2dJHQ==} engines: {node: ^16 || ^18 || >=20} @@ -11325,8 +11286,6 @@ packages: tdigest: 0.1.2 dev: false -======= ->>>>>>> 9643c6a1f (Revert "feat: update pnpm and node version") /promise-inflight@1.0.1: resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} peerDependencies: @@ -11335,12 +11294,6 @@ packages: bluebird: optional: true dev: false -<<<<<<< HEAD -======= - promise-inflight@1.0.1: {} ->>>>>>> d2ee83450 (feat: update pnpm and node version) -======= ->>>>>>> 9643c6a1f (Revert "feat: update pnpm and node version") /promise-retry@2.0.1: resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} @@ -12601,26 +12554,16 @@ packages: yallist: 4.0.0 dev: false -<<<<<<< HEAD -<<<<<<< HEAD /tdigest@0.1.2: resolution: {integrity: sha512-+G0LLgjjo9BZX2MfdvPfH+MKLCrxlXSYec5DaPYP1fe6Iyhf0/fSmJ0bFiZ1F8BT6cGXl2LpltQptzjXKWEkKA==} dependencies: bintrees: 1.0.2 dev: false -======= ->>>>>>> 9643c6a1f (Revert "feat: update pnpm and node version") /term-size@2.2.1: resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} engines: {node: '>=8'} dev: true -<<<<<<< HEAD -======= - term-size@2.2.1: {} ->>>>>>> d2ee83450 (feat: update pnpm and node version) -======= ->>>>>>> 9643c6a1f (Revert "feat: update pnpm and node version") /test-exclude@6.0.0: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==}