cerceis-lib
Version:
Contains list of quality of life functions that is written in TypeScript and es6
1 lines • 54.2 kB
Source Map (JSON)
{"version":3,"sources":["../../src/sha256/constants.ts","../../src/sha256/sha256.ts"],"sourcesContent":["export const primeConst: string[][] = [\n [\n '0', '1', '0', '0', '0', '0',\n '1', '0', '1', '0', '0', '0',\n '1', '0', '1', '0', '0', '0',\n '1', '0', '1', '1', '1', '1',\n '1', '0', '0', '1', '1', '0',\n '0', '0'\n ],\n [\n '0', '1', '1', '1', '0', '0',\n '0', '1', '0', '0', '1', '1',\n '0', '1', '1', '1', '0', '1',\n '0', '0', '0', '1', '0', '0',\n '1', '0', '0', '1', '0', '0',\n '0', '1'\n ],\n [\n '1', '0', '1', '1', '0', '1',\n '0', '1', '1', '1', '0', '0',\n '0', '0', '0', '0', '1', '1',\n '1', '1', '1', '0', '1', '1',\n '1', '1', '0', '0', '1', '1',\n '1', '1'\n ],\n [\n '1', '1', '1', '0', '1', '0',\n '0', '1', '1', '0', '1', '1',\n '0', '1', '0', '1', '1', '1',\n '0', '1', '1', '0', '1', '1',\n '1', '0', '1', '0', '0', '1',\n '0', '1'\n ],\n [\n '0', '0', '1', '1', '1', '0',\n '0', '1', '0', '1', '0', '1',\n '0', '1', '1', '0', '1', '1',\n '0', '0', '0', '0', '1', '0',\n '0', '1', '0', '1', '1', '0',\n '1', '1'\n ],\n [\n '0', '1', '0', '1', '1', '0',\n '0', '1', '1', '1', '1', '1',\n '0', '0', '0', '1', '0', '0',\n '0', '1', '0', '0', '0', '1',\n '1', '1', '1', '1', '0', '0',\n '0', '1'\n ],\n [\n '1', '0', '0', '1', '0', '0',\n '1', '0', '0', '0', '1', '1',\n '1', '1', '1', '1', '1', '0',\n '0', '0', '0', '0', '1', '0',\n '1', '0', '1', '0', '0', '1',\n '0', '0'\n ],\n [\n '1', '0', '1', '0', '1', '0',\n '1', '1', '0', '0', '0', '1',\n '1', '1', '0', '0', '0', '1',\n '0', '1', '1', '1', '1', '0',\n '1', '1', '0', '1', '0', '1',\n '0', '1'\n ],\n [\n '1', '1', '0', '1', '1', '0',\n '0', '0', '0', '0', '0', '0',\n '0', '1', '1', '1', '1', '0',\n '1', '0', '1', '0', '1', '0',\n '1', '0', '0', '1', '1', '0',\n '0', '0'\n ],\n [\n '0', '0', '0', '1', '0', '0',\n '1', '0', '1', '0', '0', '0',\n '0', '0', '1', '1', '0', '1',\n '0', '1', '1', '0', '1', '1',\n '0', '0', '0', '0', '0', '0',\n '0', '1'\n ],\n [\n '0', '0', '1', '0', '0', '1',\n '0', '0', '0', '0', '1', '1',\n '0', '0', '0', '1', '1', '0',\n '0', '0', '0', '1', '0', '1',\n '1', '0', '1', '1', '1', '1',\n '1', '0'\n ],\n [\n '0', '1', '0', '1', '0', '1',\n '0', '1', '0', '0', '0', '0',\n '1', '1', '0', '0', '0', '1',\n '1', '1', '1', '1', '0', '1',\n '1', '1', '0', '0', '0', '0',\n '1', '1'\n ],\n [\n '0', '1', '1', '1', '0', '0',\n '1', '0', '1', '0', '1', '1',\n '1', '1', '1', '0', '0', '1',\n '0', '1', '1', '1', '0', '1',\n '0', '1', '1', '1', '0', '1',\n '0', '0'\n ],\n [\n '1', '0', '0', '0', '0', '0',\n '0', '0', '1', '1', '0', '1',\n '1', '1', '1', '0', '1', '0',\n '1', '1', '0', '0', '0', '1',\n '1', '1', '1', '1', '1', '1',\n '1', '0'\n ],\n [\n '1', '0', '0', '1', '1', '0',\n '1', '1', '1', '1', '0', '1',\n '1', '1', '0', '0', '0', '0',\n '0', '0', '0', '1', '1', '0',\n '1', '0', '1', '0', '0', '1',\n '1', '1'\n ],\n [\n '1', '1', '0', '0', '0', '0',\n '0', '1', '1', '0', '0', '1',\n '1', '0', '1', '1', '1', '1',\n '1', '1', '0', '0', '0', '1',\n '0', '1', '1', '1', '0', '1',\n '0', '0'\n ],\n [\n '1', '1', '1', '0', '0', '1',\n '0', '0', '1', '0', '0', '1',\n '1', '0', '1', '1', '0', '1',\n '1', '0', '1', '0', '0', '1',\n '1', '1', '0', '0', '0', '0',\n '0', '1'\n ],\n [\n '1', '1', '1', '0', '1', '1',\n '1', '1', '1', '0', '1', '1',\n '1', '1', '1', '0', '0', '1',\n '0', '0', '0', '1', '1', '1',\n '1', '0', '0', '0', '0', '1',\n '1', '0'\n ],\n [\n '0', '0', '0', '0', '1', '1',\n '1', '1', '1', '1', '0', '0',\n '0', '0', '0', '1', '1', '0',\n '0', '1', '1', '1', '0', '1',\n '1', '1', '0', '0', '0', '1',\n '1', '0'\n ],\n [\n '0', '0', '1', '0', '0', '1',\n '0', '0', '0', '0', '0', '0',\n '1', '1', '0', '0', '1', '0',\n '1', '0', '0', '0', '0', '1',\n '1', '1', '0', '0', '1', '1',\n '0', '0'\n ],\n [\n '0', '0', '1', '0', '1', '1',\n '0', '1', '1', '1', '1', '0',\n '1', '0', '0', '1', '0', '0',\n '1', '0', '1', '1', '0', '0',\n '0', '1', '1', '0', '1', '1',\n '1', '1'\n ],\n [\n '0', '1', '0', '0', '1', '0',\n '1', '0', '0', '1', '1', '1',\n '0', '1', '0', '0', '1', '0',\n '0', '0', '0', '1', '0', '0',\n '1', '0', '1', '0', '1', '0',\n '1', '0'\n ],\n [\n '0', '1', '0', '1', '1', '1',\n '0', '0', '1', '0', '1', '1',\n '0', '0', '0', '0', '1', '0',\n '1', '0', '1', '0', '0', '1',\n '1', '1', '0', '1', '1', '1',\n '0', '0'\n ],\n [\n '0', '1', '1', '1', '0', '1',\n '1', '0', '1', '1', '1', '1',\n '1', '0', '0', '1', '1', '0',\n '0', '0', '1', '0', '0', '0',\n '1', '1', '0', '1', '1', '0',\n '1', '0'\n ],\n [\n '1', '0', '0', '1', '1', '0',\n '0', '0', '0', '0', '1', '1',\n '1', '1', '1', '0', '0', '1',\n '0', '1', '0', '0', '0', '1',\n '0', '1', '0', '1', '0', '0',\n '1', '0'\n ],\n [\n '1', '0', '1', '0', '1', '0',\n '0', '0', '0', '0', '1', '1',\n '0', '0', '0', '1', '1', '1',\n '0', '0', '0', '1', '1', '0',\n '0', '1', '1', '0', '1', '1',\n '0', '1'\n ],\n [\n '1', '0', '1', '1', '0', '0',\n '0', '0', '0', '0', '0', '0',\n '0', '0', '1', '1', '0', '0',\n '1', '0', '0', '1', '1', '1',\n '1', '1', '0', '0', '1', '0',\n '0', '0'\n ],\n [\n '1', '0', '1', '1', '1', '1',\n '1', '1', '0', '1', '0', '1',\n '1', '0', '0', '1', '0', '1',\n '1', '1', '1', '1', '1', '1',\n '1', '1', '0', '0', '0', '1',\n '1', '1'\n ],\n [\n '1', '1', '0', '0', '0', '1',\n '1', '0', '1', '1', '1', '0',\n '0', '0', '0', '0', '0', '0',\n '0', '0', '1', '0', '1', '1',\n '1', '1', '1', '1', '0', '0',\n '1', '1'\n ],\n [\n '1', '1', '0', '1', '0', '1',\n '0', '1', '1', '0', '1', '0',\n '0', '1', '1', '1', '1', '0',\n '0', '1', '0', '0', '0', '1',\n '0', '1', '0', '0', '0', '1',\n '1', '1'\n ],\n [\n '0', '0', '0', '0', '0', '1',\n '1', '0', '1', '1', '0', '0',\n '1', '0', '1', '0', '0', '1',\n '1', '0', '0', '0', '1', '1',\n '0', '1', '0', '1', '0', '0',\n '0', '1'\n ],\n [\n '0', '0', '0', '1', '0', '1',\n '0', '0', '0', '0', '1', '0',\n '1', '0', '0', '1', '0', '0',\n '1', '0', '1', '0', '0', '1',\n '0', '1', '1', '0', '0', '1',\n '1', '1'\n ],\n [\n '0', '0', '1', '0', '0', '1',\n '1', '1', '1', '0', '1', '1',\n '0', '1', '1', '1', '0', '0',\n '0', '0', '1', '0', '1', '0',\n '1', '0', '0', '0', '0', '1',\n '0', '1'\n ],\n [\n '0', '0', '1', '0', '1', '1',\n '1', '0', '0', '0', '0', '1',\n '1', '0', '1', '1', '0', '0',\n '1', '0', '0', '0', '0', '1',\n '0', '0', '1', '1', '1', '0',\n '0', '0'\n ],\n [\n '0', '1', '0', '0', '1', '1',\n '0', '1', '0', '0', '1', '0',\n '1', '1', '0', '0', '0', '1',\n '1', '0', '1', '1', '0', '1',\n '1', '1', '1', '1', '1', '1',\n '0', '0'\n ],\n [\n '0', '1', '0', '1', '0', '0',\n '1', '1', '0', '0', '1', '1',\n '1', '0', '0', '0', '0', '0',\n '0', '0', '1', '1', '0', '1',\n '0', '0', '0', '1', '0', '0',\n '1', '1'\n ],\n [\n '0', '1', '1', '0', '0', '1',\n '0', '1', '0', '0', '0', '0',\n '1', '0', '1', '0', '0', '1',\n '1', '1', '0', '0', '1', '1',\n '0', '1', '0', '1', '0', '1',\n '0', '0'\n ],\n [\n '0', '1', '1', '1', '0', '1',\n '1', '0', '0', '1', '1', '0',\n '1', '0', '1', '0', '0', '0',\n '0', '0', '1', '0', '1', '0',\n '1', '0', '1', '1', '1', '0',\n '1', '1'\n ],\n [\n '1', '0', '0', '0', '0', '0',\n '0', '1', '1', '1', '0', '0',\n '0', '0', '1', '0', '1', '1',\n '0', '0', '1', '0', '0', '1',\n '0', '0', '1', '0', '1', '1',\n '1', '0'\n ],\n [\n '1', '0', '0', '1', '0', '0',\n '1', '0', '0', '1', '1', '1',\n '0', '0', '1', '0', '0', '0',\n '1', '0', '1', '1', '0', '0',\n '1', '0', '0', '0', '0', '1',\n '0', '1'\n ],\n [\n '1', '0', '1', '0', '0', '0',\n '1', '0', '1', '0', '1', '1',\n '1', '1', '1', '1', '1', '1',\n '1', '0', '1', '0', '0', '0',\n '1', '0', '1', '0', '0', '0',\n '0', '1'\n ],\n [\n '1', '0', '1', '0', '1', '0',\n '0', '0', '0', '0', '0', '1',\n '1', '0', '1', '0', '0', '1',\n '1', '0', '0', '1', '1', '0',\n '0', '1', '0', '0', '1', '0',\n '1', '1'\n ],\n [\n '1', '1', '0', '0', '0', '0',\n '1', '0', '0', '1', '0', '0',\n '1', '0', '1', '1', '1', '0',\n '0', '0', '1', '0', '1', '1',\n '0', '1', '1', '1', '0', '0',\n '0', '0'\n ],\n [\n '1', '1', '0', '0', '0', '1',\n '1', '1', '0', '1', '1', '0',\n '1', '1', '0', '0', '0', '1',\n '0', '1', '0', '0', '0', '1',\n '1', '0', '1', '0', '0', '0',\n '1', '1'\n ],\n [\n '1', '1', '0', '1', '0', '0',\n '0', '1', '1', '0', '0', '1',\n '0', '0', '1', '0', '1', '1',\n '1', '0', '1', '0', '0', '0',\n '0', '0', '0', '1', '1', '0',\n '0', '1'\n ],\n [\n '1', '1', '0', '1', '0', '1',\n '1', '0', '1', '0', '0', '1',\n '1', '0', '0', '1', '0', '0',\n '0', '0', '0', '1', '1', '0',\n '0', '0', '1', '0', '0', '1',\n '0', '0'\n ],\n [\n '1', '1', '1', '1', '0', '1',\n '0', '0', '0', '0', '0', '0',\n '1', '1', '1', '0', '0', '0',\n '1', '1', '0', '1', '0', '1',\n '1', '0', '0', '0', '0', '1',\n '0', '1'\n ],\n [\n '0', '0', '0', '1', '0', '0',\n '0', '0', '0', '1', '1', '0',\n '1', '0', '1', '0', '1', '0',\n '1', '0', '0', '0', '0', '0',\n '0', '1', '1', '1', '0', '0',\n '0', '0'\n ],\n [\n '0', '0', '0', '1', '1', '0',\n '0', '1', '1', '0', '1', '0',\n '0', '1', '0', '0', '1', '1',\n '0', '0', '0', '0', '0', '1',\n '0', '0', '0', '1', '0', '1',\n '1', '0'\n ],\n [\n '0', '0', '0', '1', '1', '1',\n '1', '0', '0', '0', '1', '1',\n '0', '1', '1', '1', '0', '1',\n '1', '0', '1', '1', '0', '0',\n '0', '0', '0', '0', '1', '0',\n '0', '0'\n ],\n [\n '0', '0', '1', '0', '0', '1',\n '1', '1', '0', '1', '0', '0',\n '1', '0', '0', '0', '0', '1',\n '1', '1', '0', '1', '1', '1',\n '0', '1', '0', '0', '1', '1',\n '0', '0'\n ],\n [\n '0', '0', '1', '1', '0', '1',\n '0', '0', '1', '0', '1', '1',\n '0', '0', '0', '0', '1', '0',\n '1', '1', '1', '1', '0', '0',\n '1', '0', '1', '1', '0', '1',\n '0', '1'\n ],\n [\n '0', '0', '1', '1', '1', '0',\n '0', '1', '0', '0', '0', '1',\n '1', '1', '0', '0', '0', '0',\n '0', '0', '1', '1', '0', '0',\n '1', '0', '1', '1', '0', '0',\n '1', '1'\n ],\n [\n '0', '1', '0', '0', '1', '1',\n '1', '0', '1', '1', '0', '1',\n '1', '0', '0', '0', '1', '0',\n '1', '0', '1', '0', '1', '0',\n '0', '1', '0', '0', '1', '0',\n '1', '0'\n ],\n [\n '0', '1', '0', '1', '1', '0',\n '1', '1', '1', '0', '0', '1',\n '1', '1', '0', '0', '1', '1',\n '0', '0', '1', '0', '1', '0',\n '0', '1', '0', '0', '1', '1',\n '1', '1'\n ],\n [\n '0', '1', '1', '0', '1', '0',\n '0', '0', '0', '0', '1', '0',\n '1', '1', '1', '0', '0', '1',\n '1', '0', '1', '1', '1', '1',\n '1', '1', '1', '1', '0', '0',\n '1', '1'\n ],\n [\n '0', '1', '1', '1', '0', '1',\n '0', '0', '1', '0', '0', '0',\n '1', '1', '1', '1', '1', '0',\n '0', '0', '0', '0', '1', '0',\n '1', '1', '1', '0', '1', '1',\n '1', '0'\n ],\n [\n '0', '1', '1', '1', '1', '0',\n '0', '0', '1', '0', '1', '0',\n '0', '1', '0', '1', '0', '1',\n '1', '0', '0', '0', '1', '1',\n '0', '1', '1', '0', '1', '1',\n '1', '1'\n ],\n [\n '1', '0', '0', '0', '0', '1',\n '0', '0', '1', '1', '0', '0',\n '1', '0', '0', '0', '0', '1',\n '1', '1', '1', '0', '0', '0',\n '0', '0', '0', '1', '0', '1',\n '0', '0'\n ],\n [\n '1', '0', '0', '0', '1', '1',\n '0', '0', '1', '1', '0', '0',\n '0', '1', '1', '1', '0', '0',\n '0', '0', '0', '0', '1', '0',\n '0', '0', '0', '0', '1', '0',\n '0', '0'\n ],\n [\n '1', '0', '0', '1', '0', '0',\n '0', '0', '1', '0', '1', '1',\n '1', '1', '1', '0', '1', '1',\n '1', '1', '1', '1', '1', '1',\n '1', '1', '1', '1', '1', '0',\n '1', '0'\n ],\n [\n '1', '0', '1', '0', '0', '1',\n '0', '0', '0', '1', '0', '1',\n '0', '0', '0', '0', '0', '1',\n '1', '0', '1', '1', '0', '0',\n '1', '1', '1', '0', '1', '0',\n '1', '1'\n ],\n [\n '1', '0', '1', '1', '1', '1',\n '1', '0', '1', '1', '1', '1',\n '1', '0', '0', '1', '1', '0',\n '1', '0', '0', '0', '1', '1',\n '1', '1', '1', '1', '0', '1',\n '1', '1'\n ],\n [\n '1', '1', '0', '0', '0', '1',\n '1', '0', '0', '1', '1', '1',\n '0', '0', '0', '1', '0', '1',\n '1', '1', '1', '0', '0', '0',\n '1', '1', '1', '1', '0', '0',\n '1', '0'\n ],\n]\n\nexport const compressionHash: { [key: string]: string[] } = {\n \"a\": [\n '0', '1', '1', '0', '1', '0',\n '1', '0', '0', '0', '0', '0',\n '1', '0', '0', '1', '1', '1',\n '1', '0', '0', '1', '1', '0',\n '0', '1', '1', '0', '0', '1',\n '1', '1'\n ],\n \"b\": [\n '1', '0', '1', '1', '1', '0',\n '1', '1', '0', '1', '1', '0',\n '0', '1', '1', '1', '1', '0',\n '1', '0', '1', '1', '1', '0',\n '1', '0', '0', '0', '0', '1',\n '0', '1'\n ],\n \"c\": [\n '0', '0', '1', '1', '1', '1',\n '0', '0', '0', '1', '1', '0',\n '1', '1', '1', '0', '1', '1',\n '1', '1', '0', '0', '1', '1',\n '0', '1', '1', '1', '0', '0',\n '1', '0'\n ],\n \"d\": [\n '1', '0', '1', '0', '0', '1',\n '0', '1', '0', '1', '0', '0',\n '1', '1', '1', '1', '1', '1',\n '1', '1', '0', '1', '0', '1',\n '0', '0', '1', '1', '1', '0',\n '1', '0'\n ],\n \"e\": [\n '0', '1', '0', '1', '0', '0',\n '0', '1', '0', '0', '0', '0',\n '1', '1', '1', '0', '0', '1',\n '0', '1', '0', '0', '1', '0',\n '0', '1', '1', '1', '1', '1',\n '1', '1'\n ],\n \"f\": [\n '1', '0', '0', '1', '1', '0',\n '1', '1', '0', '0', '0', '0',\n '0', '1', '0', '1', '0', '1',\n '1', '0', '1', '0', '0', '0',\n '1', '0', '0', '0', '1', '1',\n '0', '0'\n ],\n \"g\": [\n '0', '0', '0', '1', '1', '1',\n '1', '1', '1', '0', '0', '0',\n '0', '0', '1', '1', '1', '1',\n '0', '1', '1', '0', '0', '1',\n '1', '0', '1', '0', '1', '0',\n '1', '1'\n ],\n \"h\": [\n '0', '1', '0', '1', '1', '0',\n '1', '1', '1', '1', '1', '0',\n '0', '0', '0', '0', '1', '1',\n '0', '0', '1', '1', '0', '1',\n '0', '0', '0', '1', '1', '0',\n '0', '1'\n ],\n}","import { primeConst, compressionHash } from \"./constants.js\"\nexport const Sha256 = (inputStr: string) => {\n const _toBinary = (text: string): string => {\n let rs: string = \"\"\n for (let i = 0; i < text.length; i++) {\n rs += text[i].charCodeAt(0).toString(2).padStart(8, \"0\")\n }\n return rs\n }\n //Shift right\n //Rotate right\n //XOR\n //ADD <= remember to keep it in 32 bit range\n const _rotr = (arr: string[], attempt: number = 1): string[] => {\n let tmp: any[] = [...arr]\n for (let i = 0; i < attempt; i++) {\n tmp = [tmp.pop(), ...tmp]\n }\n return tmp\n }\n const _shr = (arr: string[], attempt: number = 1): string[] => {\n let tmp: any[] = [...arr]\n for (let i = 0; i < attempt; i++) {\n tmp.pop()\n tmp.unshift(\"0\")\n }\n return tmp\n }\n const _xor = (arrA: string[], arrB: string[], arrC: string[]): string[] => {\n const tmp: string[] = []\n arrA.forEach((bit, index) => {\n tmp[index] = String(Number(bit) ^ Number(arrB[index]) ^ Number(arrC[index]))\n })\n return tmp\n }\n const _add = (arrA: string[], arrB: string[]): string[] => {\n const tmp: string[] = []\n const len: number = arrA.length;\n let extra: number = 0\n for (let i = arrA.length - 1; i >= 0; i--) {\n const bitValue: number = Number(arrA[i]) + Number(arrB[i]) + extra\n tmp[i] = bitValue > 1 ? String(bitValue - 2) : String(bitValue)\n extra = bitValue > 1 ? 1 : 0\n }\n return tmp\n }\n /**\n * Functions\n * choice, given x,y,z. If x = 1 takes y, if x = 0 takes z\n * major, given x,y,z. If numbers of 1 > 0 then 1. else 0.\n */\n const _choice = (arrA: string[], arrB: string[], arrC: string[]): string[] => {\n let tmp: string[] = []\n arrA.forEach((bit, index) => {\n tmp[index] = bit === \"1\" ? arrB[index] : arrC[index];\n })\n return tmp;\n }\n const _major = (arrA: string[], arrB: string[], arrC: string[]): string[] => {\n let tmp: string[] = []\n arrA.forEach((bit, index) => {\n const val: string = bit + arrB[index] + arrC[index]\n if (\n val === \"000\" || val === \"001\" ||\n val === \"010\" || val === \"100\"\n ) tmp[index] = \"0\"\n else if (\n val === \"111\" || val === \"110\" ||\n val === \"101\" || val === \"011\"\n ) tmp[index] = \"1\"\n\n })\n return tmp;\n }\n /**\n * Compound movements\n * sigZero = ROTR 7, ROTR 18, SHR 3, XOR \n * sigOne = ROTR 17, ROTR 19, SHR 10, XOR\n * uSigZero = ROTR 2, ROTR 13, ROTR 22, XOR\n * uSigOne = ROTR 6, ROTR 11, ROTR 25, XOR\n */\n const _sigZero = (arr: string[]): string[] => {\n const rotr7 = _rotr(arr, 7)\n const rotr18 = _rotr(arr, 18)\n const shr3: string[] = _shr(arr, 3)\n return _xor(rotr7, rotr18, shr3)\n }\n\n const _sigOne = (arr: string[]): string[] => {\n const rotr17 = _rotr(arr, 17)\n const rotr19 = _rotr(arr, 19)\n const shr10: string[] = _shr(arr, 10)\n return _xor(rotr17, rotr19, shr10)\n }\n\n const _uSigZero = (arr: string[]): string[] => {\n const rotr2 = _rotr(arr, 2)\n const rotr13 = _rotr(arr, 13)\n const rotr22 = _rotr(arr, 22)\n return _xor(rotr2, rotr13, rotr22)\n }\n\n const _uSigOne = (arr: string[]): string[] => {\n const rotr6 = _rotr(arr, 6)\n const rotr11 = _rotr(arr, 11)\n const rotr25 = _rotr(arr, 25)\n return _xor(rotr6, rotr11, rotr25)\n }\n\n const shiftCompressionMap = (compressionMap: {[key: string]: string[]}): void => {\n compressionMap[\"h\"] = [...compressionMap[\"g\"]];\n compressionMap[\"g\"] = [...compressionMap[\"f\"]];\n compressionMap[\"f\"] = [...compressionMap[\"e\"]];\n compressionMap[\"e\"] = [...compressionMap[\"d\"]];\n compressionMap[\"d\"] = [...compressionMap[\"c\"]];\n compressionMap[\"c\"] = [...compressionMap[\"b\"]];\n compressionMap[\"b\"] = [...compressionMap[\"a\"]];\n compressionMap[\"a\"] = []\n }\n\n /**\n * Structure will be:\n * The binary of the message + 1 as separator + padding of 0 until 448 bits + length of the message with start padding of 0.\n * End result will be total of 512 in length\n */\n let messageBin: string = _toBinary(inputStr)\n const messageBlocks: string[] = [];\n const messageLengthBin = messageBin.length.toString(2).padStart(64, \"0\")\n const blockCount: number = Math.ceil((messageBin.length + 1 + 64) / 512)\n const finalLength = blockCount * 512\n /*\n messageBin += \"1\" //Separator\n messageBin = messageBin.padEnd(512 * blockCount - 64, \"0\") //padding of 0 until 448 bits\n messageBin += messageLengthBin //Remaining 64 with length of the message with start padding of 0. \n */\n // 𝑘=512𝑖+447−𝑚\n /**\n * k = paddings \n * i = blockCount\n * m = input length\n * Pre-processing (Padding):\n begin with the original message of length L bits\n append a single '1' bit\n append K '0' bits, where K is the minimum number >= 0 such that L + 1 + K + 64 is a multiple of 512\n append L as a 64-bit big-endian integer, making the total post-processed length a multiple of 512 bits\n such that the bits in the message are L 1 00..<K 0's>..00 <L as 64 bit integer> = k*512 total bits\n */\n messageBin += \"1\" //Separator\n messageBin = messageBin.padEnd(finalLength-64, \"0\") //padding of 0 until 448 bits\n messageBin += messageLengthBin //Remaining 64 with length of the message with start padding of 0. \n for (let i = 0; i < blockCount; i++) {\n let messageChunks = messageBin.slice(i * 512, i * 512 + 512)\n //Add padding to last block\n messageBlocks.push(messageChunks)\n } \n let finalCompression = {...compressionHash}\n //message schedule\n \n messageBlocks.forEach((block, bi) => {\n let localCompression = {...finalCompression}\n const words: string[][] = [];\n for (let i = 0; i < 16; i++) {\n words.push(block.slice(i * 32, i * 32 + 32).split(\"\"))\n }\n //Words need to be 64 in length, so we gonna expand it\n //sigOne(-2) + (-7) + sigZero(-15) + (-16)\n while(words.length < 64){\n words.push(\n _add(\n _add(\n _add(_sigOne(words[words.length-2]), words[words.length-7]), \n _sigZero(words[words.length-15])\n ),\n words[words.length-16]\n )\n )\n }\n //Compression\n /**\n * T1 = uSigOne(e) + choice(e,f,g) + h + K0 + W0\n * T2 = uSigZero(a) + major(a,b,c)\n */\n words.forEach((word, index) => {\n const t1: string[] = _add(\n _add(\n _add(\n _add(_uSigOne(localCompression.e), _choice(localCompression.e, localCompression.f, localCompression.g)),\n localCompression.h\n ),\n primeConst[index]\n ),\n word\n )\n const t2: string[] = _add(\n _uSigZero(localCompression.a), _major(localCompression.a, localCompression.b, localCompression.c)\n )\n shiftCompressionMap(localCompression)\n localCompression.a = _add(t1, t2)\n localCompression.e = _add(localCompression.e, t1)\n })\n\n\n for(let id in localCompression){\n if(bi === 0)\n finalCompression[id] = _add(compressionHash[id], localCompression[id])\n else\n finalCompression[id] = _add(finalCompression[id], localCompression[id])\n }\n \n })\n let result: string = \"\"\n for(let id in finalCompression)\n result += parseInt(finalCompression[id].join(\"\"), 2).toString(16)\n return result\n}"],"mappings":";AAAO,IAAM,aAAyB;AAAA,EAClC;AAAA,IACI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AACJ;AAEO,IAAM,kBAA+C;AAAA,EACxD,KAAK;AAAA,IACD;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA,KAAK;AAAA,IACD;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA,KAAK;AAAA,IACD;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA,KAAK;AAAA,IACD;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA,KAAK;AAAA,IACD;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA,KAAK;AAAA,IACD;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA,KAAK;AAAA,IACD;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AAAA,EACA,KAAK;AAAA,IACD;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzB;AAAA,IAAK;AAAA,EACT;AACJ;;;ACnkBO,