Make an encrypt value - Frontend
Sight.js can also be used at frontend, this allows dAPP to protect user's privacy by generating encrypted value bytes purely in local browser environment.
How to use
This code is a TypeScript module used for initializing and creating a Fully Homomorphic Encryption (FHE) encryption instance.
Note: Before create a FHE instances, make sure you must can access any Sight environment first.
Get chain ID and public key
npx sight chain-id -n http://localhost:8545
npx sight public-key -n http://localhost:8545
The chain ID looks like this:
9000
The public key looks like this:
0x00080000000000001f7652429b804db1a5cdfb3c36559ec2fc91a20e96318d9013e47573dd2fea50b56fbcfd7bff055b86ecb07bc31d411005fd43b2c2f52c8e64e3a0753016f0d929b709232220282e53baf71098a4bb718184a6f7c32c7c772da35dc92a7c5d2d24c2d8c394b9f741e401e77c21c5945572d083aa76d5fc4fdcddc44b2f6d91dfca371475af8d510c40eb0071376284b47d5c518330b9d75d8051345a36dd288b1ecc3c9666c12835feafbc4f61f837243a44cefc2fda86089e2878bf38d3a4577687eac92496bf0b8a1aba1ef8b0b60677908f0e256cf08ef31269f2a9039d5106d37daa0df8fb76e38a6e8530735a1a0b859b0b624d58d14cb646f227fde2ea422b0fd0292afbcbd67221aa38b140a78154545b14aa4f52dd67645c6d262dead36c14a8ec36cb637da28d82e549f71970a25cfd7679255e330957646ac6b50151dcdf225fb0378aa67fc0c3a4e4f0fac379ecf0a26ece44593d1faf88b46529850d927c56f37f19654fab4868a07b1b3ec477b40a3da879bf5b2767a9d7467d10b5ba8eaffcf8f04d8bed2187a1fcbeca1d4a417d5e0ae82cbee606226e03b6b9f3b56148780dbc332693bbdafcd6b51ca279ef1dd194af1c7a43bdd4d5924f2069c484c0887c17657eb71e3118775e15cd4f8ecbd128d0763ac2be663d1c74a04c372d9983ab3d57ac4215ee529e4020e759b2e7c3c717852282f447e11cae7e8ce8877361a60b390f0f1ca8b7bc75bbde98abff5cfeaa3034d5d706614f8c556f87a90682791649ff9e9a8aca539e651366b60dbf88db15552d1c3e90ef58a54862083416e1b0f5c13c869b4f31a6af700d83685c0eaa3c89b5e360b6bdbb755cb954d40434038b2a33aef6862b8008c16c5c4609c7580ad1cc3c436596d50d9efb39f1dd95af89b41628313950c60fc83d19a10caeab6489884127af8ac00592dab10861895c5abf40eab858006afd104ae5c0cfa4b3e4f5e6e44d2e2dcc45ea971a376c0f297320f301d2c4078db47a1acf098f01d591b16368e7bde58a160b335a08b3ce346f9054d126f3c99fcbb48d33ee33365d9903b6ecc815189c515fbe2ae263d7dc1359fd2e3eac1482261bed60f36aa76914f14d89ebc9062ecac5bab8a1a7c337fba838e2f1978988454f7448a715f1d197979b1cd34ff96479827cd17dd19db034b85e664cbd294319f8e6b43dbe3fc66dc73fba42c54001a4e03a4671ce7a65e1e72f9d4647b91d0e40dad1258453304c8605cac120833e450a18670559056ec12c4d8dbaf47e0d0e168111c273b7f150ac855e5210822870ddaae802720ccaee46a97092d2c3f2ed4996d1b425151315f4705e031541172e1cc7296c285e2b80f350058791fdcc044673778e8f98b9f83d5581f7daa4982400097374425807f7fb32cc200b7319213cc9c56ff5cbb3c697c1c99b90ed5ffa8d247c7fa4d1eec72affede7c1be894249a55fb3207a191710265c8f197f0833ba20f9cf6f72658bbf5019a2d97c6242e0e1dc3d6829d187ee285ec9a1f0fa28c05d842264db1357faa870619e8fce6648040d78d8be067a67cfcb98f5d003e750d6e8b0fbb189b179730c17c3e3dd5a18513486dd74d1eb8b3ac8be08fc7f1b2d3da11a9e74117caf6d017c3736c21248ca06c1ad29aa680dd41be95082ab86ab0d982561952bc199eff5b88ba0b63617d098a5280315c5590746c35bf77d39f7afbdb850a3994eb46d5c23c0d04181a208968316b675c8a0676a61d5870e884ea7a113a643611b2fda17e06f639017c24e4a3bc81cc2b9a3e996b97a506c75369b42b08eda59d5705619ab85ffb0ff7f83ffb5ff99f3d21921852517b7ce88f2df706a617e5cb76173f81ffc38c7f262ec7d7701d873d8bc6390f7ebfea153587260b2cf8f63e98d2139444b121567d3d0f0caa5e0b03e8670453f1f3434a58ab1bc8d7df9e3952bda0ba2a78975d2fabfab54e2bdc5c71ac93dbd3b41b2bb7d389b69458f0406b8a254ac3dfeb49a217f228c4a3b741963f8375ea2f3b1795d653cc450f7427e852fa0a0f04c96b896a0855c38325690c7570a41e418b63c89cbee2a913057ea6aa9a9d5e1794a85ada4d74cb6c7ab5a2794fb4329479820004562d1dbb2735646eaa1cf9ae3154a8d0cc5614773aa834b0e92bee2876cfafebfe1d87bd2b51c91f8771f16a806f4b29145d9402be4615bf0324275e282bf0f00e76ababa8643544c9bda38a4b9fff6e82d694904428a261d2a805948a5130b20df73dcca4a7d37d8bf5aa811c592f801cf58d53638dd2f2c62f438fa38ffb36a8b154863603ad81fbf1648a6568c36fe7b5496b03dd0b8fb0027c97d59e9265815c44a73e904d4c6ebbf7550288328e4f63853e8ddd794638be914de642cb473b9a2ec7a390fc1e118d9c5adf88c56457771358b2be6028bda63cb88727ad8b40a07617d898cf60727c4a243660143cc3524a333041eeeb318a2a794dd55576d11e2e301e7cd695258d43ea8ef75774a63ba0e82dff00428d74de2126d2bdb32271d0ba3bc65c42980d5c71e4813b971e9e8ffc6fef04af1caa6801a0cde7b53e74c154efa260839aa24e9813692f8d8d52f03ba0f7ae916528831ec484585e836437af39bb1b56e19e5327e3c5a9bab2ce4f0429566b5b90a7b6e0342fcfaf5f9a6e3e3d9b4c4edd9fad1c4ae4aa2772a4eef8f3613f903d40320193774db314ce0072066276145c08e1357ddaaa5eec0e0425b885b92a2b1b4609de276b200d9406c90e926678ddacb53184a8ea9a53fac0e393088ef8645e3f0445da7b941f6207a20093b8ea0f4b04b6a630ba306a8d7eabf58bf2285fb8896919b97cad8d211db152670c5bee46be25e6386d6ad4ba857759540c51cd1f12fa2581c689337508992e21745add61038cbe66d2b3639706db3eb04fd689b3512c09b901704134cbc79aa11806c154566557a042f913100b65a90885724c8873426b091b2bb04ad19fff7ece817a6c297333db19c56a1187d4c7c0684100321ab462af245a61c79f2178d58295b2ac77801869118e94bbca5bd74633903e613ed5f911df881ce4d5a9a1e956a045cea39105405946b2f85e7465b41ebc05a64bd6bb63378e170261a9e761019dfc87ecbbd6e049048db66f8f6a888d1ba101afc93281d8ae77c283332a94e3df8568b847c69ee59835bcb7e9c899974c1e73547a342dd16e6a16a821bca57ecb7046f39b48c7538d27b1f92df70aeb2860205f1f97bbe2a387d2e48d4a9cbf89f9a5cc35afb3c2b1f7395702517c13222d011b3667ec3cc918caaf8933baa8bc2484b0bee643dfc928dcdeb71e4a64bdae6c77122750b286a7aadcf570afa23b3bd50221cf69bb993e1e26301fa5ab242d17439228721c0e7620dd8c7af9568a903c4c667c98dc8c77a909edafa9d5e59a788a20794bc688464738bbff09da2055d1c09a4a7871a2024701e9bfd65fa476b65fd1b72814755d9fd3184715fb24ab860001854c3080aa72948c7f435201e62fc67a3e63fba0ab751824dff7f65a5d34689e3160aa91f64b235a09be4eb1e321d6475169c8a9bbda2d94138b6908fe8f6bae110c5a394d68f70d1d94e90a32f4b6497ef5ee6079397d567ea6de7e3287f18e1e283941bada09b250bff4b1e71328b5f958067c3a64e0a4feff332f54e10c06ad94bcb5eb12dfbdd7af47a6bfd2f55918de98c8ae8726130b4346e56f81349cb12acabd5409e494a848fd358dab931b9a367a4f60665c7f2e55fe002bba4d317ed779dbb12f2ecb173f87d424beb81c8965dc543043e62ae2d0860046cc5715e37cec93f2eebd1d74f9c44aebbd2e527e064e236af4b72ea54ecf29f165f4246d2f86b2bcb2e350b3016c6ce4481bdb19bee17377b5be4731c88125ac9b1b56caabc51edd0b929fce435ec09148670362d8f342938c02849131bf1d06ccd39ea9ae112972ece7d841070b1c921c052e88b6c9b9e32a755f1c5bb4e1698dc9d83a19eb8b15284d956c62a501e4e5a71a3d06a0c4771d41712a6178f0ef4dfa9f57cf8871a430fdfb516def204c39d6737f23c5dd5aff9d59059eb40377cc8ab9d511fafc344b68c54ac4b464a721900018ef412202ed675717cb5c186ec69a4d320cfc2937f7a262d7037a733b0151387111601f53bc970792930c90828a8f6b6f3972fd766f1a40b55424472492caae79c3a0a3dc67924e48fecf52eb99023d4c08037461ec0aefe8fa011fce4899d4d99112acfe2ff8586b610f8df39f9c6f41905db143d599bf01f2396e4f7b6e3bc128517fb7e9d55afd5b1b64f17e2b56c892f47dd744ec1b63855fe95c4cc0afc3945605d8a1a0e249ddda0a9b4ec20559133c4f8ea63febf547ab3c1fa1fee4357ba439997ca96e36dd73ae592a4ab5a772e453e206a3a655168d4bd5fd1e093acb426192f4daa96051226e296328c1916cf497a77a7399e237fa10338106479e11d48584d764b5416aa7cff60a78b78f23133c4669cf739f779d670c32b9492917426860eee24154faa7cd2021784e6cd18cc8e17bc7c35e887705581c749c337e8994f0ef84431d1ebf9e61fbb52ef8278984734ee4c2ef76da3113cc17a9f6cc761f6e05786dde66cc49c673d628966dc1ef0b845bf2c75b5f37d169e52cc7a00c0d22642f05496e47592096eed7ba31f1e64c295e503e3561a3999e65834916ffafc5162994376cf8cadc5c5c4460930c136c5ba5bb26a84e7d518224688a5bbdc6075f14262a3d304cb7ea1d79937b706eb0495e985ee03f7c78b4733aa63eca13553959ff928e3a784781fe2b27e1e1281c9a30a033c555099bc078782cdff1d2ac3a4cd48417f2200804d4b6078fa480f5bdb735c3b010238569fe999641860bea9da07adeeab04b172078d5871b9d25ec30ab9f97b72cf64397d96e2f3a0a63398964606bf65f3da3923a2b010fc5ede4c2a9d31ef996dff31bb21ca0243868c8de9af8fe5c0db632f108503402e8a30540c854780a168691e240220254f41d3f424404d7c9b40a09f5af1cead1b3bc3ad39350b605226e0c6e1f74aa80432f659210002729258bbad1123f57e86db13e0c69525ebcda54f301f3b8251b412087a699efa9241d2196c83cbc9a4e679ca0865c062147899e56fdceb048ddcfd9d461837108aac2385310e78328acb783fbbdf8b00d0c893441cc92859f69b13b0029d9b5af9e6418fcd179f3f0105752a46b6d721b8cc2f21fc31c4619c1d05807569826fadfe3a24d5f14951e36350d6ac48bbae6e153adeabd9f79240300a85855e1be18c9fa11fe277efc9d44ebce0db5c9a8520c9f7dc98ce947da46297816e05594e3e89fb86c2df7934288d025218da95577e7f2c6990b97474b4a713819fd5e3291d88a7e6fa6c8b0f3fde223e7c8a4b4e759057b282cb9289f04e0936facaf08b4dfd39a6a6228ba2b58965a99f250016784b9d56d42ba10b0259000f0a427a09d9d06e07d4cafbcee4aef8055ff1a5db1f3418750ec453dfcd814acae6471493d9a504ac6c7497d6c6af1919d352316ce22a7a8b1e8e482cdb92a29cdf5e6cc3f88c349a2b66022dee126074f6a099c359c69e235aa32a97e739f8a201fad6078239f5bf48378ba67356d6c2e78955d75cedea70776a53e3b3c3d3fd163b3460f60926419b4fe8579affae343227b6c47c155b369b198a281803c227b95e7a33a832540a0147846b9071653feece5886dc25853e15847a12d2d1bba6f2080d29774fe550a7b8caed811ed8f9e104517772d3bc6ac1ad5fbdf6a4970ace207684b2744327f974fc2a07d37137e36649035f2c6fdff2e33bafb71efdb9a81ffecd2411fa7757f5502afc5f39765f5cc527df8596324914d0aa1312400727cd4dd10ac3dd08c82eb0a569ccabb6d99d2cad11cc73797cf062462dfd73782f81cf85b86e6fc91e2188ee3cdf44c5962ee1e4d7e9dc056d873d5255c807162100d5c00adc8f2ece2aed82a1be37c64fab360d964e4bd63fb5c9bc627cbc25ce12aaa6dff06090a54901b711413841550eeba07ed4d2d4610d2e5864e40de93bab99f0a4804ce1a7fda3d78944e81e71924f0df67d4725b8badcebd4aec484db068dfd8c955855557753cb7dd59d98557ffc9524a54e2efc6f163dee6413fa86a8a62d601456d0ddaeb6715343d50325cdbf3bde68c632e78344c6642f6dc9541b4fe8fc3b36c6fd111713cc3a7c43afcd75ed4d18c4e1f89332add2e386e9e6898312a9b869089475de4ad2acb18a470866a7e5c8b2b203989d5a1962bdd5a64f0025594c0bbdd7793a0e66638d1d3bf57dc1e05e495331bcf0e153396570fe2d7358f466e3d0bfbdfe0674ad1eb49d9b5d71cc9748a1ef682e2beca03afe1ac837c9f8932a974bf683bee04fc8abdd79734a01d10fbf8735faa59daee5f0722dfe390171d593f48db601abdcab0fedc22106e8e9c745e5d970ffc197ec50db307e5f134f4a0308ab09d48dd69d872b1a909eea3bdeacff384d7e1d6bdf94bbe51fbd239bdcef2b0b4b989fff862d5ef249de891af4ba48b7e46feef85023c78314bbba062aad77a8baf8a9d13f5a1e7eec7e4b4e336d98208342ddb0748877cd9ce7d371950d0aa10e8adfa6bf389587148229831f513e54d94c10ff71c0031709db943833eec0fa517ff98b3ccf1c2573e31677b82d48b043a166b275007c404ec65373847c305ae84a6b6bd799f0f74ec7f995dbc7d90a8b9a61572dfa2c0c98ec935db7e4b7d84448c625b5a718b64372e4a4b4517cd4ba2a0bc0aa85d2729561a41c7850f418fe3268fab09a560ab8f0e59826f9bea6ef69deb312176670fec7e48cb851191733399ee534f461220d76c53c505967e907399ff018350a22fc7e7e36aaf5b99e70639f2fff344de5772c5e2b89e3ddb5be634c546d59ddb98bed6540d11fe2f77f9135f13dd8e59693f2001f62258d22ffa4cd72f58cc4dd956029fcf4bb525a50078ab2900a483ef0a2320cca4602b459bf038afecead27b1ca4768c53b2eb02d742ec71425e3f6dd095aa6d7cf088bfbed7440b6f4842506dfa766e60354027d279695fe9954510b9743dd2aaee7297f6b23e75447f747ca1104c3d36c760c0d88360b46b77e6fd3e376ac9d68f6320ae0a65e89306a1f590cfb73c08c5f61fee8def1b4a7ee63d6cc241f247f52f0c46571f871e68a846e44f7ae764ea9b145b85a526b647866c280750d1d1ccb84e6da67684dd6c32b33d01693373c678c5390fe8297e0e9aae1fcab4c62962e13cf0c57f7f9e44f76ab3700b7283220502596b9a217dcbc2da0a9760531cb4e6da9131a5b0bbbab91d780264b068400f68dab2fe757a504eece531f6c4a868a9862255468cdcd6ad0963b82e83d86cedaa13784cc0730a0a793ce78d67590bba3b8f38c43d2cd2d2d8e0d45ca920998e4aec5e89dafcc2aae36ac3dfa33cbbad3d67346315f84149934f992cf3442ea0fc6f57595f650e98cbe0d47fc2fb489cec0f3ccb9560e3983280eac3913d8a7d416f906f7cee336d4498d8bb53c3b35ad22824a1e9503d78b6e325451193cbd63781f0c9856300ccbdd37e6acacf93f55ce2e53209abdc6f8bf53c9a862732041f2ef2e04999ca941022a1418c40698ab5f04bfd5a3c84fde9539cf014540fedf02a421351126026ad678f3f7ec09eab0d958ab8f88f621f963ef1488673fa0b53d2f670842b09db0b1e618c13eea00c8d9604671cc5eee866079e0ce8d9251830955581ef0616ee0b1efc8f5e09f7474b281685f8816274a87f4df37c0b3bf4c9defaa95571d75a9ef6e86f1e0c9240b836b2a301c587e4de98f841643eac2a8b5862d612ec03a707e152c3007f981c9bdd4e267d6610faf8b4f7a013307acd81f3acf05a3af129b3e46f036ae49b59084d8dc9d14748b662f48d7166066790156dafce2916b612bf5ab3dac1a1f4b72368e9a6c87d53c0080069de3636d1d03b8599a41a38bfd22043dfa2174bd635db67300e461c36e97725573a7c74aaac1a3e63e40a894a4613f1f64135aed335be2f2102dc5eccd98a38312e01a7b9dca69398b4211c316016a6019f8ea56ea425e98b03187d4ece747ea3c0b59da5cc4d90b0569455ff096f53d4093944c979535cc17c79d58b1ff75bf0556a23f1934531becdb22114ea2a1ca7b27cc84c69259b48cd4902f3b242af0f4ba871d2159d20d14687421a5880726867552d45240a78716dbb69480b7330ba2e4604bec3388bbf55fa24253ecc60d001fa88f5b4814723a20d3e8b887804f2903f69d6135ebb01df7ab800c707eb459da39fc64c8269b60ad8cf85958a7d1bf32acfaae2dee308a6153c5f31b74b57ff66df8e6b8c885a2eca23a12a16b05ce4283e4cdfbaeb265b2c7d009a3dbe94a19d47118f38a31b470b8fa8e0d811463b521f343b56c1faa7f9bffcc0f6b1deb6c34b2e2e27de34dfb8a38bc3321a54d18c0e98e904c966fc65a3eb5804f0c956f7115620d30d8d5f8e8eadec36b67ec98644439d937d758957b87535de4afe94eac173feeaf3a58bdfe27d147471ccc409acfeaf9b88b9023df4ecb961405b1edfa3e6fb5738c6025cb2d7529bf1f578af9a505cb38ba328d17f37161478106a168ab5b769f7df2ff07ac95583e4e2d77588898520b1239833d52853c141ea7da9cd701742d8f585f1bcdfe02b53e1304cdb778aa719b5825ad0509ab269331fee7dec42d225ed663a5f4f3f9b213ebeef2c8eb597e572aebde9974442116e016a8628927fe4c34b94423bd1f0922005960b7443b8dcd0043e23837d2e22bb2af86f63ef0e6bed6081d0765d33f5deda309106d71eba9dbd7adc0824fa474c83cbf353e6d89443400c39f191bd96ad0f4277493e76ba9e4b73f16ab627bff0cfad9f69ecb36df4bc580e30061673ae954103577dc6467d04fe04744b4afa704c533dcebf3a24475f8bb3ae2a944ff2f67fed3321d7762e00559e1b7ceca445c9ce6f556c81bf6d8ba43d0623d01a789fd55ec29bff53bd8ad8afbfda6a86cbfbcd3052a3cad3bd6f7506c2b0993b5ac37efa72c92e81eda8c899a16548dff484a343cb593806c525c363ca48b9a327da388484399da25580656daa2db4a673a8c780a7ba851257a55af14baab94013ac8c1f810c6a58df7ef617b30d29dcf082f16f6328b2a34f471e66e29c2b60b881bf72950347e56380c274fab080b8c485062f7d277ea2a6ddc14b61cf6a6f1f966a57f6907b589db94e74b84cf29f6f0954710846def276a1366711cfd9fb3dfb14e04cc8fab3918fe9c51f3a921d8b3de94caf833dbc198681ad222a1c7768f7c6a7bd9a09481b777f1dd372b81ea95ce514ef9380b81018c26f2a387174ca6c1fa7310416916168541c7f6293ad4996255059d6a7e7c6587283117218fcc8ee91c1600a5d4f19b8cfc6977033a5975b32cede06a1e88ac811105b3083d3e8ffb3a10757efe52a7eefd65de24b9df5e664831903ee22fa81fab503df428929844e02f86d3b824f6556d8a01de166d65ee6565de48e79f8aa17e955db369e54a74573eb9bc8685b22872c57fa503fe06a93f8a2123e3397647dd93c00d27b571db66334e8d626db7e8d28d1a236691283257e860e3811c705f38ea2a2adcfa2e4b3cee1c7af3a542941f0901c13eb4d7e3ea1c51163932f4b651333b7d41ab29e6557c2630d81b230958601c6c79f6bd10b6f50667803016c09eb66844d34b2463108591f0a9e63cee648d8473e5f593d9dec5de50d2395bfb63fe0c2135d57c5877aac6e98ab99df1394fca27455cb6d0f6004567b4f2b8c6ad98c0be46c9e6313bdc98e3866f9f720a7c3b95509d5d6155cca3db97ec37ba234dda1ccac1d7581f3ca1c0020aefe85804ea1bb87980cb78f22ca300c97f609d48615bcb5dce0a7da775ae20f2cd50df2ed4a57fff6be5be02473a1b695fd5cec0a811432541a4510652d3cd4bd4093c46fcec6cc1788c088825e580bf9bb7ccdb6150a1792b30bb0b3eaccd01036dbe6e74845a9bf66b9bdc91c073f80283b1cc9689aaa96081fb9ede4b84e308cd3915a81157646a9fda3d2fc7eccd652c5fcb35f21c3ccec531105562f36e3a21f5adabc962cb9213b7aaa7e5801940f893d471c314e057900fb7104e514716fb295ec633f7a37ec0a9cf66357dd1af0e63e4dcd7627af18a6775257a74ab68d66d45e78edea4b2ec675597ea1792bcae6ab2e312f556548639c3c542bf328afeb7611911e5bff24413c5cc399d6f041afed990f14a03e275a8ecee57138c625645f5c99367bd277a530a6310d8a60cc526d19c8b24da5494dc81b3a21693a7185e4f32df377fc27335c41e079dfe1ffdf4345e26044eef61e421c9a0af79cc8ca244ab8ffa283986098d53a39edc7e90d0e45f105bd6376aa058ba9dae1ff6a75ff54c1699f3148fa73131049619781cc1613c7b3a046b75d50639861024fb23cd2dff098ebfe37fce3a940c0e5369bdb19f309ce70a0a020986ad817feaa26d59bb73c6914ea7c7f96a25063f5ab73fb2690c3595cf230290babbcdb328b9526009dadf71278b206ede1cdb2c4046667546fbd9e03354a264ec145d077da5fb95a53f8e0ebb16cbc866df070622e7d2a5917dd17ddc8b6cb0f8a18d24c24d77de8857806f03578d688cc032173e0927d5de8a912e41e86b2018dd04795db41e942576681007533dc6d1976ec5cd2afd8f1664e2c12ee25082445c3853434972a89f0abb130af04d33155bd1405b298f30886da894d5d7e0cfcd179beb4020cd62bc7e3c951be4013f9ec86981ec0242ff298116b6504fea4e987e78b892b802b615372e0bdbb38fcc2076478c2188ae4a3e668858324a36b6ccdce7d007452926ce80e7af782c6cfa12a55321b946b9fb7e6a0ae838150332856e7cb1e8c0cdbfe03215c20043e15cdcc3cc265fd664a35bcb23cc8c571f0397264a6b1c14320fbcc599ef3b51dc2c22d965e80ee12aca6da87fbfdf56cd82b86fdade9dd55922ab081f8215c4072edb794781bc991ab301bbc0e956ec322f3c3c4920b684ffb57ed872d4cdd7e338e1f62f830f6b1f04577046183e18d42feab9501cc1eb46eb7b68b87d86881a40eb227bdc942e5563d43ce868517408c2e218d521f5a228bbde02048d52cbdd4c7547d68483f9e2cde422023a07e9fb081531725907f5b2198e53e59dd6e45c1e90089850ab0f94a6b9db2815ff797f4fca4342f241c82311566fed6d3d6dbc2e48384a28943cc8cddb107b8571639b2863ffdf54dcbc2a246907fffac7fde82edbd7a6f1ed58977778b4f47374a7934de425d5bf563e5abb5f93f8555a116832e6f23b959e10a6b04cf24237c8b7beb5250d3cbc5712076196fd25f86be1d4d064c1814aa3fcd8c9a629a5fd8ebff0a5b57576b7ce26c1000e8c5127ca138b72593bbff16736d1dda82099fb41f2f42359ddcfded8d2de9eddafa16f0ef08c5e9b948326595b2183755a26809dd0e9cd0703e16d8b810d0b3ef886b269997d14ba8e2a98b7885cf4750784f0ee7b75ed3eb58b483cb4d8ccef1eb0235f97c78f30c1c508e290503f5f08d9472f97f1aa6f00c9cf99cc59eb8e5bd557e5dc14e0969a58f8c90ec99a784912346c3395319255171d6535191dfd198e57f1b1bc7a8aec721beaba243b1adf2f0c4e41bf2a397c4e01b0553efac837a995e364a1aae4602be3d5afbd463db3b08546e4130e26123a688455eafbdddbc757bc97d89f619378142b1240fa16a2a4d3b1efe27e5c33c7a4b95d0adc1ea550f44d238eca8dfbd3fc437200ef850e0e7e3a599e5178752bc7f809364f43b1b056a469722e150ea1243821baf7ee05f84582e43c49b904aa160fbed12bed9285a175c05d2e1e48894f60b272bdd4b03c0ca71bdbe9b8c5b5dd51f037b58e56963efdd8add7fbe0cb363dec2e777e2b2f92299d0c45cc9f21ab9511432274fc2ae8fa6215989d7a41b7bf00d64f4944abb701d4919db08051eeb1310690ee4fb0cfb7a7b451b0fdfabb2399fe27d6a040f2340a2ac56a34526501bec01046e473549e4e3cbd99129fb10668ba6ffb48a1911b38236212b048921ace4d741eaff68c240631e01d4583d4c065178fdb8bb392af1ddabbe2c06057f877158951bed6d4ad63758ca0c431f143ca2790d65a700292d28fc3c912ddefeedc1cf611b4230cd5e3d33b88c7e99e0e6732f846d2cb1dbfce8d170ece47137b5a8ba02d5c46d00ab73cf7d15e6e604039e790ea89e9cbd37ee6cf4e8fa712af854eeeb2d820869942d72c2d384fcf73218549563f5fc5def589fb83010fd67d2b2741c997a000ddd7007c4d7724ffd67b80bdf65c5ec3f183cf121fbdeefbfcbeaf14fd56370c030a1dba844cf30a3085d59e8b316b98316cc3a66c2c1e3544b89fef80146d5d5788a1da8ba7af3e47f45b525b4684cdc029e1cbf0266a9f89ffda42b0cf6438710bb1dd72553493ed99e1a7a2f9899854c41931f46cd3a58bd6fbf716f07b58c62bf439441c24fb6a7f52c4bd6b790c43e44106c6e59d3ac62396996d68c83a8f17bdacb69d9094d4899930525ad6aacd4a231a7505f1f32ab52cbcad2f8bce5d160c98f83b57594be166a873fcb802530edbfaa4f7d6ff63c7b546e6eefebb96a50fb7c7430d11a68945f3211c2d828144ff2bce43ccfc03c3557428fcc0149d53e49ac5c5048b96e649069bbf00cae283e01fe5549c05fd08b93727dc5a278e0533bf5101cadc8f8a356acb735a81ef9dc5728f83095dca2db5d3993c3af6591d8d0462a2c92f96e9097adf81883b2bf6ceb93e221c8750258565a312f79c13746fb6c8bc58627f86c038ca10dffa23a4c7d68e8cbe8340d4c993d1ae9b235978462392daf12b2682ddbcabe5339ef7dc254154711ce66d076c3bfe5fa7b81381de32efd87f8276c9d28a74e941b9af75f3874dcdfc79c58ca5fdda69ff70210503cc6f916755e2944cb9af83490e788a7279f9095143d7dbbc44262b7345719f08c5e16673f6677a88964e9a2ac57952932b6ac39412da07ecfb1dce9bba8c276869dc422bf1c9ac8da5cfecdc6cf18acc6b0a4ee29ff9419f08055604ee1390f1e11c1dcbeb7e5d4dcbf848b5a2ab22bc72bb9806e1cc9939664051f40e872a918c70cfbfcd2a37331c2c39b8132ee47cd0e646086696021445fe132c24bae8759476b6d128e41247f9177e0ebe8112063f15ebabf7079ff225d597b3bac3baa61bdc2abd3d2d218ac1fb1fcb40d37c9a64d5baf509d9bba2503593d654d0a89aff414c285f35e05c14da7e3ef8aaa0f75267a2948b5331a0af9ce7996a2f51408f6b1ceb0deb3e6ff8b0b50d48a32c3e14f9bc14388b72c2eb97b3c6134b0e903d4adebe6b9296c67f80ac9e9d76e6e51582eb10445f7ff2b228385f98181d1e4f8f82710aa943435dd4bc1dced74479ae6c23b2cd6212436dc480c617e511115ad1d8d25d6e518bca4c894d0081fb3488fd0510c6d90f9415b4c52084f7ee12bf3b2ce43f0357afc27f52fcaed1d2a605ce011582c76692df72d566c9335fbab327de5cef0aa75cb18cf6252fd5731eba7800afea42a1b88550c89f5d2d51ac4016b0d65736b75b20586cdf341ab8873857f40cd38227673bc82d7910f102712b3871c15ec4f9215ac1696325cab8f19f0fd589feca036fe202b34a89bee14eb602918a474ae9738d81c55edbb53c7f4944ad170034ceaf1331b3cacecdb6f0990b550eefc78a76fe9b2cf0c31b64c9b5e32393047a40cc4e11a8da7a41c31e9f739c57e66bc0d30626903fe4fc9759b38762ba033ecfd1448f764c6be1eb48498bc478048eef20b4eddb6fe0ff5d782814837749b353d278b5e55360b0ca647cf653c4e7f398a9649794f341348e65f04dcf49f4f3b2614c93633009b29edf8c07974618bfab31a3471a5cf72d729f396f573e8e22c5c91e0e6adfe1f13cb71f6226404f62c7aec3e25d07499251b5b3ccaceed5fcefd46da228376887e71d64b094cf85da4aedf09bfae78467d8ec500b2d55782907635ec8064dd81cdeda1d2257a40924f10ca80283142eab6e3840ba4d69e9a445ee1938f55861857f3657f09adf43a41915cc105d3a58ec312836d19e76982fba2e2dd6aa18acdcacbf6176710630410f343f7037fce5c07a04741a45fa4d1269da96a05b3c337ac0caa5261952447046af1b1a13cb2ff3c010ab0ad8992f1150c45937e42efcccaed5db81280336c3631e5e6e46da6e805144b1e05a63db94dc3077e62e31844c044f75c4ed1129677636d894cfe9a39e4750a71703cf6f697349c8fede53e06c38f8cd73958b5a3b645319697052ab03c32b729a801ef16f71ad0f35e41c9b6dadb648ae8343570ab759d90f95d1dd72f4fa29aacd7353c254bc57b69496d2cf2fd69c581860682941b835f5f0f02132ed72cfdc0bef03b4c2260b24d4ddd51699e5e1cac847aeec00852a9c1d71c73b3aff4c10a5729e669253b7084a353dfdf22e42bdfb3e1b811cb56c207ba8951976caf800e8a257271229411bd5a7fb3a554f01358ea59575f5e3f6e1039dc053e8fc16fe4031dcd1f5b6ca60a53090ab1ea5704600bff1d749997dc50cfce4fe5db6821429393fe5af19bd37e3d78e6f9165ed92ac1457ba309d73b30f735df352028635b7372446c38c9fbfaad482e576fa73d34a33b138c3db883cf38622d0437c588ca1e6def201419aafd008857f2617485e0feac5ddc9c820ca06f324c7a443141f370c9e64c6fd9a78d2507e9b021988fd7393000a96965c985adde1746c7473af416d7733ca077e5ba29317155a6eb04e30e0ce4892b4d4eb2c8cbd492081d7dcd4256454c0eb6b65109ef70647bcf6121c961b4f8de6899f5a7cfdfba2c6c7e076d17da07af4ae27c2c0f1b157ab8a6e27aa5d198a1d44c523f3d0afeb7d1910d833e6418b69da6fddb08bfb4034307b6787bc2238c4eff4f2e670c06d365e5391402e88a19ae2c78f684eb9bfd7b06e6e8b00750634b10dbf1694ca937ae921883fbbc751db6ae488c6aebdbe87418c7fb232505d14055004699b14625db7d4821af45cf35f89da8090277926df436accc8951b8e7e259a925ba6d2c0171d5437126728934b3122f4aca25f8a7365c98ac86fc924b1ab03bb62c69ba3fbbbb21b284b8ccfa9e826432aa6c8e3ed3769bcbd848dde55963e5a6d97fe3180a235194075688965a5c4cd61a7ca409b08cb534cf75f06f19f183d2864847fd539d45f4f6bb0bda9515f2c66b77a0d4d332cfec815949ce7fcd8fa73763b7b0e5512f15eeac326c3ea45aefd445d69e8b6fc9fdca592b4a0a939a3dc9b28263ca0d5d5281967f217988ef83d3caaff78b407bb6aea65a4ea9d2aa88646de8ba549f8a20e6ffcfc0a70bd04e0bd7e41c206fadcb1dc0d0a520b1ffb0c1dbc4baae99808a9b4b9920782773965384ddc147585b32dd9c5792ec4c90b7a30639d00c70ac11aa340a42640bff67642c34e8c2b9f8d5202079baeb76c80383ee8b1588c15c6ffedef8e6aef8cd06c223039bd01deb0a273f8c7f2fb6633e5c935f6c64c9b1a5c4af505ead72ded359251640c52a1b45c31b918528cc982e22c6025f0c4a7d194146795fd5c709db5c5efd048f69fb303b440c4e44aa62b9798fed8e2243ea84585ac2c1ff74b57cec08288c0d1bf5e0019a332f7084be44215c97951515be28b2aac0f72e97a8fd552676cd849f03dba04dc3d4240777ba4f33a14eb61b49d40bcd5294c5a39685e7ab0e6050e8ee39efe04d7374965b9795a05f8dbc8863ae55094937c504d02d5b9cdf34505da4dec7672e6ab9a8f272fb2724ec6a20d593beadf2e70f8bb8d7a1a262aae1cc5ae5e412ed9430cd4b1c904df6f0ab966c242d60aecb73cfb4a9df2bf0c60bfdb9da3d91fdedc07f5e5667358252b2e0bd8239e8ddc0dc3cb594684f724c10b78c163808348817de178baf47602671683e207e901af185346ada8cfaf7ea10ce07ba3d58452ff72d2aaed4891fdf2dc3c440443a4ed6400ac6670e26da1c68b4f5df54afb39e174d278c7f6aee2aac30db2502f2c41604e96641fc275bc227e26e55588db57514168a8cb03973ce6533d57f836bb244a37b546f2513de48b4d405284edc4175860761b837277b036720134444dbcc166356b49357c9110951a6c8d1698404b5a83a72a32d415a677171a9aebc62ac73b9ae6ec73703f3175d4024b002ac06caa275440cbf0bf2fee8607b1c104e8e7812c7fb3464e0270ce3664bac00af5a03dc0a1c8575179e3c1945d7d36b879db30d7d7cb40c6c402eb602d0d5da406becb92b7ff94f379a6e826c73c638bc0a38aa2d1643880294f9d118c3aee90e181c93d0c6d0f35d4a5b28ab58187f8d0e41cb7ec74529697fc23313c5a003e38cc8ca91b9388dcfa06f0cd0e949e448d2d471693c7ad1a50366d2fed4e8a9152ef7e7caf0a994a9eda2ff70594e974b4bdf9cfbd2c3b69b5dae67bf38c7d50246b40d5cc48a2fd7f9187ffdd271ba5ac26cb04dda7344c079cea55089d05cbb38d5482b661e8044356617a8c2ec2c5796de2ac16cd6c05e4917eb457dddd7126005f4eb873fc5b604254d50edd6fda4d6df15af8c5de9e97ce04cf644b984bd883ec7bb7681769cab02d98cf8ccf5f30073980c5fe0b81a5ee8d7b622ad3482bdd7338e04dd384a126bf52620f12db6e883be7d9476060af75269d57f62d4ef16aa0df5a2dcc5c15a69a8219012e5c9d555749d134f99bc877d8c5ef1577b5c742187b8aadce4b4f9cc5182138d72a819b1dc604fb7552bdd3a00b60542f38fafec9e99c4698701ca57313bab5b71c91d4b87f7261e6d6000cb2660e0f336e0085e7d01fbcb26247f2807203ff82451d247868f378978083d2483a7fe55d79fe6220ca547d342671a37ac29b31ed4cc979d8a542e5bc63ed8c1ecdc5c0a7844b2797d56bc923a7c4fd90b686e2a944c564bc56e8668fe3c05ebc003a61c545a313f1fffe73b205292255186c07bc8eb7ccf9f9e2f06ecbe551c7574c00e9fa13c4419bd08531fff054b1fd183289db318e93f8a6ae9c10e33d97f4c57f2b20d1c97e7bdc91c865cfff2f9115850b65ab45f5ed2af3b3d450a0f4351915755f317a91d4b198544118db1cc03f4de43798a95e9f2df1fab5bdc70b237a3364c09e1d97d6577808e1bd60a3b131fb62ce28a94f956d17ca3b8c13c79d7537b004f4bad236cd03d85a7657e32aabbc8aaacf170ee2791b08aeef4736107aa760b9dfe4d769effd2ca6e9c327f4d7357d951df22884d4786b5600a6d571a1c5991c033a6a47453afdea14eeb5ed9b3d5d709a37834511b38da3c78779a6d1f56202facc265e481fd0c6f746e2e30a662c51b13139bb727cc0dceaa2b8db7ab219489c3a0361bca50d16af0d1fb71d9ffc525984f2cc14ae64e30dc2235e5e6777ae2696a3c181664efeae04e3e057c3d1a0a2e95911043bcf23f00ecbb534b70c624ab81afadb37769e1f74c2eed4739febcb94edee0364deb4d1793cc13927f0ef928e07ae11d301ea6475f8b701c36ca23b415461017cee08ddfa4f9206f37791c8a2064db8703db6af2ebb5bf5606623d2e1dbc61c590bb2d36c11ad486a8df859e17214f97864af348afd69f146d5482d3ad14215c60c4ae58ed6fbf151f2b3ab1d8d49339274fd4dc2ece4c47b4aa06a5c36d82e9b636b2bea15a0e7b62380f1cefc169bc9671d5ce0d83207983ac550796b827cdb4f5316dd95b05e560901776a12ec2f1193cdf55ecd47d385a10bc6cc2d4ef2b8508351b022d3d50f9a88d01a74de15cf07ee7284f76d92da8f19439fa7682ac400643cec470bc6030f35e42d7de9ff73bc8720231cec7836e102ed09eb93f09319160766a00f5f1bdd1c7b96059df627571c5432bb81b13df945732da6b886561efbade488e6301bd7eaa79af126487d7c82c9ac907d6207628d15344972196cd7e4b9c21946bda2e86d60e1062535db5d510dd0ffdf0b0cf57d1483cc924eb6609161e7a63f0e49c9897fe33a00cfc5ad5b59850d41f5ef7f6751fe9299a98e63b5d49ac88da22d7546f8e1a50c043aa26a552d89235444dcd842dec8aefcb701f8dee04a59ca87d05252f4c389b07419ea61c0714373ddb8f89eedab480be91c5455c4c55a23263a6892f4be903b42e0130f9c33edbd1ccbb09658d3e9df3fc238f58392482c6845d6cb605644290fc81a65b54ec5b111391d071a164be160ee55d019f8a94df9ea4a6d482b0d4ffb21a2165a335eeb4445b19dc7b876bb4429822f3123fccad1489f1eb257434a61a5a04f1a4b33d12dd42ed880945b8cfbab7bd0bece97a687798685b9f6ea97d45ff93cdf0651681ac3a1eb679d537bf0db377c0dd68980602d73d6c0c210f6f7e0aef45166a8d84c76fbc685016d80139f4095c4d83078f6150b39a0f76beef14ac8455e0998c520e707b9dc5752503315c581f7fc4fda364ea003f2a18ed50c2e5b6f2b226e0350be92091f479a076afcf6ea9034c500e3f41ed12a8f443ed6fb957ba448dd976a37511e4d5cf9490bb53ddcf445f9252008bf456ac5d26cc30f1d48205d498df260258dc759e26893594e44d0a66b4fb3e8147bb1ca543ad5601df756f9e16e91883e508a2a05da2c0c3f874b8c90df92ce310e008e2f0ffb87b73a0dc07d540a608e9700bb054e99d3f08faace02dd7e375a8d0bd8d436c5a9a9709abc34522a2c3298e7ea7cec5248e1a5deb0ede38a8c8505bb061079a2a2daed26c25ec0ab8e59797a222edb9e04c3ea5de87d34575d5fc37a415106cd4198714ed743248af1d630221e4f16115038988f911cf21aef7a472d1f22fe6f72d11be061ab8c9b2f9d72ee426245ce1429f2f886a0e04481058828c0b1c5dd1f19c9b14ed9ef495eea2564aec57b9e0563fa9323ece6d62471e8ac64f3d4f4105c4cfe75121b42d522f9037295ea3045e2c5af46d27caffc89c700878a42ec8c69331e4e73643588427274b0d412144f05a22f9a8a19e41399878323d1db627be785672765bc3ca91ff89a5befd0b15063a4b699ce67b96c7f037980271b8cc69ff0ac6537f7a504cf4ab80c6306bf817b9db63bb911f429c5736993c6de84a2b9f3f537413738aee02099697f0aa7451629c8d18e37756c0f9421a2422848cd3233375ff6e281299711503a628e013e1554b39b2a1066c897a24f0dad6a3b552a1085885adb8ae11ed6748d101c2cb866cff06e8400136fc4e4606a63163f2708808efd553af2a9561001824f5457fb21a593b11ede698ce89aa22e8e60c73fefd02aa17440150ac75a0646b9ef92dc43c8acfd88b7910508d6e5af9843fba60810bdd22765e9e22687e628fafc3b7b52ef460949ab78e71a5b6e87503b58246fd7a49c69b295a613fba4be3925f42f00588cb038cb1418a22514b112e33df378050512b68b665bb356883493213a1dc1a47292fb3a01168484c1d5db7cc3b372a9b07b4d466debeb72c0c59fc88a4ab7710ceea0844dbe2d45852ca78fc38cb285039149631d906fd971705a3dcd0001eab8290f6c7718fdbaf9a7956f88eaf7a7b0e1aa7aac3002387a8210fdd1b1d7a21fc534715c65b118df62fe8c193495ce6358b158a5968375b7aacd319bfde1f25d9cdcc5fb373d2cb233f27a52917597f70078fc20b3af52d38fbf726f248cecad1c63073d4de43ae3df3ad7e8a885258baf84c4d4ee52f677e0e6f1f164c8c119722a4aa3d4585a8ef9fe34dc4aed513a9da7ad0e92d26b4b7fc789f1e22914ed35e1b668fbbfe659707148e27ca395db4b49c13268f89de949c3517278b7e4465e9db08c7e4a02ebd3bfaa8095ac1a99f27addb3f20c48917b0e7700672cf44fea1d83b78abf43804408b94b4134909f544a2381fda01a104f6318ff0294a27ea9ae2407715a4a248bc1f4e0373586dd281fc217e24a04ad07424a0a9653a6eb13ae9658655911fbd4cb7533c790c1b37910d7cefe113734da7d0a449156613f524f365ab9a95f66977b27de0aa435870187f1e792ceb71fa346d1e96db27bdc345d772a6c0a96850dff96378f9d7d9c376e3e2493a1121339d8af5b1e1afdb4a0cf31eb1c6ddfa5a38db36cd0c5f82cd068ed045d941ad4cf14e8d2e4e7d37d1fe5b7dabb235cce428cbf3b2b44d5e91a1cea3f11525cc2de22e17786d920a125f8c6a6ef81640d3de05f946eeb716d58af7d62c8d68685efe85f6d8ccfad79a3fba32f4041ff73938753b70e60bec02e7d49c3098d41b71887b6d59919bdb8b303ac29d95638ff8b90bdc416e7030e4eb99c42ae1377f8b698695006a061052126d6995fb5b80cede2a0a80085db0b46c69a061d59d163e05e1d4cea135707286465a1a42ca8ca918685132d0f655d4b1145f77070b3a3513b90e42ae614b0cb72c1a7c4c62455c3f01cc5f6654c6d0fd272cdd601610e8961c42295091b893c769b0a744401d2f70d51fcf471ee622d9fbe80ab07b593d372884f5929b77f1fa1af63ff158361b322987d199aab2cb0e361e6b2e7c322758feee24e7c98f22502defc9ddb18e21e69788ad3c3e2ce7a3701fc4fc530f32c9dfd1c952cfc398ea0a7ba87ce86881beec0b5d8aa181a027b5fd2d347a52a3a6de110207802573c37994e672c5f408c423df70de25f9b722bec95df5f8c05f1ef41c95f79627785442c1594f0094dc57faa02140da1c90e0c8b2b8f58b110d89ba857f0cfc6c0c9b75f4af3e6a0eb6872ba4423428274f461658e1beddaa1a1c5da20d34acadbf47c761acccf1749fd9ae7911603d35569ead7085f3ddf8042b4452d72539aec352a83e33b4247d7afc3b6fca2bb8df3bdf2bd184cd7ad04269518ce4cc7f2286b6b36cb7aaf1a3e3d0d5cf6a010a0913a9220cedf8cf7875265c6ff1850248393dcd1be20ddd4569ca58627c6582bcb630c79b7e6097060468753306c5d315a745bcde1a3374ec746182d54dc539def8188b444383c79e7f933d542a58d0910e705b4861cab1bdfefbe1a21b127f26194701b10c097af3c378d69949104c3bf9fa302445f18cc412fc68d0409af9dca6d9585a0cba5f17b8d2556080cec9bb5393afc45c28282caefb44aa2aac39ec44612ccbb4947fcf80b044560070ffbf9f8d0a8a4dc47980d2921d5fc3caf1505829ed6a78c076456fcc797d6bc56898f4522a997400956813163e306582f330540874ee6f2c9c22cf357d7cb7aa8e8354988a27f2572afdabf018f45fbeb4805e4702dbdd21205a8308fd2f5a675008b46f4b6bc25e0b81f6f7d7bcbc11328833f6612a7fe60cd7c76b383f6b8d311454e0c1b3ab8fc1114753dcd8c0b09c3b08523f61bb4418e47cb3d49ea4cf49bd38cf5f826acc9132a14365d50effad454800de510e77927c7057c1b785065e51925d4027d14483a052ab18f6c1ebe304390c24db3195cdcbf4311aaca4e2f77f6ca3faef55b05e20588a4ea73ca2ca3a207984e556d91ac89c514ae749bba7e41cebf0b0442148d6303893a77317ab5571675c256102c5675bcd4c56d15c81a423b80a7ecac2444514d7d1d54cfd26fa3c157df4a07b1076a23d6d008562b3576aa4ce6821560f9ab4966684f297ec2ea8382d9e04e66376135459f60205b64e1d95b0ca607e7024d51e542d1d5b453e3c76c97dffedf09f72de91ae0776ae19e0c10c70400f1aafbbd3216b20428b9220e3810b3e937798418719eedbbb03f23d0b5ad19fa26243a66856af062e667e7dc85239e347c74031e1b3312636120d9e9c148a6070a04660b3093d3edb330ea3449aeab5eff92f0c88e03fe51c8ccfa3e9c2e8b63ccbb2754fac3da57cafb3c1121db35ee52a2fec6512842dfd3d998c1f308fa85e031221d63aa1f86e7255d2adfb856d97dd528e9226da7c21d78df7a61437e987b4003e25b5e390d288c99c9a103c2db28aa61f809152257bebbd0c9d87fb1323341b494e793136f9d21a5da3e48c4d747a7ba5265a87a36e87e4631918df076a9bbbbc2fb0226e8e313f8a3317a98a23eefce4adbb63e1c06de1a84d471d25102fabc70cb9a6bb073ebf9dc0b1622149f80eede03b2d596063043a2680a4cb03753b80c5e3016df59b3c92d9f7f980bb26f387b29ede3f631471bf611a1e24aa59021c13b01118be1dadb1a26fcabfd1aee63588338e74bcfcf19b6ab5a725bc63f0f53660fda7de0f03b3e0760900d5b9e02f29c0d8ecb52af1f4a8f28c4375a321cea057c24909038af6d81a41f8caf41fff6a2b48cd79fef4bb53211d32b24d759282c06d0a1d707660b0d96b0594cdd89f935020b3babb43a2b8af469f381f8579667f93fe3162299c02f01b4fe841076fe66618d3ec46fbf455581ecbdc95535a790b1ee4422ff1139fa9cb956b22b0a9efbb39e88e415cc0a0bc5b31ed12c95a0ffa58111986b6c4eba158c62ecec80219a85d28f831d4dd056b485f0c346bce6ad33d157b9c8e3b3bbcf43b13783d606724b4ddfd3d4492a5a8aa440bb75d866c5d83515a964ea267f2ef1582a4957ba11bf5c38bc6c24bd026bbb0e03862c9140e1534ffd9019c488af3c36762c128ac127761a570c90d467c6bd0d8114943cbdf31f0b02eeba758db6005309d324190dcd4f4ebbe0b29df9482a7e950fec23bfa94818a89a80da6bf9410b1823598658e52d5d6068ea54c69183300cffd9b21b4a7ff491e98a5bbe858f37ec45c62c5f76b666a9023a6c0e7353f548ccc2e6ffec165e8720b665a67b3c2b112953f4b21c04b2e799f014004c400bb2d4a559d797ca958c489662e12c97a903846887a46f90ee798a7221872b1e211f54254dafeb535cfd1a9653173ea20a0a111c9256dcd55ce38177dfd1bbd333e7315a6bde29ef8b8f7b3aeb62f7182a8992cfb1b6299af274fa2782b2dacca9f204db43d07ef822bd79e6a08fd593b34b4dedf6fc3ba644fd540c34dd6a3aa53dd274d1b0f43e1de7944b9c36ee7ef46b2fa275bc1ca05794bd1845c944a9bbfb5f809e6f4718a71e03d381c20398690d44d35b2e29e8ea8519cbe8e3a576121181593be789840c4bb66c76f12640895a6fa9222057a159f2d6e7741f240fa4f70010789a687696b4e01fd163ae9f8e035957781be19bad3f5c3f50379e471e12c0c000040000000000000000000000000000000000000000000040000000000000000000000000000000000400000000000001000000000000000008000000000000b3fc048b9bca6a3e48e87c13f4b7b63c1500000000000000010000000000000008000000000000000400000000000000040000000000000004000000000000000000000000000000000000000000000040000000000000000100000001000000
Add the public key and chain ID to the .utils
file.
export const toHexString = (bytes: number[]) =>
bytes.reduce((str, byte) => str + byte.toString(16).padStart(2, "0"), "");
export const publicKey =
"0x00080000000000001f7652429b804db1a5cdfb3c36559ec2fc91a20e96318d9013e47573dd2fea50b56fbcfd7bff055b86ecb07bc31d411005fd43b2c2f52c8e64e3a0753016f0d929b709232220282e53baf71098a4bb718184a6f7c32c7c772da35dc92a7c5d2d24c2d8c394b9f741e401e77c21c5945572d083aa76d5fc4fdcddc44b2f6d91dfca371475af8d510c40eb0071376284b47d5c518330b9d75d8051345a36dd288b1ecc3c9666c12835feafbc4f61f837243a44cefc2fda86089e2878bf38d3a4577687eac92496bf0b8a1aba1ef8b0b60677908f0e256cf08ef31269f2a9039d5106d37daa0df8fb76e38a6e8530735a1a0b859b0b624d58d14cb646f227fde2ea422b0fd0292afbcbd67221aa38b140a78154545b14aa4f52dd67645c6d262dead36c14a8ec36cb637da28d82e549f71970a25cfd7679255e330957646ac6b50151dcdf225fb0378aa67fc0c3a4e4f0fac379ecf0a26ece44593d1faf88b46529850d927c56f37f19654fab4868a07b1b3ec477b40a3da879bf5b2767a9d7467d10b5ba8eaffcf8f04d8bed2187a1fcbeca1d4a417d5e0ae82cbee606226e03b6b9f3b56148780dbc332693bbdafcd6b51ca279ef1dd194af1c7a43bdd4d5924f2069c484c0887c17657eb71e3118775e15cd4f8ecbd128d0763ac2be663d1c74a04c372d9983ab3d57ac4215ee529e4020e759b2e7c3c717852282f447e11cae7e8ce8877361a60b390f0f1ca8b7bc75bbde98abff5cfeaa3034d5d706614f8c556f87a90682791649ff9e9a8aca539e651366b60dbf88db15552d1c3e90ef58a54862083416e1b0f5c13c869b4f31a6af700d83685c0eaa3c89b5e360b6bdbb755cb954d40434038b2a33aef6862b8008c16c5c4609c7580ad1cc3c436596d50d9efb39f1dd95af89b41628313950c60fc83d19a10caeab6489884127af8ac00592dab10861895c5abf40eab858006afd104ae5c0cfa4b3e4f5e6e44d2e2dcc45ea971a376c0f297320f301d2c4078db47a1acf098f01d591b16368e7bde58a160b335a08b3ce346f9054d126f3c99fcbb48d33ee33365d9903b6ecc815189c515fbe2ae263d7dc1359fd2e3eac1482261bed60f36aa76914f14d89ebc9062ecac5bab8a1a7c337fba838e2f1978988454f7448a715f1d197979b1cd34ff96479827cd17dd19db034b85e664cbd294319f8e6b43dbe3fc66dc73fba42c54001a4e03a4671ce7a65e1e72f9d4647b91d0e40dad1258453304c8605cac120833e450a18670559056ec12c4d8dbaf47e0d0e168111c273b7f150ac855e5210822870ddaae802720ccaee46a97092d2c3f2ed4996d1b425151315f4705e031541172e1cc7296c285e2b80f350058791fdcc044673778e8f98b9f83d5581f7daa4982400097374425807f7fb32cc200b7319213cc9c56ff5cbb3c697c1c99b90ed5ffa8d247c7fa4d1eec72affede7c1be894249a55fb3207a191710265c8f197f0833ba20f9cf6f72658bbf5019a2d97c6242e0e1dc3d6829d187ee285ec9a1f0fa28c05d842264db1357faa870619e8fce6648040d78d8be067a67cfcb98f5d003e750d6e8b0fbb189b179730c17c3e3dd5a18513486dd74d1eb8b3ac8be08fc7f1b2d3da11a9e74117caf6d017c3736c21248ca06c1ad29aa680dd41be95082ab86ab0d982561952bc199eff5b88ba0b63617d098a5280315c5590746c35bf77d39f7afbdb850a3994eb46d5c23c0d04181a208968316b675c8a0676a61d5870e884ea7a113a643611b2fda17e06f639017c24e4a3bc81cc2b9a3e996b97a506c75369b42b08eda59d5705619ab85ffb0ff7f83ffb5ff99f3d21921852517b7ce88f2df706a617e5cb76173f81ffc38c7f262ec7d7701d873d8bc6390f7ebfea153587260b2cf8f63e98d2139444b121567d3d0f0caa5e0b03e8670453f1f3434a58ab1bc8d7df9e3952bda0ba2a78975d2fabfab54e2bdc5c71ac93dbd3b41b2bb7d389b69458f0406b8a254ac3dfeb49a217f228c4a3b741963f8375ea2f3b1795d653cc450f7427e852fa0a0f04c96b896a0855c38325690c7570a41e418b63c89cbee2a913057ea6aa9a9d5e1794a85ada4d74cb6c7ab5a2794fb4329479820004562d1dbb2735646eaa1cf9ae3154a8d0cc5614773aa834b0e92bee2876cfafebfe1d87bd2b51c91f8771f16a806f4b29145d9402be4615bf0324275e282bf0f00e76ababa8643544c9bda38a4b9fff6e82d694904428a261d2a805948a5130b20df73dcca4a7d37d8bf5aa811c592f801cf58d53638dd2f2c62f438fa38ffb36a8b154863603ad81fbf1648a6568c36fe7b5496b03dd0b8fb0027c97d59e9265815c44a73e904d4c6ebbf7550288328e4f63853e8ddd794638be914de642cb473b9a2ec7a390fc1e118d9c5adf88c56457771358b2be6028bda63cb88727ad8b40a07617d898cf60727c4a243660143cc3524a333041eeeb318a2a794dd55576d11e2e301e7cd695258d43ea8ef75774a63ba0e82dff00428d74de2126d2bdb32271d0ba3bc65c42980d5c71e4813b971e9e8ffc6fef04af1caa6801a0cde7b53e74c154efa260839aa24e9813692f8d8d52f03ba0f7ae916528831ec484585e836437af39bb1b56e19e5327e3c5a9bab2ce4f0429566b5b90a7b6e0342fcfaf5f9a6e3e3d9b4c4edd9fad1c4ae4aa2772a4eef8f3613f903d40320193774db314ce0072066276145c08e1357ddaaa5eec0e0425b885b92a2b1b4609de276b200d9406c90e926678ddacb53184a8ea9a53fac0e393088ef8645e3f0445da7b941f6207a20093b8ea0f4b04b6a630ba306a8d7eabf58bf2285fb8896919b97cad8d211db152670c5bee46be25e6386d6ad4ba857759540c51cd1f12fa2581c689337508992e21745add61038cbe66d2b3639706db3eb04fd689b3512c09b901704134cbc79aa11806c154566557a042f913100b65a90885724c8873426b091b2bb04ad19fff7ece817a6c297333db19c56a1187d4c7c0684100321ab462af245a61c79f2178d58295b2ac77801869118e94bbca5bd74633903e613ed5f911df881ce4d5a9a1e956a045cea39105405946b2f85e7465b41ebc05a64bd6bb63378e170261a9e761019dfc87ecbbd6e049048db66f8f6a888d1ba101afc93281d8ae77c283332a94e3df8568b847c69ee59835bcb7e9c899974c1e73547a342dd16e6a16a821bca57ecb7046f39b48c7538d27b1f92df70aeb2860205f1f97bbe2a387d2e48d4a9cbf89f9a5cc35afb3c2b1f7395702517c13222d011b3667ec3cc918caaf8933baa8bc2484b0bee643dfc928dcdeb71e4a64bdae6c77122750b286a7aadcf570afa23b3bd50221cf69bb993e1e26301fa5ab242d17439228721c0e7620dd8c7af9568a903c4c667c98dc8c77a909edafa9d5e59a788a20794bc688464738bbff09da2055d1c09a4a7871a2024701e9bfd65fa476b65fd1b72814755d9fd3184715fb24ab860001854c3080aa72948c7f435201e62fc67a3e63fba0ab751824dff7f65a5d34689e3160aa91f64b235a09be4eb1e321d6475169c8a9bbda2d94138b6908fe8f6bae110c5a394d68f70d1d94e90a32f4b6497ef5ee6079397d567ea6de7e3287f18e1e283941bada09b250bff4b1e71328b5f958067c3a64e0a4feff332f54e10c06ad94bcb5eb12dfbdd7af47a6bfd2f55918de98c8ae8726130b4346e56f81349cb12acabd5409e494a848fd358dab931b9a367a4f60665c7f2e55fe002bba4d317ed779dbb12f2ecb173f87d424beb81c8965dc543043e62ae2d0860046cc5715e37cec93f2eebd1d74f9c44aebbd2e527e064e236af4b72ea54ecf29f165f4246d2f86b2bcb2e350b3016c6ce4481bdb19bee17377b5be4731c88125ac9b1b56caabc51edd0b929fce435ec09148670362d8f342938c02849131bf1d06ccd39ea9ae112972ece7d841070b1c921c052e88b6c9b9e32a755f1c5bb4e1698dc9d83a19eb8b15284d956c62a501e4e5a71a3d06a0c4771d41712a6178f0ef4dfa9f57cf8871a430fdfb516def204c39d6737f23c5dd5aff9d59059eb40377cc8ab9d511fafc344b68c54ac4b464a721900018ef412202ed675717cb5c186ec69a4d320cfc2937f7a262d7037a733b0151387111601f53bc970792930c90828a8f6b6f3972fd766f1a40b55424472492caae79c3a0a3dc67924e48fecf52eb99023d4c08037461ec0aefe8fa011fce4899d4d99112acfe2ff8586b610f8df39f9c6f41905db143d599bf01f2396e4f7b6e3bc128517fb7e9d55afd5b1b64f17e2b56c892f47dd744ec1b63855fe95c4cc0afc3945605d8a1a0e249ddda0a9b4ec20559133c4f8ea63febf547ab3c1fa1fee4357ba439997ca96e36dd73ae592a4ab5a772e453e206a3a655168d4bd5fd1e093acb426192f4daa96051226e296328c1916cf497a77a7399e237fa10338106479e11d48584d764b5416aa7cff60a78b78f23133c4669cf739f779d670c32b9492917426860eee24154faa7cd2021784e6cd18cc8e17bc7c35e887705581c749c337e8994f0ef84431d1ebf9e61fbb52ef8278984734ee4c2ef76da3113cc17a9f6cc761f6e05786dde66cc49c673d628966dc1ef0b845bf2c75b5f37d169e52cc7a00c0d22642f05496e47592096eed7ba31f1e64c295e503e3561a3999e65834916ffafc5162994376cf8cadc5c5c4460930c136c5ba5bb26a84e7d518224688a5bbdc6075f14262a3d304cb7ea1d79937b706eb0495e985ee03f7c78b4733aa63eca13553959ff928e3a784781fe2b27e1e1281c9a30a033c555099bc078782cdff1d2ac3a4cd48417f2200804d4b6078fa480f5bdb735c3b010238569fe999641860bea9da07adeeab04b172078d5871b9d25ec30ab9f97b72cf64397d96e2f3a0a63398964606bf65f3da3923a2b010fc5ede4c2a9d31ef996dff31bb21ca0243868c8de9af8fe5c0db632f108503402e8a30540c854780a168691e240220254f41d3f424404d7c9b40a09f5af1cead1b3bc3ad39350b605226e0c6e1f74aa80432f659210002729258bbad1123f57e86db13e0c69525ebcda54f301f3b8251b412087a699efa9241d2196c83cbc9a4e679ca0865c062147899e56fdceb048ddcfd9d461837108aac2385310e78328acb783fbbdf8b00d0c893441cc92859f69b13b0029d9b5af9e6418fcd179f3f0105752a46b6d721b8cc2f21fc31c4619c1d05807569826fadfe3a24d5f14951e36350d6ac48bbae6e153adeabd9f79240300a85855e1be18c9fa11fe277efc9d44ebce0db5c9a8520c9f7dc98ce947da46297816e05594e3e89fb86c2df7934288d025218da95577e7f2c6990b97474b4a713819fd5e3291d88a7e6fa6c8b0f3fde223e7c8a4b4e759057b282cb9289f04e0936facaf08b4dfd39a6a6228ba2b58965a99f250016784b9d56d42ba10b0259000f0a427a09d9d06e07d4cafbcee4aef8055ff1a5db1f3418750ec453dfcd814acae6471493d9a504ac6c7497d6c6af1919d352316ce22a7a8b1e8e482cdb92a29cdf5e6cc3f88c349a2b66022dee126074f6a099c359c69e235aa32a97e739f8a201fad6078239f5bf48378ba67356d6c2e78955d75cedea70776a53e3b3c3d3fd163b3460f60926419b4fe8579affae343227b6c47c155b369b198a281803c227b95e7a33a832540a0147846b9071653feece5886dc25853e15847a12d2d1bba6f2080d29774fe550a7b8caed811ed8f9e104517772d3bc6ac1ad5fbdf6a4970ace207684b2744327f974fc2a07d37137e36649035f2c6fdff2e33bafb71efdb9a81ffecd2411fa7757f5502afc5f39765f5cc527df8596324914d0aa1312400727cd4dd10ac3dd08c82eb0a569ccabb6d99d2cad11cc73797cf062462dfd73782f81cf85b86e6fc91e2188ee3cdf44c5962ee1e4d7e9dc056d873d5255c807162100d5c00adc8f2ece2aed82a1be37c64fab360d964e4bd63fb5c9bc627cbc25ce12aaa6dff06090a54901b711413841550eeba07ed4d2d4610d2e5864e40de93bab99f0a4804ce1a7fda3d78944e81e71924f0df67d4725b8badcebd4aec484db068dfd8c955855557753cb7dd59d98557ffc9524a54e2efc6f163dee6413fa86a8a62d601456d0ddaeb6715343d50325cdbf3bde68c632e78344c6642f6dc9541b4fe8fc3b36c6fd111713cc3a7c43afcd75ed4d18c4e1f89332add2e386e9e6898312a9b869089475de4ad2acb18a470866a7e5c8b2b203989d5a1962bdd5a64f0025594c0bbdd7793a0e66638d1d3bf57dc1e05e495331bcf0e153396570fe2d7358f466e3d0bfbdfe0674ad1eb49d9b5d71cc9748a1ef682e2beca03afe1ac837c9f8932a974bf683bee04fc8abdd79734a01d10fbf8735faa59daee5f0722dfe390171d593f48db601abdcab0fedc22106e8e9c745e5d970ffc197ec50db307e5f134f4a0308ab09d48dd69d872b1a909eea3bdeacff384d7e1d6bdf94bbe51fbd239bdcef2b0b4b989fff862d5ef249de891af4ba48b7e46feef85023c78314bbba062aad77a8baf8a9d13f5a1e7eec7e4b4e336d98208342ddb0748877cd9ce7d371950d0aa10e8adfa6bf389587148229831f513e54d94c10ff71c0031709db943833eec0fa517ff98b3ccf1c2573e31677b82d48b043a166b275007c404ec65373847c305ae84a6b6bd799f0f74ec7f995dbc7d90a8b9a61572dfa2c0c98ec935db7e4b7d84448c625b5a718b64372e4a4b4517cd4ba2a0bc0aa85d2729561a41c7850f418fe3268fab09a560ab8f0e59826f9bea6ef69deb312176670fec7e48cb851191733399ee534f461220d76c53c505967e907399ff018350a22fc7e7e36aaf5b99e70639f2fff344de5772c5e2b89e3ddb5be634c546d59ddb98bed6540d11fe2f77f9135f13dd8e59693f2001f62258d22ffa4cd72f58cc4dd956029fcf4bb525a50078ab2900a483ef0a2320cca4602b459bf038afecead27b1ca4768c53b2eb02d742ec71425e3f6dd095aa6d7cf088bfbed7440b6f4842506dfa766e60354027d279695fe9954510b9743dd2aaee7297f6b23e75447f747ca1104c3d36c760c0d88360b46b77e6fd3e376ac9d68f6320ae0a65e89306a1f590cfb73c08c5f61fee8def1b4a7ee63d6cc241f247f52f0c46571f871e68a846e44f7ae764ea9b145b85a526b647866c280750d1d1ccb84e6da67684dd6c32b33d01693373c678c5390fe8297e0e9aae1fcab4c62962e13cf0c57f7f9e44f76ab3700b7283220502596b9a217dcbc2da0a9760531cb4e6da9131a5b0bbbab91d780264b068400f68dab2fe757a504eece531f6c4a868a9862255468cdcd6ad0963b82e83d86cedaa13784cc0730a0a793ce78d67590bba3b8f38c43d2cd2d2d8e0d45ca920998e4aec5e89dafcc2aae36ac3dfa33cbbad3d67346315f84149934f992cf3442ea0fc6f57595f650e98cbe0d47fc2fb489cec0f3ccb9560e3983280eac3913d8a7d416f906f7cee336d4498d8bb53c3b35ad22824a1e9503d78b6e325451193cbd63781f0c9856300ccbdd37e6acacf93f55ce2e53209abdc6f8bf53c9a862732041f2ef2e04999ca941022a1418c40698ab5f04bfd5a3c84fde9539cf014540fedf02a421351126026ad678f3f7ec09eab0d958ab8f88f621f963ef1488673fa0b53d2f670842b09db0b1e618c13eea00c8d9604671cc5eee866079e0ce8d9251830955581ef0616ee0b1efc8f5e09f7474b281685f8816274a87f4df37c0b3bf4c9defaa95571d75a9ef6e86f1e0c9240b836b2a301c587e4de98f841643eac2a8b5862d612ec03a707e152c3007f981c9bdd4e267d6610faf8b4f7a013307acd81f3acf05a3af129b3e46f036ae49b59084d8dc9d14748b662f48d7166066790156dafce2916b612bf5ab3dac1a1f4b72368e9a6c87d53c0080069de3636d1d03b8599a41a38bfd22043dfa2174bd635db67300e461c36e97725573a7c74aaac1a3e63e40a894a4613f1f64135aed335be2f2102dc5eccd98a38312e01a7b9dca69398b4211c316016a6019f8ea56ea425e98b03187d4ece747ea3c0b59da5cc4d90b0569455ff096f53d4093944c979535cc17c79d58b1ff75bf0556a23f1934531becdb22114ea2a1ca7b27cc84c69259b48cd4902f3b242af0f4ba871d2159d20d14687421a5880726867552d45240a78716dbb69480b7330ba2e4604bec3388bbf55fa24253ecc60d001fa88f5b4814723a20d3e8b887804f2903f69d6135ebb01df7ab800c707eb459da39fc64c8269b60ad8cf85958a7d1bf32acfaae2dee308a6153c5f31b74b57ff66df8e6b8c885a2eca23a12a16b05ce4283e4cdfbaeb265b2c7d009a3dbe94a19d47118f38a31b470b8fa8e0d811463b521f343b56c1faa7f9bffcc0f6b1deb6c34b2e2e27de34dfb8a38bc3321a54d18c0e98e904c966fc65a3eb5804f0c956f7115620d30d8d5f8e8eadec36b67ec98644439d937d758957b87535de4afe94eac173feeaf3a58bdfe27d147471ccc409acfeaf9b88b9023df4ecb961405b1edfa3e6fb5738c6025cb2d7529bf1f578af9a505cb38ba328d17f37161478106a168ab5b769f7df2ff07ac95583e4e2d77588898520b1239833d52853c141ea7da9cd701742d8f585f1bcdfe02b53e1304cdb778aa719b5825ad0509ab269331fee7dec42d225ed663a5f4f3f9b213ebeef2c8eb597e572aebde9974442116e016a8628927fe4c34b94423bd1f0922005960b7443b8dcd0043e23837d2e22bb2af86f63ef0e6bed6081d0765d33f5deda309106d71eba9dbd7adc0824fa474c83cbf353e6d89443400c39f191bd96ad0f4277493e76ba9e4b73f16ab627bff0cfad9f69ecb36df4bc580e30061673ae954103577dc6467d04fe04744b4afa704c533dcebf3a24475f8bb3ae2a944ff2f67fed3321d7762e00559e1b7ceca445c9ce6f556c81bf6d8ba43d0623d01a789fd55ec29bff53bd8ad8afbfda6a86cbfbcd3052a3cad3bd6f7506c2b0993b5ac37efa72c92e81eda8c899a16548dff484a343cb593806c525c363ca48b9a327da388484399da25580656daa2db4a673a8c780a7ba851257a55af14baab94013ac8c1f810c6a58df7ef617b30d29dcf082f16f6328b2a34f471e66e29c2b60b881bf72950347e56380c274fab080b8c485062f7d277ea2a6ddc14b61cf6a6f1f966a57f6907b589db94e74b84cf29f6f0954710846def276a1366711cfd9fb3dfb14e04cc8fab3918fe9c51f3a921d8b3de94caf833dbc198681ad222a1c7768f7c6a7bd9a09481b777f1dd372b81ea95ce514ef9380b81018c26f2a387174ca6c1fa7310416916168541c7f6293ad4996255059d6a7e7c6587283117218fcc8ee91c1600a5d4f19b8cfc6977033a5975b32cede06a1e88ac811105b3083d3e8ffb3a10757efe52a7eefd65de24b9df5e664831903ee22fa81fab503df428929844e02f86d3b824f6556d8a01de166d65ee6565de48e79f8aa17e955db369e54a74573eb9bc8685b22872c57fa503fe06a93f8a2123e3397647dd93c00d27b571db66334e8d626db7e8d28d1a236691283257e860e3811c705f38ea2a2adcfa2e4b3cee1c7af3a542941f0901c13eb4d7e3ea1c51163932f4b651333b7d41ab29e6557c2630d81b230958601c6c79f6bd10b6f50667803016c09eb66844d34b2463108591f0a9e63cee648d8473e5f593d9dec5de50d2395bfb63fe0c2135d57c5877aac6e98ab99df1394fca27455cb6d0f6004567b4f2b8c6ad98c0be46c9e6313bdc98e3866f9f720a7c3b95509d5d6155cca3db97ec37ba234dda1ccac1d7581f3ca1c0020aefe85804ea1bb87980cb78f22ca300c97f609d48615bcb5dce0a7da775ae20f2cd50df2ed4a57fff6be5be02473a1b695fd5cec0a811432541a4510652d3cd4bd4093c46fcec6cc1788c088825e580bf9bb7ccdb6150a1792b30bb0b3eaccd01036dbe6e74845a9bf66b9bdc91c073f80283b1cc9689aaa96081fb9ede4b84e308cd3915a81157646a9fda3d2fc7eccd652c5fcb35f21c3ccec531105562f36e3a21f5adabc962cb9213b7aaa7e5801940f893d471c314e057900fb7104e514716fb295ec633f7a37ec0a9cf66357dd1af0e63e4dcd7627af18a6775257a74ab68d66d45e78edea4b2ec675597ea1792bcae6ab2e312f556548639c3c542bf328afeb7611911e5bff24413c5cc399d6f041afed990f14a03e275a8ecee57138c625645f5c99367bd277a530a6310d8a60cc526d19c8b24da5494dc81b3a21693a7185e4f32df377fc27335c41e079dfe1ffdf4345e26044eef61e421c9a0af79cc8ca244ab8ffa283986098d53a39edc7e90d0e45f105bd6376aa058ba9dae1ff6a75ff54c1699f3148fa73131049619781cc1613c7b3a046b75d50639861024fb23cd2dff098ebfe37fce3a940c0e5369bdb19f309ce70a0a020986ad817feaa26d59bb73c6914ea7c7f96a25063f5ab73fb2690c3595cf230290babbcdb328b9526009dadf71278b206ede1cdb2c4046667546fbd9e03354a264ec145d077da5fb95a53f8e0ebb16cbc866df070622e7d2a5917dd17ddc8b6cb0f8a18d24c24d77de8857806f03578d688cc032173e0927d5de8a912e41e86b2018dd04795db41e942576681007533dc6d1976ec5cd2afd8f1664e2c12ee25082445c3853434972a89f0abb130af04d33155bd1405b298f30886da894d5d7e0cfcd179beb4020cd62bc7e3c951be4013f9ec86981ec0242ff298116b6504fea4e987e78b892b802b615372e0bdbb38fcc2076478c2188ae4a3e668858324a36b6ccdce7d007452926ce80e7af782c6cfa12a55321b946b9fb7e6a0ae838150332856e7cb1e8c0cdbfe03215c20043e15cdcc3cc265fd664a35bcb23cc8c571f0397264a6b1c14320fbcc599ef3b51dc2c22d965e80ee12aca6da87fbfdf56cd82b86fdade9dd55922ab081f8215c4072edb794781bc991ab301bbc0e956ec322f3c3c4920b684ffb57ed872d4cdd7e338e1f62f830f6b1f04577046183e18d42feab9501cc1eb46eb7b68b87d86881a40eb227bdc942e5563d43ce868517408c2e218d521f5a228bbde02048d52cbdd4c7547d68483f9e2cde422023a07e9fb081531725907f5b2198e53e59dd6e45c1e90089850ab0f94a6b9db2815ff797f4fca4342f241c82311566fed6d3d6dbc2e48384a28943cc8cddb107b8571639b2863ffdf54dcbc2a246907fffac7fde82edbd7a6f1ed58977778b4f47374a7934de425d5bf563e5abb5f93f8555a116832e6f23b959e10a6b04cf24237c8b7beb5250d3cbc5712076196fd25f86be1d4d064c1814aa3fcd8c9a629a5fd8ebff0a5b57576b7ce26c1000e8c5127ca138b72593bbff16736d1dda82099fb41f2f42359ddcfded8d2de9eddafa16f0ef08c5e9b948326595b2183755a26809dd0e9cd0703e16d8b810d0b3ef886b269997d14ba8e2a98b7885cf4750784f0ee7b75ed3eb58b483cb4d8ccef1eb0235f97c78f30c1c508e290503f5f08d9472f97f1aa6f00c9cf99cc59eb8e5bd557e5dc14e0969a58f8c90ec99a784912346c3395319255171d6535191dfd198e57f1b1bc7a8aec721beaba243b1adf2f0c4e41bf2a397c4e01b0553efac837a995e364a1aae4602be3d5afbd463db3b08546e4130e26123a688455eafbdddbc757bc97d89f619378142b1240fa16a2a4d3b1efe27e5c33c7a4b95d0adc1ea550f44d238eca8dfbd3fc437200ef850e0e7e3a599e5178752bc7f809364f43b1b056a469722e150ea1243821baf7ee05f84582e43c49b904aa160fbed12bed9285a175c05d2e1e48894f60b272bdd4b03c0ca71bdbe9b8c5b5dd51f037b58e56963efdd8add7fbe0cb363dec2e777e2b2f92299d0c45cc9f21ab9511432274fc2ae8fa6215989d7a41b7bf00d64f4944abb701d4919db08051eeb1310690ee4fb0cfb7a7b451b0fdfabb2399fe27d6a040f2340a2ac56a34526501bec01046e473549e4e3cbd99129fb10668ba6ffb48a1911b38236212b048921ace4d741eaff68c240631e01d4583d4c065178fdb8bb392af1ddabbe2c06057f877158951bed6d4ad63758ca0c431f143ca2790d65a700292d28fc3c912ddefeedc1cf611b4230cd5e3d33b88c7e99e0e6732f846d2cb1dbfce8d170ece47137b5a8ba02d5c46d00ab73cf7d15e6e604039e790ea89e9cbd37ee6cf4e8fa712af854eeeb2d820869942d72c2d384fcf73218549563f5fc5def589fb83010fd67d2b2741c997a000ddd7007c4d7724ffd67b80bdf65c5ec3f183cf121fbdeefbfcbeaf14fd56370c030a1dba844cf30a3085d59e8b316b98316cc3a66c2c1e3544b89fef80146d5d5788a1da8ba7af3e47f45b525b4684cdc029e1cbf0266a9f89ffda42b0cf6438710bb1dd72553493ed99e1a7a2f9899854c41931f46cd3a58bd6fbf716f07b58c62bf439441c24fb6a7f52c4bd6b790c43e44106c6e59d3ac62396996d68c83a8f17bdacb69d9094d4899930525ad6aacd4a231a7505f1f32ab52cbcad2f8bce5d160c98f83b57594be166a873fcb802530edbfaa4f7d6ff63c7b546e6eefebb96a50fb7c7430d11a68945f3211c2d828144ff2bce43ccfc03c3557428fcc0149d53e49ac5c5048b96e649069bbf00cae283e01fe5549c05fd08b93727dc5a278e0533bf5101cadc8f8a356acb735a81ef9dc5728f83095dca2db5d3993c3af6591d8d0462a2c92f96e9097adf81883b2bf6ceb93e221c8750258565a312f79c13746fb6c8bc58627f86c038ca10dffa23a4c7d68e8cbe8340d4c993d1ae9b235978462392daf12b2682ddbcabe5339ef7dc254154711ce66d076c3bfe5fa7b81381de32efd87f8276c9d28a74e941b9af75f3874dcdfc79c58ca5fdda69ff70210503cc6f916755e2944cb9af83490e788a7279f9095143d7dbbc44262b7345719f08c5e16673f6677a88964e9a2ac57952932b6ac39412da07ecfb1dce9bba8c276869dc422bf1c9ac8da5cfecdc6cf18acc6b0a4ee29ff9419f08055604ee1390f1e11c1dcbeb7e5d4dcbf848b5a2ab22bc72bb9806e1cc9939664051f40e872a918c70cfbfcd2a37331c2c39b8132ee47cd0e646086696021445fe132c24bae8759476b6d128e41247f9177e0ebe8112063f15ebabf7079ff225d597b3bac3baa61bdc2abd3d2d218ac1fb1fcb40d37c9a64d5baf509d9bba2503593d654d0a89aff414c285f35e05c14da7e3ef8aaa0f75267a2948b5331a0af9ce7996a2f51408f6b1ceb0deb3e6ff8b0b50d48a32c3e14f9bc14388b72c2eb97b3c6134b0e903d4adebe6b9296c67f80ac9e9d76e6e51582eb10445f7ff2b228385f98181d1e4f8f82710aa943435dd4bc1dced74479ae6c23b2cd6212436dc480c617e511115ad1d8d25d6e518bca4c894d0081fb3488fd0510c6d90f9415b4c52084f7ee12bf3b2ce43f0357afc27f52fcaed1d2a605ce011582c76692df72d566c9335fbab327de5cef0aa75cb18cf6252fd5731eba7800afea42a1b88550c89f5d2d51ac4016b0d65736b75b20586cdf341ab8873857f40cd38227673bc82d7910f102712b3871c15ec4f9215ac1696325cab8f19f0fd589feca036fe202b34a89bee14eb602918a474ae9738d81c55edbb53c7f4944ad170034ceaf1331b3cacecdb6f0990b550eefc78a76fe9b2cf0c31b64c9b5e32393047a40cc4e11a8da7a41c31e9f739c57e66bc0d30626903fe4fc9759b38762ba033ecfd1448f764c6be1eb48498bc478048eef20b4eddb6fe0ff5d782814837749b353d278b5e55360b0ca647cf653c4e7f398a9649794f341348e65f04dcf49f4f3b2614c93633009b29edf8c07974618bfab31a3471a5cf72d729f396f573e8e22c5c91e0e6adfe1f13cb71f6226404f62c7aec3e25d07499251b5b3ccaceed5fcefd46da228376887e71d64b094cf85da4aedf09bfae78467d8ec500b2d55782907635ec8064dd81cdeda1d2257a40924f10ca80283142eab6e3840ba4d69e9a445ee1938f55861857f3657f09adf43a41915cc105d3a58ec312836d19e76982fba2e2dd6aa18acdcacbf6176710630410f343f7037fce5c07a04741a45fa4d1269da96a05b3c337ac0caa5261952447046af1b1a13cb2ff3c010ab0ad8992f1150c45937e42efcccaed5db81280336c3631e5e6e46da6e805144b1e05a63db94dc3077e62e31844c044f75c4ed1129677636d894cfe9a39e4750a71703cf6f697349c8fede53e06c38f8cd73958b5a3b645319697052ab03c32b729a801ef16f71ad0f35e41c9b6dadb648ae8343570ab759d90f95d1dd72f4fa29aacd7353c254bc57b69496d2cf2fd69c581860682941b835f5f0f02132ed72cfdc0bef03b4c2260b24d4ddd51699e5e1cac847aeec00852a9c1d71c73b3aff4c10a5729e669253b7084a353dfdf22e42bdfb3e1b811cb56c207ba8951976caf800e8a257271229411bd5a7fb3a554f01358ea59575f5e3f6e1039dc053e8fc16fe4031dcd1f5b6ca60a53090ab1ea5704600bff1d749997dc50cfce4fe5db6821429393fe5af19bd37e3d78e6f9165ed92ac1457ba309d73b30f735df352028635b7372446c38c9fbfaad482e576fa73d34a33b138c3db883cf38622d0437c588ca1e6def201419aafd008857f2617485e0feac5ddc9c820ca06f324c7a443141f370c9e64c6fd9a78d2507e9b021988fd7393000a96965c985adde1746c7473af416d7733ca077e5ba29317155a6eb04e30e0ce4892b4d4eb2c8cbd492081d7dcd4256454c0eb6b65109ef70647bcf6121c961b4f8de6899f5a7cfdfba2c6c7e076d17da07af4ae27c2c0f1b157ab8a6e27aa5d198a1d44c523f3d0afeb7d1910d833e6418b69da6fddb08bfb4034307b6787bc2238c4eff4f2e670c06d365e5391402e88a19ae2c78f684eb9bfd7b06e6e8b00750634b10dbf1694ca937ae921883fbbc751db6ae488c6aebdbe87418c7fb232505d14055004699b14625db7d4821af45cf35f89da8090277926df436accc8951b8e7e259a925ba6d2c0171d5437126728934b3122f4aca25f8a7365c98ac86fc924b1ab03bb62c69ba3fbbbb21b284b8ccfa9e826432aa6c8e3ed3769bcbd848dde55963e5a6d97fe3180a235194075688965a5c4cd61a7ca409b08cb534cf75f06f19f183d2864847fd539d45f4f6bb0bda9515f2c66b77a0d4d332cfec815949ce7fcd8fa73763b7b0e5512f15eeac326c3ea45aefd445d69e8b6fc9fdca592b4a0a939a3dc9b28263ca0d5d5281967f217988ef83d3caaff78b407bb6aea65a4ea9d2aa88646de8ba549f8a20e6ffcfc0a70bd04e0bd7e41c206fadcb1dc0d0a520b1ffb0c1dbc4baae99808a9b4b9920782773965384ddc147585b32dd9c5792ec4c90b7a30639d00c70ac11aa340a42640bff67642c34e8c2b9f8d5202079baeb76c80383ee8b1588c15c6ffedef8e6aef8cd06c223039bd01deb0a273f8c7f2fb6633e5c935f6c64c9b1a5c4af505ead72ded359251640c52a1b45c31b918528cc982e22c6025f0c4a7d194146795fd5c709db5c5efd048f69fb303b440c4e44aa62b9798fed8e2243ea84585ac2c1ff74b57cec08288c0d1bf5e0019a332f7084be44215c97951515be28b2aac0f72e97a8fd552676cd849f03dba04dc3d4240777ba4f33a14eb61b49d40bcd5294c5a39685e7ab0e6050e8ee39efe04d7374965b9795a05f8dbc8863ae55094937c504d02d5b9cdf34505da4dec7672e6ab9a8f272fb2724ec6a20d593beadf2e70f8bb8d7a1a262aae1cc5ae5e412ed9430cd4b1c904df6f0ab966c242d60aecb73cfb4a9df2bf0c60bfdb9da3d91fdedc07f5e5667358252b2e0bd8239e8ddc0dc3cb594684f724c10b78c163808348817de178baf47602671683e207e901af185346ada8cfaf7ea10ce07ba3d58452ff72d2aaed4891fdf2dc3c440443a4ed6400ac6670e26da1c68b4f5df54afb39e174d278c7f6aee2aac30db2502f2c41604e96641fc275bc227e26e55588db57514168a8cb03973ce6533d57f836bb244a37b546f2513de48b4d405284edc4175860761b837277b036720134444dbcc166356b49357c9110951a6c8d1698404b5a83a72a32d415a677171a9aebc62ac73b9ae6ec73703f3175d4024b002ac06caa275440cbf0bf2fee8607b1c104e8e7812c7fb3464e0270ce3664bac00af5a03dc0a1c8575179e3c1945d7d36b879db30d7d7cb40c6c402eb602d0d5da406becb92b7ff94f379a6e826c73c638bc0a38aa2d1643880294f9d118c3aee90e181c93d0c6d0f35d4a5b28ab58187f8d0e41cb7ec74529697fc23313c5a003e38cc8ca91b9388dcfa06f0cd0e949e448d2d471693c7ad1a50366d2fed4e8a9152ef7e7caf0a994a9eda2ff70594e974b4bdf9cfbd2c3b69b5dae67bf38c7d50246b40d5cc48a2fd7f9187ffdd271ba5ac26cb04dda7344c079cea55089d05cbb38d5482b661e8044356617a8c2ec2c5796de2ac16cd6c05e4917eb457dddd7126005f4eb873fc5b604254d50edd6fda4d6df15af8c5de9e97ce04cf644b984bd883ec7bb7681769cab02d98cf8ccf5f30073980c5fe0b81a5ee8d7b622ad3482bdd7338e04dd384a126bf52620f12db6e883be7d9476060af75269d57f62d4ef16aa0df5a2dcc5c15a69a8219012e5c9d555749d134f99bc877d8c5ef1577b5c742187b8aadce4b4f9cc5182138d72a819b1dc604fb7552bdd3a00b60542f38fafec9e99c4698701ca57313bab5b71c91d4b87f7261e6d6000cb2660e0f336e0085e7d01fbcb26247f2807203ff82451d247868f378978083d2483a7fe55d79fe6220ca547d342671a37ac29b31ed4cc979d8a542e5bc63ed8c1ecdc5c0a7844b2797d56bc923a7c4fd90b686e2a944c564bc56e8668fe3c05ebc003a61c545a313f1fffe73b205292255186c07bc8eb7ccf9f9e2f06ecbe551c7574c00e9fa13c4419bd08531fff054b1fd183289db318e93f8a6ae9c10e33d97f4c57f2b20d1c97e7bdc91c865cfff2f9115850b65ab45f5ed2af3b3d450a0f4351915755f317a91d4b198544118db1cc03f4de43798a95e9f2df1fab5bdc70b237a3364c09e1d97d6577808e1bd60a3b131fb62ce28a94f956d17ca3b8c13c79d7537b004f4bad236cd03d85a7657e32aabbc8aaacf170ee2791b08aeef4736107aa760b9dfe4d769effd2ca6e9c327f4d7357d951df22884d4786b5600a6d571a1c5991c033a6a47453afdea14eeb5ed9b3d5d709a37834511b38da3c78779a6d1f56202facc265e481fd0c6f746e2e30a662c51b13139bb727cc0dceaa2b8db7ab219489c3a0361bca50d16af0d1fb71d9ffc525984f2cc14ae64e30dc2235e5e6777ae2696a3c181664efeae04e3e057c3d1a0a2e95911043bcf23f00ecbb534b70c624ab81afadb37769e1f74c2eed4739febcb94edee0364deb4d1793cc13927f0ef928e07ae11d301ea6475f8b701c36ca23b415461017cee08ddfa4f9206f37791c8a2064db8703db6af2ebb5bf5606623d2e1dbc61c590bb2d36c11ad486a8df859e17214f97864af348afd69f146d5482d3ad14215c60c4ae58ed6fbf151f2b3ab1d8d49339274fd4dc2ece4c47b4aa06a5c36d82e9b636b2bea15a0e7b62380f1cefc169bc9671d5ce0d83207983ac550796b827cdb4f5316dd95b05e560901776a12ec2f1193cdf55ecd47d385a10bc6cc2d4ef2b8508351b022d3d50f9a88d01a74de15cf07ee7284f76d92da8f19439fa7682ac400643cec470bc6030f35e42d7de9ff73bc8720231cec7836e102ed09eb93f09319160766a00f5f1bdd1c7b96059df627571c5432bb81b13df945732da6b886561efbade488e6301bd7eaa79af126487d7c82c9ac907d6207628d15344972196cd7e4b9c21946bda2e86d60e1062535db5d510dd0ffdf0b0cf57d1483cc924eb6609161e7a63f0e49c9897fe33a00cfc5ad5b59850d41f5ef7f6751fe9299a98e63b5d49ac88da22d7546f8e1a50c043aa26a552d89235444dcd842dec8aefcb701f8dee04a59ca87d05252f4c389b07419ea61c0714373ddb8f89eedab480be91c5455c4c55a23263a6892f4be903b42e0130f9c33edbd1ccbb09658d3e9df3fc238f58392482c6845d6cb605644290fc81a65b54ec5b111391d071a164be160ee55d019f8a94df9ea4a6d482b0d4ffb21a2165a335eeb4445b19dc7b876bb4429822f3123fccad1489f1eb257434a61a5a04f1a4b33d12dd42ed880945b8cfbab7bd0bece97a687798685b9f6ea97d45ff93cdf0651681ac3a1eb679d537bf0db377c0dd68980602d73d6c0c210f6f7e0aef45166a8d84c76fbc685016d80139f4095c4d83078f6150b39a0f76beef14ac8455e0998c520e707b9dc5752503315c581f7fc4fda364ea003f2a18ed50c2e5b6f2b226e0350be92091f479a076afcf6ea9034c500e3f41ed12a8f443ed6fb957ba448dd976a37511e4d5cf9490bb53ddcf445f9252008bf456ac5d26cc30f1d48205d498df260258dc759e26893594e44d0a66b4fb3e8147bb1ca543ad5601df756f9e16e91883e508a2a05da2c0c3f874b8c90df92ce310e008e2f0ffb87b73a0dc07d540a608e9700bb054e99d3f08faace02dd7e375a8d0bd8d436c5a9a9709abc34522a2c3298e7ea7cec5248e1a5deb0ede38a8c8505bb061079a2a2daed26c25ec0ab8e59797a222edb9e04c3ea5de87d34575d5fc37a415106cd4198714ed743248af1d630221e4f16115038988f911cf21aef7a472d1f22fe6f72d11be061ab8c9b2f9d72ee426245ce1429f2f886a0e04481058828c0b1c5dd1f19c9b14ed9ef495eea2564aec57b9e0563fa9323ece6d62471e8ac64f3d4f4105c4cfe75121b42d522f9037295ea3045e2c5af46d27caffc89c700878a42ec8c69331e4e73643588427274b0d412144f05a22f9a8a19e41399878323d1db627be785672765bc3ca91ff89a5befd0b15063a4b699ce67b96c7f037980271b8cc69ff0ac6537f7a504cf4ab80c6306bf817b9db63bb911f429c5736993c6de84a2b9f3f537413738aee02099697f0aa7451629c8d18e37756c0f9421a2422848cd3233375ff6e281299711503a628e013e1554b39b2a1066c897a24f0dad6a3b552a1085885adb8ae11ed6748d101c2cb866cff06e8400136fc4e4606a63163f2708808efd553af2a9561001824f5457fb21a593b11ede698ce89aa22e8e60c73fefd02aa17440150ac75a0646b9ef92dc43c8acfd88b7910508d6e5af9843fba60810bdd22765e9e22687e628fafc3b7b52ef460949ab78e71a5b6e87503b58246fd7a49c69b295a613fba4be3925f42f00588cb038cb1418a22514b112e33df378050512b68b665bb356883493213a1dc1a47292fb3a01168484c1d5db7cc3b372a9b07b4d466debeb72c0c59fc88a4ab7710ceea0844dbe2d45852ca78fc38cb285039149631d906fd971705a3dcd0001eab8290f6c7718fdbaf9a7956f88eaf7a7b0e1aa7aac3002387a8210fdd1b1d7a21fc534715c65b118df62fe8c193495ce6358b158a5968375b7aacd319bfde1f25d9cdcc5fb373d2cb233f27a52917597f70078fc20b3af52d38fbf726f248cecad1c63073d4de43ae3df3ad7e8a885258baf84c4d4ee52f677e0e6f1f164c8c119722a4aa3d4585a8ef9fe34dc4aed513a9da7ad0e92d26b4b7fc789f1e22914ed35e1b668fbbfe659707148e27ca395db4b49c13268f89de949c3517278b7e4465e9db08c7e4a02ebd3bfaa8095ac1a99f27addb3f20c48917b0e7700672cf44fea1d83b78abf43804408b94b4134909f544a2381fda01a104f6318ff0294a27ea9ae2407715a4a248bc1f4e0373586dd281fc217e24a04ad07424a0a9653a6eb13ae9658655911fbd4cb7533c790c1b37910d7cefe113734da7d0a449156613f524f365ab9a95f66977b27de0aa435870187f1e792ceb71fa346d1e96db27bdc345d772a6c0a96850dff96378f9d7d9c376e3e2493a1121339d8af5b1e1afdb4a0cf31eb1c6ddfa5a38db36cd0c5f82cd068ed045d941ad4cf14e8d2e4e7d37d1fe5b7dabb235cce428cbf3b2b44d5e91a1cea3f11525cc2de22e17786d920a125f8c6a6ef81640d3de05f946eeb716d58af7d62c8d68685efe85f6d8ccfad79a3fba32f4041ff73938753b70e60bec02e7d49c3098d41b71887b6d59919bdb8b303ac29d95638ff8b90bdc416e7030e4eb99c42ae1377f8b698695006a061052126d6995fb5b80cede2a0a80085db0b46c69a061d59d163e05e1d4cea135707286465a1a42ca8ca918685132d0f655d4b1145f77070b3a3513b90e42ae614b0cb72c1a7c4c62455c3f01cc5f6654c6d0fd272cdd601610e8961c42295091b893c769b0a744401d2f70d51fcf471ee622d9fbe80ab07b593d372884f5929b77f1fa1af63ff158361b322987d199aab2cb0e361e6b2e7c322758feee24e7c98f22502defc9ddb18e21e69788ad3c3e2ce7a3701fc4fc530f32c9dfd1c952cfc398ea0a7ba87ce86881beec0b5d8aa181a027b5fd2d347a52a3a6de110207802573c37994e672c5f408c423df70de25f9b722bec95df5f8c05f1ef41c95f79627785442c1594f0094dc57faa02140da1c90e0c8b2b8f58b110d89ba857f0cfc6c0c9b75f4af3e6a0eb6872ba4423428274f461658e1beddaa1a1c5da20d34acadbf47c761acccf1749fd9ae7911603d35569ead7085f3ddf8042b4452d72539aec352a83e33b4247d7afc3b6fca2bb8df3bdf2bd184cd7ad04269518ce4cc7f2286b6b36cb7aaf1a3e3d0d5cf6a010a0913a9220cedf8cf7875265c6ff1850248393dcd1be20ddd4569ca58627c6582bcb630c79b7e6097060468753306c5d315a745bcde1a3374ec746182d54dc539def8188b444383c79e7f933d542a58d0910e705b4861cab1bdfefbe1a21b127f26194701b10c097af3c378d69949104c3bf9fa302445f18cc412fc68d0409af9dca6d9585a0cba5f17b8d2556080cec9bb5393afc45c28282caefb44aa2aac39ec44612ccbb4947fcf80b044560070ffbf9f8d0a8a4dc47980d2921d5fc3caf1505829ed6a78c076456fcc797d6bc56898f4522a997400956813163e306582f330540874ee6f2c9c22cf357d7cb7aa8e8354988a27f2572afdabf018f45fbeb4805e4702dbdd21205a8308fd2f5a675008b46f4b6bc25e0b81f6f7d7bcbc11328833f6612a7fe60cd7c76b383f6b8d311454e0c1b3ab8fc1114753dcd8c0b09c3b08523f61bb4418e47cb3d49ea4cf49bd38cf5f826acc9132a14365d50effad454800de510e77927c7057c1b785065e51925d4027d14483a052ab18f6c1ebe304390c24db3195cdcbf4311aaca4e2f77f6ca3faef55b05e20588a4ea73ca2ca3a207984e556d91ac89c514ae749bba7e41cebf0b0442148d6303893a77317ab5571675c256102c5675bcd4c56d15c81a423b80a7ecac2444514d7d1d54cfd26fa3c157df4a07b1076a23d6d008562b3576aa4ce6821560f9ab4966684f297ec2ea8382d9e04e66376135459f60205b64e1d95b0ca607e7024d51e542d1d5b453e3c76c97dffedf09f72de91ae0776ae19e0c10c70400f1aafbbd3216b20428b9220e3810b3e937798418719eedbbb03f23d0b5ad19fa26243a66856af062e667e7dc85239e347c74031e1b3312636120d9e9c148a6070a04660b3093d3edb330ea3449aeab5eff92f0c88e03fe51c8ccfa3e9c2e8b63ccbb2754fac3da57cafb3c1121db35ee52a2fec6512842dfd3d998c1f308fa85e031221d63aa1f86e7255d2adfb856d97dd528e9226da7c21d78df7a61437e987b4003e25b5e390d288c99c9a103c2db28aa61f809152257bebbd0c9d87fb1323341b494e793136f9d21a5da3e48c4d747a7ba5265a87a36e87e4631918df076a9bbbbc2fb0226e8e313f8a3317a98a23eefce4adbb63e1c06de1a84d471d25102fabc70cb9a6bb073ebf9dc0b1622149f80eede03b2d596063043a2680a4cb03753b80c5e3016df59b3c92d9f7f980bb26f387b29ede3f631471bf611a1e24aa59021c13b01118be1dadb1a26fcabfd1aee63588338e74bcfcf19b6ab5a725bc63f0f53660fda7de0f03b3e0760900d5b9e02f29c0d8ecb52af1f4a8f28c4375a321cea057c24909038af6d81a41f8caf41fff6a2b48cd79fef4bb53211d32b24d759282c06d0a1d707660b0d96b0594cdd89f935020b3babb43a2b8af469f381f8579667f93fe3162299c02f01b4fe841076fe66618d3ec46fbf455581ecbdc95535a790b1ee4422ff1139fa9cb956b22b0a9efbb39e88e415cc0a0bc5b31ed12c95a0ffa58111986b6c4eba158c62ecec80219a85d28f831d4dd056b485f0c346bce6ad33d157b9c8e3b3bbcf43b13783d606724b4ddfd3d4492a5a8aa440bb75d866c5d83515a964ea267f2ef1582a4957ba11bf5c38bc6c24bd026bbb0e03862c9140e1534ffd9019c488af3c36762c128ac127761a570c90d467c6bd0d8114943cbdf31f0b02eeba758db6005309d324190dcd4f4ebbe0b29df9482a7e950fec23bfa94818a89a80da6bf9410b1823598658e52d5d6068ea54c69183300cffd9b21b4a7ff491e98a5bbe858f37ec45c62c5f76b666a9023a6c0e7353f548ccc2e6ffec165e8720b665a67b3c2b112953f4b21c04b2e799f014004c400bb2d4a559d797ca958c489662e12c97a903846887a46f90ee798a7221872b1e211f54254dafeb535cfd1a9653173ea20a0a111c9256dcd55ce38177dfd1bbd333e7315a6bde29ef8b8f7b3aeb62f7182a8992cfb1b6299af274fa2782b2dacca9f204db43d07ef822bd79e6a08fd593b34b4dedf6fc3ba644fd540c34dd6a3aa53dd274d1b0f43e1de7944b9c36ee7ef46b2fa275bc1ca05794bd1845c944a9bbfb5f809e6f4718a71e03d381c20398690d44d35b2e29e8ea8519cbe8e3a576121181593be789840c4bb66c76f12640895a6fa9222057a159f2d6e7741f240fa4f70010789a687696b4e01fd163ae9f8e035957781be19bad3f5c3f50379e471e12c0c000040000000000000000000000000000000000000000000040000000000000000000000000000000000400000000000001000000000000000008000000000000b3fc048b9bca6a3e48e87c13f4b7b63c1500000000000000010000000000000008000000000000000400000000000000040000000000000004000000000000000000000000000000000000000000000040000000000000000100000001000000";
export const chainId = 9000;
Now, an instance can be created using the chain ID and public key.
import { createInstance, initFhevm } from "@sight-oracle/sightjs";
import { toHexString, chainId, publicKey } from "./utils";
const getInstance = async () => {
const instance = await createInstance({ chainId, publicKey });
if (!instance) {
console.log("Failed to create instance");
}
const result = instance.encrypt64(0);
console.log(`0x${toHexString(Array.from(result))}`);
return instance;
};
export const init = async () => {
await initFhevm();
return getInstance();
};
Explanation:
To use the library in your project, you need to load the WASM of TFHE first with initFhevm
.
Once the WASM is loaded, you can now create an instance. An instance needs two element:
The blockchain public key. This key is needed to encrypt inputs
The blockchain' chain ID. This value is needed for reencryption process.
const result = instance.encrypt64(0);
console.log(`0x${toHexString(Array.from(result))}`);
Using the FHE instance to encrypt data (in this case, the number 0 at euint64 format) and then converting the encryption result into a hexadecimal string for output.
Webpack: "Module not found: Error: Can't resolve 'tfhe_bg.wasm'"
In the codebase, there is a new URL('tfhe_bg.wasm')
which triggers a resolve by Webpack. If you encounter an issue, you can add a fallback for this file by adding a resolve configuration in y our webpack.config.js
:
resolve: {
fallback: {
'tfhe_bg.wasm': require.resolve('tfhe/tfhe_bg.wasm'),
},
},
Last updated