fxsniper
Member
Offline
Activity: 406
Merit: 47
|
|
April 06, 2021, 11:59:56 AM |
|
one last thing I still doubt about kangaroo with public key how to kangaroo use public key
now I know from script kangaroo convert public key to public point number then what next if public is compress script uncompressed and split uncompressed public key to X and Y and convert from hex to decimal number then what next how to process point x decimal to reference calculate tame.txt and wild.txt
|
|
|
|
hiten02
Newbie
Offline
Activity: 6
Merit: 0
|
|
April 13, 2021, 04:45:55 AM Last edit: April 13, 2021, 05:04:03 AM by hiten02 |
|
https://gitea.datahoarding.agency/ZenulAbidin/Kangaroo-256Not working still with rtx 8 x 3090. Showing GPUEngine : Launch : an illegal memory access was encountered GPUEngine : Launch : an illegal memory access was encountered GPUEngine : Launch : an illegal memory access was encountered GPUEngine : Launch : an illegal memory access was encountered GPUEngine : Launch : an illegal memory access was encountered GPUEngine : Launch : an illegal memory access was encountered GPUEngine : Launch : an illegal memory access was encountered GPUEngine : Launch : an illegal memory access was encountered GPUEngine : Launch : an illegal memory access was encountered GPUEngine : Launch : an illegal memory access was encountered GPUEngine : Launch : an illegal memory access was encountered GPUEngine : Launch : an illegal memory access was encountered GPUEngine : Launch : an illegal memory access was encountered GPUEngine : Launch : an illegal memory access was encountered GPUEngine : Launch : an illegal memory access was encountered GPUEngine : Launch : an illegal memory access was encountered
|
|
|
|
WanderingPhilospher
Full Member
Offline
Activity: 1120
Merit: 235
Shooters Shoot...
|
|
April 13, 2021, 05:01:26 AM |
|
one last thing I still doubt about kangaroo with public key how to kangaroo use public key
now I know from script kangaroo convert public key to public point number then what next if public is compress script uncompressed and split uncompressed public key to X and Y and convert from hex to decimal number then what next how to process point x decimal to reference calculate tame.txt and wild.txt
A point is a point, made up of x and y, so don't look at the point as compressed or uncompressed. A point is an x and a y; no leading 04 (uncom) or 02, 03 (compressed). So the kangaroo program jumps point to point and if the point meets the user input distinguished point, then it stores the x of the point and the distance. the program you are using uses decimals in the tame and wild files? If so, convert those to hex, that is your x point. Now find the matching x points and then subtract tame distance - wild distance = private key of public key you are searching for.
|
|
|
|
NotATether
Legendary
Offline
Activity: 1694
Merit: 7160
In memory of o_e_l_e_o
|
|
April 13, 2021, 06:15:40 AM |
|
I never tested it with that many GPUs at the same time. Time to rent a config from Vast.ai to test on? My hands are full at the moment so I don't think I can attempt a test soon. (Psst: there's a github link of this available at https://github.com/ZenulAbidin/Kangaroo-256, but it's basically thee same as the gitea link)
|
|
|
|
bigvito19
|
|
April 18, 2021, 12:20:09 PM |
|
I got a question about about how to set the gpu to use kangaroo.
What does this mean GPUEngine: CudaGetDeviceCount CUDA driver version is insufficient for CUDA runtime version
and what is the cmd line to use the gpu?
|
|
|
|
WanderingPhilospher
Full Member
Offline
Activity: 1120
Merit: 235
Shooters Shoot...
|
|
April 18, 2021, 05:46:33 PM |
|
I got a question about about how to set the gpu to use kangaroo.
What does this mean GPUEngine: CudaGetDeviceCount CUDA driver version is insufficient for CUDA runtime version
and what is the cmd line to use the gpu?
It means you are using a driver that will not run with the CUDA props/runtime that the program was compiled with. Update your Geoforce Driver. Do you know which driver version you are using? What card(s) are you using? -gpu tells the program to use a gpu. If you have more than one then you would use something like -gpu -gpuId 0,1,2,3 (for however many cards you have on the system/want to use)
|
|
|
|
bigvito19
|
|
April 18, 2021, 06:38:05 PM |
|
I got a question about about how to set the gpu to use kangaroo.
What does this mean GPUEngine: CudaGetDeviceCount CUDA driver version is insufficient for CUDA runtime version
and what is the cmd line to use the gpu?
It means you are using a driver that will not run with the CUDA props/runtime that the program was compiled with. Update your Geoforce Driver. Do you know which driver version you are using? What card(s) are you using? -gpu tells the program to use a gpu. If you have more than one then you would use something like -gpu -gpuId 0,1,2,3 (for however many cards you have on the system/want to use) I have AMD Radeon R4 Graphics
|
|
|
|
NotATether
Legendary
Offline
Activity: 1694
Merit: 7160
In memory of o_e_l_e_o
|
|
April 18, 2021, 08:57:21 PM |
|
I have AMD Radeon R4 Graphics
That's the problem right there. Kangaroo will not work on AMD cards because nobody wrote a solver for it yet. That's why it's giving you a CUDA driver error. The wording "insufficient driver version" in the error logs is probably just a generalization of "cannot use a CUDA device for whatever reason" errors.
|
|
|
|
WanderingPhilospher
Full Member
Offline
Activity: 1120
Merit: 235
Shooters Shoot...
|
|
April 18, 2021, 09:30:25 PM |
|
I have AMD Radeon R4 Graphics
That's the problem right there. Kangaroo will not work on AMD cards because nobody wrote a solver for it yet. That's why it's giving you a CUDA driver error. The wording "insufficient driver version" in the error logs is probably just a generalization of "cannot use a CUDA device for whatever reason" errors. Not true...as I have said before, Brichard19 (Bitcrack developer) has developed one in OpenCL and it's the only program that maximizes the 30xx cards, it's just not open source so I can't make tweaks (specifically to not save kangaroos, makes the save file huge, in the gigs). https://github.com/brichard19/eclambda
|
|
|
|
fxsniper
Member
Offline
Activity: 406
Merit: 47
|
|
April 19, 2021, 03:34:56 AM |
|
I try eclambda Pollard's lambda algorithm slow than Pollard's kangaroo algorithm test with puzzle 40 still not solve use GPU 1050 but kangaroo solve with CPU only 4 core in 1 second (very old laptop) may be I using wrong option for run lambda
|
|
|
|
WanderingPhilospher
Full Member
Offline
Activity: 1120
Merit: 235
Shooters Shoot...
|
|
April 19, 2021, 03:38:36 AM |
|
I try eclambda Pollard's lambda algorithm slow than Pollard's kangaroo algorithm test with puzzle 40 still not solve use GPU 1050 but kangaroo solve with CPU only 4 core in 1 second (very old laptop) may be I using wrong option for run lambda You say puzzle 40, do you mean you are searching for a pubkey that is in a 40 bit range? Your screen shows you are searching 65 bits with a large 20 bit dp.
|
|
|
|
fxsniper
Member
Offline
Activity: 406
Merit: 47
|
|
April 19, 2021, 04:07:24 AM |
|
You say puzzle 40, do you mean you are searching for a pubkey that is in a 40 bit range? Your screen shows you are searching 65 bits with a large 20 bit dp.
Thanks I use wrong command , I copy command from sample What command I should use with eclambda? jobsubmit.exe --name job104 --start 7FFFFFFFFFF --pubkey 025e466e97ed0e7910d3d90ceb0332df48ddf67d456b9e7303b50a3d89de357336 --keylen 44 --host 192.168.0.103 eclambda.exe --name job104 --device 0 --host 192.168.0.103 puzzle #44 compare with kangaroo Kangaroo.exe in.txt in.txt 7FFFFFFFFFF FFFFFFFFFFF 025e466e97ed0e7910d3d90ceb0332df48ddf67d456b9e7303b50a3d89de357336 Kangaroo.exe in44.txt Kangaroo v2.2 Start:7FFFFFFFFFF Stop :FFFFFFFFFFF Keys :1 Number of CPU thread: 4 Range width: 2^44 Jump Avg distance: 2^22.02 Number of kangaroos: 2^12.00 Suggested DP: 7 Expected operations: 2^23.11 Expected RAM: 14.7MB DP size: 7 [0xFE00000000000000] SolveKeyCPU Thread 1: 1024 kangaroos SolveKeyCPU Thread 0: 1024 kangaroos SolveKeyCPU Thread 3: 1024 kangaroos SolveKeyCPU Thread 2: 1024 kangaroos
Key# 0 [1S]Pub: 0x025E466E97ED0E7910D3D90CEB0332DF48DDF67D456B9E7303B50A3D89DE357336 Priv: 0xE02B35A358F
Done: Total time 01s
|
|
|
|
WanderingPhilospher
Full Member
Offline
Activity: 1120
Merit: 235
Shooters Shoot...
|
|
April 19, 2021, 04:18:58 AM |
|
You say puzzle 40, do you mean you are searching for a pubkey that is in a 40 bit range? Your screen shows you are searching 65 bits with a large 20 bit dp.
Thanks I use wrong command , I copy command from sample What command I should use with eclambda? jobsubmit.exe --name job104 --start 7FFFFFFFFFF --pubkey 025e466e97ed0e7910d3d90ceb0332df48ddf67d456b9e7303b50a3d89de357336 --keylen 44 --host 192.168.0.103 eclambda.exe --name job104 --device 0 --host 192.168.0.103 puzzle #44 compare with kangaroo Kangaroo.exe in.txt in.txt 7FFFFFFFFFF FFFFFFFFFFF 025e466e97ed0e7910d3d90ceb0332df48ddf67d456b9e7303b50a3d89de357336 That looks right. But I do not see a dp setting in your command so I am not sure what the default dp is. Kangaroo is using a dp of 7 with 4 CPU threads...note: CPU in smaller ranges are much faster than GPU (less spin up time and kangaroos jump faster, probably 4 to 1 faster) I say that so you do not compare Kangaroo with CPU versus ECL with GPU. Kangaroo with GPU only will take a little more than a second, due to spin up time. For fair comparison I would make sure you are searching with GPUs only and with same dp settings. I would also try a larger range, at least 65 bits.
|
|
|
|
fxsniper
Member
Offline
Activity: 406
Merit: 47
|
|
April 19, 2021, 04:36:43 AM |
|
That looks right. But I do not see a dp setting in your command so I am not sure what the default dp is. Kangaroo is using a dp of 7 with 4 CPU threads...note: CPU in smaller ranges are much faster than GPU (less spin up time and kangaroos jump faster, probably 4 to 1 faster) I say that so you do not compare Kangaroo with CPU versus ECL with GPU. Kangaroo with GPU only will take a little more than a second, due to spin up time. For fair comparison I would make sure you are searching with GPUs only and with same dp settings. I would also try a larger range, at least 65 bits.
Thank I use low bit because not use long time test just want 5 minute solve done look like eclambda have a bug when found key then loop again infinity loop puzzle #44 kangaroo = 01 second eclambda = 11:02:08 to 11:22:33 = 20 minute may be high bits very large range eclambda can solve fast thatn kangaroo it is need to testing [2021-04-19.11:02:08] [Info] Job name: job104 [2021-04-19.11:02:08] [Info] Public key: 025E466E97ED0E7910D3D90CEB0332DF48DDF67D456B9E7303B50A3D89DE357336 [2021-04-19.11:02:08] [Info] Key length: 44 bits [2021-04-19.11:02:08] [Info] Distinguished bits: 18 [2021-04-19.11:12:29] [Info] Verifying 111831 points [2021-04-19.11:12:29] [Info] Done [2021-04-19.11:12:30] [Info] Processing C:\bitcoin\eclambda_windows_x86_64\results\job104_74194500.dat [2021-04-19.11:12:30] [Info] Checking database for collisions [2021-04-19.11:12:30] [Info] Checked 111831 points in 32ms(3.49472e+06 points per second) [2021-04-19.11:12:30] [Info] Inserting [2021-04-19.11:12:31] [Info] Inserted 111831 points in 484ms(231056 points per second) [2021-04-19.11:22:32] [Info] Verifying 122014 points [2021-04-19.11:22:32] [Info] Done [2021-04-19.11:22:33] [Info] Processing C:\bitcoin\eclambda_windows_x86_64\results\job104_74797546.dat [2021-04-19.11:22:33] [Info] Checking database for collisions [2021-04-19.11:22:33] [Info] Found matching points! [2021-04-19.11:22:33] [Info] Finding solution... [2021-04-19.11:22:33] [Info] Colliding point: 040017203645BAD827E3961275340C21E4BA315799ED15D8FE421C00002217644F3153DC9730AC448061A6009AE2C13F9BD9E6C525EF54218B35B0A5C20BB184DC [2021-04-19.11:22:33] [Info] Performing walk 1 [2021-04-19.11:22:33] [Info] Performing walk 2 [2021-04-19.11:22:34] [Info] k1: 00000000000000000000000000000000000000000000000000000A2B1F0E1645 [2021-04-19.11:22:34] [Info] k2: 000000000000000000000000000000000000000000000000000004286BB3E0B5 [2021-04-19.11:22:34] [Info] k1 - k2 [2021-04-19.11:22:34] [Info] 00000000000000000000000000000000000000000000000000000602B35A3590 [2021-04-19.11:22:34] [Info] Found valid solution! [2021-04-19.11:22:34] [Info] Found key for 'job104' [2021-04-19.11:22:34] [Info] Writing solution to C:\bitcoin\eclambda_windows_x86_64/job104_solution.txt [2021-04-19.11:22:34] [Info] Solution to job104: 00000000000000000000000000000000000000000000000000000E02B35A358F [2021-04-19.11:22:34] [Info] Found matching points! [2021-04-19.11:22:34] [Info] Finding solution... [2021-04-19.11:22:34] [Info] Colliding point: 040017203645BAD827E3961275340C21E4BA315799ED15D8FE421C00002217644F3153DC9730AC448061A6009AE2C13F9BD9E6C525EF54218B35B0A5C20BB184DC [2021-04-19.11:22:34] [Info] Performing walk 1 [2021-04-19.11:22:34] [Info] Performing walk 2 [2021-04-19.11:22:34] [Info] k1: 00000000000000000000000000000000000000000000000000000A2B1F0E1645 [2021-04-19.11:22:34] [Info] k2: 000000000000000000000000000000000000000000000000000004286BB3E0B5 [2021-04-19.11:22:34] [Info] k1 - k2 [2021-04-19.11:22:34] [Info] 00000000000000000000000000000000000000000000000000000602B35A3590 [2021-04-19.11:22:34] [Info] Found valid solution! [2021-04-19.11:22:34] [Info] Found key for 'job104' [2021-04-19.11:22:34] [Info] Writing solution to C:\bitcoin\eclambda_windows_x86_64/job104_solution.txt [2021-04-19.11:22:34] [Info] Solution to job104: 00000000000000000000000000000000000000000000000000000E02B35A358F [2021-04-19.11:22:34] [Info] Found matching points! [2021-04-19.11:22:34] [Info] Finding solution... [2021-04-19.11:22:34] [Info] Colliding point: 040017203645BAD827E3961275340C21E4BA315799ED15D8FE421C00002217644F3153DC9730AC448061A6009AE2C13F9BD9E6C525EF54218B35B0A5C20BB184DC [2021-04-19.11:22:34] [Info] Performing walk 1 [2021-04-19.11:22:34] [Info] Performing walk 2 [2021-04-19.11:22:34] [Info] k1: 00000000000000000000000000000000000000000000000000000A2B1F0E1645 [2021-04-19.11:22:34] [Info] k2: 000000000000000000000000000000000000000000000000000004286BB3E0B5 [2021-04-19.11:22:34] [Info] k1 - k2 [2021-04-19.11:22:34] [Info] 00000000000000000000000000000000000000000000000000000602B35A3590 [2021-04-19.11:22:34] [Info] Found valid solution! [2021-04-19.11:22:34] [Info] Found key for 'job104' [2021-04-19.11:22:34] [Info] Writing solution to C:\bitcoin\eclambda_windows_x86_64/job104_solution.txt [2021-04-19.11:22:34] [Info] Solution to job104: 00000000000000000000000000000000000000000000000000000E02B35A358F [2021-04-19.11:22:34] [Info] Found matching points! [2021-04-19.11:22:34] [Info] Finding solution... [2021-04-19.11:22:34] [Info] Colliding point: 040017203645BAD827E3961275340C21E4BA315799ED15D8FE421C00002217644F3153DC9730AC448061A6009AE2C13F9BD9E6C525EF54218B35B0A5C20BB184DC [2021-04-19.11:22:34] [Info] Performing walk 1 [2021-04-19.11:22:35] [Info] Performing walk 2 [2021-04-19.11:22:35] [Info] k1: 00000000000000000000000000000000000000000000000000000A2B1F0E1645 [2021-04-19.11:22:35] [Info] k2: 000000000000000000000000000000000000000000000000000004286BB3E0B5 [2021-04-19.11:22:35] [Info] k1 - k2 [2021-04-19.11:22:35] [Info] 00000000000000000000000000000000000000000000000000000602B35A3590 [2021-04-19.11:22:35] [Info] Found valid solution! [2021-04-19.11:22:35] [Info] Found key for 'job104' [2021-04-19.11:22:35] [Info] Writing solution to C:\bitcoin\eclambda_windows_x86_64/job104_solution.txt [2021-04-19.11:22:35] [Info] Solution to job104: 00000000000000000000000000000000000000000000000000000E02B35A358F
|
|
|
|
fxsniper
Member
Offline
Activity: 406
Merit: 47
|
|
April 19, 2021, 04:42:34 AM |
|
I need to know and understand how eclambda works it is good for puzzle #120 or not server still loop when found key and I terminate run client program already , that still loop again again file save result still loop same job104_solution.txt Y: CA2D26338EA0E5FA9FABFDBFC4176CAB2F6A016612C7287EA3C85B86949C655F K: 00000000000000000000000000000000000000000000000000000E02B35A358F X: 0820EFE848370AFB08F6BE236ADDD39DC31AE584D687D852D8AE98642F6AE73E Y: CA2D26338EA0E5FA9FABFDBFC4176CAB2F6A016612C7287EA3C85B86949C655F K: 00000000000000000000000000000000000000000000000000000E02B35A358F X: 0820EFE848370AFB08F6BE236ADDD39DC31AE584D687D852D8AE98642F6AE73E Y: CA2D26338EA0E5FA9FABFDBFC4176CAB2F6A016612C7287EA3C85B86949C655F K: 00000000000000000000000000000000000000000000000000000E02B35A358F X: 0820EFE848370AFB08F6BE236ADDD39DC31AE584D687D852D8AE98642F6AE73E Y: CA2D26338EA0E5FA9FABFDBFC4176CAB2F6A016612C7287EA3C85B86949C655F K: 00000000000000000000000000000000000000000000000000000E02B35A358F X: 0820EFE848370AFB08F6BE236ADDD39DC31AE584D687D852D8AE98642F6AE73E Y: CA2D26338EA0E5FA9FABFDBFC4176CAB2F6A016612C7287EA3C85B86949C655F K: 00000000000000000000000000000000000000000000000000000E02B35A358F X: 0820EFE848370AFB08F6BE236ADDD39DC31AE584D687D852D8AE98642F6AE73E Y: CA2D26338EA0E5FA9FABFDBFC4176CAB2F6A016612C7287EA3C85B86949C655F K: 00000000000000000000000000000000000000000000000000000E02B35A358F X: 0820EFE848370AFB08F6BE236ADDD39DC31AE584D687D852D8AE98642F6AE73E Y: CA2D26338EA0E5FA9FABFDBFC4176CAB2F6A016612C7287EA3C85B86949C655F K: 00000000000000000000000000000000000000000000000000000E02B35A358F X: 0820EFE848370AFB08F6BE236ADDD39DC31AE584D687D852D8AE98642F6AE73E Y: CA2D26338EA0E5FA9FABFDBFC4176CAB2F6A016612C7287EA3C85B86949C655F K: 00000000000000000000000000000000000000000000000000000E02B35A358F X: 0820EFE848370AFB08F6BE236ADDD39DC31AE584D687D852D8AE98642F6AE73E Y: CA2D26338EA0E5FA9FABFDBFC4176CAB2F6A016612C7287EA3C85B86949C655F K: 00000000000000000000000000000000000000000000000000000E02B35A358F X: 0820EFE848370AFB08F6BE236ADDD39DC31AE584D687D852D8AE98642F6AE73E Y: CA2D26338EA0E5FA9FABFDBFC4176CAB2F6A016612C7287EA3C85B86949C655F K: 00000000000000000000000000000000000000000000000000000E02B35A358F
|
|
|
|
fxsniper
Member
Offline
Activity: 406
Merit: 47
|
|
April 19, 2021, 08:23:50 AM |
|
How can I save complete work file from kangaroo
I try to save work file and extract tame and wild, extract from python script is work success but some data have problem
Problem is data on save file not complete , it is not have duplicate line from both (collision point)
Kangaroo.exe -ws -w save.work -wi 5 in.txt
Do I wrong use command? What command I should use?
I think may be Kangaroo save only last save before success found key. How can make Kangaroo save finish data inside too?
|
|
|
|
WanderingPhilospher
Full Member
Offline
Activity: 1120
Merit: 235
Shooters Shoot...
|
|
April 19, 2021, 02:56:15 PM |
|
How can I save complete work file from kangaroo
I try to save work file and extract tame and wild, extract from python script is work success but some data have problem
Problem is data on save file not complete , it is not have duplicate line from both (collision point)
Kangaroo.exe -ws -w save.work -wi 5 in.txt
Do I wrong use command? What command I should use?
I think may be Kangaroo save only last save before success found key. How can make Kangaroo save finish data inside too?
It is always checking for collision so doubt it will save what you are wanting it to. However, you can do a -wsplit option and then extract each work file, that's how I did it when wanting to find the exact lines that created the collision point.
|
|
|
|
fxsniper
Member
Offline
Activity: 406
Merit: 47
|
|
April 21, 2021, 03:56:30 AM |
|
It is always checking for collision so doubt it will save what you are wanting it to. However, you can do a -wsplit option and then extract each work file, that's how I did it when wanting to find the exact lines that created the collision point.
in python script it is save tame.txt and wild.txt when success to find key include collision data but look like kangaroo.exe save only last save before collision but not save all data when collision may be kangaroo.exe function save it save each time setting for save for backup and can continue from save but not save when collision , look like when collision program do report immediately with out save that ok, I know from python already just want to check on kangaroo.exe to learn how it work I think both save same data on kangaroo.exe save as hex format to all
|
|
|
|
WanderingPhilospher
Full Member
Offline
Activity: 1120
Merit: 235
Shooters Shoot...
|
|
April 21, 2021, 04:47:22 AM |
|
It is always checking for collision so doubt it will save what you are wanting it to. However, you can do a -wsplit option and then extract each work file, that's how I did it when wanting to find the exact lines that created the collision point.
in python script it is save tame.txt and wild.txt when success to find key include collision data but look like kangaroo.exe save only last save before collision but not save all data when collision may be kangaroo.exe function save it save each time setting for save for backup and can continue from save but not save when collision , look like when collision program do report immediately with out save that ok, I know from python already just want to check on kangaroo.exe to learn how it work I think both save same data on kangaroo.exe save as hex format to all Yes, Kangaroo.exe saves in hex format. The difference is Kangaroo.exe subtracts start range at beginning and then adds back once collision is found. Run -ws option, if you want to see it. I've told you how to do it, the rest is up to you. Also, not sure what you are trying to learn how it works. Many articles and this thread alone tell you how it works. And since you've looked at python script you should know as well. Tames find private keys, wilds find offset of private key, both with user defined dp setting. People have answered you, what don't you believe or understand? No magic tricks, no speed ups, just the programs and how they were designed.
|
|
|
|
fxsniper
Member
Offline
Activity: 406
Merit: 47
|
|
April 21, 2021, 08:49:52 AM |
|
Yes, Kangaroo.exe saves in hex format. The difference is Kangaroo.exe subtracts start range at beginning and then adds back once collision is found. Run -ws option, if you want to see it. I've told you how to do it, the rest is up to you.
Also, not sure what you are trying to learn how it works. Many articles and this thread alone tell you how it works. And since you've looked at python script you should know as well. Tames find private keys, wilds find offset of private key, both with user defined dp setting. People have answered you, what don't you believe or understand? No magic tricks, no speed ups, just the programs and how they were designed.
Thanks I think I wan to know about elliptic-curves, ecdsa secp256k1 , how kangaroo attack on Elliptic Curve now, just read more about secp256k1 calculate (very difficult for me) look over view is ok, but I want to understand on math Feel lag knowledge from may people expert on crypto very long time sine bitcoin invented , need to know more a lot Who next make record name on Wikipedia with use kangaroo or any challenge puzzle ? interesting to have a name on record challenge Who found Kangaroo can attack Elliptic Curve? However kangaroo is just smart random method. best on low range (115 still on low not yet middle) Did bitcoin have some vulnerability that use pubkey on calculate?
|
|
|
|
|