{"_id":"inverse-kinematics","_rev":"27-551d95a5121881a9401c357a0dab7446","name":"inverse-kinematics","dist-tags":{"latest":"0.1.3"},"versions":{"0.0.0":{"name":"inverse-kinematics","version":"0.0.0","author":{"name":"Jae Perris"},"description":"Inverse kinematics for 2D and 3D applications","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"test":"jest --watch","build":"tsc","typecheck":"tsc --noEmit && cd example && tsc --noEmit","prepublish":"npm run typecheck && npm run build","eslint":"eslint --fix src/**/*.ts"},"repository":{"type":"git","url":"git+https://github.com/tmf-code/ik.git"},"license":"MIT","homepage":"https://github.com/tmf-code/ik#readme","devDependencies":{"@types/jest":"^26.0.23","@typescript-eslint/eslint-plugin":"^4.27.0","@typescript-eslint/parser":"^4.27.0","eslint":"^7.28.0","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","prettier":"^2.3.1","ts-jest":"^27.0.3","typescript":"^4.3.3"},"gitHead":"2ebe78da61dc0fe51a8b23ab054295fba91923a2","bugs":{"url":"https://github.com/tmf-code/ik/issues"},"_id":"inverse-kinematics@0.0.0","_nodeVersion":"14.17.0","_npmVersion":"7.15.1","dist":{"integrity":"sha512-wk4OLJer1sXXizNOPWXEo0dqMsSfGf9RR2nMiPWnWG2e+lgIBaHzTUKzJ1EvnFPKRaMZz4wIq7S7cFFI9kgMQA==","shasum":"8f3fa4a86dcbb4cbe09c126b5e0543d3514994e2","tarball":"https://registry.npmjs.org/inverse-kinematics/-/inverse-kinematics-0.0.0.tgz","fileCount":64,"unpackedSize":193255,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgy1/xCRA9TVsSAnZWagAAz7sP+gIqWLmcSwKyEFsrA7R3\neVD0x8fCxkhqL40oCn7hzV24cXEglat+f4ql8NFPNeLpBMD2Mw0o+1SHJboq\n2Acz8r9UlZdsSm5Jp/NXjHaHhXf1m+33fz9V3c2KgXusQwEDSJnNnB/iud+5\nQdgcDtmH8wYL2ukfS8fM08iKRZFu5iDtre7Xpv9ckJpXtR30u/b/bWrOIke6\ngyIPw0Lr74dWOLSXH0m30s+5Stmg/vV16HmUz9UtLU5P7xbcqqINLi/kVMdr\no/2aHtvJYw3qh2z8GKvTElSljTNMgBjh0Un/S4Cy95VGO1v3YToDmNppDFtP\nvvJWF2zXvyzqKzKSnfRCcIvMPiPjcPl5XZbgnCyqOROa1iimWQeiB6kZNUSP\n3c8rEpZB4prXNCyegqK5L0KvQSraot/7HJwP7NsoqbKe0X3jBGDwJHBdkNHI\n0j47lFsQkfx5oNx/R6A0Ml8it+GfnJTyW8Oexkr2NcjyZ2TmGuMAOCm1SfH1\nqqhP/Jfla++0fmtw1AYyi//SG5t10Cb/+6Xt4j5dKXTj0z4TBxpuGUMN9a1Y\nZZucfWf2lp9mDH/mQAA8w87mCLFceXtqDflI4bsIXrE2Tw+Gb7YD8hCgXvGg\nHvyiThmlYdSaa4FfVCcT+LHsN5QDmm1uDCGWROAGO5zq/nsSsGDbS8+V3KDl\ns0nG\r\n=H9YO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCDTk5XIZ4sZAV3NziwbgaAM2PPE/jKIv66JQBAj3vrIQIhAPzAr07EXW1rGyWismRKDi5v1jkZj4oQe92pcHx+k/jH"}]},"_npmUser":{"name":"honga","email":"jae.perris@gmail.com"},"directories":{},"maintainers":[{"name":"honga","email":"jae.perris@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/inverse-kinematics_0.0.0_1623941105253_0.22197619212604836"},"_hasShrinkwrap":false},"0.0.1":{"name":"inverse-kinematics","version":"0.0.1","author":{"name":"Jae Perris"},"description":"Inverse kinematics for 2D and 3D applications","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"test":"jest --watch","build":"tsc","typecheck":"tsc --noEmit && cd example && tsc --noEmit","prepublish":"npm run typecheck && npm run build","eslint":"eslint --fix src/**/*.ts"},"repository":{"type":"git","url":"git+https://github.com/tmf-code/ik.git"},"license":"MIT","homepage":"https://github.com/tmf-code/ik#readme","devDependencies":{"@types/jest":"^26.0.23","@typescript-eslint/eslint-plugin":"^4.27.0","@typescript-eslint/parser":"^4.27.0","eslint":"^7.28.0","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","prettier":"^2.3.1","ts-jest":"^27.0.3","typescript":"^4.3.3"},"gitHead":"2a2583db77d605dc57f5e0c348482ff426e9b0b2","bugs":{"url":"https://github.com/tmf-code/ik/issues"},"_id":"inverse-kinematics@0.0.1","_nodeVersion":"14.17.0","_npmVersion":"7.15.1","dist":{"integrity":"sha512-DqjH5df6yMj0mvLXgOEsl+/EqKZ71N0lrnVSFgfWYKVS6A1egYBO/PdrI+wMKtl5S6g8bk/DAUN71wtHk506wg==","shasum":"621f5d56778b1dd201a1afe0ee58f5adf61f51f9","tarball":"https://registry.npmjs.org/inverse-kinematics/-/inverse-kinematics-0.0.1.tgz","fileCount":64,"unpackedSize":194413,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgy2jwCRA9TVsSAnZWagAAd1QP/i9C9DL+GCHTfpioi+NA\nOhCcZzo/ZSVN0nMK5FtKYZeUEEUjfzmrKbU4mMtZJFECML+lw+x5DnuWqh+Y\nS8uIYalw0hw+lc8ooGH8VSR16uAwcFRjd2BDZcTokPrdXInjTIOlqcPmIB3/\nVr7DaUn+YdOrkvC0BHdUKmkClTy2KRYYI9bVm1aObRwGllKrfu3b8Zke3K7h\nnS5x/ExUg8ZYmh34GVH4bQkSEBVs1BlWHuHlthD7Z9L9b0ALl0Qy2INv1kof\nGe+oqkACVZPp8odBKfaNPpiA+KDcN1V1dt5RCvSignEuMTkx+pUF1UlCds8G\nI81r8p9E8B/YqwVEizzW7hcrwV2mjA4AONKu3yKuPeg7aDvA8laY0mFPeqRT\nhHWMLMvzf3jfUK2T1wi2YG35MIIqLTcKZ9cqlrg0JWQHXk2XCjJgAo/nwgfH\nKWexmJn4n+Gl95HgBbMfQKvSvPDDZCoc4RCDW8EW2gwIs69KZiBfx+5vKXcC\nuvJiOQXyuXy7gd4AHWFNR/8gW3YNo2VUxHBmd4uNyQ/SFYhoBsJ0zgPv94iZ\nlRRCx717oxjee0jb3wMoXqq0pztNz8ww2WOQmwQmPN7W01fpxLlVuaraufYg\n0DflLfqO/7ki8XbHB8t2J3d2o3ObyKHv2Dwhq4NdRPLlz7V3kmefqoRXF6Ym\nv7aC\r\n=rwmh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEz+vZ9PQkNLJICcJ6nVoxfMz/BKjpUH/yoYSQH2NOzXAiAJ1Ey7u4ejNYbzPDCHz79XMNC7uPrPzQI/ISnzEQFNAQ=="}]},"_npmUser":{"name":"honga","email":"jae.perris@gmail.com"},"directories":{},"maintainers":[{"name":"honga","email":"jae.perris@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/inverse-kinematics_0.0.1_1623943408111_0.4580746617045608"},"_hasShrinkwrap":false},"0.0.2":{"name":"inverse-kinematics","version":"0.0.2","author":{"name":"Jae Perris"},"description":"Inverse kinematics for 2D and 3D applications","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"test":"jest --watch","build":"tsc","typecheck":"tsc --noEmit && cd example && tsc --noEmit","prepublish":"npm run typecheck && npm run build","eslint":"eslint --fix src/**/*.ts"},"repository":{"type":"git","url":"git+https://github.com/tmf-code/ik.git"},"license":"MIT","homepage":"https://github.com/tmf-code/ik#readme","devDependencies":{"@types/jest":"^26.0.23","@typescript-eslint/eslint-plugin":"^4.27.0","@typescript-eslint/parser":"^4.27.0","eslint":"^7.28.0","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","prettier":"^2.3.1","ts-jest":"^27.0.3","typescript":"^4.3.3"},"gitHead":"bc99cda7bf7c13e1ad49ce41152ee184b3444d3b","bugs":{"url":"https://github.com/tmf-code/ik/issues"},"_id":"inverse-kinematics@0.0.2","_nodeVersion":"14.17.0","_npmVersion":"7.15.1","dist":{"integrity":"sha512-hF9Mf93hVgw54yxyCAihecKfPZ2oCuI7r+izwVe0jzxglCKEL4BXGfhE09768AArQmU5xWhA4wD6uE+geVfwUQ==","shasum":"d2b06dbf48be248f69cefe25c02e41560996ccdf","tarball":"https://registry.npmjs.org/inverse-kinematics/-/inverse-kinematics-0.0.2.tgz","fileCount":37,"unpackedSize":61187,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgy2otCRA9TVsSAnZWagAAImkQAJIZCeoU5MnZBY7MXwfP\nOLScqxVx6c+9SMTbuGwUFfAM1lG9lIQbP1SPhNUOLgllVUT9Cc74btbvZDld\ndIuEq/fsIyQpYrh9E916cpU6h6G7e06SHB0lwC6UkBnkRGvEAe9r2VJLTvBY\nKniBR4aPl5R9JpaAWjHa71/+3DthVezKCv93Xnu9Nn7BslWJJN7c6qWQ9hds\ngymTpv2Z5B3DeS6cPLDYRXRihI9beTaQK+wQsY6kgpBAiiuy7JRIBqQACcTW\nAH7BFlnp+7e0KA7rJJ/XmWMR6TEa9oCfUkqTVSWTvNv5x7q1m4lRZIoDXXxO\ns5Ai2qxED7DRQxJgl3bKR1xc0F4uJtZIrmlN4HbnLAlg249VwgdrQlAOWWPV\nwFlUn6/QmMvde7PgXTuoXsu1alE7I9HeOVQstRfdVZxtZpAsI23fUUMcCiAh\ndjsdjVCMt4haRUXJvRmhf7YCUHbqbe3Iur8EJTQlXhh7ifP26N6LKrBzfTRC\nmmbWUtjbXqZ/+Px1lsCStnHZbDX5sYL/U2dh68BilsiyE8xL+LM5n9YvWuna\nSOtwAPXSb4UOa5oS2eEWgpXQ9P6l/7tm9kQxB0GfxHesMs3zV524+tS3IoZT\nVBW9HlQh+H7zVs7xg96vVSx5mdcZzpESY6q4ihQldUhw4PLRCX8sb+ZdxqBH\nj5As\r\n=dp48\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA/mUrxV2zS8fKXnXmFqHytvveJIbrh0VqmDteeIn3JcAiBysF3E2wkW7EzWEXV1eT+KABxN6oOBNJCojh/j3soAAQ=="}]},"_npmUser":{"name":"honga","email":"jae.perris@gmail.com"},"directories":{},"maintainers":[{"name":"honga","email":"jae.perris@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/inverse-kinematics_0.0.2_1623943724669_0.36047707063843304"},"_hasShrinkwrap":false},"0.0.3":{"name":"inverse-kinematics","version":"0.0.3","author":{"name":"Jae Perris"},"description":"Inverse kinematics for 2D and 3D applications","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"test":"jest --watch","build":"tsc","typecheck":"tsc --noEmit && cd example && tsc --noEmit","prepublish":"npm run typecheck && npm run build","eslint":"eslint --fix src/**/*.ts"},"repository":{"type":"git","url":"git+https://github.com/tmf-code/ik.git"},"license":"MIT","homepage":"https://github.com/tmf-code/ik#readme","devDependencies":{"@types/jest":"^26.0.23","@typescript-eslint/eslint-plugin":"^4.27.0","@typescript-eslint/parser":"^4.27.0","eslint":"^7.28.0","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","prettier":"^2.3.1","ts-jest":"^27.0.3","typescript":"^4.3.3"},"gitHead":"0b794dcb22a6758156931246b387e825ff1cef24","bugs":{"url":"https://github.com/tmf-code/ik/issues"},"_id":"inverse-kinematics@0.0.3","_nodeVersion":"14.17.0","_npmVersion":"7.15.1","dist":{"integrity":"sha512-t1K51y/9W5rpefopZL/IF1Pz3pI24BfbByXS+ZbdlsiOvbxwNc59ilFFd7Wr/YiCtaKTsQ/4fZjbDCh5Za5hZw==","shasum":"95f4de99239df306cbd3db9f736d689fca0b6fdd","tarball":"https://registry.npmjs.org/inverse-kinematics/-/inverse-kinematics-0.0.3.tgz","fileCount":35,"unpackedSize":55640,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgy2p0CRA9TVsSAnZWagAAKrMP/0aPJm4XwTlDTeRhuHhN\nxBjHdv57hg1+NHKw2Q8QS4CraSwiVAyzhMhrU9hdfrUqvQkgYgYZf/Fdvm7x\nPjJCr9kr0cGvi7ALuGSWt86GC0XXRkvOtfzTGvCax6g6dz8InIf0ysPv4zBc\nBaTgn+TdFH3fltixrVM0VUBfT7xMa9tx1NnaSEgJgNw2D/1ViBR0+fYd/MTt\ngJXlEzddMSIaGXjS/n0jZfcNnxHmXM/JUbOD6rkmgXWRz0VKo9O5fUxiR2hA\nhtTxwS41bQFlj5OonKK667s4gIIfvqNdPR8bOw+JtbbBKTRI7baYaeCbjj+D\nJTuxZzMpAnRjIhIQw00FRZQgPaKQG0ivZm137QXGZRz57DjVsccLywIDWDPA\nphm+FapRmnIGBmxmUAeb6fdu42hhMsicO9MRyad6MO7oCP5b2twi2PnpDGp+\nxiTbLu5v16p4Qsmxsl7q1kwWleyaOlIOAYtdcs2o/pJvNBb5T11QOOrW//Hy\nt2BLI14+JZX93FDq5B/TOBeEL8F+y4VMM5mnskv3/m92clGM2QLC7GqxRGBL\nrewJQu5h0oLwT0U3oYn4dpw1ZWIuwe6k/lvLh+/t1De+qao36XTMdETPnFLF\ndJwCu4w4povQbwVATz49K2N2peUwtFSwFR35G0/2Gy2tcf3qUhafSATku05q\noU7w\r\n=s4Nb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCoMK6lCDkKPGy//ZctZ7mKDqdFWaZLOTfzjNA596swcwIhAJmhxb3oQuMqPEaifon51pRoG1M1ltbrVA8MFB9wnRps"}]},"_npmUser":{"name":"honga","email":"jae.perris@gmail.com"},"directories":{},"maintainers":[{"name":"honga","email":"jae.perris@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/inverse-kinematics_0.0.3_1623943796083_0.6580779943852162"},"_hasShrinkwrap":false},"0.0.5":{"name":"inverse-kinematics","version":"0.0.5","author":{"name":"Jae Perris"},"description":"Inverse kinematics for 2D and 3D applications","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"test":"jest --watch","build":"tsc","typecheck":"tsc --noEmit && cd example && tsc --noEmit","prepublish":"npm run typecheck && npm run build","eslint":"eslint --fix src/**/*.ts"},"repository":{"type":"git","url":"git+https://github.com/tmf-code/ik.git"},"license":"MIT","homepage":"https://github.com/tmf-code/ik#readme","devDependencies":{"@types/jest":"^26.0.23","@typescript-eslint/eslint-plugin":"^4.27.0","@typescript-eslint/parser":"^4.27.0","eslint":"^7.28.0","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","prettier":"^2.3.1","ts-jest":"^27.0.3","typescript":"^4.3.3"},"gitHead":"1ea2b685984240e989e3a4840228f0061bfe52f6","bugs":{"url":"https://github.com/tmf-code/ik/issues"},"_id":"inverse-kinematics@0.0.5","_nodeVersion":"14.17.0","_npmVersion":"7.15.1","dist":{"integrity":"sha512-Ozixy5WwY2CFSdJegNHGAspBfZGIw8Uib1I7PZaPxgztYDUDv62RhsuNsM2ILs6cnpqK64hyMi09FpujZFzu6w==","shasum":"0af6fa1769e22641796202e513f3ed63f93f84a2","tarball":"https://registry.npmjs.org/inverse-kinematics/-/inverse-kinematics-0.0.5.tgz","fileCount":35,"unpackedSize":55669,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgy2vICRA9TVsSAnZWagAA8hIP/2Fcx3QfQwV5pZ+62zSY\nQ72X8BwdCK9mbLY/AfKaDXPGaRAqZTrQA/0Q401kv+89gCpkoTlI10/GPQIx\n2FfVhNsW31OATmEqOdzBiDZhKy8Uyd8ZzAbg0zBh3iHp9cP/v5mZwk2aJ1VC\ny2IZKtr0EhXD20ahviFmbNrQK/vBP3LQCdaIBDveRL0HeUulr7iK2KxGmec5\nxVu+wc8FTL5oLJ1Jx7G6+DTFdKuaO96V3hcSsPonyY9FBykPTnGjxP51xNl5\nW2ZoGtocQH2p3bWMwcAnoIHlo7c29Unh5DZBgAUbmaxlrQtfWt/n7mIDzIvR\nxn6Efw0Rvnd35Hy+yT6py5UNRefTMZTiXjkz5MNJCcSaEicmqV1ObnrX45eJ\nssAXMUFEtD888XuMdBHmYZcwY8H8ZOIuBQXEJmP4OiZ+ntwazdp5EYEkXiez\nJCQF2m63AMiuwOhrKRlx6v8zJmAPejXrYQIoe4bom+R2JFCqxfPHiWSFKvxs\n/ROXyp0JmbORpeHgO5NagS6m4rO9CUw2gEpo/wyUwOMFepZKWEV1q707R2DQ\ny9Ik7+Ci/ZwOE0Kk2k5wV2E/2bUU/AMoglhVMpKZSn0B4Vh+fyYIRuTXeWLY\nltD3QJBBWPRA333HoGw7PQLBpsJvyHVGySjLvkSEZhn1oyH/dMHo6DuHDaGu\ny4iH\r\n=DXPm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF2w/CAIkmKDI8YT5eQqmDgYRQLM+8zjQ/loZLwxbvMPAiEAuYpNLGlMUxusOoENiFG4jtpENZZ1fY2A55/7Q9IH/Lc="}]},"_npmUser":{"name":"honga","email":"jae.perris@gmail.com"},"directories":{},"maintainers":[{"name":"honga","email":"jae.perris@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/inverse-kinematics_0.0.5_1623944136481_0.5271655415703509"},"_hasShrinkwrap":false},"0.0.6":{"name":"inverse-kinematics","version":"0.0.6","author":{"name":"Jae Perris"},"description":"Inverse kinematics for 2D and 3D applications","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"test":"jest","build":"tsc","typecheck":"tsc --noEmit && cd example && tsc --noEmit","prepublish":"npm run typecheck && npm run build && npm test","eslint":"eslint --fix src/**/*.ts"},"repository":{"type":"git","url":"git+https://github.com/tmf-code/ik.git"},"license":"MIT","homepage":"https://github.com/tmf-code/ik#readme","devDependencies":{"@types/jest":"^26.0.23","@typescript-eslint/eslint-plugin":"^4.27.0","@typescript-eslint/parser":"^4.27.0","eslint":"^7.28.0","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","prettier":"^2.3.1","ts-jest":"^27.0.3","typescript":"^4.3.3"},"gitHead":"b5644d7076c6f2dab26d7acbbfb6bf6bfb309f05","bugs":{"url":"https://github.com/tmf-code/ik/issues"},"_id":"inverse-kinematics@0.0.6","_nodeVersion":"14.17.0","_npmVersion":"7.15.1","dist":{"integrity":"sha512-TPJzrI3CyMI1nulBuFOz8ZPnsZEliRjY8TdkBFOJgJSgHKceuM3KkEOBYoeElGv1+cnmwag3SWia8NwkT7DURw==","shasum":"05f4384394342a83d18b64d7b6ef8697d9887617","tarball":"https://registry.npmjs.org/inverse-kinematics/-/inverse-kinematics-0.0.6.tgz","fileCount":37,"unpackedSize":59662,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgy3TuCRA9TVsSAnZWagAAjnsQAKIZysZxuARAc+eQ7VzZ\nRTD1xFW+3yuFVN8kToImxdnFVk2oDjPA7gSwQsI9nCe+/4pUZJ6ImXTwuxhL\nbWRdqpmPrzlxAyPy8aMTUCMzUOy1vPK/l65Op233amDIaQvH/RwkxUzbSIBG\npFVxSBYSnLVb+TSb9OkQBRRST/hcEsiNtkD1HkE29EGtzLaYdYWyYYp3EzcB\nWKKDQocAciosUT4N/5qu4d4rhSloSLdRF/5XP7V3alXh26ri8ebGYGuCBp2U\ngw8FGrfuAjiOCiX6q3XzT1HSVkpMPOQzMXrH8k9j8FOZ1/Zo9/QmVfqfN91P\nX+UDn/H+wlWy+UvpbQWfFzKV+4+3bucTSKgC1H2pgzdfCasi07vfjVDhaKCu\n2Hpxi1eqVVb00Tofon7URv5/TS3WGiw12FIQnsvj2PjEMbainKhMwXIg0xLs\n7Aa2P4x52HX4mTwkWkgGgxWWc2lpODYqfpiyoqDCimmMlSLLzrMfsCcDIPE8\n0d0VJk7u5BP/k4d/pZjwjDxxxY4FVrsZe35zUKhzu5G2BGypUnDIRgOgdm/h\nYOryRJNpbeg0zFGgRhY0liGThfaQbHCx3/jMkTCDrY25W47ursRcJq1N9CgW\nUtateVsrBeZLjKvgcZE82YYNQJBpvtWO9ydzdXbTQURDuT35L8ssWR0eeTCM\nRb5P\r\n=1gZX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEvCaDJLm/jnPMK4kDI34n0tZGO1+zhs2k942HGM3uLUAiEAjmxjPW3Koq2pn8ggMzf4q8Fm7BVmBkSb0BGJyCp6uy8="}]},"_npmUser":{"name":"honga","email":"jae.perris@gmail.com"},"directories":{},"maintainers":[{"name":"honga","email":"jae.perris@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/inverse-kinematics_0.0.6_1623946477669_0.9180324738870234"},"_hasShrinkwrap":false},"0.0.7":{"name":"inverse-kinematics","version":"0.0.7","author":{"name":"Jae Perris"},"description":"Inverse kinematics for 2D and 3D applications","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"test":"jest","build":"tsc","typecheck":"tsc --noEmit && cd example && tsc --noEmit","prepublish":"npm run typecheck && npm run build && npm test","eslint":"eslint --fix src/**/*.ts"},"repository":{"type":"git","url":"git+https://github.com/tmf-code/ik.git"},"license":"MIT","homepage":"https://github.com/tmf-code/ik#readme","devDependencies":{"@types/jest":"^26.0.23","@typescript-eslint/eslint-plugin":"^4.27.0","@typescript-eslint/parser":"^4.27.0","eslint":"^7.28.0","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","prettier":"^2.3.1","ts-jest":"^27.0.3","typescript":"^4.3.3"},"gitHead":"7d746ae2a1694a411d21bc5f021892a39f57b995","bugs":{"url":"https://github.com/tmf-code/ik/issues"},"_id":"inverse-kinematics@0.0.7","_nodeVersion":"14.17.0","_npmVersion":"7.15.1","dist":{"integrity":"sha512-jZq61VhtPjghNbu/wy2EgdFvSznU2q2nrMCnOmndYtE4L0vl52giY4Ys6VtOsns2cq0JAhdb/OQWariTZPfoMg==","shasum":"a861fe025553cf5d9574c35a5d6011627a0f162b","tarball":"https://registry.npmjs.org/inverse-kinematics/-/inverse-kinematics-0.0.7.tgz","fileCount":37,"unpackedSize":60142,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgy3gjCRA9TVsSAnZWagAAoXYQAIBjhY3crtwE63t0XTO9\nFg7A1PnlvMIMgEKCLJGwwLtJxrAhWloSkfPAX1J18rfm49Ioi+rdXd5rRxUK\npEOEEBvDj8OzgSnJNUkJKlqZpLsGY5L39OZOjux3q0N0LZTN7A6SFuPt/XBE\ncPWn+FUbaLVOCSOuNz5r+CcLf2CLWOBCw/LOj4TZiMAhrrYENSchzg+Xbf7F\nifCANq/wiod4HEtvRvgpEVEm+lFGgUN3oT+MA+jmF9vgZ6Ss7yP9uit4CDZh\nB1PeWHc0vu15m+BgUF4wy6YW8WXz+Sg/PkA/sAwIdCWxXlpMFTZ2GCV/DA0z\nJ0qJX0GcdKJqAwu5I77weZIqUwjS075K055t79eBCw69//alMXMOKbJD/qdm\nClvgujlo3RXQiJD/44TTLeD1AbXxtMCAYngAX9nZPSU/QIteqUoZJazrnmXM\nxME8v0P99u5KxefrCTHaQwZlauFBq6Z3+zpSbj/5YQxHXHcFvuu8f0L5SmDx\nFJW7sw9ZyDUws7/4+B0MEuiEQlbrt1M/5IQitReK115/sEDEV2d4SRJ8nMg6\nxm7SCPtYuhUncHKYtVglzqmbXHKfozNiozsM9uDvy6eNIWDwgMr+xGG4cINt\n9T47+AlCKJENGdNH9eBdWi6cFf0PL7nL436l2VEr/M+uz/0f00mUW4/UFEys\n6hMh\r\n=DNlo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC2JTuRBNb78MSwuO7GMO7MCDVtP2puIgYdX1shw2U96gIgCYNxXP08PGIY8x3z24D/gm2l0cSO6AeLyNZIF31rGG8="}]},"_npmUser":{"name":"honga","email":"jae.perris@gmail.com"},"directories":{},"maintainers":[{"name":"honga","email":"jae.perris@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/inverse-kinematics_0.0.7_1623947298852_0.6961382036922323"},"_hasShrinkwrap":false},"0.0.8":{"name":"inverse-kinematics","version":"0.0.8","author":{"name":"Jae Perris"},"description":"Inverse kinematics for 2D and 3D applications","main":"dist/index.js","types":"dist/index.d.ts","keywords":["2D","inverse kinematics","forward kinematics","ik","3D"],"scripts":{"test":"jest","build":"tsc","typecheck":"tsc --noEmit && cd example && tsc --noEmit","prepublish":"npm run typecheck && npm run build && npm test","eslint":"eslint --fix src/**/*.ts"},"repository":{"type":"git","url":"git+https://github.com/tmf-code/ik.git"},"license":"MIT","homepage":"https://github.com/tmf-code/ik#readme","devDependencies":{"@types/jest":"^26.0.23","@typescript-eslint/eslint-plugin":"^4.27.0","@typescript-eslint/parser":"^4.27.0","eslint":"^7.28.0","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","prettier":"^2.3.1","ts-jest":"^27.0.3","typescript":"^4.3.3"},"gitHead":"a47c63a2364c42ccd6f0e753d2071085b9eb3002","bugs":{"url":"https://github.com/tmf-code/ik/issues"},"_id":"inverse-kinematics@0.0.8","_nodeVersion":"14.17.0","_npmVersion":"7.15.1","dist":{"integrity":"sha512-0fWUwbVPgqnv+yK0XdsmCt3bbunaIV/21a2Zm3VSlIE6WkPdxDi4aCEjpIBo1WNl3PoxqDC7M0cA71835XlKoA==","shasum":"e4fa54b65878f887a0e94e93e42702356d5c0519","tarball":"https://registry.npmjs.org/inverse-kinematics/-/inverse-kinematics-0.0.8.tgz","fileCount":37,"unpackedSize":60244,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgy3iOCRA9TVsSAnZWagAA1GEP/jzpmDp+dlvQs7Vu55J0\nz0QzfUVYZQIuH+dtB+gSe4YLhKaV5vbi+D9JOnsfnZJYcN4JALLxAcMWy+zg\nVLOULTYs1aypQj/DzhdE3rPSrdMYHe6DVmM2oLY/ohfrRKTu4A0tg/+Z2BsU\nJFORsLAhkevh9lR0CxmrEXwdvjWSlv0+R90gzQ/fJ59qa1PaKShF/71CykBo\nS+3JRhOw50DW1tuaTwgB5YxLhgoY/wlOCBtE8EcYXpNdckGv43o1iVl5gf3R\nE1Hi0cDBpnOl02hdvhuBgBcPf+7AaUvz7vyzXlEoO2AA64CfF7cHEh78vD1o\nIdTk5cG4o7Y81h8d8DbwiNTJ4//IEKsH0oEc8STz3mQ37y6+bDn7NEso7Pza\niEE4sMwTR2EdjwM9RqqP0tb3gys2vWBooDzfflAA+LGtUvmFM/p4oFwhtk/Q\ntfpsEhwsbuYOvykgWwiAFfxUop89KXTiaRUfiki8ulArwnm+CQD0KMW5dfeQ\nvzdv8ZgV4G+ulca4htbf1JqFpmam9R9eS3AqP0tKw+LiFxPSBSKbzL1LIDfv\nXVIcV77m5vnuv/bmu7vWnt4TNwr414B9xEboaILGFGRzETjEahe4lAI4mzMI\nLjqW7utQD2HhuxkmRt8xA3PD6tnCGALxSD5rcD9VRvfgmVDXiGfTNNa7Ykfj\nFPfo\r\n=GoUv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFUa4ogq/FHU3g5a2J8IUyJZhSBhBECFwLuHmJAiQlFRAiEA/ixC+VDNVRIbn0whdZf072xrG3I0ZhcSdkXWQyXHCx4="}]},"_npmUser":{"name":"honga","email":"jae.perris@gmail.com"},"directories":{},"maintainers":[{"name":"honga","email":"jae.perris@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/inverse-kinematics_0.0.8_1623947406024_0.35867917733378096"},"_hasShrinkwrap":false},"0.0.9":{"name":"inverse-kinematics","version":"0.0.9","author":{"name":"Jae Perris"},"description":"Inverse kinematics for 2D and 3D applications","main":"dist/index.js","types":"dist/index.d.ts","keywords":["2D","inverse kinematics","forward kinematics","ik","3D"],"scripts":{"test":"jest","build":"tsc","typecheck":"tsc --noEmit && cd example && tsc --noEmit","prepublish":"npm run typecheck && npm run build && npm test","eslint":"eslint --fix src/**/*.ts"},"repository":{"type":"git","url":"git+https://github.com/tmf-code/ik.git"},"license":"MIT","homepage":"https://github.com/tmf-code/ik#readme","devDependencies":{"@types/jest":"^26.0.23","@typescript-eslint/eslint-plugin":"^4.27.0","@typescript-eslint/parser":"^4.27.0","eslint":"^7.28.0","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","prettier":"^2.3.1","ts-jest":"^27.0.3","typescript":"^4.3.3"},"gitHead":"941319ed5bcc04eee70c4df16ff3b9ce76162c5d","bugs":{"url":"https://github.com/tmf-code/ik/issues"},"_id":"inverse-kinematics@0.0.9","_nodeVersion":"14.17.0","_npmVersion":"7.15.1","dist":{"integrity":"sha512-XoAe3g4a748OGJEvYlhhbHwLvGhtdnIqpTiyanhlTMGXaS6zGcdj3D+3R+m5jM5y8wVEPEGr4leG2y68ejR9/A==","shasum":"e34d70249f82e5022bcdba7b535ac77608cdb8c8","tarball":"https://registry.npmjs.org/inverse-kinematics/-/inverse-kinematics-0.0.9.tgz","fileCount":37,"unpackedSize":60167,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgy3uvCRA9TVsSAnZWagAAkXQQAIjPUxhzpK+BwmQ3DSZH\nfEpebIyf77mxd86R45FT0essttDIuPD4Wfi1mtZa08G8S47klnmVSrV5MKLu\nyrSwoyXFWWNmX/K/Mkebm6u+1upWN6HwdJopfqKoz1ct2LTFuskw4ZQsIwlC\n7GCNijuCvc3nfXbh/xDvB73qlnb6bSsfHrZQSl2D3/CmwWk5SQQ5UWUxJ0Ko\ndOozsnea0Qw+fp/satjdbRwhzaAO9DoesDqxXjtMVRVJxLFglbutEO4JhiGH\nAvjOVj3hLxGc3lRRB2WUA/20PEi5JNnBR8x50HFDj6GUj2PsrhLR8FXhWCVB\nUvUJQ6Dn19Yhz7iDn5YtP9cvYDWoywQewDLVjp56otkddbGON2dvahnzZnl1\n+fGLn03Yq4DUjFB7hS3LohYqMCu64D+XkU8AjM6SZsFh/UOWfmuRv3rPO2Jm\njeSzcFtSZZxcViE1PbWyYPKtM53+U1tywzZ8Sb4jWF6HG147vqBKwc9KjxSt\nLXywTac/17gL7NH19tiC3tZsKh4ZVnsMdUxwp6ayPSI07rkTofD9kFRRtcs8\nf2uqORPdLJbzoMSQuWvQzcr13MmELN9ZmXG6vw/3vnJ7eU44AvkdWDmEC+eI\nXZRzXZ1+Z3I9fj4fiYU9rgd+xHvM5G18UWmifauIRQ25B87LJlZau2bE1ZJX\nYD6H\r\n=I2NR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAMP4g7l4IO9jA/DY2yN9WNKFNDIh0PNxeHbi6DuB4DUAiAgXxy6cnqCXJDdIVXqtML1uhiVu9L+ILfFxXPaOIxUyg=="}]},"_npmUser":{"name":"honga","email":"jae.perris@gmail.com"},"directories":{},"maintainers":[{"name":"honga","email":"jae.perris@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/inverse-kinematics_0.0.9_1623948207171_0.3569083338459078"},"_hasShrinkwrap":false},"0.0.10":{"name":"inverse-kinematics","version":"0.0.10","author":{"name":"Jae Perris"},"description":"Inverse kinematics for 2D and 3D applications","main":"dist/index.js","types":"dist/index.d.ts","keywords":["2D","inverse kinematics","forward kinematics","ik","3D"],"scripts":{"test":"jest","build":"tsc","typecheck":"tsc --noEmit && cd example && tsc --noEmit","prepublish":"npm run typecheck && npm run build && npm test","eslint":"eslint --fix src/**/*.ts"},"repository":{"type":"git","url":"git+https://github.com/tmf-code/ik.git"},"license":"MIT","homepage":"https://github.com/tmf-code/ik#readme","devDependencies":{"@types/jest":"^26.0.23","@typescript-eslint/eslint-plugin":"^4.27.0","@typescript-eslint/parser":"^4.27.0","eslint":"^7.28.0","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","prettier":"^2.3.1","ts-jest":"^27.0.3","typescript":"^4.3.3"},"gitHead":"9404707c711647d06a60fd69ade1a33a1384c6e2","bugs":{"url":"https://github.com/tmf-code/ik/issues"},"_id":"inverse-kinematics@0.0.10","_nodeVersion":"14.17.0","_npmVersion":"7.15.1","dist":{"integrity":"sha512-9Mv+F0CtQkmF5PRKgJ8Bs7aPjzP6dQF6x6AOuVirzowZQk7eEEtA6tdnKmP4iLIZOJXancKXzeLnSO7XstoOrw==","shasum":"a76a2611d8ed93199fc5ade74a59387e746cd5d8","tarball":"https://registry.npmjs.org/inverse-kinematics/-/inverse-kinematics-0.0.10.tgz","fileCount":37,"unpackedSize":61801,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgy35FCRA9TVsSAnZWagAARisP+weqpyXVJPQ5Z8Nthf8p\nsqpx3VoqQX6j5QD/yOOdrmR48daL2F7T+4MLVwRXZjO3xkbooQBFkhQ31FGh\nv/8nEOek32zl3CK0SOG0h+5ttHUalWvpKMSnWHfzNiSseSDeB8zHrhiaDnnm\nDZUG9iww6ZrVwxQGaFTquc3w7qzlYiu8tREyasb3cWdFpoy31/V0w+0Lptpx\nyRTFhxEYLo3CylrQ1Fw7H9cIq50KW/iyJFSLz5dh7XznCuxitG+BXBA3WAex\nw/6v89wblCLa5aa/YBdsTfc2aK3uHpdmK4OPk1bgIyX6B/ZN8wFgeiJVylPP\nnhuWKpJtoixs7iTHdLrLIr5NyTMNPclj3boa3DAdOFspmQIngAqY69wil/Bb\nL9G/m6tgeP5ar5TphWtP8bs0s6GM49UQv9oZX+ELmtkgL7Wk1PvolibUqbij\nW73ExnpJf8Cppy/RjEwSIeBrSopYKTnt85CU1k9EQswYW+Qhe5HoCGJZNkq3\nbuBTXj9HkHitNmabz1lmXcBXwPA3+6005Rmcr8PhGNEUG07HR2fkpp3FjewG\nX+xVp17dMhE00afnSmKtxixEYMmFay3FXYASkiVRlJ1Xg2L19+za5Oy7iC2y\njLDgtwaBkJC/smXmYWlReU4eSznjgX+uuWDPc44iof86u3IDUHI+ZHZ/xh9Z\nHzbX\r\n=8Fj6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDYPhxhlqafPyWQPh+1lGtKs/fGVSWkLpf+H0v0EEWcBgIgcsSTTBEW1naWLIPFfmWWf0TfJM6i63szZvbP7g2jI6s="}]},"_npmUser":{"name":"honga","email":"jae.perris@gmail.com"},"directories":{},"maintainers":[{"name":"honga","email":"jae.perris@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/inverse-kinematics_0.0.10_1623948868877_0.5204577110627067"},"_hasShrinkwrap":false},"0.0.12":{"name":"inverse-kinematics","version":"0.0.12","author":{"name":"Jae Perris"},"description":"Inverse kinematics for 2D and 3D applications","main":"dist/index.js","types":"dist/index.d.ts","keywords":["2D","inverse kinematics","forward kinematics","ik","3D"],"scripts":{"test":"jest","build":"tsc","typecheck":"tsc --noEmit && cd example && tsc --noEmit","prepublish":"npm run typecheck && npm run build && npm test","eslint":"eslint --fix src/**/*.ts"},"repository":{"type":"git","url":"git+https://github.com/tmf-code/ik.git"},"license":"MIT","homepage":"https://github.com/tmf-code/ik#readme","devDependencies":{"@types/jest":"^26.0.23","@typescript-eslint/eslint-plugin":"^4.27.0","@typescript-eslint/parser":"^4.27.0","eslint":"^7.28.0","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","prettier":"^2.3.1","ts-jest":"^27.0.3","typescript":"^4.3.3"},"gitHead":"2d9ab3e20e15c085cbd00a5b3fe644964ccfd382","bugs":{"url":"https://github.com/tmf-code/ik/issues"},"_id":"inverse-kinematics@0.0.12","_nodeVersion":"14.17.0","_npmVersion":"7.15.1","dist":{"integrity":"sha512-UZthpvcD4MsEY4ja7Q1mx63ajJuh53UB7Pv5Cf1Fpyk2z4EWvuEPwEhCTx1f/06zcT+MCYDpzPECBarVxlMgNA==","shasum":"b82b6bec1c722b6809784c1420ffe704e67b8f5f","tarball":"https://registry.npmjs.org/inverse-kinematics/-/inverse-kinematics-0.0.12.tgz","fileCount":43,"unpackedSize":68702,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgzK31CRA9TVsSAnZWagAAPBoP/A5TLGw6cKgQanwKI3EM\nMH/ZnNYErfdggLQNqJkWOeaQx2RoSCyjhXpr/7kDY8BkiD8drA38wuQcahCl\npqd1ExiWBGAa5cplWYHZz1F9ahAsR9vJbuAiGK4EBFN2PkRXa6jDzsdHxAyK\ngfIVOuvSS/3vAnLX0OhXti+aNdIq3RPHGI50kW37yXbb/Oz7DH62o+EXveXw\nV5SWizMgIR2HekLWRupZssc8BIkhJbzhZgre6W82md2dMh19Ok5Yomf1IttP\nQmC9SaIJWxj4OLWuI/cSu9buI/oYBXx2/pfu5H1+ICPrljOn6phtn3JtwJ0t\nrqYwZHLvYAefKmZzdkoZcmbvenE0T5YZyk/nbGNNnB9NBnDedljt0WilUAb3\n+jv9Jq0R5o+22h0k2Lv4zGTodJ30p33tVPyUXiS5fMQ+3tlt0MEGuhoaW4px\nkKZo8j0MMhyoxa97apgLLyXGm7VS/1YplyT1h8Sqpawm9QZhyIShuIw6fsps\nuruRIkIQLhfY3+T2fO5FYgCpZjnWvmy4S6WnmlggXmzmCjctP+2Sr9zCtRou\nHcEwLmlL1ecgiuB0CJFDs2ZjGAG8OlwrvND7RhU5k2PLNwSJYr2gScQM1gzK\nfzqaB8HrUE+RH6bavyugexu2rgQSoztX24ssEgC36Lnf0LRXKaXxzR6jaB58\nPjhD\r\n=tY+C\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCX29KhC0B/hQAMgbbRJ22EpAizY5HrwAryPT3EX2c3FgIgdeBOO9uiODl+6ti0HGnR6NQOd0WbJrmZMcuFcYY0rN8="}]},"_npmUser":{"name":"honga","email":"jae.perris@gmail.com"},"directories":{},"maintainers":[{"name":"honga","email":"jae.perris@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/inverse-kinematics_0.0.12_1624026611474_0.6242371605760655"},"_hasShrinkwrap":false},"0.0.13":{"name":"inverse-kinematics","version":"0.0.13","author":{"name":"Jae Perris"},"description":"Inverse kinematics for 2D and 3D applications","main":"dist/index.js","types":"dist/index.d.ts","keywords":["2D","inverse kinematics","forward kinematics","ik","3D"],"scripts":{"test":"jest","build":"tsc","typecheck":"tsc --noEmit && cd example && tsc --noEmit","prepublish":"npm run typecheck && npm run build && npm test","eslint":"eslint --fix src/**/*.ts"},"repository":{"type":"git","url":"git+https://github.com/tmf-code/ik.git"},"license":"MIT","homepage":"https://github.com/tmf-code/ik#readme","devDependencies":{"@types/jest":"^26.0.23","@typescript-eslint/eslint-plugin":"^4.27.0","@typescript-eslint/parser":"^4.27.0","eslint":"^7.28.0","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","prettier":"^2.3.1","ts-jest":"^27.0.3","typescript":"^4.3.3"},"gitHead":"84ffdda33de1c5f15c77fe69c24f2446ddb19808","bugs":{"url":"https://github.com/tmf-code/ik/issues"},"_id":"inverse-kinematics@0.0.13","_nodeVersion":"14.17.0","_npmVersion":"7.15.1","dist":{"integrity":"sha512-bhboD+ZRUUsGXjlJPX/EGBFYOWGOhdNCflA24mJf1nmuZLmj+qeSdzYlKDk32piBfBkusyRgx+JmYoMV+jt6eg==","shasum":"e53b9bb27d99db47680b3e3d7fc0de216cc4f677","tarball":"https://registry.npmjs.org/inverse-kinematics/-/inverse-kinematics-0.0.13.tgz","fileCount":43,"unpackedSize":70081,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgzM0HCRA9TVsSAnZWagAAQeIP/injYp1wJ1d9iHDcw80p\nMnDROOcU0JAF5JEdIAKSdzawJn8CyCrlTfnfnt7Q7qaLemymh6xUxjlQEFjI\n40toz274f+p52JYANJBFYYYk/u6TLbb4hDTSGkeodaCDHgZzPfxSAGTjMfjt\neb8qHegh93U3TbSAf/JVZ+IvNHi62DOMxyQ4IIe7p6BSqLOvW9ZO3OOcUbI7\nL50Y81Jzw2q5hn4ElyDi/ZzcRfpkt75uycO/MBc2/2nuVSbpdk7mhSEcs5P/\n49vg/p9YWlZ1k1WSDAI2h9/wWZq6lIDcPQhLf2YaXTduunMjAMGkJ0LHhDnP\nJi47xAbsyjxCQAWQJYGtF1K8pg3YegYxJ/GrNXMGMHHV3Lkr6g+CkMDmRaSr\nS9dqqqbxLeZpS1ty/QYanMsH/yNZDhYqkSAt8am8YjuIZaH3Av+17uIiY8+g\n6+C2p4Q1/YrBLIxdMcW4+5c6760cpZPZJ3SSfTcj87nbg11Ga1I81grKVbZY\nD1J1VRa2LNoacwiV+bqh39kmQfXIVKTcnAM6bqHoADbgkckRl9jXVK96D687\njL9vant2R3T4FlhT+YJOZGX0ZDdPUH8h/PkFaQjvw7OTd6k0HIhIn7tlxMy/\neXhcNun5wWOExaI3tLn91dmSFBxWumm+koBcVmPaHmAzSZygGTLg/7WdMY8N\nQPQJ\r\n=s/Ac\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICOoLJ2+MPTUevFLYySPUJkULWRJCxXQ1hQgJsPRhpoqAiByY77Uhn+xB2f3OFm9Y/FbGGoU1DieVQv9BaCepVyLPQ=="}]},"_npmUser":{"name":"honga","email":"jae.perris@gmail.com"},"directories":{},"maintainers":[{"name":"honga","email":"jae.perris@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/inverse-kinematics_0.0.13_1624034566971_0.7141224968290172"},"_hasShrinkwrap":false},"0.0.14":{"name":"inverse-kinematics","version":"0.0.14","author":{"name":"Jae Perris"},"description":"Inverse kinematics for 2D and 3D applications","main":"dist/index.js","types":"dist/index.d.ts","keywords":["2D","inverse kinematics","forward kinematics","ik","3D"],"scripts":{"test":"jest","build":"tsc","typecheck":"tsc --noEmit && cd example && tsc --noEmit","prepublish":"npm run typecheck && npm run build && npm test","eslint":"eslint --fix src/**/*.ts"},"repository":{"type":"git","url":"git+https://github.com/tmf-code/ik.git"},"license":"MIT","homepage":"https://github.com/tmf-code/ik#readme","devDependencies":{"@types/jest":"^26.0.23","@typescript-eslint/eslint-plugin":"^4.27.0","@typescript-eslint/parser":"^4.27.0","eslint":"^7.28.0","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","prettier":"^2.3.1","ts-jest":"^27.0.3","typescript":"^4.3.3"},"gitHead":"9fd5e8890bf643bfbd7a5c61b1e1e181289aed79","bugs":{"url":"https://github.com/tmf-code/ik/issues"},"_id":"inverse-kinematics@0.0.14","_nodeVersion":"14.17.0","_npmVersion":"7.15.1","dist":{"integrity":"sha512-/hjB6q8x3+qTh+5qy0rCPL+f/B0jGPfoArvh3mq8K7LnkeFaqsxwx/axmIxwL08dWllg4E+Fyl2xK+yNgWmeqA==","shasum":"e702371f3431f4927e01efbbf3cea13fa5a80253","tarball":"https://registry.npmjs.org/inverse-kinematics/-/inverse-kinematics-0.0.14.tgz","fileCount":43,"unpackedSize":72506,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg0Gb5CRA9TVsSAnZWagAA04YQAJfvRjVq16jg6CJ42Jtq\nToXCzSoaZyL3ns6OM4HGNXwHS5pISL0xtS+H6Xr/fI9oykAtOLgib7weLsU7\nZIpE7w9cDxMsirPU94ItylAI2hbjQA22LS4ghw5szQGuYQ4QNm23/HGbtHck\nq7aSZgzgjw+XujAFK/DnA6zaHkG5W8wH7NjGsYTXM8alKJ1D013A9Xr53VIS\nll8KRhN8lc/XpiO06AyXnlmdTNp2sN/yJe7YWDgtKxR0lrPpZkktPOf0NEGA\nzqZiZm7exuzH47aJge2OtE9ttthutxBy36NOuNW3AQqRqJSif7ZVnF8NVxKW\nuA3daGsVBNp7xI4PPBQAPdboHjwIKecxm6W6FZbrLsCZZrumR5KTp0LXrjm8\nrJ+QMWfcjCzVQJaGtwuijMuSXspfrFNlrfNntEwHXn4reC3QQL/tcK2OACSN\nzsRgMAv1kGx+EGc5LfTQabzqR7oi8kJGTjkdPVvIwtMmeJziSyXXVV9iXR2N\ny+FBtpIgvnf8v7garUNkJ/Xciu62ahJwfcTzMDWiNWVbSxL3ytTjTkZ6rPeU\nwIwLWswIq3XGN9ZCfapU6F0OBzEFwhFtDxbD+zsNJmea6ke8eG/vbtFABlKn\n5tgga58B+Qo2ZO7sXXdwswleO4w2gR4wE27fodUjlkjui93wU882bntGsgz4\nECDB\r\n=BnuI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFTZXu1hrvOikwyAVNJv+68vucXSK05bV/eB8ApmEcinAiEAlQFREq4Ev2LtmzE2VSmaHs9tCVaLDv7fhzKrfp3Ua7k="}]},"_npmUser":{"name":"honga","email":"jae.perris@gmail.com"},"directories":{},"maintainers":[{"name":"honga","email":"jae.perris@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/inverse-kinematics_0.0.14_1624270584589_0.6889429763068615"},"_hasShrinkwrap":false},"0.0.15":{"name":"inverse-kinematics","version":"0.0.15","author":{"name":"Jae Perris"},"description":"Inverse kinematics for 2D and 3D applications","main":"dist/index.js","types":"dist/index.d.ts","keywords":["2D","inverse kinematics","forward kinematics","ik","3D"],"scripts":{"test":"jest","build":"tsc","typecheck":"tsc --noEmit && cd example && tsc --noEmit","prepublish":"npm run typecheck && npm run build && npm test","eslint":"eslint --fix src/**/*.ts"},"repository":{"type":"git","url":"git+https://github.com/tmf-code/ik.git"},"license":"MIT","homepage":"https://github.com/tmf-code/ik#readme","devDependencies":{"@types/jest":"^26.0.23","@typescript-eslint/eslint-plugin":"^4.27.0","@typescript-eslint/parser":"^4.27.0","eslint":"^7.28.0","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","prettier":"^2.3.1","ts-jest":"^27.0.3","typescript":"^4.3.3"},"gitHead":"223301ecd87e127aa0870a3b188c0db43d96baf8","bugs":{"url":"https://github.com/tmf-code/ik/issues"},"_id":"inverse-kinematics@0.0.15","_nodeVersion":"14.17.0","_npmVersion":"7.15.1","dist":{"integrity":"sha512-eU5Ol6+Yl70BOp13d1L/JzWWyrP+qv9tFV4l01VPt/yPRxjuPuZVJD2Ld1wsQXKymg7l7eKuoSS54DHSwcB44Q==","shasum":"417f759d1504c31bd308e80861e1a6f39f93d368","tarball":"https://registry.npmjs.org/inverse-kinematics/-/inverse-kinematics-0.0.15.tgz","fileCount":43,"unpackedSize":72730,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg0GhjCRA9TVsSAnZWagAAzbkP/19cvUP4hIQM0LTcdFz3\naGuPZBKo2G5kBwZHibNRyaCz+96+fKBt4yrqUzLbQAzABJq9ltUOw8l5yuix\njnHDwLZrDR6WhRRsbhpElDdjTdT3YYBDYekTfQU6Ie68ZSY9F2C/VJ6xz1MU\nA64eThc2C1fMC8e6nsZ8ncmtuOvNJOiYpmEQ3qyWgBgs8IfVtHpJre7mNDbC\n5nEAHslbuhL+1NAtVakAAHR5HOKQ9sse7A88QgWP6xLaQWHJnQN1KhYA1o40\ndvse9+oSCZE1PARtDGK9vobHPYUOIQce2w4vl0NQuWkHlHAhzTZzwmx1mfrR\nM+Wnh+QFl4p9VKgZxuhpqDtKLl09SKRP+vac3NWZD3DLuifz1NB7npUygo7X\nGuc/BVGhKKKiW1G1ay2E6d8cL3eIi8dOdu3LAtJaZvn5lrwn8STnn4xkRE9+\nLeMZtMa0kMfih63EISVt2HoZtnZ78V/WFreWO8wFIoe+P7IALf0YZsln8F3i\nMEAIT7VLIw/50WBR+zI9xdaxcaF8IXhSVUDbRO1FpxOoL4fwX+XravYtI3aX\n844NVw1Wibu3R0t7Rg7eM/AIeo776Bhk3Fq7L9WdfPKdAOtw0Q6OS9rhc+iI\n8qZ2n2uGYo2PMfKwDx/engmM6oGNuYipJII8A6gpVHAa5bxBnbI7FWozcUHT\nmgjb\r\n=IRep\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC+fVbBaJYlRzcOsfmP6GPp4QPWOJchZCyLTwp88xTxDgIgI96RHsTLtEaMp4ZtFrrEpFGrbdAXIyqw3Kh/J9LOTpo="}]},"_npmUser":{"name":"honga","email":"jae.perris@gmail.com"},"directories":{},"maintainers":[{"name":"honga","email":"jae.perris@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/inverse-kinematics_0.0.15_1624270946656_0.43694900518969493"},"_hasShrinkwrap":false},"0.0.17":{"name":"inverse-kinematics","version":"0.0.17","author":{"name":"Jae Perris"},"description":"Inverse kinematics for 2D and 3D applications","main":"dist/index.js","types":"dist/index.d.ts","keywords":["2D","inverse kinematics","forward kinematics","ik","3D"],"scripts":{"test":"jest","test:watch":"jest --watch","build":"tsc","typecheck":"tsc --noEmit && cd example && tsc --noEmit","prepublish":"npm run typecheck && npm run build && npm test","eslint":"eslint --fix src/**/*.ts"},"repository":{"type":"git","url":"git+https://github.com/tmf-code/ik.git"},"license":"MIT","homepage":"https://github.com/tmf-code/ik#readme","devDependencies":{"@types/jest":"^26.0.23","@typescript-eslint/eslint-plugin":"^4.27.0","@typescript-eslint/parser":"^4.27.0","eslint":"^7.28.0","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","prettier":"^2.3.1","ts-jest":"^27.0.3","typescript":"^4.3.3"},"gitHead":"ff77004c25e68b89b83121c223cd89a98d13d07a","bugs":{"url":"https://github.com/tmf-code/ik/issues"},"_id":"inverse-kinematics@0.0.17","_nodeVersion":"14.17.0","_npmVersion":"7.15.1","dist":{"integrity":"sha512-ZFjTscjOkhRPBN4T7nyhVbDc/s+DVhRCnXmVQhYfnUileWOKcvGhGnFPf8lx38Oqq9Ci/VJAQwnCPQPzm+OWRw==","shasum":"6e4ec3f9aedf337d6e1682ad6292861e10ae5ac0","tarball":"https://registry.npmjs.org/inverse-kinematics/-/inverse-kinematics-0.0.17.tgz","fileCount":47,"unpackedSize":76437,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg0H/6CRA9TVsSAnZWagAAAuwP/0+lWJyCkKIBsYoxQQHJ\nlvhEABuCeWWdnH7PhNIscqS+IbvXMIj1mlklyLQ7zRz/LLQYPZGpOCYx1Kdq\nvjLLF7nNOUodqmbpPda+0sjoFUp7VTZm/fQ2LkgsrhZzZqNqNvRsyxJ4gsJ8\nN9AzdK5oII6e3s96NpsOgmQtRl//L7SoExqK01WxnWH/FbTTqwuwJmqElEyJ\n9ou5YejopwvC6dTTTAvA8xwDvN2yPfpN4f2sMOcbak6ofCQN24oP6V9qk01j\nNuwaJXGJtJb3bzPwyTBk9GfURj0LsA5FrI8fDg12ngH8dxPuSahC/QvTcjGg\n5n/lj+7cBYLo+qKbK8E/GunQAv8bu76qVaJSFxe9I3ej1AhqHyvP//z+CQ7D\nLYDBaEyLlribagIc7FDLpbkpCNL0W7NcvFW0QncwGe0xJRDXvdRcWeEq/W+A\nKum+Q0WVnhHps928vpEaXxoHrFy5KoXteVr6Kftq2G2szw6KJ1TrlMlfb/MI\nwBVknQjpjIVwVSrCxo7DmotWuADi6GJD7FCmxoO23Hcj5cHdTXIN65ps2lal\nMDwmbWxNL2OydvKEuD30jFjt4zMaJWf7JZ4miGqa9/y2Lwq3qLl3O4Gs++0p\n0PRpIZpFtN/oBEram/fHQ12qv+KqGqyELlV9IjdokbNKuB2Cx0EiWNxRKNTZ\n1zf7\r\n=c41Y\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICsy21QMIWNUjW8HuyOMnVjs2BD+rqzRSnCFatk77rHnAiEAyVd93KxiMF2I1ifL6Vvk5wHfFqW8xGnnpcmZE++Mwbo="}]},"_npmUser":{"name":"honga","email":"jae.perris@gmail.com"},"directories":{},"maintainers":[{"name":"honga","email":"jae.perris@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/inverse-kinematics_0.0.17_1624276985747_0.551488235323992"},"_hasShrinkwrap":false},"0.0.18":{"name":"inverse-kinematics","version":"0.0.18","author":{"name":"Jae Perris"},"description":"Inverse kinematics for 2D and 3D applications","main":"dist/index.js","types":"dist/index.d.ts","keywords":["2D","inverse kinematics","forward kinematics","ik","3D"],"scripts":{"test":"jest","test:watch":"jest --watch","build":"tsc","typecheck":"tsc --noEmit && cd example && tsc --noEmit","prepublish":"npm run typecheck && npm run build && npm test && npm run eslint","eslint":"eslint --fix src/**/*.ts"},"repository":{"type":"git","url":"git+https://github.com/tmf-code/inverse-kinematics.git"},"license":"MIT","homepage":"https://github.com/tmf-code/inverse-kinematics#readme","devDependencies":{"@types/jest":"^26.0.23","@typescript-eslint/eslint-plugin":"^4.27.0","@typescript-eslint/parser":"^4.27.0","eslint":"^7.28.0","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","prettier":"^2.3.1","ts-jest":"^27.0.3","typescript":"^4.3.3"},"gitHead":"044820931ef14af58cb910b31d2774284d9c33ec","bugs":{"url":"https://github.com/tmf-code/inverse-kinematics/issues"},"_id":"inverse-kinematics@0.0.18","_nodeVersion":"14.17.0","_npmVersion":"7.15.1","dist":{"integrity":"sha512-QmlvEnjgCdIloFsnjxwRUWCwTzFNJoKDz8wdcg4Vcl7WLL/yK8kX4oRQHB0eRYYZ5DIMDhTxwvoyxe5AwMhong==","shasum":"5dab9a426963e2e39071b094a5512c8dfcc8004f","tarball":"https://registry.npmjs.org/inverse-kinematics/-/inverse-kinematics-0.0.18.tgz","fileCount":47,"unpackedSize":76966,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg0IobCRA9TVsSAnZWagAAT90QAIxEMMpPYKmZQWuNGIvy\nH6skfijTFvHiZA4mMVzuG8jGlh7sf5uOXlYmdC7gY0OTvrGdh6spZHOAZaSs\nVM754R0QiPtdJWh7BkqIBQevD8o6Ot7ktAx1JCRk2Smf9WDzorOsxOh3o5V0\nwdgWEME0EjwK5lAoDrAYd5CAOdtyFpDM/2RHNhABqKbWwnL7qCQscVVMT2bG\nrg+/9ivYVZpyYEhP+qpwRWa65mnuj2M/C5RXyGMQpN3/l2a5RyyA6Fctx7zg\nWa9wbha0XorVTJeDXp1pljbLOrWHcYrdOx41vjAjDL+WuZ6HD5VM7Nc/mpz8\nhnawMXVO3jm6gtuXUzgvXeyblvqJGwgjTT55gDDMNnFClK4c7edq8J+zWKcr\nCbZTDGNumNUKa0Gy3ZA9Q90CoEpFFNmNZoR/8gj/18r0MJLArQK1+lLP6Gvu\n6My6NVMnNzQHf8gBCscpprmmMwkn6TuPziGeoSNPUc28TvYlAtAkDFn4sNcH\nQiPWOL8TfuZYxjbebMCHtfzcqLwVwWRgjyZ6Kj9PdaPGwlvcE3unT3d4m2Nd\nagXLv/kt47G7HuvPuH1cZb4NwllhGyyB75XOnmZITELLPsLesPz361COddEM\nVVN1AP3o6/0WsFqCO+HvSINu3oCKf5H+urqjzZrvFwYG2IxxqG8GfDE3j8nZ\nw4nb\r\n=uFSe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDGbFoYlMWf4mD540N2BA/BXKfhd6KlUTRPKX1R3T3MZQIgTYLKMtMKZGClIUxuN8JW6ZNaxrp4jMaHwrntddpMHQQ="}]},"_npmUser":{"name":"honga","email":"jae.perris@gmail.com"},"directories":{},"maintainers":[{"name":"honga","email":"jae.perris@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/inverse-kinematics_0.0.18_1624279578945_0.6282409772654083"},"_hasShrinkwrap":false},"0.0.19":{"name":"inverse-kinematics","version":"0.0.19","author":{"name":"Jae Perris"},"description":"Inverse kinematics for 2D and 3D applications","main":"dist/index.js","types":"dist/index.d.ts","keywords":["2D","inverse kinematics","forward kinematics","ik","3D"],"scripts":{"test":"jest","test:watch":"jest --watch","build":"tsc","typecheck":"tsc --noEmit && cd example && tsc --noEmit","prepublish":"npm run typecheck && npm run build && npm test && npm run eslint","eslint":"eslint --fix src/**/*.ts"},"repository":{"type":"git","url":"git+https://github.com/tmf-code/inverse-kinematics.git"},"license":"MIT","homepage":"https://github.com/tmf-code/inverse-kinematics#readme","devDependencies":{"@types/jest":"^26.0.23","@typescript-eslint/eslint-plugin":"^4.27.0","@typescript-eslint/parser":"^4.27.0","eslint":"^7.28.0","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","prettier":"^2.3.1","ts-jest":"^27.0.3","typescript":"^4.3.3"},"gitHead":"b9862d893125da4379f6401287e4286295be5e0d","bugs":{"url":"https://github.com/tmf-code/inverse-kinematics/issues"},"_id":"inverse-kinematics@0.0.19","_nodeVersion":"14.17.0","_npmVersion":"7.15.1","dist":{"integrity":"sha512-nouOMERK8dhnHehBqAQzJq7fjB2x+iscGphanK9x4zggKbPIaCXQvbhWaOyhZ/f0Osob1zg3GDqWYDDwCRhLRQ==","shasum":"f84712fccc41ac0cd5e1b163247d941d553d84e7","tarball":"https://registry.npmjs.org/inverse-kinematics/-/inverse-kinematics-0.0.19.tgz","fileCount":47,"unpackedSize":76825,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg0I2GCRA9TVsSAnZWagAA9NIP/0bECWhubGE39Myc7NXc\n0KwG3Qm+3yDwMrazCE0pWXu7LaO+MHVZ8BQlzLhduK2nEeaAhcRIGmjPKC5p\nzxlYt3n9GcGYrV9q2/f2gl1n7cZPgZOvFtWH9WoyF3bOYG7mMTiqvfXbR7wc\ntUDk/+FDkWoOcJ1sh9LXmnHVOuHmftoWFhvsp+eHPorWvxjyZgN6BLdUj1hl\nSaid1yW52ESI9ocZDeLtqap00iZXODL00O5YbK5Ep/Vm+QVv4ZCE9xcJlBBG\nWQRx3YX8/myuMhAIDwCoGH4u0KoBftEyZekNnmd8aYkWd6CUeUAD8qc4TqF9\nSXwaYptLBkFD9wd8NaZfuj1WT/Lllaxj54C2OgbIJLY5k6haXjohqeCTew7D\nWDuzV0JZSQb6YzTViJcDg5hO7Iht8fkz14Py/Ya705kPp14eWzgBAzwjp9no\nzu3pF88RD3UJHWYdcj2QG/fS5/rZ+29z/EAEgHDtGeapGrWOxzYLDjM0F+/R\nbnLH40w+kjgRup0XTpz4mazn1hOcd78Vx0wyuClKtt/0Bnyt4S0hktz3VjpM\ndpRKQ33cP3FxAws4mw6ABtSizQR3QAVO/ooKmJH3iEutBXMX13GO1Vca3F3q\nFJJ1s4UNNG0kaPlzUSfibwMwgxk6gVaG5xpzB2hH1lYF04IeY0jCZ0OG1Sdz\neA0k\r\n=Didj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGemQ7zpqU7XjZPSsaJ5qUHmzCENV6tqJ4R3sGo7svnyAiEAwLTpgf25pEGWYkc+jYip0x3xyCSa5e5VbcM/6USfGIg="}]},"_npmUser":{"name":"honga","email":"jae.perris@gmail.com"},"directories":{},"maintainers":[{"name":"honga","email":"jae.perris@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/inverse-kinematics_0.0.19_1624280454362_0.4600271360986774"},"_hasShrinkwrap":false},"0.0.20":{"name":"inverse-kinematics","version":"0.0.20","author":{"name":"Jae Perris"},"description":"Inverse kinematics for 2D and 3D applications","main":"dist/index.js","types":"dist/index.d.ts","keywords":["2D","inverse kinematics","forward kinematics","ik","3D"],"scripts":{"test":"jest","test:watch":"jest --watch","build":"tsc","typecheck":"tsc --noEmit && cd example && tsc --noEmit","prepublish":"npm run typecheck && npm run build && npm test && npm run eslint","eslint":"eslint --fix src/**/*.ts"},"repository":{"type":"git","url":"git+https://github.com/tmf-code/inverse-kinematics.git"},"license":"MIT","homepage":"https://github.com/tmf-code/inverse-kinematics#readme","devDependencies":{"@types/jest":"^26.0.23","@typescript-eslint/eslint-plugin":"^4.27.0","@typescript-eslint/parser":"^4.27.0","eslint":"^7.29.0","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","prettier":"^2.3.1","ts-jest":"^27.0.3","typescript":"^4.3.4"},"gitHead":"8ce93858242250cdfb0f1d573844d8d350627202","bugs":{"url":"https://github.com/tmf-code/inverse-kinematics/issues"},"_id":"inverse-kinematics@0.0.20","_nodeVersion":"14.17.0","_npmVersion":"7.18.1","dist":{"integrity":"sha512-mz7lZWlX0mNGcCMH2IRvYYGrfLADWbGMMB9BEii8MPtxFw6/tJu8FGxGQ17xCHXfFBk5PvNjBEfeQDF4DeaZ1w==","shasum":"e12f456f3162c1a507f8dcd6384f4dc2eff48b76","tarball":"https://registry.npmjs.org/inverse-kinematics/-/inverse-kinematics-0.0.20.tgz","fileCount":47,"unpackedSize":76825,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg0I4iCRA9TVsSAnZWagAAMh8QAIwdSrcuOgdBuyVCYegn\nHva1kpOt23iwiF+dofrNwn2zeeoAp4Ij4PteX0R9lVnd+vNqHKpvKAlC8OKc\nqj9sQ8E6iRnhGPw9C9XOL4upSbuMLhobN5raYy81Y/MMEZ4jnPDk/EASFd6W\ngmLmGEWMUNu0ZZctBQq2+9ev8r3b3xFBNKWXnJ3p4mTDsGUMpFus/xcD/J4x\nY9FJGHgOhOcpULdxxEpnZaEtTZ5W0yZ4H3xk6gY8kKlYT4pQGtnL/GWfyTr0\nVga8OKMqmKSyK/MFHDVM5VS6WUch2d3Ln+c+UBbVxAC0wTiz9C23leph4BsD\nVCkEkqlP1spZ5IeREgnhJX0IL3wJ7QpszJoUebFXD+m0zMImQUl0T5/rtsD1\nlri5tS0wqhyeSsfAYQI86AuaLCF0wcdZFFBqeQj4TQT/X/gicgv7xnlBfJzY\ncw9soS3mQ7UztYgEXGDi+LMOviqKawVvdZihKIK+n8MnPACTEi7yp/8FzvYo\n1UvOF3gvV4fx4E4x9IOD0UKidDYZzYkPazOAd83xBbmaO4r6xk71+uoQ+DJQ\nHL5ZwflvIXMLezvryJLHLUOg6oYgDoHPSMRwHfMhYaMzedc094jpuxq857j0\nLcVXacXuk6FnxTPiXUQsvV1/+sNq7vWHxz67WxsDDj7SP4hvHVppvXnzDQop\nF7+1\r\n=bc3a\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDtuD0iSKka7nzFI3xq8V5QL3Tlc5jIwJItfXv/Tp3ztgIhANcWcjRPh92TqpqyZzC3xwdVtyzwxnk7+eNr4fjPDEVK"}]},"_npmUser":{"name":"honga","email":"jae.perris@gmail.com"},"directories":{},"maintainers":[{"name":"honga","email":"jae.perris@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/inverse-kinematics_0.0.20_1624280609700_0.08212161239228277"},"_hasShrinkwrap":false},"0.0.21":{"name":"inverse-kinematics","version":"0.0.21","author":{"name":"Jae Perris"},"description":"Inverse kinematics for 2D and 3D applications","main":"dist/index.js","types":"dist/index.d.ts","keywords":["2D","inverse kinematics","forward kinematics","ik","3D"],"scripts":{"test":"jest","test:watch":"jest --watch","build":"tsc","typecheck":"tsc --noEmit && cd example && tsc --noEmit","prepublish":"npm run typecheck && npm run build && npm test && npm run eslint","eslint":"eslint --fix src/**/*.ts"},"repository":{"type":"git","url":"git+https://github.com/tmf-code/inverse-kinematics.git"},"license":"MIT","homepage":"https://github.com/tmf-code/inverse-kinematics#readme","devDependencies":{"@types/jest":"^26.0.23","@typescript-eslint/eslint-plugin":"^4.27.0","@typescript-eslint/parser":"^4.27.0","eslint":"^7.29.0","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","prettier":"^2.3.1","ts-jest":"^27.0.3","typescript":"^4.3.4"},"gitHead":"ad6db5715fd36189d1eb5213b13d263dbcf1b431","bugs":{"url":"https://github.com/tmf-code/inverse-kinematics/issues"},"_id":"inverse-kinematics@0.0.21","_nodeVersion":"14.17.0","_npmVersion":"7.18.1","dist":{"integrity":"sha512-V1/yNDlKN0mDVcAT1akPbAj4X/haaHYkazv//CzzGAhV5vd2s8NNntVKiQrFGYKEXt3nUJdzFdjePgCFQR3ZHg==","shasum":"48582252fed731caafcd0e38def86200f8782a47","tarball":"https://registry.npmjs.org/inverse-kinematics/-/inverse-kinematics-0.0.21.tgz","fileCount":47,"unpackedSize":76457,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg0JPzCRA9TVsSAnZWagAAg6UP/jD1UBBEPfDQ0g+i6qyt\nT0wwtllMiTgNy5fDonUf+rgZJ5Dk4p9VjExAV5SmWoEtXWTfBRVYMor+9u6L\nQzLi4d8CG4xPER/VNEYOYq+rgXWZsqd2EhtSdDR8MR9HnhEDPSHA6XeHWcL5\nGtc+t7MPlP+wb2eDPD0i01rmGnUlioWToE7EGSdtHNerY4e4DRxcSm8E0OET\n8RPyw7xcnP8DYpkdG9yZzP1KDr9U5rggPxGfMa502tLK5ltcJD+WbF2NwAJO\n4T3KpkHNSHq+GT+JMVZ8uIywBpuAYYQPvvFmPA5Gw3hyyuNFd33YpN3tAPZt\n0y1btvlul0MobC+J53WH5olRb/DvrII+9VdEtTtwT3rtXwvz4AslI/qabvEM\nIflBLIkgeL3747vEBZsfP02J2kzlSjqovksZROdSeNIfrdnkP65oZmkA1wbY\nZf42A/8ldZPVeCGCqiibr2Rp+pNDEO4HHFU/+ghdG+ZXcOsYasS1DyK7YzGi\n2wt54YFXw2gmlbBjEru3yPMfva5idtE9UMEjU9h8JYDn01RR1ILUG+0IM6Hl\nntFbtebWGuO34hXN/V4avuhmpOGJzh9ZyeghHoQ+SAUeSimOfgse5q32XLtb\n1+1j9EBLII7abE2OK4CV2HYwIp0qfZEEfaoAE7iBsslqXFuVUU7P0kzpnAS5\ndq6M\r\n=B5QV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDg+fMdiKsvOGQg71BMfdLaEnI1C+naQnExex44fDDO/AIgb0oRG8Gxv/MPlj3jkxiOzQ1WawdHAq3mNdyglPWxkgE="}]},"_npmUser":{"name":"honga","email":"jae.perris@gmail.com"},"directories":{},"maintainers":[{"name":"honga","email":"jae.perris@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/inverse-kinematics_0.0.21_1624282098939_0.7107685145297729"},"_hasShrinkwrap":false},"0.0.22":{"name":"inverse-kinematics","version":"0.0.22","author":{"name":"Jae Perris"},"description":"Inverse kinematics for 2D and 3D applications","main":"dist/index.js","types":"dist/index.d.ts","keywords":["2D","inverse kinematics","forward kinematics","ik","3D"],"scripts":{"test":"jest","test:watch":"jest --watch","build":"tsc","typecheck":"tsc --noEmit && cd example && tsc --noEmit","prepublish":"npm run typecheck && npm run build && npm test && npm run eslint","eslint":"eslint --fix src/**/*.ts"},"repository":{"type":"git","url":"git+https://github.com/tmf-code/inverse-kinematics.git"},"license":"MIT","homepage":"https://github.com/tmf-code/inverse-kinematics#readme","devDependencies":{"@types/jest":"^26.0.23","@typescript-eslint/eslint-plugin":"^4.28.0","@typescript-eslint/parser":"^4.28.0","eslint":"^7.29.0","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","prettier":"^2.3.1","ts-jest":"^27.0.3","typescript":"^4.3.4"},"gitHead":"b48a918c8149954555d0bef371c437f519daaffe","bugs":{"url":"https://github.com/tmf-code/inverse-kinematics/issues"},"_id":"inverse-kinematics@0.0.22","_nodeVersion":"14.17.0","_npmVersion":"7.18.1","dist":{"integrity":"sha512-dOKCss72DU1F6/vu1PgDzA1+yIIBbjZC+QsU9ZxGajE3TBP0bbDkUtUzdkHHgTDRO4H3XrgEsvhqiliKOjMs9A==","shasum":"fbade258d5eed69a822b4102362469d8d089e9cb","tarball":"https://registry.npmjs.org/inverse-kinematics/-/inverse-kinematics-0.0.22.tgz","fileCount":55,"unpackedSize":89607,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg1LadCRA9TVsSAnZWagAAbp0QAKOqq5kmoBESaHsmE6iP\nEEWU6StLkFim7hHtKsTdzVLrOwVuKLuRZqmKltM7XoPSOR5pRsrK4TvnX/Te\nh01vLeOYsFMBdB9VRRTJQIfgQ0oKEt5urs4CPhQSYVQyF30ozMOaiEtYuK73\njwT/E41X73z6BKK8zWOmha9bMYxlx6XflilUBpn7/OLX0B3ChmpGxJKYapeR\nUWNxrUvcs7NqeK5blyuWmO6sPJyiGbs9nNmXk5JEk5jcvs4VKm+dgWGhdAmD\nbH1mO/ngZoiwyHjJX6g5Tm+rx6g1PckCQAk58jOoRjVYOlTkTmpiEoksa8RV\nKKYnquswvBm/l10L3hk0PvFRxdNXjJ/iL8iZpCNSFTNL6FlM1A5TpvtfRUz7\n1vGYbl1zzo2YWDNssWM6AjHVX99DEQwXeZwAmWSL99u04vlf41bshQbwzn6H\ncpeRVHd3uAOs3Aql+y6QKiKI9FW2dDbvn2YNbakN+dlCfugUEQIiJPqtGU0d\nMVvCCyGBJ0ybypHDTx+YVdkjIyuo5cpRmZohW+p1kvOyPpu/9UWVT4wtEJIJ\nnWZVqwMSxehu8EJ0f/0dTJn6JCu1xkhuVVxhxSWr2fmEFitwWLguJAzfPpBq\nIR5ZVA/JOHs4lPZsIrQ4e5wAprLim9iFvPvG9cO/qddFNkNhJ3gduWOcbbi9\nOtsw\r\n=ZANd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFs+dlz1wxnPOKkTZBNgOfvSL5WGd+Y/GD8xJo+XZpwvAiASmLr52kaQvvitMflaZLjNiV19N0jQUSJLGq0elnYLFA=="}]},"_npmUser":{"name":"honga","email":"jae.perris@gmail.com"},"directories":{},"maintainers":[{"name":"honga","email":"jae.perris@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/inverse-kinematics_0.0.22_1624553117201_0.24193072830557605"},"_hasShrinkwrap":false},"0.0.23":{"name":"inverse-kinematics","version":"0.0.23","author":{"name":"Jae Perris & Alexandra Barancova"},"description":"Inverse kinematics for 2D and 3D applications","main":"dist/index.js","types":"dist/index.d.ts","keywords":["2D","inverse kinematics","forward kinematics","ik","3D"],"scripts":{"test":"jest","test:watch":"jest --watch","build":"tsc","typecheck":"tsc --noEmit && cd example && tsc --noEmit","prepublish":"npm run typecheck && npm run build && npm test && npm run eslint","eslint":"eslint --fix src/**/*.ts"},"repository":{"type":"git","url":"git+https://github.com/tmf-code/inverse-kinematics.git"},"license":"MIT","homepage":"https://github.com/tmf-code/inverse-kinematics#readme","devDependencies":{"@types/jest":"^26.0.23","@typescript-eslint/eslint-plugin":"^4.28.0","@typescript-eslint/parser":"^4.28.0","eslint":"^7.29.0","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","prettier":"^2.3.1","ts-jest":"^27.0.3","typescript":"^4.3.4"},"gitHead":"35c449c6a53d60b80adff26b4a44e2f59c3efe56","bugs":{"url":"https://github.com/tmf-code/inverse-kinematics/issues"},"_id":"inverse-kinematics@0.0.23","_nodeVersion":"14.17.0","_npmVersion":"7.18.1","dist":{"integrity":"sha512-oCAt+cW+6RSHbhRYfJ+PAI/dSwFc26PEwjz3QlJInBq5QzCpezglaifipa/OICHHB8f4njcd+I/lOaJzVUJnMw==","shasum":"585ca2057caa4673d4aec94ca87a83dfb41d478d","tarball":"https://registry.npmjs.org/inverse-kinematics/-/inverse-kinematics-0.0.23.tgz","fileCount":55,"unpackedSize":89928,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg1dX/CRA9TVsSAnZWagAAGnEP+QFHSEUB38b++ns2t9mW\nKCDut64cusgXj5ugjsMP7A7Vt7oTlpR5XQbKrbgDJPKH/D+UFqJBxW4GcLMT\n86Z+HQp25bq7K7Q3Z7zrAtDHuQvXZMl+rKWXQTiBYeBGRXXUAWxfNbc/nFrJ\natNOtRXMBh8i4/9/Pn5uMOOJNBkYLtxf0JxPeVbQukExraZL5DnMO2uREFXY\ncmu6rwLxV0LHmCbq/8srB3fSlqwtXi5dGZGraZhnhNg5GABJb72Rz9gLNjUs\nlGu45dgQriZgXxPQK6BsBABOkUylHsz6YxOIEL/Nyt/gT2SwV06EufM7c5HA\nVy1AqXrlmxE1LwG1vGPzNX5uUW8LoW8pxF1ZzxroVx9RIotAojkhkHC4aVKw\nk4TEu8GODUL57Dyb/KEjbadL48BZTuaHHAw4Mk0PiXpNEdcVq6vAAw7rqLSq\n6a1Wv6m4zcztGy9T/HcbNTlyASN0bwHUEEIutEWmyrcKL1puGRgHqzCI91O9\njeFpa40y4FaeFct45NcOwSjegxPR3G8GHx3sFQXDnbzQBnK9sOGTAQXf+Vo2\nDpIL529JGWRpSQBM0OEpRMysNp+ReumiV83WBpvOJWU0lT/W/nP4OlRZSrnL\n0Z+WLdadxLu2G6OPVHhnunHFDRb4a+n+pcL7u1mfX/RQih42+kSZqt+Lvezk\nvtj9\r\n=5qzS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAovTO4FppddQZe7ebOEfDg0lnUW2mKgyMqdAPNKxJj8AiAGKUbraQcYUGc2ieGn95BYzKXHBr6lOJc5RPmzBH1pHQ=="}]},"_npmUser":{"name":"honga","email":"jae.perris@gmail.com"},"directories":{},"maintainers":[{"name":"honga","email":"jae.perris@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/inverse-kinematics_0.0.23_1624626686849_0.8117089310538581"},"_hasShrinkwrap":false},"0.0.24":{"name":"inverse-kinematics","version":"0.0.24","author":{"name":"Jae Perris & Alexandra Barancova"},"description":"Inverse kinematics for 2D and 3D applications","main":"dist/index.js","types":"dist/index.d.ts","keywords":["2D","inverse kinematics","forward kinematics","ik","3D"],"scripts":{"test":"jest","test:watch":"jest --watch","build":"tsc","typecheck":"tsc --noEmit && cd example && tsc --noEmit","prepublish":"npm run typecheck && npm run build && npm test && npm run eslint","eslint":"eslint --fix src/**/*.ts"},"repository":{"type":"git","url":"git+https://github.com/tmf-code/inverse-kinematics.git"},"license":"MIT","homepage":"https://github.com/tmf-code/inverse-kinematics#readme","devDependencies":{"@types/jest":"^26.0.23","@typescript-eslint/eslint-plugin":"^4.28.0","@typescript-eslint/parser":"^4.28.0","eslint":"^7.29.0","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","prettier":"^2.3.1","ts-jest":"^27.0.3","typescript":"^4.3.4"},"gitHead":"3c750150df482f96b5bf393e7924c3a3c89cdb6f","bugs":{"url":"https://github.com/tmf-code/inverse-kinematics/issues"},"_id":"inverse-kinematics@0.0.24","_nodeVersion":"14.17.0","_npmVersion":"7.19.1","dist":{"integrity":"sha512-nr4eBPBfxNJJjJ5vhtJ8pA0edszIFC72DGwTqnF5zZ8yJNzQxWhDtUg/QCOTDc8tt024HZVM8oO9+LyGgAVBOA==","shasum":"b121284dcf3d51acbf507beb2a50d7cb03704f30","tarball":"https://registry.npmjs.org/inverse-kinematics/-/inverse-kinematics-0.0.24.tgz","fileCount":57,"unpackedSize":93323,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg5Yl3CRA9TVsSAnZWagAAqgwQAIMiB9INmB9bKD2C6t5u\nXiy0vKT9pv+uvbnHVNkeD0KWm8cfnaQmswHiZ+C6E/tW4dH4LZv1xGPSZCDO\ntZ3/DIusq35GKezDHj3xmPFLSWDtwwo6i+AueN5+JexERFa+n6TXfKP49fTA\n/hySXIFJWyYlA7DbqNMdXIwE+6/ckB6z/45onuBqt0ysdoAMR0kbTCV2k4K4\n84apQVYlzt1UzQVJYOuPdx0bOP+DbjdspdeaqJlt5LZBOFQobU97VgcWCjdd\nLc5v5BoXuyC1CUIOWBYqpVaqVi3aVzYliY+Af17wGJ/lUZjvwdzms/UATeGg\ndH6l6CAHItJTm/25Fy2MxAZJSHnjiEr4qcbM5a1AwD2P4GymN8QATX1M2yx5\nkh3aNMa80B9zemTxr/N/AhWx3G8ETZ/YdQjMLMKW2umTjS7fQxwZqQKwVxCZ\nxdgzDo9Ju7QruIsrSDrFGH03Jgh0BlWVj5m5/wLRtZJv0KLwO0WLk/AGGZQu\nReU5dP6cZwGxdxR1nlIWWD08SFmPsZJK6j+HRyJ+NaOSPNeaL0CZIJl88Ior\n4Q+u3JOLgI9YahAacj0CJqoX9pP53LWD7GrKOW5GiCUL+5W9zr5jYLyFHGcc\nZ+z8N/KfhgZGDKYLeXuLGQ5QbhlywPCUJc5yjQk87O1OSa1yhRoK/GS2lIwZ\nESD+\r\n=0APo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHglsEsqzPcPgO24Sl/3/wAyFo3yiPx2J25rmtqqamNIAiEAk51SyV1RoqfaRnxxU1GoOKdH6GviLUdNPcN7Lvdj8OY="}]},"_npmUser":{"name":"honga","email":"jae.perris@gmail.com"},"directories":{},"maintainers":[{"name":"honga","email":"jae.perris@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/inverse-kinematics_0.0.24_1625655671035_0.9208049466151234"},"_hasShrinkwrap":false},"0.0.25":{"name":"inverse-kinematics","version":"0.0.25","author":{"name":"Jae Perris & Alexandra Barancova"},"description":"Inverse kinematics for 2D and 3D applications","main":"dist/index.js","types":"dist/index.d.ts","keywords":["2D","inverse kinematics","forward kinematics","ik","3D"],"scripts":{"test":"jest","test:watch":"jest --watch","build":"tsc","typecheck":"tsc --noEmit && cd example && tsc --noEmit","prepublish":"npm run typecheck && npm run build && npm test && npm run eslint","eslint":"eslint --fix src/**/*.ts"},"repository":{"type":"git","url":"git+https://github.com/tmf-code/inverse-kinematics.git"},"license":"MIT","homepage":"https://github.com/tmf-code/inverse-kinematics#readme","devDependencies":{"@types/jest":"^26.0.23","@typescript-eslint/eslint-plugin":"^4.28.0","@typescript-eslint/parser":"^4.28.0","eslint":"^7.29.0","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","prettier":"^2.3.1","ts-jest":"^27.0.3","typescript":"^4.3.4"},"gitHead":"fe44348e76515eff5f6e0298736f6826e573bd96","bugs":{"url":"https://github.com/tmf-code/inverse-kinematics/issues"},"_id":"inverse-kinematics@0.0.25","_nodeVersion":"14.17.0","_npmVersion":"7.19.1","dist":{"integrity":"sha512-8Z//TAGsPno1tIA8WQrVM6iVVRWa+0td47L8x6cXYRyHMnKzqQ5QMFj7cVyylparUk6WT63Nn91EnK6AMEnrQQ==","shasum":"7e713631792915976015e9b42fe4ca7328a4ebb8","tarball":"https://registry.npmjs.org/inverse-kinematics/-/inverse-kinematics-0.0.25.tgz","fileCount":27,"unpackedSize":49820,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg5aKCCRA9TVsSAnZWagAAQjwQAIbhMdfK+UZrzxnkEzKw\nZ/a9dYS7bZpeWEDCKQqPJuv+FrzY89GeTsBipvNsVlZcs0C7ltgCbWv9cy7W\nJ6zDmehB1jWNOOtdR4oSVqORDYqjdmxl8crt49uy77/y3qbQux9t8A4kHfX1\nOzYKfOckzDLHgkmJCoOz3erx81JX8t+6Tq8be3gEOjz+vGbfFaZaCokiYAOG\niRpk/mM/xtDDXqi8m7EXn4pM2hZRnbVheFGKeR8LNA28w52VUI+AgjZ3Oxi7\nHHpPBz6oqxoVTC0wpDH1kSJ1JKm8n6epxiuSVq7PsJydHnn0pP45mhMvIEot\nisfOgup47h59fRQOyaK0BOgLuSIulKKf0S1VbAvEPWBR5irQFwx01IZsM5Iq\npJkn6FevDOMd9pz2OEy5pnVr1r8MQ3kzxLpqH3PUb8PJV6fLY7Mus2Wc27mZ\n3Qt8FRI3nET5AzWur4Wnq5AQU6UofILhvRjoDEnlz47X14whXPEMueyY574/\nR21+TAKOteyFm8oX+60buHw4yIPQXXagFD0bCTDopa5OKe9J9zjPlK0cvq1o\n3hItholxPCNIxGxzKs8DHJi74rAWBNA6bSZVapdzhHJK8VxRQJm/CbbTrweL\nyh7EcpiuZ+q44chlITXffJFPoyFl7xw+kPpQGtr8y8H8y+2/CwELsZvLtEw6\nVuce\r\n=+Kg5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDCOfk711FaeOkyxp4+SC9sBP0mSLgNeivoPpX1x88wxgIgUYhCuQYZaK7QL1BXsLHlIvZm8LeaqFoMlkUaa8L9SwU="}]},"_npmUser":{"name":"honga","email":"jae.perris@gmail.com"},"directories":{},"maintainers":[{"name":"honga","email":"jae.perris@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/inverse-kinematics_0.0.25_1625662081676_0.9452916203688639"},"_hasShrinkwrap":false},"0.1.0":{"name":"inverse-kinematics","version":"0.1.0","author":{"name":"Jae Perris & Alexandra Barancova"},"description":"Inverse kinematics for 2D and 3D applications","main":"dist/index.js","types":"dist/index.d.ts","keywords":["2D","inverse kinematics","forward kinematics","ik","3D"],"scripts":{"test":"jest","test:watch":"jest --watch","build":"tsc","typecheck":"tsc --noEmit && cd example && tsc --noEmit","prepublish":"npm run typecheck && npm run build && npm test && npm run eslint","eslint":"eslint --fix src/**/*.ts"},"repository":{"type":"git","url":"git+https://github.com/tmf-code/inverse-kinematics.git"},"license":"MIT","homepage":"https://github.com/tmf-code/inverse-kinematics#readme","devDependencies":{"@types/jest":"^26.0.23","@typescript-eslint/eslint-plugin":"^4.28.0","@typescript-eslint/parser":"^4.28.0","eslint":"^7.29.0","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","prettier":"^2.3.1","ts-jest":"^27.0.3","typescript":"^4.3.4"},"gitHead":"9a0332a60666db7a91800e3c06423ebf1602a8d4","bugs":{"url":"https://github.com/tmf-code/inverse-kinematics/issues"},"_id":"inverse-kinematics@0.1.0","_nodeVersion":"14.17.0","_npmVersion":"7.19.1","dist":{"integrity":"sha512-+FlD+CEmgfbsceyuFrLyLl5KlGMTVzNP6L497sT5YHxeBbNUMAZkqcA+6uyCNvj7xuG9XUlFTduFMmJNk+OxPQ==","shasum":"d5b1ca3b89a4d09f5ea5b7540c6622bc52995100","tarball":"https://registry.npmjs.org/inverse-kinematics/-/inverse-kinematics-0.1.0.tgz","fileCount":27,"unpackedSize":51767,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg6F7FCRA9TVsSAnZWagAA/egQAJGRuYMeNTeCK9GHuf0C\n5tvaL/qSJ9h3InbTU/8/sP5tRcgYYu22KarJ/nf1Rr9q60Lyn+IwMPJWS/lK\nStVqA55Puzs1D3b5eXYe8qJcc8XnyI5kRfeQ8b0pMdKwPLAYvwMjo/8hTn1R\nwf8d7X5W4zL4wahofezWKZGQhFX0ZRg/to8zgiEVkvYRU0FWh6XZjhnazVVV\nbQ5WcR/+pITCjzG8Y8b8PTgEtLLCTIu7EJl+HKl9Tw6KaFHkWbgVo5w8LL7J\n5dqEJhmdrp7y3/9UsIkq8ah0M1xCWHOx5FR6cUYaBiSHVG0CtJneg/fjppWT\nsXI+t/fau9kxmv2VaJQaHMAJ6w83fk1+QoIbcQ9wdJ0DRnUtWP9OVu91zfso\nJFAVFdWZ4Z6A3KIF6SSvpWPjajg43rxTvKwEwSrH0CcxLoaMIhHMV2Plx45K\np4nXeYct5k4+MqHzPwwFKtwMe0wEnMz2hHHA0Qgvzlet2aVubQgoMwwvzV/1\nysMrOjf8DUKgkMBM2wdylKdu10ihgMv56KNkRFPF/RPtf0KgxRJIjlnXN0HG\n3dsjNwD6KSKSm6XynaBETE4DPQYy0UHl+zwH1h9oonJMO2MHkdW3GJe8w7j3\nhGTG8ivi6PinhPz2QkzSY+TgBsgmnuYgnAe/+avgkOpBwXPPJskXKPMpob8H\neygA\r\n=BQbI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCmTCx5fVSkkGGA9KFxYVdqF4Ay1A6RoCGvtRyRm1z9TgIgK6g8AATnx2ie3I7dra74VcE+WbPhW+klgbgtfOSPVGE="}]},"_npmUser":{"name":"honga","email":"jae.perris@gmail.com"},"directories":{},"maintainers":[{"name":"honga","email":"jae.perris@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/inverse-kinematics_0.1.0_1625841348255_0.5863469898399909"},"_hasShrinkwrap":false},"0.1.1":{"name":"inverse-kinematics","version":"0.1.1","author":{"name":"Jae Perris & Alexandra Barancova"},"description":"Inverse kinematics for 2D and 3D applications","main":"dist/index.js","types":"dist/index.d.ts","keywords":["2D","inverse kinematics","forward kinematics","ik","3D"],"scripts":{"test":"jest","test:watch":"jest --watch","build":"tsc","typecheck":"tsc --noEmit && cd example && tsc --noEmit","prepublish":"npm run typecheck && npm run build && npm test && npm run eslint","eslint":"eslint --fix src/**/*.ts"},"repository":{"type":"git","url":"git+https://github.com/tmf-code/inverse-kinematics.git"},"license":"MIT","homepage":"https://github.com/tmf-code/inverse-kinematics#readme","devDependencies":{"@types/jest":"^26.0.23","@typescript-eslint/eslint-plugin":"^4.28.0","@typescript-eslint/parser":"^4.28.0","eslint":"^7.29.0","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","prettier":"^2.3.1","ts-jest":"^27.0.3","typescript":"^4.3.4"},"gitHead":"d71ba101c45f0b402abcf5d0627298d78cab9cfa","bugs":{"url":"https://github.com/tmf-code/inverse-kinematics/issues"},"_id":"inverse-kinematics@0.1.1","_nodeVersion":"14.17.0","_npmVersion":"7.19.1","dist":{"integrity":"sha512-prWjVJSr4FaKGiRhQVhojT2Cx+M6rdogdf2LzUPE8I9wcqeq/yN4UpWip97ewbkhw9xX9rqIumsrwTJP4hlUpw==","shasum":"d9edcfefb7e1fa455d179db7fef2f28612c003de","tarball":"https://registry.npmjs.org/inverse-kinematics/-/inverse-kinematics-0.1.1.tgz","fileCount":27,"unpackedSize":51818,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg6F/VCRA9TVsSAnZWagAA7I8P/iCfYeSE5NHuV+BtAm7d\nHUc4Rx2byrzKT+mLspOH0mCHFO3B9nGgORntRZTxaUHz9C5XKN084fHYJedN\nQOvSPX1sRIM4HGICgGu7HiNAlL8L/n7gXarUSFXoM3hNksgvAf8CSojY8uhv\ngJ0nF/WEsd3dDridDPuyOb8s3HlGm5+DNE6K9sUrOvwm2HoRhKHE2eSRNbus\nPH5AA/tzB8eM95RpoaQxs4Z38AuhRC7VVgTR6H14LLiYkkaalGT86DhcyY4S\nj08TV5EDypFfQqWOs0r480WdjVFoyAHwIQwVNOxzwdDo4Zcp+dW3BaH5Dg3L\nusTktfrDIaup3XwhoV2kWTfFMcgjeiBTqtmeEBr0t/9bwooEDNjVXyeEjPES\nQgqwDFsIWGDbMtxQpFM8J7EhQW0JY/9UeHyEX3Fjw+wUKHWjDfpUMCS/UoxK\nLCZXiIWgl8m3qpZUhN1ywlka/MnkyU03Ybh99tAqPN2tSLd92V3rV9tCp7Fe\nn1zFRScXbGmTKaX0HTMoZYMOrHXVrBkSPQiUMizB0+n/w8NXTtQmta+NcC80\nn2HZgsZtCCo8R6wkxyPrl4QmSEoX47/xFHAaJRaYdWHAjGk0Jo9Sig29EtBp\naRv6NSXmuU6VyXfKnNes63RpwnxEF2rmCRBmP5jCAOPWuAVBoENJmuHtQXiu\nFbkY\r\n=bAbG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFByW4FPdifPdBYX3DDYy6t/ldPHxb8JM3V6zEFSxuCVAiAVnYlo6PwCEBJPBQpdaPKferyA+7ZH60IfL0eKjlB0Fg=="}]},"_npmUser":{"name":"honga","email":"jae.perris@gmail.com"},"directories":{},"maintainers":[{"name":"honga","email":"jae.perris@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/inverse-kinematics_0.1.1_1625841621119_0.3437845523411378"},"_hasShrinkwrap":false},"0.1.2":{"name":"inverse-kinematics","version":"0.1.2","author":{"name":"Jae Perris & Alexandra Barancova"},"description":"Inverse kinematics for 2D and 3D applications","main":"dist/index.js","types":"dist/index.d.ts","keywords":["2D","inverse kinematics","forward kinematics","ik","3D"],"scripts":{"test":"jest","test:watch":"jest --watch","build":"tsc","typecheck":"tsc --noEmit && cd example && tsc --noEmit","prepublish":"npm run typecheck && npm run build && npm test && npm run eslint","eslint":"eslint --fix src/**/*.ts"},"repository":{"type":"git","url":"git+https://github.com/tmf-code/inverse-kinematics.git"},"license":"MIT","homepage":"https://github.com/tmf-code/inverse-kinematics#readme","devDependencies":{"@types/jest":"^26.0.24","@typescript-eslint/eslint-plugin":"^4.28.2","@typescript-eslint/parser":"^4.28.2","eslint":"^7.30.0","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","prettier":"^2.3.2","ts-jest":"^27.0.3","typescript":"^4.3.5"},"gitHead":"8152cfdd80252f920aaa810d437692e94ead26ea","bugs":{"url":"https://github.com/tmf-code/inverse-kinematics/issues"},"_id":"inverse-kinematics@0.1.2","_nodeVersion":"16.2.0","_npmVersion":"7.19.1","dist":{"integrity":"sha512-LbYTqnM2JQKUre89e1FiWFaRtQXDKSUQFYhuA5nrcLxxUzD7gLR3jRpc5fDgUoC+Yd0O3guKyXNR4N7KadeHPg==","shasum":"b5931ba8a223331a216a33eb46401479dc9ec8bb","tarball":"https://registry.npmjs.org/inverse-kinematics/-/inverse-kinematics-0.1.2.tgz","fileCount":27,"unpackedSize":59767,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg+rjoCRA9TVsSAnZWagAAVmwP/2JucmWstNX/HcU6KrXT\ndDNjIYJsjGDYXEZmU9ee2Zyda5HmHMJIfyD+IhlJReRVxB+9fAz7K6Zd5ye/\nMGEN+sLHNsAKd0+/+maBKitmiJ90ES0ijXaUiM+CLZlexCnFubA/8oGsQCfD\n8aWtrJt4niOwLnZj+X0P2NeaQcbn6ZCe7X4jJR3cCZ1evsn8LTWuwgKSQ7Gh\nRlPPyvXiMMU4reCDZ9u9CWEyannMCaXgiHd7FIVGblCO9g1kJSAHclMAswkQ\nlaMZP3d+MHNvVqX1KbElqTF/asfNC+/UFjkbHM2rfd+IwWUqxzMMn0Y9Aiv9\necZ2gX+EV3XqQGhV36pFX9aQJCuZs/9AVoI7CgAn3aftYN3/3iaXOZWj1YBd\nA9Ygmq+BmjeWm1Xy7n4maIGJdmxochpqU6p+cjfUBdRhjfqkNnKVUuYW497w\nGOCy8DvApWxeBSHuVEkv3RGZMOz9/n9NCT13M4VeV9Obdk5Y4ThulQxOPZHA\npvIcYOasTw2PWCNNhZbQaF4SoyQdti4OEtZarFXiFDs37jCc0vpX7mdl2cja\n5KsurKGr+ObkYiVHTQZuZDXBOsjSem/hkIrJ6qMVMjBCPEDKPrR4ruCDjZDp\n7bnEprnoldP+ez0BuHDHC98MCTfIUZMQqLd8pf/XJ1tmMB4uXkKFhTD7pw1t\n+hmt\r\n=QAnf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDzjAcOchtMGAkm8Iv8tApIgYcA6r5VEztwW4Xg8xrr9AiEA1z7EwW1qPJkv1jZaka0sp0KMGQNClMxRsh2fYlpCVwg="}]},"_npmUser":{"name":"honga","email":"jae.perris@gmail.com"},"directories":{},"maintainers":[{"name":"honga","email":"jae.perris@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/inverse-kinematics_0.1.2_1627044072137_0.8977445854046255"},"_hasShrinkwrap":false},"0.1.3":{"name":"inverse-kinematics","version":"0.1.3","author":{"name":"Jae Perris & Alexandra Barancova"},"description":"Inverse kinematics for 2D and 3D applications","main":"dist/index.js","types":"dist/index.d.ts","keywords":["2D","inverse kinematics","forward kinematics","ik","3D"],"scripts":{"test":"jest","test:watch":"jest --watch","build":"tsc","typecheck":"tsc --noEmit && cd example && tsc --noEmit","prepublish":"npm run typecheck && npm run build && npm test && npm run eslint","eslint":"eslint --fix src/**/*.ts"},"repository":{"type":"git","url":"git+https://github.com/tmf-code/inverse-kinematics.git"},"license":"MIT","homepage":"https://github.com/tmf-code/inverse-kinematics#readme","devDependencies":{"@types/jest":"^26.0.24","@typescript-eslint/eslint-plugin":"^4.28.2","@typescript-eslint/parser":"^4.28.2","eslint":"^7.30.0","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","prettier":"^2.3.2","ts-jest":"^27.0.3","typescript":"^4.3.5"},"gitHead":"dce8666a709dd4d82d4db834ba663182ab5e6648","bugs":{"url":"https://github.com/tmf-code/inverse-kinematics/issues"},"_id":"inverse-kinematics@0.1.3","_nodeVersion":"16.2.0","_npmVersion":"7.19.1","dist":{"integrity":"sha512-HpKHQ0UgN85iZPvfBgNSPZqnLhPzjuddYjDEw3MLN30kzpzTDKazClEyzzSgawCxTAUyfGwZCazQOi/nAx8RSg==","shasum":"5c14191c23a0be0ab5ee45bf56a77de67beeec4a","tarball":"https://registry.npmjs.org/inverse-kinematics/-/inverse-kinematics-0.1.3.tgz","fileCount":27,"unpackedSize":59867,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg+uxECRA9TVsSAnZWagAAGPcP/RvEmbMHMIjI0ftwDwFG\nR4yzJkMur9yKfeKPGmgH94c7GZ+TjYGqjqy89RlDty5l6QIHWb7SpiDR3W/v\nAI0VDLRJETkXpOPUZX5OMl/QGnhav3dRRDruqbCW2sT+bsU7Py2pgkJlyCKe\nzJiJXkA1x9Rwiz97Y7928GyURngRnVQ4GNlxYQrKwtRWGsHgY17xRVwVWcSg\n35avve9ItCw/8+hmYApGlkM1oFTUFXrBsfZkFJdeG2QPvq4ra76eDannLaxW\nbJvOy17UJhNGMmMNoI+glDA+qELlZxSnPAdyYeDVVTYL5fkg1EpzwRbEhOYI\nEzlhmSjNny1dSkfErH3Fo5PUEfULuyk+AOhHQtu0az+5QKEwgt7BWaneQSbx\nBgzxMK7dcnimbE1UKJQ0ZT6XZXESHHTrzT3uO3pcuKWgY68KGKB8HLmvGSrV\nBCt2bsnsYmbWTY/CHGCpHvkDhCKQqmwzKhaCb8CPXu8m1JR474vWpB3o0iPf\nlgk29fL4s8KpTe0AZvCinQ7uMnleYe9UJuArJ5e5uRN4nntMEjo7bzII1DF5\nL4SVZaR1WdZlbQtkbF8yTzIieUwp5h/X8rTS9Dk+8g+OptmWYrIkPm0WPhpe\nv/4aSkfyRREt/rDJ9c9lBfyx5y727BJvvFeqrUqLSKTAiqta0rHk84GgcOLQ\niaRL\r\n=9aA+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF/MPIu1hSqhNj2vj2JDboNNFLMuLH7govdLBueMTcSWAiEAgTALjUI4QTAawGWnZukMUQt2M9BfqdIPBFuF/RQQaFM="}]},"_npmUser":{"name":"honga","email":"jae.perris@gmail.com"},"directories":{},"maintainers":[{"name":"honga","email":"jae.perris@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/inverse-kinematics_0.1.3_1627057220111_0.038222840171046046"},"_hasShrinkwrap":false}},"time":{"created":"2021-06-17T14:45:05.252Z","0.0.0":"2021-06-17T14:45:05.396Z","modified":"2022-05-06T01:33:53.689Z","0.0.1":"2021-06-17T15:23:28.243Z","0.0.2":"2021-06-17T15:28:44.789Z","0.0.3":"2021-06-17T15:29:56.192Z","0.0.5":"2021-06-17T15:35:36.630Z","0.0.6":"2021-06-17T16:14:37.810Z","0.0.7":"2021-06-17T16:28:19.038Z","0.0.8":"2021-06-17T16:30:06.191Z","0.0.9":"2021-06-17T16:43:27.325Z","0.0.10":"2021-06-17T16:54:29.013Z","0.0.12":"2021-06-18T14:30:11.674Z","0.0.13":"2021-06-18T16:42:47.303Z","0.0.14":"2021-06-21T10:16:24.701Z","0.0.15":"2021-06-21T10:22:26.816Z","0.0.17":"2021-06-21T12:03:05.904Z","0.0.18":"2021-06-21T12:46:19.071Z","0.0.19":"2021-06-21T13:00:54.521Z","0.0.20":"2021-06-21T13:03:29.822Z","0.0.21":"2021-06-21T13:28:19.069Z","0.0.22":"2021-06-24T16:45:17.310Z","0.0.23":"2021-06-25T13:11:27.038Z","0.0.24":"2021-07-07T11:01:11.258Z","0.0.25":"2021-07-07T12:48:01.797Z","0.1.0":"2021-07-09T14:35:48.569Z","0.1.1":"2021-07-09T14:40:21.232Z","0.1.2":"2021-07-23T12:41:12.338Z","0.1.3":"2021-07-23T16:20:20.253Z"},"maintainers":[{"name":"honga","email":"jae.perris@gmail.com"}],"description":"Inverse kinematics for 2D and 3D applications","homepage":"https://github.com/tmf-code/inverse-kinematics#readme","repository":{"type":"git","url":"git+https://github.com/tmf-code/inverse-kinematics.git"},"author":{"name":"Jae Perris & Alexandra Barancova"},"bugs":{"url":"https://github.com/tmf-code/inverse-kinematics/issues"},"license":"MIT","readme":"# Inverse Kinematics\n\n[![Version](https://img.shields.io/npm/v/inverse-kinematics)](https://npmjs.com/package/inverse-kinematics)\n[![Downloads](https://img.shields.io/npm/dt/inverse-kinematics.svg)](https://npmjs.com/package/inverse-kinematics)\n\nA typescript/javascript library for calculating inverse kinematics. Supports 2D and 3D applications.\n\n## Install\n\n```bash\nnpm install inverse-kinematics\n```\n\n## Quickstart 2D\n\nhttps://codesandbox.io/s/quickstart-2d-ob7yw?file=/src/index.ts\n\n```ts\nimport { V2, Solve2D } from 'inverse-kinematics'\n\n// Create a list of 'links'\n// Three links, of 50 units long, all pointing in the same direction\nlet links: Solve2D.Link[] = [\n  { position: [50, 0], rotation: 0 },\n  { position: [50, 0], rotation: 0 },\n  { position: [50, 0], rotation: 0 },\n]\n\n// Define the base of the links\nconst base: Solve2D.JointTransform = { position: [0, 0], rotation: 0 }\n\n// Define a target for the 'end effector' or the tip of the last link to move to\nconst target: V2 = [50, 50]\n\n// Iterate until the error is within acceptable range\nconst acceptedError = 10\nfunction loop() {\n  const result = Solve2D.solve(links, base, target)\n  const error = result.getErrorDistance()\n  links = result.links\n  if (error < acceptedError) return\n  setTimeout(loop, 100)\n  console.log(error.toFixed(0))\n}\nloop()\n```\n\n## Quickstart 3D\n\nhttps://codesandbox.io/s/quickstart-3d-25xy6?file=/src/index.ts\n\n```ts\nimport { V3, Solve3D, QuaternionO } from 'inverse-kinematics'\n\n// Create a list of 'links'\n// Three links, of 50 units long, all pointing in the same direction\nlet links: Solve3D.Link[] = [\n  { position: [50, 0, 0], rotation: QuaternionO.zeroRotation() },\n  { position: [50, 0, 0], rotation: QuaternionO.zeroRotation() },\n  { position: [50, 0, 0], rotation: QuaternionO.zeroRotation() },\n]\n\n// Define the base of the links\nconst base: Solve3D.JointTransform = {\n  position: [0, 0, 0],\n  rotation: QuaternionO.zeroRotation(),\n}\n\n// Define a target for the 'end effector' or the tip of the last link to move to\nconst target: V3 = [50, 50, 50]\n\n// Iterate until the error is within acceptable range\nconst acceptedError = 10\nfunction loop() {\n  const result = Solve3D.solve(links, base, target)\n  const error = result.getErrorDistance()\n  links = result.links\n  if (error < acceptedError) return\n  setTimeout(loop, 100)\n  console.log(error.toFixed(0))\n}\nloop()\n```\n\n## Examples\n\nCheck out https://tmf-code.github.io/inverse-kinematics or find them in the folder /example\n\n## Terminology\n\n### Base\n\nThe starting point of the link chain\n\n### Link\n\nA `Link` can be thought of as a connecting bar, that extends from it's joint, to the joint of the next link in the chain.\n\n### Joint\n\nOccurs at the tip of the preceding link, and at the base of the following link. We've chosen to consider ownership of the joint to the following link. So that itself can be considered a `Base` to the remaining links.\n\n### Visulization of terminology\n\nYou could visualize a link chain like so:\n\n```\nBase\n  -> rotate(link_1.rotation) [joint_1] -> translate(link_1.position)\n  -> rotate(link_2.rotation) [joint_2] -> translate(link_2.position)\n```\n\n## Constraints\n\nThere are a number of ways in which you can limit the movement of a joint, from the default ball and socket configuration. For both 3d and 2d you can supply either:\n\n- A single value per axis, this specifies half of the rotational range either direction from the direction vector of the previous link\n- A range with values `min` and `max`.\n- An exact rotation in the local coordinate system\n- An exact rotation in the bases coordinate system\n\n### 2D\n\n```ts\ninterface Link {\n  /**\n   * The rotation at the base of the link\n   */\n  rotation: number\n\n  /**\n   * undefined: No constraint\n   *\n   * Range: minimum angle, maximum angle (radians), positive is anticlockwise from previous Link's direction vector\n   *\n   * ExactRotation: Either a global, or local rotation which the Link is locked to\n   */\n  constraints?: Constraints\n  position: V2\n}\n\ntype Constraints = number | Range | ExactRotation\n\ninterface ExactRotation {\n  value: number\n  /**\n   * 'local': Relative to previous links direction vector\n   *\n   * 'global': Relative to the baseJoints world transform\n   */\n  type: 'global' | 'local'\n}\n```\n\n### 3D\n\n```ts\ninterface Link {\n  /**\n   * The rotation at the base of the link\n   */\n  rotation: Quaternion\n\n  /**\n   * undefined: No constraint\n   *\n   * {pitch, yaw, roll}: Range | Number\n   *\n   * Range: minimum angle, maximum angle (radians), positive is anticlockwise from previous Link's direction vector\n   *\n   * number: the range of rotation (radian) about the previous links direction vector. A rotation of 90 deg would be 45 deg either direction\n   *\n   * ExactRotation: Either a global, or local rotation which the Link is locked to\n   */\n  constraints?: Constraints\n  position: V3\n}\n\ntype Constraints = EulerConstraint | ExactRotation\n\ninterface EulerConstraint {\n  /**\n   * Rotation about X\n   */\n  pitch?: number | Range\n  /**\n   * Rotation about Y\n   */\n  yaw?: number | Range\n  /**\n   * Rotation about Z\n   */\n  roll?: number | Range\n}\n\ninterface ExactRotation {\n  value: Quaternion\n  type: 'global' | 'local'\n}\n```\n\n## Tuning & Algorithm\n\nCurrently this package supports gradient descent. Soon it will also support a CCD approach.\n\nThe algorithm is quite simple. You can find it in `src/Solve2D.ts`, or `src/Solve3D.ts`. Available parameters to tune with are:\n\n```ts\ninterface SolveOptions {\n  /**\n   * Angle gap taken to calculate the gradient of the error function\n   * Usually the default here will do.\n   * @default 0.00001\n   */\n  deltaAngle?: number\n  /**\n   * Sets the 'speed' at which the algorithm converges on the target.\n   * Larger values will cause oscillations, or vibrations about the target\n   * Lower values may move too slowly. You should tune this manually\n   *\n   * Can either be a constant, or a function that returns a learning rate\n   * @default 0.0001\n   */\n  learningRate?: number | ((errorDistance: number) => number)\n  /**\n   * Useful if there is oscillations or vibration around the target\n   * @default 0\n   */\n  acceptedError?: number\n}\n```\n\nFor good results manually tune the accepted error and the learning rate.\n\nThe learning rate can either be a constant or a function. An example learning rate function could be\n\n```ts\nconst knownRangeOfMovement = 200\nfunction learningRate(errorDistance: number): number {\n  const relativeDistanceToTarget = clamp(errorDistance / knownRangeOfMovement, 0, 1)\n  const cutoff = 0.02\n\n  if (relativeDistanceToTarget > cutoff) {\n    return 10e-4\n  }\n\n  // result is between 0 and 1\n  const remainingDistance = relativeDistanceToTarget / 0.02\n  const minimumLearningRate = 10e-5\n\n  return minimumLearningRate + remainingDistance * minimumLearningRate\n}\n```\n","readmeFilename":"readme.md","keywords":["2D","inverse kinematics","forward kinematics","ik","3D"]}