Fix specific breakpoint for ROM cartridge or unknown memory location writing v2.1.3-R4a
authorJean-Paul Mari <djipi.mari@gmail.com>
Thu, 15 Aug 2019 08:37:27 +0000 (04:37 -0400)
committerJean-Paul Mari <djipi.mari@gmail.com>
Thu, 15 Aug 2019 08:37:27 +0000 (04:37 -0400)
Win-VS2017/GeneratedFiles/qrc_virtualjaguar.cpp
docs/vj_HistoryNotes.txt
res/help.html
src/jaguar.cpp

index ea925f2..2a4ee8a 100644 (file)
@@ -73021,7 +73021,7 @@ static const unsigned char qt_resource_data[] = {
   0x15,0xb0,0x4f,0xd,0x27,0xc4,0xde,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,\r
   0x42,0x60,0x82,\r
     // C:/Projects/Emulators/Virtual-Jaguar-Rx/res/help.html\r
-  0x0,0x0,0x7d,0xc9,\r
+  0x0,0x0,0x7d,0xe6,\r
   0x3c,\r
   0x68,0x74,0x6d,0x6c,0x3e,0xd,0xa,0xd,0xa,0x3c,0x68,0x65,0x61,0x64,0x3e,0xd,\r
   0xa,0x3c,0x74,0x69,0x74,0x6c,0x65,0x3e,0x56,0x69,0x72,0x74,0x75,0x61,0x6c,0x20,\r
@@ -74797,245 +74797,247 @@ static const unsigned char qt_resource_data[] = {
   0x65,0x20,0x73,0x74,0x61,0x74,0x65,0x20,0x6f,0x66,0x20,0x74,0x68,0x65,0x20,0x76,\r
   0x61,0x72,0x69,0x6f,0x75,0x73,0x20,0x43,0x50,0x55,0x73,0x20,0x69,0x6e,0x20,0x74,\r
   0x68,0x65,0x20,0x65,0x6d,0x75,0x6c,0x61,0x74,0x65,0x64,0x20,0x4a,0x61,0x67,0x75,\r
-  0x61,0x72,0x2c,0x20,0x61,0x20,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,\r
-  0x20,0x63,0x61,0x6e,0x20,0x61,0x6c,0x73,0x6f,0x20,0x62,0x65,0x20,0x73,0x65,0x74,\r
-  0x20,0x76,0x69,0x61,0x20,0x74,0x68,0x65,0x20,0x42,0x50,0x4d,0x20,0x73,0x65,0x74,\r
-  0x74,0x69,0x6e,0x67,0x2e,0x20,0x54,0x68,0x65,0x20,0x77,0x69,0x6e,0x64,0x6f,0x77,\r
-  0x20,0x63,0x61,0x6e,0x20,0x62,0x65,0x20,0x64,0x69,0x73,0x6d,0x69,0x73,0x73,0x65,\r
-  0x64,0x20,0x62,0x79,0x20,0x63,0x6c,0x69,0x63,0x6b,0x69,0x6e,0x67,0x20,0x6f,0x6e,\r
-  0x20,0x74,0x68,0x65,0x20,0x26,0x6c,0x64,0x71,0x75,0x6f,0x3b,0x58,0x26,0x72,0x64,\r
-  0x71,0x75,0x6f,0x3b,0x20,0x69,0x6e,0x20,0x74,0x68,0x65,0x20,0x75,0x70,0x70,0x65,\r
-  0x72,0x20,0x63,0x6f,0x72,0x6e,0x65,0x72,0x20,0x6f,0x66,0x20,0x74,0x68,0x65,0x20,\r
-  0x64,0x69,0x61,0x6c,0x6f,0x67,0x2c,0x20,0x6f,0x72,0x20,0x62,0x79,0x20,0x70,0x72,\r
-  0x65,0x73,0x73,0x69,0x6e,0x67,0x20,0x74,0x68,0x65,0x20,0x3c,0x73,0x74,0x72,0x6f,\r
-  0x6e,0x67,0x3e,0x45,0x73,0x63,0x3c,0x2f,0x73,0x74,0x72,0x6f,0x6e,0x67,0x3e,0x20,\r
-  0x6b,0x65,0x79,0x20,0x6f,0x6e,0x20,0x79,0x6f,0x75,0x72,0x20,0x6b,0x65,0x79,0x62,\r
-  0x6f,0x61,0x72,0x64,0x2e,0x3c,0x2f,0x70,0x3e,0xd,0xa,0x3c,0x68,0x33,0x3e,0x4f,\r
-  0x50,0x20,0x42,0x72,0x6f,0x77,0x73,0x65,0x72,0x3c,0x2f,0x68,0x33,0x3e,0xd,0xa,\r
-  0x3c,0x70,0x3e,0x54,0x68,0x69,0x73,0x20,0x77,0x69,0x6e,0x64,0x6f,0x77,0x20,0x73,\r
-  0x68,0x6f,0x77,0x73,0x20,0x74,0x68,0x65,0x20,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,\r
-  0x20,0x73,0x74,0x61,0x74,0x65,0x20,0x6f,0x66,0x20,0x6f,0x62,0x6a,0x65,0x63,0x74,\r
-  0x20,0x6c,0x69,0x73,0x74,0x20,0x74,0x68,0x61,0x74,0x20,0x74,0x68,0x65,0x20,0x4f,\r
-  0x62,0x6a,0x65,0x63,0x74,0x20,0x50,0x72,0x6f,0x63,0x65,0x73,0x73,0x6f,0x72,0x20,\r
-  0x69,0x73,0x20,0x70,0x6f,0x69,0x6e,0x74,0x69,0x6e,0x67,0x20,0x74,0x6f,0x2e,0x20,\r
-  0x4e,0x6f,0x74,0x65,0x20,0x74,0x68,0x61,0x74,0x20,0x6d,0x6f,0x73,0x74,0x20,0x6f,\r
-  0x66,0x20,0x74,0x68,0x65,0x20,0x74,0x69,0x6d,0x65,0x2c,0x20,0x74,0x68,0x69,0x73,\r
-  0x20,0x77,0x69,0x6c,0x6c,0x20,0x6c,0x69,0x6b,0x65,0x6c,0x79,0x20,0x73,0x68,0x6f,\r
-  0x77,0x20,0x61,0x6e,0x20,0x6f,0x62,0x6a,0x65,0x63,0x74,0x20,0x6c,0x69,0x73,0x74,\r
-  0x20,0x74,0x68,0x61,0x74,0x20,0x68,0x61,0x73,0x20,0x68,0x61,0x64,0x20,0x69,0x74,\r
-  0x73,0x20,0x6f,0x62,0x6a,0x65,0x63,0x74,0x73,0x20,0x70,0x72,0x6f,0x63,0x65,0x73,\r
-  0x73,0x65,0x64,0x2e,0x20,0x49,0x74,0x20,0x63,0x61,0x6e,0x20,0x62,0x65,0x20,0x64,\r
-  0x69,0x73,0x6d,0x69,0x73,0x73,0x65,0x64,0x20,0x62,0x79,0x20,0x63,0x6c,0x69,0x63,\r
-  0x6b,0x69,0x6e,0x67,0x20,0x6f,0x6e,0x20,0x74,0x68,0x65,0x20,0x26,0x6c,0x64,0x71,\r
-  0x75,0x6f,0x3b,0x58,0x26,0x72,0x64,0x71,0x75,0x6f,0x3b,0x20,0x69,0x6e,0x20,0x74,\r
-  0x68,0x65,0x20,0x75,0x70,0x70,0x65,0x72,0x20,0x63,0x6f,0x72,0x6e,0x65,0x72,0x20,\r
-  0x6f,0x66,0x20,0x74,0x68,0x65,0x20,0x64,0x69,0x61,0x6c,0x6f,0x67,0x2c,0x20,0x6f,\r
-  0x72,0x20,0x62,0x79,0x20,0x70,0x72,0x65,0x73,0x73,0x69,0x6e,0x67,0x20,0x74,0x68,\r
-  0x65,0x20,0x3c,0x73,0x74,0x72,0x6f,0x6e,0x67,0x3e,0x45,0x73,0x63,0x3c,0x2f,0x73,\r
-  0x74,0x72,0x6f,0x6e,0x67,0x3e,0x20,0x6b,0x65,0x79,0x20,0x6f,0x6e,0x20,0x79,0x6f,\r
-  0x75,0x72,0x20,0x6b,0x65,0x79,0x62,0x6f,0x61,0x72,0x64,0x2e,0x3c,0x2f,0x70,0x3e,\r
-  0xd,0xa,0x3c,0x68,0x33,0x3e,0x4d,0x36,0x38,0x4b,0x20,0x44,0x69,0x73,0x61,0x73,\r
-  0x73,0x65,0x6d,0x62,0x6c,0x79,0x20,0x42,0x72,0x6f,0x77,0x73,0x65,0x72,0x3c,0x2f,\r
-  0x68,0x33,0x3e,0xd,0xa,0x3c,0x70,0x3e,0x54,0x68,0x69,0x73,0x20,0x77,0x69,0x6e,\r
-  0x64,0x6f,0x77,0x20,0x70,0x72,0x6f,0x76,0x69,0x64,0x65,0x73,0x20,0x61,0x20,0x64,\r
-  0x69,0x73,0x61,0x73,0x73,0x65,0x6d,0x62,0x6c,0x79,0x20,0x6f,0x66,0x20,0x36,0x38,\r
-  0x30,0x30,0x30,0x20,0x6f,0x70,0x63,0x6f,0x64,0x65,0x73,0x2e,0x20,0x49,0x74,0x20,\r
-  0x63,0x61,0x6e,0x20,0x62,0x65,0x20,0x64,0x69,0x73,0x6d,0x69,0x73,0x73,0x65,0x64,\r
-  0x20,0x62,0x79,0x20,0x63,0x6c,0x69,0x63,0x6b,0x69,0x6e,0x67,0x20,0x6f,0x6e,0x20,\r
-  0x74,0x68,0x65,0x20,0x26,0x6c,0x64,0x71,0x75,0x6f,0x3b,0x58,0x26,0x72,0x64,0x71,\r
-  0x75,0x6f,0x3b,0x20,0x69,0x6e,0x20,0x74,0x68,0x65,0x20,0x75,0x70,0x70,0x65,0x72,\r
-  0x20,0x63,0x6f,0x72,0x6e,0x65,0x72,0x20,0x6f,0x66,0x20,0x74,0x68,0x65,0x20,0x64,\r
-  0x69,0x61,0x6c,0x6f,0x67,0x2c,0x20,0x6f,0x72,0x20,0x62,0x79,0x20,0x70,0x72,0x65,\r
-  0x73,0x73,0x69,0x6e,0x67,0x20,0x74,0x68,0x65,0x20,0x3c,0x73,0x74,0x72,0x6f,0x6e,\r
-  0x67,0x3e,0x45,0x73,0x63,0x3c,0x2f,0x73,0x74,0x72,0x6f,0x6e,0x67,0x3e,0x20,0x6b,\r
-  0x65,0x79,0x20,0x6f,0x6e,0x20,0x79,0x6f,0x75,0x72,0x20,0x6b,0x65,0x79,0x62,0x6f,\r
-  0x61,0x72,0x64,0x2e,0x3c,0x2f,0x70,0x3e,0xd,0xa,0x3c,0x68,0x33,0x3e,0x52,0x49,\r
-  0x53,0x43,0x20,0x44,0x69,0x73,0x61,0x73,0x73,0x65,0x6d,0x62,0x6c,0x79,0x20,0x42,\r
+  0x61,0x72,0x3b,0x20,0x61,0x20,0x6d,0x65,0x6d,0x6f,0x72,0x79,0x20,0x62,0x72,0x65,\r
+  0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x20,0x28,0x72,0x65,0x61,0x64,0x20,0x26,0x41,\r
+  0x61,0x63,0x75,0x74,0x65,0x3b,0x20,0x77,0x72,0x69,0x74,0x65,0x29,0x20,0x63,0x61,\r
+  0x6e,0x20,0x61,0x6c,0x73,0x6f,0x20,0x62,0x65,0x20,0x73,0x65,0x74,0x20,0x76,0x69,\r
+  0x61,0x20,0x74,0x68,0x65,0x20,0x42,0x50,0x4d,0x20,0x73,0x65,0x74,0x74,0x69,0x6e,\r
+  0x67,0x2e,0x20,0x54,0x68,0x65,0x20,0x77,0x69,0x6e,0x64,0x6f,0x77,0x20,0x63,0x61,\r
+  0x6e,0x20,0x62,0x65,0x20,0x64,0x69,0x73,0x6d,0x69,0x73,0x73,0x65,0x64,0x20,0x62,\r
+  0x79,0x20,0x63,0x6c,0x69,0x63,0x6b,0x69,0x6e,0x67,0x20,0x6f,0x6e,0x20,0x74,0x68,\r
+  0x65,0x20,0x26,0x6c,0x64,0x71,0x75,0x6f,0x3b,0x58,0x26,0x72,0x64,0x71,0x75,0x6f,\r
+  0x3b,0x20,0x69,0x6e,0x20,0x74,0x68,0x65,0x20,0x75,0x70,0x70,0x65,0x72,0x20,0x63,\r
+  0x6f,0x72,0x6e,0x65,0x72,0x20,0x6f,0x66,0x20,0x74,0x68,0x65,0x20,0x64,0x69,0x61,\r
+  0x6c,0x6f,0x67,0x2c,0x20,0x6f,0x72,0x20,0x62,0x79,0x20,0x70,0x72,0x65,0x73,0x73,\r
+  0x69,0x6e,0x67,0x20,0x74,0x68,0x65,0x20,0x3c,0x73,0x74,0x72,0x6f,0x6e,0x67,0x3e,\r
+  0x45,0x73,0x63,0x3c,0x2f,0x73,0x74,0x72,0x6f,0x6e,0x67,0x3e,0x20,0x6b,0x65,0x79,\r
+  0x20,0x6f,0x6e,0x20,0x79,0x6f,0x75,0x72,0x20,0x6b,0x65,0x79,0x62,0x6f,0x61,0x72,\r
+  0x64,0x2e,0x3c,0x2f,0x70,0x3e,0xd,0xa,0x3c,0x68,0x33,0x3e,0x4f,0x50,0x20,0x42,\r
   0x72,0x6f,0x77,0x73,0x65,0x72,0x3c,0x2f,0x68,0x33,0x3e,0xd,0xa,0x3c,0x70,0x3e,\r
-  0x54,0x68,0x69,0x73,0x20,0x77,0x69,0x6e,0x64,0x6f,0x77,0x20,0x70,0x72,0x6f,0x76,\r
-  0x69,0x64,0x65,0x73,0x20,0x61,0x20,0x64,0x69,0x73,0x61,0x73,0x73,0x65,0x6d,0x62,\r
-  0x6c,0x79,0x20,0x6f,0x66,0x20,0x52,0x49,0x53,0x43,0x20,0x6f,0x70,0x63,0x6f,0x64,\r
-  0x65,0x73,0x2e,0x20,0x49,0x74,0x20,0x63,0x61,0x6e,0x20,0x62,0x65,0x20,0x64,0x69,\r
-  0x73,0x6d,0x69,0x73,0x73,0x65,0x64,0x20,0x62,0x79,0x20,0x63,0x6c,0x69,0x63,0x6b,\r
-  0x69,0x6e,0x67,0x20,0x6f,0x6e,0x20,0x74,0x68,0x65,0x20,0x26,0x6c,0x64,0x71,0x75,\r
-  0x6f,0x3b,0x58,0x26,0x72,0x64,0x71,0x75,0x6f,0x3b,0x20,0x69,0x6e,0x20,0x74,0x68,\r
-  0x65,0x20,0x75,0x70,0x70,0x65,0x72,0x20,0x63,0x6f,0x72,0x6e,0x65,0x72,0x20,0x6f,\r
-  0x66,0x20,0x74,0x68,0x65,0x20,0x64,0x69,0x61,0x6c,0x6f,0x67,0x2c,0x20,0x6f,0x72,\r
-  0x20,0x62,0x79,0x20,0x70,0x72,0x65,0x73,0x73,0x69,0x6e,0x67,0x20,0x74,0x68,0x65,\r
-  0x20,0x3c,0x73,0x74,0x72,0x6f,0x6e,0x67,0x3e,0x45,0x73,0x63,0x3c,0x2f,0x73,0x74,\r
-  0x72,0x6f,0x6e,0x67,0x3e,0x20,0x6b,0x65,0x79,0x20,0x6f,0x6e,0x20,0x79,0x6f,0x75,\r
-  0x72,0x20,0x6b,0x65,0x79,0x62,0x6f,0x61,0x72,0x64,0x2e,0x3c,0x2f,0x70,0x3e,0xd,\r
-  0xa,0x3c,0x70,0x3e,0x54,0x68,0x65,0x20,0x61,0x66,0x6f,0x72,0x65,0x6d,0x65,0x6e,\r
-  0x74,0x69,0x6f,0x6e,0x65,0x64,0x20,0x6f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x20,0x77,\r
-  0x69,0x6c,0x6c,0x20,0x6f,0x6e,0x6c,0x79,0x20,0x77,0x6f,0x72,0x6b,0x20,0x77,0x68,\r
-  0x65,0x6e,0x20,0x3c,0x65,0x6d,0x3e,0x56,0x69,0x72,0x74,0x75,0x61,0x6c,0x20,0x4a,\r
-  0x61,0x67,0x75,0x61,0x72,0x3c,0x2f,0x65,0x6d,0x3e,0x20,0x69,0x73,0x20,0x72,0x75,\r
-  0x6e,0x20,0x69,0x6e,0x20,0x41,0x6c,0x70,0x69,0x6e,0x65,0x20,0x6f,0x72,0x20,0x44,\r
-  0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x20,0x6d,0x6f,0x64,0x65,0x2c,0x20,0x74,0x68,\r
-  0x61,0x74,0x20,0x69,0x73,0x2c,0x20,0x77,0x68,0x65,0x6e,0x20,0x74,0x68,0x65,0x20,\r
-  0x2d,0x2d,0x61,0x6c,0x70,0x69,0x6e,0x65,0x20,0x6f,0x72,0x20,0x2d,0x2d,0x64,0x65,\r
-  0x62,0x75,0x67,0x67,0x65,0x72,0x20,0x66,0x6c,0x61,0x67,0x20,0x69,0x73,0x20,0x70,\r
-  0x61,0x73,0x73,0x65,0x64,0x20,0x69,0x6e,0x2e,0x20,0x49,0x66,0x20,0x79,0x6f,0x75,\r
-  0x20,0x64,0x6f,0x20,0x6e,0x6f,0x74,0x20,0x70,0x61,0x73,0x73,0x20,0x73,0x75,0x63,\r
-  0x68,0x20,0x66,0x6c,0x61,0x67,0x2c,0x20,0x3c,0x65,0x6d,0x3e,0x56,0x69,0x72,0x74,\r
-  0x75,0x61,0x6c,0x20,0x4a,0x61,0x67,0x75,0x61,0x72,0x3c,0x2f,0x65,0x6d,0x3e,0x20,\r
-  0x77,0x69,0x6c,0x6c,0x20,0x72,0x75,0x6e,0x20,0x61,0x73,0x20,0x69,0x74,0x20,0x6e,\r
-  0x6f,0x72,0x6d,0x61,0x6c,0x6c,0x79,0x20,0x64,0x6f,0x65,0x73,0x2c,0x20,0x69,0x2e,\r
-  0x65,0x2e,0x2c,0x20,0x61,0x73,0x20,0x61,0x20,0x73,0x74,0x6f,0x63,0x6b,0x20,0x4a,\r
-  0x61,0x67,0x75,0x61,0x72,0x2c,0x20,0x61,0x6e,0x64,0x20,0x6e,0x6f,0x74,0x68,0x69,\r
-  0x6e,0x67,0x20,0x77,0x69,0x6c,0x6c,0x20,0x62,0x65,0x20,0x6c,0x6f,0x61,0x64,0x65,\r
-  0x64,0x20,0x62,0x79,0x20,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x2e,0x3c,0x2f,0x70,\r
-  0x3e,0xd,0xa,0x3c,0x68,0x32,0x3e,0x46,0x6f,0x72,0x20,0x54,0x68,0x65,0x20,0x43,\r
-  0x75,0x72,0x69,0x6f,0x75,0x73,0x3c,0x2f,0x68,0x32,0x3e,0xd,0xa,0x3c,0x70,0x3e,\r
-  0x49,0x66,0x20,0x79,0x6f,0x75,0x26,0x72,0x73,0x71,0x75,0x6f,0x3b,0x72,0x65,0x20,\r
-  0x77,0x6f,0x6e,0x64,0x65,0x72,0x69,0x6e,0x67,0x20,0x77,0x68,0x79,0x20,0x73,0x6f,\r
-  0x6d,0x65,0x20,0x63,0x61,0x72,0x74,0x72,0x69,0x64,0x67,0x65,0x73,0x20,0x68,0x61,\r
-  0x76,0x65,0x20,0x6c,0x61,0x62,0x65,0x6c,0x73,0x20,0x69,0x6e,0x20,0x74,0x68,0x65,\r
-  0x20,0x26,0x6c,0x64,0x71,0x75,0x6f,0x3b,0x49,0x6e,0x73,0x65,0x72,0x74,0x20,0x43,\r
-  0x61,0x72,0x74,0x72,0x69,0x64,0x67,0x65,0x2e,0x2e,0x2e,0x26,0x72,0x64,0x71,0x75,\r
-  0x6f,0x3b,0x20,0x64,0x69,0x61,0x6c,0x6f,0x67,0x75,0x65,0x20,0x61,0x6e,0x64,0x20,\r
-  0x73,0x6f,0x6d,0x65,0x20,0x64,0x6f,0x6e,0x26,0x72,0x73,0x71,0x75,0x6f,0x3b,0x74,\r
-  0x2c,0x20,0x72,0x65,0x61,0x64,0x20,0x6f,0x6e,0x2e,0x2e,0x2e,0x3c,0x2f,0x70,0x3e,\r
-  0xd,0xa,0x3c,0x70,0x3e,0x3c,0x65,0x6d,0x3e,0x56,0x69,0x72,0x74,0x75,0x61,0x6c,\r
-  0x20,0x4a,0x61,0x67,0x75,0x61,0x72,0x3c,0x2f,0x65,0x6d,0x3e,0x20,0x6c,0x6f,0x6f,\r
-  0x6b,0x73,0x20,0x61,0x74,0x20,0x79,0x6f,0x75,0x72,0x20,0x5a,0x49,0x50,0x20,0x66,\r
-  0x69,0x6c,0x65,0x20,0x61,0x73,0x20,0x61,0x20,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,\r
-  0x65,0x72,0x26,0x6d,0x64,0x61,0x73,0x68,0x3b,0x69,0x66,0x20,0x69,0x74,0x20,0x66,\r
-  0x69,0x6e,0x64,0x73,0x20,0x77,0x68,0x61,0x74,0x20,0x69,0x74,0x20,0x65,0x78,0x70,\r
-  0x65,0x63,0x74,0x73,0x20,0x69,0x6e,0x20,0x74,0x68,0x65,0x20,0x5a,0x49,0x50,0x2c,\r
-  0x20,0x69,0x74,0x20,0x77,0x69,0x6c,0x6c,0x20,0x75,0x73,0x65,0x20,0x69,0x74,0x2e,\r
-  0x20,0x46,0x6f,0x72,0x20,0x65,0x78,0x61,0x6d,0x70,0x6c,0x65,0x2c,0x20,0x6c,0x61,\r
-  0x62,0x65,0x6c,0x20,0x69,0x6d,0x61,0x67,0x65,0x73,0x3a,0x20,0x49,0x66,0x20,0x79,\r
-  0x6f,0x75,0x20,0x70,0x75,0x74,0x20,0x61,0x6e,0x20,0x69,0x6d,0x61,0x67,0x65,0x20,\r
-  0x66,0x69,0x6c,0x65,0x20,0x6f,0x66,0x20,0x61,0x20,0x63,0x61,0x72,0x74,0x72,0x69,\r
-  0x64,0x67,0x65,0x20,0x6c,0x61,0x62,0x65,0x6c,0x20,0x69,0x6e,0x20,0x74,0x68,0x65,\r
-  0x20,0x5a,0x49,0x50,0x20,0x66,0x69,0x6c,0x65,0x20,0x77,0x69,0x74,0x68,0x20,0x79,\r
-  0x6f,0x75,0x72,0x20,0x52,0x4f,0x4d,0x20,0x69,0x6d,0x61,0x67,0x65,0x2c,0x20,0x3c,\r
-  0x65,0x6d,0x3e,0x56,0x69,0x72,0x74,0x75,0x61,0x6c,0x20,0x4a,0x61,0x67,0x75,0x61,\r
-  0x72,0x3c,0x2f,0x65,0x6d,0x3e,0x20,0x77,0x69,0x6c,0x6c,0x20,0x75,0x73,0x65,0x20,\r
-  0x74,0x68,0x61,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x20,0x69,0x6e,0x20,0x74,0x68,\r
-  0x65,0x20,0x26,0x6c,0x64,0x71,0x75,0x6f,0x3b,0x49,0x6e,0x73,0x65,0x72,0x74,0x20,\r
-  0x43,0x61,0x72,0x74,0x72,0x69,0x64,0x67,0x65,0x2e,0x2e,0x2e,0x26,0x72,0x64,0x71,\r
-  0x75,0x6f,0x3b,0x20,0x64,0x69,0x61,0x6c,0x6f,0x67,0x75,0x65,0x20,0x26,0x6d,0x64,\r
-  0x61,0x73,0x68,0x3b,0x20,0x61,0x73,0x73,0x75,0x6d,0x69,0x6e,0x67,0x20,0x69,0x74,\r
-  0x26,0x72,0x73,0x71,0x75,0x6f,0x3b,0x73,0x20,0x61,0x20,0x76,0x61,0x6c,0x69,0x64,\r
-  0x20,0x69,0x6d,0x61,0x67,0x65,0x20,0x66,0x69,0x6c,0x65,0x2e,0x20,0x54,0x68,0x65,\r
-  0x20,0x69,0x6d,0x61,0x67,0x65,0x20,0x73,0x68,0x6f,0x75,0x6c,0x64,0x20,0x62,0x65,\r
-  0x20,0x33,0x36,0x35,0x20,0x78,0x20,0x31,0x36,0x38,0x20,0x66,0x6f,0x72,0x20,0x69,\r
-  0x74,0x20,0x74,0x6f,0x20,0x73,0x68,0x6f,0x77,0x20,0x75,0x70,0x20,0x6f,0x6e,0x20,\r
-  0x74,0x68,0x65,0x20,0x62,0x69,0x67,0x20,0x63,0x61,0x72,0x74,0x72,0x69,0x64,0x67,\r
-  0x65,0x20,0x69,0x6d,0x61,0x67,0x65,0x20,0x77,0x69,0x74,0x68,0x6f,0x75,0x74,0x20,\r
-  0x61,0x6e,0x79,0x20,0x73,0x63,0x61,0x6c,0x69,0x6e,0x67,0x3b,0x20,0x61,0x6e,0x79,\r
-  0x20,0x62,0x69,0x67,0x67,0x65,0x72,0x20,0x69,0x73,0x20,0x6a,0x75,0x73,0x74,0x20,\r
-  0x61,0x20,0x77,0x61,0x73,0x74,0x65,0x20,0x6f,0x66,0x20,0x73,0x70,0x61,0x63,0x65,\r
-  0x20,0x61,0x6e,0x64,0x20,0x3c,0x65,0x6d,0x3e,0x56,0x69,0x72,0x74,0x75,0x61,0x6c,\r
+  0x54,0x68,0x69,0x73,0x20,0x77,0x69,0x6e,0x64,0x6f,0x77,0x20,0x73,0x68,0x6f,0x77,\r
+  0x73,0x20,0x74,0x68,0x65,0x20,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x20,0x73,0x74,\r
+  0x61,0x74,0x65,0x20,0x6f,0x66,0x20,0x6f,0x62,0x6a,0x65,0x63,0x74,0x20,0x6c,0x69,\r
+  0x73,0x74,0x20,0x74,0x68,0x61,0x74,0x20,0x74,0x68,0x65,0x20,0x4f,0x62,0x6a,0x65,\r
+  0x63,0x74,0x20,0x50,0x72,0x6f,0x63,0x65,0x73,0x73,0x6f,0x72,0x20,0x69,0x73,0x20,\r
+  0x70,0x6f,0x69,0x6e,0x74,0x69,0x6e,0x67,0x20,0x74,0x6f,0x2e,0x20,0x4e,0x6f,0x74,\r
+  0x65,0x20,0x74,0x68,0x61,0x74,0x20,0x6d,0x6f,0x73,0x74,0x20,0x6f,0x66,0x20,0x74,\r
+  0x68,0x65,0x20,0x74,0x69,0x6d,0x65,0x2c,0x20,0x74,0x68,0x69,0x73,0x20,0x77,0x69,\r
+  0x6c,0x6c,0x20,0x6c,0x69,0x6b,0x65,0x6c,0x79,0x20,0x73,0x68,0x6f,0x77,0x20,0x61,\r
+  0x6e,0x20,0x6f,0x62,0x6a,0x65,0x63,0x74,0x20,0x6c,0x69,0x73,0x74,0x20,0x74,0x68,\r
+  0x61,0x74,0x20,0x68,0x61,0x73,0x20,0x68,0x61,0x64,0x20,0x69,0x74,0x73,0x20,0x6f,\r
+  0x62,0x6a,0x65,0x63,0x74,0x73,0x20,0x70,0x72,0x6f,0x63,0x65,0x73,0x73,0x65,0x64,\r
+  0x2e,0x20,0x49,0x74,0x20,0x63,0x61,0x6e,0x20,0x62,0x65,0x20,0x64,0x69,0x73,0x6d,\r
+  0x69,0x73,0x73,0x65,0x64,0x20,0x62,0x79,0x20,0x63,0x6c,0x69,0x63,0x6b,0x69,0x6e,\r
+  0x67,0x20,0x6f,0x6e,0x20,0x74,0x68,0x65,0x20,0x26,0x6c,0x64,0x71,0x75,0x6f,0x3b,\r
+  0x58,0x26,0x72,0x64,0x71,0x75,0x6f,0x3b,0x20,0x69,0x6e,0x20,0x74,0x68,0x65,0x20,\r
+  0x75,0x70,0x70,0x65,0x72,0x20,0x63,0x6f,0x72,0x6e,0x65,0x72,0x20,0x6f,0x66,0x20,\r
+  0x74,0x68,0x65,0x20,0x64,0x69,0x61,0x6c,0x6f,0x67,0x2c,0x20,0x6f,0x72,0x20,0x62,\r
+  0x79,0x20,0x70,0x72,0x65,0x73,0x73,0x69,0x6e,0x67,0x20,0x74,0x68,0x65,0x20,0x3c,\r
+  0x73,0x74,0x72,0x6f,0x6e,0x67,0x3e,0x45,0x73,0x63,0x3c,0x2f,0x73,0x74,0x72,0x6f,\r
+  0x6e,0x67,0x3e,0x20,0x6b,0x65,0x79,0x20,0x6f,0x6e,0x20,0x79,0x6f,0x75,0x72,0x20,\r
+  0x6b,0x65,0x79,0x62,0x6f,0x61,0x72,0x64,0x2e,0x3c,0x2f,0x70,0x3e,0xd,0xa,0x3c,\r
+  0x68,0x33,0x3e,0x4d,0x36,0x38,0x4b,0x20,0x44,0x69,0x73,0x61,0x73,0x73,0x65,0x6d,\r
+  0x62,0x6c,0x79,0x20,0x42,0x72,0x6f,0x77,0x73,0x65,0x72,0x3c,0x2f,0x68,0x33,0x3e,\r
+  0xd,0xa,0x3c,0x70,0x3e,0x54,0x68,0x69,0x73,0x20,0x77,0x69,0x6e,0x64,0x6f,0x77,\r
+  0x20,0x70,0x72,0x6f,0x76,0x69,0x64,0x65,0x73,0x20,0x61,0x20,0x64,0x69,0x73,0x61,\r
+  0x73,0x73,0x65,0x6d,0x62,0x6c,0x79,0x20,0x6f,0x66,0x20,0x36,0x38,0x30,0x30,0x30,\r
+  0x20,0x6f,0x70,0x63,0x6f,0x64,0x65,0x73,0x2e,0x20,0x49,0x74,0x20,0x63,0x61,0x6e,\r
+  0x20,0x62,0x65,0x20,0x64,0x69,0x73,0x6d,0x69,0x73,0x73,0x65,0x64,0x20,0x62,0x79,\r
+  0x20,0x63,0x6c,0x69,0x63,0x6b,0x69,0x6e,0x67,0x20,0x6f,0x6e,0x20,0x74,0x68,0x65,\r
+  0x20,0x26,0x6c,0x64,0x71,0x75,0x6f,0x3b,0x58,0x26,0x72,0x64,0x71,0x75,0x6f,0x3b,\r
+  0x20,0x69,0x6e,0x20,0x74,0x68,0x65,0x20,0x75,0x70,0x70,0x65,0x72,0x20,0x63,0x6f,\r
+  0x72,0x6e,0x65,0x72,0x20,0x6f,0x66,0x20,0x74,0x68,0x65,0x20,0x64,0x69,0x61,0x6c,\r
+  0x6f,0x67,0x2c,0x20,0x6f,0x72,0x20,0x62,0x79,0x20,0x70,0x72,0x65,0x73,0x73,0x69,\r
+  0x6e,0x67,0x20,0x74,0x68,0x65,0x20,0x3c,0x73,0x74,0x72,0x6f,0x6e,0x67,0x3e,0x45,\r
+  0x73,0x63,0x3c,0x2f,0x73,0x74,0x72,0x6f,0x6e,0x67,0x3e,0x20,0x6b,0x65,0x79,0x20,\r
+  0x6f,0x6e,0x20,0x79,0x6f,0x75,0x72,0x20,0x6b,0x65,0x79,0x62,0x6f,0x61,0x72,0x64,\r
+  0x2e,0x3c,0x2f,0x70,0x3e,0xd,0xa,0x3c,0x68,0x33,0x3e,0x52,0x49,0x53,0x43,0x20,\r
+  0x44,0x69,0x73,0x61,0x73,0x73,0x65,0x6d,0x62,0x6c,0x79,0x20,0x42,0x72,0x6f,0x77,\r
+  0x73,0x65,0x72,0x3c,0x2f,0x68,0x33,0x3e,0xd,0xa,0x3c,0x70,0x3e,0x54,0x68,0x69,\r
+  0x73,0x20,0x77,0x69,0x6e,0x64,0x6f,0x77,0x20,0x70,0x72,0x6f,0x76,0x69,0x64,0x65,\r
+  0x73,0x20,0x61,0x20,0x64,0x69,0x73,0x61,0x73,0x73,0x65,0x6d,0x62,0x6c,0x79,0x20,\r
+  0x6f,0x66,0x20,0x52,0x49,0x53,0x43,0x20,0x6f,0x70,0x63,0x6f,0x64,0x65,0x73,0x2e,\r
+  0x20,0x49,0x74,0x20,0x63,0x61,0x6e,0x20,0x62,0x65,0x20,0x64,0x69,0x73,0x6d,0x69,\r
+  0x73,0x73,0x65,0x64,0x20,0x62,0x79,0x20,0x63,0x6c,0x69,0x63,0x6b,0x69,0x6e,0x67,\r
+  0x20,0x6f,0x6e,0x20,0x74,0x68,0x65,0x20,0x26,0x6c,0x64,0x71,0x75,0x6f,0x3b,0x58,\r
+  0x26,0x72,0x64,0x71,0x75,0x6f,0x3b,0x20,0x69,0x6e,0x20,0x74,0x68,0x65,0x20,0x75,\r
+  0x70,0x70,0x65,0x72,0x20,0x63,0x6f,0x72,0x6e,0x65,0x72,0x20,0x6f,0x66,0x20,0x74,\r
+  0x68,0x65,0x20,0x64,0x69,0x61,0x6c,0x6f,0x67,0x2c,0x20,0x6f,0x72,0x20,0x62,0x79,\r
+  0x20,0x70,0x72,0x65,0x73,0x73,0x69,0x6e,0x67,0x20,0x74,0x68,0x65,0x20,0x3c,0x73,\r
+  0x74,0x72,0x6f,0x6e,0x67,0x3e,0x45,0x73,0x63,0x3c,0x2f,0x73,0x74,0x72,0x6f,0x6e,\r
+  0x67,0x3e,0x20,0x6b,0x65,0x79,0x20,0x6f,0x6e,0x20,0x79,0x6f,0x75,0x72,0x20,0x6b,\r
+  0x65,0x79,0x62,0x6f,0x61,0x72,0x64,0x2e,0x3c,0x2f,0x70,0x3e,0xd,0xa,0x3c,0x70,\r
+  0x3e,0x54,0x68,0x65,0x20,0x61,0x66,0x6f,0x72,0x65,0x6d,0x65,0x6e,0x74,0x69,0x6f,\r
+  0x6e,0x65,0x64,0x20,0x6f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x20,0x77,0x69,0x6c,0x6c,\r
+  0x20,0x6f,0x6e,0x6c,0x79,0x20,0x77,0x6f,0x72,0x6b,0x20,0x77,0x68,0x65,0x6e,0x20,\r
+  0x3c,0x65,0x6d,0x3e,0x56,0x69,0x72,0x74,0x75,0x61,0x6c,0x20,0x4a,0x61,0x67,0x75,\r
+  0x61,0x72,0x3c,0x2f,0x65,0x6d,0x3e,0x20,0x69,0x73,0x20,0x72,0x75,0x6e,0x20,0x69,\r
+  0x6e,0x20,0x41,0x6c,0x70,0x69,0x6e,0x65,0x20,0x6f,0x72,0x20,0x44,0x65,0x62,0x75,\r
+  0x67,0x67,0x65,0x72,0x20,0x6d,0x6f,0x64,0x65,0x2c,0x20,0x74,0x68,0x61,0x74,0x20,\r
+  0x69,0x73,0x2c,0x20,0x77,0x68,0x65,0x6e,0x20,0x74,0x68,0x65,0x20,0x2d,0x2d,0x61,\r
+  0x6c,0x70,0x69,0x6e,0x65,0x20,0x6f,0x72,0x20,0x2d,0x2d,0x64,0x65,0x62,0x75,0x67,\r
+  0x67,0x65,0x72,0x20,0x66,0x6c,0x61,0x67,0x20,0x69,0x73,0x20,0x70,0x61,0x73,0x73,\r
+  0x65,0x64,0x20,0x69,0x6e,0x2e,0x20,0x49,0x66,0x20,0x79,0x6f,0x75,0x20,0x64,0x6f,\r
+  0x20,0x6e,0x6f,0x74,0x20,0x70,0x61,0x73,0x73,0x20,0x73,0x75,0x63,0x68,0x20,0x66,\r
+  0x6c,0x61,0x67,0x2c,0x20,0x3c,0x65,0x6d,0x3e,0x56,0x69,0x72,0x74,0x75,0x61,0x6c,\r
   0x20,0x4a,0x61,0x67,0x75,0x61,0x72,0x3c,0x2f,0x65,0x6d,0x3e,0x20,0x77,0x69,0x6c,\r
-  0x6c,0x20,0x73,0x63,0x61,0x6c,0x65,0x20,0x69,0x74,0x20,0x64,0x6f,0x77,0x6e,0x20,\r
-  0x74,0x6f,0x20,0x33,0x36,0x35,0x20,0x78,0x20,0x31,0x36,0x38,0x20,0x61,0x6e,0x79,\r
-  0x77,0x61,0x79,0x2e,0x3c,0x2f,0x70,0x3e,0xd,0xa,0x3c,0x70,0x3e,0x55,0x73,0x69,\r
-  0x6e,0x67,0x20,0x74,0x68,0x65,0x20,0x5a,0x49,0x50,0x20,0x66,0x69,0x6c,0x65,0x20,\r
-  0x61,0x73,0x20,0x61,0x20,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x20,0x74,\r
-  0x68,0x69,0x73,0x20,0x77,0x61,0x79,0x20,0x6f,0x70,0x65,0x6e,0x73,0x20,0x75,0x70,\r
-  0x20,0x73,0x6f,0x6d,0x65,0x20,0x65,0x78,0x63,0x69,0x74,0x69,0x6e,0x67,0x20,0x70,\r
-  0x6f,0x73,0x73,0x69,0x62,0x69,0x6c,0x69,0x74,0x69,0x65,0x73,0x3a,0x20,0x42,0x6f,\r
-  0x78,0x20,0x61,0x72,0x74,0x2c,0x20,0x6f,0x76,0x65,0x72,0x6c,0x61,0x79,0x73,0x20,\r
-  0x61,0x6e,0x64,0x20,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,\r
-  0x6e,0x20,0x63,0x61,0x6e,0x20,0x62,0x65,0x20,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,\r
-  0x64,0x20,0x61,0x6e,0x64,0x20,0x66,0x75,0x74,0x75,0x72,0x65,0x20,0x76,0x65,0x72,\r
-  0x73,0x69,0x6f,0x6e,0x73,0x20,0x6f,0x66,0x20,0x3c,0x65,0x6d,0x3e,0x56,0x69,0x72,\r
-  0x74,0x75,0x61,0x6c,0x20,0x4a,0x61,0x67,0x75,0x61,0x72,0x3c,0x2f,0x65,0x6d,0x3e,\r
-  0x20,0x77,0x69,0x6c,0x6c,0x20,0x62,0x65,0x20,0x61,0x62,0x6c,0x65,0x20,0x74,0x6f,\r
-  0x20,0x75,0x74,0x69,0x6c,0x69,0x7a,0x65,0x20,0x74,0x68,0x65,0x6d,0x2e,0x3c,0x2f,\r
-  0x70,0x3e,0xd,0xa,0x3c,0x68,0x32,0x3e,0x4c,0x65,0x67,0x61,0x6c,0x20,0x4e,0x69,\r
-  0x67,0x67,0x6c,0x69,0x6e,0x67,0x73,0x3c,0x2f,0x68,0x32,0x3e,0xd,0xa,0x3c,0x70,\r
-  0x3e,0x4f,0x72,0x2c,0x20,0x61,0x73,0x20,0x69,0x74,0x26,0x72,0x73,0x71,0x75,0x6f,\r
-  0x3b,0x73,0x20,0x6d,0x6f,0x72,0x65,0x20,0x63,0x6f,0x6d,0x6d,0x6f,0x6e,0x6c,0x79,\r
-  0x20,0x6b,0x6e,0x6f,0x77,0x6e,0x2c,0x20,0x74,0x68,0x65,0x20,0x64,0x69,0x73,0x63,\r
-  0x6c,0x61,0x69,0x6d,0x65,0x72,0x3a,0x20,0x3c,0x65,0x6d,0x3e,0x26,0x6c,0x64,0x71,\r
-  0x75,0x6f,0x3b,0x4f,0x20,0x6c,0x69,0x61,0x62,0x69,0x6c,0x69,0x74,0x79,0x2c,0x20,\r
-  0x49,0x20,0x64,0x6f,0x20,0x64,0x69,0x73,0x63,0x6c,0x61,0x69,0x6d,0x20,0x74,0x68,\r
-  0x65,0x65,0x21,0x26,0x72,0x64,0x71,0x75,0x6f,0x3b,0x3c,0x2f,0x65,0x6d,0x3e,0x3c,\r
-  0x2f,0x70,0x3e,0xd,0xa,0x3c,0x70,0x3e,0x54,0x72,0x61,0x64,0x65,0x6d,0x61,0x72,\r
-  0x6b,0x73,0x20,0x75,0x73,0x65,0x64,0x20,0x69,0x6e,0x20,0x3c,0x65,0x6d,0x3e,0x56,\r
-  0x69,0x72,0x74,0x75,0x61,0x6c,0x20,0x4a,0x61,0x67,0x75,0x61,0x72,0x3c,0x2f,0x65,\r
-  0x6d,0x3e,0x20,0x61,0x6e,0x64,0x2f,0x6f,0x72,0x20,0x74,0x68,0x69,0x73,0x20,0x64,\r
-  0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x20,0x61,0x72,0x65,\r
-  0x20,0x74,0x68,0x65,0x20,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x20,0x6f,0x66,\r
-  0x20,0x74,0x68,0x65,0x69,0x72,0x20,0x72,0x65,0x73,0x70,0x65,0x63,0x74,0x69,0x76,\r
-  0x65,0x20,0x6f,0x77,0x6e,0x65,0x72,0x73,0x2e,0x20,0x54,0x68,0x65,0x20,0x75,0x73,\r
-  0x65,0x72,0x28,0x73,0x29,0x20,0x6f,0x66,0x20,0x3c,0x65,0x6d,0x3e,0x56,0x69,0x72,\r
-  0x74,0x75,0x61,0x6c,0x20,0x4a,0x61,0x67,0x75,0x61,0x72,0x3c,0x2f,0x65,0x6d,0x3e,\r
-  0x20,0x61,0x73,0x73,0x75,0x6d,0x65,0x73,0x20,0x61,0x6c,0x6c,0x20,0x72,0x69,0x73,\r
-  0x6b,0x20,0x61,0x73,0x73,0x6f,0x63,0x69,0x61,0x74,0x65,0x64,0x20,0x77,0x69,0x74,\r
-  0x68,0x20,0x75,0x73,0x69,0x6e,0x67,0x20,0x74,0x68,0x65,0x20,0x73,0x6f,0x66,0x74,\r
-  0x77,0x61,0x72,0x65,0x3b,0x20,0x74,0x68,0x65,0x20,0x61,0x75,0x74,0x68,0x6f,0x72,\r
-  0x73,0x20,0x61,0x72,0x65,0x20,0x6e,0x6f,0x74,0x20,0x72,0x65,0x73,0x70,0x6f,0x6e,\r
-  0x73,0x69,0x62,0x6c,0x65,0x20,0x66,0x6f,0x72,0x20,0x61,0x6e,0x79,0x74,0x68,0x69,\r
-  0x6e,0x67,0x20,0x74,0x68,0x65,0x20,0x75,0x73,0x65,0x72,0x28,0x73,0x29,0x20,0x64,\r
-  0x6f,0x65,0x73,0x20,0x77,0x69,0x74,0x68,0x20,0x73,0x61,0x69,0x64,0x20,0x73,0x6f,\r
-  0x66,0x74,0x77,0x61,0x72,0x65,0x20,0x6f,0x72,0x20,0x77,0x68,0x61,0x74,0x20,0x68,\r
-  0x61,0x70,0x70,0x65,0x6e,0x73,0x20,0x74,0x6f,0x20,0x74,0x68,0x65,0x20,0x75,0x73,\r
-  0x65,0x72,0x28,0x73,0x29,0x20,0x61,0x73,0x20,0x61,0x20,0x72,0x65,0x73,0x75,0x6c,\r
-  0x74,0x20,0x6f,0x66,0x20,0x75,0x73,0x69,0x6e,0x67,0x20,0x74,0x68,0x69,0x73,0x20,\r
-  0x73,0x6f,0x66,0x74,0x77,0x61,0x72,0x65,0x2e,0x3c,0x2f,0x70,0x3e,0xd,0xa,0x3c,\r
+  0x6c,0x20,0x72,0x75,0x6e,0x20,0x61,0x73,0x20,0x69,0x74,0x20,0x6e,0x6f,0x72,0x6d,\r
+  0x61,0x6c,0x6c,0x79,0x20,0x64,0x6f,0x65,0x73,0x2c,0x20,0x69,0x2e,0x65,0x2e,0x2c,\r
+  0x20,0x61,0x73,0x20,0x61,0x20,0x73,0x74,0x6f,0x63,0x6b,0x20,0x4a,0x61,0x67,0x75,\r
+  0x61,0x72,0x2c,0x20,0x61,0x6e,0x64,0x20,0x6e,0x6f,0x74,0x68,0x69,0x6e,0x67,0x20,\r
+  0x77,0x69,0x6c,0x6c,0x20,0x62,0x65,0x20,0x6c,0x6f,0x61,0x64,0x65,0x64,0x20,0x62,\r
+  0x79,0x20,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x2e,0x3c,0x2f,0x70,0x3e,0xd,0xa,\r
+  0x3c,0x68,0x32,0x3e,0x46,0x6f,0x72,0x20,0x54,0x68,0x65,0x20,0x43,0x75,0x72,0x69,\r
+  0x6f,0x75,0x73,0x3c,0x2f,0x68,0x32,0x3e,0xd,0xa,0x3c,0x70,0x3e,0x49,0x66,0x20,\r
+  0x79,0x6f,0x75,0x26,0x72,0x73,0x71,0x75,0x6f,0x3b,0x72,0x65,0x20,0x77,0x6f,0x6e,\r
+  0x64,0x65,0x72,0x69,0x6e,0x67,0x20,0x77,0x68,0x79,0x20,0x73,0x6f,0x6d,0x65,0x20,\r
+  0x63,0x61,0x72,0x74,0x72,0x69,0x64,0x67,0x65,0x73,0x20,0x68,0x61,0x76,0x65,0x20,\r
+  0x6c,0x61,0x62,0x65,0x6c,0x73,0x20,0x69,0x6e,0x20,0x74,0x68,0x65,0x20,0x26,0x6c,\r
+  0x64,0x71,0x75,0x6f,0x3b,0x49,0x6e,0x73,0x65,0x72,0x74,0x20,0x43,0x61,0x72,0x74,\r
+  0x72,0x69,0x64,0x67,0x65,0x2e,0x2e,0x2e,0x26,0x72,0x64,0x71,0x75,0x6f,0x3b,0x20,\r
+  0x64,0x69,0x61,0x6c,0x6f,0x67,0x75,0x65,0x20,0x61,0x6e,0x64,0x20,0x73,0x6f,0x6d,\r
+  0x65,0x20,0x64,0x6f,0x6e,0x26,0x72,0x73,0x71,0x75,0x6f,0x3b,0x74,0x2c,0x20,0x72,\r
+  0x65,0x61,0x64,0x20,0x6f,0x6e,0x2e,0x2e,0x2e,0x3c,0x2f,0x70,0x3e,0xd,0xa,0x3c,\r
   0x70,0x3e,0x3c,0x65,0x6d,0x3e,0x56,0x69,0x72,0x74,0x75,0x61,0x6c,0x20,0x4a,0x61,\r
-  0x67,0x75,0x61,0x72,0x3c,0x2f,0x65,0x6d,0x3e,0x20,0x69,0x73,0x20,0x46,0x72,0x65,\r
-  0x65,0x20,0x28,0x61,0x73,0x20,0x69,0x6e,0x20,0x4c,0x69,0x62,0x72,0x65,0x29,0x20,\r
-  0x73,0x6f,0x66,0x74,0x77,0x61,0x72,0x65,0x20,0x61,0x6e,0x64,0x20,0x69,0x73,0x20,\r
-  0x6c,0x69,0x63,0x65,0x6e,0x73,0x65,0x64,0x20,0x75,0x6e,0x64,0x65,0x72,0x20,0x74,\r
-  0x68,0x65,0x20,0x47,0x50,0x4c,0x20,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,\r
-  0x2e,0x20,0x59,0x6f,0x75,0x20,0x73,0x68,0x6f,0x75,0x6c,0x64,0x20,0x68,0x61,0x76,\r
-  0x65,0x20,0x72,0x65,0x63,0x65,0x69,0x76,0x65,0x64,0x20,0x61,0x20,0x63,0x6f,0x70,\r
-  0x79,0x20,0x6f,0x66,0x20,0x74,0x68,0x65,0x20,0x6c,0x69,0x63,0x65,0x6e,0x73,0x65,\r
-  0x20,0x77,0x69,0x74,0x68,0x20,0x74,0x68,0x69,0x73,0x20,0x73,0x6f,0x66,0x74,0x77,\r
-  0x61,0x72,0x65,0x3b,0x20,0x69,0x66,0x20,0x79,0x6f,0x75,0x20,0x64,0x69,0x64,0x20,\r
-  0x6e,0x6f,0x74,0x2c,0x20,0x79,0x6f,0x75,0x20,0x6d,0x61,0x79,0x20,0x76,0x69,0x65,\r
-  0x77,0x20,0x61,0x20,0x63,0x6f,0x70,0x79,0x20,0x61,0x74,0x20,0x3c,0x61,0x20,0x68,\r
-  0x72,0x65,0x66,0x3d,0x22,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,\r
-  0x67,0x6e,0x75,0x2e,0x6f,0x72,0x67,0x2f,0x6c,0x69,0x63,0x65,0x6e,0x73,0x65,0x73,\r
-  0x22,0x3e,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x67,0x6e,0x75,\r
-  0x2e,0x6f,0x72,0x67,0x2f,0x6c,0x69,0x63,0x65,0x6e,0x73,0x65,0x73,0x3c,0x2f,0x61,\r
-  0x3e,0x2e,0x20,0x41,0x20,0x63,0x6f,0x70,0x79,0x20,0x6f,0x66,0x20,0x74,0x68,0x65,\r
-  0x20,0x73,0x6f,0x75,0x72,0x63,0x65,0x20,0x63,0x6f,0x64,0x65,0x20,0x69,0x73,0x20,\r
-  0x61,0x76,0x61,0x69,0x6c,0x61,0x62,0x6c,0x65,0x20,0x61,0x74,0x20,0x3c,0x61,0x20,\r
-  0x68,0x72,0x65,0x66,0x3d,0x22,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x69,0x63,0x63,\r
-  0x75,0x6c,0x75,0x73,0x2e,0x6f,0x72,0x67,0x2f,0x76,0x69,0x72,0x74,0x75,0x61,0x6c,\r
-  0x6a,0x61,0x67,0x75,0x61,0x72,0x22,0x3e,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x69,\r
-  0x63,0x63,0x75,0x6c,0x75,0x73,0x2e,0x6f,0x72,0x67,0x2f,0x76,0x69,0x72,0x74,0x75,\r
-  0x61,0x6c,0x6a,0x61,0x67,0x75,0x61,0x72,0x3c,0x2f,0x61,0x3e,0x2e,0x20,0x41,0x20,\r
-  0x63,0x6f,0x70,0x79,0x20,0x6f,0x66,0x20,0x74,0x68,0x65,0x20,0x52,0x78,0x20,0x76,\r
-  0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x73,0x6f,0x75,0x72,0x63,0x65,0x20,0x63,0x6f,\r
-  0x64,0x65,0x20,0x69,0x73,0x20,0x61,0x76,0x61,0x69,0x6c,0x61,0x62,0x6c,0x65,0x20,\r
-  0x61,0x74,0x26,0x6e,0x62,0x73,0x70,0x3b,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,\r
-  0x22,0x68,0x74,0x74,0x70,0x73,0x3a,0x2f,0x2f,0x67,0x69,0x74,0x68,0x75,0x62,0x2e,\r
-  0x63,0x6f,0x6d,0x2f,0x64,0x6a,0x69,0x70,0x69,0x2f,0x56,0x69,0x72,0x74,0x75,0x61,\r
-  0x6c,0x2d,0x4a,0x61,0x67,0x75,0x61,0x72,0x2d,0x52,0x78,0x22,0x3e,0x68,0x74,0x74,\r
-  0x70,0x73,0x3a,0x2f,0x2f,0x67,0x69,0x74,0x68,0x75,0x62,0x2e,0x63,0x6f,0x6d,0x2f,\r
-  0x64,0x6a,0x69,0x70,0x69,0x2f,0x56,0x69,0x72,0x74,0x75,0x61,0x6c,0x2d,0x4a,0x61,\r
-  0x67,0x75,0x61,0x72,0x2d,0x52,0x78,0x3c,0x2f,0x61,0x3e,0x2e,0x3c,0x2f,0x70,0x3e,\r
-  0xd,0xa,0x3c,0x70,0x3e,0x3c,0x65,0x6d,0x3e,0x44,0x6f,0x77,0x6e,0x66,0x61,0x6c,\r
-  0x6c,0x3c,0x2f,0x65,0x6d,0x3e,0x20,0x69,0x73,0x20,0x26,0x63,0x6f,0x70,0x79,0x3b,\r
-  0x20,0x32,0x30,0x31,0x31,0x20,0x3c,0x73,0x74,0x72,0x6f,0x6e,0x67,0x3e,0x52,0x65,\r
-  0x62,0x6f,0x6f,0x74,0x3c,0x2f,0x73,0x74,0x72,0x6f,0x6e,0x67,0x3e,0x2c,0x20,0x41,\r
-  0x6c,0x6c,0x20,0x52,0x69,0x67,0x68,0x74,0x73,0x20,0x52,0x65,0x73,0x65,0x72,0x76,\r
-  0x65,0x64,0x2e,0x20,0x44,0x69,0x73,0x74,0x72,0x69,0x62,0x75,0x74,0x69,0x6f,0x6e,\r
-  0x20,0x6f,0x66,0x20,0x3c,0x65,0x6d,0x3e,0x44,0x6f,0x77,0x6e,0x66,0x61,0x6c,0x6c,\r
-  0x3c,0x2f,0x65,0x6d,0x3e,0x20,0x77,0x69,0x74,0x68,0x20,0x3c,0x65,0x6d,0x3e,0x56,\r
-  0x69,0x72,0x74,0x75,0x61,0x6c,0x20,0x4a,0x61,0x67,0x75,0x61,0x72,0x3c,0x2f,0x65,\r
-  0x6d,0x3e,0x20,0x68,0x61,0x73,0x20,0x62,0x65,0x65,0x6e,0x20,0x67,0x72,0x61,0x63,\r
-  0x69,0x6f,0x75,0x73,0x6c,0x79,0x20,0x61,0x75,0x74,0x68,0x6f,0x72,0x69,0x7a,0x65,\r
-  0x64,0x20,0x62,0x79,0x20,0x3c,0x73,0x74,0x72,0x6f,0x6e,0x67,0x3e,0x52,0x65,0x62,\r
-  0x6f,0x6f,0x74,0x3c,0x2f,0x73,0x74,0x72,0x6f,0x6e,0x67,0x3e,0x2c,0x20,0x61,0x6e,\r
-  0x64,0x20,0x6d,0x61,0x79,0x20,0x6e,0x6f,0x74,0x20,0x62,0x65,0x20,0x64,0x69,0x73,\r
-  0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x64,0x20,0x61,0x73,0x20,0x70,0x61,0x72,0x74,\r
-  0x20,0x6f,0x66,0x20,0x61,0x6e,0x79,0x20,0x6f,0x74,0x68,0x65,0x72,0x20,0x70,0x61,\r
-  0x63,0x6b,0x61,0x67,0x65,0x2e,0x20,0x41,0x73,0x20,0x70,0x72,0x65,0x76,0x69,0x6f,\r
-  0x75,0x73,0x6c,0x79,0x20,0x73,0x74,0x61,0x74,0x65,0x64,0x2c,0x20,0x74,0x68,0x65,\r
-  0x26,0x6e,0x62,0x73,0x70,0x3b,0x52,0x78,0x20,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,\r
-  0x20,0x64,0x6f,0x65,0x73,0x6e,0x27,0x74,0x20,0x68,0x61,0x76,0x65,0x20,0x74,0x68,\r
-  0x65,0x20,0x67,0x61,0x6d,0x65,0x20,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x64,0x2e,\r
-  0x3c,0x2f,0x70,0x3e,0xd,0xa,0x3c,0x2f,0x62,0x6f,0x64,0x79,0x3e,0xd,0xa,0x3c,\r
-  0x2f,0x68,0x74,0x6d,0x6c,0x3e,0xd,0xa,\r
+  0x67,0x75,0x61,0x72,0x3c,0x2f,0x65,0x6d,0x3e,0x20,0x6c,0x6f,0x6f,0x6b,0x73,0x20,\r
+  0x61,0x74,0x20,0x79,0x6f,0x75,0x72,0x20,0x5a,0x49,0x50,0x20,0x66,0x69,0x6c,0x65,\r
+  0x20,0x61,0x73,0x20,0x61,0x20,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x26,\r
+  0x6d,0x64,0x61,0x73,0x68,0x3b,0x69,0x66,0x20,0x69,0x74,0x20,0x66,0x69,0x6e,0x64,\r
+  0x73,0x20,0x77,0x68,0x61,0x74,0x20,0x69,0x74,0x20,0x65,0x78,0x70,0x65,0x63,0x74,\r
+  0x73,0x20,0x69,0x6e,0x20,0x74,0x68,0x65,0x20,0x5a,0x49,0x50,0x2c,0x20,0x69,0x74,\r
+  0x20,0x77,0x69,0x6c,0x6c,0x20,0x75,0x73,0x65,0x20,0x69,0x74,0x2e,0x20,0x46,0x6f,\r
+  0x72,0x20,0x65,0x78,0x61,0x6d,0x70,0x6c,0x65,0x2c,0x20,0x6c,0x61,0x62,0x65,0x6c,\r
+  0x20,0x69,0x6d,0x61,0x67,0x65,0x73,0x3a,0x20,0x49,0x66,0x20,0x79,0x6f,0x75,0x20,\r
+  0x70,0x75,0x74,0x20,0x61,0x6e,0x20,0x69,0x6d,0x61,0x67,0x65,0x20,0x66,0x69,0x6c,\r
+  0x65,0x20,0x6f,0x66,0x20,0x61,0x20,0x63,0x61,0x72,0x74,0x72,0x69,0x64,0x67,0x65,\r
+  0x20,0x6c,0x61,0x62,0x65,0x6c,0x20,0x69,0x6e,0x20,0x74,0x68,0x65,0x20,0x5a,0x49,\r
+  0x50,0x20,0x66,0x69,0x6c,0x65,0x20,0x77,0x69,0x74,0x68,0x20,0x79,0x6f,0x75,0x72,\r
+  0x20,0x52,0x4f,0x4d,0x20,0x69,0x6d,0x61,0x67,0x65,0x2c,0x20,0x3c,0x65,0x6d,0x3e,\r
+  0x56,0x69,0x72,0x74,0x75,0x61,0x6c,0x20,0x4a,0x61,0x67,0x75,0x61,0x72,0x3c,0x2f,\r
+  0x65,0x6d,0x3e,0x20,0x77,0x69,0x6c,0x6c,0x20,0x75,0x73,0x65,0x20,0x74,0x68,0x61,\r
+  0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x20,0x69,0x6e,0x20,0x74,0x68,0x65,0x20,0x26,\r
+  0x6c,0x64,0x71,0x75,0x6f,0x3b,0x49,0x6e,0x73,0x65,0x72,0x74,0x20,0x43,0x61,0x72,\r
+  0x74,0x72,0x69,0x64,0x67,0x65,0x2e,0x2e,0x2e,0x26,0x72,0x64,0x71,0x75,0x6f,0x3b,\r
+  0x20,0x64,0x69,0x61,0x6c,0x6f,0x67,0x75,0x65,0x20,0x26,0x6d,0x64,0x61,0x73,0x68,\r
+  0x3b,0x20,0x61,0x73,0x73,0x75,0x6d,0x69,0x6e,0x67,0x20,0x69,0x74,0x26,0x72,0x73,\r
+  0x71,0x75,0x6f,0x3b,0x73,0x20,0x61,0x20,0x76,0x61,0x6c,0x69,0x64,0x20,0x69,0x6d,\r
+  0x61,0x67,0x65,0x20,0x66,0x69,0x6c,0x65,0x2e,0x20,0x54,0x68,0x65,0x20,0x69,0x6d,\r
+  0x61,0x67,0x65,0x20,0x73,0x68,0x6f,0x75,0x6c,0x64,0x20,0x62,0x65,0x20,0x33,0x36,\r
+  0x35,0x20,0x78,0x20,0x31,0x36,0x38,0x20,0x66,0x6f,0x72,0x20,0x69,0x74,0x20,0x74,\r
+  0x6f,0x20,0x73,0x68,0x6f,0x77,0x20,0x75,0x70,0x20,0x6f,0x6e,0x20,0x74,0x68,0x65,\r
+  0x20,0x62,0x69,0x67,0x20,0x63,0x61,0x72,0x74,0x72,0x69,0x64,0x67,0x65,0x20,0x69,\r
+  0x6d,0x61,0x67,0x65,0x20,0x77,0x69,0x74,0x68,0x6f,0x75,0x74,0x20,0x61,0x6e,0x79,\r
+  0x20,0x73,0x63,0x61,0x6c,0x69,0x6e,0x67,0x3b,0x20,0x61,0x6e,0x79,0x20,0x62,0x69,\r
+  0x67,0x67,0x65,0x72,0x20,0x69,0x73,0x20,0x6a,0x75,0x73,0x74,0x20,0x61,0x20,0x77,\r
+  0x61,0x73,0x74,0x65,0x20,0x6f,0x66,0x20,0x73,0x70,0x61,0x63,0x65,0x20,0x61,0x6e,\r
+  0x64,0x20,0x3c,0x65,0x6d,0x3e,0x56,0x69,0x72,0x74,0x75,0x61,0x6c,0x20,0x4a,0x61,\r
+  0x67,0x75,0x61,0x72,0x3c,0x2f,0x65,0x6d,0x3e,0x20,0x77,0x69,0x6c,0x6c,0x20,0x73,\r
+  0x63,0x61,0x6c,0x65,0x20,0x69,0x74,0x20,0x64,0x6f,0x77,0x6e,0x20,0x74,0x6f,0x20,\r
+  0x33,0x36,0x35,0x20,0x78,0x20,0x31,0x36,0x38,0x20,0x61,0x6e,0x79,0x77,0x61,0x79,\r
+  0x2e,0x3c,0x2f,0x70,0x3e,0xd,0xa,0x3c,0x70,0x3e,0x55,0x73,0x69,0x6e,0x67,0x20,\r
+  0x74,0x68,0x65,0x20,0x5a,0x49,0x50,0x20,0x66,0x69,0x6c,0x65,0x20,0x61,0x73,0x20,\r
+  0x61,0x20,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x20,0x74,0x68,0x69,0x73,\r
+  0x20,0x77,0x61,0x79,0x20,0x6f,0x70,0x65,0x6e,0x73,0x20,0x75,0x70,0x20,0x73,0x6f,\r
+  0x6d,0x65,0x20,0x65,0x78,0x63,0x69,0x74,0x69,0x6e,0x67,0x20,0x70,0x6f,0x73,0x73,\r
+  0x69,0x62,0x69,0x6c,0x69,0x74,0x69,0x65,0x73,0x3a,0x20,0x42,0x6f,0x78,0x20,0x61,\r
+  0x72,0x74,0x2c,0x20,0x6f,0x76,0x65,0x72,0x6c,0x61,0x79,0x73,0x20,0x61,0x6e,0x64,\r
+  0x20,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x20,0x63,\r
+  0x61,0x6e,0x20,0x62,0x65,0x20,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x64,0x20,0x61,\r
+  0x6e,0x64,0x20,0x66,0x75,0x74,0x75,0x72,0x65,0x20,0x76,0x65,0x72,0x73,0x69,0x6f,\r
+  0x6e,0x73,0x20,0x6f,0x66,0x20,0x3c,0x65,0x6d,0x3e,0x56,0x69,0x72,0x74,0x75,0x61,\r
+  0x6c,0x20,0x4a,0x61,0x67,0x75,0x61,0x72,0x3c,0x2f,0x65,0x6d,0x3e,0x20,0x77,0x69,\r
+  0x6c,0x6c,0x20,0x62,0x65,0x20,0x61,0x62,0x6c,0x65,0x20,0x74,0x6f,0x20,0x75,0x74,\r
+  0x69,0x6c,0x69,0x7a,0x65,0x20,0x74,0x68,0x65,0x6d,0x2e,0x3c,0x2f,0x70,0x3e,0xd,\r
+  0xa,0x3c,0x68,0x32,0x3e,0x4c,0x65,0x67,0x61,0x6c,0x20,0x4e,0x69,0x67,0x67,0x6c,\r
+  0x69,0x6e,0x67,0x73,0x3c,0x2f,0x68,0x32,0x3e,0xd,0xa,0x3c,0x70,0x3e,0x4f,0x72,\r
+  0x2c,0x20,0x61,0x73,0x20,0x69,0x74,0x26,0x72,0x73,0x71,0x75,0x6f,0x3b,0x73,0x20,\r
+  0x6d,0x6f,0x72,0x65,0x20,0x63,0x6f,0x6d,0x6d,0x6f,0x6e,0x6c,0x79,0x20,0x6b,0x6e,\r
+  0x6f,0x77,0x6e,0x2c,0x20,0x74,0x68,0x65,0x20,0x64,0x69,0x73,0x63,0x6c,0x61,0x69,\r
+  0x6d,0x65,0x72,0x3a,0x20,0x3c,0x65,0x6d,0x3e,0x26,0x6c,0x64,0x71,0x75,0x6f,0x3b,\r
+  0x4f,0x20,0x6c,0x69,0x61,0x62,0x69,0x6c,0x69,0x74,0x79,0x2c,0x20,0x49,0x20,0x64,\r
+  0x6f,0x20,0x64,0x69,0x73,0x63,0x6c,0x61,0x69,0x6d,0x20,0x74,0x68,0x65,0x65,0x21,\r
+  0x26,0x72,0x64,0x71,0x75,0x6f,0x3b,0x3c,0x2f,0x65,0x6d,0x3e,0x3c,0x2f,0x70,0x3e,\r
+  0xd,0xa,0x3c,0x70,0x3e,0x54,0x72,0x61,0x64,0x65,0x6d,0x61,0x72,0x6b,0x73,0x20,\r
+  0x75,0x73,0x65,0x64,0x20,0x69,0x6e,0x20,0x3c,0x65,0x6d,0x3e,0x56,0x69,0x72,0x74,\r
+  0x75,0x61,0x6c,0x20,0x4a,0x61,0x67,0x75,0x61,0x72,0x3c,0x2f,0x65,0x6d,0x3e,0x20,\r
+  0x61,0x6e,0x64,0x2f,0x6f,0x72,0x20,0x74,0x68,0x69,0x73,0x20,0x64,0x6f,0x63,0x75,\r
+  0x6d,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x20,0x61,0x72,0x65,0x20,0x74,0x68,\r
+  0x65,0x20,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x20,0x6f,0x66,0x20,0x74,0x68,\r
+  0x65,0x69,0x72,0x20,0x72,0x65,0x73,0x70,0x65,0x63,0x74,0x69,0x76,0x65,0x20,0x6f,\r
+  0x77,0x6e,0x65,0x72,0x73,0x2e,0x20,0x54,0x68,0x65,0x20,0x75,0x73,0x65,0x72,0x28,\r
+  0x73,0x29,0x20,0x6f,0x66,0x20,0x3c,0x65,0x6d,0x3e,0x56,0x69,0x72,0x74,0x75,0x61,\r
+  0x6c,0x20,0x4a,0x61,0x67,0x75,0x61,0x72,0x3c,0x2f,0x65,0x6d,0x3e,0x20,0x61,0x73,\r
+  0x73,0x75,0x6d,0x65,0x73,0x20,0x61,0x6c,0x6c,0x20,0x72,0x69,0x73,0x6b,0x20,0x61,\r
+  0x73,0x73,0x6f,0x63,0x69,0x61,0x74,0x65,0x64,0x20,0x77,0x69,0x74,0x68,0x20,0x75,\r
+  0x73,0x69,0x6e,0x67,0x20,0x74,0x68,0x65,0x20,0x73,0x6f,0x66,0x74,0x77,0x61,0x72,\r
+  0x65,0x3b,0x20,0x74,0x68,0x65,0x20,0x61,0x75,0x74,0x68,0x6f,0x72,0x73,0x20,0x61,\r
+  0x72,0x65,0x20,0x6e,0x6f,0x74,0x20,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x69,0x62,\r
+  0x6c,0x65,0x20,0x66,0x6f,0x72,0x20,0x61,0x6e,0x79,0x74,0x68,0x69,0x6e,0x67,0x20,\r
+  0x74,0x68,0x65,0x20,0x75,0x73,0x65,0x72,0x28,0x73,0x29,0x20,0x64,0x6f,0x65,0x73,\r
+  0x20,0x77,0x69,0x74,0x68,0x20,0x73,0x61,0x69,0x64,0x20,0x73,0x6f,0x66,0x74,0x77,\r
+  0x61,0x72,0x65,0x20,0x6f,0x72,0x20,0x77,0x68,0x61,0x74,0x20,0x68,0x61,0x70,0x70,\r
+  0x65,0x6e,0x73,0x20,0x74,0x6f,0x20,0x74,0x68,0x65,0x20,0x75,0x73,0x65,0x72,0x28,\r
+  0x73,0x29,0x20,0x61,0x73,0x20,0x61,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x6f,\r
+  0x66,0x20,0x75,0x73,0x69,0x6e,0x67,0x20,0x74,0x68,0x69,0x73,0x20,0x73,0x6f,0x66,\r
+  0x74,0x77,0x61,0x72,0x65,0x2e,0x3c,0x2f,0x70,0x3e,0xd,0xa,0x3c,0x70,0x3e,0x3c,\r
+  0x65,0x6d,0x3e,0x56,0x69,0x72,0x74,0x75,0x61,0x6c,0x20,0x4a,0x61,0x67,0x75,0x61,\r
+  0x72,0x3c,0x2f,0x65,0x6d,0x3e,0x20,0x69,0x73,0x20,0x46,0x72,0x65,0x65,0x20,0x28,\r
+  0x61,0x73,0x20,0x69,0x6e,0x20,0x4c,0x69,0x62,0x72,0x65,0x29,0x20,0x73,0x6f,0x66,\r
+  0x74,0x77,0x61,0x72,0x65,0x20,0x61,0x6e,0x64,0x20,0x69,0x73,0x20,0x6c,0x69,0x63,\r
+  0x65,0x6e,0x73,0x65,0x64,0x20,0x75,0x6e,0x64,0x65,0x72,0x20,0x74,0x68,0x65,0x20,\r
+  0x47,0x50,0x4c,0x20,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x2e,0x20,0x59,\r
+  0x6f,0x75,0x20,0x73,0x68,0x6f,0x75,0x6c,0x64,0x20,0x68,0x61,0x76,0x65,0x20,0x72,\r
+  0x65,0x63,0x65,0x69,0x76,0x65,0x64,0x20,0x61,0x20,0x63,0x6f,0x70,0x79,0x20,0x6f,\r
+  0x66,0x20,0x74,0x68,0x65,0x20,0x6c,0x69,0x63,0x65,0x6e,0x73,0x65,0x20,0x77,0x69,\r
+  0x74,0x68,0x20,0x74,0x68,0x69,0x73,0x20,0x73,0x6f,0x66,0x74,0x77,0x61,0x72,0x65,\r
+  0x3b,0x20,0x69,0x66,0x20,0x79,0x6f,0x75,0x20,0x64,0x69,0x64,0x20,0x6e,0x6f,0x74,\r
+  0x2c,0x20,0x79,0x6f,0x75,0x20,0x6d,0x61,0x79,0x20,0x76,0x69,0x65,0x77,0x20,0x61,\r
+  0x20,0x63,0x6f,0x70,0x79,0x20,0x61,0x74,0x20,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,\r
+  0x3d,0x22,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x67,0x6e,0x75,\r
+  0x2e,0x6f,0x72,0x67,0x2f,0x6c,0x69,0x63,0x65,0x6e,0x73,0x65,0x73,0x22,0x3e,0x68,\r
+  0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x67,0x6e,0x75,0x2e,0x6f,0x72,\r
+  0x67,0x2f,0x6c,0x69,0x63,0x65,0x6e,0x73,0x65,0x73,0x3c,0x2f,0x61,0x3e,0x2e,0x20,\r
+  0x41,0x20,0x63,0x6f,0x70,0x79,0x20,0x6f,0x66,0x20,0x74,0x68,0x65,0x20,0x73,0x6f,\r
+  0x75,0x72,0x63,0x65,0x20,0x63,0x6f,0x64,0x65,0x20,0x69,0x73,0x20,0x61,0x76,0x61,\r
+  0x69,0x6c,0x61,0x62,0x6c,0x65,0x20,0x61,0x74,0x20,0x3c,0x61,0x20,0x68,0x72,0x65,\r
+  0x66,0x3d,0x22,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x69,0x63,0x63,0x75,0x6c,0x75,\r
+  0x73,0x2e,0x6f,0x72,0x67,0x2f,0x76,0x69,0x72,0x74,0x75,0x61,0x6c,0x6a,0x61,0x67,\r
+  0x75,0x61,0x72,0x22,0x3e,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x69,0x63,0x63,0x75,\r
+  0x6c,0x75,0x73,0x2e,0x6f,0x72,0x67,0x2f,0x76,0x69,0x72,0x74,0x75,0x61,0x6c,0x6a,\r
+  0x61,0x67,0x75,0x61,0x72,0x3c,0x2f,0x61,0x3e,0x2e,0x20,0x41,0x20,0x63,0x6f,0x70,\r
+  0x79,0x20,0x6f,0x66,0x20,0x74,0x68,0x65,0x20,0x52,0x78,0x20,0x76,0x65,0x72,0x73,\r
+  0x69,0x6f,0x6e,0x20,0x73,0x6f,0x75,0x72,0x63,0x65,0x20,0x63,0x6f,0x64,0x65,0x20,\r
+  0x69,0x73,0x20,0x61,0x76,0x61,0x69,0x6c,0x61,0x62,0x6c,0x65,0x20,0x61,0x74,0x26,\r
+  0x6e,0x62,0x73,0x70,0x3b,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x68,0x74,\r
+  0x74,0x70,0x73,0x3a,0x2f,0x2f,0x67,0x69,0x74,0x68,0x75,0x62,0x2e,0x63,0x6f,0x6d,\r
+  0x2f,0x64,0x6a,0x69,0x70,0x69,0x2f,0x56,0x69,0x72,0x74,0x75,0x61,0x6c,0x2d,0x4a,\r
+  0x61,0x67,0x75,0x61,0x72,0x2d,0x52,0x78,0x22,0x3e,0x68,0x74,0x74,0x70,0x73,0x3a,\r
+  0x2f,0x2f,0x67,0x69,0x74,0x68,0x75,0x62,0x2e,0x63,0x6f,0x6d,0x2f,0x64,0x6a,0x69,\r
+  0x70,0x69,0x2f,0x56,0x69,0x72,0x74,0x75,0x61,0x6c,0x2d,0x4a,0x61,0x67,0x75,0x61,\r
+  0x72,0x2d,0x52,0x78,0x3c,0x2f,0x61,0x3e,0x2e,0x3c,0x2f,0x70,0x3e,0xd,0xa,0x3c,\r
+  0x70,0x3e,0x3c,0x65,0x6d,0x3e,0x44,0x6f,0x77,0x6e,0x66,0x61,0x6c,0x6c,0x3c,0x2f,\r
+  0x65,0x6d,0x3e,0x20,0x69,0x73,0x20,0x26,0x63,0x6f,0x70,0x79,0x3b,0x20,0x32,0x30,\r
+  0x31,0x31,0x20,0x3c,0x73,0x74,0x72,0x6f,0x6e,0x67,0x3e,0x52,0x65,0x62,0x6f,0x6f,\r
+  0x74,0x3c,0x2f,0x73,0x74,0x72,0x6f,0x6e,0x67,0x3e,0x2c,0x20,0x41,0x6c,0x6c,0x20,\r
+  0x52,0x69,0x67,0x68,0x74,0x73,0x20,0x52,0x65,0x73,0x65,0x72,0x76,0x65,0x64,0x2e,\r
+  0x20,0x44,0x69,0x73,0x74,0x72,0x69,0x62,0x75,0x74,0x69,0x6f,0x6e,0x20,0x6f,0x66,\r
+  0x20,0x3c,0x65,0x6d,0x3e,0x44,0x6f,0x77,0x6e,0x66,0x61,0x6c,0x6c,0x3c,0x2f,0x65,\r
+  0x6d,0x3e,0x20,0x77,0x69,0x74,0x68,0x20,0x3c,0x65,0x6d,0x3e,0x56,0x69,0x72,0x74,\r
+  0x75,0x61,0x6c,0x20,0x4a,0x61,0x67,0x75,0x61,0x72,0x3c,0x2f,0x65,0x6d,0x3e,0x20,\r
+  0x68,0x61,0x73,0x20,0x62,0x65,0x65,0x6e,0x20,0x67,0x72,0x61,0x63,0x69,0x6f,0x75,\r
+  0x73,0x6c,0x79,0x20,0x61,0x75,0x74,0x68,0x6f,0x72,0x69,0x7a,0x65,0x64,0x20,0x62,\r
+  0x79,0x20,0x3c,0x73,0x74,0x72,0x6f,0x6e,0x67,0x3e,0x52,0x65,0x62,0x6f,0x6f,0x74,\r
+  0x3c,0x2f,0x73,0x74,0x72,0x6f,0x6e,0x67,0x3e,0x2c,0x20,0x61,0x6e,0x64,0x20,0x6d,\r
+  0x61,0x79,0x20,0x6e,0x6f,0x74,0x20,0x62,0x65,0x20,0x64,0x69,0x73,0x74,0x72,0x69,\r
+  0x62,0x75,0x74,0x65,0x64,0x20,0x61,0x73,0x20,0x70,0x61,0x72,0x74,0x20,0x6f,0x66,\r
+  0x20,0x61,0x6e,0x79,0x20,0x6f,0x74,0x68,0x65,0x72,0x20,0x70,0x61,0x63,0x6b,0x61,\r
+  0x67,0x65,0x2e,0x20,0x41,0x73,0x20,0x70,0x72,0x65,0x76,0x69,0x6f,0x75,0x73,0x6c,\r
+  0x79,0x20,0x73,0x74,0x61,0x74,0x65,0x64,0x2c,0x20,0x74,0x68,0x65,0x26,0x6e,0x62,\r
+  0x73,0x70,0x3b,0x52,0x78,0x20,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x64,0x6f,\r
+  0x65,0x73,0x6e,0x27,0x74,0x20,0x68,0x61,0x76,0x65,0x20,0x74,0x68,0x65,0x20,0x67,\r
+  0x61,0x6d,0x65,0x20,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x64,0x2e,0x3c,0x2f,0x70,\r
+  0x3e,0xd,0xa,0x3c,0x2f,0x62,0x6f,0x64,0x79,0x3e,0xd,0xa,0x3c,0x2f,0x68,0x74,\r
+  0x6d,0x6c,0x3e,0xd,0xa,\r
     // C:/Projects/Emulators/Virtual-Jaguar-Rx/res/debug-callstack.png\r
   0x0,0x0,0x4,0x80,\r
   0x89,\r
@@ -75429,7 +75431,7 @@ static const unsigned char qt_resource_struct[] = {
 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0x9b,\r
   // :/res/help.html\r
   0x0,0x0,0x7,0x14,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x11,0xc8,0xc8,\r
-0x0,0x0,0x1,0x6c,0x75,0x17,0x9b,0x57,\r
+0x0,0x0,0x1,0x6c,0x8d,0xcf,0x1a,0xbf,\r
   // :/res/test-pattern-pal.jpg\r
   0x0,0x0,0x4,0xc6,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0xf,0xcb,0xad,\r
 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0xa1,\r
@@ -75566,7 +75568,7 @@ static const unsigned char qt_resource_struct[] = {
   0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x3,0x1a,0x27,\r
 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0xa0,\r
   // :/res/debug-callstack.png\r
-  0x0,0x0,0x7,0x2c,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x12,0x46,0x95,\r
+  0x0,0x0,0x7,0x2c,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x12,0x46,0xb2,\r
 0x0,0x0,0x1,0x65,0x8e,0x7f,0x88,0xdf,\r
 \r
 };\r
index 5f965e3..06040bb 100644 (file)
@@ -1,6 +1,12 @@
-Release 4 (TBD)
----------------
-Git commit: TBD
+Release 4a (TBA)
+----------------
+Git commit: 
+-
+0) Fix specific breakpoint for ROM cartridge or unknown memory location writing
+
+Release 4 (10th August 2019)
+----------------------------
+Git commit: 9b25d85d1ea4a9476b83476bcec65e05464f68da
 -
 0) The zoom value setting has been fixed in the registry
 1) Debugger mode now shares the same alpine rom path setting
index d0b7ba1..47649cf 100644 (file)
 <h3>Stack Browser</h3>
 <p>This window lets you inspect <em>Virtual Jaguar</em>&rsquo;s emulated memory stack (SP) space. The <strong>PgDn</strong> key will advance the top of the window&rsquo;s memory location by 480 bytes, and <strong>PgUp</strong> will go back by the same amount. The <strong>Plus (+)</strong> key will advance the top of the window&rsquo;s memory location by 16 bytes, and <strong>Minus (-)</strong> will go back by the same amount. Entering a memory location, in hexadecimal, in the edit field and pressing the <strong>Go</strong> button will display memory from that location. It can be dismissed by clicking on the &ldquo;X&rdquo; in the upper corner of the dialog, or by pressing the <strong>Esc</strong> key on your keyboard.</p>
 <h3>CPU Browser</h3>
-<p>This window shows the state of the various CPUs in the emulated Jaguar, a breakpoint can also be set via the BPM setting. The window can be dismissed by clicking on the &ldquo;X&rdquo; in the upper corner of the dialog, or by pressing the <strong>Esc</strong> key on your keyboard.</p>
+<p>This window shows the state of the various CPUs in the emulated Jaguar; a memory breakpoint (read &Aacute; write) can also be set via the BPM setting. The window can be dismissed by clicking on the &ldquo;X&rdquo; in the upper corner of the dialog, or by pressing the <strong>Esc</strong> key on your keyboard.</p>
 <h3>OP Browser</h3>
 <p>This window shows the current state of object list that the Object Processor is pointing to. Note that most of the time, this will likely show an object list that has had its objects processed. It can be dismissed by clicking on the &ldquo;X&rdquo; in the upper corner of the dialog, or by pressing the <strong>Esc</strong> key on your keyboard.</p>
 <h3>M68K Disassembly Browser</h3>
index fe3aa9b..638cfe3 100644 (file)
@@ -1460,7 +1460,7 @@ unsigned int m68k_read_memory_32(unsigned int address)
 }
 
 
-//
+// Alert message in case of writing to unknown memory location
 bool m68k_write_unknown_alert(unsigned int address, char *bits, unsigned int value)
 {
        QString msg;
@@ -1468,58 +1468,55 @@ bool m68k_write_unknown_alert(unsigned int address, char *bits, unsigned int val
 
        msg.sprintf("$%06x: Writing at this unknown memory location $%06x with a (%s bits) value of $%0x", pcQueue[pcQPtr ? (pcQPtr - 1) : 0x3FF], address, bits, value);
        msgBox.setText(msg);
-       msgBox.setStandardButtons(QMessageBox::Cancel);
-       msgBox.setDefaultButton(QMessageBox::Cancel);
+       msgBox.setStandardButtons(QMessageBox::Abort);
+       msgBox.setDefaultButton(QMessageBox::Abort);
        msgBox.exec();
        return M68KDebugHalt();
 }
 
 
-// 
+// Alert message in case of writing to cartridge/ROM memory location
 bool m68k_write_cartridge_alert(unsigned int address, char *bits, unsigned int value)
 {
-       QString msg;
-       QMessageBox msgBox;
+       if (!M68KDebugHaltStatus())
+       {
+               QString msg;
+               QMessageBox msgBox;
 
-       msg.sprintf("$%06x: Writing at this ROM cartridge location $%06x with a (%s bits) value of $%0x", pcQueue[pcQPtr ? (pcQPtr - 1) : 0x3FF], address, bits, value);
-#if 1
-       msgBox.setText(msg);
+               msg.sprintf("$%06x: Writing at this ROM cartridge location $%06x with a (%s bits) value of $%0x", pcQueue[pcQPtr ? (pcQPtr - 1) : 0x3FF], address, bits, value);
+               msgBox.setText(msg);
 
-       if (!M68KDebugHaltStatus() && !strstr(bits, "32"))
-       {
                msgBox.setInformativeText("Do you want to continue?");
-               msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
-               msgBox.setDefaultButton(QMessageBox::Cancel);
-       }
-       else
-       {
-               msgBox.setStandardButtons(QMessageBox::Cancel);
-               msgBox.setDefaultButton(QMessageBox::Cancel);
-       }
+               msgBox.setStandardButtons(QMessageBox::Yes | QMessageBox::No);
+               msgBox.setDefaultButton(QMessageBox::No);
 
-       int retVal = msgBox.exec();
-#endif
-#if 0
-       QMessageBox::StandardButton retVal = QMessageBox::question(this, tr("Remove Mapping"), msg, QMessageBox::No | QMessageBox::Yes, QMessageBox::No);
-#endif
+               int retVal = msgBox.exec();
 
-       if (retVal == QMessageBox::Ok)
-       {
-               return false;
+               if (retVal == QMessageBox::Yes)
+               {
+                       return false;
+               }
+               else
+               {
+                       return M68KDebugHalt();
+               }
        }
        else
        {
-               return M68KDebugHalt();
+               return 1;
        }
 }
 
 
-// 
+// Check memory write location
+// BPM & cartridge/ROM detections
 bool m68k_write_memory_check(unsigned int address, char *bits, unsigned int value)
 {
+       unsigned int address1;
+
 #ifdef ALPINE_FUNCTIONS
        // Check if breakpoint on memory is active, and deal with it
-       if (bpmActive && (address == bpmAddress1))
+       if (!M68KDebugHaltStatus() && bpmActive && (address == bpmAddress1))
        {
                return M68KDebugHalt();
        }
@@ -1527,223 +1524,203 @@ bool m68k_write_memory_check(unsigned int address, char *bits, unsigned int valu
 #endif
        {
                // Rom writing authorisation detection
-               if (!vjs.allowWritesToROM && ((address >= 0x800000) && (address < 0xDFFF00)))
-               {
-                       return m68k_write_cartridge_alert(address, bits, value);
-               }
-               else
+               if (!vjs.allowWritesToROM)
                {
-                       //if ((address & 0xFF000000))
-                       //{
-                       //      return m68k_write_unknown_alert(address, bits, value);
-                       //}
-                       //else
-                       //{
-                               return false;
-                       //}
+                       // Calcul the end address
+                       if (strstr(bits, "32"))
+                       {
+                               address1 = address + 3;
+                       }
+                       else
+                       {
+                               if (strstr(bits, "16"))
+                               {
+                                       address1 = address + 1;
+                               }
+                               else
+                               {
+                                       address1 = address;
+                               }
+                       }
+
+                       // Rom writing detection
+                       if ((address >= 0x800000) && (address1 < 0xDFFF00))
+                       {
+                               return m68k_write_cartridge_alert(address, bits, value);
+                       }
                }
+
+               return false;
        }
 }
 
 
-// 
+// Memory write location on 8 bits
 void m68k_write_memory_8(unsigned int address, unsigned int value)
 {
-#if 1
-       m68k_write_memory_check(address, "8", value);
-#else
-#ifdef ALPINE_FUNCTIONS
-       // Check if breakpoint on memory is active, and deal with it
-       if (bpmActive && (address == bpmAddress1))
-       {
-               M68KDebugHalt();
-       }
-       else
-#endif
+       // Check memory write location on 8 bits
+       if (!m68k_write_memory_check(address, "8", value))
        {
-               // Rom writing authorisation detection
-               if (!vjs.allowWritesToROM && ((address >= 0x800000) && (address < 0xe00000)))
-               {
-                       m68k_write_cartridge_alert(address, "8", value);
-               }
-       }
-#endif
-
-       // Musashi does this automagically for you, UAE core does not :-P
-       //address &= 0x00FFFFFF;
+               // Musashi does this automagically for you, UAE core does not :-P
+               //address &= 0x00FFFFFF;
 #ifdef CPU_DEBUG_MEMORY
        // Note that the Jaguar only has 2M of RAM, not 4!
-       if ((address >= 0x000000) && (address <= 0x1FFFFF))
-       {
-               if (startMemLog)
+               if ((address >= 0x000000) && (address <= 0x1FFFFF))
                {
-                       if (value > writeMemMax[address])
-                               writeMemMax[address] = value;
-                       if (value < writeMemMin[address])
-                               writeMemMin[address] = value;
+                       if (startMemLog)
+                       {
+                               if (value > writeMemMax[address])
+                                       writeMemMax[address] = value;
+                               if (value < writeMemMin[address])
+                                       writeMemMin[address] = value;
+                       }
                }
-       }
 #endif
-/*if (address == 0x4E00)
-       WriteLog("M68K: Writing %02X at %08X, PC=%08X\n", value, address, m68k_get_reg(NULL, M68K_REG_PC));//*/
-//if ((address >= 0x1FF020 && address <= 0x1FF03F) || (address >= 0x1FF820 && address <= 0x1FF83F))
-//     WriteLog("M68K: Writing %02X at %08X\n", value, address);
-//WriteLog("[WM8  PC=%08X] Addr: %08X, val: %02X\n", m68k_get_reg(NULL, M68K_REG_PC), address, value);
-/*if (effect_start)
-       if (address >= 0x18FA70 && address < (0x18FA70 + 8000))
-               WriteLog("M68K: Byte %02X written at %08X by 68K\n", value, address);//*/
-//$53D0
-/*if (address >= 0x53D0 && address <= 0x53FF)
-       printf("M68K: Writing byte $%02X at $%08X, PC=$%08X\n", value, address, m68k_get_reg(NULL, M68K_REG_PC));//*/
-//Testing AvP on UAE core...
-//000075A0: FFFFF80E B6320220 (BITMAP)
-/*if (address == 0x75A0 && value == 0xFF)
-       printf("M68K: (8) Tripwire hit...\n");//*/
+               /*if (address == 0x4E00)
+                       WriteLog("M68K: Writing %02X at %08X, PC=%08X\n", value, address, m68k_get_reg(NULL, M68K_REG_PC));//*/
+                       //if ((address >= 0x1FF020 && address <= 0x1FF03F) || (address >= 0x1FF820 && address <= 0x1FF83F))
+                       //      WriteLog("M68K: Writing %02X at %08X\n", value, address);
+                       //WriteLog("[WM8  PC=%08X] Addr: %08X, val: %02X\n", m68k_get_reg(NULL, M68K_REG_PC), address, value);
+                       /*if (effect_start)
+                               if (address >= 0x18FA70 && address < (0x18FA70 + 8000))
+                                       WriteLog("M68K: Byte %02X written at %08X by 68K\n", value, address);//*/
+                                       //$53D0
+                                       /*if (address >= 0x53D0 && address <= 0x53FF)
+                                               printf("M68K: Writing byte $%02X at $%08X, PC=$%08X\n", value, address, m68k_get_reg(NULL, M68K_REG_PC));//*/
+                                               //Testing AvP on UAE core...
+                                               //000075A0: FFFFF80E B6320220 (BITMAP)
+                                               /*if (address == 0x75A0 && value == 0xFF)
+                                                       printf("M68K: (8) Tripwire hit...\n");//*/
 
 #ifndef USE_NEW_MMU
-       // Note that the Jaguar only has 2M of RAM, not 4!
-       if ((address >= 0x000000) && (address <= (vjs.DRAM_size - 1)))
-       {
-               jaguarMainRAM[address] = value;
-       }
-       else
-       {
-               if ((address >= 0xDFFF00) && (address <= 0xDFFFFF))
+                                                       // Note that the Jaguar only has 2M of RAM, not 4!
+               if ((address >= 0x000000) && (address <= (vjs.DRAM_size - 1)))
                {
-                       CDROMWriteByte(address, value, M68K);
+                       jaguarMainRAM[address] = value;
                }
                else
                {
-                       if ((address >= 0xF00000) && (address <= 0xF0FFFF))
+                       if ((address >= 0xDFFF00) && (address <= 0xDFFFFF))
                        {
-                               TOMWriteByte(address, value, M68K);
+                               CDROMWriteByte(address, value, M68K);
                        }
                        else
                        {
-                               if ((address >= 0xF10000) && (address <= 0xF1FFFF))
+                               if ((address >= 0xF00000) && (address <= 0xF0FFFF))
                                {
-                                       JERRYWriteByte(address, value, M68K);
+                                       TOMWriteByte(address, value, M68K);
                                }
                                else
                                {
-                                       jaguar_unknown_writebyte(address, value, M68K);
+                                       if ((address >= 0xF10000) && (address <= 0xF1FFFF))
+                                       {
+                                               JERRYWriteByte(address, value, M68K);
+                                       }
+                                       else
+                                       {
+                                               if ((address >= 0x800000) && (address <= 0xDFFEFF))
+                                               {
+                                                       jagMemSpace[address] = (uint8_t)value;
+                                               }
+                                               else
+                                               {
+                                                       jaguar_unknown_writebyte(address, value, M68K);
+                                               }
+                                       }
                                }
                        }
                }
-       }
 #else
-       MMUWrite8(address, value, M68K);
+               MMUWrite8(address, value, M68K);
 #endif
+       }
 }
 
 
-// 
+// Memory write location on 16 bits
 void m68k_write_memory_16(unsigned int address, unsigned int value)
 {
-#if 1
-       if (!M68KDebugHaltStatus())
-       {
-               m68k_write_memory_check(address, "16", value);
-       }
-#else
-#ifdef ALPINE_FUNCTIONS
-       // Check if breakpoint on memory is active, and deal with it
-       if (bpmActive && address == bpmAddress1)
-       {
-               M68KDebugHalt();
-       }
-       else
-#endif
+       // Check memory write location on 16 bits
+       if (!m68k_write_memory_check(address, "16", value))
        {
-               // Rom writing authorisation detection
-               if (!vjs.allowWritesToROM && ((address >= 0x800000) && (address < 0xe00000)))
-               {
-                       if (!M68KDebugHaltStatus())
-                       {
-                               m68k_write_cartridge_alert(address, "16", value);
-                       }
-               }
-       }
-#endif
-
-       // Musashi does this automagically for you, UAE core does not :-P
-       //address &= 0x00FFFFFF;
+               // Musashi does this automagically for you, UAE core does not :-P
+               //address &= 0x00FFFFFF;
 #ifdef CPU_DEBUG_MEMORY
        // Note that the Jaguar only has 2M of RAM, not 4!
-       if ((address >= 0x000000) && (address <= 0x1FFFFE))
-       {
-               if (startMemLog)
+               if ((address >= 0x000000) && (address <= 0x1FFFFE))
                {
-                       uint8_t hi = value >> 8, lo = value & 0xFF;
+                       if (startMemLog)
+                       {
+                               uint8_t hi = value >> 8, lo = value & 0xFF;
 
-                       if (hi > writeMemMax[address])
-                               writeMemMax[address] = hi;
-                       if (hi < writeMemMin[address])
-                               writeMemMin[address] = hi;
+                               if (hi > writeMemMax[address])
+                                       writeMemMax[address] = hi;
+                               if (hi < writeMemMin[address])
+                                       writeMemMin[address] = hi;
 
-                       if (lo > writeMemMax[address+1])
-                               writeMemMax[address+1] = lo;
-                       if (lo < writeMemMin[address+1])
-                               writeMemMin[address+1] = lo;
+                               if (lo > writeMemMax[address + 1])
+                                       writeMemMax[address + 1] = lo;
+                               if (lo < writeMemMin[address + 1])
+                                       writeMemMin[address + 1] = lo;
+                       }
                }
-       }
 #endif
-/*if (address == 0x4E00)
-       WriteLog("M68K: Writing %02X at %08X, PC=%08X\n", value, address, m68k_get_reg(NULL, M68K_REG_PC));//*/
-//if ((address >= 0x1FF020 && address <= 0x1FF03F) || (address >= 0x1FF820 && address <= 0x1FF83F))
-//     WriteLog("M68K: Writing %04X at %08X\n", value, address);
-//WriteLog("[WM16 PC=%08X] Addr: %08X, val: %04X\n", m68k_get_reg(NULL, M68K_REG_PC), address, value);
-//if (address >= 0xF02200 && address <= 0xF0229F)
-//     WriteLog("M68K: Writing to blitter --> %04X at %08X\n", value, address);
-//if (address >= 0x0E75D0 && address <= 0x0E75E7)
-//     WriteLog("M68K: Writing %04X at %08X, M68K PC=%08X\n", value, address, m68k_get_reg(NULL, M68K_REG_PC));
-/*extern uint32_t totalFrames;
-if (address == 0xF02114)
-       WriteLog("M68K: Writing to GPU_CTRL (frame:%u)... [M68K PC:%08X]\n", totalFrames, m68k_get_reg(NULL, M68K_REG_PC));
-if (address == 0xF02110)
-       WriteLog("M68K: Writing to GPU_PC (frame:%u)... [M68K PC:%08X]\n", totalFrames, m68k_get_reg(NULL, M68K_REG_PC));//*/
-//if (address >= 0xF03B00 && address <= 0xF03DFF)
-//     WriteLog("M68K: Writing %04X to %08X...\n", value, address);
-
-/*if (address == 0x0100)//64*4)
-       WriteLog("M68K: Wrote word to VI vector value %04X...\n", value);//*/
-/*if (effect_start)
-       if (address >= 0x18FA70 && address < (0x18FA70 + 8000))
-               WriteLog("M68K: Word %04X written at %08X by 68K\n", value, address);//*/
-/*     if (address == 0x51136 || address == 0x51138 || address == 0xFB074 || address == 0xFB076
-               || address == 0x1AF05E)
-               WriteLog("[WM16  PC=%08X] Addr: %08X, val: %04X\n", m68k_get_reg(NULL, M68K_REG_PC), address, value);//*/
-//$53D0
-/*if (address >= 0x53D0 && address <= 0x53FF)
-       printf("M68K: Writing word $%04X at $%08X, PC=$%08X\n", value, address, m68k_get_reg(NULL, M68K_REG_PC));//*/
-//Testing AvP on UAE core...
-//000075A0: FFFFF80E B6320220 (BITMAP)
-/*if (address == 0x75A0 && value == 0xFFFF)
-{
-       printf("\nM68K: (16) Tripwire hit...\n");
-       ShowM68KContext();
-}//*/
+               /*if (address == 0x4E00)
+                       WriteLog("M68K: Writing %02X at %08X, PC=%08X\n", value, address, m68k_get_reg(NULL, M68K_REG_PC));//*/
+                       //if ((address >= 0x1FF020 && address <= 0x1FF03F) || (address >= 0x1FF820 && address <= 0x1FF83F))
+                       //      WriteLog("M68K: Writing %04X at %08X\n", value, address);
+                       //WriteLog("[WM16 PC=%08X] Addr: %08X, val: %04X\n", m68k_get_reg(NULL, M68K_REG_PC), address, value);
+                       //if (address >= 0xF02200 && address <= 0xF0229F)
+                       //      WriteLog("M68K: Writing to blitter --> %04X at %08X\n", value, address);
+                       //if (address >= 0x0E75D0 && address <= 0x0E75E7)
+                       //      WriteLog("M68K: Writing %04X at %08X, M68K PC=%08X\n", value, address, m68k_get_reg(NULL, M68K_REG_PC));
+                       /*extern uint32_t totalFrames;
+                       if (address == 0xF02114)
+                               WriteLog("M68K: Writing to GPU_CTRL (frame:%u)... [M68K PC:%08X]\n", totalFrames, m68k_get_reg(NULL, M68K_REG_PC));
+                       if (address == 0xF02110)
+                               WriteLog("M68K: Writing to GPU_PC (frame:%u)... [M68K PC:%08X]\n", totalFrames, m68k_get_reg(NULL, M68K_REG_PC));//*/
+                               //if (address >= 0xF03B00 && address <= 0xF03DFF)
+                               //      WriteLog("M68K: Writing %04X to %08X...\n", value, address);
+
+                               /*if (address == 0x0100)//64*4)
+                                       WriteLog("M68K: Wrote word to VI vector value %04X...\n", value);//*/
+                                       /*if (effect_start)
+                                               if (address >= 0x18FA70 && address < (0x18FA70 + 8000))
+                                                       WriteLog("M68K: Word %04X written at %08X by 68K\n", value, address);//*/
+                                                       /*      if (address == 0x51136 || address == 0x51138 || address == 0xFB074 || address == 0xFB076
+                                                                       || address == 0x1AF05E)
+                                                                       WriteLog("[WM16  PC=%08X] Addr: %08X, val: %04X\n", m68k_get_reg(NULL, M68K_REG_PC), address, value);//*/
+                                                                       //$53D0
+                                                                       /*if (address >= 0x53D0 && address <= 0x53FF)
+                                                                               printf("M68K: Writing word $%04X at $%08X, PC=$%08X\n", value, address, m68k_get_reg(NULL, M68K_REG_PC));//*/
+                                                                               //Testing AvP on UAE core...
+                                                                               //000075A0: FFFFF80E B6320220 (BITMAP)
+                                                                               /*if (address == 0x75A0 && value == 0xFFFF)
+                                                                               {
+                                                                                       printf("\nM68K: (16) Tripwire hit...\n");
+                                                                                       ShowM68KContext();
+                                                                               }//*/
 
 #ifndef USE_NEW_MMU
-       // Note that the Jaguar only has 2M of RAM, not 4!
-       if ((address >= 0x000000) && (address <= (vjs.DRAM_size - 2)))
-       {
-/*             jaguar_mainRam[address] = value >> 8;
-               jaguar_mainRam[address + 1] = value & 0xFF;*/
-               SET16(jaguarMainRAM, address, value);
-       }
-       // Memory Track device writes....
-       else
-       {
-               if ((address >= 0x800000) && (address <= 0x87FFFE))
+                                                                               // Note that the Jaguar only has 2M of RAM, not 4!
+               if ((address >= 0x000000) && (address <= (vjs.DRAM_size - 2)))
                {
-                       if (((TOMGetMEMCON1() & 0x0006) == (2 << 1)) && (jaguarMainROMCRC32 == 0xFDF37F47))
-                       {
-                               MTWriteWord(address, value);
-                       }
+                       /*              jaguar_mainRam[address] = value >> 8;
+                                       jaguar_mainRam[address + 1] = value & 0xFF;*/
+                       SET16(jaguarMainRAM, address, value);
                }
                else
                {
+                       // Memory Track device writes....
+                       if ((address >= 0x800000) && (address <= 0x87FFFE))
+                       {
+                               if (((TOMGetMEMCON1() & 0x0006) == (2 << 1)) && (jaguarMainROMCRC32 == 0xFDF37F47))
+                               {
+                                       MTWriteWord(address, value);
+                                       return;
+                               }
+                       }
+
                        if ((address >= 0xDFFF00) && (address <= 0xDFFFFE))
                        {
                                CDROMWriteWord(address, value, M68K);
@@ -1762,76 +1739,65 @@ if (address == 0xF02110)
                                        }
                                        else
                                        {
-                                               jaguar_unknown_writeword(address, value, M68K);
+                                               if ((address >= 0x800000) && (address <= 0xDFFEFE))
+                                               {
+                                                       SET16(jagMemSpace, address, value);
+                                               }
+                                               else
+                                               {
+                                                       jaguar_unknown_writeword(address, value, M68K);
 #ifdef LOG_UNMAPPED_MEMORY_ACCESSES
-                                               WriteLog("\tA0=%08X, A1=%08X, D0=%08X, D1=%08X\n",
-                                                       m68k_get_reg(NULL, M68K_REG_A0), m68k_get_reg(NULL, M68K_REG_A1),
-                                                       m68k_get_reg(NULL, M68K_REG_D0), m68k_get_reg(NULL, M68K_REG_D1));
+                                                       WriteLog("\tA0=%08X, A1=%08X, D0=%08X, D1=%08X\n", m68k_get_reg(NULL, M68K_REG_A0), m68k_get_reg(NULL, M68K_REG_A1), m68k_get_reg(NULL, M68K_REG_D0), m68k_get_reg(NULL, M68K_REG_D1));
 #endif
+                                               }
                                        }
                                }
                        }
                }
-       }
 #else
-       MMUWrite16(address, value, M68K);
+               MMUWrite16(address, value, M68K);
 #endif
+       }
 }
 
 
-// 
+// Memory write location on 32 bits
 void m68k_write_memory_32(unsigned int address, unsigned int value)
 {
-#if 1
-       m68k_write_memory_check(address, "32", value);
-#else
-#ifdef ALPINE_FUNCTIONS
-       // Check if breakpoint on memory is active, and deal with it
-       if (bpmActive && address == bpmAddress1)
-       {
-               M68KDebugHalt();
-       }
-       else
-#endif
-       {
-               // Rom writing authorisation detection
-               if (!vjs.allowWritesToROM && ((address >= 0x800000) && (address < 0xe00000)))
-               {
-                       m68k_write_cartridge_alert(address, "32", value);
-               }
-       }
-#endif
-
-       // Musashi does this automagically for you, UAE core does not :-P
-       //address &= 0x00FFFFFF;
-/*if (address == 0x4E00)
-       WriteLog("M68K: Writing %02X at %08X, PC=%08X\n", value, address, m68k_get_reg(NULL, M68K_REG_PC));//*/
-//WriteLog("--> [WM32]\n");
-/*if (address == 0x0100)//64*4)
-       WriteLog("M68K: Wrote dword to VI vector value %08X...\n", value);//*/
-/*if (address >= 0xF03214 && address < 0xF0321F)
-       WriteLog("M68K: Writing DWORD (%08X) to GPU RAM (%08X)...\n", value, address);//*/
-//M68K: Writing DWORD (88E30047) to GPU RAM (00F03214)...
-/*extern bool doGPUDis;
-if (address == 0xF03214 && value == 0x88E30047)
-//     start = true;
-       doGPUDis = true;//*/
-/*     if (address == 0x51136 || address == 0xFB074)
-               WriteLog("[WM32  PC=%08X] Addr: %08X, val: %02X\n", m68k_get_reg(NULL, M68K_REG_PC), address, value);//*/
-//Testing AvP on UAE core...
-//000075A0: FFFFF80E B6320220 (BITMAP)
-/*if (address == 0x75A0 && (value & 0xFFFF0000) == 0xFFFF0000)
-{
-       printf("\nM68K: (32) Tripwire hit...\n");
-       ShowM68KContext();
-}//*/
+       // Check memory write location on 32 bits
+       if (!m68k_write_memory_check(address, "32", value))
+       {
+               // Musashi does this automagically for you, UAE core does not :-P
+               //address &= 0x00FFFFFF;
+       /*if (address == 0x4E00)
+               WriteLog("M68K: Writing %02X at %08X, PC=%08X\n", value, address, m68k_get_reg(NULL, M68K_REG_PC));//*/
+               //WriteLog("--> [WM32]\n");
+               /*if (address == 0x0100)//64*4)
+                       WriteLog("M68K: Wrote dword to VI vector value %08X...\n", value);//*/
+                       /*if (address >= 0xF03214 && address < 0xF0321F)
+                               WriteLog("M68K: Writing DWORD (%08X) to GPU RAM (%08X)...\n", value, address);//*/
+                               //M68K: Writing DWORD (88E30047) to GPU RAM (00F03214)...
+                               /*extern bool doGPUDis;
+                               if (address == 0xF03214 && value == 0x88E30047)
+                               //      start = true;
+                                       doGPUDis = true;//*/
+                                       /*      if (address == 0x51136 || address == 0xFB074)
+                                                       WriteLog("[WM32  PC=%08X] Addr: %08X, val: %02X\n", m68k_get_reg(NULL, M68K_REG_PC), address, value);//*/
+                                                       //Testing AvP on UAE core...
+                                                       //000075A0: FFFFF80E B6320220 (BITMAP)
+                                                       /*if (address == 0x75A0 && (value & 0xFFFF0000) == 0xFFFF0000)
+                                                       {
+                                                               printf("\nM68K: (32) Tripwire hit...\n");
+                                                               ShowM68KContext();
+                                                       }//*/
 
 #ifndef USE_NEW_MMU
-       m68k_write_memory_16(address, value >> 16);
-       m68k_write_memory_16(address + 2, value & 0xFFFF);
+               m68k_write_memory_16(address, value >> 16);
+               m68k_write_memory_16(address + 2, value & 0xFFFF);
 #else
-       MMUWrite32(address, value, M68K);
+               MMUWrite32(address, value, M68K);
 #endif
+       }
 }