{"version":3,"file":"index.cjs","sources":["../../contacts/lib.ts","../../groups/lib.ts","../../node_modules/big-integer/BigInteger.js","../../lib/lib.ts","../../node_modules/bn.js/lib/bn.js","../../node_modules/lodash.chunk/index.js","../../node_modules/lodash.isequal/index.js","../../node_modules/urbit-ob/src/internal/muk.js","../../node_modules/urbit-ob/src/internal/ob.js","../../node_modules/urbit-ob/src/internal/co.js","../../node_modules/urbit-ob/src/index.js","../../graph/lib.ts","../../hark/lib.ts","../../invite/lib.ts","../../metadata/lib.ts","../../settings/lib.ts","../../s3/lib.ts","../../node_modules/immer/dist/immer.esm.js","../../lib/BigIntOrderedMap.ts","../../lib/BigIntArrayOrderedMap.ts","../../hood/lib.ts","../../docket/lib.ts","../../term/lib.ts"],"sourcesContent":["\nimport { Patp, Poke, Scry } from '../lib';\nimport {\n  Contact,\n  ContactUpdateAdd,\n  ContactUpdateEdit,\n  ContactUpdateRemove,\n  ContactEditField,\n  ContactShare,\n  ContactUpdate,\n  ContactUpdateAllowShips,\n  ContactUpdateAllowGroup,\n  ContactUpdateSetPublic\n} from './types';\n\nexport const CONTACT_UPDATE_VERSION = 0;\n\nconst storeAction = <T extends ContactUpdate>(data: T, version: number = CONTACT_UPDATE_VERSION): Poke<T> => ({\n  app: 'contact-store',\n  mark: `contact-update-${version}`,\n  json: data\n});\n\nexport { storeAction as contactStoreAction };\n\nexport const addContact = (ship: Patp, contact: Contact): Poke<ContactUpdateAdd> => {\n  contact['last-updated'] = Date.now();\n\n  return storeAction({\n    add: { ship, contact }\n  });\n};\n\nexport const removeContact = (ship: Patp): Poke<ContactUpdateRemove> =>\n  storeAction({\n    remove: { ship }\n  });\n\nexport const share = (recipient: Patp, version: number = CONTACT_UPDATE_VERSION): Poke<ContactShare> => ({\n  app: 'contact-push-hook',\n  mark: 'contact-share',\n  json: { share: recipient }\n});\n\nexport const editContact = (\n  ship: Patp,\n  editField: ContactEditField\n): Poke<ContactUpdateEdit> =>\n  storeAction({\n    edit: {\n      ship,\n      'edit-field': editField,\n      timestamp: Date.now()\n    }\n  });\n\nexport const allowShips = (\n  ships: Patp[]\n): Poke<ContactUpdateAllowShips> => storeAction({\n  allow: {\n    ships\n  }\n});\n\nexport const allowGroup = (\n  ship: string,\n  name: string\n): Poke<ContactUpdateAllowGroup> => storeAction({\n  allow: {\n    group: { ship, name }\n  }\n});\n\nexport const setPublic = (\n  setPublic: any\n): Poke<ContactUpdateSetPublic> => {\n  return storeAction({\n    'set-public': setPublic\n  });\n};\n\nexport const retrieve = (\n  ship: string\n) => {\n  const resource = { ship, name: '' };\n  return {\n    app: 'contact-pull-hook',\n    mark: 'pull-hook-action',\n    json: {\n      add: {\n        resource,\n        ship\n      }\n    }\n  };\n};\n\nexport const fetchIsAllowed = (\n  entity: string,\n  name: string,\n  ship: string,\n  personal: boolean\n): Scry => {\n  const isPersonal = personal ? 'true' : 'false';\n  return {\n    app: 'contact-store',\n    path: `/is-allowed/${entity}/${name}/${ship}/${isPersonal}`\n  };\n};\n","import { deSig } from '../index';\nimport { Enc, Path, Patp, PatpNoSig, Poke, Thread } from '../lib/types';\nimport { Group, GroupPolicy, GroupPolicyDiff, GroupUpdateAddMembers, GroupUpdateAddTag, GroupUpdateChangePolicy, GroupUpdateRemoveGroup, GroupUpdateRemoveMembers, GroupUpdateRemoveTag, Resource, RoleTags, Tag } from './types';\nimport { GroupUpdate } from './update';\n\nexport const GROUP_UPDATE_VERSION = 0;\n\nexport const proxyAction = <T>(data: T, version: number = GROUP_UPDATE_VERSION): Poke<T> => ({\n  app: 'group-push-hook',\n  mark: `group-update-${version}`,\n  json: data\n});\n\nconst storeAction = <T extends GroupUpdate>(data: T, version: number = GROUP_UPDATE_VERSION): Poke<T> => ({\n  app: 'group-store',\n  mark: `group-update-${version}`,\n  json: data\n});\n\nexport { storeAction as groupStoreAction };\n\nconst viewAction = <T>(data: T): Poke<T> => ({\n  app: 'group-view',\n  mark: 'group-view-action',\n  json: data\n});\n\nexport { viewAction as groupViewAction };\n\nexport const viewThread = <T>(thread: string, action: T): Thread<T> => ({\n  inputMark: 'group-view-action',\n  outputMark: 'json',\n  threadName: thread,\n  body: action\n});\n\nexport const removeMembers = (\n  resource: Resource,\n  ships: PatpNoSig[]\n): Poke<GroupUpdateRemoveMembers> => proxyAction({\n  removeMembers: {\n    resource,\n    ships\n  }\n});\n\nexport const addTag = (\n  resource: Resource,\n  tag: Tag,\n  ships: Patp[]\n): Poke<GroupUpdateAddTag> => proxyAction({\n  addTag: {\n    resource,\n    tag,\n    ships\n  }\n});\n\nexport const removeTag = (\n  tag: Tag,\n  resource: Resource,\n  ships: PatpNoSig[]\n): Poke<GroupUpdateRemoveTag> => proxyAction({\n  removeTag: {\n    tag,\n    resource,\n    ships\n  }\n});\n\nexport const addMembers = (\n  resource: Resource,\n  ships: PatpNoSig[]\n): Poke<GroupUpdateAddMembers> => proxyAction({\n  addMembers: {\n    resource,\n    ships\n  }\n});\n\nexport const removeGroup = (\n  resource: Resource\n): Poke<GroupUpdateRemoveGroup> => storeAction({\n  removeGroup: {\n    resource\n  }\n});\n\nexport const changePolicy = (\n  resource: Resource,\n  diff: Enc<GroupPolicyDiff>\n): Poke<Enc<GroupUpdateChangePolicy>> => proxyAction({\n  changePolicy: {\n    resource,\n    diff\n  }\n});\n\nexport const join = (\n  ship: string,\n  name: string,\n  app: \"groups\" | \"graph\",\n  autojoin: boolean,\n  share: boolean\n): Poke<any> => viewAction({\n  join: {\n    resource: makeResource(ship, name),\n    ship,\n    shareContact: share || false,\n    app,\n    autojoin\n  }\n});\n\nexport const createGroup = (\n  name: string,\n  policy: Enc<GroupPolicy>,\n  title: string,\n  description: string\n): Thread<any> => viewThread('group-create', {\n  create: {\n    name,\n    policy,\n    title,\n    description\n  }\n});\n\nexport const deleteGroup = (\n  ship: string,\n  name: string\n): Thread<any> => viewThread('group-delete', {\n  remove: makeResource(ship, name)\n});\n\nexport const leaveGroup = (\n  ship: string,\n  name: string\n): Thread<any> => viewThread('group-leave', {\n  leave: makeResource(ship, name)\n});\n\nexport const invite = (\n  ship: string,\n  name: string,\n  ships: Patp[],\n  description: string\n): Thread<any> => viewThread('group-invite', {\n  invite: {\n    resource: makeResource(ship, name),\n    ships,\n    description\n  }\n});\n\nexport const abortJoin = (\n  resource: string\n): Poke<any> => viewAction({\n  abort: resource\n});\n\nexport const roleTags = ['janitor', 'moderator', 'admin'];\n// TODO make this type better?\n\nexport const groupBunts = {\n  group: (): Group => ({ members: [], tags: { role: {} }, hidden: false, policy: groupBunts.policy() }),\n  policy: (): GroupPolicy => ({ open: { banned: [], banRanks: [] } })\n};\n\nexport const joinError = ['no-perms', 'strange', 'abort'] as const;\nexport const joinResult = ['done', ...joinError] as const;\nexport const joinLoad = ['start', 'added', 'metadata'] as const;\nexport const joinProgress = [...joinLoad, ...joinResult] as const;\n\nexport function roleForShip(\n  group: Group,\n  ship: PatpNoSig\n): RoleTags | undefined {\n  return roleTags.reduce((currRole, role) => {\n    const roleShips = group?.tags?.role?.[role];\n    return roleShips && roleShips.includes(ship) ? role : currRole;\n  }, undefined as RoleTags | undefined);\n};\n\nexport function resourceFromPath(path: Path): Resource {\n  const [, , ship, name] = path.split('/');\n  return { ship, name };\n}\n\nexport function makeResource(ship: string, name: string) {\n  return { ship, name };\n}\n\nexport const isWriter = (group: Group, resource: string, ship: string) => {\n  const graph = group?.tags?.graph;\n  const writers: string[] | undefined = graph && (graph[resource] as any)?.writers;\n  const admins = group?.tags?.role?.admin ?? [];\n  if (typeof writers === 'undefined') {\n    return true;\n  } else {\n    return [...writers].includes(ship) || admins.includes(ship);\n  }\n};\n\nexport function isChannelAdmin(\n  group: Group,\n  resource: string,\n  ship: string\n): boolean {\n  const role = roleForShip(group, deSig(ship));\n\n  return (\n    isHost(resource, ship) ||\n    role === 'admin' ||\n    role === 'moderator'\n  );\n}\n\nexport function isHost(\n  resource: string,\n  ship: string\n): boolean {\n  const [, , host] = resource.split('/');\n\n  return ship === host;\n}\n","var bigInt = (function (undefined) {\r\n    \"use strict\";\r\n\r\n    var BASE = 1e7,\r\n        LOG_BASE = 7,\r\n        MAX_INT = 9007199254740992,\r\n        MAX_INT_ARR = smallToArray(MAX_INT),\r\n        DEFAULT_ALPHABET = \"0123456789abcdefghijklmnopqrstuvwxyz\";\r\n\r\n    var supportsNativeBigInt = typeof BigInt === \"function\";\r\n\r\n    function Integer(v, radix, alphabet, caseSensitive) {\r\n        if (typeof v === \"undefined\") return Integer[0];\r\n        if (typeof radix !== \"undefined\") return +radix === 10 && !alphabet ? parseValue(v) : parseBase(v, radix, alphabet, caseSensitive);\r\n        return parseValue(v);\r\n    }\r\n\r\n    function BigInteger(value, sign) {\r\n        this.value = value;\r\n        this.sign = sign;\r\n        this.isSmall = false;\r\n    }\r\n    BigInteger.prototype = Object.create(Integer.prototype);\r\n\r\n    function SmallInteger(value) {\r\n        this.value = value;\r\n        this.sign = value < 0;\r\n        this.isSmall = true;\r\n    }\r\n    SmallInteger.prototype = Object.create(Integer.prototype);\r\n\r\n    function NativeBigInt(value) {\r\n        this.value = value;\r\n    }\r\n    NativeBigInt.prototype = Object.create(Integer.prototype);\r\n\r\n    function isPrecise(n) {\r\n        return -MAX_INT < n && n < MAX_INT;\r\n    }\r\n\r\n    function smallToArray(n) { // For performance reasons doesn't reference BASE, need to change this function if BASE changes\r\n        if (n < 1e7)\r\n            return [n];\r\n        if (n < 1e14)\r\n            return [n % 1e7, Math.floor(n / 1e7)];\r\n        return [n % 1e7, Math.floor(n / 1e7) % 1e7, Math.floor(n / 1e14)];\r\n    }\r\n\r\n    function arrayToSmall(arr) { // If BASE changes this function may need to change\r\n        trim(arr);\r\n        var length = arr.length;\r\n        if (length < 4 && compareAbs(arr, MAX_INT_ARR) < 0) {\r\n            switch (length) {\r\n                case 0: return 0;\r\n                case 1: return arr[0];\r\n                case 2: return arr[0] + arr[1] * BASE;\r\n                default: return arr[0] + (arr[1] + arr[2] * BASE) * BASE;\r\n            }\r\n        }\r\n        return arr;\r\n    }\r\n\r\n    function trim(v) {\r\n        var i = v.length;\r\n        while (v[--i] === 0);\r\n        v.length = i + 1;\r\n    }\r\n\r\n    function createArray(length) { // function shamelessly stolen from Yaffle's library https://github.com/Yaffle/BigInteger\r\n        var x = new Array(length);\r\n        var i = -1;\r\n        while (++i < length) {\r\n            x[i] = 0;\r\n        }\r\n        return x;\r\n    }\r\n\r\n    function truncate(n) {\r\n        if (n > 0) return Math.floor(n);\r\n        return Math.ceil(n);\r\n    }\r\n\r\n    function add(a, b) { // assumes a and b are arrays with a.length >= b.length\r\n        var l_a = a.length,\r\n            l_b = b.length,\r\n            r = new Array(l_a),\r\n            carry = 0,\r\n            base = BASE,\r\n            sum, i;\r\n        for (i = 0; i < l_b; i++) {\r\n            sum = a[i] + b[i] + carry;\r\n            carry = sum >= base ? 1 : 0;\r\n            r[i] = sum - carry * base;\r\n        }\r\n        while (i < l_a) {\r\n            sum = a[i] + carry;\r\n            carry = sum === base ? 1 : 0;\r\n            r[i++] = sum - carry * base;\r\n        }\r\n        if (carry > 0) r.push(carry);\r\n        return r;\r\n    }\r\n\r\n    function addAny(a, b) {\r\n        if (a.length >= b.length) return add(a, b);\r\n        return add(b, a);\r\n    }\r\n\r\n    function addSmall(a, carry) { // assumes a is array, carry is number with 0 <= carry < MAX_INT\r\n        var l = a.length,\r\n            r = new Array(l),\r\n            base = BASE,\r\n            sum, i;\r\n        for (i = 0; i < l; i++) {\r\n            sum = a[i] - base + carry;\r\n            carry = Math.floor(sum / base);\r\n            r[i] = sum - carry * base;\r\n            carry += 1;\r\n        }\r\n        while (carry > 0) {\r\n            r[i++] = carry % base;\r\n            carry = Math.floor(carry / base);\r\n        }\r\n        return r;\r\n    }\r\n\r\n    BigInteger.prototype.add = function (v) {\r\n        var n = parseValue(v);\r\n        if (this.sign !== n.sign) {\r\n            return this.subtract(n.negate());\r\n        }\r\n        var a = this.value, b = n.value;\r\n        if (n.isSmall) {\r\n            return new BigInteger(addSmall(a, Math.abs(b)), this.sign);\r\n        }\r\n        return new BigInteger(addAny(a, b), this.sign);\r\n    };\r\n    BigInteger.prototype.plus = BigInteger.prototype.add;\r\n\r\n    SmallInteger.prototype.add = function (v) {\r\n        var n = parseValue(v);\r\n        var a = this.value;\r\n        if (a < 0 !== n.sign) {\r\n            return this.subtract(n.negate());\r\n        }\r\n        var b = n.value;\r\n        if (n.isSmall) {\r\n            if (isPrecise(a + b)) return new SmallInteger(a + b);\r\n            b = smallToArray(Math.abs(b));\r\n        }\r\n        return new BigInteger(addSmall(b, Math.abs(a)), a < 0);\r\n    };\r\n    SmallInteger.prototype.plus = SmallInteger.prototype.add;\r\n\r\n    NativeBigInt.prototype.add = function (v) {\r\n        return new NativeBigInt(this.value + parseValue(v).value);\r\n    }\r\n    NativeBigInt.prototype.plus = NativeBigInt.prototype.add;\r\n\r\n    function subtract(a, b) { // assumes a and b are arrays with a >= b\r\n        var a_l = a.length,\r\n            b_l = b.length,\r\n            r = new Array(a_l),\r\n            borrow = 0,\r\n            base = BASE,\r\n            i, difference;\r\n        for (i = 0; i < b_l; i++) {\r\n            difference = a[i] - borrow - b[i];\r\n            if (difference < 0) {\r\n                difference += base;\r\n                borrow = 1;\r\n            } else borrow = 0;\r\n            r[i] = difference;\r\n        }\r\n        for (i = b_l; i < a_l; i++) {\r\n            difference = a[i] - borrow;\r\n            if (difference < 0) difference += base;\r\n            else {\r\n                r[i++] = difference;\r\n                break;\r\n            }\r\n            r[i] = difference;\r\n        }\r\n        for (; i < a_l; i++) {\r\n            r[i] = a[i];\r\n        }\r\n        trim(r);\r\n        return r;\r\n    }\r\n\r\n    function subtractAny(a, b, sign) {\r\n        var value;\r\n        if (compareAbs(a, b) >= 0) {\r\n            value = subtract(a, b);\r\n        } else {\r\n            value = subtract(b, a);\r\n            sign = !sign;\r\n        }\r\n        value = arrayToSmall(value);\r\n        if (typeof value === \"number\") {\r\n            if (sign) value = -value;\r\n            return new SmallInteger(value);\r\n        }\r\n        return new BigInteger(value, sign);\r\n    }\r\n\r\n    function subtractSmall(a, b, sign) { // assumes a is array, b is number with 0 <= b < MAX_INT\r\n        var l = a.length,\r\n            r = new Array(l),\r\n            carry = -b,\r\n            base = BASE,\r\n            i, difference;\r\n        for (i = 0; i < l; i++) {\r\n            difference = a[i] + carry;\r\n            carry = Math.floor(difference / base);\r\n            difference %= base;\r\n            r[i] = difference < 0 ? difference + base : difference;\r\n        }\r\n        r = arrayToSmall(r);\r\n        if (typeof r === \"number\") {\r\n            if (sign) r = -r;\r\n            return new SmallInteger(r);\r\n        } return new BigInteger(r, sign);\r\n    }\r\n\r\n    BigInteger.prototype.subtract = function (v) {\r\n        var n = parseValue(v);\r\n        if (this.sign !== n.sign) {\r\n            return this.add(n.negate());\r\n        }\r\n        var a = this.value, b = n.value;\r\n        if (n.isSmall)\r\n            return subtractSmall(a, Math.abs(b), this.sign);\r\n        return subtractAny(a, b, this.sign);\r\n    };\r\n    BigInteger.prototype.minus = BigInteger.prototype.subtract;\r\n\r\n    SmallInteger.prototype.subtract = function (v) {\r\n        var n = parseValue(v);\r\n        var a = this.value;\r\n        if (a < 0 !== n.sign) {\r\n            return this.add(n.negate());\r\n        }\r\n        var b = n.value;\r\n        if (n.isSmall) {\r\n            return new SmallInteger(a - b);\r\n        }\r\n        return subtractSmall(b, Math.abs(a), a >= 0);\r\n    };\r\n    SmallInteger.prototype.minus = SmallInteger.prototype.subtract;\r\n\r\n    NativeBigInt.prototype.subtract = function (v) {\r\n        return new NativeBigInt(this.value - parseValue(v).value);\r\n    }\r\n    NativeBigInt.prototype.minus = NativeBigInt.prototype.subtract;\r\n\r\n    BigInteger.prototype.negate = function () {\r\n        return new BigInteger(this.value, !this.sign);\r\n    };\r\n    SmallInteger.prototype.negate = function () {\r\n        var sign = this.sign;\r\n        var small = new SmallInteger(-this.value);\r\n        small.sign = !sign;\r\n        return small;\r\n    };\r\n    NativeBigInt.prototype.negate = function () {\r\n        return new NativeBigInt(-this.value);\r\n    }\r\n\r\n    BigInteger.prototype.abs = function () {\r\n        return new BigInteger(this.value, false);\r\n    };\r\n    SmallInteger.prototype.abs = function () {\r\n        return new SmallInteger(Math.abs(this.value));\r\n    };\r\n    NativeBigInt.prototype.abs = function () {\r\n        return new NativeBigInt(this.value >= 0 ? this.value : -this.value);\r\n    }\r\n\r\n\r\n    function multiplyLong(a, b) {\r\n        var a_l = a.length,\r\n            b_l = b.length,\r\n            l = a_l + b_l,\r\n            r = createArray(l),\r\n            base = BASE,\r\n            product, carry, i, a_i, b_j;\r\n        for (i = 0; i < a_l; ++i) {\r\n            a_i = a[i];\r\n            for (var j = 0; j < b_l; ++j) {\r\n                b_j = b[j];\r\n                product = a_i * b_j + r[i + j];\r\n                carry = Math.floor(product / base);\r\n                r[i + j] = product - carry * base;\r\n                r[i + j + 1] += carry;\r\n            }\r\n        }\r\n        trim(r);\r\n        return r;\r\n    }\r\n\r\n    function multiplySmall(a, b) { // assumes a is array, b is number with |b| < BASE\r\n        var l = a.length,\r\n            r = new Array(l),\r\n            base = BASE,\r\n            carry = 0,\r\n            product, i;\r\n        for (i = 0; i < l; i++) {\r\n            product = a[i] * b + carry;\r\n            carry = Math.floor(product / base);\r\n            r[i] = product - carry * base;\r\n        }\r\n        while (carry > 0) {\r\n            r[i++] = carry % base;\r\n            carry = Math.floor(carry / base);\r\n        }\r\n        return r;\r\n    }\r\n\r\n    function shiftLeft(x, n) {\r\n        var r = [];\r\n        while (n-- > 0) r.push(0);\r\n        return r.concat(x);\r\n    }\r\n\r\n    function multiplyKaratsuba(x, y) {\r\n        var n = Math.max(x.length, y.length);\r\n\r\n        if (n <= 30) return multiplyLong(x, y);\r\n        n = Math.ceil(n / 2);\r\n\r\n        var b = x.slice(n),\r\n            a = x.slice(0, n),\r\n            d = y.slice(n),\r\n            c = y.slice(0, n);\r\n\r\n        var ac = multiplyKaratsuba(a, c),\r\n            bd = multiplyKaratsuba(b, d),\r\n            abcd = multiplyKaratsuba(addAny(a, b), addAny(c, d));\r\n\r\n        var product = addAny(addAny(ac, shiftLeft(subtract(subtract(abcd, ac), bd), n)), shiftLeft(bd, 2 * n));\r\n        trim(product);\r\n        return product;\r\n    }\r\n\r\n    // The following function is derived from a surface fit of a graph plotting the performance difference\r\n    // between long multiplication and karatsuba multiplication versus the lengths of the two arrays.\r\n    function useKaratsuba(l1, l2) {\r\n        return -0.012 * l1 - 0.012 * l2 + 0.000015 * l1 * l2 > 0;\r\n    }\r\n\r\n    BigInteger.prototype.multiply = function (v) {\r\n        var n = parseValue(v),\r\n            a = this.value, b = n.value,\r\n            sign = this.sign !== n.sign,\r\n            abs;\r\n        if (n.isSmall) {\r\n            if (b === 0) return Integer[0];\r\n            if (b === 1) return this;\r\n            if (b === -1) return this.negate();\r\n            abs = Math.abs(b);\r\n            if (abs < BASE) {\r\n                return new BigInteger(multiplySmall(a, abs), sign);\r\n            }\r\n            b = smallToArray(abs);\r\n        }\r\n        if (useKaratsuba(a.length, b.length)) // Karatsuba is only faster for certain array sizes\r\n            return new BigInteger(multiplyKaratsuba(a, b), sign);\r\n        return new BigInteger(multiplyLong(a, b), sign);\r\n    };\r\n\r\n    BigInteger.prototype.times = BigInteger.prototype.multiply;\r\n\r\n    function multiplySmallAndArray(a, b, sign) { // a >= 0\r\n        if (a < BASE) {\r\n            return new BigInteger(multiplySmall(b, a), sign);\r\n        }\r\n        return new BigInteger(multiplyLong(b, smallToArray(a)), sign);\r\n    }\r\n    SmallInteger.prototype._multiplyBySmall = function (a) {\r\n        if (isPrecise(a.value * this.value)) {\r\n            return new SmallInteger(a.value * this.value);\r\n        }\r\n        return multiplySmallAndArray(Math.abs(a.value), smallToArray(Math.abs(this.value)), this.sign !== a.sign);\r\n    };\r\n    BigInteger.prototype._multiplyBySmall = function (a) {\r\n        if (a.value === 0) return Integer[0];\r\n        if (a.value === 1) return this;\r\n        if (a.value === -1) return this.negate();\r\n        return multiplySmallAndArray(Math.abs(a.value), this.value, this.sign !== a.sign);\r\n    };\r\n    SmallInteger.prototype.multiply = function (v) {\r\n        return parseValue(v)._multiplyBySmall(this);\r\n    };\r\n    SmallInteger.prototype.times = SmallInteger.prototype.multiply;\r\n\r\n    NativeBigInt.prototype.multiply = function (v) {\r\n        return new NativeBigInt(this.value * parseValue(v).value);\r\n    }\r\n    NativeBigInt.prototype.times = NativeBigInt.prototype.multiply;\r\n\r\n    function square(a) {\r\n        //console.assert(2 * BASE * BASE < MAX_INT);\r\n        var l = a.length,\r\n            r = createArray(l + l),\r\n            base = BASE,\r\n            product, carry, i, a_i, a_j;\r\n        for (i = 0; i < l; i++) {\r\n            a_i = a[i];\r\n            carry = 0 - a_i * a_i;\r\n            for (var j = i; j < l; j++) {\r\n                a_j = a[j];\r\n                product = 2 * (a_i * a_j) + r[i + j] + carry;\r\n                carry = Math.floor(product / base);\r\n                r[i + j] = product - carry * base;\r\n            }\r\n            r[i + l] = carry;\r\n        }\r\n        trim(r);\r\n        return r;\r\n    }\r\n\r\n    BigInteger.prototype.square = function () {\r\n        return new BigInteger(square(this.value), false);\r\n    };\r\n\r\n    SmallInteger.prototype.square = function () {\r\n        var value = this.value * this.value;\r\n        if (isPrecise(value)) return new SmallInteger(value);\r\n        return new BigInteger(square(smallToArray(Math.abs(this.value))), false);\r\n    };\r\n\r\n    NativeBigInt.prototype.square = function (v) {\r\n        return new NativeBigInt(this.value * this.value);\r\n    }\r\n\r\n    function divMod1(a, b) { // Left over from previous version. Performs faster than divMod2 on smaller input sizes.\r\n        var a_l = a.length,\r\n            b_l = b.length,\r\n            base = BASE,\r\n            result = createArray(b.length),\r\n            divisorMostSignificantDigit = b[b_l - 1],\r\n            // normalization\r\n            lambda = Math.ceil(base / (2 * divisorMostSignificantDigit)),\r\n            remainder = multiplySmall(a, lambda),\r\n            divisor = multiplySmall(b, lambda),\r\n            quotientDigit, shift, carry, borrow, i, l, q;\r\n        if (remainder.length <= a_l) remainder.push(0);\r\n        divisor.push(0);\r\n        divisorMostSignificantDigit = divisor[b_l - 1];\r\n        for (shift = a_l - b_l; shift >= 0; shift--) {\r\n            quotientDigit = base - 1;\r\n            if (remainder[shift + b_l] !== divisorMostSignificantDigit) {\r\n                quotientDigit = Math.floor((remainder[shift + b_l] * base + remainder[shift + b_l - 1]) / divisorMostSignificantDigit);\r\n            }\r\n            // quotientDigit <= base - 1\r\n            carry = 0;\r\n            borrow = 0;\r\n            l = divisor.length;\r\n            for (i = 0; i < l; i++) {\r\n                carry += quotientDigit * divisor[i];\r\n                q = Math.floor(carry / base);\r\n                borrow += remainder[shift + i] - (carry - q * base);\r\n                carry = q;\r\n                if (borrow < 0) {\r\n                    remainder[shift + i] = borrow + base;\r\n                    borrow = -1;\r\n                } else {\r\n                    remainder[shift + i] = borrow;\r\n                    borrow = 0;\r\n                }\r\n            }\r\n            while (borrow !== 0) {\r\n                quotientDigit -= 1;\r\n                carry = 0;\r\n                for (i = 0; i < l; i++) {\r\n                    carry += remainder[shift + i] - base + divisor[i];\r\n                    if (carry < 0) {\r\n                        remainder[shift + i] = carry + base;\r\n                        carry = 0;\r\n                    } else {\r\n                        remainder[shift + i] = carry;\r\n                        carry = 1;\r\n                    }\r\n                }\r\n                borrow += carry;\r\n            }\r\n            result[shift] = quotientDigit;\r\n        }\r\n        // denormalization\r\n        remainder = divModSmall(remainder, lambda)[0];\r\n        return [arrayToSmall(result), arrayToSmall(remainder)];\r\n    }\r\n\r\n    function divMod2(a, b) { // Implementation idea shamelessly stolen from Silent Matt's library http://silentmatt.com/biginteger/\r\n        // Performs faster than divMod1 on larger input sizes.\r\n        var a_l = a.length,\r\n            b_l = b.length,\r\n            result = [],\r\n            part = [],\r\n            base = BASE,\r\n            guess, xlen, highx, highy, check;\r\n        while (a_l) {\r\n            part.unshift(a[--a_l]);\r\n            trim(part);\r\n            if (compareAbs(part, b) < 0) {\r\n                result.push(0);\r\n                continue;\r\n            }\r\n            xlen = part.length;\r\n            highx = part[xlen - 1] * base + part[xlen - 2];\r\n            highy = b[b_l - 1] * base + b[b_l - 2];\r\n            if (xlen > b_l) {\r\n                highx = (highx + 1) * base;\r\n            }\r\n            guess = Math.ceil(highx / highy);\r\n            do {\r\n                check = multiplySmall(b, guess);\r\n                if (compareAbs(check, part) <= 0) break;\r\n                guess--;\r\n            } while (guess);\r\n            result.push(guess);\r\n            part = subtract(part, check);\r\n        }\r\n        result.reverse();\r\n        return [arrayToSmall(result), arrayToSmall(part)];\r\n    }\r\n\r\n    function divModSmall(value, lambda) {\r\n        var length = value.length,\r\n            quotient = createArray(length),\r\n            base = BASE,\r\n            i, q, remainder, divisor;\r\n        remainder = 0;\r\n        for (i = length - 1; i >= 0; --i) {\r\n            divisor = remainder * base + value[i];\r\n            q = truncate(divisor / lambda);\r\n            remainder = divisor - q * lambda;\r\n            quotient[i] = q | 0;\r\n        }\r\n        return [quotient, remainder | 0];\r\n    }\r\n\r\n    function divModAny(self, v) {\r\n        var value, n = parseValue(v);\r\n        if (supportsNativeBigInt) {\r\n            return [new NativeBigInt(self.value / n.value), new NativeBigInt(self.value % n.value)];\r\n        }\r\n        var a = self.value, b = n.value;\r\n        var quotient;\r\n        if (b === 0) throw new Error(\"Cannot divide by zero\");\r\n        if (self.isSmall) {\r\n            if (n.isSmall) {\r\n                return [new SmallInteger(truncate(a / b)), new SmallInteger(a % b)];\r\n            }\r\n            return [Integer[0], self];\r\n        }\r\n        if (n.isSmall) {\r\n            if (b === 1) return [self, Integer[0]];\r\n            if (b == -1) return [self.negate(), Integer[0]];\r\n            var abs = Math.abs(b);\r\n            if (abs < BASE) {\r\n                value = divModSmall(a, abs);\r\n                quotient = arrayToSmall(value[0]);\r\n                var remainder = value[1];\r\n                if (self.sign) remainder = -remainder;\r\n                if (typeof quotient === \"number\") {\r\n                    if (self.sign !== n.sign) quotient = -quotient;\r\n                    return [new SmallInteger(quotient), new SmallInteger(remainder)];\r\n                }\r\n                return [new BigInteger(quotient, self.sign !== n.sign), new SmallInteger(remainder)];\r\n            }\r\n            b = smallToArray(abs);\r\n        }\r\n        var comparison = compareAbs(a, b);\r\n        if (comparison === -1) return [Integer[0], self];\r\n        if (comparison === 0) return [Integer[self.sign === n.sign ? 1 : -1], Integer[0]];\r\n\r\n        // divMod1 is faster on smaller input sizes\r\n        if (a.length + b.length <= 200)\r\n            value = divMod1(a, b);\r\n        else value = divMod2(a, b);\r\n\r\n        quotient = value[0];\r\n        var qSign = self.sign !== n.sign,\r\n            mod = value[1],\r\n            mSign = self.sign;\r\n        if (typeof quotient === \"number\") {\r\n            if (qSign) quotient = -quotient;\r\n            quotient = new SmallInteger(quotient);\r\n        } else quotient = new BigInteger(quotient, qSign);\r\n        if (typeof mod === \"number\") {\r\n            if (mSign) mod = -mod;\r\n            mod = new SmallInteger(mod);\r\n        } else mod = new BigInteger(mod, mSign);\r\n        return [quotient, mod];\r\n    }\r\n\r\n    BigInteger.prototype.divmod = function (v) {\r\n        var result = divModAny(this, v);\r\n        return {\r\n            quotient: result[0],\r\n            remainder: result[1]\r\n        };\r\n    };\r\n    NativeBigInt.prototype.divmod = SmallInteger.prototype.divmod = BigInteger.prototype.divmod;\r\n\r\n\r\n    BigInteger.prototype.divide = function (v) {\r\n        return divModAny(this, v)[0];\r\n    };\r\n    NativeBigInt.prototype.over = NativeBigInt.prototype.divide = function (v) {\r\n        return new NativeBigInt(this.value / parseValue(v).value);\r\n    };\r\n    SmallInteger.prototype.over = SmallInteger.prototype.divide = BigInteger.prototype.over = BigInteger.prototype.divide;\r\n\r\n    BigInteger.prototype.mod = function (v) {\r\n        return divModAny(this, v)[1];\r\n    };\r\n    NativeBigInt.prototype.mod = NativeBigInt.prototype.remainder = function (v) {\r\n        return new NativeBigInt(this.value % parseValue(v).value);\r\n    };\r\n    SmallInteger.prototype.remainder = SmallInteger.prototype.mod = BigInteger.prototype.remainder = BigInteger.prototype.mod;\r\n\r\n    BigInteger.prototype.pow = function (v) {\r\n        var n = parseValue(v),\r\n            a = this.value,\r\n            b = n.value,\r\n            value, x, y;\r\n        if (b === 0) return Integer[1];\r\n        if (a === 0) return Integer[0];\r\n        if (a === 1) return Integer[1];\r\n        if (a === -1) return n.isEven() ? Integer[1] : Integer[-1];\r\n        if (n.sign) {\r\n            return Integer[0];\r\n        }\r\n        if (!n.isSmall) throw new Error(\"The exponent \" + n.toString() + \" is too large.\");\r\n        if (this.isSmall) {\r\n            if (isPrecise(value = Math.pow(a, b)))\r\n                return new SmallInteger(truncate(value));\r\n        }\r\n        x = this;\r\n        y = Integer[1];\r\n        while (true) {\r\n            if (b & 1 === 1) {\r\n                y = y.times(x);\r\n                --b;\r\n            }\r\n            if (b === 0) break;\r\n            b /= 2;\r\n            x = x.square();\r\n        }\r\n        return y;\r\n    };\r\n    SmallInteger.prototype.pow = BigInteger.prototype.pow;\r\n\r\n    NativeBigInt.prototype.pow = function (v) {\r\n        var n = parseValue(v);\r\n        var a = this.value, b = n.value;\r\n        var _0 = BigInt(0), _1 = BigInt(1), _2 = BigInt(2);\r\n        if (b === _0) return Integer[1];\r\n        if (a === _0) return Integer[0];\r\n        if (a === _1) return Integer[1];\r\n        if (a === BigInt(-1)) return n.isEven() ? Integer[1] : Integer[-1];\r\n        if (n.isNegative()) return new NativeBigInt(_0);\r\n        var x = this;\r\n        var y = Integer[1];\r\n        while (true) {\r\n            if ((b & _1) === _1) {\r\n                y = y.times(x);\r\n                --b;\r\n            }\r\n            if (b === _0) break;\r\n            b /= _2;\r\n            x = x.square();\r\n        }\r\n        return y;\r\n    }\r\n\r\n    BigInteger.prototype.modPow = function (exp, mod) {\r\n        exp = parseValue(exp);\r\n        mod = parseValue(mod);\r\n        if (mod.isZero()) throw new Error(\"Cannot take modPow with modulus 0\");\r\n        var r = Integer[1],\r\n            base = this.mod(mod);\r\n        if (exp.isNegative()) {\r\n            exp = exp.multiply(Integer[-1]);\r\n            base = base.modInv(mod);\r\n        }\r\n        while (exp.isPositive()) {\r\n            if (base.isZero()) return Integer[0];\r\n            if (exp.isOdd()) r = r.multiply(base).mod(mod);\r\n            exp = exp.divide(2);\r\n            base = base.square().mod(mod);\r\n        }\r\n        return r;\r\n    };\r\n    NativeBigInt.prototype.modPow = SmallInteger.prototype.modPow = BigInteger.prototype.modPow;\r\n\r\n    function compareAbs(a, b) {\r\n        if (a.length !== b.length) {\r\n            return a.length > b.length ? 1 : -1;\r\n        }\r\n        for (var i = a.length - 1; i >= 0; i--) {\r\n            if (a[i] !== b[i]) return a[i] > b[i] ? 1 : -1;\r\n        }\r\n        return 0;\r\n    }\r\n\r\n    BigInteger.prototype.compareAbs = function (v) {\r\n        var n = parseValue(v),\r\n            a = this.value,\r\n            b = n.value;\r\n        if (n.isSmall) return 1;\r\n        return compareAbs(a, b);\r\n    };\r\n    SmallInteger.prototype.compareAbs = function (v) {\r\n        var n = parseValue(v),\r\n            a = Math.abs(this.value),\r\n            b = n.value;\r\n        if (n.isSmall) {\r\n            b = Math.abs(b);\r\n            return a === b ? 0 : a > b ? 1 : -1;\r\n        }\r\n        return -1;\r\n    };\r\n    NativeBigInt.prototype.compareAbs = function (v) {\r\n        var a = this.value;\r\n        var b = parseValue(v).value;\r\n        a = a >= 0 ? a : -a;\r\n        b = b >= 0 ? b : -b;\r\n        return a === b ? 0 : a > b ? 1 : -1;\r\n    }\r\n\r\n    BigInteger.prototype.compare = function (v) {\r\n        // See discussion about comparison with Infinity:\r\n        // https://github.com/peterolson/BigInteger.js/issues/61\r\n        if (v === Infinity) {\r\n            return -1;\r\n        }\r\n        if (v === -Infinity) {\r\n            return 1;\r\n        }\r\n\r\n        var n = parseValue(v),\r\n            a = this.value,\r\n            b = n.value;\r\n        if (this.sign !== n.sign) {\r\n            return n.sign ? 1 : -1;\r\n        }\r\n        if (n.isSmall) {\r\n            return this.sign ? -1 : 1;\r\n        }\r\n        return compareAbs(a, b) * (this.sign ? -1 : 1);\r\n    };\r\n    BigInteger.prototype.compareTo = BigInteger.prototype.compare;\r\n\r\n    SmallInteger.prototype.compare = function (v) {\r\n        if (v === Infinity) {\r\n            return -1;\r\n        }\r\n        if (v === -Infinity) {\r\n            return 1;\r\n        }\r\n\r\n        var n = parseValue(v),\r\n            a = this.value,\r\n            b = n.value;\r\n        if (n.isSmall) {\r\n            return a == b ? 0 : a > b ? 1 : -1;\r\n        }\r\n        if (a < 0 !== n.sign) {\r\n            return a < 0 ? -1 : 1;\r\n        }\r\n        return a < 0 ? 1 : -1;\r\n    };\r\n    SmallInteger.prototype.compareTo = SmallInteger.prototype.compare;\r\n\r\n    NativeBigInt.prototype.compare = function (v) {\r\n        if (v === Infinity) {\r\n            return -1;\r\n        }\r\n        if (v === -Infinity) {\r\n            return 1;\r\n        }\r\n        var a = this.value;\r\n        var b = parseValue(v).value;\r\n        return a === b ? 0 : a > b ? 1 : -1;\r\n    }\r\n    NativeBigInt.prototype.compareTo = NativeBigInt.prototype.compare;\r\n\r\n    BigInteger.prototype.equals = function (v) {\r\n        return this.compare(v) === 0;\r\n    };\r\n    NativeBigInt.prototype.eq = NativeBigInt.prototype.equals = SmallInteger.prototype.eq = SmallInteger.prototype.equals = BigInteger.prototype.eq = BigInteger.prototype.equals;\r\n\r\n    BigInteger.prototype.notEquals = function (v) {\r\n        return this.compare(v) !== 0;\r\n    };\r\n    NativeBigInt.prototype.neq = NativeBigInt.prototype.notEquals = SmallInteger.prototype.neq = SmallInteger.prototype.notEquals = BigInteger.prototype.neq = BigInteger.prototype.notEquals;\r\n\r\n    BigInteger.prototype.greater = function (v) {\r\n        return this.compare(v) > 0;\r\n    };\r\n    NativeBigInt.prototype.gt = NativeBigInt.prototype.greater = SmallInteger.prototype.gt = SmallInteger.prototype.greater = BigInteger.prototype.gt = BigInteger.prototype.greater;\r\n\r\n    BigInteger.prototype.lesser = function (v) {\r\n        return this.compare(v) < 0;\r\n    };\r\n    NativeBigInt.prototype.lt = NativeBigInt.prototype.lesser = SmallInteger.prototype.lt = SmallInteger.prototype.lesser = BigInteger.prototype.lt = BigInteger.prototype.lesser;\r\n\r\n    BigInteger.prototype.greaterOrEquals = function (v) {\r\n        return this.compare(v) >= 0;\r\n    };\r\n    NativeBigInt.prototype.geq = NativeBigInt.prototype.greaterOrEquals = SmallInteger.prototype.geq = SmallInteger.prototype.greaterOrEquals = BigInteger.prototype.geq = BigInteger.prototype.greaterOrEquals;\r\n\r\n    BigInteger.prototype.lesserOrEquals = function (v) {\r\n        return this.compare(v) <= 0;\r\n    };\r\n    NativeBigInt.prototype.leq = NativeBigInt.prototype.lesserOrEquals = SmallInteger.prototype.leq = SmallInteger.prototype.lesserOrEquals = BigInteger.prototype.leq = BigInteger.prototype.lesserOrEquals;\r\n\r\n    BigInteger.prototype.isEven = function () {\r\n        return (this.value[0] & 1) === 0;\r\n    };\r\n    SmallInteger.prototype.isEven = function () {\r\n        return (this.value & 1) === 0;\r\n    };\r\n    NativeBigInt.prototype.isEven = function () {\r\n        return (this.value & BigInt(1)) === BigInt(0);\r\n    }\r\n\r\n    BigInteger.prototype.isOdd = function () {\r\n        return (this.value[0] & 1) === 1;\r\n    };\r\n    SmallInteger.prototype.isOdd = function () {\r\n        return (this.value & 1) === 1;\r\n    };\r\n    NativeBigInt.prototype.isOdd = function () {\r\n        return (this.value & BigInt(1)) === BigInt(1);\r\n    }\r\n\r\n    BigInteger.prototype.isPositive = function () {\r\n        return !this.sign;\r\n    };\r\n    SmallInteger.prototype.isPositive = function () {\r\n        return this.value > 0;\r\n    };\r\n    NativeBigInt.prototype.isPositive = SmallInteger.prototype.isPositive;\r\n\r\n    BigInteger.prototype.isNegative = function () {\r\n        return this.sign;\r\n    };\r\n    SmallInteger.prototype.isNegative = function () {\r\n        return this.value < 0;\r\n    };\r\n    NativeBigInt.prototype.isNegative = SmallInteger.prototype.isNegative;\r\n\r\n    BigInteger.prototype.isUnit = function () {\r\n        return false;\r\n    };\r\n    SmallInteger.prototype.isUnit = function () {\r\n        return Math.abs(this.value) === 1;\r\n    };\r\n    NativeBigInt.prototype.isUnit = function () {\r\n        return this.abs().value === BigInt(1);\r\n    }\r\n\r\n    BigInteger.prototype.isZero = function () {\r\n        return false;\r\n    };\r\n    SmallInteger.prototype.isZero = function () {\r\n        return this.value === 0;\r\n    };\r\n    NativeBigInt.prototype.isZero = function () {\r\n        return this.value === BigInt(0);\r\n    }\r\n\r\n    BigInteger.prototype.isDivisibleBy = function (v) {\r\n        var n = parseValue(v);\r\n        if (n.isZero()) return false;\r\n        if (n.isUnit()) return true;\r\n        if (n.compareAbs(2) === 0) return this.isEven();\r\n        return this.mod(n).isZero();\r\n    };\r\n    NativeBigInt.prototype.isDivisibleBy = SmallInteger.prototype.isDivisibleBy = BigInteger.prototype.isDivisibleBy;\r\n\r\n    function isBasicPrime(v) {\r\n        var n = v.abs();\r\n        if (n.isUnit()) return false;\r\n        if (n.equals(2) || n.equals(3) || n.equals(5)) return true;\r\n        if (n.isEven() || n.isDivisibleBy(3) || n.isDivisibleBy(5)) return false;\r\n        if (n.lesser(49)) return true;\r\n        // we don't know if it's prime: let the other functions figure it out\r\n    }\r\n\r\n    function millerRabinTest(n, a) {\r\n        var nPrev = n.prev(),\r\n            b = nPrev,\r\n            r = 0,\r\n            d, t, i, x;\r\n        while (b.isEven()) b = b.divide(2), r++;\r\n        next: for (i = 0; i < a.length; i++) {\r\n            if (n.lesser(a[i])) continue;\r\n            x = bigInt(a[i]).modPow(b, n);\r\n            if (x.isUnit() || x.equals(nPrev)) continue;\r\n            for (d = r - 1; d != 0; d--) {\r\n                x = x.square().mod(n);\r\n                if (x.isUnit()) return false;\r\n                if (x.equals(nPrev)) continue next;\r\n            }\r\n            return false;\r\n        }\r\n        return true;\r\n    }\r\n\r\n    // Set \"strict\" to true to force GRH-supported lower bound of 2*log(N)^2\r\n    BigInteger.prototype.isPrime = function (strict) {\r\n        var isPrime = isBasicPrime(this);\r\n        if (isPrime !== undefined) return isPrime;\r\n        var n = this.abs();\r\n        var bits = n.bitLength();\r\n        if (bits <= 64)\r\n            return millerRabinTest(n, [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37]);\r\n        var logN = Math.log(2) * bits.toJSNumber();\r\n        var t = Math.ceil((strict === true) ? (2 * Math.pow(logN, 2)) : logN);\r\n        for (var a = [], i = 0; i < t; i++) {\r\n            a.push(bigInt(i + 2));\r\n        }\r\n        return millerRabinTest(n, a);\r\n    };\r\n    NativeBigInt.prototype.isPrime = SmallInteger.prototype.isPrime = BigInteger.prototype.isPrime;\r\n\r\n    BigInteger.prototype.isProbablePrime = function (iterations, rng) {\r\n        var isPrime = isBasicPrime(this);\r\n        if (isPrime !== undefined) return isPrime;\r\n        var n = this.abs();\r\n        var t = iterations === undefined ? 5 : iterations;\r\n        for (var a = [], i = 0; i < t; i++) {\r\n            a.push(bigInt.randBetween(2, n.minus(2), rng));\r\n        }\r\n        return millerRabinTest(n, a);\r\n    };\r\n    NativeBigInt.prototype.isProbablePrime = SmallInteger.prototype.isProbablePrime = BigInteger.prototype.isProbablePrime;\r\n\r\n    BigInteger.prototype.modInv = function (n) {\r\n        var t = bigInt.zero, newT = bigInt.one, r = parseValue(n), newR = this.abs(), q, lastT, lastR;\r\n        while (!newR.isZero()) {\r\n            q = r.divide(newR);\r\n            lastT = t;\r\n            lastR = r;\r\n            t = newT;\r\n            r = newR;\r\n            newT = lastT.subtract(q.multiply(newT));\r\n            newR = lastR.subtract(q.multiply(newR));\r\n        }\r\n        if (!r.isUnit()) throw new Error(this.toString() + \" and \" + n.toString() + \" are not co-prime\");\r\n        if (t.compare(0) === -1) {\r\n            t = t.add(n);\r\n        }\r\n        if (this.isNegative()) {\r\n            return t.negate();\r\n        }\r\n        return t;\r\n    };\r\n\r\n    NativeBigInt.prototype.modInv = SmallInteger.prototype.modInv = BigInteger.prototype.modInv;\r\n\r\n    BigInteger.prototype.next = function () {\r\n        var value = this.value;\r\n        if (this.sign) {\r\n            return subtractSmall(value, 1, this.sign);\r\n        }\r\n        return new BigInteger(addSmall(value, 1), this.sign);\r\n    };\r\n    SmallInteger.prototype.next = function () {\r\n        var value = this.value;\r\n        if (value + 1 < MAX_INT) return new SmallInteger(value + 1);\r\n        return new BigInteger(MAX_INT_ARR, false);\r\n    };\r\n    NativeBigInt.prototype.next = function () {\r\n        return new NativeBigInt(this.value + BigInt(1));\r\n    }\r\n\r\n    BigInteger.prototype.prev = function () {\r\n        var value = this.value;\r\n        if (this.sign) {\r\n            return new BigInteger(addSmall(value, 1), true);\r\n        }\r\n        return subtractSmall(value, 1, this.sign);\r\n    };\r\n    SmallInteger.prototype.prev = function () {\r\n        var value = this.value;\r\n        if (value - 1 > -MAX_INT) return new SmallInteger(value - 1);\r\n        return new BigInteger(MAX_INT_ARR, true);\r\n    };\r\n    NativeBigInt.prototype.prev = function () {\r\n        return new NativeBigInt(this.value - BigInt(1));\r\n    }\r\n\r\n    var powersOfTwo = [1];\r\n    while (2 * powersOfTwo[powersOfTwo.length - 1] <= BASE) powersOfTwo.push(2 * powersOfTwo[powersOfTwo.length - 1]);\r\n    var powers2Length = powersOfTwo.length, highestPower2 = powersOfTwo[powers2Length - 1];\r\n\r\n    function shift_isSmall(n) {\r\n        return Math.abs(n) <= BASE;\r\n    }\r\n\r\n    BigInteger.prototype.shiftLeft = function (v) {\r\n        var n = parseValue(v).toJSNumber();\r\n        if (!shift_isSmall(n)) {\r\n            throw new Error(String(n) + \" is too large for shifting.\");\r\n        }\r\n        if (n < 0) return this.shiftRight(-n);\r\n        var result = this;\r\n        if (result.isZero()) return result;\r\n        while (n >= powers2Length) {\r\n            result = result.multiply(highestPower2);\r\n            n -= powers2Length - 1;\r\n        }\r\n        return result.multiply(powersOfTwo[n]);\r\n    };\r\n    NativeBigInt.prototype.shiftLeft = SmallInteger.prototype.shiftLeft = BigInteger.prototype.shiftLeft;\r\n\r\n    BigInteger.prototype.shiftRight = function (v) {\r\n        var remQuo;\r\n        var n = parseValue(v).toJSNumber();\r\n        if (!shift_isSmall(n)) {\r\n            throw new Error(String(n) + \" is too large for shifting.\");\r\n        }\r\n        if (n < 0) return this.shiftLeft(-n);\r\n        var result = this;\r\n        while (n >= powers2Length) {\r\n            if (result.isZero() || (result.isNegative() && result.isUnit())) return result;\r\n            remQuo = divModAny(result, highestPower2);\r\n            result = remQuo[1].isNegative() ? remQuo[0].prev() : remQuo[0];\r\n            n -= powers2Length - 1;\r\n        }\r\n        remQuo = divModAny(result, powersOfTwo[n]);\r\n        return remQuo[1].isNegative() ? remQuo[0].prev() : remQuo[0];\r\n    };\r\n    NativeBigInt.prototype.shiftRight = SmallInteger.prototype.shiftRight = BigInteger.prototype.shiftRight;\r\n\r\n    function bitwise(x, y, fn) {\r\n        y = parseValue(y);\r\n        var xSign = x.isNegative(), ySign = y.isNegative();\r\n        var xRem = xSign ? x.not() : x,\r\n            yRem = ySign ? y.not() : y;\r\n        var xDigit = 0, yDigit = 0;\r\n        var xDivMod = null, yDivMod = null;\r\n        var result = [];\r\n        while (!xRem.isZero() || !yRem.isZero()) {\r\n            xDivMod = divModAny(xRem, highestPower2);\r\n            xDigit = xDivMod[1].toJSNumber();\r\n            if (xSign) {\r\n                xDigit = highestPower2 - 1 - xDigit; // two's complement for negative numbers\r\n            }\r\n\r\n            yDivMod = divModAny(yRem, highestPower2);\r\n            yDigit = yDivMod[1].toJSNumber();\r\n            if (ySign) {\r\n                yDigit = highestPower2 - 1 - yDigit; // two's complement for negative numbers\r\n            }\r\n\r\n            xRem = xDivMod[0];\r\n            yRem = yDivMod[0];\r\n            result.push(fn(xDigit, yDigit));\r\n        }\r\n        var sum = fn(xSign ? 1 : 0, ySign ? 1 : 0) !== 0 ? bigInt(-1) : bigInt(0);\r\n        for (var i = result.length - 1; i >= 0; i -= 1) {\r\n            sum = sum.multiply(highestPower2).add(bigInt(result[i]));\r\n        }\r\n        return sum;\r\n    }\r\n\r\n    BigInteger.prototype.not = function () {\r\n        return this.negate().prev();\r\n    };\r\n    NativeBigInt.prototype.not = SmallInteger.prototype.not = BigInteger.prototype.not;\r\n\r\n    BigInteger.prototype.and = function (n) {\r\n        return bitwise(this, n, function (a, b) { return a & b; });\r\n    };\r\n    NativeBigInt.prototype.and = SmallInteger.prototype.and = BigInteger.prototype.and;\r\n\r\n    BigInteger.prototype.or = function (n) {\r\n        return bitwise(this, n, function (a, b) { return a | b; });\r\n    };\r\n    NativeBigInt.prototype.or = SmallInteger.prototype.or = BigInteger.prototype.or;\r\n\r\n    BigInteger.prototype.xor = function (n) {\r\n        return bitwise(this, n, function (a, b) { return a ^ b; });\r\n    };\r\n    NativeBigInt.prototype.xor = SmallInteger.prototype.xor = BigInteger.prototype.xor;\r\n\r\n    var LOBMASK_I = 1 << 30, LOBMASK_BI = (BASE & -BASE) * (BASE & -BASE) | LOBMASK_I;\r\n    function roughLOB(n) { // get lowestOneBit (rough)\r\n        // SmallInteger: return Min(lowestOneBit(n), 1 << 30)\r\n        // BigInteger: return Min(lowestOneBit(n), 1 << 14) [BASE=1e7]\r\n        var v = n.value,\r\n            x = typeof v === \"number\" ? v | LOBMASK_I :\r\n                typeof v === \"bigint\" ? v | BigInt(LOBMASK_I) :\r\n                    v[0] + v[1] * BASE | LOBMASK_BI;\r\n        return x & -x;\r\n    }\r\n\r\n    function integerLogarithm(value, base) {\r\n        if (base.compareTo(value) <= 0) {\r\n            var tmp = integerLogarithm(value, base.square(base));\r\n            var p = tmp.p;\r\n            var e = tmp.e;\r\n            var t = p.multiply(base);\r\n            return t.compareTo(value) <= 0 ? { p: t, e: e * 2 + 1 } : { p: p, e: e * 2 };\r\n        }\r\n        return { p: bigInt(1), e: 0 };\r\n    }\r\n\r\n    BigInteger.prototype.bitLength = function () {\r\n        var n = this;\r\n        if (n.compareTo(bigInt(0)) < 0) {\r\n            n = n.negate().subtract(bigInt(1));\r\n        }\r\n        if (n.compareTo(bigInt(0)) === 0) {\r\n            return bigInt(0);\r\n        }\r\n        return bigInt(integerLogarithm(n, bigInt(2)).e).add(bigInt(1));\r\n    }\r\n    NativeBigInt.prototype.bitLength = SmallInteger.prototype.bitLength = BigInteger.prototype.bitLength;\r\n\r\n    function max(a, b) {\r\n        a = parseValue(a);\r\n        b = parseValue(b);\r\n        return a.greater(b) ? a : b;\r\n    }\r\n    function min(a, b) {\r\n        a = parseValue(a);\r\n        b = parseValue(b);\r\n        return a.lesser(b) ? a : b;\r\n    }\r\n    function gcd(a, b) {\r\n        a = parseValue(a).abs();\r\n        b = parseValue(b).abs();\r\n        if (a.equals(b)) return a;\r\n        if (a.isZero()) return b;\r\n        if (b.isZero()) return a;\r\n        var c = Integer[1], d, t;\r\n        while (a.isEven() && b.isEven()) {\r\n            d = min(roughLOB(a), roughLOB(b));\r\n            a = a.divide(d);\r\n            b = b.divide(d);\r\n            c = c.multiply(d);\r\n        }\r\n        while (a.isEven()) {\r\n            a = a.divide(roughLOB(a));\r\n        }\r\n        do {\r\n            while (b.isEven()) {\r\n                b = b.divide(roughLOB(b));\r\n            }\r\n            if (a.greater(b)) {\r\n                t = b; b = a; a = t;\r\n            }\r\n            b = b.subtract(a);\r\n        } while (!b.isZero());\r\n        return c.isUnit() ? a : a.multiply(c);\r\n    }\r\n    function lcm(a, b) {\r\n        a = parseValue(a).abs();\r\n        b = parseValue(b).abs();\r\n        return a.divide(gcd(a, b)).multiply(b);\r\n    }\r\n    function randBetween(a, b, rng) {\r\n        a = parseValue(a);\r\n        b = parseValue(b);\r\n        var usedRNG = rng || Math.random;\r\n        var low = min(a, b), high = max(a, b);\r\n        var range = high.subtract(low).add(1);\r\n        if (range.isSmall) return low.add(Math.floor(usedRNG() * range));\r\n        var digits = toBase(range, BASE).value;\r\n        var result = [], restricted = true;\r\n        for (var i = 0; i < digits.length; i++) {\r\n            var top = restricted ? digits[i] : BASE;\r\n            var digit = truncate(usedRNG() * top);\r\n            result.push(digit);\r\n            if (digit < top) restricted = false;\r\n        }\r\n        return low.add(Integer.fromArray(result, BASE, false));\r\n    }\r\n\r\n    var parseBase = function (text, base, alphabet, caseSensitive) {\r\n        alphabet = alphabet || DEFAULT_ALPHABET;\r\n        text = String(text);\r\n        if (!caseSensitive) {\r\n            text = text.toLowerCase();\r\n            alphabet = alphabet.toLowerCase();\r\n        }\r\n        var length = text.length;\r\n        var i;\r\n        var absBase = Math.abs(base);\r\n        var alphabetValues = {};\r\n        for (i = 0; i < alphabet.length; i++) {\r\n            alphabetValues[alphabet[i]] = i;\r\n        }\r\n        for (i = 0; i < length; i++) {\r\n            var c = text[i];\r\n            if (c === \"-\") continue;\r\n            if (c in alphabetValues) {\r\n                if (alphabetValues[c] >= absBase) {\r\n                    if (c === \"1\" && absBase === 1) continue;\r\n                    throw new Error(c + \" is not a valid digit in base \" + base + \".\");\r\n                }\r\n            }\r\n        }\r\n        base = parseValue(base);\r\n        var digits = [];\r\n        var isNegative = text[0] === \"-\";\r\n        for (i = isNegative ? 1 : 0; i < text.length; i++) {\r\n            var c = text[i];\r\n            if (c in alphabetValues) digits.push(parseValue(alphabetValues[c]));\r\n            else if (c === \"<\") {\r\n                var start = i;\r\n                do { i++; } while (text[i] !== \">\" && i < text.length);\r\n                digits.push(parseValue(text.slice(start + 1, i)));\r\n            }\r\n            else throw new Error(c + \" is not a valid character\");\r\n        }\r\n        return parseBaseFromArray(digits, base, isNegative);\r\n    };\r\n\r\n    function parseBaseFromArray(digits, base, isNegative) {\r\n        var val = Integer[0], pow = Integer[1], i;\r\n        for (i = digits.length - 1; i >= 0; i--) {\r\n            val = val.add(digits[i].times(pow));\r\n            pow = pow.times(base);\r\n        }\r\n        return isNegative ? val.negate() : val;\r\n    }\r\n\r\n    function stringify(digit, alphabet) {\r\n        alphabet = alphabet || DEFAULT_ALPHABET;\r\n        if (digit < alphabet.length) {\r\n            return alphabet[digit];\r\n        }\r\n        return \"<\" + digit + \">\";\r\n    }\r\n\r\n    function toBase(n, base) {\r\n        base = bigInt(base);\r\n        if (base.isZero()) {\r\n            if (n.isZero()) return { value: [0], isNegative: false };\r\n            throw new Error(\"Cannot convert nonzero numbers to base 0.\");\r\n        }\r\n        if (base.equals(-1)) {\r\n            if (n.isZero()) return { value: [0], isNegative: false };\r\n            if (n.isNegative())\r\n                return {\r\n                    value: [].concat.apply([], Array.apply(null, Array(-n.toJSNumber()))\r\n                        .map(Array.prototype.valueOf, [1, 0])\r\n                    ),\r\n                    isNegative: false\r\n                };\r\n\r\n            var arr = Array.apply(null, Array(n.toJSNumber() - 1))\r\n                .map(Array.prototype.valueOf, [0, 1]);\r\n            arr.unshift([1]);\r\n            return {\r\n                value: [].concat.apply([], arr),\r\n                isNegative: false\r\n            };\r\n        }\r\n\r\n        var neg = false;\r\n        if (n.isNegative() && base.isPositive()) {\r\n            neg = true;\r\n            n = n.abs();\r\n        }\r\n        if (base.isUnit()) {\r\n            if (n.isZero()) return { value: [0], isNegative: false };\r\n\r\n            return {\r\n                value: Array.apply(null, Array(n.toJSNumber()))\r\n                    .map(Number.prototype.valueOf, 1),\r\n                isNegative: neg\r\n            };\r\n        }\r\n        var out = [];\r\n        var left = n, divmod;\r\n        while (left.isNegative() || left.compareAbs(base) >= 0) {\r\n            divmod = left.divmod(base);\r\n            left = divmod.quotient;\r\n            var digit = divmod.remainder;\r\n            if (digit.isNegative()) {\r\n                digit = base.minus(digit).abs();\r\n                left = left.next();\r\n            }\r\n            out.push(digit.toJSNumber());\r\n        }\r\n        out.push(left.toJSNumber());\r\n        return { value: out.reverse(), isNegative: neg };\r\n    }\r\n\r\n    function toBaseString(n, base, alphabet) {\r\n        var arr = toBase(n, base);\r\n        return (arr.isNegative ? \"-\" : \"\") + arr.value.map(function (x) {\r\n            return stringify(x, alphabet);\r\n        }).join('');\r\n    }\r\n\r\n    BigInteger.prototype.toArray = function (radix) {\r\n        return toBase(this, radix);\r\n    };\r\n\r\n    SmallInteger.prototype.toArray = function (radix) {\r\n        return toBase(this, radix);\r\n    };\r\n\r\n    NativeBigInt.prototype.toArray = function (radix) {\r\n        return toBase(this, radix);\r\n    };\r\n\r\n    BigInteger.prototype.toString = function (radix, alphabet) {\r\n        if (radix === undefined) radix = 10;\r\n        if (radix !== 10) return toBaseString(this, radix, alphabet);\r\n        var v = this.value, l = v.length, str = String(v[--l]), zeros = \"0000000\", digit;\r\n        while (--l >= 0) {\r\n            digit = String(v[l]);\r\n            str += zeros.slice(digit.length) + digit;\r\n        }\r\n        var sign = this.sign ? \"-\" : \"\";\r\n        return sign + str;\r\n    };\r\n\r\n    SmallInteger.prototype.toString = function (radix, alphabet) {\r\n        if (radix === undefined) radix = 10;\r\n        if (radix != 10) return toBaseString(this, radix, alphabet);\r\n        return String(this.value);\r\n    };\r\n\r\n    NativeBigInt.prototype.toString = SmallInteger.prototype.toString;\r\n\r\n    NativeBigInt.prototype.toJSON = BigInteger.prototype.toJSON = SmallInteger.prototype.toJSON = function () { return this.toString(); }\r\n\r\n    BigInteger.prototype.valueOf = function () {\r\n        return parseInt(this.toString(), 10);\r\n    };\r\n    BigInteger.prototype.toJSNumber = BigInteger.prototype.valueOf;\r\n\r\n    SmallInteger.prototype.valueOf = function () {\r\n        return this.value;\r\n    };\r\n    SmallInteger.prototype.toJSNumber = SmallInteger.prototype.valueOf;\r\n    NativeBigInt.prototype.valueOf = NativeBigInt.prototype.toJSNumber = function () {\r\n        return parseInt(this.toString(), 10);\r\n    }\r\n\r\n    function parseStringValue(v) {\r\n        if (isPrecise(+v)) {\r\n            var x = +v;\r\n            if (x === truncate(x))\r\n                return supportsNativeBigInt ? new NativeBigInt(BigInt(x)) : new SmallInteger(x);\r\n            throw new Error(\"Invalid integer: \" + v);\r\n        }\r\n        var sign = v[0] === \"-\";\r\n        if (sign) v = v.slice(1);\r\n        var split = v.split(/e/i);\r\n        if (split.length > 2) throw new Error(\"Invalid integer: \" + split.join(\"e\"));\r\n        if (split.length === 2) {\r\n            var exp = split[1];\r\n            if (exp[0] === \"+\") exp = exp.slice(1);\r\n            exp = +exp;\r\n            if (exp !== truncate(exp) || !isPrecise(exp)) throw new Error(\"Invalid integer: \" + exp + \" is not a valid exponent.\");\r\n            var text = split[0];\r\n            var decimalPlace = text.indexOf(\".\");\r\n            if (decimalPlace >= 0) {\r\n                exp -= text.length - decimalPlace - 1;\r\n                text = text.slice(0, decimalPlace) + text.slice(decimalPlace + 1);\r\n            }\r\n            if (exp < 0) throw new Error(\"Cannot include negative exponent part for integers\");\r\n            text += (new Array(exp + 1)).join(\"0\");\r\n            v = text;\r\n        }\r\n        var isValid = /^([0-9][0-9]*)$/.test(v);\r\n        if (!isValid) throw new Error(\"Invalid integer: \" + v);\r\n        if (supportsNativeBigInt) {\r\n            return new NativeBigInt(BigInt(sign ? \"-\" + v : v));\r\n        }\r\n        var r = [], max = v.length, l = LOG_BASE, min = max - l;\r\n        while (max > 0) {\r\n            r.push(+v.slice(min, max));\r\n            min -= l;\r\n            if (min < 0) min = 0;\r\n            max -= l;\r\n        }\r\n        trim(r);\r\n        return new BigInteger(r, sign);\r\n    }\r\n\r\n    function parseNumberValue(v) {\r\n        if (supportsNativeBigInt) {\r\n            return new NativeBigInt(BigInt(v));\r\n        }\r\n        if (isPrecise(v)) {\r\n            if (v !== truncate(v)) throw new Error(v + \" is not an integer.\");\r\n            return new SmallInteger(v);\r\n        }\r\n        return parseStringValue(v.toString());\r\n    }\r\n\r\n    function parseValue(v) {\r\n        if (typeof v === \"number\") {\r\n            return parseNumberValue(v);\r\n        }\r\n        if (typeof v === \"string\") {\r\n            return parseStringValue(v);\r\n        }\r\n        if (typeof v === \"bigint\") {\r\n            return new NativeBigInt(v);\r\n        }\r\n        return v;\r\n    }\r\n    // Pre-define numbers in range [-999,999]\r\n    for (var i = 0; i < 1000; i++) {\r\n        Integer[i] = parseValue(i);\r\n        if (i > 0) Integer[-i] = parseValue(-i);\r\n    }\r\n    // Backwards compatibility\r\n    Integer.one = Integer[1];\r\n    Integer.zero = Integer[0];\r\n    Integer.minusOne = Integer[-1];\r\n    Integer.max = max;\r\n    Integer.min = min;\r\n    Integer.gcd = gcd;\r\n    Integer.lcm = lcm;\r\n    Integer.isInstance = function (x) { return x instanceof BigInteger || x instanceof SmallInteger || x instanceof NativeBigInt; };\r\n    Integer.randBetween = randBetween;\r\n\r\n    Integer.fromArray = function (digits, base, isNegative) {\r\n        return parseBaseFromArray(digits.map(parseValue), parseValue(base || 10), isNegative);\r\n    };\r\n\r\n    return Integer;\r\n})();\r\n\r\n// Node.js check\r\nif (typeof module !== \"undefined\" && module.hasOwnProperty(\"exports\")) {\r\n    module.exports = bigInt;\r\n}\r\n\r\n//amd check\r\nif (typeof define === \"function\" && define.amd) {\r\n    define( function () {\r\n        return bigInt;\r\n    });\r\n}\r\n","import bigInt, { BigInteger } from \"big-integer\";\n\nimport { Resource } from \"../groups/types\";\nimport { Post, GraphNode } from \"../graph/types\";\n\nconst DA_UNIX_EPOCH = bigInt(\"170141184475152167957503069145530368000\"); // `@ud` ~1970.1.1\n\nconst DA_SECOND = bigInt(\"18446744073709551616\"); // `@ud` ~s1\n\nfunction chunk<T>(arr: T[], size: number): T[][] {\n  let chunk: T[] = [];\n  let newArray = [chunk];\n\n  for (let i = 0;i < arr.length;i++) {\n    if (chunk.length < size) {\n      chunk.push(arr[i])\n    } else {\n      chunk = [arr[i]]\n      newArray.push(chunk)\n    }\n  }\n\n  return newArray;\n}\n\nfunction dropWhile<T>(arr: T[], pred: (x: T) => boolean): T[] {\n  const newArray = arr.slice();\n\n  for (const item of arr) {\n    if (pred(item)) {\n      newArray.shift();\n    } else {\n      return newArray;\n    }\n  }\n\n  return newArray;\n}\n\n/**\n * Given a bigint representing an urbit date, returns a unix timestamp.\n *\n * @param   {BigInteger}  da  The urbit date\n *\n * @return  {number}          The unix timestamp\n */\nexport function daToUnix(da: BigInteger): number {\n  // ported from +time:enjs:format in hoon.hoon\n  const offset = DA_SECOND.divide(bigInt(2000));\n  const epochAdjusted = offset.add(da.subtract(DA_UNIX_EPOCH));\n\n  return Math.round(\n    epochAdjusted.multiply(bigInt(1000)).divide(DA_SECOND).toJSNumber()\n  );\n}\n\n/**\n * Given a unix timestamp, returns a bigint representing an urbit date\n *\n * @param   {number}      unix  The unix timestamp\n *\n * @return  {BigInteger}        The urbit date\n */\nexport function unixToDa(unix: number): BigInteger {\n  const timeSinceEpoch =  bigInt(unix).multiply(DA_SECOND).divide(bigInt(1000));\n  return DA_UNIX_EPOCH.add(timeSinceEpoch);\n}\n\n\nexport function makePatDa(patda: string): BigInteger {\n  return bigInt(udToDec(patda));\n}\n\nexport function udToDec(ud: string): string {\n  return ud.replace(/\\./g, \"\");\n}\n\nexport function decToUd(str: string): string {\n  const transform = chunk(str.split('').reverse(), 3)\n    .map(group => group.reverse().join(''))\n    .reverse()\n    .join('.')\n  return transform.replace(/^[0\\.]+/g, '');\n}\n\nexport function resourceAsPath(resource: Resource): string {\n  const { name, ship } = resource;\n  return `/ship/~${ship}/${name}`;\n}\n\nexport function uuid(): string {\n  let str = \"0v\";\n  str += Math.ceil(Math.random() * 8) + \".\";\n  for (let i = 0; i < 5; i++) {\n    let _str = Math.ceil(Math.random() * 10000000).toString(32);\n    _str = (\"00000\" + _str).substr(-5, 5);\n    str += _str + \".\";\n  }\n\n  return str.slice(0, -1);\n}\n\n/*\n  Goes from:\n    ~2018.7.17..23.15.09..5be5    // urbit @da\n  To:\n    (javascript Date object)\n*/\nexport function daToDate(st: string): Date {\n  const dub = function (n: string) {\n    return parseInt(n) < 10 ? \"0\" + parseInt(n) : n.toString();\n  };\n  const da = st.split(\"..\");\n  const bigEnd = da[0].split(\".\");\n  const lilEnd = da[1].split(\".\");\n  const ds = `${bigEnd[0].slice(1)}-${dub(bigEnd[1])}-${dub(bigEnd[2])}T${dub(\n    lilEnd[0]\n  )}:${dub(lilEnd[1])}:${dub(lilEnd[2])}Z`;\n  return new Date(ds);\n}\n\n/*\n  Goes from:\n    (javascript Date object)\n  To:\n    ~2018.7.17..23.15.09..5be5    // urbit @da\n*/\n\nexport function dateToDa(d: Date, mil: boolean = false): string {\n  const fil = function (n: number) {\n    return n >= 10 ? n : \"0\" + n;\n  };\n  return (\n    `~${d.getUTCFullYear()}.` +\n    `${d.getUTCMonth() + 1}.` +\n    `${fil(d.getUTCDate())}..` +\n    `${fil(d.getUTCHours())}.` +\n    `${fil(d.getUTCMinutes())}.` +\n    `${fil(d.getUTCSeconds())}` +\n    `${mil ? \"..0000\" : \"\"}`\n  );\n}\n\nexport function preSig(ship: string): string {\n  if (!ship) {\n    return '';\n  }\n\n  if (ship.trim().startsWith('~')) {\n    return ship.trim();\n  }\n\n  return '~'.concat(ship.trim());\n}\n\nexport function deSig(ship: string): string | null {\n  if (!ship) {\n    return null;\n  }\n  return ship.replace(\"~\", \"\");\n}\n\n// trim patps to match dojo, chat-cli\nexport function cite(ship: string) {\n  let patp = ship,\n    shortened = '';\n  if (patp === null || patp === '') {\n    return null;\n  }\n  if (patp.startsWith('~')) {\n    patp = patp.substr(1);\n  }\n  // comet\n  if (patp.length === 56) {\n    shortened = '~' + patp.slice(0, 6) + '_' + patp.slice(50, 56);\n    return shortened;\n  }\n  // moon\n  if (patp.length === 27) {\n    shortened = '~' + patp.slice(14, 20) + '^' + patp.slice(21, 27);\n    return shortened;\n  }\n  return `~${patp}`;\n}\n\n\nexport function uxToHex(ux: string) {\n  if (ux.length > 2 && ux.substr(0, 2) === '0x') {\n    const value = ux.substr(2).replace('.', '').padStart(6, '0');\n    return value;\n  }\n\n  const value = ux.replace('.', '').padStart(6, '0');\n  return value;\n}\n\nexport const hexToUx = (hex: string): string => {\n  const nonZeroChars = dropWhile(hex.split(''), y => y === '0');\n  const ux = chunk(nonZeroChars.reverse(), 4).map(x => {\n    return x.reverse().join('');\n  }).reverse().join('.') || '0';\n\n  return `0x${ux}`;\n};\n\n\n// encode the string into @ta-safe format, using logic from +wood.\n// for example, 'some Chars!' becomes '~.some.~43.hars~21.'\n//\nexport function stringToTa(str: string): string {\n  let out = \"\";\n  for (let i = 0; i < str.length; i++) {\n    const char = str[i];\n    let add = \"\";\n    switch (char) {\n      case \" \":\n        add = \".\";\n        break;\n      case \".\":\n        add = \"~.\";\n        break;\n      case \"~\":\n        add = \"~~\";\n        break;\n      default:\n        const charCode = str.charCodeAt(i);\n        if (\n          (charCode >= 97 && charCode <= 122) || // a-z\n          (charCode >= 48 && charCode <= 57) || // 0-9\n          char === \"-\"\n        ) {\n          add = char;\n        } else {\n          // TODO behavior for unicode doesn't match +wood's,\n          //     but we can probably get away with that for now.\n          add = \"~\" + charCode.toString(16) + \".\";\n        }\n    }\n    out = out + add;\n  }\n  return \"~.\" + out;\n}\n\nexport const buntPost = (): Post => ({\n  author: '',\n  contents: [],\n  hash: null,\n  index: '',\n  signatures: [],\n  'time-sent': 0\n});\n\nexport function makeNodeMap(posts: Post[]): Record<string, GraphNode> {\n  const nodes: Record<string, GraphNode> = {};\n  posts.forEach((p: Post) => {\n    nodes[String(p.index)] = { children: null, post: p };\n  });\n  return nodes;\n}\n","(function (module, exports) {\n  'use strict';\n\n  // Utils\n  function assert (val, msg) {\n    if (!val) throw new Error(msg || 'Assertion failed');\n  }\n\n  // Could use `inherits` module, but don't want to move from single file\n  // architecture yet.\n  function inherits (ctor, superCtor) {\n    ctor.super_ = superCtor;\n    var TempCtor = function () {};\n    TempCtor.prototype = superCtor.prototype;\n    ctor.prototype = new TempCtor();\n    ctor.prototype.constructor = ctor;\n  }\n\n  // BN\n\n  function BN (number, base, endian) {\n    if (BN.isBN(number)) {\n      return number;\n    }\n\n    this.negative = 0;\n    this.words = null;\n    this.length = 0;\n\n    // Reduction context\n    this.red = null;\n\n    if (number !== null) {\n      if (base === 'le' || base === 'be') {\n        endian = base;\n        base = 10;\n      }\n\n      this._init(number || 0, base || 10, endian || 'be');\n    }\n  }\n  if (typeof module === 'object') {\n    module.exports = BN;\n  } else {\n    exports.BN = BN;\n  }\n\n  BN.BN = BN;\n  BN.wordSize = 26;\n\n  var Buffer;\n  try {\n    if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n      Buffer = window.Buffer;\n    } else {\n      Buffer = require('buffer').Buffer;\n    }\n  } catch (e) {\n  }\n\n  BN.isBN = function isBN (num) {\n    if (num instanceof BN) {\n      return true;\n    }\n\n    return num !== null && typeof num === 'object' &&\n      num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n  };\n\n  BN.max = function max (left, right) {\n    if (left.cmp(right) > 0) return left;\n    return right;\n  };\n\n  BN.min = function min (left, right) {\n    if (left.cmp(right) < 0) return left;\n    return right;\n  };\n\n  BN.prototype._init = function init (number, base, endian) {\n    if (typeof number === 'number') {\n      return this._initNumber(number, base, endian);\n    }\n\n    if (typeof number === 'object') {\n      return this._initArray(number, base, endian);\n    }\n\n    if (base === 'hex') {\n      base = 16;\n    }\n    assert(base === (base | 0) && base >= 2 && base <= 36);\n\n    number = number.toString().replace(/\\s+/g, '');\n    var start = 0;\n    if (number[0] === '-') {\n      start++;\n      this.negative = 1;\n    }\n\n    if (start < number.length) {\n      if (base === 16) {\n        this._parseHex(number, start, endian);\n      } else {\n        this._parseBase(number, base, start);\n        if (endian === 'le') {\n          this._initArray(this.toArray(), base, endian);\n        }\n      }\n    }\n  };\n\n  BN.prototype._initNumber = function _initNumber (number, base, endian) {\n    if (number < 0) {\n      this.negative = 1;\n      number = -number;\n    }\n    if (number < 0x4000000) {\n      this.words = [ number & 0x3ffffff ];\n      this.length = 1;\n    } else if (number < 0x10000000000000) {\n      this.words = [\n        number & 0x3ffffff,\n        (number / 0x4000000) & 0x3ffffff\n      ];\n      this.length = 2;\n    } else {\n      assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n      this.words = [\n        number & 0x3ffffff,\n        (number / 0x4000000) & 0x3ffffff,\n        1\n      ];\n      this.length = 3;\n    }\n\n    if (endian !== 'le') return;\n\n    // Reverse the bytes\n    this._initArray(this.toArray(), base, endian);\n  };\n\n  BN.prototype._initArray = function _initArray (number, base, endian) {\n    // Perhaps a Uint8Array\n    assert(typeof number.length === 'number');\n    if (number.length <= 0) {\n      this.words = [ 0 ];\n      this.length = 1;\n      return this;\n    }\n\n    this.length = Math.ceil(number.length / 3);\n    this.words = new Array(this.length);\n    for (var i = 0; i < this.length; i++) {\n      this.words[i] = 0;\n    }\n\n    var j, w;\n    var off = 0;\n    if (endian === 'be') {\n      for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n        w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n        this.words[j] |= (w << off) & 0x3ffffff;\n        this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n        off += 24;\n        if (off >= 26) {\n          off -= 26;\n          j++;\n        }\n      }\n    } else if (endian === 'le') {\n      for (i = 0, j = 0; i < number.length; i += 3) {\n        w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n        this.words[j] |= (w << off) & 0x3ffffff;\n        this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n        off += 24;\n        if (off >= 26) {\n          off -= 26;\n          j++;\n        }\n      }\n    }\n    return this.strip();\n  };\n\n  function parseHex4Bits (string, index) {\n    var c = string.charCodeAt(index);\n    // 'A' - 'F'\n    if (c >= 65 && c <= 70) {\n      return c - 55;\n    // 'a' - 'f'\n    } else if (c >= 97 && c <= 102) {\n      return c - 87;\n    // '0' - '9'\n    } else {\n      return (c - 48) & 0xf;\n    }\n  }\n\n  function parseHexByte (string, lowerBound, index) {\n    var r = parseHex4Bits(string, index);\n    if (index - 1 >= lowerBound) {\n      r |= parseHex4Bits(string, index - 1) << 4;\n    }\n    return r;\n  }\n\n  BN.prototype._parseHex = function _parseHex (number, start, endian) {\n    // Create possibly bigger array to ensure that it fits the number\n    this.length = Math.ceil((number.length - start) / 6);\n    this.words = new Array(this.length);\n    for (var i = 0; i < this.length; i++) {\n      this.words[i] = 0;\n    }\n\n    // 24-bits chunks\n    var off = 0;\n    var j = 0;\n\n    var w;\n    if (endian === 'be') {\n      for (i = number.length - 1; i >= start; i -= 2) {\n        w = parseHexByte(number, start, i) << off;\n        this.words[j] |= w & 0x3ffffff;\n        if (off >= 18) {\n          off -= 18;\n          j += 1;\n          this.words[j] |= w >>> 26;\n        } else {\n          off += 8;\n        }\n      }\n    } else {\n      var parseLength = number.length - start;\n      for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n        w = parseHexByte(number, start, i) << off;\n        this.words[j] |= w & 0x3ffffff;\n        if (off >= 18) {\n          off -= 18;\n          j += 1;\n          this.words[j] |= w >>> 26;\n        } else {\n          off += 8;\n        }\n      }\n    }\n\n    this.strip();\n  };\n\n  function parseBase (str, start, end, mul) {\n    var r = 0;\n    var len = Math.min(str.length, end);\n    for (var i = start; i < len; i++) {\n      var c = str.charCodeAt(i) - 48;\n\n      r *= mul;\n\n      // 'a'\n      if (c >= 49) {\n        r += c - 49 + 0xa;\n\n      // 'A'\n      } else if (c >= 17) {\n        r += c - 17 + 0xa;\n\n      // '0' - '9'\n      } else {\n        r += c;\n      }\n    }\n    return r;\n  }\n\n  BN.prototype._parseBase = function _parseBase (number, base, start) {\n    // Initialize as zero\n    this.words = [ 0 ];\n    this.length = 1;\n\n    // Find length of limb in base\n    for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n      limbLen++;\n    }\n    limbLen--;\n    limbPow = (limbPow / base) | 0;\n\n    var total = number.length - start;\n    var mod = total % limbLen;\n    var end = Math.min(total, total - mod) + start;\n\n    var word = 0;\n    for (var i = start; i < end; i += limbLen) {\n      word = parseBase(number, i, i + limbLen, base);\n\n      this.imuln(limbPow);\n      if (this.words[0] + word < 0x4000000) {\n        this.words[0] += word;\n      } else {\n        this._iaddn(word);\n      }\n    }\n\n    if (mod !== 0) {\n      var pow = 1;\n      word = parseBase(number, i, number.length, base);\n\n      for (i = 0; i < mod; i++) {\n        pow *= base;\n      }\n\n      this.imuln(pow);\n      if (this.words[0] + word < 0x4000000) {\n        this.words[0] += word;\n      } else {\n        this._iaddn(word);\n      }\n    }\n\n    this.strip();\n  };\n\n  BN.prototype.copy = function copy (dest) {\n    dest.words = new Array(this.length);\n    for (var i = 0; i < this.length; i++) {\n      dest.words[i] = this.words[i];\n    }\n    dest.length = this.length;\n    dest.negative = this.negative;\n    dest.red = this.red;\n  };\n\n  BN.prototype.clone = function clone () {\n    var r = new BN(null);\n    this.copy(r);\n    return r;\n  };\n\n  BN.prototype._expand = function _expand (size) {\n    while (this.length < size) {\n      this.words[this.length++] = 0;\n    }\n    return this;\n  };\n\n  // Remove leading `0` from `this`\n  BN.prototype.strip = function strip () {\n    while (this.length > 1 && this.words[this.length - 1] === 0) {\n      this.length--;\n    }\n    return this._normSign();\n  };\n\n  BN.prototype._normSign = function _normSign () {\n    // -0 = 0\n    if (this.length === 1 && this.words[0] === 0) {\n      this.negative = 0;\n    }\n    return this;\n  };\n\n  BN.prototype.inspect = function inspect () {\n    return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\n  };\n\n  /*\n\n  var zeros = [];\n  var groupSizes = [];\n  var groupBases = [];\n\n  var s = '';\n  var i = -1;\n  while (++i < BN.wordSize) {\n    zeros[i] = s;\n    s += '0';\n  }\n  groupSizes[0] = 0;\n  groupSizes[1] = 0;\n  groupBases[0] = 0;\n  groupBases[1] = 0;\n  var base = 2 - 1;\n  while (++base < 36 + 1) {\n    var groupSize = 0;\n    var groupBase = 1;\n    while (groupBase < (1 << BN.wordSize) / base) {\n      groupBase *= base;\n      groupSize += 1;\n    }\n    groupSizes[base] = groupSize;\n    groupBases[base] = groupBase;\n  }\n\n  */\n\n  var zeros = [\n    '',\n    '0',\n    '00',\n    '000',\n    '0000',\n    '00000',\n    '000000',\n    '0000000',\n    '00000000',\n    '000000000',\n    '0000000000',\n    '00000000000',\n    '000000000000',\n    '0000000000000',\n    '00000000000000',\n    '000000000000000',\n    '0000000000000000',\n    '00000000000000000',\n    '000000000000000000',\n    '0000000000000000000',\n    '00000000000000000000',\n    '000000000000000000000',\n    '0000000000000000000000',\n    '00000000000000000000000',\n    '000000000000000000000000',\n    '0000000000000000000000000'\n  ];\n\n  var groupSizes = [\n    0, 0,\n    25, 16, 12, 11, 10, 9, 8,\n    8, 7, 7, 7, 7, 6, 6,\n    6, 6, 6, 6, 6, 5, 5,\n    5, 5, 5, 5, 5, 5, 5,\n    5, 5, 5, 5, 5, 5, 5\n  ];\n\n  var groupBases = [\n    0, 0,\n    33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n    43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n    16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n    6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n    24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n  ];\n\n  BN.prototype.toString = function toString (base, padding) {\n    base = base || 10;\n    padding = padding | 0 || 1;\n\n    var out;\n    if (base === 16 || base === 'hex') {\n      out = '';\n      var off = 0;\n      var carry = 0;\n      for (var i = 0; i < this.length; i++) {\n        var w = this.words[i];\n        var word = (((w << off) | carry) & 0xffffff).toString(16);\n        carry = (w >>> (24 - off)) & 0xffffff;\n        if (carry !== 0 || i !== this.length - 1) {\n          out = zeros[6 - word.length] + word + out;\n        } else {\n          out = word + out;\n        }\n        off += 2;\n        if (off >= 26) {\n          off -= 26;\n          i--;\n        }\n      }\n      if (carry !== 0) {\n        out = carry.toString(16) + out;\n      }\n      while (out.length % padding !== 0) {\n        out = '0' + out;\n      }\n      if (this.negative !== 0) {\n        out = '-' + out;\n      }\n      return out;\n    }\n\n    if (base === (base | 0) && base >= 2 && base <= 36) {\n      // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n      var groupSize = groupSizes[base];\n      // var groupBase = Math.pow(base, groupSize);\n      var groupBase = groupBases[base];\n      out = '';\n      var c = this.clone();\n      c.negative = 0;\n      while (!c.isZero()) {\n        var r = c.modn(groupBase).toString(base);\n        c = c.idivn(groupBase);\n\n        if (!c.isZero()) {\n          out = zeros[groupSize - r.length] + r + out;\n        } else {\n          out = r + out;\n        }\n      }\n      if (this.isZero()) {\n        out = '0' + out;\n      }\n      while (out.length % padding !== 0) {\n        out = '0' + out;\n      }\n      if (this.negative !== 0) {\n        out = '-' + out;\n      }\n      return out;\n    }\n\n    assert(false, 'Base should be between 2 and 36');\n  };\n\n  BN.prototype.toNumber = function toNumber () {\n    var ret = this.words[0];\n    if (this.length === 2) {\n      ret += this.words[1] * 0x4000000;\n    } else if (this.length === 3 && this.words[2] === 0x01) {\n      // NOTE: at this stage it is known that the top bit is set\n      ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n    } else if (this.length > 2) {\n      assert(false, 'Number can only safely store up to 53 bits');\n    }\n    return (this.negative !== 0) ? -ret : ret;\n  };\n\n  BN.prototype.toJSON = function toJSON () {\n    return this.toString(16);\n  };\n\n  BN.prototype.toBuffer = function toBuffer (endian, length) {\n    assert(typeof Buffer !== 'undefined');\n    return this.toArrayLike(Buffer, endian, length);\n  };\n\n  BN.prototype.toArray = function toArray (endian, length) {\n    return this.toArrayLike(Array, endian, length);\n  };\n\n  BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n    var byteLength = this.byteLength();\n    var reqLength = length || Math.max(1, byteLength);\n    assert(byteLength <= reqLength, 'byte array longer than desired length');\n    assert(reqLength > 0, 'Requested array length <= 0');\n\n    this.strip();\n    var littleEndian = endian === 'le';\n    var res = new ArrayType(reqLength);\n\n    var b, i;\n    var q = this.clone();\n    if (!littleEndian) {\n      // Assume big-endian\n      for (i = 0; i < reqLength - byteLength; i++) {\n        res[i] = 0;\n      }\n\n      for (i = 0; !q.isZero(); i++) {\n        b = q.andln(0xff);\n        q.iushrn(8);\n\n        res[reqLength - i - 1] = b;\n      }\n    } else {\n      for (i = 0; !q.isZero(); i++) {\n        b = q.andln(0xff);\n        q.iushrn(8);\n\n        res[i] = b;\n      }\n\n      for (; i < reqLength; i++) {\n        res[i] = 0;\n      }\n    }\n\n    return res;\n  };\n\n  if (Math.clz32) {\n    BN.prototype._countBits = function _countBits (w) {\n      return 32 - Math.clz32(w);\n    };\n  } else {\n    BN.prototype._countBits = function _countBits (w) {\n      var t = w;\n      var r = 0;\n      if (t >= 0x1000) {\n        r += 13;\n        t >>>= 13;\n      }\n      if (t >= 0x40) {\n        r += 7;\n        t >>>= 7;\n      }\n      if (t >= 0x8) {\n        r += 4;\n        t >>>= 4;\n      }\n      if (t >= 0x02) {\n        r += 2;\n        t >>>= 2;\n      }\n      return r + t;\n    };\n  }\n\n  BN.prototype._zeroBits = function _zeroBits (w) {\n    // Short-cut\n    if (w === 0) return 26;\n\n    var t = w;\n    var r = 0;\n    if ((t & 0x1fff) === 0) {\n      r += 13;\n      t >>>= 13;\n    }\n    if ((t & 0x7f) === 0) {\n      r += 7;\n      t >>>= 7;\n    }\n    if ((t & 0xf) === 0) {\n      r += 4;\n      t >>>= 4;\n    }\n    if ((t & 0x3) === 0) {\n      r += 2;\n      t >>>= 2;\n    }\n    if ((t & 0x1) === 0) {\n      r++;\n    }\n    return r;\n  };\n\n  // Return number of used bits in a BN\n  BN.prototype.bitLength = function bitLength () {\n    var w = this.words[this.length - 1];\n    var hi = this._countBits(w);\n    return (this.length - 1) * 26 + hi;\n  };\n\n  function toBitArray (num) {\n    var w = new Array(num.bitLength());\n\n    for (var bit = 0; bit < w.length; bit++) {\n      var off = (bit / 26) | 0;\n      var wbit = bit % 26;\n\n      w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n    }\n\n    return w;\n  }\n\n  // Number of trailing zero bits\n  BN.prototype.zeroBits = function zeroBits () {\n    if (this.isZero()) return 0;\n\n    var r = 0;\n    for (var i = 0; i < this.length; i++) {\n      var b = this._zeroBits(this.words[i]);\n      r += b;\n      if (b !== 26) break;\n    }\n    return r;\n  };\n\n  BN.prototype.byteLength = function byteLength () {\n    return Math.ceil(this.bitLength() / 8);\n  };\n\n  BN.prototype.toTwos = function toTwos (width) {\n    if (this.negative !== 0) {\n      return this.abs().inotn(width).iaddn(1);\n    }\n    return this.clone();\n  };\n\n  BN.prototype.fromTwos = function fromTwos (width) {\n    if (this.testn(width - 1)) {\n      return this.notn(width).iaddn(1).ineg();\n    }\n    return this.clone();\n  };\n\n  BN.prototype.isNeg = function isNeg () {\n    return this.negative !== 0;\n  };\n\n  // Return negative clone of `this`\n  BN.prototype.neg = function neg () {\n    return this.clone().ineg();\n  };\n\n  BN.prototype.ineg = function ineg () {\n    if (!this.isZero()) {\n      this.negative ^= 1;\n    }\n\n    return this;\n  };\n\n  // Or `num` with `this` in-place\n  BN.prototype.iuor = function iuor (num) {\n    while (this.length < num.length) {\n      this.words[this.length++] = 0;\n    }\n\n    for (var i = 0; i < num.length; i++) {\n      this.words[i] = this.words[i] | num.words[i];\n    }\n\n    return this.strip();\n  };\n\n  BN.prototype.ior = function ior (num) {\n    assert((this.negative | num.negative) === 0);\n    return this.iuor(num);\n  };\n\n  // Or `num` with `this`\n  BN.prototype.or = function or (num) {\n    if (this.length > num.length) return this.clone().ior(num);\n    return num.clone().ior(this);\n  };\n\n  BN.prototype.uor = function uor (num) {\n    if (this.length > num.length) return this.clone().iuor(num);\n    return num.clone().iuor(this);\n  };\n\n  // And `num` with `this` in-place\n  BN.prototype.iuand = function iuand (num) {\n    // b = min-length(num, this)\n    var b;\n    if (this.length > num.length) {\n      b = num;\n    } else {\n      b = this;\n    }\n\n    for (var i = 0; i < b.length; i++) {\n      this.words[i] = this.words[i] & num.words[i];\n    }\n\n    this.length = b.length;\n\n    return this.strip();\n  };\n\n  BN.prototype.iand = function iand (num) {\n    assert((this.negative | num.negative) === 0);\n    return this.iuand(num);\n  };\n\n  // And `num` with `this`\n  BN.prototype.and = function and (num) {\n    if (this.length > num.length) return this.clone().iand(num);\n    return num.clone().iand(this);\n  };\n\n  BN.prototype.uand = function uand (num) {\n    if (this.length > num.length) return this.clone().iuand(num);\n    return num.clone().iuand(this);\n  };\n\n  // Xor `num` with `this` in-place\n  BN.prototype.iuxor = function iuxor (num) {\n    // a.length > b.length\n    var a;\n    var b;\n    if (this.length > num.length) {\n      a = this;\n      b = num;\n    } else {\n      a = num;\n      b = this;\n    }\n\n    for (var i = 0; i < b.length; i++) {\n      this.words[i] = a.words[i] ^ b.words[i];\n    }\n\n    if (this !== a) {\n      for (; i < a.length; i++) {\n        this.words[i] = a.words[i];\n      }\n    }\n\n    this.length = a.length;\n\n    return this.strip();\n  };\n\n  BN.prototype.ixor = function ixor (num) {\n    assert((this.negative | num.negative) === 0);\n    return this.iuxor(num);\n  };\n\n  // Xor `num` with `this`\n  BN.prototype.xor = function xor (num) {\n    if (this.length > num.length) return this.clone().ixor(num);\n    return num.clone().ixor(this);\n  };\n\n  BN.prototype.uxor = function uxor (num) {\n    if (this.length > num.length) return this.clone().iuxor(num);\n    return num.clone().iuxor(this);\n  };\n\n  // Not ``this`` with ``width`` bitwidth\n  BN.prototype.inotn = function inotn (width) {\n    assert(typeof width === 'number' && width >= 0);\n\n    var bytesNeeded = Math.ceil(width / 26) | 0;\n    var bitsLeft = width % 26;\n\n    // Extend the buffer with leading zeroes\n    this._expand(bytesNeeded);\n\n    if (bitsLeft > 0) {\n      bytesNeeded--;\n    }\n\n    // Handle complete words\n    for (var i = 0; i < bytesNeeded; i++) {\n      this.words[i] = ~this.words[i] & 0x3ffffff;\n    }\n\n    // Handle the residue\n    if (bitsLeft > 0) {\n      this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n    }\n\n    // And remove leading zeroes\n    return this.strip();\n  };\n\n  BN.prototype.notn = function notn (width) {\n    return this.clone().inotn(width);\n  };\n\n  // Set `bit` of `this`\n  BN.prototype.setn = function setn (bit, val) {\n    assert(typeof bit === 'number' && bit >= 0);\n\n    var off = (bit / 26) | 0;\n    var wbit = bit % 26;\n\n    this._expand(off + 1);\n\n    if (val) {\n      this.words[off] = this.words[off] | (1 << wbit);\n    } else {\n      this.words[off] = this.words[off] & ~(1 << wbit);\n    }\n\n    return this.strip();\n  };\n\n  // Add `num` to `this` in-place\n  BN.prototype.iadd = function iadd (num) {\n    var r;\n\n    // negative + positive\n    if (this.negative !== 0 && num.negative === 0) {\n      this.negative = 0;\n      r = this.isub(num);\n      this.negative ^= 1;\n      return this._normSign();\n\n    // positive + negative\n    } else if (this.negative === 0 && num.negative !== 0) {\n      num.negative = 0;\n      r = this.isub(num);\n      num.negative = 1;\n      return r._normSign();\n    }\n\n    // a.length > b.length\n    var a, b;\n    if (this.length > num.length) {\n      a = this;\n      b = num;\n    } else {\n      a = num;\n      b = this;\n    }\n\n    var carry = 0;\n    for (var i = 0; i < b.length; i++) {\n      r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n      this.words[i] = r & 0x3ffffff;\n      carry = r >>> 26;\n    }\n    for (; carry !== 0 && i < a.length; i++) {\n      r = (a.words[i] | 0) + carry;\n      this.words[i] = r & 0x3ffffff;\n      carry = r >>> 26;\n    }\n\n    this.length = a.length;\n    if (carry !== 0) {\n      this.words[this.length] = carry;\n      this.length++;\n    // Copy the rest of the words\n    } else if (a !== this) {\n      for (; i < a.length; i++) {\n        this.words[i] = a.words[i];\n      }\n    }\n\n    return this;\n  };\n\n  // Add `num` to `this`\n  BN.prototype.add = function add (num) {\n    var res;\n    if (num.negative !== 0 && this.negative === 0) {\n      num.negative = 0;\n      res = this.sub(num);\n      num.negative ^= 1;\n      return res;\n    } else if (num.negative === 0 && this.negative !== 0) {\n      this.negative = 0;\n      res = num.sub(this);\n      this.negative = 1;\n      return res;\n    }\n\n    if (this.length > num.length) return this.clone().iadd(num);\n\n    return num.clone().iadd(this);\n  };\n\n  // Subtract `num` from `this` in-place\n  BN.prototype.isub = function isub (num) {\n    // this - (-num) = this + num\n    if (num.negative !== 0) {\n      num.negative = 0;\n      var r = this.iadd(num);\n      num.negative = 1;\n      return r._normSign();\n\n    // -this - num = -(this + num)\n    } else if (this.negative !== 0) {\n      this.negative = 0;\n      this.iadd(num);\n      this.negative = 1;\n      return this._normSign();\n    }\n\n    // At this point both numbers are positive\n    var cmp = this.cmp(num);\n\n    // Optimization - zeroify\n    if (cmp === 0) {\n      this.negative = 0;\n      this.length = 1;\n      this.words[0] = 0;\n      return this;\n    }\n\n    // a > b\n    var a, b;\n    if (cmp > 0) {\n      a = this;\n      b = num;\n    } else {\n      a = num;\n      b = this;\n    }\n\n    var carry = 0;\n    for (var i = 0; i < b.length; i++) {\n      r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n      carry = r >> 26;\n      this.words[i] = r & 0x3ffffff;\n    }\n    for (; carry !== 0 && i < a.length; i++) {\n      r = (a.words[i] | 0) + carry;\n      carry = r >> 26;\n      this.words[i] = r & 0x3ffffff;\n    }\n\n    // Copy rest of the words\n    if (carry === 0 && i < a.length && a !== this) {\n      for (; i < a.length; i++) {\n        this.words[i] = a.words[i];\n      }\n    }\n\n    this.length = Math.max(this.length, i);\n\n    if (a !== this) {\n      this.negative = 1;\n    }\n\n    return this.strip();\n  };\n\n  // Subtract `num` from `this`\n  BN.prototype.sub = function sub (num) {\n    return this.clone().isub(num);\n  };\n\n  function smallMulTo (self, num, out) {\n    out.negative = num.negative ^ self.negative;\n    var len = (self.length + num.length) | 0;\n    out.length = len;\n    len = (len - 1) | 0;\n\n    // Peel one iteration (compiler can't do it, because of code complexity)\n    var a = self.words[0] | 0;\n    var b = num.words[0] | 0;\n    var r = a * b;\n\n    var lo = r & 0x3ffffff;\n    var carry = (r / 0x4000000) | 0;\n    out.words[0] = lo;\n\n    for (var k = 1; k < len; k++) {\n      // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n      // note that ncarry could be >= 0x3ffffff\n      var ncarry = carry >>> 26;\n      var rword = carry & 0x3ffffff;\n      var maxJ = Math.min(k, num.length - 1);\n      for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n        var i = (k - j) | 0;\n        a = self.words[i] | 0;\n        b = num.words[j] | 0;\n        r = a * b + rword;\n        ncarry += (r / 0x4000000) | 0;\n        rword = r & 0x3ffffff;\n      }\n      out.words[k] = rword | 0;\n      carry = ncarry | 0;\n    }\n    if (carry !== 0) {\n      out.words[k] = carry | 0;\n    } else {\n      out.length--;\n    }\n\n    return out.strip();\n  }\n\n  // TODO(indutny): it may be reasonable to omit it for users who don't need\n  // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n  // multiplication (like elliptic secp256k1).\n  var comb10MulTo = function comb10MulTo (self, num, out) {\n    var a = self.words;\n    var b = num.words;\n    var o = out.words;\n    var c = 0;\n    var lo;\n    var mid;\n    var hi;\n    var a0 = a[0] | 0;\n    var al0 = a0 & 0x1fff;\n    var ah0 = a0 >>> 13;\n    var a1 = a[1] | 0;\n    var al1 = a1 & 0x1fff;\n    var ah1 = a1 >>> 13;\n    var a2 = a[2] | 0;\n    var al2 = a2 & 0x1fff;\n    var ah2 = a2 >>> 13;\n    var a3 = a[3] | 0;\n    var al3 = a3 & 0x1fff;\n    var ah3 = a3 >>> 13;\n    var a4 = a[4] | 0;\n    var al4 = a4 & 0x1fff;\n    var ah4 = a4 >>> 13;\n    var a5 = a[5] | 0;\n    var al5 = a5 & 0x1fff;\n    var ah5 = a5 >>> 13;\n    var a6 = a[6] | 0;\n    var al6 = a6 & 0x1fff;\n    var ah6 = a6 >>> 13;\n    var a7 = a[7] | 0;\n    var al7 = a7 & 0x1fff;\n    var ah7 = a7 >>> 13;\n    var a8 = a[8] | 0;\n    var al8 = a8 & 0x1fff;\n    var ah8 = a8 >>> 13;\n    var a9 = a[9] | 0;\n    var al9 = a9 & 0x1fff;\n    var ah9 = a9 >>> 13;\n    var b0 = b[0] | 0;\n    var bl0 = b0 & 0x1fff;\n    var bh0 = b0 >>> 13;\n    var b1 = b[1] | 0;\n    var bl1 = b1 & 0x1fff;\n    var bh1 = b1 >>> 13;\n    var b2 = b[2] | 0;\n    var bl2 = b2 & 0x1fff;\n    var bh2 = b2 >>> 13;\n    var b3 = b[3] | 0;\n    var bl3 = b3 & 0x1fff;\n    var bh3 = b3 >>> 13;\n    var b4 = b[4] | 0;\n    var bl4 = b4 & 0x1fff;\n    var bh4 = b4 >>> 13;\n    var b5 = b[5] | 0;\n    var bl5 = b5 & 0x1fff;\n    var bh5 = b5 >>> 13;\n    var b6 = b[6] | 0;\n    var bl6 = b6 & 0x1fff;\n    var bh6 = b6 >>> 13;\n    var b7 = b[7] | 0;\n    var bl7 = b7 & 0x1fff;\n    var bh7 = b7 >>> 13;\n    var b8 = b[8] | 0;\n    var bl8 = b8 & 0x1fff;\n    var bh8 = b8 >>> 13;\n    var b9 = b[9] | 0;\n    var bl9 = b9 & 0x1fff;\n    var bh9 = b9 >>> 13;\n\n    out.negative = self.negative ^ num.negative;\n    out.length = 19;\n    /* k = 0 */\n    lo = Math.imul(al0, bl0);\n    mid = Math.imul(al0, bh0);\n    mid = (mid + Math.imul(ah0, bl0)) | 0;\n    hi = Math.imul(ah0, bh0);\n    var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n    w0 &= 0x3ffffff;\n    /* k = 1 */\n    lo = Math.imul(al1, bl0);\n    mid = Math.imul(al1, bh0);\n    mid = (mid + Math.imul(ah1, bl0)) | 0;\n    hi = Math.imul(ah1, bh0);\n    lo = (lo + Math.imul(al0, bl1)) | 0;\n    mid = (mid + Math.imul(al0, bh1)) | 0;\n    mid = (mid + Math.imul(ah0, bl1)) | 0;\n    hi = (hi + Math.imul(ah0, bh1)) | 0;\n    var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n    w1 &= 0x3ffffff;\n    /* k = 2 */\n    lo = Math.imul(al2, bl0);\n    mid = Math.imul(al2, bh0);\n    mid = (mid + Math.imul(ah2, bl0)) | 0;\n    hi = Math.imul(ah2, bh0);\n    lo = (lo + Math.imul(al1, bl1)) | 0;\n    mid = (mid + Math.imul(al1, bh1)) | 0;\n    mid = (mid + Math.imul(ah1, bl1)) | 0;\n    hi = (hi + Math.imul(ah1, bh1)) | 0;\n    lo = (lo + Math.imul(al0, bl2)) | 0;\n    mid = (mid + Math.imul(al0, bh2)) | 0;\n    mid = (mid + Math.imul(ah0, bl2)) | 0;\n    hi = (hi + Math.imul(ah0, bh2)) | 0;\n    var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n    w2 &= 0x3ffffff;\n    /* k = 3 */\n    lo = Math.imul(al3, bl0);\n    mid = Math.imul(al3, bh0);\n    mid = (mid + Math.imul(ah3, bl0)) | 0;\n    hi = Math.imul(ah3, bh0);\n    lo = (lo + Math.imul(al2, bl1)) | 0;\n    mid = (mid + Math.imul(al2, bh1)) | 0;\n    mid = (mid + Math.imul(ah2, bl1)) | 0;\n    hi = (hi + Math.imul(ah2, bh1)) | 0;\n    lo = (lo + Math.imul(al1, bl2)) | 0;\n    mid = (mid + Math.imul(al1, bh2)) | 0;\n    mid = (mid + Math.imul(ah1, bl2)) | 0;\n    hi = (hi + Math.imul(ah1, bh2)) | 0;\n    lo = (lo + Math.imul(al0, bl3)) | 0;\n    mid = (mid + Math.imul(al0, bh3)) | 0;\n    mid = (mid + Math.imul(ah0, bl3)) | 0;\n    hi = (hi + Math.imul(ah0, bh3)) | 0;\n    var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n    w3 &= 0x3ffffff;\n    /* k = 4 */\n    lo = Math.imul(al4, bl0);\n    mid = Math.imul(al4, bh0);\n    mid = (mid + Math.imul(ah4, bl0)) | 0;\n    hi = Math.imul(ah4, bh0);\n    lo = (lo + Math.imul(al3, bl1)) | 0;\n    mid = (mid + Math.imul(al3, bh1)) | 0;\n    mid = (mid + Math.imul(ah3, bl1)) | 0;\n    hi = (hi + Math.imul(ah3, bh1)) | 0;\n    lo = (lo + Math.imul(al2, bl2)) | 0;\n    mid = (mid + Math.imul(al2, bh2)) | 0;\n    mid = (mid + Math.imul(ah2, bl2)) | 0;\n    hi = (hi + Math.imul(ah2, bh2)) | 0;\n    lo = (lo + Math.imul(al1, bl3)) | 0;\n    mid = (mid + Math.imul(al1, bh3)) | 0;\n    mid = (mid + Math.imul(ah1, bl3)) | 0;\n    hi = (hi + Math.imul(ah1, bh3)) | 0;\n    lo = (lo + Math.imul(al0, bl4)) | 0;\n    mid = (mid + Math.imul(al0, bh4)) | 0;\n    mid = (mid + Math.imul(ah0, bl4)) | 0;\n    hi = (hi + Math.imul(ah0, bh4)) | 0;\n    var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n    w4 &= 0x3ffffff;\n    /* k = 5 */\n    lo = Math.imul(al5, bl0);\n    mid = Math.imul(al5, bh0);\n    mid = (mid + Math.imul(ah5, bl0)) | 0;\n    hi = Math.imul(ah5, bh0);\n    lo = (lo + Math.imul(al4, bl1)) | 0;\n    mid = (mid + Math.imul(al4, bh1)) | 0;\n    mid = (mid + Math.imul(ah4, bl1)) | 0;\n    hi = (hi + Math.imul(ah4, bh1)) | 0;\n    lo = (lo + Math.imul(al3, bl2)) | 0;\n    mid = (mid + Math.imul(al3, bh2)) | 0;\n    mid = (mid + Math.imul(ah3, bl2)) | 0;\n    hi = (hi + Math.imul(ah3, bh2)) | 0;\n    lo = (lo + Math.imul(al2, bl3)) | 0;\n    mid = (mid + Math.imul(al2, bh3)) | 0;\n    mid = (mid + Math.imul(ah2, bl3)) | 0;\n    hi = (hi + Math.imul(ah2, bh3)) | 0;\n    lo = (lo + Math.imul(al1, bl4)) | 0;\n    mid = (mid + Math.imul(al1, bh4)) | 0;\n    mid = (mid + Math.imul(ah1, bl4)) | 0;\n    hi = (hi + Math.imul(ah1, bh4)) | 0;\n    lo = (lo + Math.imul(al0, bl5)) | 0;\n    mid = (mid + Math.imul(al0, bh5)) | 0;\n    mid = (mid + Math.imul(ah0, bl5)) | 0;\n    hi = (hi + Math.imul(ah0, bh5)) | 0;\n    var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n    w5 &= 0x3ffffff;\n    /* k = 6 */\n    lo = Math.imul(al6, bl0);\n    mid = Math.imul(al6, bh0);\n    mid = (mid + Math.imul(ah6, bl0)) | 0;\n    hi = Math.imul(ah6, bh0);\n    lo = (lo + Math.imul(al5, bl1)) | 0;\n    mid = (mid + Math.imul(al5, bh1)) | 0;\n    mid = (mid + Math.imul(ah5, bl1)) | 0;\n    hi = (hi + Math.imul(ah5, bh1)) | 0;\n    lo = (lo + Math.imul(al4, bl2)) | 0;\n    mid = (mid + Math.imul(al4, bh2)) | 0;\n    mid = (mid + Math.imul(ah4, bl2)) | 0;\n    hi = (hi + Math.imul(ah4, bh2)) | 0;\n    lo = (lo + Math.imul(al3, bl3)) | 0;\n    mid = (mid + Math.imul(al3, bh3)) | 0;\n    mid = (mid + Math.imul(ah3, bl3)) | 0;\n    hi = (hi + Math.imul(ah3, bh3)) | 0;\n    lo = (lo + Math.imul(al2, bl4)) | 0;\n    mid = (mid + Math.imul(al2, bh4)) | 0;\n    mid = (mid + Math.imul(ah2, bl4)) | 0;\n    hi = (hi + Math.imul(ah2, bh4)) | 0;\n    lo = (lo + Math.imul(al1, bl5)) | 0;\n    mid = (mid + Math.imul(al1, bh5)) | 0;\n    mid = (mid + Math.imul(ah1, bl5)) | 0;\n    hi = (hi + Math.imul(ah1, bh5)) | 0;\n    lo = (lo + Math.imul(al0, bl6)) | 0;\n    mid = (mid + Math.imul(al0, bh6)) | 0;\n    mid = (mid + Math.imul(ah0, bl6)) | 0;\n    hi = (hi + Math.imul(ah0, bh6)) | 0;\n    var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n    w6 &= 0x3ffffff;\n    /* k = 7 */\n    lo = Math.imul(al7, bl0);\n    mid = Math.imul(al7, bh0);\n    mid = (mid + Math.imul(ah7, bl0)) | 0;\n    hi = Math.imul(ah7, bh0);\n    lo = (lo + Math.imul(al6, bl1)) | 0;\n    mid = (mid + Math.imul(al6, bh1)) | 0;\n    mid = (mid + Math.imul(ah6, bl1)) | 0;\n    hi = (hi + Math.imul(ah6, bh1)) | 0;\n    lo = (lo + Math.imul(al5, bl2)) | 0;\n    mid = (mid + Math.imul(al5, bh2)) | 0;\n    mid = (mid + Math.imul(ah5, bl2)) | 0;\n    hi = (hi + Math.imul(ah5, bh2)) | 0;\n    lo = (lo + Math.imul(al4, bl3)) | 0;\n    mid = (mid + Math.imul(al4, bh3)) | 0;\n    mid = (mid + Math.imul(ah4, bl3)) | 0;\n    hi = (hi + Math.imul(ah4, bh3)) | 0;\n    lo = (lo + Math.imul(al3, bl4)) | 0;\n    mid = (mid + Math.imul(al3, bh4)) | 0;\n    mid = (mid + Math.imul(ah3, bl4)) | 0;\n    hi = (hi + Math.imul(ah3, bh4)) | 0;\n    lo = (lo + Math.imul(al2, bl5)) | 0;\n    mid = (mid + Math.imul(al2, bh5)) | 0;\n    mid = (mid + Math.imul(ah2, bl5)) | 0;\n    hi = (hi + Math.imul(ah2, bh5)) | 0;\n    lo = (lo + Math.imul(al1, bl6)) | 0;\n    mid = (mid + Math.imul(al1, bh6)) | 0;\n    mid = (mid + Math.imul(ah1, bl6)) | 0;\n    hi = (hi + Math.imul(ah1, bh6)) | 0;\n    lo = (lo + Math.imul(al0, bl7)) | 0;\n    mid = (mid + Math.imul(al0, bh7)) | 0;\n    mid = (mid + Math.imul(ah0, bl7)) | 0;\n    hi = (hi + Math.imul(ah0, bh7)) | 0;\n    var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n    w7 &= 0x3ffffff;\n    /* k = 8 */\n    lo = Math.imul(al8, bl0);\n    mid = Math.imul(al8, bh0);\n    mid = (mid + Math.imul(ah8, bl0)) | 0;\n    hi = Math.imul(ah8, bh0);\n    lo = (lo + Math.imul(al7, bl1)) | 0;\n    mid = (mid + Math.imul(al7, bh1)) | 0;\n    mid = (mid + Math.imul(ah7, bl1)) | 0;\n    hi = (hi + Math.imul(ah7, bh1)) | 0;\n    lo = (lo + Math.imul(al6, bl2)) | 0;\n    mid = (mid + Math.imul(al6, bh2)) | 0;\n    mid = (mid + Math.imul(ah6, bl2)) | 0;\n    hi = (hi + Math.imul(ah6, bh2)) | 0;\n    lo = (lo + Math.imul(al5, bl3)) | 0;\n    mid = (mid + Math.imul(al5, bh3)) | 0;\n    mid = (mid + Math.imul(ah5, bl3)) | 0;\n    hi = (hi + Math.imul(ah5, bh3)) | 0;\n    lo = (lo + Math.imul(al4, bl4)) | 0;\n    mid = (mid + Math.imul(al4, bh4)) | 0;\n    mid = (mid + Math.imul(ah4, bl4)) | 0;\n    hi = (hi + Math.imul(ah4, bh4)) | 0;\n    lo = (lo + Math.imul(al3, bl5)) | 0;\n    mid = (mid + Math.imul(al3, bh5)) | 0;\n    mid = (mid + Math.imul(ah3, bl5)) | 0;\n    hi = (hi + Math.imul(ah3, bh5)) | 0;\n    lo = (lo + Math.imul(al2, bl6)) | 0;\n    mid = (mid + Math.imul(al2, bh6)) | 0;\n    mid = (mid + Math.imul(ah2, bl6)) | 0;\n    hi = (hi + Math.imul(ah2, bh6)) | 0;\n    lo = (lo + Math.imul(al1, bl7)) | 0;\n    mid = (mid + Math.imul(al1, bh7)) | 0;\n    mid = (mid + Math.imul(ah1, bl7)) | 0;\n    hi = (hi + Math.imul(ah1, bh7)) | 0;\n    lo = (lo + Math.imul(al0, bl8)) | 0;\n    mid = (mid + Math.imul(al0, bh8)) | 0;\n    mid = (mid + Math.imul(ah0, bl8)) | 0;\n    hi = (hi + Math.imul(ah0, bh8)) | 0;\n    var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n    w8 &= 0x3ffffff;\n    /* k = 9 */\n    lo = Math.imul(al9, bl0);\n    mid = Math.imul(al9, bh0);\n    mid = (mid + Math.imul(ah9, bl0)) | 0;\n    hi = Math.imul(ah9, bh0);\n    lo = (lo + Math.imul(al8, bl1)) | 0;\n    mid = (mid + Math.imul(al8, bh1)) | 0;\n    mid = (mid + Math.imul(ah8, bl1)) | 0;\n    hi = (hi + Math.imul(ah8, bh1)) | 0;\n    lo = (lo + Math.imul(al7, bl2)) | 0;\n    mid = (mid + Math.imul(al7, bh2)) | 0;\n    mid = (mid + Math.imul(ah7, bl2)) | 0;\n    hi = (hi + Math.imul(ah7, bh2)) | 0;\n    lo = (lo + Math.imul(al6, bl3)) | 0;\n    mid = (mid + Math.imul(al6, bh3)) | 0;\n    mid = (mid + Math.imul(ah6, bl3)) | 0;\n    hi = (hi + Math.imul(ah6, bh3)) | 0;\n    lo = (lo + Math.imul(al5, bl4)) | 0;\n    mid = (mid + Math.imul(al5, bh4)) | 0;\n    mid = (mid + Math.imul(ah5, bl4)) | 0;\n    hi = (hi + Math.imul(ah5, bh4)) | 0;\n    lo = (lo + Math.imul(al4, bl5)) | 0;\n    mid = (mid + Math.imul(al4, bh5)) | 0;\n    mid = (mid + Math.imul(ah4, bl5)) | 0;\n    hi = (hi + Math.imul(ah4, bh5)) | 0;\n    lo = (lo + Math.imul(al3, bl6)) | 0;\n    mid = (mid + Math.imul(al3, bh6)) | 0;\n    mid = (mid + Math.imul(ah3, bl6)) | 0;\n    hi = (hi + Math.imul(ah3, bh6)) | 0;\n    lo = (lo + Math.imul(al2, bl7)) | 0;\n    mid = (mid + Math.imul(al2, bh7)) | 0;\n    mid = (mid + Math.imul(ah2, bl7)) | 0;\n    hi = (hi + Math.imul(ah2, bh7)) | 0;\n    lo = (lo + Math.imul(al1, bl8)) | 0;\n    mid = (mid + Math.imul(al1, bh8)) | 0;\n    mid = (mid + Math.imul(ah1, bl8)) | 0;\n    hi = (hi + Math.imul(ah1, bh8)) | 0;\n    lo = (lo + Math.imul(al0, bl9)) | 0;\n    mid = (mid + Math.imul(al0, bh9)) | 0;\n    mid = (mid + Math.imul(ah0, bl9)) | 0;\n    hi = (hi + Math.imul(ah0, bh9)) | 0;\n    var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n    w9 &= 0x3ffffff;\n    /* k = 10 */\n    lo = Math.imul(al9, bl1);\n    mid = Math.imul(al9, bh1);\n    mid = (mid + Math.imul(ah9, bl1)) | 0;\n    hi = Math.imul(ah9, bh1);\n    lo = (lo + Math.imul(al8, bl2)) | 0;\n    mid = (mid + Math.imul(al8, bh2)) | 0;\n    mid = (mid + Math.imul(ah8, bl2)) | 0;\n    hi = (hi + Math.imul(ah8, bh2)) | 0;\n    lo = (lo + Math.imul(al7, bl3)) | 0;\n    mid = (mid + Math.imul(al7, bh3)) | 0;\n    mid = (mid + Math.imul(ah7, bl3)) | 0;\n    hi = (hi + Math.imul(ah7, bh3)) | 0;\n    lo = (lo + Math.imul(al6, bl4)) | 0;\n    mid = (mid + Math.imul(al6, bh4)) | 0;\n    mid = (mid + Math.imul(ah6, bl4)) | 0;\n    hi = (hi + Math.imul(ah6, bh4)) | 0;\n    lo = (lo + Math.imul(al5, bl5)) | 0;\n    mid = (mid + Math.imul(al5, bh5)) | 0;\n    mid = (mid + Math.imul(ah5, bl5)) | 0;\n    hi = (hi + Math.imul(ah5, bh5)) | 0;\n    lo = (lo + Math.imul(al4, bl6)) | 0;\n    mid = (mid + Math.imul(al4, bh6)) | 0;\n    mid = (mid + Math.imul(ah4, bl6)) | 0;\n    hi = (hi + Math.imul(ah4, bh6)) | 0;\n    lo = (lo + Math.imul(al3, bl7)) | 0;\n    mid = (mid + Math.imul(al3, bh7)) | 0;\n    mid = (mid + Math.imul(ah3, bl7)) | 0;\n    hi = (hi + Math.imul(ah3, bh7)) | 0;\n    lo = (lo + Math.imul(al2, bl8)) | 0;\n    mid = (mid + Math.imul(al2, bh8)) | 0;\n    mid = (mid + Math.imul(ah2, bl8)) | 0;\n    hi = (hi + Math.imul(ah2, bh8)) | 0;\n    lo = (lo + Math.imul(al1, bl9)) | 0;\n    mid = (mid + Math.imul(al1, bh9)) | 0;\n    mid = (mid + Math.imul(ah1, bl9)) | 0;\n    hi = (hi + Math.imul(ah1, bh9)) | 0;\n    var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n    w10 &= 0x3ffffff;\n    /* k = 11 */\n    lo = Math.imul(al9, bl2);\n    mid = Math.imul(al9, bh2);\n    mid = (mid + Math.imul(ah9, bl2)) | 0;\n    hi = Math.imul(ah9, bh2);\n    lo = (lo + Math.imul(al8, bl3)) | 0;\n    mid = (mid + Math.imul(al8, bh3)) | 0;\n    mid = (mid + Math.imul(ah8, bl3)) | 0;\n    hi = (hi + Math.imul(ah8, bh3)) | 0;\n    lo = (lo + Math.imul(al7, bl4)) | 0;\n    mid = (mid + Math.imul(al7, bh4)) | 0;\n    mid = (mid + Math.imul(ah7, bl4)) | 0;\n    hi = (hi + Math.imul(ah7, bh4)) | 0;\n    lo = (lo + Math.imul(al6, bl5)) | 0;\n    mid = (mid + Math.imul(al6, bh5)) | 0;\n    mid = (mid + Math.imul(ah6, bl5)) | 0;\n    hi = (hi + Math.imul(ah6, bh5)) | 0;\n    lo = (lo + Math.imul(al5, bl6)) | 0;\n    mid = (mid + Math.imul(al5, bh6)) | 0;\n    mid = (mid + Math.imul(ah5, bl6)) | 0;\n    hi = (hi + Math.imul(ah5, bh6)) | 0;\n    lo = (lo + Math.imul(al4, bl7)) | 0;\n    mid = (mid + Math.imul(al4, bh7)) | 0;\n    mid = (mid + Math.imul(ah4, bl7)) | 0;\n    hi = (hi + Math.imul(ah4, bh7)) | 0;\n    lo = (lo + Math.imul(al3, bl8)) | 0;\n    mid = (mid + Math.imul(al3, bh8)) | 0;\n    mid = (mid + Math.imul(ah3, bl8)) | 0;\n    hi = (hi + Math.imul(ah3, bh8)) | 0;\n    lo = (lo + Math.imul(al2, bl9)) | 0;\n    mid = (mid + Math.imul(al2, bh9)) | 0;\n    mid = (mid + Math.imul(ah2, bl9)) | 0;\n    hi = (hi + Math.imul(ah2, bh9)) | 0;\n    var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n    w11 &= 0x3ffffff;\n    /* k = 12 */\n    lo = Math.imul(al9, bl3);\n    mid = Math.imul(al9, bh3);\n    mid = (mid + Math.imul(ah9, bl3)) | 0;\n    hi = Math.imul(ah9, bh3);\n    lo = (lo + Math.imul(al8, bl4)) | 0;\n    mid = (mid + Math.imul(al8, bh4)) | 0;\n    mid = (mid + Math.imul(ah8, bl4)) | 0;\n    hi = (hi + Math.imul(ah8, bh4)) | 0;\n    lo = (lo + Math.imul(al7, bl5)) | 0;\n    mid = (mid + Math.imul(al7, bh5)) | 0;\n    mid = (mid + Math.imul(ah7, bl5)) | 0;\n    hi = (hi + Math.imul(ah7, bh5)) | 0;\n    lo = (lo + Math.imul(al6, bl6)) | 0;\n    mid = (mid + Math.imul(al6, bh6)) | 0;\n    mid = (mid + Math.imul(ah6, bl6)) | 0;\n    hi = (hi + Math.imul(ah6, bh6)) | 0;\n    lo = (lo + Math.imul(al5, bl7)) | 0;\n    mid = (mid + Math.imul(al5, bh7)) | 0;\n    mid = (mid + Math.imul(ah5, bl7)) | 0;\n    hi = (hi + Math.imul(ah5, bh7)) | 0;\n    lo = (lo + Math.imul(al4, bl8)) | 0;\n    mid = (mid + Math.imul(al4, bh8)) | 0;\n    mid = (mid + Math.imul(ah4, bl8)) | 0;\n    hi = (hi + Math.imul(ah4, bh8)) | 0;\n    lo = (lo + Math.imul(al3, bl9)) | 0;\n    mid = (mid + Math.imul(al3, bh9)) | 0;\n    mid = (mid + Math.imul(ah3, bl9)) | 0;\n    hi = (hi + Math.imul(ah3, bh9)) | 0;\n    var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n    w12 &= 0x3ffffff;\n    /* k = 13 */\n    lo = Math.imul(al9, bl4);\n    mid = Math.imul(al9, bh4);\n    mid = (mid + Math.imul(ah9, bl4)) | 0;\n    hi = Math.imul(ah9, bh4);\n    lo = (lo + Math.imul(al8, bl5)) | 0;\n    mid = (mid + Math.imul(al8, bh5)) | 0;\n    mid = (mid + Math.imul(ah8, bl5)) | 0;\n    hi = (hi + Math.imul(ah8, bh5)) | 0;\n    lo = (lo + Math.imul(al7, bl6)) | 0;\n    mid = (mid + Math.imul(al7, bh6)) | 0;\n    mid = (mid + Math.imul(ah7, bl6)) | 0;\n    hi = (hi + Math.imul(ah7, bh6)) | 0;\n    lo = (lo + Math.imul(al6, bl7)) | 0;\n    mid = (mid + Math.imul(al6, bh7)) | 0;\n    mid = (mid + Math.imul(ah6, bl7)) | 0;\n    hi = (hi + Math.imul(ah6, bh7)) | 0;\n    lo = (lo + Math.imul(al5, bl8)) | 0;\n    mid = (mid + Math.imul(al5, bh8)) | 0;\n    mid = (mid + Math.imul(ah5, bl8)) | 0;\n    hi = (hi + Math.imul(ah5, bh8)) | 0;\n    lo = (lo + Math.imul(al4, bl9)) | 0;\n    mid = (mid + Math.imul(al4, bh9)) | 0;\n    mid = (mid + Math.imul(ah4, bl9)) | 0;\n    hi = (hi + Math.imul(ah4, bh9)) | 0;\n    var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n    w13 &= 0x3ffffff;\n    /* k = 14 */\n    lo = Math.imul(al9, bl5);\n    mid = Math.imul(al9, bh5);\n    mid = (mid + Math.imul(ah9, bl5)) | 0;\n    hi = Math.imul(ah9, bh5);\n    lo = (lo + Math.imul(al8, bl6)) | 0;\n    mid = (mid + Math.imul(al8, bh6)) | 0;\n    mid = (mid + Math.imul(ah8, bl6)) | 0;\n    hi = (hi + Math.imul(ah8, bh6)) | 0;\n    lo = (lo + Math.imul(al7, bl7)) | 0;\n    mid = (mid + Math.imul(al7, bh7)) | 0;\n    mid = (mid + Math.imul(ah7, bl7)) | 0;\n    hi = (hi + Math.imul(ah7, bh7)) | 0;\n    lo = (lo + Math.imul(al6, bl8)) | 0;\n    mid = (mid + Math.imul(al6, bh8)) | 0;\n    mid = (mid + Math.imul(ah6, bl8)) | 0;\n    hi = (hi + Math.imul(ah6, bh8)) | 0;\n    lo = (lo + Math.imul(al5, bl9)) | 0;\n    mid = (mid + Math.imul(al5, bh9)) | 0;\n    mid = (mid + Math.imul(ah5, bl9)) | 0;\n    hi = (hi + Math.imul(ah5, bh9)) | 0;\n    var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n    w14 &= 0x3ffffff;\n    /* k = 15 */\n    lo = Math.imul(al9, bl6);\n    mid = Math.imul(al9, bh6);\n    mid = (mid + Math.imul(ah9, bl6)) | 0;\n    hi = Math.imul(ah9, bh6);\n    lo = (lo + Math.imul(al8, bl7)) | 0;\n    mid = (mid + Math.imul(al8, bh7)) | 0;\n    mid = (mid + Math.imul(ah8, bl7)) | 0;\n    hi = (hi + Math.imul(ah8, bh7)) | 0;\n    lo = (lo + Math.imul(al7, bl8)) | 0;\n    mid = (mid + Math.imul(al7, bh8)) | 0;\n    mid = (mid + Math.imul(ah7, bl8)) | 0;\n    hi = (hi + Math.imul(ah7, bh8)) | 0;\n    lo = (lo + Math.imul(al6, bl9)) | 0;\n    mid = (mid + Math.imul(al6, bh9)) | 0;\n    mid = (mid + Math.imul(ah6, bl9)) | 0;\n    hi = (hi + Math.imul(ah6, bh9)) | 0;\n    var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n    w15 &= 0x3ffffff;\n    /* k = 16 */\n    lo = Math.imul(al9, bl7);\n    mid = Math.imul(al9, bh7);\n    mid = (mid + Math.imul(ah9, bl7)) | 0;\n    hi = Math.imul(ah9, bh7);\n    lo = (lo + Math.imul(al8, bl8)) | 0;\n    mid = (mid + Math.imul(al8, bh8)) | 0;\n    mid = (mid + Math.imul(ah8, bl8)) | 0;\n    hi = (hi + Math.imul(ah8, bh8)) | 0;\n    lo = (lo + Math.imul(al7, bl9)) | 0;\n    mid = (mid + Math.imul(al7, bh9)) | 0;\n    mid = (mid + Math.imul(ah7, bl9)) | 0;\n    hi = (hi + Math.imul(ah7, bh9)) | 0;\n    var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n    w16 &= 0x3ffffff;\n    /* k = 17 */\n    lo = Math.imul(al9, bl8);\n    mid = Math.imul(al9, bh8);\n    mid = (mid + Math.imul(ah9, bl8)) | 0;\n    hi = Math.imul(ah9, bh8);\n    lo = (lo + Math.imul(al8, bl9)) | 0;\n    mid = (mid + Math.imul(al8, bh9)) | 0;\n    mid = (mid + Math.imul(ah8, bl9)) | 0;\n    hi = (hi + Math.imul(ah8, bh9)) | 0;\n    var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n    w17 &= 0x3ffffff;\n    /* k = 18 */\n    lo = Math.imul(al9, bl9);\n    mid = Math.imul(al9, bh9);\n    mid = (mid + Math.imul(ah9, bl9)) | 0;\n    hi = Math.imul(ah9, bh9);\n    var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n    w18 &= 0x3ffffff;\n    o[0] = w0;\n    o[1] = w1;\n    o[2] = w2;\n    o[3] = w3;\n    o[4] = w4;\n    o[5] = w5;\n    o[6] = w6;\n    o[7] = w7;\n    o[8] = w8;\n    o[9] = w9;\n    o[10] = w10;\n    o[11] = w11;\n    o[12] = w12;\n    o[13] = w13;\n    o[14] = w14;\n    o[15] = w15;\n    o[16] = w16;\n    o[17] = w17;\n    o[18] = w18;\n    if (c !== 0) {\n      o[19] = c;\n      out.length++;\n    }\n    return out;\n  };\n\n  // Polyfill comb\n  if (!Math.imul) {\n    comb10MulTo = smallMulTo;\n  }\n\n  function bigMulTo (self, num, out) {\n    out.negative = num.negative ^ self.negative;\n    out.length = self.length + num.length;\n\n    var carry = 0;\n    var hncarry = 0;\n    for (var k = 0; k < out.length - 1; k++) {\n      // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n      // note that ncarry could be >= 0x3ffffff\n      var ncarry = hncarry;\n      hncarry = 0;\n      var rword = carry & 0x3ffffff;\n      var maxJ = Math.min(k, num.length - 1);\n      for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n        var i = k - j;\n        var a = self.words[i] | 0;\n        var b = num.words[j] | 0;\n        var r = a * b;\n\n        var lo = r & 0x3ffffff;\n        ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n        lo = (lo + rword) | 0;\n        rword = lo & 0x3ffffff;\n        ncarry = (ncarry + (lo >>> 26)) | 0;\n\n        hncarry += ncarry >>> 26;\n        ncarry &= 0x3ffffff;\n      }\n      out.words[k] = rword;\n      carry = ncarry;\n      ncarry = hncarry;\n    }\n    if (carry !== 0) {\n      out.words[k] = carry;\n    } else {\n      out.length--;\n    }\n\n    return out.strip();\n  }\n\n  function jumboMulTo (self, num, out) {\n    var fftm = new FFTM();\n    return fftm.mulp(self, num, out);\n  }\n\n  BN.prototype.mulTo = function mulTo (num, out) {\n    var res;\n    var len = this.length + num.length;\n    if (this.length === 10 && num.length === 10) {\n      res = comb10MulTo(this, num, out);\n    } else if (len < 63) {\n      res = smallMulTo(this, num, out);\n    } else if (len < 1024) {\n      res = bigMulTo(this, num, out);\n    } else {\n      res = jumboMulTo(this, num, out);\n    }\n\n    return res;\n  };\n\n  // Cooley-Tukey algorithm for FFT\n  // slightly revisited to rely on looping instead of recursion\n\n  function FFTM (x, y) {\n    this.x = x;\n    this.y = y;\n  }\n\n  FFTM.prototype.makeRBT = function makeRBT (N) {\n    var t = new Array(N);\n    var l = BN.prototype._countBits(N) - 1;\n    for (var i = 0; i < N; i++) {\n      t[i] = this.revBin(i, l, N);\n    }\n\n    return t;\n  };\n\n  // Returns binary-reversed representation of `x`\n  FFTM.prototype.revBin = function revBin (x, l, N) {\n    if (x === 0 || x === N - 1) return x;\n\n    var rb = 0;\n    for (var i = 0; i < l; i++) {\n      rb |= (x & 1) << (l - i - 1);\n      x >>= 1;\n    }\n\n    return rb;\n  };\n\n  // Performs \"tweedling\" phase, therefore 'emulating'\n  // behaviour of the recursive algorithm\n  FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n    for (var i = 0; i < N; i++) {\n      rtws[i] = rws[rbt[i]];\n      itws[i] = iws[rbt[i]];\n    }\n  };\n\n  FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n    this.permute(rbt, rws, iws, rtws, itws, N);\n\n    for (var s = 1; s < N; s <<= 1) {\n      var l = s << 1;\n\n      var rtwdf = Math.cos(2 * Math.PI / l);\n      var itwdf = Math.sin(2 * Math.PI / l);\n\n      for (var p = 0; p < N; p += l) {\n        var rtwdf_ = rtwdf;\n        var itwdf_ = itwdf;\n\n        for (var j = 0; j < s; j++) {\n          var re = rtws[p + j];\n          var ie = itws[p + j];\n\n          var ro = rtws[p + j + s];\n          var io = itws[p + j + s];\n\n          var rx = rtwdf_ * ro - itwdf_ * io;\n\n          io = rtwdf_ * io + itwdf_ * ro;\n          ro = rx;\n\n          rtws[p + j] = re + ro;\n          itws[p + j] = ie + io;\n\n          rtws[p + j + s] = re - ro;\n          itws[p + j + s] = ie - io;\n\n          /* jshint maxdepth : false */\n          if (j !== l) {\n            rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n            itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n            rtwdf_ = rx;\n          }\n        }\n      }\n    }\n  };\n\n  FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n    var N = Math.max(m, n) | 1;\n    var odd = N & 1;\n    var i = 0;\n    for (N = N / 2 | 0; N; N = N >>> 1) {\n      i++;\n    }\n\n    return 1 << i + 1 + odd;\n  };\n\n  FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n    if (N <= 1) return;\n\n    for (var i = 0; i < N / 2; i++) {\n      var t = rws[i];\n\n      rws[i] = rws[N - i - 1];\n      rws[N - i - 1] = t;\n\n      t = iws[i];\n\n      iws[i] = -iws[N - i - 1];\n      iws[N - i - 1] = -t;\n    }\n  };\n\n  FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n    var carry = 0;\n    for (var i = 0; i < N / 2; i++) {\n      var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n        Math.round(ws[2 * i] / N) +\n        carry;\n\n      ws[i] = w & 0x3ffffff;\n\n      if (w < 0x4000000) {\n        carry = 0;\n      } else {\n        carry = w / 0x4000000 | 0;\n      }\n    }\n\n    return ws;\n  };\n\n  FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n    var carry = 0;\n    for (var i = 0; i < len; i++) {\n      carry = carry + (ws[i] | 0);\n\n      rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n      rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n    }\n\n    // Pad with zeroes\n    for (i = 2 * len; i < N; ++i) {\n      rws[i] = 0;\n    }\n\n    assert(carry === 0);\n    assert((carry & ~0x1fff) === 0);\n  };\n\n  FFTM.prototype.stub = function stub (N) {\n    var ph = new Array(N);\n    for (var i = 0; i < N; i++) {\n      ph[i] = 0;\n    }\n\n    return ph;\n  };\n\n  FFTM.prototype.mulp = function mulp (x, y, out) {\n    var N = 2 * this.guessLen13b(x.length, y.length);\n\n    var rbt = this.makeRBT(N);\n\n    var _ = this.stub(N);\n\n    var rws = new Array(N);\n    var rwst = new Array(N);\n    var iwst = new Array(N);\n\n    var nrws = new Array(N);\n    var nrwst = new Array(N);\n    var niwst = new Array(N);\n\n    var rmws = out.words;\n    rmws.length = N;\n\n    this.convert13b(x.words, x.length, rws, N);\n    this.convert13b(y.words, y.length, nrws, N);\n\n    this.transform(rws, _, rwst, iwst, N, rbt);\n    this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n    for (var i = 0; i < N; i++) {\n      var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n      iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n      rwst[i] = rx;\n    }\n\n    this.conjugate(rwst, iwst, N);\n    this.transform(rwst, iwst, rmws, _, N, rbt);\n    this.conjugate(rmws, _, N);\n    this.normalize13b(rmws, N);\n\n    out.negative = x.negative ^ y.negative;\n    out.length = x.length + y.length;\n    return out.strip();\n  };\n\n  // Multiply `this` by `num`\n  BN.prototype.mul = function mul (num) {\n    var out = new BN(null);\n    out.words = new Array(this.length + num.length);\n    return this.mulTo(num, out);\n  };\n\n  // Multiply employing FFT\n  BN.prototype.mulf = function mulf (num) {\n    var out = new BN(null);\n    out.words = new Array(this.length + num.length);\n    return jumboMulTo(this, num, out);\n  };\n\n  // In-place Multiplication\n  BN.prototype.imul = function imul (num) {\n    return this.clone().mulTo(num, this);\n  };\n\n  BN.prototype.imuln = function imuln (num) {\n    assert(typeof num === 'number');\n    assert(num < 0x4000000);\n\n    // Carry\n    var carry = 0;\n    for (var i = 0; i < this.length; i++) {\n      var w = (this.words[i] | 0) * num;\n      var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n      carry >>= 26;\n      carry += (w / 0x4000000) | 0;\n      // NOTE: lo is 27bit maximum\n      carry += lo >>> 26;\n      this.words[i] = lo & 0x3ffffff;\n    }\n\n    if (carry !== 0) {\n      this.words[i] = carry;\n      this.length++;\n    }\n\n    return this;\n  };\n\n  BN.prototype.muln = function muln (num) {\n    return this.clone().imuln(num);\n  };\n\n  // `this` * `this`\n  BN.prototype.sqr = function sqr () {\n    return this.mul(this);\n  };\n\n  // `this` * `this` in-place\n  BN.prototype.isqr = function isqr () {\n    return this.imul(this.clone());\n  };\n\n  // Math.pow(`this`, `num`)\n  BN.prototype.pow = function pow (num) {\n    var w = toBitArray(num);\n    if (w.length === 0) return new BN(1);\n\n    // Skip leading zeroes\n    var res = this;\n    for (var i = 0; i < w.length; i++, res = res.sqr()) {\n      if (w[i] !== 0) break;\n    }\n\n    if (++i < w.length) {\n      for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n        if (w[i] === 0) continue;\n\n        res = res.mul(q);\n      }\n    }\n\n    return res;\n  };\n\n  // Shift-left in-place\n  BN.prototype.iushln = function iushln (bits) {\n    assert(typeof bits === 'number' && bits >= 0);\n    var r = bits % 26;\n    var s = (bits - r) / 26;\n    var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n    var i;\n\n    if (r !== 0) {\n      var carry = 0;\n\n      for (i = 0; i < this.length; i++) {\n        var newCarry = this.words[i] & carryMask;\n        var c = ((this.words[i] | 0) - newCarry) << r;\n        this.words[i] = c | carry;\n        carry = newCarry >>> (26 - r);\n      }\n\n      if (carry) {\n        this.words[i] = carry;\n        this.length++;\n      }\n    }\n\n    if (s !== 0) {\n      for (i = this.length - 1; i >= 0; i--) {\n        this.words[i + s] = this.words[i];\n      }\n\n      for (i = 0; i < s; i++) {\n        this.words[i] = 0;\n      }\n\n      this.length += s;\n    }\n\n    return this.strip();\n  };\n\n  BN.prototype.ishln = function ishln (bits) {\n    // TODO(indutny): implement me\n    assert(this.negative === 0);\n    return this.iushln(bits);\n  };\n\n  // Shift-right in-place\n  // NOTE: `hint` is a lowest bit before trailing zeroes\n  // NOTE: if `extended` is present - it will be filled with destroyed bits\n  BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n    assert(typeof bits === 'number' && bits >= 0);\n    var h;\n    if (hint) {\n      h = (hint - (hint % 26)) / 26;\n    } else {\n      h = 0;\n    }\n\n    var r = bits % 26;\n    var s = Math.min((bits - r) / 26, this.length);\n    var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n    var maskedWords = extended;\n\n    h -= s;\n    h = Math.max(0, h);\n\n    // Extended mode, copy masked part\n    if (maskedWords) {\n      for (var i = 0; i < s; i++) {\n        maskedWords.words[i] = this.words[i];\n      }\n      maskedWords.length = s;\n    }\n\n    if (s === 0) {\n      // No-op, we should not move anything at all\n    } else if (this.length > s) {\n      this.length -= s;\n      for (i = 0; i < this.length; i++) {\n        this.words[i] = this.words[i + s];\n      }\n    } else {\n      this.words[0] = 0;\n      this.length = 1;\n    }\n\n    var carry = 0;\n    for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n      var word = this.words[i] | 0;\n      this.words[i] = (carry << (26 - r)) | (word >>> r);\n      carry = word & mask;\n    }\n\n    // Push carried bits as a mask\n    if (maskedWords && carry !== 0) {\n      maskedWords.words[maskedWords.length++] = carry;\n    }\n\n    if (this.length === 0) {\n      this.words[0] = 0;\n      this.length = 1;\n    }\n\n    return this.strip();\n  };\n\n  BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n    // TODO(indutny): implement me\n    assert(this.negative === 0);\n    return this.iushrn(bits, hint, extended);\n  };\n\n  // Shift-left\n  BN.prototype.shln = function shln (bits) {\n    return this.clone().ishln(bits);\n  };\n\n  BN.prototype.ushln = function ushln (bits) {\n    return this.clone().iushln(bits);\n  };\n\n  // Shift-right\n  BN.prototype.shrn = function shrn (bits) {\n    return this.clone().ishrn(bits);\n  };\n\n  BN.prototype.ushrn = function ushrn (bits) {\n    return this.clone().iushrn(bits);\n  };\n\n  // Test if n bit is set\n  BN.prototype.testn = function testn (bit) {\n    assert(typeof bit === 'number' && bit >= 0);\n    var r = bit % 26;\n    var s = (bit - r) / 26;\n    var q = 1 << r;\n\n    // Fast case: bit is much higher than all existing words\n    if (this.length <= s) return false;\n\n    // Check bit and return\n    var w = this.words[s];\n\n    return !!(w & q);\n  };\n\n  // Return only lowers bits of number (in-place)\n  BN.prototype.imaskn = function imaskn (bits) {\n    assert(typeof bits === 'number' && bits >= 0);\n    var r = bits % 26;\n    var s = (bits - r) / 26;\n\n    assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n    if (this.length <= s) {\n      return this;\n    }\n\n    if (r !== 0) {\n      s++;\n    }\n    this.length = Math.min(s, this.length);\n\n    if (r !== 0) {\n      var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n      this.words[this.length - 1] &= mask;\n    }\n\n    return this.strip();\n  };\n\n  // Return only lowers bits of number\n  BN.prototype.maskn = function maskn (bits) {\n    return this.clone().imaskn(bits);\n  };\n\n  // Add plain number `num` to `this`\n  BN.prototype.iaddn = function iaddn (num) {\n    assert(typeof num === 'number');\n    assert(num < 0x4000000);\n    if (num < 0) return this.isubn(-num);\n\n    // Possible sign change\n    if (this.negative !== 0) {\n      if (this.length === 1 && (this.words[0] | 0) < num) {\n        this.words[0] = num - (this.words[0] | 0);\n        this.negative = 0;\n        return this;\n      }\n\n      this.negative = 0;\n      this.isubn(num);\n      this.negative = 1;\n      return this;\n    }\n\n    // Add without checks\n    return this._iaddn(num);\n  };\n\n  BN.prototype._iaddn = function _iaddn (num) {\n    this.words[0] += num;\n\n    // Carry\n    for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n      this.words[i] -= 0x4000000;\n      if (i === this.length - 1) {\n        this.words[i + 1] = 1;\n      } else {\n        this.words[i + 1]++;\n      }\n    }\n    this.length = Math.max(this.length, i + 1);\n\n    return this;\n  };\n\n  // Subtract plain number `num` from `this`\n  BN.prototype.isubn = function isubn (num) {\n    assert(typeof num === 'number');\n    assert(num < 0x4000000);\n    if (num < 0) return this.iaddn(-num);\n\n    if (this.negative !== 0) {\n      this.negative = 0;\n      this.iaddn(num);\n      this.negative = 1;\n      return this;\n    }\n\n    this.words[0] -= num;\n\n    if (this.length === 1 && this.words[0] < 0) {\n      this.words[0] = -this.words[0];\n      this.negative = 1;\n    } else {\n      // Carry\n      for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n        this.words[i] += 0x4000000;\n        this.words[i + 1] -= 1;\n      }\n    }\n\n    return this.strip();\n  };\n\n  BN.prototype.addn = function addn (num) {\n    return this.clone().iaddn(num);\n  };\n\n  BN.prototype.subn = function subn (num) {\n    return this.clone().isubn(num);\n  };\n\n  BN.prototype.iabs = function iabs () {\n    this.negative = 0;\n\n    return this;\n  };\n\n  BN.prototype.abs = function abs () {\n    return this.clone().iabs();\n  };\n\n  BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n    var len = num.length + shift;\n    var i;\n\n    this._expand(len);\n\n    var w;\n    var carry = 0;\n    for (i = 0; i < num.length; i++) {\n      w = (this.words[i + shift] | 0) + carry;\n      var right = (num.words[i] | 0) * mul;\n      w -= right & 0x3ffffff;\n      carry = (w >> 26) - ((right / 0x4000000) | 0);\n      this.words[i + shift] = w & 0x3ffffff;\n    }\n    for (; i < this.length - shift; i++) {\n      w = (this.words[i + shift] | 0) + carry;\n      carry = w >> 26;\n      this.words[i + shift] = w & 0x3ffffff;\n    }\n\n    if (carry === 0) return this.strip();\n\n    // Subtraction overflow\n    assert(carry === -1);\n    carry = 0;\n    for (i = 0; i < this.length; i++) {\n      w = -(this.words[i] | 0) + carry;\n      carry = w >> 26;\n      this.words[i] = w & 0x3ffffff;\n    }\n    this.negative = 1;\n\n    return this.strip();\n  };\n\n  BN.prototype._wordDiv = function _wordDiv (num, mode) {\n    var shift = this.length - num.length;\n\n    var a = this.clone();\n    var b = num;\n\n    // Normalize\n    var bhi = b.words[b.length - 1] | 0;\n    var bhiBits = this._countBits(bhi);\n    shift = 26 - bhiBits;\n    if (shift !== 0) {\n      b = b.ushln(shift);\n      a.iushln(shift);\n      bhi = b.words[b.length - 1] | 0;\n    }\n\n    // Initialize quotient\n    var m = a.length - b.length;\n    var q;\n\n    if (mode !== 'mod') {\n      q = new BN(null);\n      q.length = m + 1;\n      q.words = new Array(q.length);\n      for (var i = 0; i < q.length; i++) {\n        q.words[i] = 0;\n      }\n    }\n\n    var diff = a.clone()._ishlnsubmul(b, 1, m);\n    if (diff.negative === 0) {\n      a = diff;\n      if (q) {\n        q.words[m] = 1;\n      }\n    }\n\n    for (var j = m - 1; j >= 0; j--) {\n      var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n        (a.words[b.length + j - 1] | 0);\n\n      // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n      // (0x7ffffff)\n      qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n      a._ishlnsubmul(b, qj, j);\n      while (a.negative !== 0) {\n        qj--;\n        a.negative = 0;\n        a._ishlnsubmul(b, 1, j);\n        if (!a.isZero()) {\n          a.negative ^= 1;\n        }\n      }\n      if (q) {\n        q.words[j] = qj;\n      }\n    }\n    if (q) {\n      q.strip();\n    }\n    a.strip();\n\n    // Denormalize\n    if (mode !== 'div' && shift !== 0) {\n      a.iushrn(shift);\n    }\n\n    return {\n      div: q || null,\n      mod: a\n    };\n  };\n\n  // NOTE: 1) `mode` can be set to `mod` to request mod only,\n  //       to `div` to request div only, or be absent to\n  //       request both div & mod\n  //       2) `positive` is true if unsigned mod is requested\n  BN.prototype.divmod = function divmod (num, mode, positive) {\n    assert(!num.isZero());\n\n    if (this.isZero()) {\n      return {\n        div: new BN(0),\n        mod: new BN(0)\n      };\n    }\n\n    var div, mod, res;\n    if (this.negative !== 0 && num.negative === 0) {\n      res = this.neg().divmod(num, mode);\n\n      if (mode !== 'mod') {\n        div = res.div.neg();\n      }\n\n      if (mode !== 'div') {\n        mod = res.mod.neg();\n        if (positive && mod.negative !== 0) {\n          mod.iadd(num);\n        }\n      }\n\n      return {\n        div: div,\n        mod: mod\n      };\n    }\n\n    if (this.negative === 0 && num.negative !== 0) {\n      res = this.divmod(num.neg(), mode);\n\n      if (mode !== 'mod') {\n        div = res.div.neg();\n      }\n\n      return {\n        div: div,\n        mod: res.mod\n      };\n    }\n\n    if ((this.negative & num.negative) !== 0) {\n      res = this.neg().divmod(num.neg(), mode);\n\n      if (mode !== 'div') {\n        mod = res.mod.neg();\n        if (positive && mod.negative !== 0) {\n          mod.isub(num);\n        }\n      }\n\n      return {\n        div: res.div,\n        mod: mod\n      };\n    }\n\n    // Both numbers are positive at this point\n\n    // Strip both numbers to approximate shift value\n    if (num.length > this.length || this.cmp(num) < 0) {\n      return {\n        div: new BN(0),\n        mod: this\n      };\n    }\n\n    // Very short reduction\n    if (num.length === 1) {\n      if (mode === 'div') {\n        return {\n          div: this.divn(num.words[0]),\n          mod: null\n        };\n      }\n\n      if (mode === 'mod') {\n        return {\n          div: null,\n          mod: new BN(this.modn(num.words[0]))\n        };\n      }\n\n      return {\n        div: this.divn(num.words[0]),\n        mod: new BN(this.modn(num.words[0]))\n      };\n    }\n\n    return this._wordDiv(num, mode);\n  };\n\n  // Find `this` / `num`\n  BN.prototype.div = function div (num) {\n    return this.divmod(num, 'div', false).div;\n  };\n\n  // Find `this` % `num`\n  BN.prototype.mod = function mod (num) {\n    return this.divmod(num, 'mod', false).mod;\n  };\n\n  BN.prototype.umod = function umod (num) {\n    return this.divmod(num, 'mod', true).mod;\n  };\n\n  // Find Round(`this` / `num`)\n  BN.prototype.divRound = function divRound (num) {\n    var dm = this.divmod(num);\n\n    // Fast case - exact division\n    if (dm.mod.isZero()) return dm.div;\n\n    var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n    var half = num.ushrn(1);\n    var r2 = num.andln(1);\n    var cmp = mod.cmp(half);\n\n    // Round down\n    if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n    // Round up\n    return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n  };\n\n  BN.prototype.modn = function modn (num) {\n    assert(num <= 0x3ffffff);\n    var p = (1 << 26) % num;\n\n    var acc = 0;\n    for (var i = this.length - 1; i >= 0; i--) {\n      acc = (p * acc + (this.words[i] | 0)) % num;\n    }\n\n    return acc;\n  };\n\n  // In-place division by number\n  BN.prototype.idivn = function idivn (num) {\n    assert(num <= 0x3ffffff);\n\n    var carry = 0;\n    for (var i = this.length - 1; i >= 0; i--) {\n      var w = (this.words[i] | 0) + carry * 0x4000000;\n      this.words[i] = (w / num) | 0;\n      carry = w % num;\n    }\n\n    return this.strip();\n  };\n\n  BN.prototype.divn = function divn (num) {\n    return this.clone().idivn(num);\n  };\n\n  BN.prototype.egcd = function egcd (p) {\n    assert(p.negative === 0);\n    assert(!p.isZero());\n\n    var x = this;\n    var y = p.clone();\n\n    if (x.negative !== 0) {\n      x = x.umod(p);\n    } else {\n      x = x.clone();\n    }\n\n    // A * x + B * y = x\n    var A = new BN(1);\n    var B = new BN(0);\n\n    // C * x + D * y = y\n    var C = new BN(0);\n    var D = new BN(1);\n\n    var g = 0;\n\n    while (x.isEven() && y.isEven()) {\n      x.iushrn(1);\n      y.iushrn(1);\n      ++g;\n    }\n\n    var yp = y.clone();\n    var xp = x.clone();\n\n    while (!x.isZero()) {\n      for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n      if (i > 0) {\n        x.iushrn(i);\n        while (i-- > 0) {\n          if (A.isOdd() || B.isOdd()) {\n            A.iadd(yp);\n            B.isub(xp);\n          }\n\n          A.iushrn(1);\n          B.iushrn(1);\n        }\n      }\n\n      for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n      if (j > 0) {\n        y.iushrn(j);\n        while (j-- > 0) {\n          if (C.isOdd() || D.isOdd()) {\n            C.iadd(yp);\n            D.isub(xp);\n          }\n\n          C.iushrn(1);\n          D.iushrn(1);\n        }\n      }\n\n      if (x.cmp(y) >= 0) {\n        x.isub(y);\n        A.isub(C);\n        B.isub(D);\n      } else {\n        y.isub(x);\n        C.isub(A);\n        D.isub(B);\n      }\n    }\n\n    return {\n      a: C,\n      b: D,\n      gcd: y.iushln(g)\n    };\n  };\n\n  // This is reduced incarnation of the binary EEA\n  // above, designated to invert members of the\n  // _prime_ fields F(p) at a maximal speed\n  BN.prototype._invmp = function _invmp (p) {\n    assert(p.negative === 0);\n    assert(!p.isZero());\n\n    var a = this;\n    var b = p.clone();\n\n    if (a.negative !== 0) {\n      a = a.umod(p);\n    } else {\n      a = a.clone();\n    }\n\n    var x1 = new BN(1);\n    var x2 = new BN(0);\n\n    var delta = b.clone();\n\n    while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n      for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n      if (i > 0) {\n        a.iushrn(i);\n        while (i-- > 0) {\n          if (x1.isOdd()) {\n            x1.iadd(delta);\n          }\n\n          x1.iushrn(1);\n        }\n      }\n\n      for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n      if (j > 0) {\n        b.iushrn(j);\n        while (j-- > 0) {\n          if (x2.isOdd()) {\n            x2.iadd(delta);\n          }\n\n          x2.iushrn(1);\n        }\n      }\n\n      if (a.cmp(b) >= 0) {\n        a.isub(b);\n        x1.isub(x2);\n      } else {\n        b.isub(a);\n        x2.isub(x1);\n      }\n    }\n\n    var res;\n    if (a.cmpn(1) === 0) {\n      res = x1;\n    } else {\n      res = x2;\n    }\n\n    if (res.cmpn(0) < 0) {\n      res.iadd(p);\n    }\n\n    return res;\n  };\n\n  BN.prototype.gcd = function gcd (num) {\n    if (this.isZero()) return num.abs();\n    if (num.isZero()) return this.abs();\n\n    var a = this.clone();\n    var b = num.clone();\n    a.negative = 0;\n    b.negative = 0;\n\n    // Remove common factor of two\n    for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n      a.iushrn(1);\n      b.iushrn(1);\n    }\n\n    do {\n      while (a.isEven()) {\n        a.iushrn(1);\n      }\n      while (b.isEven()) {\n        b.iushrn(1);\n      }\n\n      var r = a.cmp(b);\n      if (r < 0) {\n        // Swap `a` and `b` to make `a` always bigger than `b`\n        var t = a;\n        a = b;\n        b = t;\n      } else if (r === 0 || b.cmpn(1) === 0) {\n        break;\n      }\n\n      a.isub(b);\n    } while (true);\n\n    return b.iushln(shift);\n  };\n\n  // Invert number in the field F(num)\n  BN.prototype.invm = function invm (num) {\n    return this.egcd(num).a.umod(num);\n  };\n\n  BN.prototype.isEven = function isEven () {\n    return (this.words[0] & 1) === 0;\n  };\n\n  BN.prototype.isOdd = function isOdd () {\n    return (this.words[0] & 1) === 1;\n  };\n\n  // And first word and num\n  BN.prototype.andln = function andln (num) {\n    return this.words[0] & num;\n  };\n\n  // Increment at the bit position in-line\n  BN.prototype.bincn = function bincn (bit) {\n    assert(typeof bit === 'number');\n    var r = bit % 26;\n    var s = (bit - r) / 26;\n    var q = 1 << r;\n\n    // Fast case: bit is much higher than all existing words\n    if (this.length <= s) {\n      this._expand(s + 1);\n      this.words[s] |= q;\n      return this;\n    }\n\n    // Add bit and propagate, if needed\n    var carry = q;\n    for (var i = s; carry !== 0 && i < this.length; i++) {\n      var w = this.words[i] | 0;\n      w += carry;\n      carry = w >>> 26;\n      w &= 0x3ffffff;\n      this.words[i] = w;\n    }\n    if (carry !== 0) {\n      this.words[i] = carry;\n      this.length++;\n    }\n    return this;\n  };\n\n  BN.prototype.isZero = function isZero () {\n    return this.length === 1 && this.words[0] === 0;\n  };\n\n  BN.prototype.cmpn = function cmpn (num) {\n    var negative = num < 0;\n\n    if (this.negative !== 0 && !negative) return -1;\n    if (this.negative === 0 && negative) return 1;\n\n    this.strip();\n\n    var res;\n    if (this.length > 1) {\n      res = 1;\n    } else {\n      if (negative) {\n        num = -num;\n      }\n\n      assert(num <= 0x3ffffff, 'Number is too big');\n\n      var w = this.words[0] | 0;\n      res = w === num ? 0 : w < num ? -1 : 1;\n    }\n    if (this.negative !== 0) return -res | 0;\n    return res;\n  };\n\n  // Compare two numbers and return:\n  // 1 - if `this` > `num`\n  // 0 - if `this` == `num`\n  // -1 - if `this` < `num`\n  BN.prototype.cmp = function cmp (num) {\n    if (this.negative !== 0 && num.negative === 0) return -1;\n    if (this.negative === 0 && num.negative !== 0) return 1;\n\n    var res = this.ucmp(num);\n    if (this.negative !== 0) return -res | 0;\n    return res;\n  };\n\n  // Unsigned comparison\n  BN.prototype.ucmp = function ucmp (num) {\n    // At this point both numbers have the same sign\n    if (this.length > num.length) return 1;\n    if (this.length < num.length) return -1;\n\n    var res = 0;\n    for (var i = this.length - 1; i >= 0; i--) {\n      var a = this.words[i] | 0;\n      var b = num.words[i] | 0;\n\n      if (a === b) continue;\n      if (a < b) {\n        res = -1;\n      } else if (a > b) {\n        res = 1;\n      }\n      break;\n    }\n    return res;\n  };\n\n  BN.prototype.gtn = function gtn (num) {\n    return this.cmpn(num) === 1;\n  };\n\n  BN.prototype.gt = function gt (num) {\n    return this.cmp(num) === 1;\n  };\n\n  BN.prototype.gten = function gten (num) {\n    return this.cmpn(num) >= 0;\n  };\n\n  BN.prototype.gte = function gte (num) {\n    return this.cmp(num) >= 0;\n  };\n\n  BN.prototype.ltn = function ltn (num) {\n    return this.cmpn(num) === -1;\n  };\n\n  BN.prototype.lt = function lt (num) {\n    return this.cmp(num) === -1;\n  };\n\n  BN.prototype.lten = function lten (num) {\n    return this.cmpn(num) <= 0;\n  };\n\n  BN.prototype.lte = function lte (num) {\n    return this.cmp(num) <= 0;\n  };\n\n  BN.prototype.eqn = function eqn (num) {\n    return this.cmpn(num) === 0;\n  };\n\n  BN.prototype.eq = function eq (num) {\n    return this.cmp(num) === 0;\n  };\n\n  //\n  // A reduce context, could be using montgomery or something better, depending\n  // on the `m` itself.\n  //\n  BN.red = function red (num) {\n    return new Red(num);\n  };\n\n  BN.prototype.toRed = function toRed (ctx) {\n    assert(!this.red, 'Already a number in reduction context');\n    assert(this.negative === 0, 'red works only with positives');\n    return ctx.convertTo(this)._forceRed(ctx);\n  };\n\n  BN.prototype.fromRed = function fromRed () {\n    assert(this.red, 'fromRed works only with numbers in reduction context');\n    return this.red.convertFrom(this);\n  };\n\n  BN.prototype._forceRed = function _forceRed (ctx) {\n    this.red = ctx;\n    return this;\n  };\n\n  BN.prototype.forceRed = function forceRed (ctx) {\n    assert(!this.red, 'Already a number in reduction context');\n    return this._forceRed(ctx);\n  };\n\n  BN.prototype.redAdd = function redAdd (num) {\n    assert(this.red, 'redAdd works only with red numbers');\n    return this.red.add(this, num);\n  };\n\n  BN.prototype.redIAdd = function redIAdd (num) {\n    assert(this.red, 'redIAdd works only with red numbers');\n    return this.red.iadd(this, num);\n  };\n\n  BN.prototype.redSub = function redSub (num) {\n    assert(this.red, 'redSub works only with red numbers');\n    return this.red.sub(this, num);\n  };\n\n  BN.prototype.redISub = function redISub (num) {\n    assert(this.red, 'redISub works only with red numbers');\n    return this.red.isub(this, num);\n  };\n\n  BN.prototype.redShl = function redShl (num) {\n    assert(this.red, 'redShl works only with red numbers');\n    return this.red.shl(this, num);\n  };\n\n  BN.prototype.redMul = function redMul (num) {\n    assert(this.red, 'redMul works only with red numbers');\n    this.red._verify2(this, num);\n    return this.red.mul(this, num);\n  };\n\n  BN.prototype.redIMul = function redIMul (num) {\n    assert(this.red, 'redMul works only with red numbers');\n    this.red._verify2(this, num);\n    return this.red.imul(this, num);\n  };\n\n  BN.prototype.redSqr = function redSqr () {\n    assert(this.red, 'redSqr works only with red numbers');\n    this.red._verify1(this);\n    return this.red.sqr(this);\n  };\n\n  BN.prototype.redISqr = function redISqr () {\n    assert(this.red, 'redISqr works only with red numbers');\n    this.red._verify1(this);\n    return this.red.isqr(this);\n  };\n\n  // Square root over p\n  BN.prototype.redSqrt = function redSqrt () {\n    assert(this.red, 'redSqrt works only with red numbers');\n    this.red._verify1(this);\n    return this.red.sqrt(this);\n  };\n\n  BN.prototype.redInvm = function redInvm () {\n    assert(this.red, 'redInvm works only with red numbers');\n    this.red._verify1(this);\n    return this.red.invm(this);\n  };\n\n  // Return negative clone of `this` % `red modulo`\n  BN.prototype.redNeg = function redNeg () {\n    assert(this.red, 'redNeg works only with red numbers');\n    this.red._verify1(this);\n    return this.red.neg(this);\n  };\n\n  BN.prototype.redPow = function redPow (num) {\n    assert(this.red && !num.red, 'redPow(normalNum)');\n    this.red._verify1(this);\n    return this.red.pow(this, num);\n  };\n\n  // Prime numbers with efficient reduction\n  var primes = {\n    k256: null,\n    p224: null,\n    p192: null,\n    p25519: null\n  };\n\n  // Pseudo-Mersenne prime\n  function MPrime (name, p) {\n    // P = 2 ^ N - K\n    this.name = name;\n    this.p = new BN(p, 16);\n    this.n = this.p.bitLength();\n    this.k = new BN(1).iushln(this.n).isub(this.p);\n\n    this.tmp = this._tmp();\n  }\n\n  MPrime.prototype._tmp = function _tmp () {\n    var tmp = new BN(null);\n    tmp.words = new Array(Math.ceil(this.n / 13));\n    return tmp;\n  };\n\n  MPrime.prototype.ireduce = function ireduce (num) {\n    // Assumes that `num` is less than `P^2`\n    // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n    var r = num;\n    var rlen;\n\n    do {\n      this.split(r, this.tmp);\n      r = this.imulK(r);\n      r = r.iadd(this.tmp);\n      rlen = r.bitLength();\n    } while (rlen > this.n);\n\n    var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n    if (cmp === 0) {\n      r.words[0] = 0;\n      r.length = 1;\n    } else if (cmp > 0) {\n      r.isub(this.p);\n    } else {\n      if (r.strip !== undefined) {\n        // r is BN v4 instance\n        r.strip();\n      } else {\n        // r is BN v5 instance\n        r._strip();\n      }\n    }\n\n    return r;\n  };\n\n  MPrime.prototype.split = function split (input, out) {\n    input.iushrn(this.n, 0, out);\n  };\n\n  MPrime.prototype.imulK = function imulK (num) {\n    return num.imul(this.k);\n  };\n\n  function K256 () {\n    MPrime.call(\n      this,\n      'k256',\n      'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n  }\n  inherits(K256, MPrime);\n\n  K256.prototype.split = function split (input, output) {\n    // 256 = 9 * 26 + 22\n    var mask = 0x3fffff;\n\n    var outLen = Math.min(input.length, 9);\n    for (var i = 0; i < outLen; i++) {\n      output.words[i] = input.words[i];\n    }\n    output.length = outLen;\n\n    if (input.length <= 9) {\n      input.words[0] = 0;\n      input.length = 1;\n      return;\n    }\n\n    // Shift by 9 limbs\n    var prev = input.words[9];\n    output.words[output.length++] = prev & mask;\n\n    for (i = 10; i < input.length; i++) {\n      var next = input.words[i] | 0;\n      input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n      prev = next;\n    }\n    prev >>>= 22;\n    input.words[i - 10] = prev;\n    if (prev === 0 && input.length > 10) {\n      input.length -= 10;\n    } else {\n      input.length -= 9;\n    }\n  };\n\n  K256.prototype.imulK = function imulK (num) {\n    // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n    num.words[num.length] = 0;\n    num.words[num.length + 1] = 0;\n    num.length += 2;\n\n    // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n    var lo = 0;\n    for (var i = 0; i < num.length; i++) {\n      var w = num.words[i] | 0;\n      lo += w * 0x3d1;\n      num.words[i] = lo & 0x3ffffff;\n      lo = w * 0x40 + ((lo / 0x4000000) | 0);\n    }\n\n    // Fast length reduction\n    if (num.words[num.length - 1] === 0) {\n      num.length--;\n      if (num.words[num.length - 1] === 0) {\n        num.length--;\n      }\n    }\n    return num;\n  };\n\n  function P224 () {\n    MPrime.call(\n      this,\n      'p224',\n      'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n  }\n  inherits(P224, MPrime);\n\n  function P192 () {\n    MPrime.call(\n      this,\n      'p192',\n      'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n  }\n  inherits(P192, MPrime);\n\n  function P25519 () {\n    // 2 ^ 255 - 19\n    MPrime.call(\n      this,\n      '25519',\n      '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n  }\n  inherits(P25519, MPrime);\n\n  P25519.prototype.imulK = function imulK (num) {\n    // K = 0x13\n    var carry = 0;\n    for (var i = 0; i < num.length; i++) {\n      var hi = (num.words[i] | 0) * 0x13 + carry;\n      var lo = hi & 0x3ffffff;\n      hi >>>= 26;\n\n      num.words[i] = lo;\n      carry = hi;\n    }\n    if (carry !== 0) {\n      num.words[num.length++] = carry;\n    }\n    return num;\n  };\n\n  // Exported mostly for testing purposes, use plain name instead\n  BN._prime = function prime (name) {\n    // Cached version of prime\n    if (primes[name]) return primes[name];\n\n    var prime;\n    if (name === 'k256') {\n      prime = new K256();\n    } else if (name === 'p224') {\n      prime = new P224();\n    } else if (name === 'p192') {\n      prime = new P192();\n    } else if (name === 'p25519') {\n      prime = new P25519();\n    } else {\n      throw new Error('Unknown prime ' + name);\n    }\n    primes[name] = prime;\n\n    return prime;\n  };\n\n  //\n  // Base reduction engine\n  //\n  function Red (m) {\n    if (typeof m === 'string') {\n      var prime = BN._prime(m);\n      this.m = prime.p;\n      this.prime = prime;\n    } else {\n      assert(m.gtn(1), 'modulus must be greater than 1');\n      this.m = m;\n      this.prime = null;\n    }\n  }\n\n  Red.prototype._verify1 = function _verify1 (a) {\n    assert(a.negative === 0, 'red works only with positives');\n    assert(a.red, 'red works only with red numbers');\n  };\n\n  Red.prototype._verify2 = function _verify2 (a, b) {\n    assert((a.negative | b.negative) === 0, 'red works only with positives');\n    assert(a.red && a.red === b.red,\n      'red works only with red numbers');\n  };\n\n  Red.prototype.imod = function imod (a) {\n    if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n    return a.umod(this.m)._forceRed(this);\n  };\n\n  Red.prototype.neg = function neg (a) {\n    if (a.isZero()) {\n      return a.clone();\n    }\n\n    return this.m.sub(a)._forceRed(this);\n  };\n\n  Red.prototype.add = function add (a, b) {\n    this._verify2(a, b);\n\n    var res = a.add(b);\n    if (res.cmp(this.m) >= 0) {\n      res.isub(this.m);\n    }\n    return res._forceRed(this);\n  };\n\n  Red.prototype.iadd = function iadd (a, b) {\n    this._verify2(a, b);\n\n    var res = a.iadd(b);\n    if (res.cmp(this.m) >= 0) {\n      res.isub(this.m);\n    }\n    return res;\n  };\n\n  Red.prototype.sub = function sub (a, b) {\n    this._verify2(a, b);\n\n    var res = a.sub(b);\n    if (res.cmpn(0) < 0) {\n      res.iadd(this.m);\n    }\n    return res._forceRed(this);\n  };\n\n  Red.prototype.isub = function isub (a, b) {\n    this._verify2(a, b);\n\n    var res = a.isub(b);\n    if (res.cmpn(0) < 0) {\n      res.iadd(this.m);\n    }\n    return res;\n  };\n\n  Red.prototype.shl = function shl (a, num) {\n    this._verify1(a);\n    return this.imod(a.ushln(num));\n  };\n\n  Red.prototype.imul = function imul (a, b) {\n    this._verify2(a, b);\n    return this.imod(a.imul(b));\n  };\n\n  Red.prototype.mul = function mul (a, b) {\n    this._verify2(a, b);\n    return this.imod(a.mul(b));\n  };\n\n  Red.prototype.isqr = function isqr (a) {\n    return this.imul(a, a.clone());\n  };\n\n  Red.prototype.sqr = function sqr (a) {\n    return this.mul(a, a);\n  };\n\n  Red.prototype.sqrt = function sqrt (a) {\n    if (a.isZero()) return a.clone();\n\n    var mod3 = this.m.andln(3);\n    assert(mod3 % 2 === 1);\n\n    // Fast case\n    if (mod3 === 3) {\n      var pow = this.m.add(new BN(1)).iushrn(2);\n      return this.pow(a, pow);\n    }\n\n    // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n    //\n    // Find Q and S, that Q * 2 ^ S = (P - 1)\n    var q = this.m.subn(1);\n    var s = 0;\n    while (!q.isZero() && q.andln(1) === 0) {\n      s++;\n      q.iushrn(1);\n    }\n    assert(!q.isZero());\n\n    var one = new BN(1).toRed(this);\n    var nOne = one.redNeg();\n\n    // Find quadratic non-residue\n    // NOTE: Max is such because of generalized Riemann hypothesis.\n    var lpow = this.m.subn(1).iushrn(1);\n    var z = this.m.bitLength();\n    z = new BN(2 * z * z).toRed(this);\n\n    while (this.pow(z, lpow).cmp(nOne) !== 0) {\n      z.redIAdd(nOne);\n    }\n\n    var c = this.pow(z, q);\n    var r = this.pow(a, q.addn(1).iushrn(1));\n    var t = this.pow(a, q);\n    var m = s;\n    while (t.cmp(one) !== 0) {\n      var tmp = t;\n      for (var i = 0; tmp.cmp(one) !== 0; i++) {\n        tmp = tmp.redSqr();\n      }\n      assert(i < m);\n      var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n      r = r.redMul(b);\n      c = b.redSqr();\n      t = t.redMul(c);\n      m = i;\n    }\n\n    return r;\n  };\n\n  Red.prototype.invm = function invm (a) {\n    var inv = a._invmp(this.m);\n    if (inv.negative !== 0) {\n      inv.negative = 0;\n      return this.imod(inv).redNeg();\n    } else {\n      return this.imod(inv);\n    }\n  };\n\n  Red.prototype.pow = function pow (a, num) {\n    if (num.isZero()) return new BN(1).toRed(this);\n    if (num.cmpn(1) === 0) return a.clone();\n\n    var windowSize = 4;\n    var wnd = new Array(1 << windowSize);\n    wnd[0] = new BN(1).toRed(this);\n    wnd[1] = a;\n    for (var i = 2; i < wnd.length; i++) {\n      wnd[i] = this.mul(wnd[i - 1], a);\n    }\n\n    var res = wnd[0];\n    var current = 0;\n    var currentLen = 0;\n    var start = num.bitLength() % 26;\n    if (start === 0) {\n      start = 26;\n    }\n\n    for (i = num.length - 1; i >= 0; i--) {\n      var word = num.words[i];\n      for (var j = start - 1; j >= 0; j--) {\n        var bit = (word >> j) & 1;\n        if (res !== wnd[0]) {\n          res = this.sqr(res);\n        }\n\n        if (bit === 0 && current === 0) {\n          currentLen = 0;\n          continue;\n        }\n\n        current <<= 1;\n        current |= bit;\n        currentLen++;\n        if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n        res = this.mul(res, wnd[current]);\n        currentLen = 0;\n        current = 0;\n      }\n      start = 26;\n    }\n\n    return res;\n  };\n\n  Red.prototype.convertTo = function convertTo (num) {\n    var r = num.umod(this.m);\n\n    return r === num ? r.clone() : r;\n  };\n\n  Red.prototype.convertFrom = function convertFrom (num) {\n    var res = num.clone();\n    res.red = null;\n    return res;\n  };\n\n  //\n  // Montgomery method engine\n  //\n\n  BN.mont = function mont (num) {\n    return new Mont(num);\n  };\n\n  function Mont (m) {\n    Red.call(this, m);\n\n    this.shift = this.m.bitLength();\n    if (this.shift % 26 !== 0) {\n      this.shift += 26 - (this.shift % 26);\n    }\n\n    this.r = new BN(1).iushln(this.shift);\n    this.r2 = this.imod(this.r.sqr());\n    this.rinv = this.r._invmp(this.m);\n\n    this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n    this.minv = this.minv.umod(this.r);\n    this.minv = this.r.sub(this.minv);\n  }\n  inherits(Mont, Red);\n\n  Mont.prototype.convertTo = function convertTo (num) {\n    return this.imod(num.ushln(this.shift));\n  };\n\n  Mont.prototype.convertFrom = function convertFrom (num) {\n    var r = this.imod(num.mul(this.rinv));\n    r.red = null;\n    return r;\n  };\n\n  Mont.prototype.imul = function imul (a, b) {\n    if (a.isZero() || b.isZero()) {\n      a.words[0] = 0;\n      a.length = 1;\n      return a;\n    }\n\n    var t = a.imul(b);\n    var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n    var u = t.isub(c).iushrn(this.shift);\n    var res = u;\n\n    if (u.cmp(this.m) >= 0) {\n      res = u.isub(this.m);\n    } else if (u.cmpn(0) < 0) {\n      res = u.iadd(this.m);\n    }\n\n    return res._forceRed(this);\n  };\n\n  Mont.prototype.mul = function mul (a, b) {\n    if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n    var t = a.mul(b);\n    var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n    var u = t.isub(c).iushrn(this.shift);\n    var res = u;\n    if (u.cmp(this.m) >= 0) {\n      res = u.isub(this.m);\n    } else if (u.cmpn(0) < 0) {\n      res = u.iadd(this.m);\n    }\n\n    return res._forceRed(this);\n  };\n\n  Mont.prototype.invm = function invm (a) {\n    // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n    var res = this.imod(a._invmp(this.m).mul(this.r2));\n    return res._forceRed(this);\n  };\n})(typeof module === 'undefined' || module, this);\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n    MAX_SAFE_INTEGER = 9007199254740991,\n    MAX_INTEGER = 1.7976931348623157e+308,\n    NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil,\n    nativeMax = Math.max;\n\n/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n  var index = -1,\n      length = array.length;\n\n  if (start < 0) {\n    start = -start > length ? 0 : (length + start);\n  }\n  end = end > length ? length : end;\n  if (end < 0) {\n    end += length;\n  }\n  length = start > end ? 0 : ((end - start) >>> 0);\n  start >>>= 0;\n\n  var result = Array(length);\n  while (++index < length) {\n    result[index] = array[index + start];\n  }\n  return result;\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  length = length == null ? MAX_SAFE_INTEGER : length;\n  return !!length &&\n    (typeof value == 'number' || reIsUint.test(value)) &&\n    (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n *  else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n  if (!isObject(object)) {\n    return false;\n  }\n  var type = typeof index;\n  if (type == 'number'\n        ? (isArrayLike(object) && isIndex(index, object.length))\n        : (type == 'string' && index in object)\n      ) {\n    return eq(object[index], value);\n  }\n  return false;\n}\n\n/**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\nfunction chunk(array, size, guard) {\n  if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n    size = 1;\n  } else {\n    size = nativeMax(toInteger(size), 0);\n  }\n  var length = array ? array.length : 0;\n  if (!length || size < 1) {\n    return [];\n  }\n  var index = 0,\n      resIndex = 0,\n      result = Array(nativeCeil(length / size));\n\n  while (index < length) {\n    result[resIndex++] = baseSlice(array, index, (index += size));\n  }\n  return result;\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 8-9 which returns 'object' for typed array and other constructors.\n  var tag = isObject(value) ? objectToString.call(value) : '';\n  return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n  if (!value) {\n    return value === 0 ? value : 0;\n  }\n  value = toNumber(value);\n  if (value === INFINITY || value === -INFINITY) {\n    var sign = (value < 0 ? -1 : 1);\n    return sign * MAX_INTEGER;\n  }\n  return value === value ? value : 0;\n}\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n  var result = toFinite(value),\n      remainder = result % 1;\n\n  return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  if (isObject(value)) {\n    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n    value = isObject(other) ? (other + '') : other;\n  }\n  if (typeof value != 'string') {\n    return value === 0 ? value : +value;\n  }\n  value = value.replace(reTrim, '');\n  var isBinary = reIsBinary.test(value);\n  return (isBinary || reIsOctal.test(value))\n    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n    : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = chunk;\n","/**\n * Lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors <https://js.foundation/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    asyncTag = '[object AsyncFunction]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    nullTag = '[object Null]',\n    objectTag = '[object Object]',\n    promiseTag = '[object Promise]',\n    proxyTag = '[object Proxy]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]',\n    undefinedTag = '[object Undefined]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n  try {\n    return freeProcess && freeProcess.binding && freeProcess.binding('util');\n  } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      resIndex = 0,\n      result = [];\n\n  while (++index < length) {\n    var value = array[index];\n    if (predicate(value, index, array)) {\n      result[resIndex++] = value;\n    }\n  }\n  return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n  var index = -1,\n      length = values.length,\n      offset = array.length;\n\n  while (++index < length) {\n    array[offset + index] = values[index];\n  }\n  return array;\n}\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n *  else `false`.\n */\nfunction arraySome(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (predicate(array[index], index, array)) {\n      return true;\n    }\n  }\n  return false;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n  return function(value) {\n    return func(value);\n  };\n}\n\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n  return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n  var index = -1,\n      result = Array(map.size);\n\n  map.forEach(function(value, key) {\n    result[++index] = [key, value];\n  });\n  return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n  var index = -1,\n      result = Array(set.size);\n\n  set.forEach(function(value) {\n    result[++index] = value;\n  });\n  return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n    funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n    Symbol = root.Symbol,\n    Uint8Array = root.Uint8Array,\n    propertyIsEnumerable = objectProto.propertyIsEnumerable,\n    splice = arrayProto.splice,\n    symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n    nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n    nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n    Map = getNative(root, 'Map'),\n    Promise = getNative(root, 'Promise'),\n    Set = getNative(root, 'Set'),\n    WeakMap = getNative(root, 'WeakMap'),\n    nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n    mapCtorString = toSource(Map),\n    promiseCtorString = toSource(Promise),\n    setCtorString = toSource(Set),\n    weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n  this.__data__ = nativeCreate ? nativeCreate(null) : {};\n  this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n  var result = this.has(key) && delete this.__data__[key];\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n  var data = this.__data__;\n  if (nativeCreate) {\n    var result = data[key];\n    return result === HASH_UNDEFINED ? undefined : result;\n  }\n  return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n  var data = this.__data__;\n  return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n  var data = this.__data__;\n  this.size += this.has(key) ? 0 : 1;\n  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n  return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n  this.__data__ = [];\n  this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    return false;\n  }\n  var lastIndex = data.length - 1;\n  if (index == lastIndex) {\n    data.pop();\n  } else {\n    splice.call(data, index, 1);\n  }\n  --this.size;\n  return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n  return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    ++this.size;\n    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n  return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n  this.size = 0;\n  this.__data__ = {\n    'hash': new Hash,\n    'map': new (Map || ListCache),\n    'string': new Hash\n  };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n  var result = getMapData(this, key)['delete'](key);\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n  return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n  return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n  var data = getMapData(this, key),\n      size = data.size;\n\n  data.set(key, value);\n  this.size += data.size == size ? 0 : 1;\n  return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n  var index = -1,\n      length = values == null ? 0 : values.length;\n\n  this.__data__ = new MapCache;\n  while (++index < length) {\n    this.add(values[index]);\n  }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n  this.__data__.set(value, HASH_UNDEFINED);\n  return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n  return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n  var data = this.__data__ = new ListCache(entries);\n  this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n  this.__data__ = new ListCache;\n  this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n  var data = this.__data__,\n      result = data['delete'](key);\n\n  this.size = data.size;\n  return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n  return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n  return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n  var data = this.__data__;\n  if (data instanceof ListCache) {\n    var pairs = data.__data__;\n    if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n      pairs.push([key, value]);\n      this.size = ++data.size;\n      return this;\n    }\n    data = this.__data__ = new MapCache(pairs);\n  }\n  data.set(key, value);\n  this.size = data.size;\n  return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  var isArr = isArray(value),\n      isArg = !isArr && isArguments(value),\n      isBuff = !isArr && !isArg && isBuffer(value),\n      isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n      skipIndexes = isArr || isArg || isBuff || isType,\n      result = skipIndexes ? baseTimes(value.length, String) : [],\n      length = result.length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (\n           // Safari 9 has enumerable `arguments.length` in strict mode.\n           key == 'length' ||\n           // Node.js 0.10 has enumerable non-index properties on buffers.\n           (isBuff && (key == 'offset' || key == 'parent')) ||\n           // PhantomJS 2 has enumerable non-index properties on typed arrays.\n           (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n           // Skip index properties.\n           isIndex(key, length)\n        ))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n  var length = array.length;\n  while (length--) {\n    if (eq(array[length][0], key)) {\n      return length;\n    }\n  }\n  return -1;\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n  var result = keysFunc(object);\n  return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return (symToStringTag && symToStringTag in Object(value))\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n  return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n *  1 - Unordered comparison\n *  2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n  if (value === other) {\n    return true;\n  }\n  if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n    return value !== value && other !== other;\n  }\n  return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n  var objIsArr = isArray(object),\n      othIsArr = isArray(other),\n      objTag = objIsArr ? arrayTag : getTag(object),\n      othTag = othIsArr ? arrayTag : getTag(other);\n\n  objTag = objTag == argsTag ? objectTag : objTag;\n  othTag = othTag == argsTag ? objectTag : othTag;\n\n  var objIsObj = objTag == objectTag,\n      othIsObj = othTag == objectTag,\n      isSameTag = objTag == othTag;\n\n  if (isSameTag && isBuffer(object)) {\n    if (!isBuffer(other)) {\n      return false;\n    }\n    objIsArr = true;\n    objIsObj = false;\n  }\n  if (isSameTag && !objIsObj) {\n    stack || (stack = new Stack);\n    return (objIsArr || isTypedArray(object))\n      ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n      : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n  }\n  if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n    var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n        othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n    if (objIsWrapped || othIsWrapped) {\n      var objUnwrapped = objIsWrapped ? object.value() : object,\n          othUnwrapped = othIsWrapped ? other.value() : other;\n\n      stack || (stack = new Stack);\n      return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n    }\n  }\n  if (!isSameTag) {\n    return false;\n  }\n  stack || (stack = new Stack);\n  return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n  return isObjectLike(value) &&\n    isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n  if (!isPrototype(object)) {\n    return nativeKeys(object);\n  }\n  var result = [];\n  for (var key in Object(object)) {\n    if (hasOwnProperty.call(object, key) && key != 'constructor') {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      arrLength = array.length,\n      othLength = other.length;\n\n  if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n    return false;\n  }\n  // Assume cyclic values are equal.\n  var stacked = stack.get(array);\n  if (stacked && stack.get(other)) {\n    return stacked == other;\n  }\n  var index = -1,\n      result = true,\n      seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n  stack.set(array, other);\n  stack.set(other, array);\n\n  // Ignore non-index properties.\n  while (++index < arrLength) {\n    var arrValue = array[index],\n        othValue = other[index];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, arrValue, index, other, array, stack)\n        : customizer(arrValue, othValue, index, array, other, stack);\n    }\n    if (compared !== undefined) {\n      if (compared) {\n        continue;\n      }\n      result = false;\n      break;\n    }\n    // Recursively compare arrays (susceptible to call stack limits).\n    if (seen) {\n      if (!arraySome(other, function(othValue, othIndex) {\n            if (!cacheHas(seen, othIndex) &&\n                (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n              return seen.push(othIndex);\n            }\n          })) {\n        result = false;\n        break;\n      }\n    } else if (!(\n          arrValue === othValue ||\n            equalFunc(arrValue, othValue, bitmask, customizer, stack)\n        )) {\n      result = false;\n      break;\n    }\n  }\n  stack['delete'](array);\n  stack['delete'](other);\n  return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n  switch (tag) {\n    case dataViewTag:\n      if ((object.byteLength != other.byteLength) ||\n          (object.byteOffset != other.byteOffset)) {\n        return false;\n      }\n      object = object.buffer;\n      other = other.buffer;\n\n    case arrayBufferTag:\n      if ((object.byteLength != other.byteLength) ||\n          !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n        return false;\n      }\n      return true;\n\n    case boolTag:\n    case dateTag:\n    case numberTag:\n      // Coerce booleans to `1` or `0` and dates to milliseconds.\n      // Invalid dates are coerced to `NaN`.\n      return eq(+object, +other);\n\n    case errorTag:\n      return object.name == other.name && object.message == other.message;\n\n    case regexpTag:\n    case stringTag:\n      // Coerce regexes to strings and treat strings, primitives and objects,\n      // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n      // for more details.\n      return object == (other + '');\n\n    case mapTag:\n      var convert = mapToArray;\n\n    case setTag:\n      var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n      convert || (convert = setToArray);\n\n      if (object.size != other.size && !isPartial) {\n        return false;\n      }\n      // Assume cyclic values are equal.\n      var stacked = stack.get(object);\n      if (stacked) {\n        return stacked == other;\n      }\n      bitmask |= COMPARE_UNORDERED_FLAG;\n\n      // Recursively compare objects (susceptible to call stack limits).\n      stack.set(object, other);\n      var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n      stack['delete'](object);\n      return result;\n\n    case symbolTag:\n      if (symbolValueOf) {\n        return symbolValueOf.call(object) == symbolValueOf.call(other);\n      }\n  }\n  return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      objProps = getAllKeys(object),\n      objLength = objProps.length,\n      othProps = getAllKeys(other),\n      othLength = othProps.length;\n\n  if (objLength != othLength && !isPartial) {\n    return false;\n  }\n  var index = objLength;\n  while (index--) {\n    var key = objProps[index];\n    if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n      return false;\n    }\n  }\n  // Assume cyclic values are equal.\n  var stacked = stack.get(object);\n  if (stacked && stack.get(other)) {\n    return stacked == other;\n  }\n  var result = true;\n  stack.set(object, other);\n  stack.set(other, object);\n\n  var skipCtor = isPartial;\n  while (++index < objLength) {\n    key = objProps[index];\n    var objValue = object[key],\n        othValue = other[key];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, objValue, key, other, object, stack)\n        : customizer(objValue, othValue, key, object, other, stack);\n    }\n    // Recursively compare objects (susceptible to call stack limits).\n    if (!(compared === undefined\n          ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n          : compared\n        )) {\n      result = false;\n      break;\n    }\n    skipCtor || (skipCtor = key == 'constructor');\n  }\n  if (result && !skipCtor) {\n    var objCtor = object.constructor,\n        othCtor = other.constructor;\n\n    // Non `Object` object instances with different constructors are not equal.\n    if (objCtor != othCtor &&\n        ('constructor' in object && 'constructor' in other) &&\n        !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n          typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n      result = false;\n    }\n  }\n  stack['delete'](object);\n  stack['delete'](other);\n  return result;\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n  return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n  var data = map.__data__;\n  return isKeyable(key)\n    ? data[typeof key == 'string' ? 'string' : 'hash']\n    : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n  if (object == null) {\n    return [];\n  }\n  object = Object(object);\n  return arrayFilter(nativeGetSymbols(object), function(symbol) {\n    return propertyIsEnumerable.call(object, symbol);\n  });\n};\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n    (Map && getTag(new Map) != mapTag) ||\n    (Promise && getTag(Promise.resolve()) != promiseTag) ||\n    (Set && getTag(new Set) != setTag) ||\n    (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n  getTag = function(value) {\n    var result = baseGetTag(value),\n        Ctor = result == objectTag ? value.constructor : undefined,\n        ctorString = Ctor ? toSource(Ctor) : '';\n\n    if (ctorString) {\n      switch (ctorString) {\n        case dataViewCtorString: return dataViewTag;\n        case mapCtorString: return mapTag;\n        case promiseCtorString: return promiseTag;\n        case setCtorString: return setTag;\n        case weakMapCtorString: return weakMapTag;\n      }\n    }\n    return result;\n  };\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  length = length == null ? MAX_SAFE_INTEGER : length;\n  return !!length &&\n    (typeof value == 'number' || reIsUint.test(value)) &&\n    (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n  var type = typeof value;\n  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n    ? (value !== '__proto__')\n    : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n  return value === proto;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n    try {\n      return (func + '');\n    } catch (e) {}\n  }\n  return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n  return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n    !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n  return baseIsEqual(value, other);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  if (!isObject(value)) {\n    return false;\n  }\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 9 which returns 'object' for typed arrays and other constructors.\n  var tag = baseGetTag(value);\n  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n  return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nmodule.exports = isEqual;\n","// ++  muk\n//\n// See arvo/sys/hoon.hoon.\n\nconst BN = require('bn.js')\n\nconst ux_FF = new BN(0xFF)\nconst ux_FF00 = new BN(0xFF00)\nconst u_256 = new BN(256)\n\n/**\n * Standard murmur3.\n *\n * @param  {Number}  syd\n * @param  {Number}  len\n * @param  {BN}  key\n * @return  {BN}\n */\nconst muk = (syd, len, key) => {\n  const lo = key.and(ux_FF).toNumber()\n  const hi = key.and(ux_FF00).div(u_256).toNumber()\n  const kee = String.fromCharCode(lo) + String.fromCharCode(hi)\n  return new BN(murmurhash3_32_gc(kee, syd))\n}\n\n// see: https://github.com/garycourt/murmurhash-js\n//\n// Copyright (c) 2011 Gary Court\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\n// of the Software, and to permit persons to whom the Software is furnished to do\n// so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\n\n/**\n * JS Implementation of MurmurHash3 (r136) (as of May 20, 2011)\n *\n * @author <a href=\"mailto:gary.court@gmail.com\">Gary Court</a>\n * @see http://github.com/garycourt/murmurhash-js\n * @author <a href=\"mailto:aappleby@gmail.com\">Austin Appleby</a>\n * @see http://sites.google.com/site/murmurhash/\n *\n * @param {string} key ASCII only\n * @param {number} seed Positive integer only\n * @return {number} 32-bit positive integer hash\n **/\nconst murmurhash3_32_gc = (key, seed) => {\n  // eslint-disable-next-line no-unused-vars\n  let remainder, bytes, h1, h1b, c1, c1b, c2, c2b, k1, i;\n\n  remainder = key.length & 3; // key.length % 4\n  bytes = key.length - remainder;\n  h1 = seed;\n  c1 = 0xcc9e2d51;\n  c2 = 0x1b873593;\n  i = 0;\n\n  while (i < bytes) {\n      k1 =\n        ((key.charCodeAt(i) & 0xff)) |\n        ((key.charCodeAt(++i) & 0xff) << 8) |\n        ((key.charCodeAt(++i) & 0xff) << 16) |\n        ((key.charCodeAt(++i) & 0xff) << 24);\n    ++i;\n\n    k1 = ((((k1 & 0xffff) * c1) + ((((k1 >>> 16) * c1) & 0xffff) << 16))) & 0xffffffff;\n    k1 = (k1 << 15) | (k1 >>> 17);\n    k1 = ((((k1 & 0xffff) * c2) + ((((k1 >>> 16) * c2) & 0xffff) << 16))) & 0xffffffff;\n\n    h1 ^= k1;\n        h1 = (h1 << 13) | (h1 >>> 19);\n    h1b = ((((h1 & 0xffff) * 5) + ((((h1 >>> 16) * 5) & 0xffff) << 16))) & 0xffffffff;\n    h1 = (((h1b & 0xffff) + 0x6b64) + ((((h1b >>> 16) + 0xe654) & 0xffff) << 16));\n  }\n\n  k1 = 0;\n\n  switch (remainder) {\n    case 3: k1 ^= (key.charCodeAt(i + 2) & 0xff) << 16;\n    // eslint-disable-next-line no-fallthrough\n    case 2: k1 ^= (key.charCodeAt(i + 1) & 0xff) << 8;\n    // eslint-disable-next-line no-fallthrough\n    case 1: k1 ^= (key.charCodeAt(i) & 0xff);\n\n    k1 = (((k1 & 0xffff) * c1) + ((((k1 >>> 16) * c1) & 0xffff) << 16)) & 0xffffffff;\n    k1 = (k1 << 15) | (k1 >>> 17);\n    k1 = (((k1 & 0xffff) * c2) + ((((k1 >>> 16) * c2) & 0xffff) << 16)) & 0xffffffff;\n    h1 ^= k1;\n  }\n\n  h1 ^= key.length;\n\n  h1 ^= h1 >>> 16;\n  h1 = (((h1 & 0xffff) * 0x85ebca6b) + ((((h1 >>> 16) * 0x85ebca6b) & 0xffff) << 16)) & 0xffffffff;\n  h1 ^= h1 >>> 13;\n  h1 = ((((h1 & 0xffff) * 0xc2b2ae35) + ((((h1 >>> 16) * 0xc2b2ae35) & 0xffff) << 16))) & 0xffffffff;\n  h1 ^= h1 >>> 16;\n\n  return h1 >>> 0;\n}\n\nmodule.exports = {\n  muk\n}\n","// ++  ob\n//\n// See arvo/sys/hoon.hoon.\n\nconst BN = require('bn.js')\nconst { muk } = require('./muk')\n\nconst ux_1_0000 = new BN('10000', 'hex')\nconst ux_ffff_ffff = new BN('ffffffff', 'hex')\nconst ux_1_0000_0000 = new BN('100000000', 'hex')\nconst ux_ffff_ffff_ffff_ffff = new BN('ffffffffffffffff', 'hex')\nconst ux_ffff_ffff_0000_0000 = new BN('ffffffff00000000', 'hex')\n\nconst u_65535 = new BN('65535')\nconst u_65536 = new BN('65536')\n\n// a PRF for j in { 0, .., 3 }\nconst F = (j, arg) => {\n  const raku = [\n    0xb76d5eed,\n    0xee281300,\n    0x85bcae01,\n    0x4b387af7,\n  ]\n\n  return muk(raku[j], 2, arg)\n}\n\n/**\n * Conceal structure v3.\n *\n * @param {String, Number, BN} pyn\n * @return  {BN}\n */\nconst fein = (arg) => {\n  const loop = (pyn) => {\n    const lo = pyn.and(ux_ffff_ffff)\n    const hi = pyn.and(ux_ffff_ffff_0000_0000)\n\n    return pyn.gte(ux_1_0000) && pyn.lte(ux_ffff_ffff)\n      ? ux_1_0000.add(feis(pyn.sub(ux_1_0000)))\n      : pyn.gte(ux_1_0000_0000) && pyn.lte(ux_ffff_ffff_ffff_ffff)\n      ? hi.or(loop(lo))\n      : pyn\n  }\n\n  return loop(new BN(arg))\n}\n\n/**\n * Restore structure v3.\n *\n * @param  {String, Number, BN}  cry\n * @return  {BN}\n */\nconst fynd = (arg) => {\n  const loop = (cry) => {\n    const lo = cry.and(ux_ffff_ffff)\n    const hi = cry.and(ux_ffff_ffff_0000_0000)\n\n    return cry.gte(ux_1_0000) && cry.lte(ux_ffff_ffff)\n      ? ux_1_0000.add(tail(cry.sub(ux_1_0000)))\n      : cry.gte(ux_1_0000_0000) && cry.lte(ux_ffff_ffff_ffff_ffff)\n      ? hi.or(loop(lo))\n      : cry\n  }\n\n  return loop(new BN(arg))\n}\n\n/**\n * Generalised Feistel cipher.\n *\n * See: Black and Rogaway (2002), \"Ciphers with arbitrary finite domains.\"\n *\n * Note that this has been adjusted from the reference paper in order to\n * support some legacy behaviour.\n *\n * @param  {String, Number, BN}\n * @return  {BN}\n */\nconst feis = arg =>\n  Fe(4, u_65535, u_65536, ux_ffff_ffff, F, new BN(arg))\n\nconst Fe = (r, a, b, k, f, m) => {\n  const c = fe(r, a, b, f, m)\n  return (\n      c.lt(k)\n    ? c\n    : fe(r, a, b, f, c)\n  )\n}\n\nconst fe = (r, a, b, f, m) => {\n  const loop = (j, ell, arr) => {\n    if (j > r) {\n      return (\n          r % 2 !== 0\n        ? a.mul(arr).add(ell)\n        : arr.eq(a)\n        ? a.mul(arr).add(ell)\n        : a.mul(ell).add(arr)\n      )\n    } else {\n      const eff = f(j - 1, arr)\n\n      const tmp =\n          j % 2 !== 0\n        ? ell.add(eff).mod(a)\n        : ell.add(eff).mod(b)\n\n      return loop(j + 1, arr, tmp)\n    }\n  }\n\n  const L = m.mod(a)\n  const R = m.div(a)\n\n  return loop(1, L, R)\n}\n\n/**\n * Reverse 'feis'.\n *\n * See: Black and Rogaway (2002), \"Ciphers with arbitrary finite domains.\"\n *\n * Note that this has been adjusted from the reference paper in order to\n * support some legacy behaviour.\n *\n * @param {Number, String, BN}  arg\n * @return  {BN}\n */\nconst tail = arg =>\n  Fen(4, u_65535, u_65536, ux_ffff_ffff, F, new BN(arg))\n\nconst Fen = (r, a, b, k, f, m) => {\n  const c = fen(r, a, b, f, m)\n  return (\n      c.lt(k)\n    ? c\n    : fen(r, a, b, f, c)\n  )\n}\n\nconst fen = (r, a, b, f, m) => {\n  const loop = (j, ell, arr) => {\n    if (j < 1) {\n      return a.mul(arr).add(ell)\n    } else {\n      const eff = f(j - 1, ell)\n\n      // NB (jtobin):\n      //\n      // Slight deviation from B&R (2002) here to prevent negative values.  We\n      // add 'a' or 'b' to arr as appropriate and reduce 'eff' modulo the same\n      // number before performing subtraction.\n      //\n      const tmp =\n          j % 2 !== 0\n        ? arr.add(a).sub(eff.mod(a)).mod(a)\n        : arr.add(b).sub(eff.mod(b)).mod(b)\n\n      return loop(j - 1, tmp, ell)\n    }\n  }\n\n  const ahh =\n      r % 2 !== 0\n    ? m.div(a)\n    : m.mod(a)\n\n  const ale =\n      r % 2 !== 0\n    ? m.mod(a)\n    : m.div(a)\n\n  const L =\n      ale.eq(a)\n    ? ahh\n    : ale\n\n  const R =\n      ale.eq(a)\n    ? ale\n    : ahh\n\n  return loop(r, L, R)\n}\n\nmodule.exports = {\n  F,\n\n  fe,\n  Fe,\n  feis,\n  fein,\n\n  fen,\n  Fen,\n  tail,\n  fynd\n}\n","// ++  co\n//\n// See arvo/sys/hoon.hoon.\n\nconst BN = require('bn.js')\nconst chunk = require('lodash.chunk')\nconst isEqual = require('lodash.isequal')\n\nconst ob = require('./ob')\n\nconst zero = new BN(0)\nconst one = new BN(1)\nconst two = new BN(2)\nconst three = new BN(3)\nconst four = new BN(4)\nconst five = new BN(5)\n\nconst pre = `\ndozmarbinwansamlitsighidfidlissogdirwacsabwissib\\\nrigsoldopmodfoglidhopdardorlorhodfolrintogsilmir\\\nholpaslacrovlivdalsatlibtabhanticpidtorbolfosdot\\\nlosdilforpilramtirwintadbicdifrocwidbisdasmidlop\\\nrilnardapmolsanlocnovsitnidtipsicropwitnatpanmin\\\nritpodmottamtolsavposnapnopsomfinfonbanmorworsip\\\nronnorbotwicsocwatdolmagpicdavbidbaltimtasmallig\\\nsivtagpadsaldivdactansidfabtarmonranniswolmispal\\\nlasdismaprabtobrollatlonnodnavfignomnibpagsopral\\\nbilhaddocridmocpacravripfaltodtiltinhapmicfanpat\\\ntaclabmogsimsonpinlomrictapfirhasbosbatpochactid\\\nhavsaplindibhosdabbitbarracparloddosbortochilmac\\\ntomdigfilfasmithobharmighinradmashalraglagfadtop\\\nmophabnilnosmilfopfamdatnoldinhatnacrisfotribhoc\\\nnimlarfitwalrapsarnalmoslandondanladdovrivbacpol\\\nlaptalpitnambonrostonfodponsovnocsorlavmatmipfip\\\n`\n\nconst suf = `\nzodnecbudwessevpersutletfulpensytdurwepserwylsun\\\nrypsyxdyrnuphebpeglupdepdysputlughecryttyvsydnex\\\nlunmeplutseppesdelsulpedtemledtulmetwenbynhexfeb\\\npyldulhetmevruttylwydtepbesdexsefwycburderneppur\\\nrysrebdennutsubpetrulsynregtydsupsemwynrecmegnet\\\nsecmulnymtevwebsummutnyxrextebfushepbenmuswyxsym\\\nselrucdecwexsyrwetdylmynmesdetbetbeltuxtugmyrpel\\\nsyptermebsetdutdegtexsurfeltudnuxruxrenwytnubmed\\\nlytdusnebrumtynseglyxpunresredfunrevrefmectedrus\\\nbexlebduxrynnumpyxrygryxfeptyrtustyclegnemfermer\\\ntenlusnussyltecmexpubrymtucfyllepdebbermughuttun\\\nbylsudpemdevlurdefbusbeprunmelpexdytbyttyplevmyl\\\nwedducfurfexnulluclennerlexrupnedlecrydlydfenwel\\\nnydhusrelrudneshesfetdesretdunlernyrsebhulryllud\\\nremlysfynwerrycsugnysnyllyndyndemluxfedsedbecmun\\\nlyrtesmudnytbyrsenwegfyrmurtelreptegpecnelnevfes\\\n`\n\nconst patp2syls = name =>\n     name.replace(/[\\^~-]/g,'').match(/.{1,3}/g)\n  || []\n\nconst splitAt = (index, str) => [str.slice(0, index), str.slice(index)]\n\nconst prefixes = pre.match(/.{1,3}/g)\n\nconst suffixes = suf.match(/.{1,3}/g)\n\nconst bex = (n) =>\n  two.pow(n)\n\nconst rsh = (a, b, c) =>\n  c.div(bex(bex(a).mul(b)))\n\nconst met = (a, b, c = zero) =>\n  b.eq(zero)\n  ? c\n  : met(a, rsh(a, one, b), c.add(one))\n\nconst end = (a, b, c) =>\n  c.mod(bex(bex(a).mul(b)))\n\n/**\n * Convert a hex-encoded string to a @p-encoded string.\n *\n * @param  {String}  hex\n * @return  {String}\n */\nconst hex2patp = (hex) => {\n  if (hex === null) {\n    throw new Error('hex2patp: null input')\n  }\n  return patp(new BN(hex, 'hex'))\n}\n\n/**\n * Convert a @p-encoded string to a hex-encoded string.\n *\n * @param  {String}  name @p\n * @return  {String}\n */\nconst patp2hex = (name) => {\n  if (isValidPat(name) === false) {\n    throw new Error('patp2hex: not a valid @p')\n  }\n  const syls = patp2syls(name)\n\n  const syl2bin = idx =>\n    idx.toString(2).padStart(8, '0')\n\n  const addr = syls.reduce((acc, syl, idx) =>\n    idx % 2 !== 0 || syls.length === 1\n      ? acc + syl2bin(suffixes.indexOf(syl))\n      : acc + syl2bin(prefixes.indexOf(syl)),\n  '')\n\n  const bn = new BN(addr, 2)\n  const hex = ob.fynd(bn).toString('hex')\n  return hex.length % 2 !== 0\n    ? hex.padStart(hex.length + 1, '0')\n    : hex\n}\n\n/**\n * Convert a @p-encoded string to a bignum.\n *\n * @param  {String}  name @p\n * @return  {BN}\n */\nconst patp2bn = name =>\n  new BN(patp2hex(name), 'hex')\n\n/**\n * Convert a @p-encoded string to a decimal-encoded string.\n *\n * @param  {String}  name @p\n * @return  {String}\n */\nconst patp2dec = name => {\n  let bn\n  try {\n    bn = patp2bn(name)\n  } catch(_) {\n    throw new Error('patp2dec: not a valid @p')\n  }\n  return bn.toString()\n}\n\n/**\n * Convert a number to a @q-encoded string.\n *\n * @param  {String, Number, BN}  arg\n * @return  {String}\n */\nconst patq = (arg) => {\n  const bn = new BN(arg)\n  const buf = bn.toArrayLike(Buffer)\n  return buf2patq(buf)\n}\n\n/**\n * Convert a Buffer into a @q-encoded string.\n *\n * @param  {Buffer}  buf\n * @return  {String}\n */\nconst buf2patq = buf => {\n  const chunked =\n    buf.length % 2 !== 0 && buf.length > 1\n    ? [[buf[0]]].concat(chunk(buf.slice(1), 2))\n    : chunk(buf, 2)\n\n  const prefixName = byts =>\n    byts[1] === undefined\n    ? prefixes[0] + suffixes[byts[0]]\n    : prefixes[byts[0]] + suffixes[byts[1]]\n\n  const name = byts =>\n    byts[1] === undefined\n    ? suffixes[byts[0]]\n    : prefixes[byts[0]] + suffixes[byts[1]]\n\n  const alg = pair =>\n    pair.length % 2 !== 0 && chunked.length > 1\n    ? prefixName(pair)\n    : name(pair)\n\n  return chunked.reduce((acc, elem) =>\n    acc + (acc === '~' ? '' : '-') + alg(elem), '~')\n}\n\n/**\n * Convert a hex-encoded string to a @q-encoded string.\n *\n * Note that this preserves leading zero bytes.\n *\n * @param  {String}  hex\n * @return  {String}\n */\nconst hex2patq = arg => {\n  const hex =\n    arg.length % 2 !== 0\n    ? arg.padStart(arg.length + 1, '0')\n    : arg\n\n  const buf = Buffer.from(hex, 'hex')\n  return buf2patq(buf)\n}\n\n/**\n * Convert a @q-encoded string to a hex-encoded string.\n *\n * Note that this preserves leading zero bytes.\n *\n * @param  {String}  name @q\n * @return  {String}\n */\nconst patq2hex = name => {\n  if (isValidPat(name) === false) {\n    throw new Error('patq2hex: not a valid @q')\n  }\n  const chunks = name.slice(1).split('-')\n  const dec2hex = dec =>\n    dec.toString(16).padStart(2, '0')\n\n  const splat = chunks.map(chunk => {\n    let syls = splitAt(3, chunk)\n    return syls[1] === ''\n      ? dec2hex(suffixes.indexOf(syls[0]))\n      : dec2hex(prefixes.indexOf(syls[0])) +\n        dec2hex(suffixes.indexOf(syls[1]))\n  })\n\n  return name.length === 0\n    ? '00'\n    : splat.join('')\n}\n\n/**\n * Convert a @q-encoded string to a bignum.\n *\n * @param  {String}  name @q\n * @return  {BN}\n */\nconst patq2bn = name =>\n  new BN(patq2hex(name), 'hex')\n\n/**\n * Convert a @q-encoded string to a decimal-encoded string.\n *\n * @param  {String}  name @q\n * @return  {String}\n */\nconst patq2dec = name => {\n  let bn\n  try {\n    bn = patq2bn(name)\n  } catch(_) {\n    throw new Error('patq2dec: not a valid @q')\n  }\n  return bn.toString()\n}\n\n/**\n * Determine the ship class of a @p value.\n *\n * @param  {String}  @p\n * @return  {String}\n */\nconst clan = who => {\n  let name\n  try {\n    name = patp2bn(who)\n  } catch(_) {\n    throw new Error('clan: not a valid @p')\n  }\n\n  const wid = met(three, name)\n  return wid.lte(one)\n    ? 'galaxy'\n    : wid.eq(two)\n    ? 'star'\n    : wid.lte(four)\n    ? 'planet'\n    : wid.lte(new BN(8))\n    ? 'moon'\n    : 'comet'\n}\n\n/**\n * Determine the parent of a @p value.\n *\n * @param  {String}  @p\n * @return  {String}\n */\nconst sein = name => {\n  let who\n  try {\n    who = patp2bn(name)\n  } catch(_) {\n    throw new Error('sein: not a valid @p')\n  }\n\n  let mir\n  try {\n    mir = clan(name)\n  } catch(_) {\n    throw new Error('sein: not a valid @p')\n  }\n\n  const res =\n    mir === 'galaxy'\n    ? who\n    : mir === 'star'\n    ? end(three, one, who)\n    : mir === 'planet'\n    ? end(four, one, who)\n    : mir === 'moon'\n    ? end(five, one, who)\n    : zero\n  return patp(res)\n}\n\n/**\n * Weakly check if a string is a valid @p or @q value.\n *\n * This is, at present, a pretty weak sanity check.  It doesn't confirm the\n * structure precisely (e.g. dashes), and for @q, it's required that q values\n * of (greater than one) odd bytelength have been zero-padded.  So, for\n * example, '~doznec-binwod' will be considered a valid @q, but '~nec-binwod'\n * will not.\n *\n * @param  {String}  name a @p or @q value\n * @return  {String}\n */\nconst isValidPat = name => {\n  if (typeof name !== 'string') {\n    throw new Error('isValidPat: non-string input')\n  }\n\n  const leadingTilde = name.slice(0, 1) === '~'\n\n  if (leadingTilde === false || name.length < 4) {\n    return false\n  } else {\n    const syls = patp2syls(name)\n    const wrongLength = syls.length % 2 !== 0 && syls.length !== 1\n    const sylsExist = syls.reduce((acc, syl, index) =>\n      acc &&\n        (index % 2 !== 0 || syls.length === 1\n          ? suffixes.includes(syl)\n          : prefixes.includes(syl)),\n      true)\n\n    return !wrongLength && sylsExist\n  }\n}\n\n/**\n * Validate a @p string.\n *\n * @param  {String}  str a string\n * @return  {String}\n */\nconst isValidPatp = str =>\n  isValidPat(str) && str === patp(patp2dec(str))\n\n/**\n * Validate a @q string.\n *\n * @param  {String}  str a string\n * @return  {String}\n */\nconst isValidPatq = str =>\n  isValidPat(str) && eqPatq(str, patq(patq2dec(str)))\n\n/**\n * Remove all leading zero bytes from a sliceable value.\n * @param  {String, Buffer, Array}\n * @return  {String}\n */\nconst removeLeadingZeroBytes = str =>\n  str.slice(0, 2) === '00'\n  ? removeLeadingZeroBytes(str.slice(2))\n  : str\n\n/**\n * Equality comparison, modulo leading zero bytes.\n * @param  {String, Buffer, Array}\n * @param  {String, Buffer, Array}\n * @return  {Bool}\n */\nconst eqModLeadingZeroBytes = (s, t) =>\n  isEqual(removeLeadingZeroBytes(s), removeLeadingZeroBytes(t))\n\n/**\n * Equality comparison on @q values.\n * @param  {String}  p a @q-encoded string\n * @param  {String}  q a @q-encoded string\n * @return  {Bool}\n */\nconst eqPatq = (p, q) => {\n  let phex\n  try {\n    phex = patq2hex(p)\n  } catch(_) {\n    throw new Error('eqPatq: not a valid @q')\n  }\n\n  let qhex\n  try {\n    qhex = patq2hex(q)\n  } catch(_) {\n    throw new Error('eqPatq: not a valid @q')\n  }\n\n  return eqModLeadingZeroBytes(phex, qhex)\n}\n\n/**\n * Convert a number to a @p-encoded string.\n *\n * @param  {String, Number, BN}  arg\n * @return  {String}\n */\nconst patp = (arg) => {\n  if (arg === null) {\n    throw new Error('patp: null input')\n  }\n  const n = new BN(arg)\n\n  const sxz = ob.fein(n)\n  const dyy = met(four, sxz)\n\n  const loop = (tsxz, timp, trep) => {\n    const log = end(four, one, tsxz)\n    const pre = prefixes[rsh(three, one, log)]\n    const suf = suffixes[end(three, one, log)]\n    const etc =\n      (timp.mod(four)).eq(zero)\n        ? timp.eq(zero)\n          ? ''\n          : '--'\n        : '-'\n\n    const res = pre + suf + etc + trep\n\n    return timp.eq(dyy)\n      ? trep\n      : loop(rsh(four, one, tsxz), timp.add(one), res)\n  }\n\n  const dyx = met(three, sxz)\n\n  return '~' +\n    (dyx.lte(one)\n    ? suffixes[sxz]\n    : loop(sxz, zero, ''))\n}\n\nmodule.exports = {\n  patp,\n  patp2hex,\n  hex2patp,\n  patp2dec,\n  sein,\n  clan,\n\n  patq,\n  patq2hex,\n  hex2patq,\n  patq2dec,\n\n  eqPatq,\n  isValidPat,\n  isValidPatp,\n  isValidPatq\n}\n","\nconst co = require('./internal/co')\nconst ob = require('./internal/ob')\n\nmodule.exports = Object.assign(\n  co,\n  ob\n)\n","import { GroupPolicy, makeResource, Resource, resourceFromPath } from '../groups';\n\nimport { decToUd, deSig, unixToDa, Scry } from '../lib';\nimport { Enc, Path, Patp, PatpNoSig, Poke, Thread } from '../lib/types';\nimport { Content, GraphChildrenPoke, GraphNode, GraphNodePoke, Post } from './types';\nimport { patp2dec } from 'urbit-ob';\n\nexport const GRAPH_UPDATE_VERSION = 3;\n\nexport const createBlankNodeWithChildPost = (\n  ship: PatpNoSig,\n  parentIndex = '',\n  childIndex = '',\n  contents: Content[]\n): GraphNodePoke => {\n  const date = unixToDa(Date.now()).toString();\n  const nodeIndex = parentIndex + '/' + date;\n\n  const childGraph: GraphChildrenPoke = {};\n  childGraph[childIndex] = {\n    post: {\n      author: `~${ship}`,\n      index: nodeIndex + '/' + childIndex,\n      'time-sent': Date.now(),\n      contents,\n      hash: null,\n      signatures: []\n    },\n    children: null\n  };\n\n  return {\n    post: {\n      author: `~${ship}`,\n      index: nodeIndex,\n      'time-sent': Date.now(),\n      contents: [],\n      hash: null,\n      signatures: []\n    },\n    children: childGraph\n  };\n};\n\nexport const markPending = (nodes: any): any => {\n  Object.keys(nodes).forEach((key) => {\n    nodes[key].post.author = deSig(nodes[key].post.author);\n    nodes[key].post.pending = true;\n    if (nodes[key].children) {\n      nodes[key].children = markPending(nodes[key].children);\n    }\n  });\n  return nodes;\n};\n\nexport const createPost = (\n  ship: PatpNoSig,\n  contents: Content[],\n  parentIndex = '',\n  childIndex = 'DATE_PLACEHOLDER'\n): Post => {\n  if (childIndex === 'DATE_PLACEHOLDER') {\n    childIndex = unixToDa(Date.now()).toString();\n  }\n  return {\n    author: `~${ship}`,\n    index: parentIndex + '/' + childIndex,\n    'time-sent': Date.now(),\n    contents,\n    hash: null,\n    signatures: []\n  };\n};\n\nfunction moduleToMark(mod: string): string | undefined {\n  if(mod === 'link') {\n    return 'graph-validator-link';\n  }\n  if(mod === 'publish') {\n    return 'graph-validator-publish';\n  }\n  if(mod === 'chat') {\n    return 'graph-validator-chat';\n  }\n  return undefined;\n}\n\nconst storeAction = <T>(data: T, version: number = GRAPH_UPDATE_VERSION): Poke<T> => ({\n  app: 'graph-store',\n  mark: `graph-update-${version}`,\n  json: data\n});\n\nexport { storeAction as graphStoreAction };\n\nconst viewAction = <T>(threadName: string, action: T): Thread<T> => ({\n  inputMark: 'graph-view-action',\n  outputMark: 'json',\n  threadName,\n  body: action\n});\n\nexport { viewAction as graphViewAction };\n\nconst hookAction = <T>(data: T, version: number = GRAPH_UPDATE_VERSION): Poke<T> => ({\n  app: 'graph-push-hook',\n  mark: `graph-update-${version}`,\n  json: data\n});\n\nconst dmAction = <T>(data: T): Poke<T> => ({\n  app: 'dm-hook',\n  mark: 'dm-hook-action',\n  json: data\n});\n\nexport { hookAction as graphHookAction };\n\nexport const createManagedGraph = (\n  ship: PatpNoSig,\n  name: string,\n  title: string,\n  description: string,\n  group: Path,\n  mod: string\n): Thread<any> => {\n  const associated = { group: resourceFromPath(group) };\n  const resource = makeResource(`~${ship}`, name);\n\n  return viewAction('graph-create', {\n    create: {\n      resource,\n      title,\n      description,\n      associated,\n      module: mod,\n      mark: moduleToMark(mod)\n    }\n  });\n};\n\nexport const createUnmanagedGraph = (\n  ship: PatpNoSig,\n  name: string,\n  title: string,\n  description: string,\n  policy: Enc<GroupPolicy>,\n  mod: string\n): Thread<any> => viewAction('graph-create', {\n  create: {\n    resource: makeResource(`~${ship}`, name),\n    title,\n    description,\n    associated: { policy },\n    module: mod,\n    mark: moduleToMark(mod)\n  }\n});\n\nexport const joinGraph = (\n  ship: Patp,\n  name: string\n): Thread<any> => viewAction('graph-join', {\n  join: {\n    resource: makeResource(ship, name),\n    ship\n  }\n});\n\nexport const deleteGraph = (\n  ship: PatpNoSig,\n  name: string\n): Thread<any> => viewAction('graph-delete', {\n  'delete': {\n    resource: makeResource(`~${ship}`, name)\n  }\n});\n\nexport const leaveGraph = (\n  ship: Patp,\n  name: string\n): Thread<any> => viewAction('graph-leave', {\n  'leave': {\n    resource: makeResource(ship, name)\n  }\n});\n\nexport const groupifyGraph = (\n  ship: Patp,\n  name: string,\n  toPath?: string\n): Thread<any> => {\n  const resource = makeResource(ship, name);\n  const to = toPath && resourceFromPath(toPath);\n\n  return viewAction('graph-groupify', {\n    groupify: {\n      resource,\n      to\n    }\n  });\n};\n\nexport const evalCord = (\n  cord: string\n): Thread<any> => {\n  return ({\n    inputMark: 'graph-view-action',\n    outputMark: 'tang',\n    threadName: 'graph-eval',\n    body: {\n      eval: cord\n    }\n  });\n};\n\nexport const addGraph = (\n  ship: Patp,\n  name: string,\n  graph: any,\n  mark: any\n): Poke<any> => {\n  return storeAction({\n    'add-graph': {\n      resource: { ship, name },\n      graph,\n      mark\n    }\n  });\n};\n\nexport const addNodes = (\n  ship: Patp,\n  name: string,\n  nodes: Object\n): Thread<any> => ({\n  inputMark: `graph-update-${GRAPH_UPDATE_VERSION}`,\n  outputMark: 'graph-view-action',\n  threadName: 'graph-add-nodes',\n  body: {\n    'add-nodes': {\n      resource: { ship, name },\n      nodes\n    }\n  }\n});\n\nexport const addPost = (\n  ship: Patp,\n  name: string,\n  post: Post\n): Thread<any> => {\n  const nodes: Record<string, GraphNode> = {};\n  nodes[post.index] = {\n    post,\n    children: null\n  };\n  return addNodes(ship, name, nodes);\n};\n\nexport const addNode = (\n  ship: Patp,\n  name: string,\n  node: GraphNodePoke\n): Thread<any> => {\n  const nodes: Record<string, GraphNodePoke> = {};\n  nodes[node.post.index] = node;\n\n  return addNodes(ship, name, nodes);\n};\n\nexport const createGroupFeed = (\n  group: Resource,\n  vip: any = ''\n): Thread<any> => ({\n  inputMark: 'graph-view-action',\n  outputMark: 'resource',\n  threadName: 'graph-create-group-feed',\n  body: {\n    'create-group-feed': {\n      resource: group,\n      vip\n    }\n  }\n});\n\nexport const disableGroupFeed = (\n  group: Resource\n): Thread<any> => ({\n  inputMark: 'graph-view-action',\n  outputMark: 'json',\n  threadName: 'graph-disable-group-feed',\n  body: {\n    'disable-group-feed': {\n      resource: group\n    }\n  }\n});\n\n/**\n * Set dm-hook to screen new DMs or not\n *\n */\nexport const setScreen = (screen: boolean): Poke<any> => dmAction({ screen });\n\n/**\n * Accept a pending DM request\n *\n * @param ship the ship to accept\n */\nexport const acceptDm = (ship: string) => dmAction({\n  accept: ship\n});\n\n/**\n * Decline a pending DM request\n *\n * @param ship the ship to accept\n */\nexport const declineDm = (ship: string) => dmAction({\n  decline: ship\n});\n\n/**\n * Remove posts from a set of indices\n *\n */\nexport const removePosts = (\n  ship: Patp,\n  name: string,\n  indices: string[]\n): Poke<any> => hookAction({\n  'remove-posts': {\n    resource: { ship, name },\n    indices\n  }\n});\n\n/**\n * Remove a DM message from our inbox\n *\n * @remarks\n * This does not remove the message from the recipients inbox\n */\nexport const removeDmMessage = (\n  our: Patp,\n  index: string\n): Poke<any> => ({\n  app: 'graph-store',\n  mark: `graph-update-${GRAPH_UPDATE_VERSION}`,\n  json: {\n    'remove-posts': {\n      resource: { ship: our, name: 'dm-inbox' },\n      indices: [index]\n    }\n  }\n});\n\n/**\n * Send a DM to a ship\n *\n * @param our sender\n * @param ship recipient\n * @param contents contents of message\n */\nexport const addDmMessage = (our: PatpNoSig, ship: Patp, contents: Content[]): Poke<any> => {\n  const post = createPost(our, contents, `/${patp2dec(ship)}`);\n  const node: GraphNode = {\n    post,\n    children: null\n  };\n  return {\n    app: 'dm-hook',\n    mark: `graph-update-${GRAPH_UPDATE_VERSION}`,\n    json: {\n      'add-nodes': {\n        resource: { ship: `~${our}`, name: 'dm-inbox' },\n        nodes: {\n          [post.index]: node\n        }\n      }\n    }\n  };\n};\n\nconst encodeIndex = (idx: string) => idx.split('/').map(decToUd).join('/');\n\n/**\n * Fetch all graph keys\n */\nexport const getKeys = (): Scry => ({\n  app: 'graph-store',\n  path: '/keys'\n});\n\n/**\n * Fetch newest (larger keys) nodes in a graph under some index\n *\n * @param ship ship of graph\n * @param name name of graph\n * @param count number of nodes to load\n * @param index index to query\n */\nexport const getNewest = (\n  ship: string,\n  name: string,\n  count: number,\n  index = ''\n): Scry => ({\n  app: 'graph-store',\n  path: `/graph/${ship}/${name}/node/siblings` +\n        `/newest/lone/${count}${encodeIndex(index)}`\n});\n\n/**\n * Fetch nodes in a graph that are older (key is smaller) and direct\n * siblings of some index\n *\n * @param ship ship of graph\n * @param name name of graph\n * @param count number of nodes to load\n * @param index index to query\n */\nexport const getOlderSiblings = (\n  ship: string,\n  name: string,\n  count: number,\n  index: string\n): Scry => ({\n  app: 'graph-store',\n  path: `/graph/${ship}/${name}/node/siblings/older/lone/${count}${encodeIndex(index)}`\n});\n\n/**\n * Fetch nodes in a graph that are younger (key is larger) and direct\n * siblings of some index\n *\n * @param ship ship of graph\n * @param name name of graph\n * @param count number of nodes to load\n * @param index index to query\n */\nexport const getYoungerSiblings = (\n  ship: string,\n  name: string,\n  count: number,\n  index: string\n): Scry => ({\n  app: 'graph-store',\n  path: `/graph/${ship}/${name}/node/siblings/newer/lone/${count}${encodeIndex(index)}`\n});\n\n/**\n * Fetch all nodes in a graph under some index, without loading children\n *\n * @param ship ship of graph\n * @param name name of graph\n * @param index index to query\n */\nexport const getShallowChildren = (ship: string, name: string, index = '') => ({\n  app: 'graph-store',\n  path: `/graph/${ship}/${name}/node/children/lone/~/~${encodeIndex(index)}`\n});\n\n/**\n * Fetch newest nodes in a graph as a flat map, including children,\n * optionally starting at a specified key\n *\n * @param ship ship of graph\n * @param name name of graph\n * @param count number of nodes to load\n * @param start key to start at\n *\n */\nexport const getDeepOlderThan = (\n  ship: string,\n  name: string,\n  count: number,\n  start = ''\n) => ({\n  app: 'graph-store',\n  path: `/graph/${ship}/${name}/node/siblings` +\n        `/${start.length > 0 ? 'older' : 'newest'}` +\n        `/kith/${count}${encodeIndex(start)}`\n});\n\n/**\n * Fetch a flat map of a nodes ancestors and firstborn children\n *\n * @param ship ship of graph\n * @param name name of graph\n * @param index index to query\n *\n */\nexport const getFirstborn = (\n  ship: string,\n  name: string,\n  index: string\n): Scry => ({\n  app: 'graph-store',\n  path: `/graph/${ship}/${name}/node/firstborn${encodeIndex(index)}`\n});\n\n/**\n * Fetch a single node, and all it's children\n *\n * @param ship ship of graph\n * @param name name of graph\n * @param index index to query\n *\n */\nexport const getNode = (\n  ship: string,\n  name: string,\n  index: string\n): Scry => ({\n  app: 'graph-store',\n  path: `/graph/${ship}/${name}/node/index/kith${encodeIndex(index)}`\n});\n\n/**\n * Fetch entire graph\n *\n * @param ship ship of graph\n * @param name name of graph\n *\n */\nexport const getGraph = (\n  ship: string,\n  name: string\n): Scry => ({\n  app: 'graph-store',\n  path: `/graph/${ship}/${name}`\n});\n","import { BigInteger } from 'big-integer';\n\nimport { Poke } from '../lib/types';\nimport {\n  HarkBin,\n  HarkBinId,\n  HarkBody,\n  HarkLid,\n  HarkPlace\n} from './types';\nimport { decToUd } from '../lib';\n\nexport const harkAction = <T>(data: T): Poke<T> => ({\n  app: 'hark-store',\n  mark: 'hark-action',\n  json: data\n});\n\nconst graphHookAction = <T>(data: T): Poke<T> => ({\n  app: 'hark-graph-hook',\n  mark: 'hark-graph-hook-action',\n  json: data\n});\n\nexport { graphHookAction as harkGraphHookAction };\n\nconst groupHookAction = <T>(data: T): Poke<T> => ({\n  app: 'hark-group-hook',\n  mark: 'hark-group-hook-action',\n  json: data\n});\n\nexport { groupHookAction as harkGroupHookAction };\n\nexport const actOnNotification = (\n  frond: string,\n  intTime: BigInteger,\n  bin: HarkBin\n): Poke<unknown> =>\n  harkAction({\n    [frond]: {\n      time: decToUd(intTime.toString()),\n      bin\n    }\n  });\n\nexport const setMentions = (mentions: boolean): Poke<unknown> =>\n  graphHookAction({\n    'set-mentions': mentions\n  });\n\nexport const setWatchOnSelf = (watchSelf: boolean): Poke<unknown> =>\n  graphHookAction({\n    'set-watch-on-self': watchSelf\n  });\n\nexport const setDoNotDisturb = (dnd: boolean): Poke<unknown> =>\n  harkAction({\n    'set-dnd': dnd\n  });\n\nexport const addNote = (bin: HarkBin, body: HarkBody) => \n  harkAction({\n    'add-note': {\n      bin,\n      body\n    }\n  });\n\nexport const archive = (bin: HarkBin, lid: HarkLid): Poke<unknown> =>\n  harkAction({\n    archive: {\n      lid,\n      bin\n    }\n  });\n\nexport const opened = harkAction({\n  opened: null\n});\n\nexport const markCountAsRead = (place: HarkPlace): Poke<unknown> =>\n  harkAction({\n    'read-count': place\n  });\n\nexport const markEachAsRead = (\n  place: HarkPlace,\n  path: string\n): Poke<unknown> =>\n  harkAction({\n    'read-each': {\n      place,\n      path\n    }\n  });\n\nexport const seen = () => harkAction({ seen: null });\n\nexport const readAll = harkAction({ 'read-all': null });\nexport const archiveAll = harkAction({ 'archive-all': null });\n\nexport const ignoreGroup = (group: string): Poke<unknown> =>\n  groupHookAction({\n    ignore: group\n  });\n\nexport const ignoreGraph = (graph: string, index: string): Poke<unknown> =>\n  graphHookAction({\n    ignore: {\n      graph,\n      index\n    }\n  });\n\nexport const listenGroup = (group: string): Poke<unknown> =>\n  groupHookAction({\n    listen: group\n  });\n\nexport const listenGraph = (graph: string, index: string): Poke<unknown> =>\n  graphHookAction({\n    listen: {\n      graph,\n      index\n    }\n  });\n\n/**\n * Read all graphs belonging to a particular group\n */\nexport const readGroup = (group: string) =>\n  harkAction({\n    'read-group': group\n  });\n\n/**\n * Read all unreads in a graph\n */\nexport const readGraph = (graph: string) =>\n  harkAction({\n    'read-graph': graph\n  });\n\nexport function harkBinToId(bin: HarkBin): HarkBinId {\n  const { place, path } = bin;\n  return `${place.desk}${place.path}${path}`;\n}\n\nexport function harkBinEq(a: HarkBin, b: HarkBin): boolean {\n  return (\n    a.place.path === b.place.path &&\n    a.place.desk === b.place.desk &&\n    a.path === b.path\n  );\n}\n\nexport function harkLidToId(lid: HarkLid): string {\n  if('time' in lid) {\n    return `archive-${lid.time}`;\n  }\n  return Object.keys(lid)[0];\n}\n","import { Poke, Serial } from \"../lib\";\nimport { InviteUpdate, InviteUpdateAccept, InviteUpdateDecline } from \"./types\";\n\nexport const inviteAction = <T extends InviteUpdate>(data: T): Poke<T> => ({\n  app: 'invite-store',\n  mark: 'invite-action',\n  json: data\n});\n\nexport const accept = (\n  app: string,\n  uid: Serial\n): Poke<InviteUpdateAccept> => inviteAction({\n  accept: {\n    term: app,\n    uid\n  }\n});\n\nexport const decline = (\n  app: string,\n  uid: Serial\n): Poke<InviteUpdateDecline> => inviteAction({\n  decline: {\n    term: app,\n    uid\n  }\n});\n","import { Path, Poke, uxToHex, PatpNoSig } from '../lib';\nimport { MdAppName, Association, Metadata, MetadataUpdate, MetadataUpdateAdd, MetadataUpdateRemove, MetadataEditField, MetadataUpdateEdit } from './types';\n\nexport const METADATA_UPDATE_VERSION = 2;\n\nexport const metadataAction = <T extends MetadataUpdate>(data: T, version: number = METADATA_UPDATE_VERSION): Poke<T> => ({\n  app: 'metadata-push-hook',\n  mark: `metadata-update-${version}`,\n  json: data\n});\n\nexport const add = (\n  ship: PatpNoSig,\n  appName: MdAppName,\n  resource: Path,\n  group: Path,\n  title: string,\n  description: string,\n  dateCreated: string,\n  color: string,\n  moduleName: string\n): Poke<MetadataUpdateAdd> => metadataAction({\n  add: {\n    group,\n    resource: {\n      resource,\n      'app-name': appName\n    },\n    metadata: {\n      title,\n      description,\n      color,\n      'date-created': dateCreated,\n      creator: `~${ship}`,\n      config: { graph: moduleName },\n      picture: '',\n      hidden: false,\n      preview: false,\n      vip: ''\n    }\n  }\n});\n\nexport { add as metadataAdd };\n\nexport const remove = (\n  appName: MdAppName,\n  resource: string,\n  group: string\n): Poke<MetadataUpdateRemove> => metadataAction<MetadataUpdateRemove>({\n  remove: {\n    group,\n    resource: {\n      resource,\n      'app-name': appName\n    }\n  }\n});\n\nexport { remove as metadataRemove };\n\nexport const edit = (\n  association: Association,\n  edit: MetadataEditField\n): Poke<MetadataUpdateEdit> => metadataAction<MetadataUpdateEdit>({\n  edit: {\n    group: association.group,\n    resource: {\n      resource: association.resource,\n      'app-name': association['app-name']\n    },\n    edit\n  }\n});\n\nexport { edit as metadataEdit };\n\n/**\n * @deprecated use {@link edit} instead\n */\nexport const update = (\n  association: Association,\n  newMetadata: Partial<Metadata>\n): Poke<MetadataUpdateAdd> => {\n  const metadata = { ...association.metadata, ...newMetadata };\n    metadata.color = uxToHex(metadata.color);\n    return metadataAction<MetadataUpdateAdd>({\n      add: {\n        group: association.group,\n        resource: {\n          resource: association.resource,\n          'app-name': association['app-name']\n        },\n        metadata\n      }\n    });\n};\n\nexport { update as metadataUpdate };\n","import { Poke, Scry } from '../lib';\nimport { PutBucket, Key, Bucket, DelBucket, Value, PutEntry, DelEntry, SettingsUpdate } from './types';\n\nexport const action = <T extends SettingsUpdate>(data: T): Poke<T> => ({\n  app: 'settings-store',\n  mark: 'settings-event',\n  json: data\n});\n\nexport const putBucket = (\n  desk: string,\n  key: Key,\n  bucket: Bucket\n): Poke<PutBucket> => action({\n  'put-bucket': {\n    desk,\n    'bucket-key': key,\n    'bucket': bucket\n  }\n});\n\nexport const delBucket = (\n  desk: string,\n  key: Key\n): Poke<DelBucket> => action({\n  'del-bucket': {\n    desk,\n    'bucket-key': key\n  }\n});\n\nexport const putEntry = (\n  desk: string,\n  bucket: Key,\n  key: Key,\n  value: Value\n): Poke<PutEntry> => action({\n  'put-entry': {\n    desk,\n    'bucket-key': bucket,\n    'entry-key': key,\n    value: value\n  }\n});\n\nexport const delEntry = (\n  desk: string,\n  bucket: Key,\n  key: Key\n): Poke<DelEntry> => action({\n  'del-entry': {\n    desk,\n    'bucket-key': bucket,\n    'entry-key': key\n  }\n});\n\nexport const getAll: Scry = {\n  app: 'settings-store',\n  path: '/all'\n};\n\nexport const getBucket = (desk: string, bucket: string) => ({\n  app: 'settings-store',\n  path: `/bucket/${bucket}`\n});\n\nexport const getEntry = (desk: string, bucket: string, entry: string) => ({\n  app: 'settings-store',\n  path: `/entry/${desk}/${bucket}/${entry}`\n});\n\nexport const getDeskSettings = (desk: string) => ({\n  app: 'settings-store',\n  path: `/desk/${desk}`\n});\n\nexport * from './types';\n","import { Poke } from '../lib/types';\nimport { S3Update, S3UpdateAccessKeyId, S3UpdateAddBucket, S3UpdateCurrentBucket, S3UpdateEndpoint, S3UpdateRemoveBucket, S3UpdateSecretAccessKey } from './types';\n\nconst s3Action = <T extends S3Update>(\n  data: any\n): Poke<T> => ({\n  app: 's3-store',\n  mark: 's3-action',\n  json: data\n});\n\nexport const setCurrentBucket = (\n  bucket: string\n): Poke<S3UpdateCurrentBucket> => s3Action({\n  'set-current-bucket': bucket\n});\n\nexport const addBucket = (\n  bucket: string\n): Poke<S3UpdateAddBucket> => s3Action({\n  'add-bucket': bucket\n});\n\nexport const removeBucket = (\n  bucket: string\n): Poke<S3UpdateRemoveBucket> => s3Action({\n  'remove-bucket': bucket\n});\n\nexport const setEndpoint = (\n  endpoint: string\n): Poke<S3UpdateEndpoint> => s3Action({\n  'set-endpoint': endpoint\n});\n\nexport const setAccessKeyId = (\n  accessKeyId: string\n): Poke<S3UpdateAccessKeyId> => s3Action({\n  'set-access-key-id': accessKeyId\n});\n\nexport const setSecretAccessKey = (\n  secretAccessKey: string\n): Poke<S3UpdateSecretAccessKey> => s3Action({\n  'set-secret-access-key': secretAccessKey\n});\n\n","function n(n){for(var t=arguments.length,r=Array(t>1?t-1:0),e=1;e<t;e++)r[e-1]=arguments[e];if(\"production\"!==process.env.NODE_ENV){var i=Y[n],o=i?\"function\"==typeof i?i.apply(null,r):i:\"unknown error nr: \"+n;throw Error(\"[Immer] \"+o)}throw Error(\"[Immer] minified error nr: \"+n+(r.length?\" \"+r.map((function(n){return\"'\"+n+\"'\"})).join(\",\"):\"\")+\". Find the full error at: https://bit.ly/3cXEKWf\")}function t(n){return!!n&&!!n[Q]}function r(n){return!!n&&(function(n){if(!n||\"object\"!=typeof n)return!1;var t=Object.getPrototypeOf(n);if(null===t)return!0;var r=Object.hasOwnProperty.call(t,\"constructor\")&&t.constructor;return r===Object||\"function\"==typeof r&&Function.toString.call(r)===Z}(n)||Array.isArray(n)||!!n[L]||!!n.constructor[L]||s(n)||v(n))}function e(r){return t(r)||n(23,r),r[Q].t}function i(n,t,r){void 0===r&&(r=!1),0===o(n)?(r?Object.keys:nn)(n).forEach((function(e){r&&\"symbol\"==typeof e||t(e,n[e],n)})):n.forEach((function(r,e){return t(e,r,n)}))}function o(n){var t=n[Q];return t?t.i>3?t.i-4:t.i:Array.isArray(n)?1:s(n)?2:v(n)?3:0}function u(n,t){return 2===o(n)?n.has(t):Object.prototype.hasOwnProperty.call(n,t)}function a(n,t){return 2===o(n)?n.get(t):n[t]}function f(n,t,r){var e=o(n);2===e?n.set(t,r):3===e?(n.delete(t),n.add(r)):n[t]=r}function c(n,t){return n===t?0!==n||1/n==1/t:n!=n&&t!=t}function s(n){return X&&n instanceof Map}function v(n){return q&&n instanceof Set}function p(n){return n.o||n.t}function l(n){if(Array.isArray(n))return Array.prototype.slice.call(n);var t=tn(n);delete t[Q];for(var r=nn(t),e=0;e<r.length;e++){var i=r[e],o=t[i];!1===o.writable&&(o.writable=!0,o.configurable=!0),(o.get||o.set)&&(t[i]={configurable:!0,writable:!0,enumerable:o.enumerable,value:n[i]})}return Object.create(Object.getPrototypeOf(n),t)}function d(n,e){return void 0===e&&(e=!1),y(n)||t(n)||!r(n)?n:(o(n)>1&&(n.set=n.add=n.clear=n.delete=h),Object.freeze(n),e&&i(n,(function(n,t){return d(t,!0)}),!0),n)}function h(){n(2)}function y(n){return null==n||\"object\"!=typeof n||Object.isFrozen(n)}function b(t){var r=rn[t];return r||n(18,t),r}function m(n,t){rn[n]||(rn[n]=t)}function _(){return\"production\"===process.env.NODE_ENV||U||n(0),U}function j(n,t){t&&(b(\"Patches\"),n.u=[],n.s=[],n.v=t)}function O(n){g(n),n.p.forEach(S),n.p=null}function g(n){n===U&&(U=n.l)}function w(n){return U={p:[],l:U,h:n,m:!0,_:0}}function S(n){var t=n[Q];0===t.i||1===t.i?t.j():t.O=!0}function P(t,e){e._=e.p.length;var i=e.p[0],o=void 0!==t&&t!==i;return e.h.g||b(\"ES5\").S(e,t,o),o?(i[Q].P&&(O(e),n(4)),r(t)&&(t=M(e,t),e.l||x(e,t)),e.u&&b(\"Patches\").M(i[Q],t,e.u,e.s)):t=M(e,i,[]),O(e),e.u&&e.v(e.u,e.s),t!==H?t:void 0}function M(n,t,r){if(y(t))return t;var e=t[Q];if(!e)return i(t,(function(i,o){return A(n,e,t,i,o,r)}),!0),t;if(e.A!==n)return t;if(!e.P)return x(n,e.t,!0),e.t;if(!e.I){e.I=!0,e.A._--;var o=4===e.i||5===e.i?e.o=l(e.k):e.o;i(3===e.i?new Set(o):o,(function(t,i){return A(n,e,o,t,i,r)})),x(n,o,!1),r&&n.u&&b(\"Patches\").R(e,r,n.u,n.s)}return e.o}function A(e,i,o,a,c,s){if(\"production\"!==process.env.NODE_ENV&&c===o&&n(5),t(c)){var v=M(e,c,s&&i&&3!==i.i&&!u(i.D,a)?s.concat(a):void 0);if(f(o,a,v),!t(v))return;e.m=!1}if(r(c)&&!y(c)){if(!e.h.F&&e._<1)return;M(e,c),i&&i.A.l||x(e,c)}}function x(n,t,r){void 0===r&&(r=!1),n.h.F&&n.m&&d(t,r)}function z(n,t){var r=n[Q];return(r?p(r):n)[t]}function I(n,t){if(t in n)for(var r=Object.getPrototypeOf(n);r;){var e=Object.getOwnPropertyDescriptor(r,t);if(e)return e;r=Object.getPrototypeOf(r)}}function k(n){n.P||(n.P=!0,n.l&&k(n.l))}function E(n){n.o||(n.o=l(n.t))}function R(n,t,r){var e=s(t)?b(\"MapSet\").N(t,r):v(t)?b(\"MapSet\").T(t,r):n.g?function(n,t){var r=Array.isArray(n),e={i:r?1:0,A:t?t.A:_(),P:!1,I:!1,D:{},l:t,t:n,k:null,o:null,j:null,C:!1},i=e,o=en;r&&(i=[e],o=on);var u=Proxy.revocable(i,o),a=u.revoke,f=u.proxy;return e.k=f,e.j=a,f}(t,r):b(\"ES5\").J(t,r);return(r?r.A:_()).p.push(e),e}function D(e){return t(e)||n(22,e),function n(t){if(!r(t))return t;var e,u=t[Q],c=o(t);if(u){if(!u.P&&(u.i<4||!b(\"ES5\").K(u)))return u.t;u.I=!0,e=F(t,c),u.I=!1}else e=F(t,c);return i(e,(function(t,r){u&&a(u.t,t)===r||f(e,t,n(r))})),3===c?new Set(e):e}(e)}function F(n,t){switch(t){case 2:return new Map(n);case 3:return Array.from(n)}return l(n)}function N(){function r(n,t){var r=s[n];return r?r.enumerable=t:s[n]=r={configurable:!0,enumerable:t,get:function(){var t=this[Q];return\"production\"!==process.env.NODE_ENV&&f(t),en.get(t,n)},set:function(t){var r=this[Q];\"production\"!==process.env.NODE_ENV&&f(r),en.set(r,n,t)}},r}function e(n){for(var t=n.length-1;t>=0;t--){var r=n[t][Q];if(!r.P)switch(r.i){case 5:a(r)&&k(r);break;case 4:o(r)&&k(r)}}}function o(n){for(var t=n.t,r=n.k,e=nn(r),i=e.length-1;i>=0;i--){var o=e[i];if(o!==Q){var a=t[o];if(void 0===a&&!u(t,o))return!0;var f=r[o],s=f&&f[Q];if(s?s.t!==a:!c(f,a))return!0}}var v=!!t[Q];return e.length!==nn(t).length+(v?0:1)}function a(n){var t=n.k;if(t.length!==n.t.length)return!0;var r=Object.getOwnPropertyDescriptor(t,t.length-1);return!(!r||r.get)}function f(t){t.O&&n(3,JSON.stringify(p(t)))}var s={};m(\"ES5\",{J:function(n,t){var e=Array.isArray(n),i=function(n,t){if(n){for(var e=Array(t.length),i=0;i<t.length;i++)Object.defineProperty(e,\"\"+i,r(i,!0));return e}var o=tn(t);delete o[Q];for(var u=nn(o),a=0;a<u.length;a++){var f=u[a];o[f]=r(f,n||!!o[f].enumerable)}return Object.create(Object.getPrototypeOf(t),o)}(e,n),o={i:e?5:4,A:t?t.A:_(),P:!1,I:!1,D:{},l:t,t:n,k:i,o:null,O:!1,C:!1};return Object.defineProperty(i,Q,{value:o,writable:!0}),i},S:function(n,r,o){o?t(r)&&r[Q].A===n&&e(n.p):(n.u&&function n(t){if(t&&\"object\"==typeof t){var r=t[Q];if(r){var e=r.t,o=r.k,f=r.D,c=r.i;if(4===c)i(o,(function(t){t!==Q&&(void 0!==e[t]||u(e,t)?f[t]||n(o[t]):(f[t]=!0,k(r)))})),i(e,(function(n){void 0!==o[n]||u(o,n)||(f[n]=!1,k(r))}));else if(5===c){if(a(r)&&(k(r),f.length=!0),o.length<e.length)for(var s=o.length;s<e.length;s++)f[s]=!1;else for(var v=e.length;v<o.length;v++)f[v]=!0;for(var p=Math.min(o.length,e.length),l=0;l<p;l++)void 0===f[l]&&n(o[l])}}}}(n.p[0]),e(n.p))},K:function(n){return 4===n.i?o(n):a(n)}})}function T(){function e(n){if(!r(n))return n;if(Array.isArray(n))return n.map(e);if(s(n))return new Map(Array.from(n.entries()).map((function(n){return[n[0],e(n[1])]})));if(v(n))return new Set(Array.from(n).map(e));var t=Object.create(Object.getPrototypeOf(n));for(var i in n)t[i]=e(n[i]);return u(n,L)&&(t[L]=n[L]),t}function f(n){return t(n)?e(n):n}var c=\"add\";m(\"Patches\",{$:function(t,r){return r.forEach((function(r){for(var i=r.path,u=r.op,f=t,s=0;s<i.length-1;s++){var v=o(f),p=\"\"+i[s];0!==v&&1!==v||\"__proto__\"!==p&&\"constructor\"!==p||n(24),\"function\"==typeof f&&\"prototype\"===p&&n(24),\"object\"!=typeof(f=a(f,p))&&n(15,i.join(\"/\"))}var l=o(f),d=e(r.value),h=i[i.length-1];switch(u){case\"replace\":switch(l){case 2:return f.set(h,d);case 3:n(16);default:return f[h]=d}case c:switch(l){case 1:return f.splice(h,0,d);case 2:return f.set(h,d);case 3:return f.add(d);default:return f[h]=d}case\"remove\":switch(l){case 1:return f.splice(h,1);case 2:return f.delete(h);case 3:return f.delete(r.value);default:return delete f[h]}default:n(17,u)}})),t},R:function(n,t,r,e){switch(n.i){case 0:case 4:case 2:return function(n,t,r,e){var o=n.t,s=n.o;i(n.D,(function(n,i){var v=a(o,n),p=a(s,n),l=i?u(o,n)?\"replace\":c:\"remove\";if(v!==p||\"replace\"!==l){var d=t.concat(n);r.push(\"remove\"===l?{op:l,path:d}:{op:l,path:d,value:p}),e.push(l===c?{op:\"remove\",path:d}:\"remove\"===l?{op:c,path:d,value:f(v)}:{op:\"replace\",path:d,value:f(v)})}}))}(n,t,r,e);case 5:case 1:return function(n,t,r,e){var i=n.t,o=n.D,u=n.o;if(u.length<i.length){var a=[u,i];i=a[0],u=a[1];var s=[e,r];r=s[0],e=s[1]}for(var v=0;v<i.length;v++)if(o[v]&&u[v]!==i[v]){var p=t.concat([v]);r.push({op:\"replace\",path:p,value:f(u[v])}),e.push({op:\"replace\",path:p,value:f(i[v])})}for(var l=i.length;l<u.length;l++){var d=t.concat([l]);r.push({op:c,path:d,value:f(u[l])})}i.length<u.length&&e.push({op:\"replace\",path:t.concat([\"length\"]),value:i.length})}(n,t,r,e);case 3:return function(n,t,r,e){var i=n.t,o=n.o,u=0;i.forEach((function(n){if(!o.has(n)){var i=t.concat([u]);r.push({op:\"remove\",path:i,value:n}),e.unshift({op:c,path:i,value:n})}u++})),u=0,o.forEach((function(n){if(!i.has(n)){var o=t.concat([u]);r.push({op:c,path:o,value:n}),e.unshift({op:\"remove\",path:o,value:n})}u++}))}(n,t,r,e)}},M:function(n,t,r,e){r.push({op:\"replace\",path:[],value:t===H?void 0:t}),e.push({op:\"replace\",path:[],value:n.t})}})}function C(){function t(n,t){function r(){this.constructor=n}a(n,t),n.prototype=(r.prototype=t.prototype,new r)}function e(n){n.o||(n.D=new Map,n.o=new Map(n.t))}function o(n){n.o||(n.o=new Set,n.t.forEach((function(t){if(r(t)){var e=R(n.A.h,t,n);n.p.set(t,e),n.o.add(e)}else n.o.add(t)})))}function u(t){t.O&&n(3,JSON.stringify(p(t)))}var a=function(n,t){return(a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,t){n.__proto__=t}||function(n,t){for(var r in t)t.hasOwnProperty(r)&&(n[r]=t[r])})(n,t)},f=function(){function n(n,t){return this[Q]={i:2,l:t,A:t?t.A:_(),P:!1,I:!1,o:void 0,D:void 0,t:n,k:this,C:!1,O:!1},this}t(n,Map);var o=n.prototype;return Object.defineProperty(o,\"size\",{get:function(){return p(this[Q]).size}}),o.has=function(n){return p(this[Q]).has(n)},o.set=function(n,t){var r=this[Q];return u(r),p(r).has(n)&&p(r).get(n)===t||(e(r),k(r),r.D.set(n,!0),r.o.set(n,t),r.D.set(n,!0)),this},o.delete=function(n){if(!this.has(n))return!1;var t=this[Q];return u(t),e(t),k(t),t.D.set(n,!1),t.o.delete(n),!0},o.clear=function(){var n=this[Q];u(n),p(n).size&&(e(n),k(n),n.D=new Map,i(n.t,(function(t){n.D.set(t,!1)})),n.o.clear())},o.forEach=function(n,t){var r=this;p(this[Q]).forEach((function(e,i){n.call(t,r.get(i),i,r)}))},o.get=function(n){var t=this[Q];u(t);var i=p(t).get(n);if(t.I||!r(i))return i;if(i!==t.t.get(n))return i;var o=R(t.A.h,i,t);return e(t),t.o.set(n,o),o},o.keys=function(){return p(this[Q]).keys()},o.values=function(){var n,t=this,r=this.keys();return(n={})[V]=function(){return t.values()},n.next=function(){var n=r.next();return n.done?n:{done:!1,value:t.get(n.value)}},n},o.entries=function(){var n,t=this,r=this.keys();return(n={})[V]=function(){return t.entries()},n.next=function(){var n=r.next();if(n.done)return n;var e=t.get(n.value);return{done:!1,value:[n.value,e]}},n},o[V]=function(){return this.entries()},n}(),c=function(){function n(n,t){return this[Q]={i:3,l:t,A:t?t.A:_(),P:!1,I:!1,o:void 0,t:n,k:this,p:new Map,O:!1,C:!1},this}t(n,Set);var r=n.prototype;return Object.defineProperty(r,\"size\",{get:function(){return p(this[Q]).size}}),r.has=function(n){var t=this[Q];return u(t),t.o?!!t.o.has(n)||!(!t.p.has(n)||!t.o.has(t.p.get(n))):t.t.has(n)},r.add=function(n){var t=this[Q];return u(t),this.has(n)||(o(t),k(t),t.o.add(n)),this},r.delete=function(n){if(!this.has(n))return!1;var t=this[Q];return u(t),o(t),k(t),t.o.delete(n)||!!t.p.has(n)&&t.o.delete(t.p.get(n))},r.clear=function(){var n=this[Q];u(n),p(n).size&&(o(n),k(n),n.o.clear())},r.values=function(){var n=this[Q];return u(n),o(n),n.o.values()},r.entries=function(){var n=this[Q];return u(n),o(n),n.o.entries()},r.keys=function(){return this.values()},r[V]=function(){return this.values()},r.forEach=function(n,t){for(var r=this.values(),e=r.next();!e.done;)n.call(t,e.value,e.value,this),e=r.next()},n}();m(\"MapSet\",{N:function(n,t){return new f(n,t)},T:function(n,t){return new c(n,t)}})}function J(){N(),C(),T()}function K(n){return n}function $(n){return n}var G,U,W=\"undefined\"!=typeof Symbol&&\"symbol\"==typeof Symbol(\"x\"),X=\"undefined\"!=typeof Map,q=\"undefined\"!=typeof Set,B=\"undefined\"!=typeof Proxy&&void 0!==Proxy.revocable&&\"undefined\"!=typeof Reflect,H=W?Symbol.for(\"immer-nothing\"):((G={})[\"immer-nothing\"]=!0,G),L=W?Symbol.for(\"immer-draftable\"):\"__$immer_draftable\",Q=W?Symbol.for(\"immer-state\"):\"__$immer_state\",V=\"undefined\"!=typeof Symbol&&Symbol.iterator||\"@@iterator\",Y={0:\"Illegal state\",1:\"Immer drafts cannot have computed properties\",2:\"This object has been frozen and should not be mutated\",3:function(n){return\"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \"+n},4:\"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",5:\"Immer forbids circular references\",6:\"The first or second argument to `produce` must be a function\",7:\"The third argument to `produce` must be a function or undefined\",8:\"First argument to `createDraft` must be a plain object, an array, or an immerable object\",9:\"First argument to `finishDraft` must be a draft returned by `createDraft`\",10:\"The given draft is already finalized\",11:\"Object.defineProperty() cannot be used on an Immer draft\",12:\"Object.setPrototypeOf() cannot be used on an Immer draft\",13:\"Immer only supports deleting array indices\",14:\"Immer only supports setting array indices and the 'length' property\",15:function(n){return\"Cannot apply patch, path doesn't resolve: \"+n},16:'Sets cannot have \"replace\" patches.',17:function(n){return\"Unsupported patch operation: \"+n},18:function(n){return\"The plugin for '\"+n+\"' has not been loaded into Immer. To enable the plugin, import and call `enable\"+n+\"()` when initializing your application.\"},20:\"Cannot use proxies if Proxy, Proxy.revocable or Reflect are not available\",21:function(n){return\"produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '\"+n+\"'\"},22:function(n){return\"'current' expects a draft, got: \"+n},23:function(n){return\"'original' expects a draft, got: \"+n},24:\"Patching reserved attributes like __proto__, prototype and constructor is not allowed\"},Z=\"\"+Object.prototype.constructor,nn=\"undefined\"!=typeof Reflect&&Reflect.ownKeys?Reflect.ownKeys:void 0!==Object.getOwnPropertySymbols?function(n){return Object.getOwnPropertyNames(n).concat(Object.getOwnPropertySymbols(n))}:Object.getOwnPropertyNames,tn=Object.getOwnPropertyDescriptors||function(n){var t={};return nn(n).forEach((function(r){t[r]=Object.getOwnPropertyDescriptor(n,r)})),t},rn={},en={get:function(n,t){if(t===Q)return n;var e=p(n);if(!u(e,t))return function(n,t,r){var e,i=I(t,r);return i?\"value\"in i?i.value:null===(e=i.get)||void 0===e?void 0:e.call(n.k):void 0}(n,e,t);var i=e[t];return n.I||!r(i)?i:i===z(n.t,t)?(E(n),n.o[t]=R(n.A.h,i,n)):i},has:function(n,t){return t in p(n)},ownKeys:function(n){return Reflect.ownKeys(p(n))},set:function(n,t,r){var e=I(p(n),t);if(null==e?void 0:e.set)return e.set.call(n.k,r),!0;if(!n.P){var i=z(p(n),t),o=null==i?void 0:i[Q];if(o&&o.t===r)return n.o[t]=r,n.D[t]=!1,!0;if(c(r,i)&&(void 0!==r||u(n.t,t)))return!0;E(n),k(n)}return n.o[t]===r&&\"number\"!=typeof r&&(void 0!==r||t in n.o)||(n.o[t]=r,n.D[t]=!0,!0)},deleteProperty:function(n,t){return void 0!==z(n.t,t)||t in n.t?(n.D[t]=!1,E(n),k(n)):delete n.D[t],n.o&&delete n.o[t],!0},getOwnPropertyDescriptor:function(n,t){var r=p(n),e=Reflect.getOwnPropertyDescriptor(r,t);return e?{writable:!0,configurable:1!==n.i||\"length\"!==t,enumerable:e.enumerable,value:r[t]}:e},defineProperty:function(){n(11)},getPrototypeOf:function(n){return Object.getPrototypeOf(n.t)},setPrototypeOf:function(){n(12)}},on={};i(en,(function(n,t){on[n]=function(){return arguments[0]=arguments[0][0],t.apply(this,arguments)}})),on.deleteProperty=function(t,r){return\"production\"!==process.env.NODE_ENV&&isNaN(parseInt(r))&&n(13),en.deleteProperty.call(this,t[0],r)},on.set=function(t,r,e){return\"production\"!==process.env.NODE_ENV&&\"length\"!==r&&isNaN(parseInt(r))&&n(14),en.set.call(this,t[0],r,e,t[0])};var un=function(){function e(t){var e=this;this.g=B,this.F=!0,this.produce=function(t,i,o){if(\"function\"==typeof t&&\"function\"!=typeof i){var u=i;i=t;var a=e;return function(n){var t=this;void 0===n&&(n=u);for(var r=arguments.length,e=Array(r>1?r-1:0),o=1;o<r;o++)e[o-1]=arguments[o];return a.produce(n,(function(n){var r;return(r=i).call.apply(r,[t,n].concat(e))}))}}var f;if(\"function\"!=typeof i&&n(6),void 0!==o&&\"function\"!=typeof o&&n(7),r(t)){var c=w(e),s=R(e,t,void 0),v=!0;try{f=i(s),v=!1}finally{v?O(c):g(c)}return\"undefined\"!=typeof Promise&&f instanceof Promise?f.then((function(n){return j(c,o),P(n,c)}),(function(n){throw O(c),n})):(j(c,o),P(f,c))}if(!t||\"object\"!=typeof t){if((f=i(t))===H)return;return void 0===f&&(f=t),e.F&&d(f,!0),f}n(21,t)},this.produceWithPatches=function(n,t){return\"function\"==typeof n?function(t){for(var r=arguments.length,i=Array(r>1?r-1:0),o=1;o<r;o++)i[o-1]=arguments[o];return e.produceWithPatches(t,(function(t){return n.apply(void 0,[t].concat(i))}))}:[e.produce(n,t,(function(n,t){r=n,i=t})),r,i];var r,i},\"boolean\"==typeof(null==t?void 0:t.useProxies)&&this.setUseProxies(t.useProxies),\"boolean\"==typeof(null==t?void 0:t.autoFreeze)&&this.setAutoFreeze(t.autoFreeze)}var i=e.prototype;return i.createDraft=function(e){r(e)||n(8),t(e)&&(e=D(e));var i=w(this),o=R(this,e,void 0);return o[Q].C=!0,g(i),o},i.finishDraft=function(t,r){var e=t&&t[Q];\"production\"!==process.env.NODE_ENV&&(e&&e.C||n(9),e.I&&n(10));var i=e.A;return j(i,r),P(void 0,i)},i.setAutoFreeze=function(n){this.F=n},i.setUseProxies=function(t){t&&!B&&n(20),this.g=t},i.applyPatches=function(n,r){var e;for(e=r.length-1;e>=0;e--){var i=r[e];if(0===i.path.length&&\"replace\"===i.op){n=i.value;break}}var o=b(\"Patches\").$;return t(n)?o(n,r):this.produce(n,(function(n){return o(n,r.slice(e+1))}))},e}(),an=new un,fn=an.produce,cn=an.produceWithPatches.bind(an),sn=an.setAutoFreeze.bind(an),vn=an.setUseProxies.bind(an),pn=an.applyPatches.bind(an),ln=an.createDraft.bind(an),dn=an.finishDraft.bind(an);export default fn;export{un as Immer,pn as applyPatches,K as castDraft,$ as castImmutable,ln as createDraft,D as current,J as enableAllPlugins,N as enableES5,C as enableMapSet,T as enablePatches,dn as finishDraft,d as freeze,L as immerable,t as isDraft,r as isDraftable,H as nothing,e as original,fn as produce,cn as produceWithPatches,sn as setAutoFreeze,vn as setUseProxies};\n//# sourceMappingURL=immer.esm.js.map\n","import produce, { immerable, castDraft, setAutoFreeze, enablePatches } from 'immer';\nimport bigInt, { BigInteger } from 'big-integer';\n\nsetAutoFreeze(false);\n\nenablePatches();\n\nfunction sortBigInt(a: BigInteger, b: BigInteger) {\n  if (a.lt(b)) {\n    return 1;\n  } else if (a.eq(b)) {\n    return 0;\n  } else {\n    return -1;\n  }\n}\nexport class BigIntOrderedMap<V> implements Iterable<[BigInteger, V]> {\n  root: Record<string, V> = {}\n  cachedIter: [BigInteger, V][] | null = null;\n  [immerable] = true;\n\n  constructor(items: [BigInteger, V][] = []) {\n    items.forEach(([key, val]) => {\n      this.set(key, val);\n    });\n  }\n\n  get size() {\n    if(this.cachedIter) {\n      return this.cachedIter.length;\n    }\n    return this.generateCachedIter().length;\n  }\n\n  get(key: BigInteger) {\n    return this.root[key.toString()] ?? null;\n  }\n\n  gas(items: [BigInteger, V][]) {\n    return produce(this, (draft) => {\n      items.forEach(([key, value]) => {\n        draft.root[key.toString()] = castDraft(value);\n      });\n      draft.cachedIter = null;\n    },\n    (patches) => {\n      // console.log(`gassed with ${JSON.stringify(patches, null, 2)}`);\n    });\n  }\n\n  set(key: BigInteger, value: V) {\n    return produce(this, (draft) => {\n      draft.root[key.toString()] = castDraft(value);\n      draft.cachedIter = null;\n    });\n  }\n\n  clear() {\n    return produce(this, (draft) => {\n      draft.cachedIter = [];\n      draft.root = {};\n    });\n  }\n\n  has(key: BigInteger) {\n    return key.toString() in this.root;\n  }\n\n  delete(key: BigInteger) {\n    const result = produce(this, (draft) => {\n      delete draft.root[key.toString()];\n      draft.cachedIter = null;\n    });\n    return result;\n  }\n\n  [Symbol.iterator](): IterableIterator<[BigInteger, V]> {\n    let idx = 0;\n    const result = this.generateCachedIter();\n    return {\n      [Symbol.iterator]: this[Symbol.iterator],\n      next: (): IteratorResult<[BigInteger, V]> => {\n        if (idx < result.length) {\n          return { value: result[idx++], done: false };\n        }\n        return { done: true, value: null };\n      }\n    };\n  }\n\n  peekLargest() {\n    const sorted = Array.from(this);\n    return sorted[0] as [BigInteger, V] | null;\n  }\n\n  peekSmallest() {\n    const sorted = Array.from(this);\n    return sorted[sorted.length - 1] as [BigInteger, V] | null;\n  }\n\n  keys() {\n    return Array.from(this).map(([k,v]) => k);\n  }\n\n  generateCachedIter() {\n    if(this.cachedIter) {\n      return [...this.cachedIter];\n    }\n    const result = Object.keys(this.root).map((key) => {\n      const num = bigInt(key);\n      return [num, this.root[key]] as [BigInteger, V];\n    }).sort(([a], [b]) => sortBigInt(a,b));\n    this.cachedIter = result;\n    return [...result];\n  }\n}\n\n","import produce, { immerable, castDraft, setAutoFreeze, enablePatches } from 'immer';\nimport bigInt, { BigInteger } from 'big-integer';\n\nsetAutoFreeze(false);\n\nenablePatches();\n\nexport function stringToArr(str: string) {\n  return str.split('/').slice(1).map((ind) => {\n    return bigInt(ind);\n  });\n}\n\nexport function arrToString(arr: BigInteger[]) {\n  let string = '';\n  arr.forEach((key) => {\n    string = string + `/${key.toString()}`;\n  });\n  return string;\n}\n\nfunction sorted(a: BigInteger[], b: BigInteger[], reversed = false) {\n  const getSort = sortBigIntArr(a, b);\n  if (reversed) {\n    return getSort * -1;\n  } else {\n    return getSort;\n  }\n}\n\nexport function sortBigIntArr(a: BigInteger[], b: BigInteger[]) {\n  const aLen = a.length;\n  const bLen = b.length;\n\n  const aCop = a.slice(0);\n  const bCop = b.slice(0);\n  aCop.reverse();\n  bCop.reverse();\n\n  let i = 0;\n  while (i < aLen && i < bLen) {\n    if (aCop[i].lt(bCop[i])) {\n      return 1;\n    } else if (aCop[i].gt(bCop[i])) {\n      return -1;\n    } else {\n      i++;\n    }\n  }\n\n  return bLen - aLen;\n}\n\nexport class BigIntArrayOrderedMap<V> implements Iterable<[BigInteger[], V]> {\n  root: Record<string, V> = {}\n  cachedIter: [BigInteger[], V][] | null = null;\n  [immerable] = true;\n  reversed = false;\n\n  constructor(items: [BigInteger[], V][] = [], reversed = false) {\n    items.forEach(([key, val]) => {\n      this.set(key, val);\n    });\n    this.reversed = reversed;\n  }\n\n  get size() {\n    return Object.keys(this.root).length;\n  }\n\n  get(key: BigInteger[]) {\n    return this.root[arrToString(key)] ?? null;\n  }\n\n  gas(items: [BigInteger[], V][]) {\n    return produce(this, (draft) => {\n      items.forEach(([key, value]) => {\n        draft.root[arrToString(key)] = castDraft(value);\n      });\n      draft.generateCachedIter();\n    },\n    (patches) => {\n      // console.log(`gassed with ${JSON.stringify(patches, null, 2)}`);\n    });\n  }\n\n  set(key: BigInteger[], value: V) {\n    return produce(this, (draft) => {\n      draft.root[arrToString(key)] = castDraft(value);\n      draft.cachedIter = null;\n    });\n  }\n\n  clear() {\n    return produce(this, (draft) => {\n      draft.cachedIter = [];\n      draft.root = {};\n    });\n  }\n\n  has(key: BigInteger[]) {\n    return arrToString(key) in this.root;\n  }\n\n  delete(key: BigInteger[]) {\n    const result = produce(this, (draft) => {\n      delete draft.root[arrToString(key)];\n      draft.cachedIter = null;\n    });\n    return result;\n  }\n\n  [Symbol.iterator](): IterableIterator<[BigInteger[], V]> {\n    let idx = 0;\n    const result = this.generateCachedIter();\n    return {\n      [Symbol.iterator]: this[Symbol.iterator],\n      next: (): IteratorResult<[BigInteger[], V]> => {\n        if (idx < result.length) {\n          return { value: result[idx++], done: false };\n        }\n        return { done: true, value: null };\n      }\n    };\n  }\n\n  peekLargest() {\n    const sorted = Array.from(this);\n    return sorted[0] as [BigInteger[], V] | null;\n  }\n\n  peekSmallest() {\n    const sorted = Array.from(this);\n    return sorted[sorted.length - 1] as [BigInteger[], V] | null;\n  }\n\n  keys() {\n    return Array.from(this).map(([k,v]) => k);\n  }\n\n  generateCachedIter() {\n    if(this.cachedIter) {\n      return [...this.cachedIter];\n    }\n    const result = Object.keys(this.root).map((key) => {\n      return [stringToArr(key), this.root[key]] as [BigInteger[], V];\n    }).sort(([a], [b]) => sorted(a, b, this.reversed));\n    this.cachedIter = result;\n    return [...result];\n  }\n}\n\n","import { Poke, Scry } from '../lib';\nimport { Pike } from './types';\n\nexport const getPikes: Scry = {\n  app: 'hood',\n  path: '/kiln/pikes'\n};\n\n/**\n * Install a foreign desk\n */\nexport function kilnInstall(\n  ship: string,\n  desk: string,\n  local?: string\n): Poke<any> {\n  return {\n    app: 'hood',\n    mark: 'kiln-install',\n    json: {\n      ship,\n      desk,\n      local: local || desk\n    }\n  };\n}\n\n/**\n * Sync with a foreign desk\n */\nexport function kilnSync(\n  ship: string,\n  desk: string,\n  local?: string\n): Poke<any> {\n  return {\n    app: 'hood',\n    mark: 'kiln-sync',\n    json: {\n      ship,\n      desk,\n      local: local || desk\n    }\n  };\n}\n\n/**\n * Unsync with a foreign desk\n */\nexport function kilnUnsync(\n  ship: string,\n  desk: string,\n  local?: string\n): Poke<any> {\n  return {\n    app: 'hood',\n    mark: 'kiln-unsync',\n    json: {\n      ship,\n      desk,\n      local: local || desk\n    }\n  };\n}\n\n/**\n * Uninstall a desk\n */\nexport function kilnUninstall(\n  desk: string\n): Poke<any> {\n  return {\n    app: 'hood',\n    mark: 'kiln-uninstall',\n    json: desk\n  };\n}\n\nexport function kilnSuspend(\n  desk: string\n): Poke<any> {\n  return {\n    app: 'hood',\n    mark: 'kiln-suspend',\n    json: desk\n  };\n}\n\nexport function kilnRevive(\n  desk: string\n): Poke<any> {\n  return {\n    app: 'hood',\n    mark: 'kiln-revive',\n    json: desk\n  };\n}\n\nexport function kilnBump(): Poke<any> {\n  return {\n    app: 'hood',\n    mark: 'kiln-bump',\n    json: null,\n  };\n}\n\nexport function kilnPause(desk: string) {\n  return {\n    app: 'hood',\n    mark: 'kiln-pause',\n    json: desk\n  };\n}\n\nexport function kilnResume(desk: string) {\n  return {\n    app: 'hood',\n    mark: 'kiln-resume',\n    json: desk\n  };\n}\n\nexport const scryLag: Scry = ({ app: 'hood', path: '/kiln/lag' });\n\nexport function getPikePublisher(pike: Pike) {\n  return pike.sync?.ship;\n}\n","import { Poke, Scry } from '../lib';\nimport { Chad } from './types';\n\nexport function chadIsRunning(chad: Chad) {\n  return 'glob' in chad || 'site' in chad;\n}\n\nexport const scryCharges: Scry = {\n  app: 'docket',\n  path: '/charges'\n};\n\nexport const scryDockets: Scry = {\n  app: 'docket',\n  path: '/dockets'\n};\n\nexport const scryTreaties: Scry = {\n  app: 'treaty',\n  path: '/treaties'\n};\n\nexport const scryDefaultAlly: Scry = {\n  app: 'treaty',\n  path: '/default-ally'\n};\n\nexport const scryAllies: Scry = {\n  app: 'treaty',\n  path: '/allies'\n};\n\nexport const scryAllyTreaties = (ship: string): Scry => ({\n  app: 'treaty',\n  path: `/treaties/${ship}`\n});\n\n/**\n * Uninstall a desk, and remove docket\n */\nexport function docketUninstall(desk: string): Poke<string> {\n  return {\n    app: 'docket',\n    mark: 'docket-uninstall',\n    json: desk\n  };\n}\n\nexport function docketInstall(ship: string, desk: string): Poke<any> {\n  return {\n    app: 'docket',\n    mark: 'docket-install',\n    json: `${ship}/${desk}`\n  };\n}\n\nexport function allyShip(ship: string): Poke<any> {\n  return {\n    app: 'treaty',\n    mark: 'ally-update-0',\n    json: {\n      add: ship\n    }\n  };\n}\n","import { Poke, Scry } from 'lib';\nimport { Belt, Task, SessionTask } from './types';\n\nexport const pokeTask = (session: string, task: Task): Poke<SessionTask> => ({\n  app: 'herm',\n  mark: 'herm-task',\n  json: { session, ...task }\n});\n\nexport const pokeBelt = (\n  session: string,\n  belt: Belt\n): Poke<SessionTask> => pokeTask(session, { belt });\n\n//NOTE  scry will return string[]\nexport const scrySessions = (): Scry => ({\n  app: 'herm',\n  path: `/sessions`\n});\n"],"names":["storeAction","viewAction","undefined","chunk","this","global","BN","require$$0","muk","require$$1","F","ob","require$$2","require$$3","co","patp2dec","setAutoFreeze","enablePatches","immerable","castDraft"],"mappings":"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G,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,G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9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC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AC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACtD,IAAI,EAAE,IAAI,SAAS,CAAC;AACpB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACtD,IAAI,EAAE,IAAI,SAAS,CAAC;AACpB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACtD,IAAI,EAAE,IAAI,SAAS,CAAC;AACpB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACtD,IAAI,EAAE,IAAI,SAAS,CAAC;AACpB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACtD,IAAI,EAAE,IAAI,SAAS,CAAC;AACpB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC5D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACvD,IAAI,GAAG,IAAI,SAAS,CAAC;AACrB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC5D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACvD,IAAI,GAAG,IAAI,SAAS,CAAC;AACrB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC5D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACvD,IAAI,GAAG,IAAI,SAAS,CAAC;AACrB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC5D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACvD,IAAI,GAAG,IAAI,SAAS,CAAC;AACrB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IA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AE,OAAO,GAAG,IAAI,OAAO,IAAI,GAAG,IAAI,MAAM,CAAC;AACzC,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,QAAQ,CAAC,KAAK,EAAE;AACzB,EAAE,OAAO,OAAO,KAAK,IAAI,QAAQ;AACjC,IAAI,KAAK,GAAG,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,gBAAgB,CAAC;AAC9D,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,QAAQ,CAAC,KAAK,EAAE;AACzB,EAAE,IAAI,IAAI,GAAG,OAAO,KAAK,CAAC;AAC1B,EAAE,OAAO,CAAC,CAAC,KAAK,KAAK,IAAI,IAAI,QAAQ,IAAI,IAAI,IAAI,UAAU,CAAC,CAAC;AAC7D,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,YAAY,CAAC,KAAK,EAAE;AAC7B,EAAE,OAAO,CAAC,CAAC,KAAK,IAAI,OAAO,KAAK,IAAI,QAAQ,CAAC;AAC7C,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,QAAQ,CAAC,KAAK,EAAE;AACzB,EAAE,OAAO,OAAO,KAAK,IAAI,QAAQ;AACjC,KAAK,YAAY,CAAC,KAAK,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,CAAC;AACrE,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,GAAG,eAAe,CAAC,WAAW,EAAE,OAAO,SAAS,CAAC,EAAE,EAAE,CAAC,GAAG,eAAe,GAAG,SAAS,KAAK,EAAE;AAC1G,EAAE,OAAO,YAAY,CAAC,KAAK,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC;AACpE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AAChD,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,WAAW,CAAC,KAAK,EAAE;AAC5B,EAAE,OAAO,KAAK,IAAI,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACvE,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,GAAG,cAAc,IAAI,SAAS,CAAC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE;AAC/B,EAAE,OAAO,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACnC,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC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,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC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"}