Closed tbnobody closed 3 years ago
The variable that stores the value is only 32 bits wide, so anything above that isn't going to fit there.
Seems like a bug to me, unless the specifications for what's allowed there says otherwise.
As the plugin currently uses uint32_t
for these variables, I guess some rework may be required.
Aha, the actual error is in the parsing of the (hex) input to uint32_t
, the used conversion strtol
results in a signed value, so values between 0x7FFFFFFF and 0xFFFFFFFF won't fit. I've replaced it with strtoul
, that should fix it.
Can you try with this attached build?
{removed)
Is the attached build really a 1M build? Controller is a 8285 with only 1M memory and your filename shows a 4M flash with 1M spiffs I would guess?
Ah, sorry, didn't look close enough, here's a 1M build
(updated, see below)
Thank you! The Hex code is saved correctly now. I am just no sure wether it's an usage mistake or program error. I configured the plugin in the following way:
I am getting the following output in the console
888514 : Info : IRSEND,'{"protocol":"NEC","data":"0x807F708F","bits":32}'
888524 : Info : EVENT: IRReceive#IR=2155835535
But it seems that the command is not executed.
Which of the 3?
1) the rule on IRReceive#IR do
is not executed?
2) the rule on IRReceive#IR=2155835535 do
is not executed?
3) the IRSEND
command is not executed?
I would say there is a 4th method.
If I understood the documentation correctly, the command publish %sysname%/irkey,1
should be executed when the IR Code 807F708F is received. (see screenshot above)
I did make another similar change after the previous build I uploaded, that is also in the PR I made to fix this, and that is probably the fix you need, new attachment (same name though, I'll remove the other attachment)
(updated, see below)
Hm I tried this version as well. But the commands specified in the commands textbox are not getting executed.
Thats the output of the serial console when I press the buttons on the remote control:
361660 : Info : IRSEND,'{"protocol":"NEC","data":"0x807F708F","bits":32}'
361669 : Info : EVENT: IRReceive#IR=2155835535
362359 : Info : IRSEND,'{"protocol":"NEC","data":"0x807F609F","bits":32}'
362368 : Info : EVENT: IRReceive#IR=2155831455
362959 : Info : IRSEND,'{"protocol":"NEC","data":"0x807FF00F","bits":32}'
362968 : Info : EVENT: IRReceive#IR=2155868175
I don't see any publish events nor do I see published events on the mqtt broker. The IRReceive topic btw is receiving updates:
Can you remove, f.e., the last code, enable the 'Add new received code to command lines' option, and send that code again, to see how/what is added?
Ok, thats interesting....
52133601 : Info : EVENT: TaskInit#IRReceive=2,1
52138804 : Info : IRSEND,'{"protocol":"NEC","data":"0x807FF00F","bits":32}'
52138806 : Info : [P36] AddCode: 0x837FF00F to index 2
52138812 : Info : EVENT: IRReceive#IR=2155868175
52139124 : Info : P016_PLUGIN_ONCE_A_SECOND CustomTaskSettings Saved
(The Code in IRSEND
and AddCode
is different)
But when I now add a command it get's executed:
So this means the issue is resolved then? Great ๐
Don't close this manually please, it will be closed automatically once the PR that I made is merged, and Github will send the corresponding notifications.
hm not sure if resolved? I mean IRSEND shows code 0x807FF00F and AddCode shows 0x837FF00F... not sure why this happens or if its correct in this way? In my opinion both numbers should be the same?
All I did here was parse the value you can input to the correct result, the rest of the inner workings I didn't touch. And I've never used such IR plugin either, so that could be another, maybe not even related, bug. The left byte (first 2 positions) of the code is directly derived from what is received.
I got a few improvement suggestions in the PR, I'll implement those and upload a new test build here.
Looks like 2 bits difference. Could it be a reception error? How reliable is the IR reception for such long codes?
That code is actually assembled, the first byte (MSB) is the decode_type code, then it gets a (1) bit for 'repeat' and then the value received is added. Currently the plugin only supports 32 bits for the total code, but it is possible (read: very likely) that the value is > 24 bits, so it overflows into the command byte (bits 31-24). Also, the value
field in the receiver data structure is an uint64_t
. If that is the case, the plugin needs a big overhaul, as currently the stored codes are max. 32 bits.
In the log, the 'IRSEND' line shows the protocol, and 'NEC' is probably the 3 there.
I've just added an extra part to that log line, stating the numeric value of that type.
(Updated, see below)
Hmm thats the output now:
281774 : Info : IRSEND,'{"protocol":"NEC","data":"0x807FF00F","bits":32}' type: 0x3
281776 : Info : [P36] AddCode: 0x3807FF0 to index 2
281784 : Info : EVENT: IRReceive#IR=2155868175
282833 : Info : P016_PLUGIN_ONCE_A_SECOND CustomTaskSettings Saved
And btw... I think the data section in IRSEND should be correct, because if I output this data via the IR-diode the audio receiver handles them as expected...
Hm, It looks like I broke something, as that AddCode
isn't correct any longer, I'll look at that change.
The actual issue here is that in the current implementation, the decode_type
byte value is stored in the highest 8 bits of the 32 bits available for the code that probably never exceeded 23 bits, as the 24th bit is used for repeat
status, but your remote is actually sending 32 bit values.
There are a few possible solutions to this, but I'd like to involve @uwekaditz, the original author of this plugin, before 'messing it all up' ๐
Uwe, can you please share your thoughts on this subject?
@tbnobody attached a correction for the AddCode issue (updated, see below)
I was also struggling with TSOP4838 Plugin's Execute commands option and it did not work for me as my Remote Control also send 32 bits, also I have another RC with 36 bit length so even though the issues mentioned above are fixed, there'll be still a limitation...
I've been thinking of 'upgrading' this structure to use 64 bit (replace uint32_t
by uint64_t
, and while that seems simple, it requires a conversion and a (con)version flag in the settings, to see if conversion is still needed.
Maybe that should be a new issue & PR.
I've just tested the latest attached version of the precompiled binary again:
22414 : Info : IRSEND,'{"protocol":"NEC","data":"0x807FF00F","bits":32}' type: 0x3
22415 : Info : [P36] AddCode: 0x837FF00F to index 2
22422 : Info : EVENT: IRReceive#IR=2155868175
23045 : Info : P016_PLUGIN_ONCE_A_SECOND CustomTaskSettings Saved
The structure for adding and saving the IR commands can be 'upgraded' to 64 bits. As @tonhuisman mentioned there is the need for conversion and a conversion flag because we must support the users using the 32bit structure. That means 54bits can be used with the new structure for the IR code. The problem I see are there other RCs which can send codes even longer as 54bits?
The problem I see are there other RCs which can send codes even longer as 54bits?
Looking at the IRrecv.cpp
source and comments, there are at least a couple that support 56 bits, and I even saw mentions of ~424 bits (size constants), but I'm not sure how to interpret that.
Maybe the decode_type
and repeat
bits should be stored in separate struct members. (as we are about to change stuff, best do it as extensive as might be needed).
Looked a bit closer at those bit definitions, and indeed the worse case that is supported is 424 bits for some Hitachi AC equipment. But as those long codes aren't supported by this plugin for sending commands, we don't need to store such large codes.
I've changed an initialization, to be able to use hexToUL()
instead of strtoul()
(as requested by TD-er), so @tbnobody can you please repeat the above test with AddCode enabled again, to see if it now handles code detection correctly?
(Updated, see below)
The IRrecv.cpp
provides a hash functionality.
May be we should store the IR code as hash value if it is longer than 64 bits (requires another hash
bit in the P016_data_struct
)
This is how it looks now:
102214 : Info : IRSEND,'{"protocol":"NEC","data":"0x807FF00F","bits":32}' type: 0x3
102216 : Info : [P36] AddCode: 0x3807FF0 to index 2
102222 : Info : EVENT: IRReceive#IR=2155868175
102905 : Info : P016_PLUGIN_ONCE_A_SECOND CustomTaskSettings Saved
Seems that the last 0F is missing and the 3 was added...
(requires another
hash
bit in theP016_data_struct
)
I was thinking of adding a uint16_t
to store flags like this in the struct, and maybe use an uint16_t
to store the decode_type
, so there is enough room to expand.
Seems that the last 0F is missing and the 3 was added...
That 3 was 'hidden' in the 0x83... where 0x80... was expected.
I think we should 'upgrade' this issue & PR to be able to handle codes up to 64 bits properly, it may require work in the IRSEND (P035) plugin as well, but that is to be determined.
Seems that the last 0F is missing and the 3 was added...
This was caused by the 0x prefix not being accounted for in the hexToUL()
converter. Should be fixed now, can you please test again?
(updated, see below)
@tonhuisman can you provide the code you have changed that I can modify the P016 plug in.
This is the output of the lateest binary...
457308 : Info : IRSEND,'{"protocol":"NEC","data":"0x807FF00F","bits":32}' type: 0x3
457310 : Info : [P36] AddCode: 0x837FF00F to index 2
457316 : Info : EVENT: IRReceive#IR=2155868175
458191 : Info : P016_PLUGIN_ONCE_A_SECOND CustomTaskSettings Saved
@tonhuisman can you provide the code you have changed that I can modify the P016 plug in.
Please view PR #3653
@tonhuisman can you provide the code you have changed that I can modify the P016 plug in.
@uwekaditz are you going to pick up the task of converting the plugin to 64 bit values? I'd hate to start modifying the code and find out it is already/also being done by someone else ๐
@tonhuisman I havn't started yet. If you want to do the modification, no problem
I have a first version of the P016 IR receiver plugin that supports 64 bit codes (in the same PR). It automatically converts the current settings not backward compatible, (but only after they are saved, so if you want to revert a previous version after saving settings, or adding a code, you will need to re-enter all codes!)
Attached are both a 1M build and a 4M1M build, for those that want to test this (and please do!)
(updated, see below)
I've ordered a couple TSOP4838's, but these will take some time to arrive, so I can't currently test it myself, nor do I own many IR senders (only TV/audio remotes), so any help is really appreciated.
@tonhuisman can you provide the changed source code? I can test the changes with my project, but I also have no RCs sending a code longer the 24bits.
@uwekaditz I think it is based on the changes in this PR: https://github.com/letscontrolit/ESPEasy/pull/3653
It seems to crash when clicking on the existing device in the web gui:
83185 : Info : P016_PLUGIN_WEBFORM_LOAD ...
83198 : Error : P016 IR: Settings conversion, save task settings to store in new format.
83198 : Info : P016: struct size: 880/88/72 enum: 2
83202 : Info : P016: converting 0: type UNKNOWN code 0x807F708F
83203 : Info : P016: converting 1: type UNKNOWN cod
--------------- CUT HERE FOR EXCEPTION DECODER ---------------
Soft WDT reset
>>>stack>>>
ctx: sys
sp: 3fff1e90 end: 3fffffb0 offset: 01a0
3fff2030: 00000000 0194882b 40274bd8 40273b15
3fff2040: 40274bf1 00000001 3fff3a3c 40274be6
3fff2050: 00000001 000005fd 3fff567c 40204259
3fff2060: 00000190 00000000 3fff567c 402042e1
3fff2070: 00000000 3fff20d2 40100a4c 3fff1404
3fff2080: 3fff1a20 00000190 3fff13e0 40243b2d
3fff2090: 0d303931 0000000a 3fff1a20 40105e35
3fff20a0: 40270420 3fff3a3c 3fff2158 3fff1b64
3fff20b0: 3fff1a20 000020d8 3fff19f8 40243bb5
3fff20c0: 00000190 3fff2130 00014535 00000000
3fff20d0: 0000006c 3fff2130 3fff19f8 00000003
3fff20e0: 3fff1a20 3fff2130 3fff19f8 40243cb5
3fff20f0: 3fff2164 00000005 00000001 402728ac
3fff2100: 0000003f 402c0398 3fff2164 00000000
3fff2110: 0000003f 402c0398 3fff2130 40243d34
3fff2120: 00000000 402c0398 00000020 402636ae
3fff2130: 00000000 00003ee0 00002628 00002628
3fff2140: 00003440 00000000 00000000 00001900
3fff2150: 00000000 00000000 3fff8b00 018d018f
3fff2160: 80003440 756c6176 00000065 85001900
3fff2170: 00000000 00000000 3fff8b00 40263bc9
3fff2180: 80000020 74706f00 206e6f69 80270000
3fff2190: 00000000 3fff25a4 3fff21e0 40264600
3fff21a0: 0000003e 00003ee0 00002ec0 000030c8
3fff21b0: 0000003f 00000000 3fff21e0 402721e5
3fff21c0: 00000000 00000000 00000000 0000003f
3fff21d0: 0000003f 00000000 3fff2740 402646ac
3fff21e0: 00000000 3fff28f0 80ff03e8 40264415
3fff21f0: 00000061 3fff22b0 00000080 40272938
3fff2200: 3fff28c4 3fff28f0 00000001 00000061
3fff2210: 3fff22b0 3fff2740 00000000 4026488f
3fff2220: 00000000 402c7da8 3fff28c4 402728ac
3fff2230: 00000080 3fff8594 3fff28c4 402728dc
3fff2240: 402c7da8 3fff8594 3fff28f0 00000000
3fff2250: 00000000 3fff8594 3fff28c4 40238de8
3fff2260: 00000000 00000001 3fff28c4 3fff086e
3fff2270: 40102a67 3ffee240 00000002 00000000
3fff2280: 402bfd70 00000020 3fff2a50 40272292
3fff2290: 3ffeb03c 00000000 00000000 40272448
3fff22a0: 0000000b 04acd1fc 4010310a 00000100
3fff22b0: 53554e55 7f004445 86002200 00354352
3fff22c0: 402bfd70 83000018 00364352 40272383
3fff22d0: 83000018 0043454e 0000001c 83ff1585
3fff22e0: 594e4f53 00000000 84ff2a50 414e4150
3fff22f0: 494e4f53 892b0043 0043564a 402728ac
3fff2300: 83238970 534d4153 00474e55 87238a35
3fff2310: 4e594857 00524554 87238984 3fff64f4
3fff2320: 000c000f 00000000 0000474c fffffffe
3fff2330: 82000700 594e4153 0000004f 85ff2b60
3fff2340: 5354494d 53494255 8a004948 48534944
3fff2350: 00000000 84000000 52414853 3fff0050
3fff2360: 85ff4332 4c4f4f43 3f005849 86272a54
3fff2370: 4b494144 40004e49 86ff23b0 4f4e4544
3fff2380: 0000004e 85ff431c 564c454b 54414e49
3fff2390: 8a00524f 52454853 444f4f57 88000800
3fff23a0: 3fff82bc 000d000f 00000020 4d4d4352
3fff23b0: 3fff3000 84000020 3fff365c 000c000f
3fff23c0: 00000001 58354352 00000000 8423bb5a
3fff23d0: 45455247 3fff0200 84ff2b40 4e4f5250
3fff23e0: 40004f54 86ff022c 5f43454e 454b494c
3fff23f0: 88000000 4f475241 3fff2b00 84239507
3fff2400: 544f5254 fe004345 86efeffe 414b494e
3fff2410: 402b0049 85000020 00574152 40272292
3fff2420: 83efeffe 3fff5b5c 000b000f 00efeffe
3fff2430: 48534f54 5f414249 8a004341 494a5546
3fff2440: 5f555354 8a004341 4544494d 3ffe0041
3fff2450: 852bfd70 4947414d 53455551 89270054
3fff2460: 4553414c 47415452 88efef00 52524143
3fff2470: 5f524549 8a004341 45494148 43415f52
3fff2480: 88000000 3fff5f5c 000b000f 002728ac
3fff2490: 41544948 5f494843 8a004341 3fff5f74
3fff24a0: 000b000f 00efeffe 3fff7d8c 000b000f
3fff24b0: 00efeffe 41434947 00454c42 87efeffe
3fff24c0: 3fff7da4 000e000f 00efeffe 3fff7dbc
3fff24d0: 000c000f 00efeffe 534d4153 5f474e55
3fff24e0: 8a004341 5254554c fe004e4f 86efeffe
3fff24f0: 43454c45 5f415254 8a004341 3fff7dd4
3fff2500: 000c000f 00000000 4e4f4950 00524545
3fff2510: 87000001 0032474c 00000010 83000000
3fff2520: 004d574d 00000030 83000010 4b494144
3fff2530: 00324e49 87000000 54534556 415f4c45
3fff2540: 89000043 4f434554 00000000 84000000
3fff2550: 534d4153 33474e55 89ff0036 314c4354
3fff2560: 43413231 88000000 4f47454c 00004650
3fff2570: 86000800 3fff7dec 0013001f 00000000
3fff2580: 3fff8924 0014001f 00ff26e0 4b494144
3fff2590: 31324e49 89ff0036 52414853 43415f50
3fff25a0: 88000000 3fff7e14 000b000f 00000000
3fff25b0: 58414e49 00000000 8400000a 4b494144
3fff25c0: 36314e49 89ff0030 434f454e 414d494c
3fff25d0: 88000000 4b494144 37314e49 89000036
3fff25e0: 4b494144 32314e49 89000038 4f434d41
3fff25f0: 3fff0052 85000000 4b494144 35314e49
3fff2600: 89000032 3fff894c 000d000f 00288976
3fff2610: 3fff8964 000d000f 00283f85 3fff897c
3fff2620: 000d000f 00000002 594e4f53 4b38335f
3fff2630: 88ff2600 4f535045 3fff004e 85000000
3fff2640: 504d5953 594e4f48 88ffff00 3fff8994
3fff2650: 000b000f 00ff26f1 4b494144 34364e49
3fff2660: 88000000 57524941 004c4c45 8728f3cd
3fff2670: 3fff89ac 000b000f 0000000a 48534f44
3fff2680: 41485349 88000000 3fff89c4 000d000f
3fff2690: 00ff30b4 3fff89dc 000c000f 00000000
3fff26a0: 3fff89f4 000c000f 00000020 3fff8a0c
3fff26b0: 000d000f 00ffffff 4f524f43 415f414e
3fff26c0: 89ff0043 4544494d 00343241 87000000
3fff26d0: 4550455a 00004c41 86000020 594e4153
3fff26e0: 43415f4f 88000000 544c4f56 40005341
3fff26f0: 86ff3a3c 5a54454d 00000000 84000000
3fff2700: 4e415254 4c4f4353 89000044 3fff8a24
3fff2710: 000c000f 00ff27d0 4152494d 00004547
3fff2720: 86ff3a3c 3fff8a3c 000c000f 0010144d
3fff2730: 3fff8a54 000e000f 00ff2858 40272292
3fff2740: 00000000 00000001 00000002 00000003
3fff2750: 00000004 00000005 00000006 00000007
3fff2760: 00000008 00000009 0000000a 0000000b
3fff2770: 0000000c 0000000d 0000000e 0000000f
3fff2780: 00000010 00000011 00000012 00000013
3fff2790: 00000014 00000015 00000016 00000017
3fff27a0: 00000018 00000019 0000001a 0000001b
3fff27b0: 0000001c 0000001d 0000001e 0000001f
3fff27c0: 00000020 00000021 00000022 00000023
3fff27d0: 00000024 00000025 00000026 00000027
3fff27e0: 00000028 00000029 0000002a 0000002b
3fff27f0: 0000002c 0000002d 0000002e 0000002f
3fff2800: 00000030 00000031 00000032 00000033
3fff2810: 00000034 00000035 00000036 00000037
3fff2820: 00000038 00000039 0000003a 0000003b
3fff2830: 0000003c 0000003d 0000003e 0000003f
3fff2840: 00000040 00000041 00000042 00000043
3fff2850: 00000044 00000045 00000046 00000047
3fff2860: 00000048 00000049 0000004a 0000004b
3fff2870: 0000004c 0000004d 0000004e 0000004f
3fff2880: 00000050 00000051 00000052 00000053
3fff2890: 00000054 00000055 00000056 00000057
3fff28a0: 00000058 00000059 0000005a 0000005b
3fff28b0: 0000005c 0000005d 0000005e 0000005f
3fff28c0: 00000060 00000000 00000000 80000044
3fff28d0: 3fff80b4 0000000e 00000000 40272204
3fff28e0: 3fff29b0 0000000e 3fff29d0 4024e775
3fff28f0: 615f6370 00316772 87000000 3fff1500
3fff2900: 00000001 80ff29b0 3fff8abc 0000001f
3fff2910: 00000000 3fff8a94 0000001f 00ff8154
3fff2920: 3fff8a6c 0016001f 00ff2950 3fff5f24
3fff2930: 001f002f 00000000 3fff29b0 402723cc
3fff2940: 3fff858c 00000001 3fff29b0 402725dc
3fff2950: 00000080 3fff28c4 3fff28b0 40242888
3fff2960: 0000000e 00000009 3fff2a50 00000004
3fff2970: 3fff2abc 00000009 3fff2a50 4024e60c
3fff2980: 3fff7e00 000e000f 80ff29b0 40272100
3fff2990: 0000000e 802c6a7c 3fff2900 402721e5
3fff29a0: 80000004 00000000 3fff29d0 80272204
3fff29b0: 3fff6400 00000001 80ff29d0 00000000
3fff29c0: 00000000 00000000 00000000 00000000
3fff29d0: 00000000 00000000 03030100 8000ff04
3fff29e0: 80656800 80ff6400 800b0000 00000000
3fff29f0: 80000000 00000000 00000000 80000000
3fff2a00: 00000000 00000000 80030100 00000000
3fff2a10: 00000000 00000000 00000000 402723ef
3fff2a20: 00000000 00000001 3fff2a50 00000000
3fff2a30: 00000004 00000001 3fff2a50 4026a6e6
3fff2a40: 3fff2a50 00000001 3fff07a0 4025327d
3fff2a50: 67756c00 36316e69 80000000 40272200
3fff2a60: 00000000 80ff2ac0 00000000 402578af
3fff2a70: 80000000 3fff2a00 3fff2aa0 802721e5
3fff2a80: 00000000 3fff2ac0 80000001 00000000
3fff2a90: 00000000 00000000 00000000 00000000
3fff2aa0: 00000000 00000000 03030100 4000ff04
3fff2ab0: 65525200 76696563 80ff0065 40272100
3fff2ac0: 00000002 802c6b88 00000002 40272204
3fff2ad0: 00000020 00000001 3fff14c5 402721e5
3fff2ae0: 65646e00 00650078 00000001 00000001
3fff2af0: 00000000 00000001 00000001 4026e530
3fff2b00: 006c6500 00000979 80000979 4010114b
3fff2b10: 000144b3 ffffffff 3fff567c 00000001
3fff2b20: 3fff1490 3fff1404 00000020 401013cf
3fff2b30: 3fff7e24 3fff1404 4024aa14 00000001
3fff2b40: 3fff1490 3fff1404 3fff2be8 402721e5
3fff2b50: 3fff1490 3fff1404 3fff13e0 40272204
3fff2b60: 00000008 3fff1404 3fff13e0 00000008
3fff2b70: 00000000 00000000 00000000 40272dc8
3fff2b80: 3fff2be0 3fff2be0 3fff2bc0 40268828
3fff2b90: 00000001 00000001 3fff763c 402804de
3fff2ba0: 3fff2be0 3fff1420 3fff763c 401000d9
3fff2bb0: 3fff763c 3fff1420 3fff763c 40268860
3fff2bc0: 76656400 73656369 80ff0100 80274be6
3fff2bd0: 3fff763c 3fff1420 3fff13e0 4024c03a
3fff2be0: 7665642f 73656369 88ff8100 0000008f
3fff2bf0: 80006369 00000000 40100a4c 000144ac
3fff2c00: 3fff1420 3fff0598 3fff13e0 00000001
3fff2c10: 00000001 3fff763c 00001388 40248784
3fff2c20: 00000000 3fff567c 3fff13e0 3fff2d0c
3fff2c30: 00000001 3fff1404 3fff13e0 4024c18f
3fff2c40: 40281378 00000000 00001388 3fff2d0c
3fff2c50: 00000000 3fff567c 3fff043c 3fff2d0c
3fff2c60: 3fffdad0 00000001 3fff043c 4024c261
3fff2c70: 3fffdad0 3ffe84f8 00000000 4024c3e0
3fff2c80: 00000000 00000000 80000001 401003e0
3fff2c90: 3fffdad0 00000000 3fff2cc8 40232384
3fff2ca0: feefeffe feefeffe feefeffe 40273c44
3fff2cb0: feefeffe feefeffe 3ffe8640 40100345
3fff2cc0: feefeffe 3fff1ca0 00000001 ffffffff
3fff2cd0: 00000000 00000000 402c8254 000007f8
3fff2ce0: 00000000 00000000 00000000 00000000
3fff2cf0: 00000000 00000000 00200002 00230020
3fff2d00: 00000000 00000000 90f12e07 00000000
3fff2d10: 00000000 00000006 00000000 00000000
3fff2d20: 00000000 00000000 00000000 00000000
3fff2d30: 00000000 00000000 00000000 00000000
3fff2d40: 00000000 00000000 00000000 00000000
3fff2d50: 000186a0 00000012 00000000 00000000
3fff2d60: 00000001 00000001 000000f8 00000000
3fff2d70: 00000000 00000000 00000000 0000000a
3fff2d80: 00000000 000000ff 00000000 00000000
3fff2d90: 00000000 00000000 00000000 00000000
3fff2da0: 00000000 00000000 00000000 00000000
3fff2db0: 00000000 00000000 00000000 00000000
3fff2dc0: 00000000 00000000 00000000 00000000
3fff2dd0: 00000000 00000000 00000000 00000000
3fff2de0: 00000000 00000000 00000000 00000000
3fff2df0: 00000000 00000000 00000000 00000000
3fff2e00: 00000000 00000000 00000000 00000000
3fff2e10: 00000000 00000000 00000000 00000000
3fff2e20: 00000000 00000000 00000000 00000000
3fff2e30: 00000000 00000000 00000000 00000000
3fff2e40: 00000000 00000000 00000000 00000000
3fff2e50: 00000000 00000000 00000000 00000000
3fff2e60: 00000000 00000000 00000000 00000000
3fff2e70: 00000000 00000000 00000000 00000000
3fff2e80: 00000000 00000000 00000000 00000000
3fff2e90: 00000000 00000000 00000000 00000000
3fff2ea0: 00000000 00000000 00000000 00000000
3fff2eb0: 00000000 00000000 00000000 00000000
3fff2ec0: 00000000 00000000 00000000 00000000
3fff2ed0: 00000000 00000000 00000000 00000000
3fff2ee0: 00000000 00000000 00000000 00000000
3fff2ef0: 00000000 00000000 00000000 00000000
3fff2f00: 00000000 00000000 00000000 00000000
3fff2f10: 00000000 00000000 00000000 00000000
3fff2f20: 00000000 00000000 00000000 00000000
3fff2f30: 039498d7 00000000 023c60c4 011e1a30
3fff2f40: 40274b70 00000000 ffffffff 01948963
3fff2f50: 00000000 40274b50 00000000 00004000
3fff2f60: 00000000 00000000 00000000 00000000
3fff2f70: 00000000 00000000 00000000 00000000
3fff2f80: 00000000 00000000 00000000 00000000
3fff2f90: 00000000 00000000 00000000 00000000
3fff2fa0: 00000000 00000000 00000000 00000000
3fff2fb0: 00000000 00000000 00000000 00000000
3fff2fc0: 00000000 00000000 00000000 00000000
3fff2fd0: 00000000 00000000 00000000 00000000
3fff2fe0: 00000000 00000000 00000000 00000000
3fff2ff0: 00000000 00000000 00000000 00000000
3fff3000: 00000000 00000000 00000000 00000000
3fff3010: 00000000 00000000 00000000 00000000
3fff3020: 00000000 00000000 00000000 00000000
3fff3030: 00000000 00000000 00000000 00000000
3fff3040: 00000003 40100110 00000000 00000000
3fff3050: 00000000 00000000 00000000 00000000
3fff3060: 00000000 00000000 00000000 3fff397c
3fff3070: 3fff3a24 4027576c e0a19ece 0005c388
3fff3080: 00000001 ffffffff 00000418 00000000
3fff3090: 00000000 00000000 00000000 00000000
3fff30a0: 00000000 00000000 00000000 00000000
3fff30b0: 00001151 3fff3578 00000000 3ffea5e4
3fff30c0: 018d3599 0004c4b4 40101774 00000000
3fff30d0: 60b35d81 00000000 00000000 00000000
3fff30e0: 00000000 00000000 3fff7fa4 3fff392c
3fff30f0: 00000000 00000000 00000000 00000000
3fff3100: 00000000 00000000 00000000 00000000
3fff3110: 00000000 00000000 00000000 00000000
3fff3120: 000035d0 00000001 000144e9 3fff5354
3fff3130: 0114a8c0 00000000 00000000 3fff2a78
3fff3140: 00000000 00000000 00000000 00000000
3fff3150: 00000dc1 5401a8c0 00030001 70000001
3fff3160: 69707069 6f6e2e6e 79646f62 6e616c2e
3fff3170: 00000000 00000000 00000000 00000000
3fff3180: 00000000 00000000 00000000 00000000
3fff3190: 00000000 00000000 00000000 00000000
3fff31a0: 00000000 00000000 00000000 00000000
3fff31b0: 00000000 00000000 00000000 00000000
3fff31c0: 00000000 00000000 00000000 00000000
3fff31d0: 00000000 00000000 00000000 00000000
3fff31e0: 00000000 00000000 00000000 00000000
3fff31f0: 00000000 00000000 00000000 00000000
3fff3200: 00000000 00000000 00000000 00000000
3fff3210: 00000000 00000000 00000000 00000000
3fff3220: 00000000 00000000 00000000 00000000
3fff3230: 00000000 00000000 00000000 00000000
3fff3240: 00000000 00000000 00000000 00000000
3fff3250: 00000000 00000000 00000000 00000000
3fff3260: 00000000 00000000 00000000 00000000
3fff3270: 00000000 00000000 00000000 00000000
3fff3280: 00000000 00000000 00000000 00000000
3fff3290: 00000000 00000000 00000000 00000000
3fff32a0: 00000000 00000000 00000000 00000000
3fff32b0: 00000000 00000000 00000000 00000000
3fff32c0: 00000000 00000000 00000000 00000000
3fff32d0: 00000000 00000000 00000000 00000000
3fff32e0: 00000000 00000000 00000000 00000000
3fff32f0: 00000000 00000000 00000000 00000000
3fff3300: 00000001 3fff3584 00000001 00000000
3fff3310: 00001000 00000000 00002981 15f5c259
3fff3320: 0000000c 00000000 00000000 3fff5f56
3fff3330: 00000000 00000000 00000000 3fff5f56
3fff3340: 00000002 79a44832 00000001 3fff5ecc
3fff3350: 00000000 00000000 0114a8c0 3fff3478
3fff3360: 85665bee 0025ad08 00000002 00000000
3fff3370: 00000000 00000000 00000000 00000000
3fff3380: 00000000 00000000 00000000 00000000
3fff3390: 00000000 00000000 00000000 00000000
3fff33a0: 00000000 00000000 00000000 00000000
3fff33b0: 00000000 00000000 00000000 00000000
3fff33c0: 00000000 00000000 00000000 00000000
3fff33d0: 00000000 00000000 00000000 00000000
3fff33e0: 00000000 00000000 00000000 00000000
3fff33f0: 00000000 00000000 00000000 00000000
3fff3400: 00000000 00000000 00000000 00000000
3fff3410: 00000000 00000000 00000000 00000000
3fff3420: 00000000 00000000 00000000 00000000
3fff3430: 00000000 00000000 00000000 00000000
3fff3440: 00000000 020000e0 010000e0 00000000
3fff3450: 0000003a 00003a98 00000001 00000000
3fff3460: 0114a8c0 00000001 3fff7efc 00000000
3fff3470: 00000000 3fff392c 00000000 8714a8c0
3fff3480: 00ffffff 0114a8c0 40296c74 402958e0
3fff3490: 4028ef1c 4028ee68 00000000 3fff502c
3fff34a0: 3fff362c 3fff5664 05dcffff d620f540
3fff34b0: 2f065de1 00007473 00000000 3fff3478
3fff34c0: 00000000 00000000 00000000 40296c74
3fff34d0: 402958e0 4028ef1c 00000000 00000000
3fff34e0: 00000000 3fff3644 00000000 0000ffff
3fff34f0: 00000000 20060000 00017061 00000000
3fff3500: 00000001 3fff644c 00000000 0000009b
3fff3510: 00000000 3fff7d64 00000000 00000000
3fff3520: 00000000 00000000 00000000 00000000
3fff3530: 00000000 3fff34bc 3fff3478 3fff7efc
3fff3540: 01010100 01010000 00010001 00000000
3fff3550: 00000005 01010101 00015180 00000000
3fff3560: 00000000 ffffff00 c0a81401 c0a81401
3fff3570: 00000000 c0a81401 00000001 007f0ab9
3fff3580: 00000007 00000000 00000000 ff000000
3fff3590: 00000000 f92e0000 00000000 00000000
3fff35a0: 0000ff00 4029089c 00000000 00000000
3fff35b0: 0001000a 3fff3614 00014842 40290450
3fff35c0: 402be92c 00000000 0007000d 3fff4f84
3fff35d0: 0001d4e2 40290450 402be934 00000000
3fff35e0: 000a0010 3fff35fc 0001454d 40290450
3fff35f0: 402be93c 00000000 000d0013 3fff35b4
3fff3600: 0001454d 40290450 402be944 00000000
3fff3610: 00100016 3fff35cc 00014842 40290450
3fff3620: 402be94c 00000000 00130019 00000000
3fff3630: 010000e0 00000200 00000001 00000000
3fff3640: 0016001c 00000000 010000e0 00000200
3fff3650: 00000001 00000000 0019001f 594e4153
3fff3660: 434c5f4f 31363437 00000000 00007061
3fff3670: 001c8021 0ab90542 00000000 09360498
3fff3680: 001f0076 3fff392c ffffffff 00571a33
3fff3690: 00000000 402a61b0 00000000 3fff2f34
3fff36a0: 01a97ae3 00000000 402a0afc 00000000
3fff36b0: 00000000 00000000 00000000 00000000
3fff36c0: 00000000 00000000 00000005 3903680c
3fff36d0: 000082c2 00008050 00000000 000f7fa8
3fff36e0: 00000000 00000000 00000000 00000000
3fff36f0: 00000000 00000000 00000000 00000000
3fff3700: 00000000 00004d30 00000000 00000000
3fff3710: 00000000 3ffef3d8 3fff5424 00000000
3fff3720: 00000000 00000000 00000000 00000000
3fff3730: 00000000 00000000 00000000 00000000
3fff3740: 00000000 00000000 00000000 00000000
3fff3750: 00000000 02050005 3ffeec10 011b19ac
3fff3760: 14000300 00000000 00000000 00000000
3fff3770: 00000000 00000000 00000000 00000000
3fff3780: 00000000 00000000 00000000 00000000
3fff3790: 00000000 00000000 00000000 00000000
3fff37a0: 00000000 00000000 00000000 00000000
3fff37b0: 00000000 00000000 00000000 00000000
3fff37c0: 00000000 00000000 00000000 00000000
3fff37d0: 00000000 00000000 00000000 00000000
3fff37e0: 00000000 00000000 00000000 00000000
3fff37f0: 00000000 00000000 00000000 00000000
3fff3800: 00000000 00000000 00000000 00000000
3fff3810: 00000000 00000000 00000000 00000000
3fff3820: 00000000 00000000 00000000 00000000
3fff3830: 00000000 00000000 00000000 00000000
3fff3840: 00000000 00000000 00000000 00000000
3fff3850: 00000000 00000000 00000000 00000000
3fff3860: 00000000 00000000 00000000 00000000
3fff3870: 00000000 00000000 00000000 00000000
3fff3880: 00000000 00000000 00000000 00000000
3fff3890: 00000000 00000000 00000000 00000000
3fff38a0: 00000000 00000000 00000000 00000000
3fff38b0: 00000000 00000000 00000000 00000000
3fff38c0: 00000000 00000000 00000000 00000000
3fff38d0: 00000000 00000000 00000000 00000000
3fff38e0: 00000000 00000000 00000000 00000000
3fff38f0: 00000000 00000000 00000000 00000000
3fff3900: 00000000 00000000 00000000 00000000
3fff3910: 00000000 00000000 00000000 00000000
3fff3920: 00000000 0001ccff 0021007f 00000000
3fff3930: 8714a8c0 00ffffff 0114a8c0 402b26e0
3fff3940: 402be800 401057bc 3fff3684 00000000
3fff3950: 00000000 402afaa4 3fff5664 400605dc
3fff3960: e1d620f5 7765115d 00022900 00000000
3fff3970: 00768080 01310000 007f0095 40281c70
3fff3980: 4027576c 402756c4 402756a8 4027568c
3fff3990: 00020000 000db000 00001000 00001000
3fff39a0: 00000100 00000020 00000000 00000000
3fff39b0: 00000015 0000000d 3fff4624 3fff4524
3fff39c0: 3fff472c 00000005 ffffd8e8 00000004
3fff39d0: 000000aa 000000f6 00e50000 3fff4824
3fff39e0: 00000578 4028100c 00000000 00000001
3fff39f0: 00000000 20090315 000db000 00020000
3fff3a00: 00000100 00001000 00000005 3fff4524
3fff3a10: 3fff472c 3fff4824 53504946 ffffff01
3fff3a20: 00800098 40281cc0 00000001 00000001
3fff3a30: 3fff397c ffffffff 009500d3 706f2f3c
3fff3a40: 6e6f6974 706f3c3e 6e6f6974 61762020
3fff3a50: 3d65756c 3e203335 4b494144 3c324e49
3fff3a60: 74706f2f 3e6e6f69 74706f3c 206e6f69
3fff3a70: 6c617620 353d6575 563e2034 45545345
3fff3a80: 43415f4c 706f2f3c 6e6f6974 706f3c3e
3fff3a90: 6e6f6974 61762020 3d65756c 3e203535
3fff3aa0: 4f434554 706f2f3c 6e6f6974 706f3c3e
3fff3ab0: 6e6f6974 61762020 3d65756c 3e203635
3fff3ac0: 534d4153 33474e55 6f2f3c36 6f697470
3fff3ad0: 6f3c3e6e 6f697470 7620206e 65756c61
3fff3ae0: 2037353d 4c43543e 41323131 6f2f3c43
3fff3af0: 6f697470 6f3c3e6e 6f697470 7620206e
3fff3b00: 65756c61 2038353d 47454c3e 3c46504f
3fff3b10: 74706f2f 3e6e6f69 74706f3c 206e6f69
3fff3b20: 6c617620 353d6575 4d3e2039 55535449
3fff3b30: 48534942 45485f49 5f595641 2f3c3838
3fff3b40: 6974706f 3c3e6e6f 6974706f 20206e6f
3fff3b50: 756c6176 30363d65 494d3e20 42555354
3fff3b60: 49485349 4145485f 315f5956 2f3c3235
3fff3b70: 6974706f 3c3e6e6f 6974706f 20206e6f
3fff3b80: 756c6176 31363d65 41443e20 4e494b49
3fff3b90: 3c363132 74706f2f 3e6e6f69 74706f3c
3fff3ba0: 206e6f69 6c617620 363d6575 533e2032
3fff3bb0: 50524148 3c43415f 74706f2f 3e6e6f69
3fff3bc0: 74706f3c 206e6f69 6c617620 00000000
3fff3bd0: 00000000 00000000 00000000 00000000
3fff3be0: 00000000 00000000 00000000 00000000
3fff3bf0: 00000000 00000000 00000000 00000000
3fff3c00: 00000000 00000000 00000000 00000000
3fff3c10: 009800ec 00000000 00000000 00000000
3fff3c20: 00000000 00000000 00000000 00000000
3fff3c30: 00000000 3f800000 c2580000 00000000
3fff3c40: 00000000 00000000 00000000 00000000
3fff3c50: 00000000 00000000 00000000 00000000
3fff3c60: 00000000 00000000 00000000 00000000
3fff3c70: 00000000 00000000 00000000 00000000
3fff3c80: 00000000 00000000 00000000 00000000
3fff3c90: 00000000 00000000 00000000 00000000
3fff3ca0: 00000000 00000000 00000000 00000000
3fff3cb0: 00000000 00000000 00000000 00000000
3fff3cc0: 00000000 00000000 00000000 00000000
3fff3cd0: 00000000 00000000 00d300f1 4e455600
3fff3ce0: 4d203a54 69545451 726f706d 6f432374
3fff3cf0: 63656e6e 00646574 00000000 00000000
3fff3d00: 00ec00f8 d6011f90 075b4977 2077df02
3fff3d10: cf05075b 00504977 2077de08 c60920bf
3fff3d20: ffdd6e77 7367e00d c0000000 00002767
3fff3d30: 7867c000 3130702f 00f100ff 3fff3d3c
3fff3d40: 3fff3d3c 3fff397c 00000000 00000000
3fff3d50: 3fff3d48 3fff3d48 00000000 0000fcb6
3fff3d60: 00000064 00000000 000a000a 00000000
3fff3d70: 00f80104 73797325 656d616e 74252f25
3fff3d80: 616e6b73 2f25656d 6c617625 656d616e
3fff3d90: 00000025 61383328 00ff0107 3fff536c
3fff3da0: 3fff7cd4 10000004 00014504 20415955
3fff3db0: 01040110 0e050401 1d1c1a10 25232221
3fff3dc0: 00000058 00000000 00000000 00000000
3fff3dd0: 00000000 00000000 00000000 00000000
3fff3de0: 00000000 00000000 00000000 00000000
3fff3df0: 203a2000 646c6f43 01070113 00000001
3fff3e00: 3fff3e2c 3fff53fc 3fff3e14 203a0104
3fff3e10: 01100116 00000001 3fff3dfc 00000000
3fff3e20: 00000000 6e490205 01130119 00000001
3fff3e30: 3fff10a4 3fff3dfc 3fff3e8c 2e2e030e
3fff3e40: 0116011c 00000001 3fff3e5c 00000000
3fff3e50: 00000000 203a0410 0119011f 00000000
3fff3e60: 3fff3e8c 3fff3e44 3fff3e74 3420051a
3fff3e70: 011c0122 00000001 3fff3e5c 00000000
3fff3e80: 00000000 3031061c 011f0125 00000001
3fff3e90: 3fff3e2c 3fff3e5c 3fff3ebc 7563071d
3fff3ea0: 01220128 00000001 3fff3ebc 00000000
3fff3eb0: 00000000 4b4f0821 0125012b 00000000
3fff3ec0: 3fff3e8c 3fff3ea4 3fff3eec 3a200922
3fff3ed0: 0128012e 00000000 3fff3eec 00000000
3fff3ee0: 00000000 206c0a23 012b0131 00000001
3fff3ef0: 3fff3ebc 3fff3ed4 3fff559c 3a200b25
3fff3f00: 012e8132 01f3007f 01310136 00000000
3fff3f10: 3fff3f44 00000000 40202614 40201e5c
3fff3f20: 00000001 00000000 01320139 402812d8
3fff3f30: 00000002 00000001 3fff3f0c 00000000
3fff3f40: 0136013c 402486a4 00000000 40280470
3fff3f50: 4028045c 00000000 0139013f 3fff3fc4
3fff3f60: 3fff01f4 3fff3f0c 3fff3f2c 00000000
3fff3f70: 013c0143 00000001 3fff3fac 00000000
3fff3f80: 40202674 40201de8 00000001 00000000
3fff3f90: 013f0146 402812d8 00000002 00000001
3fff3fa0: 3fff3f74 00000000 01430149 402486c0
3fff3fb0: 00000000 40280498 40280484 00000000
3fff3fc0: 0146014c 3fff402c 3fff3f5c 3fff3f74
3fff3fd0: 3fff3f94 00000000 01490150 00000003
3fff3fe0: 3fff4014 00000000 40202734 40201d74
3fff3ff0: 00000001 00000000 014c0153 402812d8
3fff4000: 00000002 00000001 3fff3fdc 00000000
3fff4010: 01500156 402486f8 00000000 402804c0
3fff4020: 402804ac 00000000 01530159 3fff4094
3fff4030: 3fff3fc4 3fff3fdc 3fff3ffc 00000000
3fff4040: 0156015d 00000004 3fff407c 00000000
3fff4050: 40202794 40201bac 00000001 00000000
3fff4060: 01590160 402812d8 00000002 00000001
3fff4070: 3fff4044 00000000 015d0163 40248710
3fff4080: 00000000 402804e8 402804d4 00000000
3fff4090: 01600166 3fff40fc 3fff402c 3fff4044
3fff40a0: 3fff4064 00000000 0163016a 00000002
3fff40b0: 3fff40e4 00000000 402026d4 40201b80
3fff40c0: 00000001 00000000 0166016d 402812d8
3fff40d0: 00000002 00000001 3fff40ac 00000000
3fff40e0: 016a0170 4024874c 00000000 40280510
3fff40f0: 402804fc 00000000 016d0173 3fff4164
3fff4100: 3fff4094 3fff40ac 3fff40cc 00000000
3fff4110: 01700177 00000005 3fff414c 00000000
3fff4120: 402027f4 40201bd0 00000001 00000000
3fff4130: 0173017a 402812d8 00000002 00000001
3fff4140: 3fff4114 00000000 0177017d 4024871c
3fff4150: 00000000 40280538 40280524 00000000
3fff4160: 017a0180 3fff41cc 3fff40fc 3fff4114
3fff4170: 3fff4134 00000000 017d0184 00000006
3fff4180: 3fff41b4 00000000 40202854 40201c10
3fff4190: 00000001 00000000 01800187 402812d8
3fff41a0: 00000002 00000001 3fff417c 00000000
3fff41b0: 0184018a 40248734 00000000 40280560
3fff41c0: 4028054c 00000000 0187018d 3fff01f4
3fff41d0: 3fff4164 3fff417c 3fff419c 00000000
3fff41e0: 018a0190 00000100 00000000 00000000
3fff41f0: 3fff41fc 3fff41fc 018d01b1 00000371
3fff4200: 00000000 00000000 3fff4214 00000000
3fff4210: 019001b4 00000371 00000000 00000000
3fff4220: 00000000 00000000 00000000 00000000
3fff4230: 00000000 00000000 00000000 00000000
3fff4240: 00000000 00000000 00000000 00000000
3fff4250: 00000000 00000000 00000000 00000000
3fff4260: 00000000 00000000 00000000 00000000
3fff4270: 00000000 00000000 00000000 00000000
3fff4280: 00000000 00000000 00000000 00000000
3fff4290: 00000000 00000000 00000000 00000000
3fff42a0: 00000000 00000000 00000000 00000000
3fff42b0: 00000000 00000000 00000000 00000000
3fff42c0: 00000000 00000000 00000000 00000000
3fff42d0: 00000000 00000000 00000000 00000000
3fff42e0: 00000000 00000000 00000000 00000000
3fff42f0: 00000000 00000000 00000000 00000000
3fff4300: 019001b4 00000001 3fff5384 00000000
3fff4310: 00000000 00000001 01b101b7 3fff5eac
3fff4320: 3fff65e4 30000001 0001e679 2e372e32
3fff4330: 01b401bf 40281a18 3fff508c 00000000
3fff4340: 00000000 00000000 4026fc70 0333036d
3fff4350: 402804e8 402804d4 37303878 42303446
3fff4360: 00000000 00000000 3fff4dd4 00000000
3fff4370: 01b701c4 73657567 6f6e2e74 79646f62
3fff4380: 6e616c2e 00000000 00000000 00000000
3fff4390: 00000000 72462030 01bf01c9 72656974
3fff43a0: 68637369 676e616c 72687065 00657361
3fff43b0: 00000000 00000000 00000000 616e7265
3fff43c0: 01c401d1 3fff5114 3fff63f4 3fff4404
3fff43d0: 0010001f 00454e4e 00444500 00000000
3fff43e0: 80000000 00000914 ffffffb5 00000006
3fff43f0: c789c7d0 0400c184 00000000 00000000
3fff4400: 01c901d6 73657567 6f6e2e74 79646f62
3fff4410: 6e616c2e 00000000 00000000 00000000
3fff4420: 00000000 05da031f 01d101e7 49464900
3fff4430: 44203a20 20504348 203a5049 2e323931
3fff4440: 2e383631 312e3032 28203533 6c6c6543
3fff4450: 542f7261 65667565 52492d6c 57472029
3fff4460: 3931203a 36312e32 30322e38 5320312e
3fff4470: 32203a4e 322e3535 322e3535 302e3535
3fff4480: 64202020 74617275 3a6e6f69 32303120
3fff4490: 736d2030 61356100 4e202c63 534f4e4f
3fff44a0: 4b445320 322e3220 002d322e 00000000
3fff44b0: 01d601f0 4e455600 57203a54 23694669
3fff44c0: 6e6e6f43 65746365 65700064 4b4e5520
3fff44d0: 4e574f4e 646f6320 78302065 46373038
3fff44e0: 46383037 00006d00 00000000 00000000
3fff44f0: 00000000 00000000 01e701f3 000001b4
3fff4500: 56206269 3fff6e04 203a6e6f 00000000
3fff4510: 01f081f5 03b00131 3fff51f4 00000000
3fff4520: 01f30236 00008001 000000f8 00009000
3fff4530: 6e6f6301 2e676966 00746164 00000000
3fff4540: 00000000 00000000 00000000 00000000
3fff4550: 006a0500 0081006d 00ac008f 00c200af
3fff4560: 008600c3 00880087 008a0089 008c008b
3fff4570: 0134008d 01360135 01e30074 01e501e4
3fff4580: 005b0053 005f005e 00ca01c4 015c00cd
3fff4590: 012c015d 012e012d 00d80004 00da00d9
3fff45a0: 014a0044 014c014b 012401b2 00390125
3fff45b0: 00b400b3 01a301a2 01a501a4 00b501a6
3fff45c0: 00b700b6 00b900b8 00bb00ba 00e400e3
3fff45d0: 00e600e5 00e800e7 00ea00e9 00f600f5
3fff45e0: 00f800f7 00fa00f9 00a300fb 00a500a4
3fff45f0: 00a700a6 00a900a8 009300aa 00950094
3fff4600: 00970096 00990098 01f501f4 01f701f6
3fff4610: 01f901f8 01fb01fa 01270126 01290128
3fff4620: 012b012a 00000000 00000000 00000000
3fff4630: 00000000 00000000 00010000 80010001
3fff4640: ffffffff ffffffff ffffffff ffffffff
3fff4650: ffffffff ffffffff ffffffff ffffffff
3fff4660: ffffffff ffffffff ffffffff ffffffff
3fff4670: ffffffff ffffffff ffffffff ffffffff
3fff4680: ffffffff ffffffff ffffffff ffffffff
3fff4690: ffffffff ffffffff ffffffff ffffffff
3fff46a0: ffffffff ffffffff ffffffff ffffffff
3fff46b0: ffffffff ffffffff ffffffff ffffffff
3fff46c0: ffffffff ffffffff ffffffff ffffffff
3fff46d0: ffffffff ffffffff ffffffff ffffffff
3fff46e0: ffffffff ffffffff ffffffff ffffffff
3fff46f0: ffffffff ffffffff ffffffff ffffffff
3fff4700: ffffffff ffffffff ffffffff ffffffff
3fff4710: ffffffff ffffffff ffffffff ffffffff
3fff4720: 00d50429 00000000 01f50255 3fff3984
3fff4730: 80010000 00009000 015e015e 00000000
3fff4740: 00001ed0 00001ed0 00000008 00000000
3fff4750: e2898570 00000083 00000000 3fff3984
3fff4760: 80020000 00001000 00c900c9 00000000
3fff4770: 00000480 00000480 00000008 00000000
3fff4780: ec1aa42c 00000001 00000000 3fff3984
3fff4790: 80030000 00000128 00850085 00000000
3fff47a0: 00000128 00000128 00000018 00000000
3fff47b0: cf73c27f 0000000e 00000000 00000000
3fff47c0: 00000000 00000000 00000000 00000000
3fff47d0: 00000000 00000000 00000000 00000000
3fff47e0: 00000000 00000000 00000000 00000000
3fff47f0: 00000000 00000000 00000000 00000000
3fff4800: 00000000 00000000 00000000 00000000
3fff4810: 00000000 00000000 00000000 00000000
3fff4820: 02360305 00000005 000006a1 ffffffff
3fff4830: 0000001f 3fff4838 00000002 00000699
3fff4840: 0000015e 00000000 00000000 00008001
3fff4850: 000000f8 00009000 6e6f6301 2e676966
3fff4860: 00746164 00000000 00000000 00000000
3fff4870: 00000000 00000000 006a0500 0081006d
3fff4880: 00ac008f 00c200af 008600c3 00880087
3fff4890: 008a0089 008c008b 0134008d 01360135
3fff48a0: 01e30074 01e501e4 005b0053 005f005e
3fff48b0: 00ca01c4 015c00cd 012c015d 012e012d
3fff48c0: 00d80004 00da00d9 014a0044 014c014b
3fff48d0: 012401b2 00390125 00b400b3 01a301a2
3fff48e0: 01a501a4 00b501a6 00b700b6 00b900b8
3fff48f0: 00bb00ba 00e400e3 00e600e5 00e800e7
3fff4900: 00ea00e9 00f600f5 00f800f7 00fa00f9
3fff4910: 00a300fb 00a500a4 00a700a6 00a900a8
3fff4920: 009300aa 00950094 00970096 00990098
3fff4930: 01f501f4 01f701f6 01f901f8 01fb01fa
3fff4940: 01270126 01290128 012b012a 00000102
3fff4950: 0000069b 000000ca 00000000 00000000
3fff4960: 001c0001 000000fc 00000000 00000000
3fff4970: 00000000 00000000 00000000 00000000
3fff4980: 00000000 00000000 00000000 00000000
3fff4990: 00000000 00000000 00000000 00000000
3fff49a0: 00000000 00000000 00000000 00000000
3fff49b0: 00000000 00000000 00000000 00000000
3fff49c0: 00000000 00000000 00000000 00000000
3fff49d0: 00000000 00000000 00000000 00000000
3fff49e0: 00000000 00000000 00000000 00000000
3fff49f0: 62757000 6873696c 79732520 6d616e73
3fff4a00: 692f2565 79656b72 0000312c 00000000
3fff4a10: 00000000 00000000 00000000 00000000
3fff4a20: 00000000 00000000 00000000 00000000
3fff4a30: 7f708f00 00000080 62755000 6873696c
3fff4a40: 79732520 6d616e73 692f2565 79656b72
3fff4a50: 0000322c 00000000 00000000 00000000
3fff4a60: 00000202 0000069d 000000cd 00000000
3fff4a70: 00000000 001d0001 000000fc 00000000
3fff4a80: 00000000 00000000 00000000 00000000
3fff4a90: 609f0000 0000807f 75500000 73696c62
3fff4aa0: 73252068 616e7379 2f25656d 656b7269
3fff4ab0: 00332c79 00000000 00000000 00000000
3fff4ac0: 00000000 00000000 00000000 00000000
3fff4ad0: 00000000 00000000 f00f0000 0000837f
3fff4ae0: 75500000 73696c62 73252068 616e7379
3fff4af0: 2f25656d 656b7269 00382c79 00000000
3fff4b00: 00000000 00000000 00000000 00000000
3fff4b10: 00000000 00000000 00000000 00000000
3fff4b20: 40bf0000 0000837f 00000000 00000000
3fff4b30: 00000000 00000000 00000000 00000000
3fff4b40: 00000000 00000000 00000000 00000000
3fff4b50: 00000000 00000000 00000000 00000000
3fff4b60: 00000000 00000000 00000000 00000000
3fff4b70: 00000000 00000302 000006a1 0000015d
3fff4b80: 00000000 00000000 001f0001 000000fc
3fff4b90: 00000000 00000000 00000000 00000000
3fff4ba0: 00000000 00000000 00000000 00000000
3fff4bb0: 00000000 00000000 00000000 00000000
3fff4bc0: 00000000 00000000 00000000 00000000
3fff4bd0: 00000000 00000000 00000000 00000000
3fff4be0: 00000000 00000000 00000000 00000000
3fff4bf0: 00000000 00000000 00000000 00000000
3fff4c00: 00000000 00000000 00000000 00000000
3fff4c10: 00000000 00000000 00000000 00000000
3fff4c20: 00000000 00000000 00000000 00000000
3fff4c30: 00000000 00000000 00000000 00000000
3fff4c40: 00000000 00000000 00000000 00000000
3fff4c50: 00000000 00000000 00000000 00000000
3fff4c60: 00000000 00000000 00000000 00000000
3fff4c70: 00000000 00000000 00000000 00000000
3fff4c80: 00000000 00000000 00000402 0000069f
3fff4c90: 0000015c 00000000 00000000 001e0001
3fff4ca0: 000000fc 00000000 00000000 00000000
3fff4cb0: 00000000 00000000 00000000 00000000
3fff4cc0: 00000000 00000000 00000000 00000000
3fff4cd0: 00000000 00000000 00000000 00000000
3fff4ce0: 00000000 00000000 00000000 00000000
3fff4cf0: 00000000 00000000 00000000 00000000
3fff4d00: 00000000 00000000 00000000 00000000
3fff4d10: 00000000 00000000 00000000 00000000
3fff4d20: 00000000 00000000 00000000 00000000
3fff4d30: 00000000 00000000 00000000 00000000
3fff4d40: 00000000 00000000 00000000 00000000
3fff4d50: 00000000 00000000 00000000 00000000
3fff4d60: 00000000 00000000 00000000 00000000
3fff4d70: 00000000 00000000 00000000 00000000
3fff4d80: 00000000 00000000 00000000 00000000
3fff4d90: 00000000 00000000 00000000 00000000
3fff4da0: 02550308 366d6547 5033724f 6a686168
3fff4db0: 00000000 00000001 0305030b 00000000
3fff4dc0: 0001c200 00000101 03080103 3fff41e4
3fff4dd0: 0308030e 402819e0 5723002f 00656b61
3fff4de0: 81000000 746e756f 030b0317 54545100
3fff4df0: 43203a20 656e6e6f 64657463 206f7420
3fff4e00: 6b6f7262 77207265 20687469 65696c63
3fff4e10: 4920746e 43203a44 616c6c65 65542f72
3fff4e20: 6c656675 5f52495f 00000033 65737520
3fff4e30: 030e031f 40281a18 3fff4ee4 00000000
3fff4e40: 00000000 00000000 4026fc70 032a038f
3fff4e50: 402804e8 402804d4 00007478 00000000
3fff4e60: 00000000 00000000 3fff4ecc 00000000
3fff4e70: 03178321 04e308fc 3fff439c 01f3041d
3fff4e80: 031f032a 73627500 62697263 74206465
3fff4e90: 43203a6f 616c6c65 65542f72 6c656675
3fff4ea0: 2f52495f 646f0023 78302065 46373338
3fff4eb0: 46423034 00000000 00000000 00000000
3fff4ec0: 00000000 00000000 0321032d 402819e0
3fff4ed0: 6c77662f 006b6e69 874e4553 43454e2c
3fff4ee0: 032a0335 40281a18 3fff51f4 00000000
3fff4ef0: 00000000 00000000 4026e1f8 6d63206e
3fff4f00: 402804e8 402804d4 6f642038 00000362
3fff4f10: 00000000 0317036d 3fff4f24 00000000
3fff4f20: 032d0338 402819e0 7664612f 65636e61
3fff4f30: 89000064 00383d79 03350341 54504d00
3fff4f40: 5b203a20 23646d63 656b7269 73205d79
3fff4f50: 63736275 65626972 6f742064 6c654320
3fff4f60: 2f72616c 66756554 495f6c65 6d632f52
3fff4f70: 72692f64 0079656b 00000000 00020000
3fff4f80: 03380344 00000000 0036ff6e 40296848
3fff4f90: 00000000 3ffee218 03418346 04980549
3fff4fa0: 00000000 00000000 0344034e 3fff1a48
3fff4fb0: 3fff1a48 3fff4fec 000e000f 00000000
3fff4fc0: 3fff5004 0013001f 00000004 00000914
3fff4fd0: ffffffb3 00000006 c789c7d0 0401c284
3fff4fe0: 39000000 6f6982c2 03460351 2e746f69
3fff4ff0: 6f626f6e 6c2e7964 00006e61 00000000
3fff5000: 034e0356 72656974 68637369 676e616c
3fff5010: 72687065 00657361 00000000 00000000
3fff5020: 00000000 00000004 0351035d 79a44832
3fff5030: 01000a01 02d00000 02cf04ec 000104eb
3fff5040: 000005a0 01010101 8714a8c0 00ffffff
3fff5050: 0114a8c0 00015180 0000a8c0 00012750
3fff5060: 03560360 2e746f69 6f626f6e 6c2e7964
3fff5070: 00006e61 0341041d 035d8362 0549044b
3fff5080: 0020296d 00000000 0360036a 40281a18
3fff5090: 3fff4e34 00000000 00000000 00000000
3fff50a0: 4026fc70 2c706900 402804e8 402804d4
3fff50b0: 00000000 00000000 00000000 00000000
3fff50c0: 3fff50cc 00000000 0362036d 402819e0
3fff50d0: 3fff50e4 000d000f 00000000 00000317
3fff50e0: 036a0370 6e65672f 74617265 30325f65
3fff50f0: 00000034 80007478 036d0373 2e746f69
3fff5100: 6f626f6e 6c2e7964 00006e61 42303446
3fff5110: 0370037b 3fff1a58 3fff43c4 3fff6434
3fff5120: 000e000f 00000000 00000000 00000000
3fff5130: 80000000 00000914 ffffffb3 00000006
3fff5140: c789c7d0 0400c284 00000000 08fc0338
3fff5150: 0373037e 060c040a 03010902 07050b08
3fff5160: 00007400 00000000 037b038f 49464900
3fff5170: 43203a20 656e6e6f 64657463 50412021
3fff5180: 6f69203a 6f6e2e74 79646f62 6e616c2e
3fff5190: 43302820 3a38363a 333a3330 32433a39
3fff51a0: 2932383a 3a684320 44203120 74617275
3fff51b0: 3a6e6f69 32373920 00736d20 204b4453
3fff51c0: 2e322e32 65642d32 38332876 33343461
3fff51d0: 202c2965 5049574c 2e32203a 20322e31
3fff51e0: 41595550 70757320 00726f70 000001f3
3fff51f0: 037e0397 40281a18 3fff524c 00000000
3fff5200: 00000000 00000000 4026e210 08010000
3fff5210: 402804e8 402804d4 126c0432 00004824
3fff5220: 00000000 52454853 3fff5234 00000000
3fff5230: 038f039a 402819e0 6e6f632f 00676966
3fff5240: 878f039e 01f3036d 039703a2 40281a18
3fff5250: 3fff52bc 00000000 00000000 00000000
3fff5260: 402689dc 4f525420 402804e8 402804d4
3fff5270: 4e2c444e 302c4345 00000000 39303646
3fff5280: 3fff528c 00000000 039a03a5 402819e0
3fff5290: 6e6f632f 6c6f7274 88495200 43415f52
3fff52a0: 03a203a8 402819e0 7665642f 73656369
3fff52b0: 88000000 49482032 03a503b0 40281a18
3fff52c0: 3fff763c 00000000 00000000 00000000
3fff52d0: 4026e234 3243415f 402804e8 402804d4
3fff52e0: 49414820 415f5245 00000000 20323057
3fff52f0: 3fff760c 00000000 03a883b2 08fc01f3
3fff5300: 474e5553 ffffffff 03b003b7 4e455600
3fff5310: 4d203a54 23545451 6e6e6f43 65746365
3fff5320: 00300064 00000000 00000000 ffffffff
3fff5330: 03b203bb 08050201 00000d09 00000000
3fff5340: 00000000 00000000 00006400 00000000
3fff5350: 03b703be 3fff35e4 00014516 402904f0
3fff5360: 00000000 646d632f 03bb03c1 3fff7cec
3fff5370: 3fff3d9c 10000007 000146ec 80fee218
3fff5380: 03be03c4 00000001 3fff0528 3fff4304
3fff5390: 3fff53b4 ffff0102 03c103c7 00000001
3fff53a0: 3fff53b4 00000000 00000000 ffff0205
3fff53b0: 03c403ca 00000000 3fff5384 3fff539c
3fff53c0: 3fff53cc ffff0308 03c703cd 00000001
3fff53d0: 3fff53b4 00000000 3fff53e4 ffff0409
3fff53e0: 03ca03d0 00000000 3fff53cc 00000000
3fff53f0: 00000000 ffff050d 03cd03d3 00000001
3fff5400: 3fff3dfc 00000000 00000000 00000001
3fff5410: 03d003d5 055c0001 00040000 ff0132fb
3fff5420: 03d303f9 ffffffff 0000ffff 00000000
3fff5430: 00000000 00000000 00000000 00000000
3fff5440: 00000000 00000000 00000000 00000000
3fff5450: 00000000 00000000 00000000 00000000
3fff5460: 00000000 00000000 00000000 00000000
3fff5470: 00000000 00000000 00000000 00000000
3fff5480: 00000000 00000000 00000000 00000000
3fff5490: 00000000 00000000 00000000 00000000
3fff54a0: 00000000 00000000 00000000 00000000
3fff54b0: 00000000 00000000 00000000 00000000
3fff54c0: 000001e3 00000000 00000000 00000000
3fff54d0: 00000000 00000000 00000000 00000000
3fff54e0: 00000000 00000000 00000000 00000000
3fff54f0: 00000000 00000000 00000000 00000000
3fff5500: 00000000 00000000 00000000 00000000
3fff5510: 00000000 00000000 00000000 00000000
3fff5520: 00000000 00000000 00000000 00000000
3fff5530: 00000000 00000000 00000000 00000000
3fff5540: 03d50404 00000000 3fff365c 00000000
3fff5550: 3fff5b5c 00000000 3fff64f4 00000000
3fff5560: 3fff64f4 00000000 3fff64f4 00000000
3fff5570: 3fff5f24 00000000 3fff82ac 00000000
3fff5580: 3fff5f7c 00000000 3fff365c 00000000
3fff5590: 3fff365c 00000000 03f90407 00000000
3fff55a0: 3fff3eec 00000000 00000000 6e2e0c58
3fff55b0: 04040418 000a0101 00f30001 00010204
3fff55c0: 00740101 00020105 00740002 0002140e
3fff55d0: 00740002 00140110 00130001 0007001a
3fff55e0: 00540104 0004141c 78740003 000a011d
3fff55f0: 24000001 00016321 25700204 00021422
3fff5600: 6c740002 00000123 00000000 00016325
3fff5610: 00040004 00000158 00000000 00000000
3fff5620: 00000000 00000000 00000000 00000000
3fff5630: 00000000 00000000 0407041b 3fff65e4
3fff5640: 3fff7d1c 30000000 0001d5c1 00000000
3fff5650: 0418041d 3fff44fc 000c2019 00585220
3fff5660: 041b0420 6c6c6543 542f7261 65667565
3fff5670: 52492d6c 00585200 041d0427 3fff644c
3fff5680: 00000000 00000000 4027d994 3fff13e0
3fff5690: 3fff8ae4 00000041 00001388 00014535
3fff56a0: 04010001 00000000 04230400 0000092e
3fff56b0: 04200436 20535900 30203a20 2c30302e
3fff56c0: 2e33352d 6e003030 46746365 756c6961
3fff56d0: 20736572 72462030 654d6565 3831206d
3fff56e0: 20383836 69466957 74617453 30207375
3fff56f0: 50534520 79736165 746e6920 616e7265
3fff5700: 6977206c 73206966 75746174 44203a73
3fff5710: 4f435349 43454e4e 00444554 00000000
3fff5720: 00000000 000004bd 0427044b 00000003
3fff5730: 00000000 00000000 00000000 00000000
3fff5740: 00000000 00000000 00000000 00000000
3fff5750: 00000000 00000000 00000000 00000000
3fff5760: 00000000 00000000 00000000 00000000
3fff5770: 00000000 00000000 00000000 00000000
3fff5780: 00000000 00000000 00000000 00000000
3fff5790: 00000000 00000000 00000000 00000000
3fff57a0: 00000000 00000000 00000000 00000000
3fff57b0: 00000000 000001a5 00000000 00000000
3fff57c0: 00000000 402bd544 00000000 00000000
3fff57d0: 0436844c 036004e3 044b0459 4e455600
3fff57e0: 73203a54 75746174 73722373 2d3d6973
3fff57f0: 302e3335 6f690030 6f6e2e74 79646f62
3fff5800: 6e616c2e 3a433020 303a3836 39333a33
3fff5810: 3a32433a 43203238 20313a68 32352d28
3fff5820: 296d4264 41505720 53502f32 0000004b
3fff5830: 00000000 00000000 00000000 00000000
3fff5840: 044c0498 00010000 00030002 04010400
3fff5850: 20012000 20032002 24002004 24022401
3fff5860: 24042403 28012800 28032802 2c002804
3fff5870: 30002c01 30023001 30043003 34013400
3fff5880: 34033402 60016000 60036002 64006004
3fff5890: 64026401 64046403 68016800 68036802
3fff58a0: 70017000 70037002 74007004 74027401
3fff58b0: 74047403 78017800 78037802 7c017c00
3fff58c0: 7c037c02 7c057c04 7c097c08 7c0b7c0a
3fff58d0: 7c0d7c0c 7c197c18 7c1b7c1a 7c1d7c1c
3fff58e0: 7c397c38 7c3b7c3a 7c3d7c3c 7c797c78
3fff58f0: 7c7b7c7a 7c7d7c7c ffffffff ffffffff
3fff5900: ffffffff ffffffff ffffffff ffffffff
3fff5910: ffffffff ffffffff ffffffff ffffffff
3fff5920: ffffffff ffffffff ffffffff ffffffff
3fff5930: ffffffff ffffffff ffffffff ffffffff
3fff5940: ffffffff 0001cd00 00023b00 0001cd00
3fff5950: 00023b00 0001cb00 00023900 0001cb00
3fff5960: 00023900 0001cb00 00023700 0001cb00
3fff5970: 00023700 0001cf00 00023100 0001cf00
3fff5980: 00023100 0001cefd 00022f02 0001cefd
3fff5990: 00022f02 0001cd00 00022f00 0001cd00
3fff59a0: 00022f00 0001cd00 00022b00 0001cd00
3fff59b0: 00022b00 0001cd00 00022b00 0001cd00
3fff59c0: 00022b00 0001cd00 00022900 0001cd00
3fff59d0: 00022900 0001ccfe 00022b00 0001ccfe
3fff59e0: 00022b00 0001ccff 00022901 0001ccff
3fff59f0: 00022901 0001ccfb 00022901 0001ccfb
3fff5a00: 00022901 0001ccfe 00022b00 0001ccfe
3fff5a10: 00022b00 0001ccff 00022901 0001ccff
3fff5a20: 00022901 0001ccfb 00022901 0001ccfb
3fff5a30: 00022901 aca3556d 0459849a 09360344
3fff5a40: 00000000 00000000 049804af 00000006
3fff5a50: 00000000 00000000 00000000 00000000
3fff5a60: 00000000 00000000 00000000 00000000
3fff5a70: 00000000 00000000 00000000 00000000
3fff5a80: 00000000 00000000 00000000 00000000
3fff5a90: 00000000 00000000 00000000 00000000
3fff5aa0: 00000000 00000000 00000000 00000000
3fff5ab0: 00000000 00000000 00000000 00000000
3fff5ac0: 00000000 00000000 00000000 00000000
3fff5ad0: 00000000 0000002f 00000000 0000003d
3fff5ae0: 00000000 402bd544 00000000 49414420
3fff5af0: 049a04b4 00000000 3fff7d34 3fff8064
3fff5b00: 3fff5e6c 656c7572 742e3173 8a007478
3fff5b10: 00000001 54204f47 04af04bc 3fff5c54
3fff5b20: 3fff1a58 3fff5fac 000b000f 00ffffff
3fff5b30: 1e10ff00 08010000 8082968b 00000914
3fff5b40: ffffffcc 00000001 3903680c 040080c2
3fff5b50: 00000000 00000000 04b404bf 424f4c47
3fff5b60: 41434c41 00454843 00000000 5f363130
3fff5b70: 04bc84c1 09ab092f 0000646d 534d4153
3fff5b80: 04bf04c8 73726900 6f6f4c74 6e6f4370
3fff5b90: 7463656e 736e6f69 61747345 73696c62
3fff5ba0: 00646568 32203a6d 00000000 00000000
3fff5bb0: 00000000 5354494d 04c104d1 54545100
3fff5bc0: 49203a20 6e65746e 6e6f6974 72206c61
3fff5bd0: 6e6f6365 7463656e 4e003100 646f6320
3fff5be0: 78302065 46373038 46393036 00000000
3fff5bf0: 00000000 00000000 00000000 494c434f
3fff5c00: 04c804db 01b40505 3637314e 49414420
3fff5c10: 314e494b 41203832 524f434d 3fff5104
3fff5c20: 3fff5dcc 3fff56e4 3fff58ec 3fff63f4
3fff5c30: 3fff5d8c 3fff5844 3fff888c 3fff80d4
3fff5c40: 3fff8384 3fff80b4 3fff8384 34323443
3fff5c50: 04d104e3 3fff63f4 3fff5b1c 3fff50fc
3fff5c60: 000e000f 00000002 00000000 000ff899
3fff5c70: 80fe81a4 00000914 ffffffcc 00000001
3fff5c80: 3903680c 040082c2 72000000 3d79656b
3fff5c90: 04db84e5 044b031f 04db04e5 0427042d
3fff5ca0: 04e304f6 49464900 43203a20 656e6e6f
3fff5cb0: 6e697463 6f692067 6f6e2e74 79646f62
3fff5cc0: 6e616c2e 3a433020 303a3836 39333a33
3fff5cd0: 3a32433a 43203238 20313a68 32352d28
3fff5ce0: 296d4264 41505720 53502f32 7461204b
3fff5cf0: 706d6574 30232074 42494800 43415f41
3fff5d00: 4a554620 55535449 2043415f 45494148
3fff5d10: 43415f52 54494820 49484341 2043415f
3fff5d20: 00544948 43415242 04e50502 ffffffff
3fff5d30: 52454900 ffffffff 41c80000 45495201
3fff5d40: 00000000 ffffffff ffffffff 00000000
3fff5d50: 34000000 ffffffff 01000004 ffffffff
3fff5d60: 52454900 ffffffff 41c80000 45495201
3fff5d70: 00000000 ffffffff ffffffff 00000000
3fff5d80: 34000000 ffffffff 04f60517 8714a8c0
3fff5d90: 5401a8c0 ff000000 00000000 3fff5e34
3fff5da0: 00000004 ee8e0001 0000075b 00d00100
3fff5db0: 0000008a fe8ba716 144716d0 fe8bbb5d
3fff5dc0: 04c4ffff 00000000 00001b4d 00030001
3fff5dd0: 00000003 00001b4f 0b68111c 00000000
3fff5de0: 00001b4f fe8ba714 00001b4f 00001b4f
3fff5df0: faf0fa25 00000b68 01e10000 00000000
3fff5e00: 00000000 00000000 00000000 40203fac
3fff5e10: 40203d60 40203dbc 40203d3c 40203f54
3fff5e20: 006ddd00 000124f8 00000009 00000000
3fff5e30: 0502051e 3fff5d8c 00000000 00000000
3fff5e40: 00000000 00000000 00000000 00000002
3fff5e50: 00000064 000123d2 52010000 00000000
3fff5e60: 39312000 36312e32 05170523 00000001
3fff5e70: 3fff5af4 00000000 3fff7e2c 3fff5e94
3fff5e80: 000b000f 00000000 00000000 72746e6f
3fff5e90: 051e0526 73616f74 676e6974 00736a2e
3fff5ea0: 00000000 6e61522d 05230529 3fff06a8
3fff5eb0: 3fff431c 30000002 0001e69f 3ffee240
3fff5ec0: 0526852a 0dec0936 05290530 00000000
3fff5ed0: 00000000 ff002000 3fff3584 00440004
3fff5ee0: 00000043 00000000 0000ff00 40294888
3fff5ef0: 00000000 6e616353 052a0535 70706970
3fff5f00: 6e2e6e69 646f626f 616c2e79 0000006e
3fff5f10: 00000000 00000000 00000000 642e6769
3fff5f20: 0530053c 36313050 7661203a 616c6961
3fff5f30: 20656c62 6f636564 79746564 3a736570
3fff5f40: 00373920 00000000 00000000 00000000
3fff5f50: 00000000 00000000 0535053f 5354494d
3fff5f60: 53494255 00324948 00000000 00000000
3fff5f70: 053c0542 41544948 5f494843 00314341
3fff5f80: 00000000 00000000 053f8543 001f09ab
3fff5f90: 05420546 2e746f69 6f626f6e 6c2e7964
3fff5fa0: 00006e61 64656873 05430549 6f626f6e
3fff5fb0: 6c2e7964 00326e61 00000000 046904b4
3fff5fc0: 0546854b 03440360 3fff5d8c 00000000
3fff5fd0: 0549055c 4e455600 73203a54 75746174
3fff5fe0: 70752373 656d6974 302e303d 3a640030
3fff5ff0: 52003520 52203543 4e203643 53204345
3fff6000: 20594e4f 414e4150 494e4f53 564a2043
3fff6010: 41532043 4e55534d 48572047 45544e59
3fff6020: 49412052 525f4157 35545f43 4c203130
3fff6030: 494d2047 42555354 49485349 53494420
3fff6040: 48532048 20505241 4c4f4f43 44205849
3fff6050: 004b4941 00000000 054b05cf 402819c0
3fff6060: 00000010 6c627570 20687369 73797325
3fff6070: 656d616e 72692f25 2c79656b 00000031
3fff6080: 00000000 00000000 00000000 00000000
3fff6090: 00000000 00000000 00000000 00000000
3fff60a0: 00000000 007f708f 00000000 00000000
3fff60b0: 00000000 ffff0080 00000000 6c627550
3fff60c0: 20687369 73797325 656d616e 72692f25
3fff60d0: 2c79656b 00000032 00000000 00000000
3fff60e0: 00000000 00000000 00000000 00000000
3fff60f0: 00000000 00000000 00000000 007f609f
3fff6100: 00000000 00000000 00000000 ffff0080
3fff6110: 00000000 6c627550 20687369 73797325
3fff6120: 656d616e 72692f25 2c79656b 00000033
3fff6130: 00000000 00000000 00000000 00000000
3fff6140: 00000000 00000000 00000000 00000000
3fff6150: 00000000 007ff00f 00000000 00000000
3fff6160: 00000000 ffff0083 00000000 6c627550
3fff6170: 20687369 73797325 656d616e 72692f25
3fff6180: 2c79656b 00000038 00000000 00000000
3fff6190: 00000000 00000000 00000000 00000000
3fff61a0: 00000000 00000000 00000000 007f40bf
3fff61b0: 00000000 00000000 00000000 ffff0083
3fff61c0: 00000000 00000000 00000000 00000000
3fff61d0: 00000000 00000000 00000000 00000000
3fff61e0: 00000000 00000000 00000000 00000000
3fff61f0: 00000000 00000000 00000000 00000000
3fff6200: 00000000 00000000 00000000 00000000
3fff6210: 00000000 ffffffff 00000000 00000000
3fff6220: 00000000 00000000 00000000 00000000
3fff6230: 00000000 00000000 00000000 00000000
3fff6240: 00000000 00000000 00000000 00000000
3fff6250: 00000000 00000000 00000000 00000000
3fff6260: 00000000 00000000 00000000 ffffffff
3fff6270: 00000000 00000000 00000000 00000000
3fff6280: 00000000 00000000 00000000 00000000
3fff6290: 00000000 00000000 00000000 00000000
3fff62a0: 00000000 00000000 00000000 00000000
3fff62b0: 00000000 00000000 00000000 00000000
3fff62c0: 00000000 ffffffff 00000000 00000000
3fff62d0: 00000000 00000000 00000000 00000000
3fff62e0: 00000000 00000000 00000000 00000000
3fff62f0: 00000000 00000000 00000000 00000000
3fff6300: 00000000 00000000 00000000 00000000
3fff6310: 00000000 00000000 00000000 ffffffff
3fff6320: 00000000 00000000 00000000 00000000
3fff6330: 00000000 00000000 00000000 00000000
3fff6340: 00000000 00000000 00000000 00000000
3fff6350: 00000000 00000000 00000000 00000000
3fff6360: 00000000 00000000 00000000 00000000
3fff6370: 00000000 ffffffff 00000000 00000000
3fff6380: 00000000 00000000 00000000 00000000
3fff6390: 00000000 00000000 00000000 00000000
3fff63a0: 00000000 00000000 00000000 00000000
3fff63b0: 00000000 00000000 00000000 00000000
3fff63c0: 00000000 00000000 00000000 ffffffff
3fff63d0: 00000000 00010000 00000000 00000000
3fff63e0: 00000000 00000000 00000000 00000000
3fff63f0: 055c05d7 3fff43c4 3fff5c54 3fff4374
3fff6400: 0010001f 00646f62 6e616c00 00000000
3fff6410: 80000000 00000914 ffffffcb 00000001
3fff6420: 3903680c 040081c2 ff000000 00000000
3fff6430: 05cf05da 2e746f69 6f626f6e 6c2e7964
3fff6440: 00006e61 04ba05f5 05d705ef 8714a8c0
3fff6450: 7201a8c0 ff000400 3fff5d8c 3fff567c
3fff6460: 00000004 00500001 0000dd58 00d00100
3fff6470: 0000009b 15f5c259 14c916d0 15f5d722
3fff6480: 04c40000 0000009b 00002981 00030000
3fff6490: 00000003 00002981 0b68111c 00000000
3fff64a0: 000034e9 15f5c259 00002981 000034e9
3fff64b0: fc94fc94 00040000 0ed70000 00000000
3fff64c0: 3fff7edc 00000000 3fff7d64 40203fac
3fff64d0: 40203d60 00000000 40203d3c 40203f54
3fff64e0: 006ddd00 000124f8 00000009 00000000
3fff64f0: 05da05f2 41574941 5f43525f 31303554
3fff6500: 00000000 3ffee240 05ef05f5 2e323931
3fff6510: 2e383631 312e3032 00003533 00000605
3fff6520: 05f205fd 3fff1a50 3fff1a50 3fff6564
3fff6530: 000e000f 00626f6e 3fff657c 0013001f
3fff6540: 00000000 00000000 00000000 00000000
3fff6550: 00000000 00010000 ff000000 00000000
3fff6560: 05f50600 2e746f69 6f626f6e 6c2e7964
3fff6570: 00006e61 302c4345 05fd0605 72656974
3fff6580: 68637369 676e616c 72687065 00657361
3fff6590: 00000000 00000000 00000000 72462030
3fff65a0: 0600060a 00000001 3fff7d34 00000000
3fff65b0: 00000000 3fff65cc 000b000f 00000000
3fff65c0: 00000000 62292800 0605060d 6c706d54
3fff65d0: 2e647453 006d7468 00000000 000a0d65
3fff65e0: 060a0610 3fff431c 3fff563c 30000003
3fff65f0: 0001d645 3ffee240 060d0711 05050131
3fff6600: 00000000 00000000 00000000 00000000
3fff6610: 00000000 00000000 00000000 00000000
3fff6620: 00000000 00000000 00000000 00000000
3fff6630: 00000000 00000000 00000000 00000000
3fff6640: 00000000 00000000 00000000 00000000
3fff6650: 00000000 00000000 00000000 00000000
3fff6660: 00000000 00000000 00000000 00000000
3fff6670: 00000000 00000000 00000000 00000000
3fff6680: 00000000 00000000 00000000 00000000
3fff6690: 00000000 00000000 00000000 00000000
3fff66a0: 00000000 00000000 00000000 00000000
3fff66b0: 00000000 00000000 00000000 00000000
3fff66c0: 00000000 00000000 00000000 00000000
3fff66d0: 00000000 00000000 00000000 00000000
3fff66e0: 00000000 00000000 00000000 00000000
3fff66f0: 00000000 00000000 00000000 00000000
3fff6700: 00000000 00000000 00000000 00000000
3fff6710: 00000000 00000000 00000000 00000000
3fff6720: 00000000 00000000 00000000 00000000
3fff6730: 00000000 00000000 00000000 00000000
3fff6740: 00000000 00000000 00000000 00000000
3fff6750: 00000000 00000000 00000000 00000000
3fff6760: 00000000 00000000 00000000 00000000
3fff6770: 00000000 00000000 00000000 00000000
3fff6780: 00000000 00000000 00000000 00000000
3fff6790: 00000000 00000000 00000000 00000000
3fff67a0: 00000000 00000000 00000000 00000000
3fff67b0: 00000000 00000000 00000000 00000000
3fff67c0: 00000000 00000000 00000000 00000000
3fff67d0: 00000000 00000000 00000000 00000000
3fff67e0: 00000000 00000000 00000000 00000000
3fff67f0: 00000000 00000000 00000000 00000000
3fff6800: 00000000 00000000 00000000 00000000
3fff6810: 00000000 00000000 00000000 00000000
3fff6820: 00000000 00000000 00000000 00000000
3fff6830: 00000000 00000000 00000000 00000000
3fff6840: 00000000 00000000 00000000 00000000
3fff685รพ
ets Jan 8 2013,rst cause:4, boot mode:(3,7)
wdt reset
load 0x4010f000, len 3584, room 16
Can you also give the amount of free memory (before it crashes) ?
Not sure if there is a more elegant way but I just waited to get the WiFi Status and clicked on the device:
31569 : Info : WD : Uptime 1 ConnectFailures 0 FreeMem 16344 WiFiStatus 3 ESPeasy internal wifi status: Conn. IP Init
34014 : Info : EVENT: Clock#Time=Sun,11:53
49163 : Info : P016_PLUGIN_WEBFORM_LOAD ...
49176 : Error : P016 IR: Settings conversion, save task settings to store in new format.
49177 : Info : P016: struct size: 880/88/72 enum: 2
49180 : Info : P016: converting 0: type UNKNOWN code 0x807F708F
49181 : Info : P016: converting 1: type UNKNOWN code 0
--------------- CUT HERE FOR EXCEPTION DECODER ---------------
Soft WDT reset
That's good enough. 16k free, so it is unlikely a memory allocation issue.
I have seen similar crashes, at PLUGIN_WEBFORM_LOAD, PLUGIN_WEBFORM_SAVE but most often at PLUGIN_EXIT after that PLUGIN_WEBFORM_SAVE. The crash at WEBFORM_LOAD is way less frequent if I give it a physical reset (not power-cycle) after the OTA update I usually do. Already tried to reduce memory usage by decreasing the compile-time define for the number of Codes from 10 to 5, but it responded the same, though free memory was slightly higher. I have no real stack dump from this crash, but I did manage to get a stack dump after that save a few times (if I manage to reset it fast enough to avoid the hexdump to scroll the messages out of the PlatformIO buffer), that shows stuff like this: (sorry for the long post) It seems to suggest it crashes while sending via serial. Free memory is in the range of 13 to 16k (another log is below)
--------------- CUT HERE FOR EXCEPTION DECODER ---------------
Exception (28):
epc1=0x40276368 epc2=0x00000000 epc3=0x00000000 excvaddr=0x00002209 depc=0x00000000
LoadProhibited: A load referenced a page mapped with an attribute that does not permit loads
epc1=0x40276368 in uart_tx_free at ??:?
>>>stack>>>
ctx: sys
sp: 3fff1ff0 end: 3fffffb0 offset: 0190
3fff2180: 3fff6204 00000001 3fff21d0 402724ce
...
3fff4430: fffffff8 04df0352 00de03ab 02a100e1
3fff4440: 0
0x402724ce in String::String(unsigned long, unsigned char) at ??:?
0x4024c8e5 in process_serialWriteBuffer() at ??:?
0x4024cb67 in addToSerialBuffer(String const&) at ??:?
0x4024a825 in addToLog(unsigned char, char const*) at ??:?
0x4024a96a in addToLog(unsigned char, String const&) at ??:?
0x402b0032 in wifi_station_ap_number_set at ??:?
0x4024a980 in addLog(unsigned char, String const&) at ??:?
0x4023943e in Plugin_016(unsigned char, EventStruct*, String&) at ??:?
0x40271ec9 in String::invalidate() at ??:?
0x40271ee8 in String::~String() at ??:?
0x40239b78 in Plugin_016(unsigned char, EventStruct*, String&) at ??:?
0x40271f76 in String::changeBuffer(unsigned int) at ??:?
0x402bfa44 in chip_v6_unset_chanfreq at ??:?
0x4027212c in String::copy(__FlashStringHelper const*, unsigned int) at ??:?
0x402bfa44 in chip_v6_unset_chanfreq at ??:?
0x40272590 in String::operator=(__FlashStringHelper const*) at ??:?
0x402bfa44 in chip_v6_unset_chanfreq at ??:?
0x40272067 in String::reserve(unsigned int) at ??:?
0x40272590 in String::operator=(__FlashStringHelper const*) at ??:?
0x4010407b in lmacProcessTXStartData at ??:?
0x40104078 in lmacProcessTXStartData at ??:?
0x40102fdb in wDev_ProcessFiq at ??:?
0x401003e0 in ets_post at ??:?
0x40102e2c in wDev_ProcessFiq at ??:?
0x401003e0 in ets_post at ??:?
0x401065a0 in spi_flash_write at ??:?
0x4027049c in EspClass::flashWrite(unsigned int, unsigned int*, unsigned int) at ??:?
0x401065a0 in spi_flash_write at ??:?
0x40276da4 in flash_hal_write(unsigned int, unsigned int, unsigned char const*) at ??:?
0x4027049c in EspClass::flashWrite(unsigned int, unsigned int*, unsigned int) at ??:?
0x40276da4 in flash_hal_write(unsigned int, unsigned int, unsigned char const*) at ??:?
0x401065a0 in spi_flash_write at ??:?
0x401003e0 in ets_post at ??:?
0x40102301 in rcUpdateTxDone at ??:?
0x40101ed0 in pp_post at ??:?
0x4010516b in lmacTxFrame at ??:?
0x40104346 in lmacRecycleMPDU at ??:?
0x40273846 in yield at ??:?
0x401047b7 in lmacRecycleMPDU at ??:?
0x40276da4 in flash_hal_write(unsigned int, unsigned int, unsigned char const*) at ??:?
0x4010427f in lmacProcessTxSuccess at ??:?
0x40103144 in wDev_ProcessFiq at ??:?
0x40276da4 in flash_hal_write(unsigned int, unsigned int, unsigned char const*) at ??:?
0x40102e2c in wDev_ProcessFiq at ??:?
0x4027885a in spiffs_obj_lu_find_entry_visitor at ??:?
0x40278738 in spiffs_obj_lu_find_entry_visitor at ??:?
0x40276c34 in flash_hal_read(unsigned int, unsigned int, unsigned char*) at ??:?
0x40278760 in spiffs_obj_lu_find_entry_visitor at ??:?
0x40275394 in spiffs_impl::SPIFFSImpl::spiffs_hal_write(unsigned int, unsigned int, unsigned char const*) at ??:?
0x4027afd4 in spiffs_phys_wr at ??:?
0x40279001 in spiffs_page_delete at ??:?
0x4027afd4 in spiffs_phys_wr at ??:?
0x4027910d in spiffs_page_move at ??:?
0x4027afd4 in spiffs_phys_wr at ??:?
0x4027afd4 in spiffs_phys_wr at ??:?
0x402795a0 in spiffs_object_update_index_hdr at ??:?
0x40279001 in spiffs_page_delete at ??:?
0x4027afd4 in spiffs_phys_wr at ??:?
0x40288662 in __ssputs_r at /home/earle/src/esp-quick-toolchain/repo/newlib/newlib/libc/stdio/nano-vfprintf.c:233
0x40283c71 in _printf_i at /home/earle/src/esp-quick-toolchain/repo/newlib/newlib/libc/stdio/nano-vfprintf_i.c:194 (discriminator 1)
0x40288662 in __ssputs_r at /home/earle/src/esp-quick-toolchain/repo/newlib/newlib/libc/stdio/nano-vfprintf.c:233
0x40288598 in __ssputs_r at /home/earle/src/esp-quick-toolchain/repo/newlib/newlib/libc/stdio/nano-vfprintf.c:180
0x40283d9c in _printf_i at /home/earle/src/esp-quick-toolchain/repo/newlib/newlib/libc/stdio/nano-vfprintf_i.c:246
0x40275663 in spiffs_impl::SPIFFSFileImpl::close() at ??:?
0x402be1f0 in umm_block_size at ??:?
0x402752e3 in std::_Sp_counted_deleter<spiffs_impl::SPIFFSFileImpl*, std::__shared_ptr<spiffs_impl::SPIFFSFileImpl, (__gnu_cxx::_Lock_policy)0>::_Deleter<std::allocator<spiffs_impl::SPIFFSFileImpl> >,
std::allocator<spiffs_impl::SPIFFSFileImpl>, (__gnu_cxx::_Lock_policy)0>::_M_destroy() at ??:?
0x402720d3 in String::String(char const*) at ??:?
0x40271ec9 in String::invalidate() at ??:?
0x40281720 in spiffs_cache_page_get_by_fd at ??:?
0x40271ee8 in String::~String() at ??:?
0x40253100 in LoadStringArray(SettingsType::Enum, int, String*, unsigned short, unsigned short) at ??:?
0x4025244a in fileExists(String const&) at ??:?
0x402720b0 in String::copy(char const*, unsigned int) at ??:?
0x402722c0 in String::operator=(String const&) at ??:?
0x40271ec9 in String::invalidate() at ??:?
0x4024e6a9 in PluginCall(unsigned char, EventStruct*, String&) at ??:?
0x4025ac8f in safe_strncpy(char*, char const*, unsigned int) at ??:?
0x40271ec9 in String::invalidate() at ??:?
0x402691b3 in handle_devices_CopySubmittedSettings(unsigned char, unsigned char) at ??:?
0x402720b0 in String::copy(char const*, unsigned int) at ??:?
0x40272200 in String::move(String&) at ??:?
0x40271ec9 in String::invalidate() at ??:?
0x40271ec9 in String::invalidate() at ??:?
0x40271ee8 in String::~String() at ??:?
0x402c6aa8 in chip_v6_unset_chanfreq at ??:?
0x4026880c in getCheckWebserverArg_int(String const&, int&) at ??:?
0x402c6a00 in chip_v6_unset_chanfreq at ??:?
0x40271e00 in _GLOBAL__sub_D__ZN12UpdaterClassC2Ev at Updater.cpp:?
0x40271ec9 in String::invalidate() at ??:?
0x4026e1a0 in handle_devices() at ??:?
0x4010114b in umm_free_core at umm_malloc.cpp:?
0x401013cf in free at ??:?
0x4024a9c4 in std::_Function_base::_Base_manager<esp8266webserver::storeArgHandler<WiFiServer> >::_M_manager(std::_Any_data&, std::_Any_data const&, std::_Manager_operation) at ??:?
0x40271ec9 in String::invalidate() at ??:?
0x40271ee8 in String::~String() at ??:?
0x40272aac in String::equals(String const&) const at ??:?
0x40268508 in esp8266webserver::FunctionRequestHandler<WiFiServer>::handle(esp8266webserver::ESP8266WebServerTemplate<WiFiServer>&, HTTPMethod, String) at ??:?
0x402801c2 in std::_Function_handler<void (), void (*)()>::_M_invoke(std::_Any_data const&) at ??:?
0x401000d9 in std::function<void ()>::operator()() const at ??:?
0x40268540 in esp8266webserver::FunctionRequestHandler<WiFiServer>::handle(esp8266webserver::ESP8266WebServerTemplate<WiFiServer>&, HTTPMethod, String) at ??:?
0x4024bfea in esp8266webserver::ESP8266WebServerTemplate<WiFiServer>::_handleRequest() at ??:?
0x40100a4c in millis at ??:?
0x40248734 in LongTermTimer::timeoutReached(unsigned int) const at ??:?
0x4024c13f in esp8266webserver::ESP8266WebServerTemplate<WiFiServer>::handleClient() at ??:?
0x40281060 in spiffs_cache_page_get_by_fd at ??:?
0x4024c211 in backgroundtasks() at ??:?
0x4024c390 in ESPEasy_loop() at ??:?
0x401003e0 in ets_post at ??:?
0x40232364 in loop at ??:?
0x40273928 in loop_wrapper() at core_esp8266_main.cpp:?
0x40100345 in cont_wrapper at ??:?
0x402c7e80 in chip_v6_unset_chanfreq at ??:?
0x401004e4 in Twi::onTimer(void*) at ??:?
0x40274854 in micros_overflow_tick at ??:?
0x40274834 in delay_end at ??:?
0x40280140 in std::_Function_handler<void (WiFiEventStationModeConnected const&), void (*)(WiFiEventStationModeConnected const&)>::_M_invoke(std::_Any_data const&, WiFiEventStationModeConnected const&) at ??:?
0x40202674 in std::_Function_base::_Base_manager<ESP8266WiFiGenericClass::onStationModeDisconnected(std::function<void (WiFiEventStationModeDisconnected const&)>)::{lambda(_esp_event*)#1}>::_M_manager(std::_Any_data&, std::_Function_base::_Base_manager<ESP8266WiFiGenericClass::onStationModeDisconnected(std::function<void (WiFiEventStationModeDisconnected const&)>)::{lambda(_esp_event*)#1}> const&, std::_Manager_operation) at ESP8266WiFiGeneric.cpp:?
0x40201de8 in std::_Function_handler<void (_esp_event*), ESP8266WiFiGenericClass::onStationModeDisconnected(std::function<void (WiFiEventStationModeDisconnected const&)>)::{lambda(_esp_event*)#1}>::_M_invoke(std::_Any_data const&, _esp_event*) at ESP8266WiFiGeneric.cpp:?
0x40280fc0 in spiffs_cache_page_get_by_fd at ??:?
0x40248670 in onDisconnect(WiFiEventStationModeDisconnected const&) at ??:?
0x4028017c in std::_Function_base::_Base_manager<void (*)(WiFiEventStationModeDisconnected const&)>::_M_manager(std::_Any_data&, std::_Any_data const&, std::_Manager_operation) at ??:?
0x40280168 in std::_Function_handler<void (WiFiEventStationModeDisconnected const&), void (*)(WiFiEventStationModeDisconnected const&)>::_M_invoke(std::_Any_data const&, WiFiEventStationModeDisconnected const&) at ??:?
0x40202734 in std::_Function_base::_Base_manager<ESP8266WiFiGenericClass::onStationModeGotIP(std::function<void (WiFiEventStationModeGotIP const&)>)::{lambda(_esp_event*)#1}>::_M_manager(std::_Any_data&, std::_Function_base::_Base_manager<ESP8266WiFiGenericClass::onStationModeGotIP(std::function<void (WiFiEventStationModeGotIP const&)>)::{lambda(_esp_event*)#1}> const&, std::_Manager_operation) at ESP8266WiFiGeneric.cpp:?
0x40201d74 in std::_Function_handler<void (_esp_event*), ESP8266WiFiGenericClass::onStationModeGotIP(std::function<void (WiFiEventStationModeGotIP const&)>)::{lambda(_esp_event*)#1}>::_M_invoke(std::_Any_data const&, _esp_event*) at ESP8266WiFiGeneric.cpp:?
0x40280fc0 in spiffs_cache_page_get_by_fd at ??:?
0x402486a8 in onGotIP(WiFiEventStationModeGotIP const&) at ??:?
0x402801a4 in std::_Function_base::_Base_manager<void (*)(WiFiEventStationModeGotIP const&)>::_M_manager(std::_Any_data&, std::_Any_data const&, std::_Manager_operation) at ??:?
0x40280190 in std::_Function_handler<void (WiFiEventStationModeGotIP const&), void (*)(WiFiEventStationModeGotIP const&)>::_M_invoke(std::_Any_data const&, WiFiEventStationModeGotIP const&) at ??:?
0x40202794 in std::_Function_base::_Base_manager<ESP8266WiFiGenericClass::onStationModeDHCPTimeout(std::function<void ()>)::{lambda(_esp_event*)#1}>::_M_manager(std::_Any_data&, std::_Function_base::_Base_manager<ESP8266WiFiGenericClass::onStationModeDHCPTimeout(std::function<void ()>)::{lambda(_esp_event*)#1}> const&, std::_Manager_operation) at ESP8266WiFiGeneric.cpp:?
0x40201bac in std::_Function_handler<void (_esp_event*), ESP8266WiFiGenericClass::onStationModeDHCPTimeout(std::function<void ()>)::{lambda(_esp_event*)#1}>::_M_invoke(std::_Any_data const&, _esp_event*) at ESP8266WiFiGeneric.cpp:?
Another log after a crash after clicking Submit: This time it sort of completes the PLUGIN_EXIT (I added that done message, just to be sure it wasn't accidentally trying to de-initialize the IR object, as that's never initialized here for lack of matching hardware)
121675 : Info : WD : Uptime 2 ConnectFailures 0 FreeMem 19488 WiFiStatus 3 ESPeasy internal wifi status: Conn. IP Init
130709 : Info : P016_PLUGIN_WEBFORM_SAVE ...
130806 : Info : P016_PLUGIN_WEBFORM_SAVE Done
130949 : Info : P016_PLUGIN_EXIT ...
130950 : Info : P016_PLUGIN_EXIT done
--------------- CUT HERE FOR EXCEPTION DECODER ---------------
Soft WDT reset
>>>stack>>>
ctx: sys
sp: 3fff2580 end: 3fffffb0 offset: 01a0
3fff2720: 3ffefac0 3fff2f48 3fff2858 00000000
3fff2730: 00000000 02796b86 40274bb8 00000001
I also want to add that similar crashes already appeared, with similar frequency, before I merged the String/flashhelper optimizations that where merged (very) recently.
Yep, there is something really strange going on in the webserver part now that we're sending lots of flash strings directly to it.
I have (finally) done some more investigation into these crashes, and there are a few things that seem to stand out:
ets_timer_disarm
and ets_timer_setfn
, that might interfere with Arduino timer setup and ESPEasy timer setupdelay()
is redefined somewhere (though I can't find it, it may be caused by the first point mentioned), causing the default wdtFeed() not to be called, causing the Soft WDT reset
as seen in many of the log dumps shown above. (Have found redefinitions of delay in the FastLED and Blynk libraries, but these are both not included in the IR builds)I realize there's a lot of "possibly"'s and "maybe"'s here, but that's just my inexperience with a) developing for Arduino, and b) the use of this IR library.
Have tried 'appending' all delay(0)
calls with FeedSW_watchdog()
calls in this plugin, but that hasn't improved anything yet.
I'll search for an older version of the IR library, to see if that'll improve anything.
Well, I was obviously on the wrong track, after replacing 2 huge String[]
and int
arrays by a std::vector
implementation, the crashes have now vanished. ๐
Ah so it was a stack overflow?
Now that I've resolved the undesirable crashes, some testing should be applied:
(updated, see below)
Please report your findings here (success and (hopefully not) failures ๐)
@tbnobody Can you confirm this issue is now resolved , with the build made available last week ? I will update to the latest branch, as there have been a few interesting improvements recently, just a short wait for the GH Actions build to complete.
The build has completed, so here are fresh builds, based on current mega
branch:
ESPEasy_minimal_IRext_ESP8266_1M.zip ESPEasy_minimal_IRext_ESP8266_4M1M.zip
Please report your findings here (success and (hopefully not) failures ๐)
I am using ESP_Easy_mega_20210503_minimal_IRext_ESP8266_1M
When I enter the received hex code in the TSOP4838 plugin the code gets cutted after a specific length. E.g. I enter:
Then I press submit and get:
It seems to work with shorter Hex codes (e.g. 10001C3 is working)